«Деньги, карты, два ствола» (linux, kodi, tv-box)

— Мамо! Купіть мені плєєр!
— Який тобі плєєр, доцю? Ти ще коньків не сточила!..

Прогресс шёл себе, шёл, и дошёл до того, что наиболее универсальный плейер нынче представляет собой … компьютер в том или ином его обличии. А современный медийный контент — это различные файлы (видео/аудио/изображение/прочие), хранящиеся либо на каких-нибудь носителях, либо на серверах, как локальных, так и размещенных где-то в интернете. Миру явили даже такой симбиоз, как Smart-TV — (фактически, обычный) компьютер, который запхнули внутрь телика. Он тебе и в интернет сходит, и музычку проиграет, и киношку покажет, и еще целую кучу других разных дел сделает!

Но так уж вышло, что телик я себе купил … обычный (хорошо, хоть с HDMI-входами!). И это — лишь одна из причин всего того «перфоманса», который описан в этой заметке. Телевизор мой стоит себе на стенке в зале. Рядом разместился AV-ресивер (музыку тоже люблю послушать иногда), колонки, саб, одним словом — «всё пучком». И лишь компьютера там нет! Ну и последний «гвоздь в крышку» — моя домашняя «файлопомойка» (сервер, на котором хранятся все те самые файлы медиа-контента) живет на антресоли, образно говоря, «на другом краю мира» (квартиры). И никаких кабелей между этими локациями не было проложено по определению (ну кто мог себе такое даже представить в конце прошлого века, когда делался ремонт квартиры?!). Ну и последнее — музыку  я люблю «пускать» на ресивер «по цифре», но при этом, из цифровых входов у моего «старичка» имеются лишь S/PDIF и его оптическая разновидность — TOSLINK. А фильмы жена любит смотреть со звуком из телевизора («А чего оно так громко гупает с твоих колонок?»). Ну вот вроде как и закончили с «вводными»…

Итак, первый плейер, на который были возложены обязанности развлекать нас, представлял собой мини-ПК Raspberry-PI, с установленной на нем дополнительной платой PiFi-Digi (цифровые выходы звука S/PDIF и TOSLINK). Вот такая себе «сладкая парочка»:

Ах да, кроме «вышеперечисленных товарищей» в процессе также участвовали:

  • USB-адаптер беспроводной сети Tp-Link TL-WN725N (надо ж было как-то к «файлопомойке» подключаться)
  • Беспроводная «аэро-мышь» i7 Rii mini (в качестве пульта ДУ)

Установленное на «малину» ПО представляло собой (в разное время) различные дистрибутивы Linux, с установленной на них программой медиа-плейера Kodi («в девичестве» называвшейся XBMC, и к которой я за эти годы, можно сказать, «прикипел душой»). И все было бы хорошо, если бы не те самые «НО», которые по определению есть всегда и везде:

  • Компьютер сей особой производительностью не блистал. Это была модель из «более ранних» версий (model B): одно ядро частотой 700 МГц, памяти 512 Мб. Возможно, текущие версии «малины» (например, Raspberry-PI model 3B+) работали бы пошустрей, но тратить деньги на «эксперименты по проверке теорий» абсолютно не хотелось. Кроме того, и плату S/PDIF тоже пришлось бы покупать новую…
  • Дизайн изделия (именно такой, как и показан на фото выше, без корпуса) тоже особо глаз не радовал (не столько мой глаз, сколько жены).
  • Были еще какие-то мелочи, но, видимо, настолько незначительные, что уже и из памяти выветрились.

Железо

Вдруг как-то неожиданно освободился мини-пк, работавший моей домашней «файлопомойкой» (мини-сервером, выполнявшим разные задачи, в том числе и хранения медиа-контента). Вот такой, как показан на картинках ниже (разве что, wi-fi адаптера в моем не было, и как следствие, антенки — тоже):

А главный «сюрприз» ждал меня внутри этого компьютера — при тщательном осмотре его материнской платы на ней было обнаружено место для установки передатчика TOSLINK (оптического варианта S/PDIF). Использованный в компьютере чип аудио-кодека ALC662 от ф. Realtek имеет соответсвующий выход. Последующая проверка цепей показала, что все необходимые подключения и элементы на плате присутствовали, и не хватало лишь самого передатчика! На следующей картинке место для установки TOSLINK видно (в левом нижнем углу платы, пониже светло-зеленого гнезда аналогового аудио-выхода):

Отлично! Передатчик TOTX179 был куплен и распаян на плате, в корпусе мини-пк было «прогрызено» отверстие под него, и новый медиа-плейер был практически готов! Оставалось лишь поставить на него ОС и программу-проигрыватель.

«Муки выбора» (софт)

Глобально «что устанавливать» — вопрос не стоял абсолютно! Все тот же Kodi поверх все того же Linux-а. Ответ на вопрос о том, «какой Linux устанавливать», мне тоже известен уже давно — тот, который знаешь, иначе «танцы с бубном» затянутся надолго! А «знакомы» мне два дистрибутива — Ubuntu и Debian. Вопрос был лишь в том, «что где доступно и почем?». Речь о том, что версии плейера Kodi, включенные в различные дистрибутивы их авторами, во первых, отличаются, а во вторых, не дают «гибкости выбора» (как вы можете увидеть в приведенной ниже таблице, в официальных репозиториях присутствует лишь по одной версии Kodi для каждого из релизов). Но тут мною для Ubuntu были найдены так называемые PPA на сервере launchpad.net, «и всё сразу-же стало на свои места»! 🙂

Ниже приведена таблица, в которой указано, какие версии Kodi доступны в разных версиях Linux-ов (для Ubuntu рассматривались только LTS-релизы). На всякий случай уточню — приведенная в таблице информация была актуальна на момент написания данной заметки.

Дистрибутив Релиз Доступность Kodi в репозиториях
Официальный PPA
Ubuntu 16.04 LTS (Xenial) 15.2 16.1 (kodi-old)
17.6 (stable)
18.0 (unstable)
Ubuntu 18.04 LTS (Bionic) 17.6 17.6 (stable)
18.0 (unstable)
Debian 8 (jessie) 16.1 (backports)
Debian 9 (stretch) 17.1

По итогам «исследований» мною был выбран дистрибутив Ubuntu, и вот почему: использование PPA предоставляло возможность установить 2 или 3 разных версии проигрывателя Kodi, не меняя при этом саму ОС. Причем, в плане самого проигрывателя Kodi мои личные предпочтения склонялись к версиям 16 и 18. Поводом для такого моего выбора послужила опция в настройках звука, которая в 16-й версии Kodi присутствовала, в 17-й версии её убрали, а в 18-й — снова вернули! Речь идет о возможности «задрать» уровень громкости центрального канала, когда плейер выполняет т.н. downmix из многоканального (5.1) звука в двухканальное стерео. Эта штука очень сильно помогает при просмотре на телевизоре (имеющем лишь стерео-динамики) фильмов с такими «качественными» переводами, при которых голоса актеров «озвучки» выведены лишь в центральный канал да еще и со слабым уровнем, в результате чего их очень плохо слышно на фоне «громогласных» звуковых эффектов. А с учетом того, что иногда «задирать центр» приходится аж до уровня в +10…+16 дБ, то лично для себя эту опцию я считаю весьма и весьма полезной! Настройка параметра в 16-й версии Kodi показана на скриншоте:

Релиз Ubuntu мною был выбран такой: 16.04 LTS, и вот почему. Во первых, в нём возможно установить любую из ТРЁХ различных версий проигрывателя Kodi (естественно, речь про установку именно с помощью PPA). А во вторых — настройка сетевых адаптеров в нём осуществляется ещё «по-старому». Не скажу, что я не нашел для 18.04 LTS информацию о том, как в ней вернуться к «старому» ifupdown вместо «нового» netplan, или не нашел, что и как нужно прописать в настройках netplan для запуска моего адаптера TL-WN725N. НО, под управлением netplan он все равно стартовать не захотел, а менять в «новом» дистрибутиве «новый» netplan на «старый» ifupdown я посчитал просто «не красивым». Кстати, в случае использования Network Manager-а всё настраивалось, подключалось и работало на ура, но в том-то и дело, что в мои планы его использование не входило, о причинах чего будет сказано в следующем абзаце…

Дело в том, что для работы Kodi не нужны никакие «графические рабочие столы» (такие как Gnome, KDE, и т.п.). У него есть возможность работать в т.н. «standalone» режиме, для которого — да, нужен X-сервер, но вот desktop-ы всякие там — совсем не обязательны! А за то время, что пользуюсь линуксами разными, я уже успел убедиться, что «графический десктоп» — это самая «прожорливая» часть ПО в данных системах! Поэтому, ставить на свой плейер я режил серверную версию Ubuntu — ту самую, которая совсем без графики! Расчитывая при этом впоследствии «досыпать» поверх «голой консоли» лишь самый необходимый минимум. И вот именно по причине отсутсвия графического десктопа никакой Network Manager моему плейеру просто «не светил»!

Установка ОС

Установка ОС Ubuntu в интернете описана столько раз, что останавливаться на этом не вижу смысла. Пошли на сайт, скачали образ диска (iso-файл), записали его на «болванку» или флешку, загрузились с нее и установили. Единственное, на всякий случай повторюсь — лично себе я устанавливал 64-битную версию server-а Ubuntu 16.04.5 LTS. И еще одна настоятельная рекомендация — устанавливая ОС, не используйте слово «kodi» в качестве логина (юзер с таким именем будет создан позже, при установке программы Kodi).

Настройка беспроводной сети

Считаю нужным уточнить — всю установку и настройку плейера я проводил, подключив его к сети (роутеру) ETHERNET-КАБЕЛЕМ. Связано это с тем, что так БАНАЛЬНО ПРОЩЕ! Не могу сказать, что современные версии Ubuntu «проблемны» в плане поддержки большинства популярных (наиболее массово производимых) Wi-Fi-адаптеров, но сам я никогда не возился с их настройкой именно во время установки ОС. Проще всё проделать, подключившись кабелем. И лишь потом настраивать Wi-Fi (естественно, продолжая «висеть на кабеле», чтоб не отвечать на вопросы типа «А как я могу скачать пакеты, если к интернету не подключен?» 🙂 )…

Должен сделать еще одно краткое отступление. Естественно, описываемые в этой заметке действия проделывались не раз, не два, и не двадцать два. И лишь по итогам всех этих (за)нудных «экспериментов» была написана статья, которая теперь выглядит как «просто раз, два, три…». В ходе этих «экспериментов» действия предпринимались самые разные, и далеко не всегда действительно необходимые. А главное, потом было сложно понять, лучше стало после них, или хуже. Потому что «всё продолжало работать также, как и до того как…».

И вот сейчас речь пойдет именно о таком «сомнительной необходимости» действии — установке «из исходников» драйвера для моего Wi-Fi-адаптера. На всякий случай напомню, мною использовался USB адаптер Tp-Link TL-WN725N с чипом RTL8188EUS от Realtek внутри. Должен сразу же добавить — Ubuntu сама распознает указанный адаптер и сама устанавливает драйвер для него. Но я в эти «дебри» с установкой драйвера «из исходников» полез на том этапе, когда у меня в Ubuntu 18.04 LTS никак не получалось настроить подключение к беспроводной сети в программе netplan (подумал, «А вдруг поможет?»). По факту — не помогло, но инфа осталась, вот и выкладываю ее тут. Итак, чтобы установить драйвер на RTL8188EUS выполните следующее (приведены команды, которые необходимо выполнить в консоли):

  1. Установите необходимые дополнительные пакеты:
sudo apt-get update
sudo apt-get install -y linux-headers-$(uname -r) build-essential git
  1. Скопируйте исходники драйвера:
git clone https://github.com/lwfinger/rtl8188eu
  1. Перейдите в папку с исходниками:
cd rtl8188eu
  1. Выполните сборку и установку драйверов:
make all
sudo make install
  1. Включите использование системой модуля установленного вами драйвера:
sudo insmod 8188eu.ko

