2 декабря 2016 г.

Yeastar TA410 и Asterisk 1.8

Для подключения внешних аналоговых линий к серверу IP телефонии используются специальные шлюзы, одним из которых и является Yeastar TA410. Это шлюз на 4 порта FXO (FXS служат наоборот для подключения аналоговых телефонов абонентов) Есть еще его старший брат Yeastar TA810 в котором уже 8 портов.

Данный шлюз представляет из себя такой же Asterisk сервер с версией 1.6 и веб админка. Подробнее его характеристики есть на сайте ipmatika.ru там же лежит новая прошивка и инструкция на английском.

Производитель рекомендует регистрировать не шлюз на сервере, как например Cisco SPA 3110, а наоборот - сервер регистрируется на шлюзе.

Мне пришлось настраивать связку сервер и шлюз в среде, когда и шлюз и сервер находятся за разными NAT и оба имеют белые IP адреса.

Поддержка ipmatika посоветовала воспользоваться инструкцией на сайте Подключение GSM/CDMA/UMTS шлюзов Yeastar TG100/200/400/800/1600 к Asterisk

Чтобы связать сервер и шлюз необходимо зайти в веб-админку в раздел Шлюз.
Далее необходимо создать VoIP линии. Их может быть три типа:
  • SIP-аккаунт (сервер подключается к шлюзу)
  • VoIP-линия (шлюз подключается к серверу)
  • VoIP-канал
Логично предположить что мы создаем VoIP линию по протоколу SIP на шлюзе и заводим новый аккаунт в sip.conf на сервере, таким образом подключаем шлюз к серверу.  Но такая связка у меня не заработала. Я смог зарегистрироваться со шлюза на своем сервере и принимать входящие звонки, а при исходящих - шлюз упорно искал набираемый номер во внутренних номерах и не хотел набирать его на внешней линии.

