22 сентября 2017 г.

RTSP у noname WI-FI камеры Dual-HD CAM360

Некоторое время назад "для поиграться" на просторах aliexpress была приобретена вот такая Wi-Fi камера с удалённым управлением:
Играться, сидя возле неё и тыкая в телефон пальцем было не интересно. В настройках было обнаружено, что она умеет RTSP (Real Time Streaming Protocol), но как им воспользоваться инструкция ничего не говорила, поэтому пришлось перебирать интернет по части адреса подключения. Что начало было rtsp://{address}:10544/ было известно, но что писать после порта было неясно. В итоге одно из решений помогло. Победителем стал rtsp://{address}:10544/tcp/av0_0. Именно это и надо писать в проигрывателе VNC в окне Медиа -> Открыть URL... на закладке Сеть

Также поток можно посмотреть и из браузера, перейдя по адресу http://{address}:81/videostream.cgi?user={user}&pwd={pass} (по умолчанию логин admin без пароля)
или получить скриншот
http://{address}:81/snapshot.cgi?user={user}&pwd={pass}
---
UPDATE 20170922
Прошло уже много времени с тех пор, как я решил поиграться этой камерой. Лежала она себе спокойно на полочке, пока мне вдруг не захотелось её ещё раз помучить. Оказалось почти всё, что я написал ранее не работает. Вообще не понятно с какого перепугу...
В общем, адресом подключения теперь стала строка:
http://{address}:11494/
Получение потока теперь такое:
http://{address}:11494/videostream.cgi?loginuse={user}&loginpas={pass}
А скриншот соответственно
http://{address}:11494/snapshot.cgi?user={user}&pwd={pass}

27 февраля 2017 г.

Восстановление загрузки UEFI Ubuntu

На моём рабочем ноутбуке настроена двойная загрузка - Ubuntu и Windows 10 (даже не спрашивайте ЗАЧЕМ?!). Очередное обновление последней снова снесло загрузчик GRUB2 (когда же наконец-то появится что-нибудь более нормальное *риторический вопрос*). В последний раз пытался воспользоваться утилитой efibootmgr с помощью которой успешно удалось угробить всё до конца, т.к. она успешно справлялась с удалением (а изменять она вообще не может, от слова СОВСЕМ), а вот при добавлении сыпала ошибками о невозможности что-то куда-то записать (уже не помню что и куда).

Пытался даже воспользоваться набором скриптов с GUI boot-repair и так же безрезультатно.

В этот раз я воспользовался самой простой консольной утилитой Windows под названием bcdedit.

На разделе с загрузчиками у меня расположились следующие:
/EFI/Boot/bkpbootx64.efi /EFI/Boot/bootx64.efi
/EFI/ubuntu/MokManager.efi /EFI/ubuntu/fwupx64.efi
/EFI/ubuntu/grubx64.efi /EFI/ubuntu/shimx64.efi
/EFI/Microsoft/Boot/bootmgfw.efi
/EFI/Microsoft/Boot/bootmgr.efi
/EFI/Microsoft/Boot/memtest.efi
Последние 3 вряд ли нас спасут, поэтому воспользуемся утилитой и укажем какой же загрузчик использовать.
bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi

Перезагружаемся и наслаждаемся восстановленным загрузчиком grub2, будь он не ладен. И никаких танцев с бубном =)

15 февраля 2017 г.

Прокси-сервер на Ubuntu 16.04 и Squid 3.5.12

Как ни пытался избежать этого момента, но он настал. Установленный прокси на Ubuntu 14.04 с squid 3.3.8 уже достал меня угрозами, что на мою версию перестанут(ли) выпускаться обновления и предлагает мне сделать апгрейд. Делать это на боевом сервере как-то рука не подымается, ведь так не хочется нарушать целостность всем известного органа подсознания =) Но тут подвернулся старенький сервер в виде HP Proliant DL160 G5, с которого установленная ОС вместе с приложениями были переведены в вид виртуальной машины с помощью несложных манипуляций. Его-то мы и будем превращать в новый прокси-сервер. Зачем это надо, ведь всё и так прекрасно работает? - спросите вы. Просто хотелось бы перевести на более современную платформу, прокси и всё-таки переделать ext_ldap_group на ext_kerberos_ldap_group, т.к. в случае падения одного из прописанных в конфигурации КД у пользователей перестаёт работать интернет. Возможно эта проблема связана и не с этим, поэтому за одно и проверю эту гипотезу.

На цикл постараюсь не разбивать, а уложиться в размер одной статьи. Наполнять буду постепенно по ходу установки, настройки и устранения проблем в случае их появления.

С чего начать?