После перезагрузки ОС должна начать использовать установленный вами драйвер вместо встроенного. Но повторюсь, разницы в работе Wi-Fi после смены драйвера лично я не заметил, поэтому считаю установку драйвера не обязательной.

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

  1. Для этого в консоли введите команды:
sudo apt-get update
sudo apt-get install -y wireless-tools wpasupplicant
  1. Настройте параметры подключения к беспроводной сети (предполагается, что ваша сеть использует WPA-PSK или WPA-PSK2 шифрование). Для этого запустите редактор, указав для редактирования соответсвующий файл настроек:
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
  1. Редактор должен сообщить вам, что он открыл [Новый файл]. В файл впишите такие строки:
country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
   ssid="тут_впишите_SSID_вашей_сети"
   psk="тут_впишите_ключ_шифрования_вашей_сети"
}

Естественно, что SSID и пароль (выделенные выше красным цветом) вы должны указать СВОИ собственные! Двухбуквенный код страны, при желании, также можете указать свой (список кодов можно тут просмотреть в таблице). Правда, я не заметил особой разницы от его смены. Выполнив это, сохраните файл (нажмите F3 и затем подтвердите имя файла для сохранения, нажав Enter) и выйдите из редактора (нажав F2).

  1. И завершающий шаг — настройка сетевых параметров адаптера в файле /etc/network/interfaces. Правда, перед этим вам нужно уточнить какое «имя» система присвоила вашему беспроводному адаптеру. Это можно сделать следующей командой:
iwconfig

В ответ вы должны получить список всех сетевых адаптеров, которые ОС обнаружила в вашем компьютере. Напротив тех  из них, которые не являются беспроводными, будет указано «no wireless extensions». По поводу же того адаптера, который программа опознает как беспроводной, будет указано нечто наподобие такого:

wlx30b5c216a241  unassociated  ESSID:""  Nickname:"<WIFI@REALTEK>"
          Mode:Auto  Frequency=2.412 GHz  Access Point: Not-Associated   
          Sensitivity:0/0  
          Retry:off   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

В показанном примере видно, что имя беспроводного сетевого адаптера — wlx30b5c216a241 (выделено мной). Вот именно для него и нужно прописать настройки в файл /etc/network/interfaces. Откройте данный файл в редакторе:

sudo nano /etc/network/interfaces

Впишите в конце файла (не удаляя и не меняя остальные, уже имеющиеся там строки) следующее:

allow-hotplug wlx30b5c216a241
auto wlx30b5c216a241
iface wlx30b5c216a241 inet dhcp
#wireless-power off
	wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Естетсвенно, редактируя файл, «имя» адаптера указывайте то, которое будет использовано в вашей системе.