Попробовав создать SIP аккаунт на шлюзе для исходящих звонков, так же потерпел фиаско. Сервер писал что статус ОК, а шлюз - что к аккаунту никто не подключен. Ошибок в консоле сервера и шлюза никаких не было(((

Поскольку шлюз - по большому счету такой же сервер Asterisk, то решил попробовать связать их по родному протоколу для связи серверов - IAX2

  1. Пробросил порт 4569 udp на сервер и шлюз
  2. Завел на сервере аккаунт в файле iax.conf
  3. Изменил протокол с SIP на IAX в уже созданном SIP аккаунте и VoIP линии
  4. В секцию [global] файла iax.conf добавил строчку
register => fxo_out:pass@xx.xx.xx.xx,
где хх.хх.хх.хх белый ip шлюза, fxo_out - логин из SIP аккаунта шлюза, а pass - пароль.

После этого делаем iax2 reload на сервере
И смотрим на шлюзе статус линий в разделе Статус-Статус портов FXO

Диалплан на сервере у меня был уже прописан в файле extensions.conf 
Если вы внесли какие-то изменения в него, то не забывайте сделать dialplan reload 

Прежде чем проверять звонки идем в раздел Шлюз - VoIP порт->порт FXO и добавляем там маршрут для звонка. 
  • Источник IAX SIP аккаунт
  • Назначение: Порт FXO
  • Упрощенный режим: Да

Аналогично создаем маршрут в разделе Порт FXO -> VoIP/Порт FXO
  • Источник IAX SIP аккаунт
  • Назначение: Порт FXO
  • Упрощенный режим: Да
  • Горячая линия: номер сервера, на который будет звонить шлюз при входящем звонке с города.
Тут можно указать либо внутренний номер на который принимать звонки, либо номер, который в дальнейшем обрабатывать в extensions.conf, например так

exten => 2085554,1,Dial(SIP/1059&SIP/1050,30,tT)
exten => 2085554,n,HangUp()

Чтобы позвонить через наш транк:
exten => _XXXXXXX,1,Dial(IAX2/voip2fxo:password@xx.xx.xx.xx/${EXTEN})

П.С. не забывайте сделать настройки безопасности для сервера и шлюза, если они смотрят в интернет. Как минимум запретите регистрацию со всех IP кроме доверенных, для этого на шлюзе активируйте функцию Enable IP Restriction (закладка Дополнительно, в настройках SIP-аккаунта) и укажите там IP с которых можно подключаться/ В моем случае здесь только внешний IP моего сервера с маской сети 255.255.255.255.
Для сервера запрет устанавливается в параметре permit в описании аккаунта в файле iax.conf
Только теперь уже указываем белый IP шлюза.
Дополнительно я отбрасываю все пакеты с порта 4569, которые отправлены не с IP шлюза/сервера. 
Так же настоятельно вам рекомендую настроить fail2ban на сервере и проверить не открыт ли доступ к tcp портам 8022, 80 и udp 5060 для кого попало

Note. для доступа к шлюзу по ssh активируйте сервис SSH в разделе Система - Сервисы и используйте для входа 
  • логин root
  • пароль ys123456


7 августа 2012 г.

Beckup сервер на Ubuntu

Развернуть сервер для резервных копий на Ubuntu проще простого.

В Linux среде для этих целей используется программа Rsync, которая входит в стандартную поставку Ubuntu.

Чтобы активировать ее делаем следующее:

/etc/default/rsync
====фрагмент====
RSYNC_ENABLE=true
====фрагмент====

Создаем файл настроек
sudo touch /etc/rsyncd.conf


sudo nano /etc/rsyncd.conf
В файле настройки rsync пишем:



# GLOBAL OPTIONS
pid file=/var/run/rsyncd.pid

#motd file=/etc/motd
#log file=/var/log/rsyncd
# for pid file, do not use /var/run/rsync.pid if
# you are going to run rsync out of the init.d script.
# pid file=/var/run/rsyncd.pid
#syslog facility=daemon
#socket options=

# MODULE OPTIONS
[beckup]
comment = Rsync file storage 2
#куда бекапить
path = /mnt/beckup2/beckup
use chroot = true
log file = /var/log/rsyncd/backups2.log
read only = false
list = yes
uid = psv
gid = psv
strict modes = yes
ignore errors = no
ignore nonreadable = yes
transfer logging = false
timeout = 600
refuse options = checksum dry-run
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

и стратуем сервер

sudo servise rsync start

Все наш сервер запущен и готов принимать данные по протоколу rsync://

6 марта 2012 г.

Asterisk в Ubuntu - команда Dial

В предыдущем посте я писал как настроить связь между внутренними абонентами и мы для этих целей в диалплане использовали команду Dial следующим образом:

exten => 100,1,Dial(SIP/100)

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

[sip_dial]
exten => 101,1,Dial(SIP/101&SIP/102)

При входящем звонке зазвенят телефоны с номерами 101 и 102. Звонок примет тот, кто раньше поднимет рубку. Если второй номер поднимет трубку после, то он НЕ будет слышать разговор абонента 101.

[sip_dial]
exten => 101,1,Dial(SIP/101,10)
exten => 101,2,Dial(SIP/102,10)

При входящем звонке зазвенит телефон у абонента 101. Если он в течении 10 секунд не возьмет трубку, то звонок уйдет на абонента 102.

2 марта 2012 г.

Asterisk в Ubuntu - внутренняя связь

В предыдущем посте я писал как установить сервер VoIP телефонии на Ubuntu/ В этой статье я расскажу как настроить внутренние номера и звонки между ними.

Нам понадобится:
Установленный сервер Asterisk
Программа X-Lite (программный телефон для VoIP телефонии) - 2 шт.

Запускаем mc с правами администратора:

sudo mc

Если mc у вас не установлен, то установите его командой

sudo apt-get install mc

Asterisk устанавливается по умолчанию в папку /etc/asterisk/. Переходим в эту папку и на всякий случай скопируем файлы sip.conf и extensions.conf куда-нибудь, чтобы можно было откатиться в случаи чего.
Открываем для редактирования файл sip.conf выбрав его и нажав F4.
Найдем вначале файла строчку
;allowguest=no
и снимем с нее комментарий. Это нужно чтобы запретить гостевое подключение к серверу. Если этого не сделать можно круто попасть на $$$, особенно если ваш сервер смотрит во внешний мир.

теперь переходим в самый конец файла и дописываем:

[100]
type=friend
secret=pass100
nat=yes
host=dynamic
username=User100
dtmfmode=rfc2833
disallow=all
allow=ulaw
context=sip_dial
callerid=100

[101]
type=friend
secret=pass101
nat=yes
host=dynamic
username=User101
dtmfmode=rfc2833
disallow=all
allow=ulaw
context=sip_dial
callerid=101

Все. Сохраняемся и закрываем файл.

Переходим в консоль asterisk

sudo asterisk -r

и выполняем там команду

show sip users

Если все сделали правильно, то вы должны увидеть таблицу с нашими двумя абонентами.

таким образом мы создали абонентов с номерами 100 и 101

Данные параметры означают следующее:

[100] - имя клиента. Наличие скобок обязательно

type=friend - описывает тип клиента, в нашем случае friend. Вообще существует три типа user – это когда идентификация клиента осуществляется по полю From SIP заголовка, который исходит от клиента. peer – идентификация происходит по адресу хоста с которого осуществляется регистрация. И тот тип, что мы применили friend – это смесь peer и user, идентифкация происходит любым методом(либо адрес хоста, либо юзернейм).

secret – это пароль пользователя.

nat=yes – обозначает, что клиент может находится за натом и для открытия медиаканала при звонке этого пользователя требуется трансляция заголовков. Если будут клиенты не только из локальной сети, то лучше у всех ставить yes

host=dynamic – привязка к адресу хоста клиента отсутствует. Если необходимо чтобы этот клиент подключался только с определенного IP то указываем разрешенный IP

username=User100 – имя пользователя. Этот логин потом используется в настройках сип клиента.

dtmfmode=rfc2833 – метод передачи dtmf – тонов набора номера. Существует еще метод info, должен совпадать с настройками в SIP клиенте.

disallow=all – запрещаем все кодеки
allow=ulaw – разрешаем кодек ulaw, кодек должен быть такой, который поддерживается клиентом. Возможно указать несколько кодеков через запятую.

context=sip-dial – контекст описывает в какой секции диалплана будут обрабатываться звонки клиента

callerid=100 – Ваш номер, который будет высвечиваться у абонентов при исходящем звонке


Клиентов завели, теперь необходимо научить сервер звонить. Для этого открываем для редактирования файл extensions.conf и в конце файла дописываем:

[sip_dial]
exten => 100,1,Dial(SIP/100)
exten => 101,1,Dial(SIP/101)


Не забываем при редактировании оставлять пустую строку в конце файла. Из-за отсутствия символа перевода строки могут появиться ошибки.

Теперь устанавливаем на компьютеры программные телефоны и настраиваем их. Выбираем в меню softphone->Account settings и заполняем:

Account name: 100
User ID: 100
Domain: ip_сервера_asterisk
password: User100
Register with domain and recive calls: галочка
Proxy: галочка
Address: ip_сервера_asterisk

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

24 февраля 2012 г.

Asterisk в Ubuntu - установка

Есть два способа установить сервер Asterisk на Ubuntu

1. Сборка из исходников
2. Установка из репозитория

Первый способ у меня не получился. При попытки скомпилировать DAHDI драйвер выдавались ошибки. Поэтому я пошел вторым путем.

Обновимся перед установкой:

sudo apt-get update
sudo apt-get upgrade


Базовая установка требует:
* - Установку библиотеки LibPRI, которая добавляет поддержку ISDN
* - Установку библиотеки libSS7, которая реализует работу по протоколу SS7
* - Установку DAHDI, обеспечивает интерфейсный уровень между сервером Asterisk с одной стороны, и драйвером интерфейса Daahdi плюс программные эхоподавителели с другой. Драйвера интерфейсов позволяют использовать аппаратные средства (карты) для соединения Asterisk с традиционными аналоговыми или цифровыми телефонными сетями
* - Сам сервер Asterisk.

Ставим следующие пакеты:

sudo apt-get install libri1.4 libss7-1 libss7-dbg libss7-dev dahdi dahdi-dkms dahdi-linux asterisk asterisk-config asterisk-sounds-main

Проверить установлен ли пакет можно командой dpkg -l|grep имя_пакета, например так:

dpkg -l|grep asterisk

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

Если пакеты что-то потянут за собой, то ставьте все зависимости.

После установки в системе появится еще один пользователь asterisk под которым и будет запускаться сам сервер, так же он пропишется в автозагрузку при рестарте.

Перезагружаем сервер

sudo reboot

Пробуем зайти в консоль Asterisk

sudo asterisk -r

Запускать необходимо именно от root иначе вы не подключитесь к консоли и будут ошибки.

В следующей статье опишу как настроить два номера и совершать звонки между ними.

12 декабря 2011 г.

Русские буквы в консоли Ubuntu 11.10 Server

Если установит Ubuntu 11.10 server, то из коробки она вместо русских букв в консоле показывает квадратики. Лечится это так:
В консоле пишем:
sudo dpkg-reconfigure console-setup

В появившемся мастере выбираем:
UTF-8
пятый пункт
16
VGA
на вопрос консоли вводим:
/dev/tty[1-6]

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

sudo nano /etc/rc.local

перед exit0 дописываем:

setupcon

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

3 декабря 2011 г.

SAMBA в Ubuntu 11.10 Server (Общие папки)

Столкнулся с задачей организовать файл сервер.

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

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

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

sudo apt-get install samba samba-common libcups2

Теперь останавливаем SAMBA сервер если он запущен.

sudo /etc/init.d/smbd stop

Создадим общую папку на сервере:

mkdir -p /home/shares/forall
chown -R root:users /home/shares/forall/
chmod -R ug+rwx,o+rx-w /home/shares/forall/


Осталось самое важное - настройка конфига smb.conf

sudo nano /etc/samba/smb.conf

В разделе [GLOBAL] указываем:

# имя рабочей группы
workgroup = WORKGROUP
# адрес сервера имен Windows, чтобы сервер отображался в сетевом окружении
wins support = yes
wins server = 192.168.0.1
#нужно чтобы клиенты на Linux могли подключится к SAMBA
security = user


Найдите далее секцию [homes] и закомментируйте все строчки в ней символом # вначале строки

В конце файла пишем:
[forall]
comment = All Users Shares
path = /home/shares/forall
valid users = @users
force group = users
create mask = 0660
directory mask = 0771
writable = yes

[homes]
comment = Home Directories
browseable = no
valid users = %S
writable = yes
create mask = 0700
directory mask = 0700


Все. Нажимаем Ctrl+O чтобы сохранить изменения. Enter чтобы подтвердить и Ctrl+X чтобы выйти.

Теперь необходимо еще проверить входит ли ваш пользователь в группу users и добавить остальных пользователей.

Чтобы проверить в какие группы входит наш пользователь вводим:

sudo id my_login

где my_login ваш логин в системе.
Если в списке групп нет группы users, то добавим себя в нее

sudo usermod -a -G ftp my_login

Теперь добавим еще одного пользователя ivan в систему

sudo useradd ivan -m -G users

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

sudo passwd ivan

Осталось создать пароли пользователей для Samba:

sudo smbpasswd -a my_login

и для созданного пользователя:

sudo smbpasswd -a ivan

Пароль должен отличаться от пароль пользователя в системе.
Ну и перезапускаем Samba сервер:

sudo /etc/init.d/smbd restart

На этом все закончилось.
В windows переходим по адресу:
\\ip_сервера\ или сразу в общую папку \\ip_сервера\forall
В качестве логина и пароля указываем либо своего, либо созданного пользователя.

26 мая 2011 г.

Skype не работает или Как починить скайп

Сегодня 26 мая 2011 года по всему миру перестал работать скайп. Вроде еще как-то работает на Android и MacOS. Пользователи Windows и Linux не могут запустить Skype. Сайт http://www.skype.com работает нестабильно. Вот что там написано в те редкие разы когда все же удается пробиться к ним:

Skype engineers are working on the problem, the company said. But the fix may take “a few hours,” and advanced features like video calling might not be available until after that.



So what went wrong? The company says the problem has to do with its “supernodes” — a crucial part of its peer-to-peer networking system. Almost any computer in the network can be a Skype supernode, and these act like directories for the service, telling Skype things like who is online. Skype says a problem with some versions of Skype took a bunch of supernodes down, meaning that people weren’t able to log on as normal.


Если у вас все работает, то попросите кого-нибудь из друзей отправить вам файл или позвонить.

Пока найдено следующее решение.

под W7 заставить работать можно удалив файл
shared.xml из папки C:\Users\%username%\AppData\Roaming\Skype

Или, если XP, то удалив его тут: C:\Documents and Settings\%username%\Application Data\Skype

Для Linux
rm ~/.Skype/shared.xml

Для MacOS
rm ~/Library/Application\ Support/Skype/shared.xml

10 мая 2011 г.

Раздаем интернет в офисе или 3proxy Часть третья "SOCKS и FTP"

Если вы читали мои предыдущие посты, то это значит что у Вас уже есть рабочий HTTP прокси сервер и сейчас мы к нему добавим SOCKS и FTP чтобы наши пользователи могли ходить в интернет через шифрованный канал и имели доступ по протоколу передачи файлов (FTP - File Transfer Protocol).

Делается это очень просто. Добавьте в файл 3proxy.cfg строки

socks -p1080
ftppr -p2121

Таким образом мы запустили SOKCKS на порту 1080, а фтп на порту 2121

П.С. Если кому что не понятно - спрашивайте в комментах, постараюсь помочь.

8 мая 2011 г.

PHP автоматическая конвертация в UTF-8 с автоопределением кодировки

Часто спрашивают как избавится от крякозябель, иероглифов, ромбиков и знаков вопросов вместо текста.
Меня всегда выручала эта функция на PHP которая переводит в UTF-8 кодировку любой текст, причем исходная кодировка определяется автоматически. Пользуйтесь. Может кому тоже будет полезна.


mb_convert_encoding ($str, "UTF-8", mb_detect_encoding($str));

6 апреля 2011 г.

Раздаем интернет в офисе или 3proxy Часть первая "Инсталляция"

Задача:
В офис заходит витая пара с 2мбит'ным инетом. Необходимо его раздать на 10 машин. Так же хочется иметь возможность считать трафик по пользователям, устанавливать им лимиты, ограничивать скорость, трафик, запрещать некоторые сайты. Все компьютеры объединены в локальную сеть. Есть сервер с двумя сетевыми картами.
Все это можно сделать разрешив использовать подключение к интернету для всех (расшарить подключение по локальной сети которое идет к провайдеру). Делается это следующим образом в WinXP выбираем Пуск-Сетевое окружение. В правой части окна нажимаем Отобразить сетевые подключения. Выбираем подключение, которое идет к провайдеру и нажимаем на нем правую клавишу мыши - Свойства. Переходим на закладку Дополнительно и отмечаем галочкой пункт Разрешить другим пользователям сети использовать подключение к Интернету данного компьютера. Все.
Из минусов - интернет мы конечно всем дали, но вот о никаком контроле и ограничении пользователей речи быть не может.
Чтобы получить все плюшки, необходим прокси-сервер. Их существует великое множество (Squid, UserGate, CCProxy, 3Proxy). Все без проблем находятся поисковиком. Рассмотрим их немножко поподробнее:
Squid - проект с открытыми исходниками, и бесплатный. Имеет версии под Windows и Linux. Позволяет очень гибко контролировать и управлять каналом в интернет. Из минусов - сложен в настройке,  как и большинство программ портированных с Linux. Все делается через конфигурационные файлы и об интерфейсе вам придется тут забыть. Все ручками.

UserGate - уже платное решение, но с удобным интерфейсом и не менее богатыми настройками чем вышеописанный прокси. Я не стал его даже устанавливать по той лишь причине что планируется перевод сервера на Linux и нет желания разбираться потом в другой программе и платить за него, зная что потом снесу тоже не хочется.

CCProxy - идеальное решение, если вы не имеете опыта администрирования и настройки прокси. Все удобно и понятно, но возможностей мало, бесплатен только если им пользуется менее 10 клиентов и работает только под Windows

3proxy - это то что нужно!!! Маленький (несколько килобайт), кросплатформенный, позволяет гибко управлять каналом, бесплатный, открыты исходники. Из минусов нет графического интерфейса для настройки, но это компенсируется тем, что все настройки делаются в одном файле, причем очень логично и не запутанно как в том же SQUID.  Автор из России и с удовольствием помогает в официальном форуме программы.
Выбор очевиден.

Под сервер взят старенький комп в Windows XP. Решение не самое лучшее, но пока пойдет.
Итак:
  1. Идем на сайт http://www.3proxy.ru и скачиваем последнюю версию. Так же советую прочитать How-To(На русском) на сайте программы и многие вопросы отпадут сами собой.
  2. Распаковываем скачанный архив в каталог например c:\3proxy
  3. Создаем в каталоге файл c:\3proxy\3proxy.cfg. Это файл конфигурации прокси. Теперь настроить наш прокси-сервер. 
Открываем файл в блокноте и пишем следующие строчки:
monitor "с:\3proxy\bin\3proxy.cfg"
Это чтобы в будущем изменения в настройках применялись сразу после сохранения файла конфигурации

internal 192.168.0.1
external 82.209.xx.xx

где после internal идет ip сервера в локальной сети, а после external ip выданный провайдером.
 Теперь укажем DNS сервера. Я использую сервера, которые бесплатно предоставляет Google. Вы можете использовать их же или указать сервера своего провайдера, тогда придется заменить 8.8.8.8 на первичный DNS сервер провайдера, а 8.8.4.4 на вторичный соответственно
nserver 8.8.8.8
nserver 8.8.4.4



укажем размер DNS кэша
nscache 1152000
и разрешим кэширование DNS
dnspr

Чтобы иметь статистику по пользователям скажем серверу чтобы вел логи по дням и хранил только последние 30 шт. Чтобы было проще потом их анализировать укажем формат записи логов такой же как использует прокси-сервер SQUID. Это даст нам возможность использовать любой лог-анализатор, который работает с squid
logformat "L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I %O %N/%R:%r"
log С:\3proxy\logs\3proxy.log D
rotate 30


Теперь об авторизации на прокси. 3Proxy позволяет авторизовать клиентов по ip, логину/паролю или через Домен Windows (только для сервера на Windows). Мы будем использовать первый вариант.
allow * 192.168.0.1
allow * 192.168.0.10
allow * 192.168.0.11
allow * 192.168.0.12

deny *

Вместо ip указываем ip своих машин которым нужен интернет и последней строчкой запрещаем интерет всем, кто не прошел авторизацию.

Если вы хотите ограничить объем потребляемого трафика и иметь on-line статистику по количеству потребляемого трафика клиентами, то добавим следующие строчки:
counter "С:\3proxy\3proxy.3cf" D "С:\3proxy\traf\traf"
здесь мы создаем счетчики
countin "1/Server" M 50000 * 192.168.0.1 * * *
countin "2/User" M 900000 * 192.168.0.10 * * *
countin "3/User2" M 900000 * 192.168.0.11 * * *
countin "4/User3" M 900000 * 192.168.0.12 * * *

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

Указываем что мы используем авторизацию по ip

auth iponly
и запускаем прокси на порту 3128
proxy -p3128 -n -t
Почти все. Еще немного и будем проверять, но прежде еще укажем настройки админки
admin -p8080
Запускаем админку на порту 8080. Я сознательно пропускаю авторизацию для админки, сейчас в нее может попасть любой. После того как настройка будет закончена и все заработает позаботьтесь об авторизации сами или удалите вообще эти строки.
Сохраняемся и закрываем файл.
       4. Открываем командную строку. Пуск-Выполнить пишем cmd и Ок.
       5. С трепетом в душе запускаем наш прокси командой.
c:\3proxy\3proxy.exe c:\3proxy\3proxy.cfg
Если вы сделали что-то неправильно в конфигурационном файле, то программа вам сообщит ошибку и номер строки.
       6. Запускаем браузер и в его настройках устанавливаем галочку использовать прокси-сервер и указываем ip и порт. По моим конфигам это 192.168.0.1 и 3128 соответственно. Если вы что-то меняли, то подставьте свое.
       7. Проверяем работу сервера пробуя перейти на любой сайт. сли сайт открылся все ок.
       8. Идем в папку c:\3proxy\log  и смотрим лог файл. Там должны появится записи о посещении нами веб сайта.
Перейдя по адресу http://192.168.0.1:8080 мы попадаем в админку, в которой можно посмотреть счетчики трафика, содержимое конфига и запущенные службы.

       9. Если все работает устанавливаем 3proxy как сервис Windows и забываем про него. Для этого в командной строке пишем:
C:\3proxy\3proxy.exe --install
       10. Перезагружаем компьютер и идем настраивать браузеры клиентов.

В следующих частях я научу вас ограничивать скорость пользователям, мы запустим SOKS5 сервер, научимся пользоваться портмапингом, почтой за проксей, поднием ftp прокси и установим анализатор логов.

2 апреля 2011 г.

Как быстро установить ОС+Софт на одинаковые системники

Любой сис.админ (а именно этим я сейчас и зарабатываю) часто сталкивается с такой проблемой.
Начальство все-таки разорилось и закупило несколько новых системников для своего офиса. Вам, по должностным обязанностям необходимо установить и настроить на них весь софт и установить их на рабочие места.
Устанавливать ОС, софт, производить настройку системы повторяя одно и тоже от компьютера к компьютеру бесит неимоверно. Вроде особо не напрягаешься, но в тоже время и отойти от них на долго не можешь. А если надо обновить еще несколько программы через интернет (привет Касперский с его огромными базами и Windows Update). У мня например свежая Windows 7 захотела еще обновлений на 600 Мб. И так можно продолжать еще долго...
 Есть несколько способов установить ОС и софт почти в автоматическом режиме:

  1. Использовать установку по сети в сочетании с автоматической установкой программ
  2. Создать образ  диска одного компьютера сразу после всех установок и настроек и клонировать его.
Первый вариант я отмел по двум причинам:
  • Мне пришлось все равно обновлять систему и тащить лишнее 600Мб для каждой машины, а этого делать не хотелось.
  • Для автоматической установки программ потребовалось бы написать скрипт, а это опять время, сэкономить которое и есть сия цель
  •  Этот вариант требует DHCP сервер, который почему-то не захотел работать в моей сети (возможно конфликт с уже существующим и реально работающим DHCP сервером).
Поэтому был выбран второй вариант, с созданием образа свеженькой системы и клонированием его на остальные машины (благо конфигурация у всех одинаковая).
Итак запустив установку Windows на первый компьютер с LiveCD я отправился искать бесплатную программу для клонирования жесткого диска. После просмотра программ из первой десятки выдачи гугла я остановился на CloneZilla.
CloneZilla - это созданный на основе ядра  Linux загрузочный диск, который умеет создавать образ выбранного диска или просто клонировать винчестер. Плюсом является то, что возможно писать образ на USB винт или флешку, по протоколу SAMBA (Общие папки windows), NFS (Общие папки Linux).
C официального сайта можно скачать как версию для LiveCD так и программу, которая создаст LiveUSB. Мне лично о душе второй вариант.

Поскольку в моей сети уже работал файловый сервер на 2Тб, то я заливал образ именно на него. Настройки вполне логичные: указать ip машины и файлового сервера, удаленную папку для образа ну и всякие маски, шлюзы.

Сделав клон свеженькой установленной и настроенной операционной системы (даже диски разбивать вручную не надо, если клонировать полностью диск) я приступил к установке Windows на остальные машины. Подключил их все к свитчу, загрузил по очереди с флешки и показал откуда брать образ для раскатки на диске. Примерно 10-15 минут ожидания и у меня уже готовый парк машин для дальнейшей установки по рабочим местам.

П.С. Кто-то скажет что проще было-бы установить из сети, но во-первых у меня это не получилось из-за проблем с DHCP и второе, когда понадобится быстро переустановить ОС на одном из этих ПК, то это не займет у вам больше 10-15 минут. Я оценил это, когда комп передавался от одного сотрудника другому и надо было все почистить от старого.



27 ноября 2010 г.

Посоветуйте движок для фотоблога часть 2

Поиски CMS для фотоблога (см. первую часть) так ни к чему хорошему и не привели, поэтому решил разработать собственную систему управления фотоблогом. Вот требования к функционалу:
  1. Минимум навыков для оформления шаблона страниц блога
  2. Автоматический ресайз загружаемых фото
  3. Галерея для просмотра фото на Java Script
  4. Облако тэгов
  5. Распределение фото по альбомам
  6. Просмотр выбранных альбомов
  7. Список последних загруженных фото
  8. Возможность оставить комментарий под фото
  9. Показ данных EXIF в случае их наличия в файле
  10. Защита комментариев от спама с помощью каптчи
  11. Возможность предварительной модерации комментариев перед публикацией их в блоге
  12. Нанесение логотипа на фотки
  13. RSS ленты для фото, комментариев, отдельных альбомов, комментариев к отдельным альбомам, комментариев к выбранным фотографиям
В перспективе:
  1. Ипорт изображений из Picasa, Flickr, ВКонтакте, FaceBook
  2. Элементарные операции по коррекции фоток
Кому интересна данная тема и кто хотел бы попробовать мою CMS пишите комменты, бета-тестеры будут нужны

П.С. На данный момент выполнены пункты 1-7, 9(работает пока не очень стабильно), 12

7 ноября 2010 г.

Посоветуйте движок для фотоблога

В качестве оригинального подарка для своей девушки решил создать для нее личный(ее) фотоблог.

Почему не подходят готовые площадки для блогов:
1.Использовать готовую площадку типа ЖЖ и ей подобным невозможно, поскольку сайт будет на собственном домене и хостинге (в ЖЖ возможность привязки домена платная, насколько я понимаю)
2.Многие хотят повесить мне свою рекламу - я против. Может сам решу на пиво заработать, повесив Яндекс.Директ или Адсенс
3.Очень скудные возможности по поводу редактирования шаблона. Нет возможности сделать "все по другому".

Из плюсов: - не надо парится по поводу необходимого размера и нагрузки на хостинг. А в случае работы с фото - это очень важно.

Вывод: использовать CMS

Требования к CMS:
1.Маленькая и удобная
2.Обязательно на Русском языке (чтобы ей было все понятно и меня лишний раз не дергали)
3.Удобный шаблонизатор. Переделка верстки в шаблон CMS должна быть очень простой.
4.Наличие таких модулей как: тэги, галерея, последнии 5 постов, возможность сжимать загружаемые картинки и модуль чтения и отображения EXIF данных фото.

Joomla, Drupal - не подошли из-за своей громоздкости.
ModX - почти то что надо, но многое надо допиливать.
Pixelpost (pixelpost.org) - почти то что надо, но не понятно как создать свою тему, документации по этому поводу в рунете точно нет. Если бы к нему еще и русский интерфейс...

В общем кто что еще посоветует??? Пока остановлюсь на Pixelpost.org

31 октября 2010 г.

В Gmail появилась папка "Приоритетные"

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

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

10 октября 2010 г.

Логотип сайта на картинках

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

Нам понадобится:
1. Библиотека GD2 (благо почти га всех хостингах она есть).
2. Файл с самим логотипом logo.png (не забудьте сделать фон прозрачным)

Собственно код:
$uploaddir="../pic/"; //путь до каталога с картинками
$file_name="pic.jpg"; //имя файла с картинкой
$logo_h = getimagesize("logo.png");
//$logo_h = getimagesize(imagettftext("text")); 
//если надо писать текст
$pic_h = getimagesize($uploaddir.$file_name);

$logo = imagecreatefrompng  ("znak.png");
//$logo = imagettftext("text");
$pic = imagecreatefromjpeg ($uploaddir.$file_name);

//вычисляем координаты для размещения логотипа на картинке
imagecopy ($pic, $logo,
$pic_h[0] - $logo_h[0],
$pic_h[1] - $logo_h[1],
0,0,
$logo_h[0],
$logo_h[1]);

//сохраняем картинку с логотипом
imagejpeg ($pic, $uploaddir."new_".$file_name, "100");

//убиваем переменные
imagedestroy ($logo);
imagedestroy ($pic);
Готовые картинки сохраняются в том же каталоге, но с препиской new_ в начале имени файла.

Данный код следует вставить перед загрузкой картинок и проверять. Если файла new_ нет, то запускаем этот код и генерируем картинку, иначе грузим из кэша. Проверить существование файла можно функцией:
is_file("pic.jpg");
Или же рисуем логотип при закачке файла на сервер, но тогда надо добавить код, удаляющий оригинал. Например так:
unlink("pic.jpg");

28 августа 2010 г.

PHP Как получить дату и время которая будет

Если с тем как получить текущую дату и время проблем не возникает ни у кого. Например сделав это так:
date("Y-m-d H:i:s");
То вот чтобы узнать время через N секунд, минут или дней у некоторых возникает проблема. Как решаю это я.
date("Y-m-d H:i:s", mktime(date("H"), date("i")+15, date("s"), date("m"), date("d"), date("y")));
Прибавляя необходимое число дней, секунд или(и) минут мы сформируем заданную дату.
H - это часы
i - минуты
s - секунды
m - месяц
d - число
y - год

В примере выше я получаю метку времени через 15 минут. Вот так, очень просто, получить время через N секунд, минут, дней.

19 августа 2010 г.

Хвала Google Docs

Как же удобно оказывается вести документацию по проектам в Google Docs!!! Пять минут назад из-за скачка напряжения вырубился комп. В это время я заполнял большую и сложную таблицу. Загрузил комп, открыл Firefox и вот передо мной снова мой документ, правда последняя редактируемая ячейка оказалось пустой, но не вся таблица же)))
+1 корпорации добра)))