Предполагается наличие загруженного установочного образа ОС Ubuntu 16.04, которая на момент написания имеет уже 2 релиз. Загрузить его можно на сайте разработчика по ссылке https://www.ubuntu.com/download/server

Исходные данные

OS: Ubuntu 16.04.2
FQDN: proxy.ad.local
NIC: 192.168.0.4 (да, прокси с одним интерфейсом, такова топология сети и требования СБ)
DC: AD.LOCAL
AD: dc1.ad.local - 192.168.0.2
AD: dc2.ad.local - 192.168.0.3
GW: 192.168.0.1

Кэширование использовать не предполагается, но это легко исправить в случае необходимости.

Установка ОС

Как ни прискорбно, но процесс установки описывать не буду. Возможно в дальнейшем я изменю своё решение, но пока это так, ведь процесс установки Ubuntu не сильно отличается от установки обычной программы (Далее - Далее - Далее - Готово). Исключение составляет лишь разметка диска, но этот процесс также индивидуален и зависит от того, что вы хотите получить в итоге.

Первая стадия

В связи с тем, что первоначальная установка происходит в серверной (ну нет у меня на нём iLO), поэтому хочется быстрее свинтить с этого шумного и холодного места. Для этого первым делом настроим интерфейс и поставим openssh-server. Так сделаем это:
sudo vi /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface

auto lo
iface lo inet loopback

# LAN network interface

auto eth0
iface eth0 inet static
    address 192.168.0.4
    netmask 255.255.255.0
    network 192.168.0.0
    broadcast 192.168.0.255
    gateway 192.168.0.1
    dns-nameservers 192.168.0.2 10.160.0.3
    dns-search ad.local
После чего перезагрузим сервер:
sudo reboot
и продолжим:
sudo apt install openssh-server
Отредактируем его конфигурационный файл:
sudo vi /etc/ssh/sshd_config
в котором раскомментируем строку и приведём её к виду:
ListenAddress 192.168.0.4
и перезапустим службу:
systemctl restart sshd.service
Теперь быстренько сбегаем из этого холодильника, пока не простыли, и садимся в своё тёплое и удобное кресло Администратора. Надеюсь кофе с плюшками запаслись? Нет? Тогда дальше ни в коем случаем не читать!!!

Вторая стадия

В тёплое место перебрались? Кофе запаслись? Тогда продолжим =)
Берём в руки консоль DNS и добавляем туда записи A и PTR согласно исходным данным, т.е. proxy.ad.local - 192.168.0.4

Теперь уже можно установить то, ради чего мы все здесь собрались, Squid'а:
sudo apt-get install squid3 ldap-utils krb5-user
Последний пакет нам пригодится, когда перейдём к настройке Kerberos.

Наш прокси-сервер мы будем использоваться в сети с Active Directory, которая очень не любит большого разброса времени. Чтобы не нарваться на неприятности, поднимем демона синхронизации:
sudo apt install ntp
и отредактируем его конфигурационный файл, закомментировав серверы времени Ubuntu и указав свои:
sudo vi /etc/ntp.conf
server dc1.ad.local
server dc2.ad.local
. . .
interface listen 192.168.0.4
По завершении перезапускаем службу и убеждаемся в работоспособности:
systemctl reload ntp.service
sudo ntpq -p

Третья стадия

20170227 Проблема с реализацией аутентификации Kerberos. Как только разберусь в причинах продолжу повествование.

... to be continued =)










15 декабря 2016 г.

Переходим с Screen Squid 1.7 на 1.10

Продолжу начатую ещё с версии 1.5 инструкцию по установке и первоначальной настройке Screen Squid. Теперь рассказ будет про 1.10. Возможно в процессе что-нибудь упущу, т.к. каждый раз инструкцию пишу по памяти, а не в процессе установки. Также, в отличие от предыдущих инструкций, упомяну здесь случай переноса некоторых данных с таблиц версии 1.7, т.к. по новой создавать алиасы, группы и их соединения вряд ли захочется.

Все дальнейшие пункты установки подразумевают, что у вас уже установлены http- и mysql-сервер, как и php с модулями mysql и iconv в случае необходимости. Замечу, что версия PHP 7 не будет работать с текущей версией Screen Squid, т.к. изменился драйвер mysql на mysqli. Возможно эту проблему можно допилить настройками, но я пока этим вопросом не заморачивался.

И так, приступим к установке 1.10.