Вписанные вами в файл команды означают следующее: адаптер допускает «горячее подключение» (1-я строка), должен запускаться «автоматом» при старте системы (2-я строка), получать все настройки (IP-адрес, шлюз, DNS) автоматически, по DHCP-протоколу (3-я строка) и для подключения к беспроводной сети использовать настройки из соответсвующего файла (5-я строка). 4-я строка запрещает управление питанием для данного адаптера (в том смысле, что драйверу адаптера запрещено снижать мощность передатчика Wi-Fi-радиомодуля с целью экономии энергии), но чтобы данная директива начала работать, ее нужно «раскомментировать» (удалить «#» в начале строки).

  1. Сохраните изменения и выйдите из редактора.

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

Установка Kodi

Для установки Kodi на Ubuntu-server нужно выполнить несколько действий, а именно:

  • Добавить PPA репозитория Kodi на сервере launchpad.net;
  • Установить X-server;
  • Установить Kodi;
  • Создать новый Unit для Sysytemd, который будет запускать Kodi как standalone-демон при запуске ОС;
  • Создать новое правило для polkit, которое позволяет неавторизованному пользователю управлять перезагрузкой/выключением системы (это добавит соответсвующие кнопки в меню Kodi);

Мною была найдена страница на GitHub, автор которой написал и выложил скрипт, выполняющий все вышеописанное, избавляя от необходимости делать это пошагово вручную.

Чтобы воспользоваться данным скриптом и установить Kodi с его помощью, выполните следующее:

  1. Установите необходимый пакет:
sudo apt-get update
sudo apt install git -y
  1. Клонируйте скрипт автора с сайта GitHub на свой компьютер:
git clone https://github.com/abacao/Boot2Kodi.git
  1. Перейдите в папку со скриптом:
cd Boot2Kodi
  1. ВНИМАНИЕ — ЭТО НЕ ОБЯЗАТЕЛЬНЫЙ ШАГ! Так как по умолчанию этот скрипт подключает т.н. «stable»-ветку репозитория Kodi, то в результате его выполнения на компьютер будет установлена текущая «стабильная» версия программы, а именно — 17.6 (учтите, что данная информация была актуальна на момент написания заметки, при выходе новых версий проигрывателя наверняка всё изменится, поэтому, уточните свежую раскладку по версиям на странице проекта на сервере launchpad.net или тут). Если вы хотите установить именно текущую стабильную версию программы Kodi (17-ю), просто пропустите этот шаг и сразу переходите к 5-му пункту! Если же вы хотите установить Kodi версий 16.х (предыдущую) или 18.х («нестабильный» релиз-кандидат), то тогда вам нужно будет выполнить следующее:

Откройте файл скрипта в редакторе:

nano install.sh

Найдите в нем такую строку (где-то в начале файла):

add-apt-repository ppa:team-xbmc/ppa -y

И отредактируйте её. Если вы хотите установить Kodi версии 16.х, измените ее так, чтобы строка стала выглядеть следующим образом:

add-apt-repository ppa:team-xbmc/kodi-old -y

Если же вы хотите установить Kodi версии 18.х, то строку нужно привести к такому виду:

add-apt-repository ppa:team-xbmc/unstable -y

Сохраните изменения и выйдите из редактора.

  1. Запустите скрипт на выполнение:
sudo sh ./install.sh

По окончании работы скрипта программа Kodi будет установлена и запущена.

Звук — донастройка и метод переключения

Как уже было сказано в начале заметки, в моем случае звук проигрывателя должен был выводиться «наружу» двумя различными способами. При просмотре фильмов — по HDMI на телевизор. А при прослушивании музыки — по S/PDIF (TOSLINK) на AV-ресивер. Но тут меня поджидала «засада» — Kodi видела только лишь два выхода (а главное — ни одного из тех, что были нужны мне!):

Причина «фокуса» крылась в программе pulseaudio — это она предоставляла проигрывателю информацию о всего двух возможных способах вывода звука. В случае, если бы на компьютере был установлен какой-нибудь «графический десктоп», в нем присутствовали бы средства для настройки предпочтений из числа ВСЕХ имеющихся в компьютере аудио-устройств. Но увы, в моём распоряжении были сервер и «голая консоль» на нём! Решением оказалось «грохнуть» pulseaudio (и в таком случае Kodi использзовал бы сведения, предоставляемые другой программой аудио — alsa). И как показала дальнейшая проверка — в таком случае список для выбора оказывается гораздо шире:

Естественно, этот вариант устраивал меня намного лучше — в нем были доступны к  выбору нужные мне и HDMI, и S/PDIF!

Интернет предлагал мне вообще полностью удалить программу pulseaudio с компьютера. Но я воспользовался другими найдным советом — просто запретить pulseaudio сканирование аудио-устройств. И этого оказалось достаточно! Чтобы настроить систему таким образом, нужно выполнить следующее:

  1. Откройте в редакторе файл настроек программы pulseaudio:
sudo nano /etc/pulse/client.conf
  1. Найдите в файле такую строку:
; autospawn = yes
  1. Отредактируйте ее так, чтобы она стала выглядеть следующим образом:
 autospawn = no
  1. Сохраните изменения и выйдите из редактора.
  2. Перезагрузите компьютер.

Всё! После перезагрузки в настройках Kodi вы увидите максимально полный перечень устройств для вывода звука, имеющихся в вашем компьютере!

Для переключения вывода звука с одного интерфейса (в моем случае, с HDMI) на другой (S/PDIF) интернет настойчиво предлагал мне установить в программу Kodi дополнительный плагин. И я даже установил его! И даже выполнил весь тот «кордебалет», который нужен был для его настройки! Но скажу честно — это была не совсем тривиальная задача! Нужно было найти специальный xml-файл с настройками интерфейса, найти в нем конкретную запись, отредактировать её, дополнительно добавить туда еще какой-то код, скопировать файлы иконок, и т.д. и т.п… Короче говоря — не понравилось мне все это! И поэтому я свою задачу решил совсем иначе — просто создал в программе Kodi еще один (новый) профиль (пользователя)! В каждом из профилей я настроил свой собственный способ вывода звука (а также, и дополнительные параметры): в одном используется HDMI, в другом — S/PDIF! И теперь в случае необходимости я просто переключаюсь из одного профиля в другой (штатными средствами программы Kodi)! В итоге — никакой мороки с правкой xml-файлов…

Кеширование

100500 раз в интернете читал высказывания о том, что «мультимедиа по Wi-Fi — это плохое решение!». Но кабеля у меня как не было (между «файлопомойкой» и плейером), так и нет по сей день! А «киношку» посмотреть какую-никакую охота все-равно.

Еще во времена, когда плейером трудился старенький Raspberry, я нашел описание и настроил по нему кеширование в программе Kodi. И считаю эту возможность большим плюсом — благодаря ей Kodi старается скачать себе в буфер какой-то объем данных наперед. И благодаря буферизации вопроизведение намного меньше подвержено влиянию качества канала передачи данных, чем в случае, когда кеширование не используется. Например, «среднестатистическую» песню Kodi за пару-тройку секунд скачивает в свой буфер целиком и потом воспроизводит её непосредственно из памяти. Есть ли ему при этом какое-либо дело до нестабильности Wi-Fi, думаю, вы догадаетесь сами…

Чтобы настроить кеширование в программе Kodi нужно создать специальный файл настроек и вписать в него ряд параметров. Учтите, что названия параметров в файле для версии 16.х отличаются от таковых для версий 17.х и 18.х! Поэтому, будьте внимательны, выполняя приведенные ниже инструкции.

Чтобы настроить кеширование, выполните следующее:

  1. Запустите редактор, указав для редактирования соответсвующий файл настроек:
sudo nano /home/kodi/.kodi/userdata/advancedsettings.xml
  1. Редактор должен сообщить вам, что он открыл [Новый файл]. В файл нужно вписать настройки, которые будут определять параметры кеширования. Как уже было сказано выше, для разных версий программы Kodi эти строки должны отличаться:

ЕСЛИ ВЫ НАСТРАИВАЕТЕ ПРОГРАММУ KODI ВЕРСИИ 16.Х, то впишите в файл такие строки:

<advancedsettings>
    <network>
	<cachemembuffersize>268435456</cachemembuffersize>
	<buffermode>1</buffermode>
	<readbufferfactor>6</readbufferfactor>
    </network>
</advancedsettings>

ЕСЛИ ЖЕ ВЫ НАСТРАИВАЕТЕ ПРОГРАММУ KODI ВЕРСИЙ 17.Х или 18.Х, то строки должны быть такие:

<advancedsettings>
    <cache>
	<memorysize>268435456</memorysize>
	<buffermode>1</buffermode>
	<readfactor>6</readfactor>
    </cache>
</advancedsettings>
  1. Сохраните файл и выйдите из редактора.

Изменения вступят в силу после перезапуска Kodi (думаю, проще будет перезагрузить сам компьютер).

Параметров три (их значения выделены красным цветом), и не смотря на отличие имен параметров, определяют они одно и то же: первый указывает размер буфера в байтах (в моём мини-пк установлен модуль памяти объемом 2Гб, так что размер буфера я указал равным 256 Мб, но можно было указать и побольше), второй — опредеяет в каких случаях используется кеширование (вариант 1 означает — для любых протоколов и сетей, как локальных, так и «глобальных»), и третий параметр указывает, во сколько раз быстрее программа должна пытаться считывать данные из источника по сравнению с битрейтом самого медиа-файла. Подробнее прочесть о том, что и как можно настраивать в файле advancedsettings.xml, вы можете в Wiki на сайте Kodi.

И вот теперь действительно ВСЁ!…

Ах да,

…вишенка на торте

Чтобы сделать скриншот, можно обратиться к программе Kodi из браузера с «соседнего» в сети компьютера. Для этого вы дожны выполнить запрос на адрес:

http://адрес_компьютера_с_kodi:8080/jsonrpc?request={"jsonrpc":"2.0","id":1,"method":"Input.ExecuteAction","params":{"action":"screenshot"}}

Пару важных замечаний. Во первых, для того, чтобы это работало, в настройках Kodi нужно «Разрешить удаленное управление по HTTP». Во вторых, при выполнении самого первого скриншота программа попросит вас указать папку, в которую их сохранять. И третье — самое грустное: это работает лишь в версиях 16.х и 17.х…

«Типа UPS» для маршрутизатора

«Пообещала» страна периодически устраивать веерные отключения электроэнергии. Ноутбуки, смартфоны, планшеты  — вся эта домашняя «утварь» итак «на батарейках», а вот роутеры работают от сети 220V. И с этим надо было что-то делать! А то ведь обидно получается — когда свет выключают, ноуты и пр. работают и дальше, а интернет отваливается…

Первым делом почитал, что написано на сетевых адаптерах моих роутеров (их два: Dlink DSL-2500, получающий интернет по ADSL и включенный «бриджем», плюс Tplink TL-WR1043, управляющий всем «интернет-хозяйством»). Согласно этикеткам, блоки питания у моих роутеров были такие:

  • Адаптер от Dlink DSL-2500 — выходное напряжение 5 Вольт, ток до 1,5 Ампера;
  • Адаптер от Tplink TL-WR1043 — выходное напряжение 12 Вольт, ток до 1,5 Ампера;

Вот под эти исходные данные (параметры) и начал я городить свой «UPS».

Собственно, понадобилось мне приобрести всего три вещи.

Первая — блок питания PS1203B с функцией резервного питания от аккумулятора и монтажной коробкой:

box_and_power_suply

Подробные характеристики блока питания вы можете прочесть на сайте изготовителя. Если же вкратце, то примерно так:

  • Блок питания выдает 12 Вольт при токе до 3 Ампер;
  • Устройство имеет клемы для подключения резервного аккумулятора 12 V;
  • При пропадании сети 220V переключает нагрузку на аккумулятор;
  • Заряжает разрядившийся аккумулятор после восстановления питающей сети.

Вторым был куплен собственно резервный аккумулятор:

battery

Ту вообще все просто — напряжение 12 Вольт, емкость — 5 Ампер-часов. Кому нужны дополнительные подробности — добро пожаловать на сайт изготовителя!.

Ну и последняя покупка — импульсный регулируемый понижающий стабилизатор (чтобы из 12 Вольт сделать 5 Вольт):

Adjustable-DC-DC-Step-Down-Converter

Конкретный изготовитель сего чуда мне не известен (кроме страны происхождения 🙂 ), т.к. устройство было приобретено на сайте Aliexpress. Там же описаны и его характеристики.

Для финальной сборки UPS-а мне не понадобился даже паяльник — все монтажные клемы сделаны «под отвертку» (отпустил винт, вставил провод, затянул винт — всё!). На роутер Tplink TL-WR1043 питание было подано непосредственно с выхода PS1203B, а на роутер Dlink DSL-2500 — через понижающий стабилизатор. В стабилизаторе предварительно (до подключения к нему Dlink DSL-2500) было отрегулировано выходное напряжение (выставлено равным 5 Вольт).

Вот и вся «возня»!

Ну и напоследок — результаты тестирования: после того, как батарея была полностью заряжена, вилка «UPS»-а была выдернута из питающей сети (220 Вольт). На батарейном питании система из моих двух роутеров проработала 6 с половиной часов (по моему, вполне нормальный результат)!

Единственный «параллельный» вывод по результатам тестирования — работа системы в течение 6 часов от батареи емкостью 5 АЧ означает, что два моих роутера СУММАРНО потребляют менее 1 Ампера, и их комплектные блоки питания — «слегка» завышенной мощности…

2,5-дюймовый винчестер — в D’link DNS-320L

Так уж сложилось, что у меня завалялось несколько «свободных» ноутбучных винчестеров (2,5 дюйма). И захотелось мне NAS. Причем, естественно, такой, чтоб в него эти самые винчестеры пристроить. Гугл предлагал или «только дорого», или «только под винчестеры 3,5 дюйма». А хотелось, как обычно, «всё и на шару»…

«Глаз лег» на недорогой NAS для двух винчестеров от D’link — модель DNS-320L. НО! В интернете так и не нашлось никакой информации, о том, смог ли кто-то все-таки успешно установить в него винчестеры размера 2,5 дюйма?..

И терзали меня эти сомнения до тех самых пор, пока не нашел я в интернете вот такую картинку внутренностей аппарата со снятой крышкой. После этого мыслительный процесс пошел уже «в конструктивном направлении»…

Для начала сложил я кучку из винчестеров разного типоразмера:

CIMG0973

 

Целью построения этой «пирамиды» было желание увидеть, одинаково ли относительно края располагаются разъемы интерфейсов SATA и питания. Проверка показала — таки да! То есть, при попытке установить винчестер размером 2,5 дюйма ему ничего не должно мешать. Правда, отсутствует крепление винчестера, и тот будет держаться только на разъемах  интерфейсов SATA и питания! Но тут уже успокаивал тот самый «мыслительный процесс», который нашептывал: «Там же есть целая стенка металлического кожуха, сделаешь в ней дырки, прикрутишь винтами«…

В итоге, решение принято — «будем брать!«.

И вот девайс на столе. Разобрать его оказалось не сложно, как и в большинстве SOHO-устройств, крепежные винты были спрятаны под резиновыми ножками.

Осмотр той самой металлической стенки показал, что лишь в одном из 4-х возможных мест можно беспрепятственно просверлить отверстие для крепежного винта. «Мыслительный процесс» сказал «Не бойся! Один крепежный винт плюс два разъема  интерфейсов SATA и питания — для того чтобы удержать винчестер типоразмера 2,5 дюйма, — ДОСТАТОЧНО!»

Отлично, сверлим отверстие. В этом процессе главное — хорошо прицелиться (а не так, как это сделал я):

CIMG0966-1

Место, где я просверлил отверстие, на рисунке обведено красным. С учетом того, что «прицел меня подвел», пришлось еще немного поработать надфилями, чтобы отверстие под винт оказалось именно в том месте, где нужно.

Также, важно с внутренней стороны кожуха (к которой будет прилегать сам винчестер) тщательно удалить все заусенцы, чтобы они не повредили винчестер:

CIMG0967

Надфилем я тщательно зачисти все, как показано на рисунке (обведено красным).

После этого устанавливаем винчестер:

CIMG0968-1

… и прикручиваем его винтом снаружи кожуха:

CIMG0970-1

Затем аккуратно устанавливаем назад пластмассовый кожух:

CIMG0971-1

И закручиваем на место все крепежные винты корпуса.

Если винчестеров устанавливаете два, то аналогичные манипуляции проделываете и на другой стороне металлического кожуха.

Всё…

 

 

«Глушим» WD Caviar Black дешево и сердито

 

«Махнул не глядя» в сервере винчестер. Всем хорош  WDC WD1002FAEX, но по сравнению с «тихоходным» предшественником, акустический гул от него стал выше. И гудеж этот счастья не добавляет, особенно по ночам.

Решение пришло в виде простого … «комплектного» шланга от сливного бачка. Вся его «прелесть» заключалась в том,  что сделан это шланг из какого-то полимера, который по жесткости находится «где-то между» пластиком и резиной. Вот его фото:

dempfer_1

Из этого шланга и были вырезаны небольшие «демпферы». Фактически, это были отрезки длинной сантиметра по 4. С одного края у этой «трубочки» примерно на сантиметр пол цилиндра срезалось. Делалось это только потому, что не нашел я у себя в «запасниках» винтов такой длинны, чтоб они смогли пройти сквозь всю толщину шланга. И в итоге, сквозь такую «своеобразную площадку» я пропускал короткие винты, которые закручивал в винчестер.

Получилось нечто вот такое:

dempfer_2

(За качество фото извиняюсь, но лучше уже не будет, т.к. винчестер — внутри «сервера» и вынимать его лень)

После этого, полученный «бутерброд» был установлен в 5-дюймовый отсек, и саморезами закреплен в нем. При этом саморезы вкручивались в противоположный конец трубки-«демпфера».

В итоге прямого контакта винчестера с корпусом нет, он прикручен к «демпферам», а уже «демпферы» — к корпусу. Гул практически ушел…

И кстати, на мой взгляд это лучше, чем вешать винчестер на «резинках от трусов» 🙂

Настройка PPPoE в Ubuntu, когда ADSL-модем настроен как bridge

Оставим в стороне вопросы типа «А не проще ли было настроить модем роутером и не мучиться?». Так было нужно. Цель — средствами консоли (ну не нравится мне network-manager!!!) настроить PPPoE соединение, автоматически стартующее при загрузке компьютера.

Настройка производилась по статье с сайта официальной документации Ubuntu. Стаья расположена по адресу:

https://help.ubuntu.com/community/ADSLPPPoE

Вводная — модем, как и сказано в заголовке статьи, настроен в режиме bridge, в него вписаны значения VPI и VCI, выданные провайдером. Модем подключен кабелем в сетевую плату eth0 компьютера, на котором установлен дистрибутив Ubuntu desktop 12.04.

Итак, запускаем терминал, и в нем вводим команду:

sudo pppoeconf

Вариантов дальнейшего развития может быть два. Первый — неудовлетворительный: пакет pppoeconf не установлен. В таком случае его можно например, поискать и скачать с сайта пакетов Ubuntu  и установить «руками». Также, пакет может присутствовать на том диске, с которого вы устанавливали Ubuntu. Добавьте его в число источников ПО и затем выполните установку.

Второй вариант — благоприятный, пакет pppoeconf  установлен. В таком случае запустится программа настройки PPPoE подключения. Самый первый скрин работы программы в данной заметке не приведен — в нем программа проводит сканирование сетевых адаптеров на предмет наличия модемов. ВАЖНО: на момент запуска программы модем должен быть (а) включен, (б) подключен к линии и (в) подключен к компьютеру! Иначе, программа сообщит, что модемов не найдено и завершит свою работу.

После того, как модем найден, программа выдаст предупредительное сообщение:

С учетом того, что мы все-таки пришли сюда, чтобы настроить новое (а может быть и перенастроить старое) подключение, СОГЛАШАЕМСЯ — щелкаем «ДА».

Следующее сообщение программы поинтересуется, хотим ли мы использовать некие предлагаемые ей дополнительные опции подключения:

В моем случае (равно как и в 99% остальных), эти дополнительные опции будут вовсе не лишними. Желающие подробнее узнать о сути этих параметров могут (как и предлагается системой) почитать man (8) pppd, ну или ознакомиться с его переводом на русский язык в интернете. Соглашаемся, щелкаем «ДА» и перходим к следующему шагу.

Программа предложит вам ввести имя пользователя:

В этом поле вам нужно ввести тот логин (имя пользователя), который вам выдал провайдер. Будьте внимательны, не допускайте ошибок. Также, дополнительно обращаю внимание ваше внимание на регистр букв, «User» и «user» — это РАЗНЫЕ логины!

Следующий пункт — ввод пароля:

Введите пароль вашей учетной записи, который вам выдал провайдер. Опять же, снова напоминаю и о внимательности, и о регистре букв!

Следующий вопрос — об автоматическом добавлении адресов  DNS-серверов провайдера в список к «уже имеющимся в системе», после того, как устанавливается подключение:

СОГЛАШАЕМСЯ! Без этого мы рискуем получить неработающую систему. (Или вы наизусть помните все IP-адреса интересующих вас серверов? 🙂 )…

Следующее диалоговое окно программы предложит установить для ADSL-подключения  размер MTU равным 1452 байтам:

Тоже соглашаемся. Программа сообщит, что все параметры, необходимые для подключения настроены, и поинтересуется, хотите ли вы, чтобы ADSL-подключение устанавливалось автоматически при загрузке компьютера:

Отвечаем «ДА», но при этом пусть вам «на ум пойдет», что на самом деле этого БЕЗ ДОПОЛНИТЕЛЬНЫХ «телодвижений», увы происходить не будет! Об этом также сказано и в той статье с сайта Ubuntu, ссылку на которую я приводил выше. Переживать не стоит, ниже мы еще «поколдуем», чтобы впоследствии все было ОК.

В следующем окне программа предложит установить соединение прямо сейчас:

Выбираем «ДА»,программа выполнит процедуру подключения. Данное меню также предлагает вам запомнить две команды: pon dsl-provider и poff. Первая из них позволит вам вручную в консоли подключаться к провайдеру. Вторая — отключаться.

Должен дополнительно заметить, что если ранее вы ошиблись при вводе логина и/или пароля, то подключение произойдет как и положено (все будет выглядеть отлично!), но при этом доступ в интернет будет отсутствовать. По крайней мере, у меня именно так и было (я не доглядел в пароле, что одна из букв была введена мной не в том регистре, и в итоге лишние полчаса был вынужден угадывать — «как так, подключение ОК, а интернета нету?!»)…

Последний скрин — сообщение об успешном подключении:

На этом работа программы pppoeconf завершена. С данного скрина вам стоит запомнить команду plog, выводящую лог последнего подключения (надеюсь, команда ifconfig вам итак уже была известна)…

Проверить, что мы успешно подключились, в консоли проще всего такой командой:

ping -c5 google.com

Она позволяет нам сразу увидеть, что все прекрасно — служба DNS определит IP-адрес  для указанного сервера, и начнет пинговать его. Если все Ok, то пинг достигнет цели, и ваш компьютер получит ответы в том же самом количестве.

Автозапуск при загрузке

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

Не «рассусоливая» понапрасну много текста, предлагаю просто выполнить следующее. Отредактируйте файл /etc/network/interfaces. Для этого введите команду:

sudo nano /etc/network/interfaces

И приведите файл к следующему содержанию:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet ppp
pre-up iptables-restore < /etc/network/firewall.rules
pre-up /sbin/ip link set dev eth0 up
post-down /sbin/ip link set dev eth0 down

auto dsl-provider
iface dsl-provider inet ppp
pre-up /sbin/ifconfig eth0 up # line maintained by pppoeconf
provider dsl-provider

Данный набор инструкций предполагает, что модем подключен к комьютеру через сетевой адаптер eth0. Если в вашем случае номер адаптера иной, укажите его вместо eth0 во всех строках, где он встречается.

Обращаю внимание на строку выделенную цветом — это необязательная команда. Она дословно означает следующее: перед тем как запустить интерфейс eth0 программа iptables-restore должна загрузить правила файервола из файла /etc/network/firewall.rules. В вашем случае она может быть и излишней, поэтому можете ее и не вписывать в файл /etc/network/interfaces.

Чтобы выйти из редактора, нажмите Ctrl + X, и в ответ на запрос согласитесь с сохранением изменений.

Перезагрузите ваш компьютер.  Время загрузки увеличится. Сначала система выведет такой скрин:

Потом такой:

И лишь потом загрузится. Но по окончании загрузки у вас теперь должно быть уже активно подключение, и компьютер должен иметь доступ в интернет.

Ну и напоследок…

Chillispot и PPPoE

Собственно, все эти манипуляции я проделывал на компьютере, который выступал в роли хотспота. И доступ в интернет предоставлял «тот самый» Chillispot.

Нюансов в настройке в таком случае совсем не много. Во первых, в правилах файервола в качестве WAN-интерфейса нужно указать ppp0, вот так (выделено красным):

EXTIF="ppp0"
INTIF="eth1"

А во вторых, на всякий случай, стоит указать в настройках Chillispot-а (файл /etc/chilli.conf) адрес второго сервера DNS таким образом:

dns2 8.8.8.8

Суть данной перестраховки в том, что «может так статься», что на момент запуска Chillispot-а ADSL-соединение еще не будет установлено, и у компьютера еще не будет адреса(ов) сервера(ов) DNS. В итоге, в работе Chillispot могут наблюдаться проблемы. А так, мы принудительно подставляем вторым адрес одного из публичных  DNS серверов Google, который подстрахует, если вдруг будет недоступен DNS сервер провайдера…

Линух, «мускул», Дебет Плюс v12

Действительно, и что тут писать? Там же на сайте «море документации»! Только вот прочтение ее мало приближает к пониманию. Может в этом и есть весь сакральный смысл open-source?…

Итак, прочтение  всего того вороха, что размещен непосредственно на сайте Дебет Плюс, особого «прозрения» не принесло. Какие-то сбивчивые пояснения, обильно перемешанные картинками из виндовса, «дисками C:\ и D:\», обязательными разрешениями открытого беспарольного доступа рута к мускулу с любого компьютера сети, и т.д.

Короче говоря, отстреляться в моем любимом режиме «побороть за 5 минут и забыть» у меня не вышло…

Посему, решил расписать тут процесс этот, может кто потом спасибо скажет…

1.  Вводные

Есть у меня одна организация, активно переходящая на использование линукса. Причина банальна, платить за честный майкрософт они не хотят, а проверки по городу регулярно выискивают — «кто тут снова авторские права злостно нарушает?!». Посему, стоит у них на всех компьютерах Ubuntu, Open Office и т.д. и т.п… И почти все хорошо, но вот понадобилась им программа даже не для бухгалтерии в полном понимании этого слова, а всего лишь для ведения склада. Но такая, чтобы работало в ней несколько человек, на нескольких компьютерах, по сети, из-под под Ubuntu, ну и, естественно, даром…

Первой «подопытной» для демонстрации заказчику мной была выбрана Open ERP. Установка и настройка её — еще та песня, окончательная настройка стабильно работающей системы «сожрала» у меня несколько дней (основная проблема была с установкой и настройкой ее веб-сервера и веб-клиентов), если будет как-нибудь не лень, тоже распишу тут. Но, не понравился заказчику показанный продукт — «очень монстровская программа», «все слишком правильно», «нам бы попроще и подоходчивей», «мы не сможем наших бабушек обучить ей», и т.д. и т.п. И тут «пало око» на Дебет Плюс. Первые ознакомительные потыкивания в установленной на виндовсе версии закончились резолюцией заказчика: «Нормально, чем-то похоже на 1С, если вы утверждаете, что на линуксе оно точно такое же, то нам пойдет».  И вот теперь заказчиком было озвучено желание — «поставьте нам ее такую же, но на линукс и сетевую»…

Я тоже лентяй, разбираться с «клиентами» и «серверами» самого Дебет Плюса не захотел и решил, что «серверность» будем делать банально — через единую базу в MySQL. Вот на этом, собственно, моя вводная и заканчивается…

2. Сервер, подготовка

В данном случае, под «сервером»  я подразумеваю тот компьютер, на котором будет установлен сам сервер MySQL и размещена база «Дебета». Во всем остальном — он мало чем отличается от остальных «соседних» компьютеров. И более того, по «вводной от заказчика» на этом компьютере также будет работать один человек. На всякий случай напоминаю — это компьютер с установленной на нем ОС Ubuntu-desktop (кстати, оказывается в Украине на бубунту какой-то шустрый киевский предприниматель продает предприятиям сертификаты, я выпал!!!). Сама версия дистрибутива выбиралась мной, и я установил 10.04 LTS только потому, что  LTS  — это дистрибутив «с длительной поддержкой» (лениво мне каждые полгода с новыми багами разбираться)…

Для начала нужен сам сервер MySQL. Способов установить его — в интернете описано превеликое множество. Единственная моя «отсебятина», заключается в том, что я иногда люблю заглядывать в базы с помощью PhpMyAdmin (хотя стартовые действия — создание баз, импорт дампов, назначение привилегий — предпочитаю делать в консоли мускульного клиента — как-то и быстрей и понятней получается). Поэтому, (с поправкой на желание PhpMyAdmin-а) я сходу установил на «сервер» LAMP. Как я обычно это делаю, уже описано мной ранее в заметке Зажигаем «LAMP-очку». Дублировать тут ее смысла не вижу абсолютно — просто кликните по ссылке и прочтите…

3. Импорт дампа базы данных

После того, как сервер MySQL установлен и работает, наступило время вкинуть в него базу для Дебет Плюс. Для этого в первую очередь понадобится сам  Дебет Плюс. Идем на сайт программы в раздел «Скачать» и качаем версию для линукса.

http://www.debet.kiev.ua/download-program

После того, как файл скачан, его нужно распаковать (tar -zxf в помощь…). С учетом того, что (как я говорил выше) «сервер» будет одновременно еще и рабочим местом, я распаковал архив в домашнюю папку пользователя, который работает на этом компьютере. Кстати, кому не нравится такой вариант, тот может распаковать архив и в любое другое месторасположение. В данном случае, указание того, куда я распаковывал файл имело под собой одну лишь цель — создание «единой точки отсчета» при выполнении приведенных ниже консольных команд.

Итак, после того как архив был распакован, в домашней папке пользователя появилась папка DebetPlusV12. Переходим в папку, в которой расположен дамп базы данных (в консоли (терминале) вводим команду):

cd ~/DebetPlusV12/base/org2

(В данном случае «~» обозначает как раз домашнюю папку пользователя, вместо нее можно еще указать $HOME. )

В обозначенной папке убеждаемся в том, что в ней присутствует файл dpbase.arh (это и есть искомый дамп базы данных программы Дебет Плюс!). Если файл присутсвует, идем в консоль сервера MySQL, для этого вводим команду:

mysql -uroot -p

..и в ответ на запрос вводим пароль root-а (для сервера MySQL). После того, как попали в консоль MySQL, вводим команду для импорта дампа:

source dpbase.arh;

(данная команда приведена с учетом того, что мы перед входом в консоль мускула находились ИМЕННО в той самой папке, где располагался сам файл дампа dpbase.arh, иначе — в команде нужно прописать полный путь к файлу dpbase.arh, например, /home/dmitry/DebetPlusV12/base/org2/dpbase.arh). Дополнительно обращаю внимание, что предварительно саму базу мы не создаем — команда на ее создание уже присутсвует в дампе. Там же, в дампе, указано и то имя, с которым новая база будет создана — dpbase.

В результате процедуры импорта на сервере MySQL будет создана новая база — dpbase и в ней — (примерно) 1000 таблиц. Однако, программе Дебет Плюс для работы нужна ЕЩЕ ОДНА база (уж зачем она ей нужна — я не разбирался, но без нее, увы никак!). Имя этой базы dpadmin. Поэтому, создаем сразу же и ее:

CREATE DATABASE `dpadmin` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 

Импортировать в эту базу ничего не нужно, программе достаточен сам факт ее существования. После того, как в сервере MySQL будут присутствовать обе требующиеся для работы программы базы, им нужно назначить владельцев, и предоставить им права. Для этого вводим две  комманды (баз-то две):

GRANT ALL PRIVILEGES ON dpadmin.* TO "DPADMIN"@"%" IDENTIFIED BY "password" WITH GRANT OPTION; 
GRANT ALL PRIVILEGES ON dpbase.* TO "DPADMIN"@"%" IDENTIFIED BY "password" WITH GRANT OPTION; 

Как видите, в данных командах мы для двух баз (dpadmin и dpbase) назначаем владельцем пользователя (DPADMIN), который будет подключаться с помощью пароля password (причем в данном случае указанное в примере слово «password» — это ИМЕННО ЗНАЧЕНИЕ пароля, поставьте свое собственное, выполняя данные инструкции), и получать при этом полный доступ. Имя пользователя — DPADMIN, причем, именно так — БОЛЬШИМИ буквами, это имя, прописанное по умолчанию в программе Дебет плюс.  И именно с этим именем по умолчанию программа будет пытаться подключаться. Вместо адреса сервера, с которого пользователь DPADMIN будет подключаться к серверу баз данных в команде указано «%» — то есть, с любого адреса. Желающие повысить безопасность могут прописать конкретные адреса, или диапазоны адресов…

Все, базы готовы, консоль мускула нам больше ни к чему, выходим из нее командой quit или exit — кому как больше нравится…

4. Непосредственно сама программа

Тут действительно, практически все уже готово (с учетом того, что ранее программу мы уже разархивировали), и ее нужно просто запустить. Для этого вводим в консоли команду

~/DebetPlusV12/DebetPlus

Программа стартует, причем, полностью готовая к работе, как говорится «из коробки»! Спрашивается, а зачем тогда весь этот талмуд, если ее надо было просто запустить?… Отвечаю — ведь мы ж хотели «сетевую», а если «вот так просто стартануть» — то программа работает с локальной Derby-базой. То есть — пока еще не спешим пользоваться программой — сначала ее нужно перенастроить на использование базы, лежащей в сервере MySQL, и уж тогда будет нам «счастье сетевое»!…

По этому, последний шаг:

5. Настройка на использование базы MySQL

В этой части инструкции я покажу скриншоты, сделанные уже на «внешнем» рабочем месте — стоящем по соседству в сети компьютере. Причем, так уж вышло, что скриншоты делались на компьютере с ОС Windows, но в случае использования ОС Linux все настройки будут происходить точно также.

После того, как программа запустилась, выполняем следующее:

Рис. 1 — Выбираем добавление базы данных

То есть, в Правой части в меню выбираем закладку «Дебет Плюс»,  правой кнопкой мыши щелкаем на пункте «База DERBY» и в контекстном меню выбираем пункт «Добавить новую».

В открывшемся меню:

Рис. 2 — Выбираем добавление уже существующей базы данных

 

…выбираем пункт «Добавить в список существующую».

Откроется вот такое меню настройки параметров базы:

Рис. 3 — Настройки параметров базы данных

В этом меню нам предстоит выполнить ряд действий.

  1. Введите произвольное имя для данного подключения к базе. То есть, это просто то имя, под которым данное подключение к базе будет фигурировать в настройках программы Дебет Плюс. Причем, как показывают и используемое по умолчанию в программе имя «База DERBY», и официальная дока с сайта программы, здесь вы вольны использовать в том числе и кирилицу (правда, лично я не люблю этого, и посему назвал подключение не мудрствуя лукаво — mysql).
  2. Щелкните на стрелку и в выпадающем вписке выберите пункт «MySQL» (надеюсь, вы еще помните в каком сервера баз данных мы создавали нашу базу 🙂 )..
  3. Адрес (сетевой) того компьютера, на котором расположен сервер баз данных MySQL, в котором размещена интересующая нас база программы Дебет Плюс.  В данном случае на скриншоте показан IP-адрес сервера.  Если у вас в сети есть и используется локальный сервер DNS, который для локальных компьютеров хранит имена, можете указать вместо IP-адреса сетевое имя. Ну и напоследок, для случая, когда Дебет плюс запускается на том же компьютере, где расположена и сама база, вполне логичным будет указать в этом поле значение localhost (естественно, что «таких» компьютеров в «сетевой» инсталяции м.б. всего один 🙂 ).
  4. Номер порта. По умолчанию MySQL слушает подключения на порту 3306. Если вы не меняли это значение в настройках сервера MySQL (или даже не знаете, о чем идет речь), остатвьте как есть — 3306. Если меняли — смените и тут… Имя базы. При импорте дампа базы (как было описано выше) мы «автоматом» получаем, что создаваемая для «Дебет Плюс» база будет иметь имя dpbase (оно жестко прописано в файле дампа dpbase.arh, и его смена предполагает ручное редактирование файла dpbase.arh перед импортом). Если вы «ничего такого не делали», оставьте как есть — dpbase.
  5. В поле «Использовать авторизацию Дебет Плюс» мы птичку ставим для того, чтобы избежать необходимости при каждом запуске программы вручную вводить пароль, с которым Дебет Плюс подключается к базе данных. (Заказчик очень просил — «Не мучайте наших бабушек! Не надо, чтобы они еще и пароли запоминали!»).  Если же вы приверженец того, чтобы в целях безопасности пользователь все-таки вводил пароль вручную — не ставьте эту «птичку»!
  6. В поле «Настройки в базе данных» ОБЯЗАТЕЛЬНО ставьте «птичку»! Для сетевой работы — это необходимо. Иначе, при работе с сетевой базой данных Дебет Плюс будет постояннно пытаться искать «какие-то» настройки в своих локальных папках, находить их там естественно не будет, и вместо нормальной работы вы будете просто читать кучи сообщений об ошибках…
  7. Когда все выполнено, нажмите кнопку «Готово». Новое подключение (база данных) появится в списке рядом с пунктом «База DERBY».

Теперь нам нужно задействовать (активировать) эту самую новую (сетевую) базу данных, хранящуюся в сервере MySQL. Для этого выполните следующее:

Рис. 4 — Активация нового подключения к базе

То есть, просто щелкните на ней правой кнопкой мыши, и в меню выберите пункт «Сделать активной».  В ответ на это вы получите два сообщения.

Первое — это сообщение об ошибке:

Рис. 5 — Сообщение о невозможности подключиться к базе данных

… которое гласит о том, что программа не смогла подключиться к базе данных. Не пугайтесь. Причина его в том, что, во-первых, ранее вы поставили птичку в поле «Использовать авторизацию Дебет Плюс» (см. рис. 3 выше), во вторых, назначая права пользователей базы (см раздел «3. Импорт дампа базы данных» выше), вы указали использовать пароль (password), и в третьих, самой программе «Дебет Плюс» об этом пока что ничего не известно — ни о факте использования пароля, ни его (пароля) значение. По этому, программа и пытается подключиться к базе с пустым паролем. На что сервер MySQL ей вполне естественно и отвечает, что мол, «низзя сюды без паролю-то!»… Не огорчайтесь, все будет хорошо, нас же просили «не мучать бабушек»…

Второе сообщение — это как раз приглашение ввести пароль:

Рис. 6 — Ввод пароля для подключения к базе

Вводим тот самый пароль, который указали во время процедуры назначения прав на базы данных — «password» (надеюсь, вы ж его сменили на какой-то другой, свой собственный? 😉 ).

После того, как пароль принят, вы можете приступать к работе непосрадственно в программе Дебет Плюс! (И кстати, на этом этапе, при желании, можно уже и удалить не используемую теперь «Базу DERBY»).

Однако, условие «не мучать бабушек» все еще не выполнено: если на данном этапе оставить все как есть, окно с предложением ввести пароль, показанное на рис. 6 выше, будет выпрыгивать при каждом запуске программы. По этому, будем настраивать дальше…

Выполните следующее:

Рис. 7 — Вход в меню «Администрирование»

То есть,  щелкните сначала «Администрирование» в списке на закладке «Дебет плюс», а потом просто на самой вкладке «Администрирование» вверху.

В открывшейся вкладке нас интересует пункт Пользователи.

Рис. 8 — Выбираем меню «Пользователи»

Вот его и щелкнем. Откроется меню настройки пользователей программы:

Рис. 9 — Меню настроек пользователя

В нем выполните следующее:

  1. «Щелкните плюсик», чтобы открыть список пользователей.
  2. В списке будет всего один пользователь — DPADMIN. Вот его и выберите. Кстати, вот мы добрались до того, и с каким именем программа «ходит» в базу данных,  и почему оно набрано большими буквами… Кстати, желающие могут сменить, но учтите, что менять придется и в сервере MySQL (см. выше про назначение прав).
  3. Но мы сюда пришли с единственной целью — сменить пароль, с которым программа пытается подключаться к базе.  Поэтому, ставим «птичку» в поле «Сменить пароль».
  4. После этого у вас появится возможность ввода в поле «Пароль для пподключения к БД». Вводим туда то самое «password» (или какое там вы указали у себя) значение пароля.
  5. Щедлкаем кнопку «Сохранить». При этом пропадут и «звезды» в поле пароля, и «птица» в поле «Сменить пароль». Не переживайте — дело уже сделано, программа запомнила новый пароль.
  6. Щелкаем кнопку Закрыть» и выходи из меню.

ВСЁ!

Для проверки — выйдите из программы Дебет Плюс. А потом запустите ее снова. Вы должны попасть в программу без ввода каких бы то ни было дополнительных паролей, по умолчанию должна быть выбрана база MySQL, и все должно прекрасно работать.

Вот теперь, на мой взгляд, наконец-то это похоже на иструкцию по запуску программы за пять минут!!! 😉

Ах, да! Чуть не забыл…

6. Важное замечание по серверу MySQL

По умолчанию, обычно, сразу после установки сервера MySQL, доступ извне (из сети) к нему ограничен! За это отвечает обычно специальная настройка в файле my.ini. Зачастую (раньше) использовался специальный параметр — skip-networking. Если он активирован в файле настроек, право подключения к серверу дается лишь запросам, поступающим с адреса localhost. В таком случае, наши сетевые клиенты не смогут работать.  Чтобы все было хорошо, указанную строку нужно закомментировать.

Однако, в Ubuntu последнее время вместо параметра skip-networking используется другой — bind-address =127.0.0.1. Он также не позволяет подключаться к серверу никому, кроме localhost-а. По этому, его как и рассматривавшийся выше параметр skip-networking тоже нужно закомментировать.

После того, как данное ограничение в настройках сервера будет исправлено, сервер MySQL нужно перезапустить.

И вот теперь ваша сетевая версия Дебет Плюс будет прекрасно работать…

Успехов!

1, 2, 3, 4, 5, продолжаем «шлюзовать»…

В своей прошлой заметке я описал создание шлюза на базе компьютера с Linux (а точнее — с установленным на нем дистрибутивом Ubuntu). Та процедура на самом деле была лишь первым шагом «глобального плана». Этот шаг позволил нам создать самый простой шлюз, который при подключении к нему пользователей автоматом присваивает им IP-адреса и «выпускает» их в интернет. Пришло время второго шага — установим на наш шлюз прокси-сервер.

Вводные

Собственно, исходными данными нам послужит информация из первой заметки. Итак, у нашего шлюза в соответствии с приведенными в первой заметке инструкциями:

  • Есть сетевая плата eth0, которой он подключен в интернет (интерфейс WAN).
  • Есть сетевая плата eth1, к которой подклдючаются компьютеры клиентов (интерфейс LAN).
  • Сетевой плате eth1 присвоен IP адрес 192.168.100.1
  • На интерфейсе eth1 запущен сервер dnsmasq, который динамически присваивает компьютерам клиентов адреса в диапазоне 192.168.100.50 — 192.168.100.250, а также обслуживает их DNS-запросы.

«Откуда взялись» и «как настроились» эти вводные — смотрите в первой заметке, повторяться я не буду. Если же в вашем случае вводные данные будут иными, откорректируйте приведенные ниже инструкции в соответствии с собственными значениями.

SQIUD — установка

Установка прокси сервера SQUID на дистрибутиве UBUNTU выполняется очень просто — всего-навсего одной командой:

sudo apt-get install squid3

Тут надо сделать совсем маленькое отступление о том, почему в команде написано squid3, а не просто squid. Согласно информации с официального сайта, у Squid есть две стабильные ветки программы — 2-я и 3-я. Если у дистрибутива Ubuntu дать команду установить пакет squid, а не squid3, то в итоге будет установлена 2-я версия. Лично я предпочел поставить 3-ю. А уж как вам больше нравится — решайте сами.

В ответ на введенную команду Ubuntu скачает и установит Squid. Сразу же после установки он будет и запущен. Но в базовом виде его настройки нас не устраивают. Поэтому, самое время сделать следующее:

Настройка SQUID

Исходные параметры, с которыми в систему был установлен и запущен Squid, нам немного не подходят. Поэтому, в консоли вводим команду

sudo nano /etc/squid3/squid.conf

В указанном редакторе (nano) откроется файл конфигурации сервера Squid.

Еще одно отступление. В этой (равно как и в предыдущей) заметке рассматривается только самый необходимый минимум, так сказать «функциональный базис». После выполнения приведенных рекомендаций вы получите работающий шлюз. НО, полное раскрытие всех возможностей допустим того же Squid не было задачей, да и не возможно в выбранном формате (записи в блоге). В этом вам поможет (наиболее полно и максимально) естественно, документация, написанная авторами программы, которую можно легко найти на сайте разработчиков.

Итак, пройдемся по тем настройкам, которые добавил или изменил лично я.

Первым делом я нашел вот такую строку:

acl localhost src 127.0.0.1/32

и под (хотя можно и над) ней добавил еще одну — следующего содержания:

acl localnet src 192.168.100.50-192.168.100.250

В данном случае, добавленная мной строка создает (назовем его так) «шаблон» (жаждущие пеедантизма в формулировках могут прочесть это) с именем localnet (имя при желании вы вольны придумать свое собственное), который указывает, что под этот «шаблон» попадают данные (пакеты), источником (src) которых являются IP-адреса в диапазоне от 192.168.100.50 до 192.168.100.250 (см. выше наши «Вводные» — это именно тот диапазон, который наш шлюз присваивает компьютерам клиентов).

Затем я нашел в файле следующую строку — вот такую:

http_access allow localhost

и опять же под ней добавил еще одну:

http_access allow localnet

Эта запись разрешает нашему серверу прокси обрабатывать запросы, поступающие от тех компьютеров, которые удовлетворяют созданому ранее «шаблону» localnet (естественно, если вы дали приведенному выше «шаблону» свое собственное имя, то тогда и тут тоже укажите именно его). Тут есть еще одно ВАЖНОЕ ЗАМЕЧАНИЕ — добавленная вами строка ОБЯЗАТЕЛЬНО ДОЛЖНА БЫТЬ ВЫШЕ (раньше) строки «http_access deny all»!

Далее в файле я нашел строку

http_port 3128

и изменил ее саму — дописав в конец слово «transparent«. В итоге строка стала выглядеть следующим образом:

http_port 3128 transparent

Этим самым я указал, что мой Squid будет работать в режиме т.н. «прозрачного» прокси, т.е. клиенты даже не будут подозревать о его существовании. И им не нужно будет в своих браузерах прописывать использование прокси-сервера. Они будут просто «ходить в интернет» как обычно, а Squid, как тот Штирлиц — писать все 🙂 …

В принципе, приведенных выше изменений (с учетом того, что я просто НЕ ТРОГАЛ остальные базовые настройки) вполне достаточно для нашего случая. Но, я сделал еще одно — нашел и отредактировал строку, указывающую, на каком языке Squid будет выводить сообщения об ошибках. В итоге строка стала выглядеть следующим образом:

error_directory /usr/share/squid3/errors/Russian-1251

В результате, пользователи (клиентские компьютеры) будут получать сообщения об ошибках (например о недоступности сайта или еще чем-то) на русском языке. А вдруг, это им поможет 😉 ..

Ну чтож, сохраняем изменения и выходим из редактора (Ctrl + X). Чтобы задействовать внесенные в настройки параметров изменения, перезапускаем сервер Squid командой:

/etc/init.d/squid3 restart

Все. Кеширующий прокси-сервер Squid работает. Осталось сделать последний шаг — трафик клиентских компьютеров завернуть непосредственно в него. И в этом нам поможет…

Настройка файервола

Как было сказано выше, «минимализ — наше все». По этому, приведенный ниже скрипт правил файервола так и сделан — в нем прописан необходимый минимум. А минимум этот, как написано вот в этом HOWTO действительно весьма аскетичен! Как говорили в небезызвестной советской комедии — «Достаточно одной таблетки!». А в нашем случае — всего одной строчки, которая в приведенном ниже скрипте выделена синим цветом:

        #!/bin/sh
        WAN="eth0"
        LAN="eth1"

        iptables -F INPUT
        iptables -F FORWARD
        iptables -F OUTPUT

        iptables -P INPUT ACCEPT
        iptables -P OUTPUT ACCEPT
        iptables -P FORWARD ACCEPT

        iptables -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT

        iptables -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j REDIRECT --to-port 3128
        echo "1" > /proc/sys/net/ipv4/ip_forward

Как было сказано выше, «синее» правило заворачивает запросы, приходящие на интерфейс, определенный как переменная LAN (которая в скрипте равна eth1 — интерфейсу, к которому, согласно нашей «Вводной» подключаются клиенты) на порт 3128 (а это тот порт, на котором слушает наш Squid). В итоге клиенты автоматом получают доступ в интернет через наш прокси.

В скрипте есть еще две строки, выделенные красным — они не нужны для работы собственно шлюза, а открывают доступ к ssh-консоли шлюза. Если вам не нужно такое — просто удалите эти строки.

Что делать со скриптом, и как автоматизировать его запуск при загрузке компьютера — уже было описано мной в прошлой заметке. В данном случае сделайте все то же самое — скрипт сохраните в виде файла, файл сделайте исполняемым, выполните и пропишите его например в тот же файл /etc/network/interfaces (естественно, вместо того, что там был указан ранее). Если же приведенный скрипт правил файервола вам покажется недостаточным, можете использовать иной, например, тот, который приведен вот в этой заметке, ну или напишите свой собственный…

И вот собственно после того, как вы запустили на исполнение приведенный выше скрипт, пришло время подключить в шлюзу клиентский компьютер. У компьютера в настройках сети нужно включить использование DHCP-клиента (т.е. говоря терминами Windows — «Получить адрес автоматически» и «Получить адрес сервера DNS автоматически»). Компьютер должен автоматом получить от шлюза нужные данные — свой адрес, адрес шлюза и адрес сервера DNS. После этого можно запускать на компьютере браузер и отправляться в интернет…

А на шлюзе для проверки можно запустить вот такую команду:

sudo tail -f /var/log/squid3/access.log

И наблюдать нечто наподобие такого:

192.168.100.85 - - [12/Apr/2011:13:16:08] "GET http://www.cyberforum.ru/images/buttons/lastpost.gif HTTP/1.1" 304 375 TCP_IMS_HIT:NONE
192.168.100.85 - - [12/Apr/2011:13:16:08] "GET http://www.cyberforum.ru/images/icons/icon11.gif HTTP/1.1" 200 1503 TCP_HIT:NONE
192.168.100.85 - - [12/Apr/2011:13:16:08] "GET http://www.cyberforum.ru/images/statusicon/thread_hot_new.gif HTTP/1.1" 304 375 TCP_IMS_HIT:NONE
192.168.100.85 - - [12/Apr/2011:13:16:08] "GET http://www.cyberforum.ru/images/misc/multipage.gif HTTP/1.1" 304 375 TCP_IMS_HIT:NONE
192.168.100.85 - - [12/Apr/2011:13:16:08] "GET http://www.cyberforum.ru/images/icons/icon5.gif HTTP/1.1" 304 375 TCP_IMS_HIT:NONE
192.168.100.85 - - [12/Apr/2011:13:16:08] "GET http://www.cyberforum.ru/images/misc/paperclip.gif HTTP/1.1" 200 747 TCP_HIT:NONE
192.168.100.85 - - [12/Apr/2011:13:16:08] "GET http://www.cyberforum.ru/images/icons/icon4.gif HTTP/1.1" 304 375 TCP_IMS_HIT:NONE
192.168.100.85 - - [12/Apr/2011:13:16:08] "GET http://www.cyberforum.ru/images/icons/icon7.gif HTTP/1.1" 304 375 TCP_IMS_HIT:NONE
192.168.100.85 - - [12/Apr/2011:13:16:08] "GET http://www.cyberforum.ru/images/icons/icon1.gif HTTP/1.1" 304 375 TCP_IMS_HIT:NONE
192.168.100.85 - - [12/Apr/2011:13:16:08] "GET http://www.cyberforum.ru/images/icons/icon9.gif HTTP/1.1" 304 375 TCP_IMS_HIT:NONE
192.168.100.85 - - [12/Apr/2011:13:16:08] "GET http://www.cyberforum.ru/images/icons/icon2.gif HTTP/1.1" 200 1501 TCP_HIT:NONE

Как видим, лог Squid-а нам все показывает — «кто, куда, зачем и почем»…

PS. Ну вот, опять до вирусов не добрались…

Зажигаем «LAMP-очку»

Наблюдая превеликое множество инструкций на тему установки вебсервера с поддержкой РНР, в которых идет нудное перечисление вида «Установите Apache», «Установите PHP», и т.д. и т.п., я всегда прихожу в уныние. Ну зачем все так сложно? По этому, я и решил написать эту заметку, в которой мы все это установим «на раз, два, три»…

Очень кратко о том, что такое LAMP.  Метапакет LAMP (Linux – Apache – MySQL – PHP) – это «объединенный пакет» устанавливающий «одним махом» несколько программ сразу. Он включает в себя: веб сервер Apache, сервер баз данных MySQL и сервер приложений на языке PHP. Установка этого метапакета в дистрибутивах Linux на самом деле позволяет максимально просто установить все указанные службы, а также автоматически настроить их взаимодействие. Результатом его установки является полноценный веб-сервер, с поддержкой PHP и MySQL, работающий на компьютере.

Именно поэтому мы и пойдем таким путем — установим метапакет LAMP. Выполняться это будет на «попсовом» дистрибутиве Ubuntu. Предполагается, что на момент начала установки у компьютера настроен доступ в интернет, и проблем с установкой пакетов нет.

Запустите терминал (меню «Приложения» — «Стандартные» — «Терминал»).

Введите в терминале следующую команду:

sudo tasksel install lamp-server

Должен заметить, что с некоторых пор в релизах Ubuntu команда tasksel по умолчанию не устанавливается. В таком случае в ответ на команду, приведенную выше, вы получите сообщение об ошибке (что команда tasksel не найдена). Ну нет, так нет. Установите ее! Для этого введите такую команду:

sudo apt-get install tasksel 

…а уже после того как программа tasksel будет установлена, снова введите команду (ту, первую) для установки метапакета LAMP…

Но, вернемся к установке.

Система потребует от вас ввести пароль пользователя для выполнения административных задач.

Рис. 1 — Команда установки метапакета LAMP

После того, как правильный пароль будет вами введен, начнется установка метапакета LAMP. Первый этап — загрузка файлов.

Рис. 2 — Загрузка пакетов из интернета

После того, как загрузка файлов завершится, будет запущен процесс настройки. При этом вам будет предложено указать самостоятельно единственный зависящий от вас параметр, а именно — пароль пользователя root для сервера баз данных MySQL. Вам будет выведено вот такое диалоговое окно:

Рис. 3 — Ввод пароля пользователя root для сервера MySQL

Введите свой собственный, самостоятельно придуманный пароль. Табуляцией (кнопка Tab на клавиатуре) перейдите на поле <OK> и нажмите Enter.

Появится окно для повторного ввода пароля (верификация):

Рис. 4 — Повторный ввод пароля (верификация)

Еще раз введите ваш пароль. Пароль этот запомните, а лучше запишите, чтобы не забыть.

После того, как вы введете пароль, начнется установка пакетов:

Рис. 5 — Установка пакетов

По ее окончании можно начинать радоваться — сервер LAMP у вас на компьютере уже установлен.

Теперь, не выходя из терминала введите следующую команду

echo '<?php phpinfo(); ?>' | sudo tee -a /var/www/test.php

Эта команда создаст новый файл test.php в папке /var/www/ и в этот файл записывается одна единственная строка – <?php phpinfo(); ?>. С учетом его имени и месторасположения, вновь созданный файл является одной из веб-страниц, написанных на языке РНР, и обрабатываемых вашим веб-сервером. А его содержание представляет собой единственную команду PHP, выполняя которую, ваш сервер должен отобразить страницу со всевозможной информацией — о текущей версии сервера PHP, его настройках, а также об иных параметрах и данных. Файл этот нам понадобится в дальнейшем для проверки работоспособности сервера РНР.

Рис. 6 — Создание тестового файла для проверки работы РНР

Ну и напоследок — установим всеми любимый phpmyadmin (почему-то все без него жить не могут). Не выходя из терминала введите команду

sudo apt-get install phpmyadmin

Система запросит подтверждения — согласны ли вы установить «такое-то» количество пакетов.

Рис. 7 — Команда установки phpmyadmin

Соглашайтесь (нажмите «Y» на клавиатуре).

Сначала все пакеты будут загружены, а потом начнется настройка phpmyadmin. Первый вопрос который вам будет задан, поинтересуется, к какому веб-серверу вы хотите интегрировать phpmyadmin.

Рис. 8 — Выбор вебсервера, в который будет интегрирован phpmyadmin

Памятуя о том, что только что мы установили apache (в составе метапакета LAMP), выбираем соответствующий пункт (apache2), и щелкаем «любимое» <OK>.

Следующий вопрос будет посвящен настройке самого phpmyadmin. Вам предлагается настроить учетную запись административного пользователя в phpmyadmin.

Рис. 9 — Запрос дальнейшей настройки phpmyadmin

Выбираем «Да».

Вас попросят ввести пароль административного пользователя баз данных. ВНИМАНИЕ! Это тот самый пароль пользователя root для сервера MySQL, который вы только что вводили, когда устанавливали LAMP (см. рис. 3 выше). Вы ж его записали? Вот и чудно, введите его в ответ на этот запрос:

Рис. 10 — Запрос пароля пользователя root для сервера MySQL

После этого вам будет предложено ввести пароль  (как написано в диалоговом окне) «приложения для phpmyadmin». На самом деле настройщик создаст вам еще одного административного пользователя для сервера MySQL. Имя пользователя будет phpmyadmin, а пароль его вам как раз и предлагается ввести. Укажите свой самостоятельно придуманный пароль:

Рис.11 — Ввод пароля для нового пользователя — phpmyadmin

Как и любой вновь вводимый пароль вас попросят его ввести повторно для верификации:

Рис. 12 — Повторный ввод пароля пользователя phpmyadmin (верификация)

После того, как вы  успешно введете все пароли, установка и настройка phpmyadmin будет завершена.

Осталось лишь проверить, и убедиться, что все хорошо. Сначала проверяем работу именно веб-сервера Apache. Запустите браузер (в Ubuntu по умолчанию установлен Mozilla Firefox). В браузере введите следующий адрес (подразумевается, что ваш браузер запущен НА ТОМ ЖЕ САМОМ компьютере, на котором был установлен веб-сервер):

http://localhost/

Вы должны увидеть вот такое окно:

Рис. 13 — Проверка работы веб сервера Apache

«Радостная» надпись «It works!» является подтверждением того, что Apache работает.

Проверим теперь PHP. В адресной строке браузера введите другой адрес:

http://localhost/test.php

(это адрес той самой «тестовой» страницы, которую мы создали ранее). Должно появится вот такое окно:

Рис. 14 — Проверка работы сервера PHP

В нем, как и было обещано ранее, вы сможете прочесть все информацию о вашем сервере…

Ну и напоследок — а как там поживает наш phpmyadmin? Введите в строке адреса браузера следующее:

http://localhost/phpmyadmin/

Откроется вот такое окно с предложением ввести имя пользователя и пароль.

Рис. 15 — Проверка работы phpmyadmin

В этом окне, чтобы попасть в phpmyadmin вы можете теперь ввести два различных варианта имен пользователя и паролей. Первый вариант — пользователь root и пароль, который вы вводили во время установки LAMP (см. рис. 3 выше). Или же второй вариант — пользователь phpmyadmin и пароль, который вы вводили во время настройки пакета phpmyadmin (см. рис. 11 выше).

НУ ВОТ И ВСЕ!

PS. А ведь и правда, вы читали и разглядывали картинки дольше, чем в итоге длилась сама установка?  🙂

Ну а в принципе, самым ленивым возможно пригодится уже готовый скрипт, который сам «по порядочку» выполняет все указанные действия. Скачать его можно с моего FTP по вот этой ссылке

«Лето солнечного цвета»…

Таки это было жаркое лето…

По мере усиления жары прошедшим летом, я все отчетливее слышал свой «домашний сервер».  А точнее — его вентилятор, установленный на процессоре. В bios-е комппьютера была включена функции Smart Fan Control, и по мере роста температуры процессора система разгоняла вентилятор все сильнее. И если при скорости вращения ниже 2000 об/мин. его шум был больше похож на низкочастотный гул, то при превышении значения в 2500 об/мин этот шум переходил в весьма занудный вой.

Решено было помочь вентилятору процессора. В корпус (старый ATX) добавилось два 8-сантиметровых вентилятора на заднюю стенку, и еще один 8-сантиметровый вентилятор был установлен на переднюю стенку перед винчестерами, чтобы охлаждать их. Таким образом сквозь корпус был организован дополнительный «сквозняк», и вентилятор процессора подуспокоился. Но три 12-Вольтовых вентилятора, работающие на полных оборотах, тоже шумят прилично. Решил немного подсбросить им обороты. Можно, конечно, было просто подать на вентиляторы 7 Вольт, включив их между шинами 5 и 12 Вольт.  Или же можно было в цепь питания каждого вентилятора поставить ограничительный резистор, чтобы снизить поступающее на него напряжение. Но мне, во первых, захотелось оставить вентиляторы в «нетронутом» состоянии, а во вторых, иметь возможность хоть как-то регулировать их скорость вращения! По этому, за пять минут, как говорится, «на коленке» был спаян простенький регулятор. Схема регулятора приведена на рис. 1 ниже.

Рис. 1 — Принципиальная схема регулятора.

Напряжение 12 Вольт поступает от блока питания компьютера на вход XS1 регулятора. Сам регулирующий элемент выполнен на широко распространенной «трехкопеечной» ИМС LM7805 (КР142ЕН5Б). Отрегулированное напряжение подается на выходной разъем XP1, к которому подключаются вентиляторы. Разъемы XS1 и XP1 использованы типа MOLEX, соответственно «мама» и «папа». Вы спросите: «А как же регулировка, ведь использованная ИМС LM7805 является стабилизатором с фиксированным выходным напряжением 5 Вольт?». Не буду спорить, при использовании, например, микросхемы регулятора LM317 и пары резисторов, один из которых переменный, получился бы плавный регулятор. Но во первых, на момент создания сего «чуда» у меня просто не оказалось ее под рукой, а бежать на радиобазар мне было лень. А во вторых, получившееся у меня в итоге устройство сочетает в себе одновременно и регулировку и индикацию, что на мой взгляд, даже более «интересно».

«Общеизвестно», что повысить выходное напряжение LM7805 можно, если ее вывод GND подключить на «землю» не непосредственно, а через стабилитрон. При этом выходное напряжение LM7805 повысится на напряжение стабилизации установленного стабилитрона. С другой стороны, в некотором смысле «стабилитроном» можно назвать и обычный светодиод, т.к. падение напряжения на нем более-менее стабильно в некотором диапазоне токов, и составляет около 2 Вольт. В итоге, комбинация LM7805, трех светодиодов и одного (галетного) переключателя на три положения позволили сделать ступенчатый регулятор с одновременной индикацией выходного напряжения.

Выбор выходного напряжения из ряда 7, 9 и 11 Вольт осуществляется  переключателем SW1. Например, переключатель установлен в положение «7 Volt». В таком случае вывод GND ИМС LM7805 подключен к «земле» через один светодиод D3 зеленого цвета. К выходному напряжению LM7805 добавляется 2 вольта, и на выход схемы поступает 7 Вольт.  Светодиод D3 горит, индицируя выходное напряжение в 7 Вольт. Теперь установим перелючатель в положение «9 Volt».  При этом микросхема LM7805 будет подключена к «земле» уже через два светодиода — D3 (зеленого цвета) и D2 (желтого цвета). Выходное напряжение LM7805 повышается уже на 4 Вольта, и на выходе схемы будет уже 9 Вольт. Горят уже два светодиода — D3 и D2, индицируя, что выходное напряжение равно 9 Вольт. И наконец рассмотрим, что будет, если перелючатель установить в положение «11 Volt».  Между «землей» и выводом  микросхемы LM7805 теперь уже подключены три светодиода — D3 (зеленого цвета), D2 (желтого цвета) и D1 (красного цвета). Естественно, горят сразу все три светодиода, что означает, что включен режим «11 Вольт». В таком случае выходное напряжение LM7805 должно было бы повыситься уже на 6 Вольт, и составить 11 Вольт. Однако, в том виде как есть, эта схема дает напряжение менее 11 Вольт. Это связано с тем, что на вход схемы от блока питания поступает 12 Вольт, а минимальное падение напряжения на регуляторе LM7805, согласно datasheet-а, составляет 2 Вольта. Таким образом, реально напряжение на выходе регулятора равно не 11, а 10 Вольт. Чтобы избежать этого, в качестве регулятора нужно использовать т.н. «Low Dropout» ИМС.

Ну и напоследок, если у вас есть переключатель на 4 положения, то его  четвертый «неподвижный» контакт можно подключить непосредственно к выводу GND микросхемы LM7805. Тогда в этом положении переключателя напряжение, подаваемое на вентиляторы, составит 5 Вольт, а все светодиоды будут погашены.

Плата для устройства не разрабатывалась, все было выполнено навесным монтажом…

FTP сервер сначала «для себя любимого», а уж потом – для всех…

FTP сервер я себе настроил. Давно уже. И описал настройку в заметке FTP – для всех и «для себя любимого». И до поры до времени было все нормально (если конечно не считать попыток авторизации под левыми паролями, с которыми я потом разобрался). Но через время гугл проиндексировал все содержимое моего сервера, и начал народ качать что ни попадя. Причем, со временем этот процесс стал гораздо интенсивнее, чем мне хотелось бы, да таким, что приходилось мне по нескольку минут ждать, пока браузер наконец-то страницу откроет. И возникло у меня страстное желание вернуть себе свой интернет, а говоря простыми словами — ограничить скорость раздачи с FTP-сервера. Тем более, что качали в основном с Китая и практически один единственный драйвер…

По быстрому нагуглил новость, что

…в ProFTPD 1.3.3 … появились такие новые модули, как … mod_shaper для разграничения скорости загрузки/скачивания по сессиям.

Появились, так появились.  Будем использовать. Проверка показала, что модуль mod_shaper для ProFTP в репозиториях Mandriva присутствует, но устанавливается отдельно от самого сервера, и в моем конкретном случае еще не установлен. Значит, нужно установить. Как показало дальнейшее, мне нужно было установить и еще один модуль, который возможно и вам окажется полезным.

Итак, в консоли от имени root-а вводим команду:

urpmi proftpd-mod_shaper proftpd-mod_ifsession

Будут установлены два модуля — собственно сам mod_shaper, а также mod_ifsession, о назначении которого  я скажу позже.

Чтобы задействовать шейпер, в начале файла конфигурации ProFTP /etc/proftpd.conf  (в той его части, где перечисляются настройки использованных модулей) я добавил следующие строки:

<IfModule mod_shaper.c>
    ShaperEngine on
    ShaperAll downrate 50 uprate 100
</IfModule>

Собственно, настроек использовано «аж две»:

  • Строка «ShaperEngine on» включает шейпер;
  • А строка «ShaperAll downrate 50 uprate 100» указывает (в килобайтах/сек.) лимит скорости с которой пользователи будут скачивать (downrate) файлы с сервера, и загружать (uprate) файлы на сервер.

Вот и все настройки, потребовавшиеся в моем случае. Перезапускаем сервер и радуемся. На самом деле, это далеко не полный список параметров, которые можно указать и использовать при настройке шейпера. Полный их список приведен на страницах документации на сайте разработчика и сайте сервера ProFTP (фактически, страницы абсолютно одинаковые).

Может возникнуть вопрос — а почему я не использовал директиву «TransferRate». Гугление по данному вопросу (еще на этапе поиска решения) показало, что эта директива ограничивает скорость для одной сессии. Таким образом, если лимит равен 10, то исходящий трафик будет равен столько раз по 10, сколько сессий загрузки выполняется в данный момент. И трафик будет меняться в зависимости от числа анонимов, качающих с моего сервера. А вот в случае использования шейпера все будет в точности да наоборот — если указал я лимит в 10, он будет поделен на текущее число сессий. Таким образом, именно шейпер позволил мне простым и понятным способом указать ту скорость, которую я готов «пожертвовать» анонимным посетителям моего сервера вне зависимости от их числа…

Но есть в этом способе еще один нюанс, который лично мне показался очень даже полезным. Речь идет о возможности менять настройку шейпера одной единственной командой:

ftpdctl shaper all downrate 40 uprate 100

А это в свою очередь позволяет прописать в cron пару таких команд (с разными значениями лимитов), и таким образом автоматически менять «дневной» и «ночной» лимиты трафика.

Ну и напоследок — а как же быть с собой «любимым»? Неужто тоже в очередь на свой сервер записываться? И качать «в час по чайной ложке»? Негоже это!  Модуль шейпера позволяет несколькими способами «поправить» свои привилегии, но мне лично понравился такой — указать пользователя (или пользователей), для которых модуль шейпера отключается совсем. Именно для такой возможности и нужно было установить тот второй модуль, о котором я упоминал в начале заметки (mod_ifsession).

Чтобы указать пользователей, которым шейпер — не указ, немного модифицируем  секцию настроек шейпера:

<IfModule mod_shaper.c>
    ShaperEngine on
    ShaperAll downrate 50 uprate 100
    <IfUser dmitry anna>
      ShaperEngine off
    </IfUser>
</IfModule>

И вот теперь для пользователей dmitry и anna шейпер отключается, и никаких ограничений на скорость как скачивания, так и загрузки нет.

PS. Проверить текущее состояние шейпера можно выполнив в консоли следующую команду:

ftpdctl shaper info

Ответ на нее выглядит следующим образом (три сессии с общими лимитами в 40 и 100 КБ/сек):

ftpdctl: Overall Rates: 40.00 KB/s down, 100.00 KB/s up
ftpdctl: Default Shares Per Session: 5 down, 5 up
ftpdctl: Default Priority: 10
ftpdctl: Number of Shaped Sessions: 3
ftpdctl: PID   Priority DShares        DRate (KB/s) UShares        URate (KB/s)
ftpdctl: ----- -------- -------------- ------------ -------------- ------------
ftpdctl:  2573       10       5/15 (0)        13.33       5/15 (0)       33.33
ftpdctl:  2713       10       5/15 (0)        13.33       5/15 (0)       33.33
ftpdctl:  2992       10       5/15 (0)        13.33       5/15 (0)       33.33

Итого — как видите, шейпер честно поделил выделенный лимит поровну между тремя  анонимами…

ЗЫ. и еще чуток. Чтобы видеть сколько анонимных пользователей подключено (точнее — на сколько сессий шейпер поделил отведенную полосу), я написал совсем маленький скрипт, всего одну строку:

ftpdctl shaper info | egrep -i "Shaped Sessions" | egrep -o [0-9]+

после запуска скрипта на экран выводится одна единственная цифра — число сессий. Лезть в консоль, да еще и с правами root-а каждый раз неохота, потому данный скрипт был добавлен в субмодуль custom модуля Webminstats программы Webmin. И вот теперь он «радостно» рисует мне вот такие графики:

И снова fail2ban — на этот раз охраняем ProFTP и Dovecot

Собственно, это уже совсем … скучно. И тем не менее…

Просмотр логов показывает, что и в ftp-сервер мой постоянно кто-то пытается попасть «мимо кассы»:

Янв 19 07:54:36 dmitrykhn.homedns.org proftpd[27832] dmitrykhn.homedns.org (82.213.28.12[82.213.28.12]): USER service: no such user found from 82.213.28.12 [82.213.28.12] to 192.168.1.115:21
Янв 19 07:54:37 dmitrykhn.homedns.org proftpd[27832] dmitrykhn.homedns.org (82.213.28.12[82.213.28.12]): USER service: no such user found from 82.213.28.12 [82.213.28.12] to 192.168.1.115:21

…и в почтовый сервер тоже:

Feb  1 00:10:12 dmitrykhn dovecot: pop3-login: Disconnected (auth failed, 1 attempts): user=, method=PLAIN, rip=59.124.32.168, lip=192.168.1.115
Feb  1 00:10:19 dmitrykhn dovecot: pop3-login: Disconnected (auth failed, 1 attempts): user=, method=PLAIN, rip=210.202.39.205, lip=192.168.1.115

Что же тогда, сидеть и ждать? Решил я воспользоваться все тем же fail2ban — он и так уже трудится, вот пусть теперь и тут еще постарается…

С ProFTP, как мне казалось, все будет просто — соответствующий фильтр в наборе fail2ban имелся. Взял я программу fail2ban-regex и скормил ей файл протокола /var/log/proftpd/proftpd.log в паре с данным фильтром (как пользоваться fail2ban-regex я уже писал тут). Совпадения нашлись, и почти все было бы хорошо, если бы не одно «но». Программа fail2ban-regex сказала, что моя дата не подходит ни под один из известных ей шаблонов. Как я понял, единственное, что могло смутить fail2ban-regex в моей дате, так это тот язык, на котором она была выведена. То есть, «пришла беда, откуда не ждали». То ли авторы дистрибутива Mandriva, используемого мной, то ли авторы ProFTP, решили сделать мне «хорошо» — раз уж выбрал я русский язык, то пусть и протокол будет на русском. В принципе, оно конечно хорошо — понятнее. Даже не смотря на то, что русского того там в протоколе  — аж целых три буквы в имени месяца!..

В принципе, программа ProFTP (как я понял) использует тот язык, который в момент ее запуска указан в системе в качестве системного. Что ж, подумал я, если в момент запуска ProFTP указать, что системный язык английский, то есть шанс, что и сообщения в лог пойдут тоже на нем. Сказано — сделано. Пошел я в папку /etc/init.d и нашел в ней скрипт запуска сервера ProFTP (файл proftpd). Открыл его в редакторе и нашел в нем следующую строку:

         daemon "proftpd >/dev/null 2>&1"

и НАД ней добавил (чтоб долго не угадывать) следующие три:

        export LC_MESSAGES="en_US.UTF-8"
        export LC_ALL="en_US.UTF-8"
        export LANG="en_US.UTF-8"

Должен заметить, что строка daemon «proftpd >/dev/null 2>&1» присутствует в скрипте два раза. Как следствие и свои строки с назначением переменным LC_MESSAGES, LC_ALL и LANG значения en_US.UTF-8 я тоже добавил два раза (в обоих местах). Перезапустил ProFTP, заглянул в лог — красота, сообщения в нем снова на «родном английском»! Что ж, пол дела сделано.

Вторая половина — включить в fail2ban соответствующий фильтр (proftpd). Для этого я открыл в редакторе файл /etc/fail2ban/jail.conf и сделал в нем следующее — нашел в нем секцию про указанный фильтр и изменил ее, после чего она стала выглядеть следующим образом:

[proftpd-iptables]

enabled  = true
filter   = proftpd
action   = iptables[name=ProFTPD, port=ftp, protocol=tcp]
#           sendmail-whois[name=ProFTPD, dest=you@mail.com]
logpath  = /var/log/proftpd/proftpd.log
maxretry = 4

Собственно, изменений было аж три (выделены красным цветом). Смена в поле enabled значения с false на true включила использование фильтра. Диез (#) превратил строку с командой отправки почтового сообщения в комментарий (ну не надо мне эти письма!). Ну и в поле maxretry я поставил 4 — именно после стольких неудачных попыток нарушитель будет забанен.

А с  dovecot вопрос решился с помощью Google. Нашел я в нем ссылку на вот такую чудную страницу:

http://wiki.dovecot.org/HowTo/Fail2Ban

Просто «тупо» повторил описанное на ней, и все.  Для тех, кому английский так и не стал родным, очень кратко:

Создаем файл /etc/fail2ban/filter.d/dovecot-pop3imap.conf вот такого содержания:

[Definition]
failregex = (?: pop3-login|imap-login): (?:Authentication failure|Aborted login \(auth failed|Disconnected \(auth failed).*rip=(?P\S*),.*
ignoreregex =

После чего в файл /etc/fail2ban/jail.conf добавляем новую секцию вот такого вида:

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,imap", protocol=tcp]
logpath = /var/log/maillog
maxretry = 20
findtime = 1200
bantime = 1200

Пару замечаний про «мой случай» (выделено синим):

  • Лог для анализа в моем случае задействован иной — /var/log/mail/info.log (именно в нем я нашел сообщения об ошибочных авторизациях).
  • Строки про findtime и bantime я в секцию dovecot-pop3imap не писал совсем — меня вполне устраивают и значения «глобальных» настроек».
  • Параметр maxretry я у себя поставил поменьше — нечего тут…

После всех этих описанных выше действий, перезапустил я fail2ban и сижу вот теперь, жду…

Удаление «зависших» сессий из таблицы radacct (в б/д MySQL) сервера RADIUS

Ковыряясь с хотспотом, столкнулся с тем, что иногда в таблице radacct остаются строки, в которых отсутствует время окончания сессии (acctstoptime). То есть, речь идет не о записях текущих сеансов, в которых время окончания естественно отсутствует — по той причине, что сеанс еще не закончен. Речь о записях предыдущих сеансов. В биллинге Easyhotspot, который я использую, наличие таких строк мешает нормальной работе функции принудительного отключения.

Проблема была решена следующим способом:

  1. Был создан набор команд (скрипт) MySQL, удаляющий такие строки.
  2. Был настроен запуск данного скрипта.

Теперь подробнее.

Сам скрипт я создал в папке пользователя root, назвал его clear.sql, и содержимое его выглядит следующим образом:

USE easyhotspot;
DELETE FROM `radacct` WHERE `acctstoptime` IS NULL;

Ничего конгениального в скрипте нет. Первая команда скрипта выбирает базу в сервере MySQL. В используемом мной биллинге Easyhotspot база, с которой работает RADIUS, называется именно easyhotspot. В случае же другого названия базы, нужно всего лишь в первой строке скрипта изменить имя базы, выделенное синим цветом. Вторая команда удаляет из указанной в ней таблицы (radacct), строки, удовлетворяющие условию, а именно те, в которых поле acctstoptime —  пустое (шаблон — ‘ ‘).

Теперь пару слов про запуск. Собственно, чтобы запустить выполнение команд из указанного скрипта, нужно в консоли запустить следующую команду:

mysql -uroot -pпароль_рута < /root/clear.sql

В данной команде, на мой взгляд, все предельно просто и ясно — входим в консоль сервера MySQL и запускаем выполнение скрипта. В приведенной команде нужно лишь указать свой собственный пароль пользователя root для сервера MySQL (выделен синим цветом).

И про автоматизацию запуска. Данную команду имеет смысл выполнять в тот момент, когда у RADIUS-а нет подключенных пользователей.  Первый приходящий на ум вариант — при запуске компьютера. То есть, команду нужно добавить в файл rc.local. Но ведь компьютер может и сутками не выключаться (а как следствие — и не включаться). Тогда можно задействовать другой вариант — добавить ее в расписание (cron). При этом нужно указать время, в которое наименьшая вероятность наличия подключенных пользователей.

Ну и еще про один «вредный» файлик. RADIUS в своей работе создает файл ${logdir}/radutmp в котором хранит информацию о текущих сессиях.  Файл этот «мешать» начинает лишь при выполнении ряда условий. А именно; клиенту разрешен лишь один логин на его пару «имя/пароль», клиент был подключен (авторизован), и в этот момент сервер с RADIUS-ом аварийно выключился. В таком случае RADIUS не удаляет из файла radutmp информацию о сессии клиента, и в итоге клиент после того, как работа системы возобновилась, при попытке авторизоваться получает сообщение, что он уже вошел в систему.

Лечение простое — при  загрузке компьютера просто стереть файл  radutmp. Для этого в файл rc.local достаточно добавить команду:

rm -f /var/log/radius/radutmp

В данном случае команда приведена с учетом расположения файла в дистрибутиве Mandriva. Для других дистрибутивов оно может быть иным. Например, в дистрибутиве Ubuntu файл располагается по адресу /var/log/freeradius/radutmp. При необходимости, откорректируйте путь (выделен синим цветом) в соответствии с расположением файла radutmp в вашем дистрибутиве.

Ну и напоследок, для самых ленивых. Я написал скрипт, который в интерактивном режиме (вопрос-ответ) проделывает установку и настройку всего этого на компьютере. Скрипт запрашивает и пароль root для MySQL и имя базы для RADIUS и время, в которое, если что, запускать чистку базы…