Перед реализацией всей этой машинерии необходимо скачать ScreenSquid с сайта разработчика.
Для нормальной работы MySQL с UTF-8 была проделана небольшая настройка в файле /etc/mysql/conf.d/mysql.cnf (для версии 5.7 в Ubuntu 16.04, в других дистрибутивах это может быть /etc/my.cnf, /etc/mysql/my.cnf и т.п.):
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
Произведённые выше действия с конфигурационным файлом восстановили корректную работу с кириллическими символами. Не знаю как будет у Вас, но без этого кириллица упорно сохранялась и отображалась в win1252 (latin1).
После успешной загрузки и настройки MySQL распакуем полученный архив в директорию расположения веб-страниц:
sudo tar xzf screensquid_v1_10.tar.gz -С /var/www/
В связи с тем, что помимо анализатора логов ScreenSquid у меня там хранятся и другие страницы, переименую его:
sudo mv /var/www/html /var/www/screensquid/
Переходим к созданию базы данных, в которой будут храниться логи, и заполнению её таблицами (отношениями).
Подключимся:
mysql -u[user_name] -p[password]
Создадим новую базу данных (если ранее была установлена 1.7 название должно отличаться):
CREATE DATABASE screensquid DEFAULT CHARACTER SET=utf8;
после чего произведём её заполнение, воспользовавшись прилагаемым к ScreenSquid файлом createdb.sql:
use screensquid;
SOURCE /var/www/screensquid/createdb/createdb.sql;
Чтобы не подключаться пользователем root и не светить его права создадим нового пользователя mysql и наделим его полными правами к созданной БД. Данный пункт можно частично не выполнять, в случае ранее установленной версии 1.7, оставив лишь GRANT... с указанием новой базы:
CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON screensquid.* TO 'user_name'@'localhost'; 
С самой сложной часть сего Марлезонского балета покончено и мы плавно переходим к редактированию конфигурации ScreenSquid. Вместо user_name и password указываем те значения, которые мы ввели выше:
sudo vi /var/www/screensquid/config.php
$db = "screensquid";
$user = "user_name";
$pass ="password";
$address ="localhost";
$cfgsquidhost[0]="localhost";
$cfgsquidport[0] = 3128;
$cfgcachemgr_passwd[0]="{пароль из директивы cachemgr_passwd squid.conf}";
и в скрипте заполнения таблиц БД:
sudo vi /var/www/screensquid/fetch.pl
my $user = "user_name";
my $pass = "password";
my $db = "screensquid";
В последнем файле, который выполняет роль парсера файла лога, были внесены очень необходимые изменения, а это:
  1. Можно указывать короткий или полный путь к файлу лога SQUID
  2. Появился лог результатов выполнения скрипта, путь к которому также можно указать в коротком или полном формате.
  3. Добавилось логирование в БД о процессе работы парсера.
Поэтому не побрезгуем и воспользуемся этими возможностями, отредактировав соответствующие переменные:
my $filetoparse="/var/log/squid3/access.log.1";
my $filetolog="/var/www/screensquid/ssquid.log";
Конечно же можно было оставить эти значения по умолчанию, разместив сам скрипт в папке с логами, но этот метод меня не устроил. Также заметьте, что парсер будет работать с файлом .1, который появляется после работы программы logrotate, таким образом получая в базе данные за предыдущий день. Никто не заставляет поступать аналогичным образом, всё в Ваших руках.

По завершении конфигурирования парсера сделаем его исполняемым, воспользовавшись командой:
sudo chmod u+x fetch.pl
После чего настроим cron для запуска этого скрипта:
sudo crontab -e
куда добавим следующую запись:
# запуск каждый день в 23 часа 
00 23 * * * /var/www/screensquid/fetch.pl
С конфигурированиями закончили, поэтому можно немного расслабиться и поиграться другими очень интересными и нужными командами.

В предыдущих версиях были добавлены графики и диаграммы в Dashboard и отчёте "По времени суток". Так как архив с анализатором мы распаковывали с правами root, именно он и стал владельцем всех каталогов и файлов. Менять владельца на всё не буду, поэтому ограничусь лишь каталогом, где создаются эти самые картинки:
sudo chown -R www-data:www-data /var/www/screensquid/lib/pChart/pictures/

Также в 1.10 появился экспорт некоторых отчётов в PDF, которые создаются в каталоге output. Ему также необходимо изменить владельца, как и пунктом выше.

Кто решится перейти с 1.7 на 1.10 и перенести алиасы, группы и другую информацию, можете выполнить указанные ниже команды после входа в консоль mysql  с помощью :
mysql -u[user_name] -p[password]
INSERT INTO screensquid.scsq_alias SELECT * FROM {db1.7}.scsq_alias;
INSERT INTO screensquid.scsq_aliasingroups SELECT * FROM {db1.7}.scsq_aliasingroups;
INSERT INTO screensquid.scsq_groups SELECT * FROM {db1.7}.scsq_groups;
INSERT INTO screensquid.scsq_logins SELECT * FROM {db1.7}.scsq_logins;
INSERT INTO screensquid.scsq_ipaddress SELECT * FROM {db1.7}.scsq_ipaddress;
INSERT INTO screensquid.scsq_httpstatus SELECT * FROM {db1.7}.scsq_httpstatus; // можно не переносить

Не забудьте заменить текст в фигурных скобках на название своей базы данных версии 1.7.

Да, чуть на забыл, что появилась разбивка сайтов по группам. Работает пока не очень, но не могу не отметить процесс заполнения таблиц. Качаем вот это: http://www.shallalist.de/Downloads/shallalist.tar.gz и распаковываем в любую директорию. Далее качаем парсер с форума break-people.ru и кладём в тот же каталог. Вносим в него изменения в соответствии с потребностями:
my $host = "localhost"; # host s DB
my $port = "3306"; # port DB
my $user = "user_name"; # username k DB
my $pass = "password"; # pasword k DB
my $db = "screensquid"; # name DB
И запускам на выполнение: perl ./getcat.pl

Через несколько чашек кофе и/или сигарет скрипт закончит свою работу и заполнит необходимые таблицы в Screen Squid.

ВОЗМОЖНЫЕ ОШИБКИ

Если в процессе выполнения скрипта парсера появляются ошибка вида:
DBD::mysql::st execute failed: MySQL server has gone away at fetch.pl line XXX, <IN> line YYY.
попробуйте в fetch.pl уменьшить значение в строке:
$count_lines_for_one_insert=10000;

На сих откланиваюсь. Спасибо за внимание =) Успехов!

3 августа 2016 г.

Ошибка монтирования раздела NTFS в Ubuntu

Одно из самых коротких сообщений в блоге, т.к. не планирую часто использовать то, что здесь написано. В одной из предыдущих записей я писал, что была установлена Windows 10, которая используется лишь для работы с Visual Studio 2015. Остальное же время провожу в уже практически родной, но такой неизвестной Ubuntu. Но на днях столкнулся с такой проблемой - после корректного завершения работы Windows не смог примонтировать раздел диска в Linux'е. Встроенная в Windows программа проверки дисков что-то нашла и устранила, но примонтировать раздел так и не удалось, не смотря на то, что раздел не является системным и используется лишь для хранения данных.

Ошибка, которую я получал при попытке монтирования раздела звучала приблизительно так:
Error mounting /dev/sda4 at /media/AAA/SYS: Command-line `mount -t "ntfs" -o "uhelper=udisks2,nodev,nosuid,uid=1000,gid=1000" "/dev/sda4" "/media/AAA/SYS"' exited with non-zero exit status 14: Windows is hibernated, refused to mount.
Failed to mount '/dev/sda4': Операция не позволена
The NTFS partition is in an unsafe state. Please resume and shutdown
Windows fully (no hibernation or fast restarting), or mount the volume
read-only with the 'ro' mount option.
Устраняется данная проблема простым движением в несколько нажатий на клавиатуре:
sudo ntfsfix /dev/sdXY
, где X - диск, а Y - номер его раздела.

Также ещё были выполнены настройки в управлении электропитанием в самой Windows - в настройке "Действия при нажатии кнопки выключения" в настройках выключения снял индикатор "Быстрая загрузка при включении". (сейчас пишу из Ubuntu, поэтому в названиях элементов управления могу ошибаться).

20 мая 2016 г.

Процесс appstreamcli грузит 100% CPU в UBUNTU

Может кому ещё пригодится, но запись скорее для себя.
На дня обнаружил, что в последнее время ноутбук как-то медленно стал работать. В выводе top увидел процесс, который чем-то занял ядро процессора.
На launchpad нашёл этот пакет, в котором был зарегистрирован тикет, уже решённые к текущей дате. Для устранения проблемы предлагается следующее:
cd /tmp && mkdir asfix
cd asfix
wget https://launchpad.net/ubuntu/+archive/primary/+files/appstream_0.9.4-1ubuntu1_amd64.deb
wget https://launchpad.net/ubuntu/+archive/primary/+files/libappstream3_0.9.4-1ubuntu1_amd64.deb
sudo dpkg -i libappstream3*.deb
sudo dpkg -i appstream*.deb

3 декабря 2015 г.

Встречаем новый ScreenSquid 1.7 - анализатор логов SQUID

Дабы не ссылаться на ранее написанную статью по установке версии 1.5, полностью её сюда скопирую, отредактировав под 1.7.

Перед реализацией всей этой машинерии необходимо скачать ScreenSquid с сайта разработчика.
Для нормальной работы MySQL с UTF-8 была проделана небольшая настройка в файле /etc/mysql/conf.d/mysql.cnf (для версии 5.7 в Ubuntu 16.04, в других дистрибутивах это может быть /etc/my.cnf, /etc/mysql/my.cnf и т.п.):
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
Произведённые выше действия с конфигурационным файлов привели к корректной работе с кириллическими символами. Не знаю как будет у Вас, но у меня кириллица упорно сохранялась и отображалась в win1252 (latin1).
После успешной загрузки и настройки MySQL распакуем полученный архив в директорию расположения веб-страниц:
sudo tar xzf screensquid_v1_7.tar.gz -С /var/www/
В связи с тем, что помимо анализатора логов ScreenSquid у меня там хранятся и другие страницы, переименую его:
sudo mv /var/www/html /var/www/screensquid/
Переходим к созданию базы данных, в которой будут храниться логи, и заполнению её таблицами (отношениями).
Подключимся:
mysql -u[user_name] -p[password]
Создадим новую базу данных:
CREATE DATABASE squidreport DEFAULT CHARACTER SET=utf8;
после чего произведём её заполнение, воспользовавшись прилагаемым к ScreenSquid файлом createdb.sql:
SOURCE /var/www/squidreport/createdb/createdb.sql
и обновим её же до последней версии:
SOURCE /var/www/squidreport/createdb/upgrade.sql
Чтобы не подключаться пользователем root и не светить его права создадим нового пользователя mysql и наделим его полными правами к созданной БД:
CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON squidreport.* TO 'user_name'@'localhost'; 
С самой сложной часть сего Марлезонского балета покончено и мы плавно переходим к редактированию конфигурации ScreenSquid. Вместо user_name и password указываем те значения, которые мы ввели выше:
sudo vi /var/www/squidreport/config.php
$db = "squidreport";
$user = "user_name";
$pass ="password";
$address ="localhost";
и в скрипте заполнения таблиц БД:
sudo vi /var/www/squidreport/fetch.pl
my $user = "user_name";
my $pass = "password";
my $db = "squidreport";
В последнем файле, который выполняет роль парсера файла лога, были внесены очень необходимые изменения, а это:
  1. Можно указывать короткий или полный путь к файлу лога SQUID
  2. Появился лог результатов выполнения скрипта, путь к которому также можно указать в коротком или полном формате.
Поэтому не побрезгуем и воспользуемся этими возможностями, отредактировав соответствующие переменные:
my $filetoparse="/var/log/squid3/access.log.1";
my $filetolog="/var/www/screensquid/ssquid.log";
Конечно же можно было оставить эти значения по умолчанию, разместив сам скрипт в папке с логами, но этот метод меня не устроил. Также заметьте, что парсер будет работать с файлом .1, который появляется после работы программы logrotate, таким образом получая в базе данные за предыдущий день. Никто не заставляет поступать аналогичным образом, всё в Ваших руках.

По завершении конфигурирования парсера сделаем его исполняемым, воспользовавшись командой:
sudo chmod u+x fetch.pl
После чего настроим cron для запуска этого скрипта:
sudo crontab -e
куда добавим следующую запись:
# запуск каждый день в 23 часа 
00 23 * * * /var/www/squidreport/fetch.pl
С конфигурированиями закончили, поэтому можно немного расслабиться и поиграться другими очень интересными и нужными командами.

В общем отчёте "По времени суток" был добавлен график. Пока это так, игрушка можно сказать, но надеюсь получит своё развитие в других отчётах. Но игрушка представляет собой файл изображения, который автоматически создаётся каждый раз при формировании отчёта. Так как архив с анализатором мы распаковывали с правами root, именно он и стал владельцем всех каталогов и файлов. Менять владельца на всё не буду, поэтому ограничусь лишь каталогом, где создаются эти самые картинки:
sudo chown -R www-data:www-data /var/www/screensquid/lib/pChart/pictures/
А теперь можем откинуться на спинку кресла и наслаждаться своей работой.

При обновлении с 1.5 на 1.7, необходимо воспользоваться сценарием обновления таблиц базы данных, применив команду:
mysql [database_name] < /var/www/squidreport/createdb/upgrade.sql 

В остальном обновление 1.5 до 1.7 не отличается от полной установки за исключением отсутствия необходимости создания новой БД, пользователя и настройки cron, если, конечно же, не вздумаете сменить расположение скрипта парсера.

На сих откланиваюсь. Спасибо за внимание =) Успехов!