Reborn

And from the ashes the Phoenix rose reborn
  • Начало
  • About

Mail for Exchange винаги на линия при USB мрежа с Nokia N900

Владимир | 03/21/2011

Една от хубавите страни на Nokia N900, е че е отворена платформа и можете да правите каквото ви хрумне с него (стига да не се страхувате че може да направите беля).
С тази играчка имате възможност да използвате поща. Поддържаните възможности са доста сериозни. Поддържат се някои доста известни доставчици на услугата (GMail, 3Mail, AOL др.), също така imap, pop3 (включително вариантите защитени със SSL) и Mail for Exchange (MfE). Лично аз съм голям противник на Exchange, но понякога човек просто няма избор (т.е. фирмата задължава). За удобство съм си го закачил на играчката (поради спецификата на работата ми).
За голямо мое неудоволствие се оказа че нямам кой знае колко настройки за честота на обновяване на иформацията. Е не че няма, но не ми бяха удобни.

Като възможности имаме избор между:

  • Винаги на линия
  • Всеки 15/30 мин
  • Всеки 1/4/6/12 часа
  • Ръчно

Да удобно е но, но не взима под внимание на каква мрежа сме закачени. Ако сме закачени на Wi-Fi подходяща е проверка на 30 мин (за да пестим батерия), ако сме на GPRS е подходяща проверка на 1 час (за да пестим трафик), но ако пък сме закачени посредством USB мрежа не ни притеснява нищо от това така че защо да не сме винаги на линия.

За наше щастие както казах и по горе това е отворена платформа и няма защо да се бъгясваме ами може да си го допишем (ако знаем как). Оказва се че модификацията която искаме хич не е тежка (даже доста лека бих казал).

Инфраструктурна информация

Устройството използва gconf за съхраняване на настройките си а gconf е доста гъвкав и всички необходими инструменти за неговата манипулации са на лице.
За да променим настройка в gconf ни е необходимо да знаем една доста малка част от командите/възможностите му.

/home/user # gconftool-2 --help-client
Usage:
  gconftool-2 [OPTION...] - Tool to manipulate a GConf configuration

Client options
  -s, --set                                      Set a key to a value and sync. Use with --type.
  -g, --get                                      Print the value of a key to standard output.
  -u, --unset                                    Unset the keys on the command line

/home/user # gconftool-2 --help-key-type
Usage:
  gconftool-2 [OPTION...] - Tool to manipulate a GConf configuration

Key type options
  -t, --type=int|bool|float|string|list|pair     Specify the type of the value being set, or the type of the value a schema describes. Unique abbreviations OK.
  -T, --get-type                                 Print the data type of a key to standard output.

Забележка: Изхода от командите е поорязан малко

План за действие

За да изпълним нашата задача ще създадем малък скрипт който да се изпълнява при включване в режим PC Suite, който да променя режима на синхронизация на винаги на линия. Скриптът ни ще запазва старите стойности за да може при изключване да ги възстановим.
Съответно ще напишем и скрипт който при изключване ще възстановява старите стойности.
Ще се възползване от предишаната статия за модулно изпълнение на скриптове при включване/изключване на PC Suite режима.

Скрипт за промяна на режима на синхронизация при включване на PC Suite

Създаваме си нов скрипт в директорията /etc/pcsuite/enable чиято цел е да промени настройките на нашите ActiveSync пощенски кутии (Exchange/Gmail) на винаги на линия.

01-set-activesync-allways-online.sh

# Set peak schedule to Always online on USB networking (PC Suite enable)

LOCAL_AS_ACCOUNTS=`gconftool-2 --all-dirs /apps/activesync`

for ACC in $LOCAL_AS_ACCOUNTS ; do
	# get original sync time (PEAK)
	mkdir -p /tmp/$ACC
	touch /tmp/$ACC/peak_schedule
	gconftool-2 -g $ACC/schedule/peak_schedule > /tmp/$ACC/peak_schedule
	gconftool-2 -g $ACC/schedule/current_schedule > /tmp/$ACC/current_schedule
	# Now set schedule to online
	gconftool-2 -s --type=int $ACC/schedule/peak_schedule -- 0
	gconftool-2 -s --type=int $ACC/schedule/current_schedule -- 0
	# Inc the change counter
	COUNTER=`gconftool-2 -g $ACC/params_change_id`
	#echo "COUNTER=$COUNTER" >> /tmp/counter
	#echo $(($COUNTER+1)) >> /tmp/counter
	gconftool-2 -s --type=int $ACC/params_change_id -- $(($COUNTER+1))
done

На 3ти ред получваме списък със всичките наши ActiveSync кутии/акаунти. След това за всяка една от тях създаваме уникално място в което да съхраним оригиналната настройка и я запазваме (gconftool-2 -g …). И накрая настройваме променливата peak_schedule на 0 което се превеждакато винаги на линия. Допълнително след малко опити и грешки се установи че трябва също така да настроим и променливата current_schedule, както и да увеличим брояча на промените в конфигурацията. Без тези две настройки поведението на клиента не е особенно надеждно.

Скрипт за промяна на режима на синхронизация при изключване на PC Suite

Спирането на PC Suite режима реално е изваждането на USB кабела.
Създаваме си нов скрипт в директорията /etc/pcsuite/disable чиято цел е да промени настройките на нашите ActiveSync пощенски кутии (Exchange/Gmail) на оригиналните които сме запомнили при включването в PC Suite режим.

98-restore-activesync-schedule.sh

# Set peak schedule to Always online on USB networking (PC Suite enable)

LOCAL_AS_ACCOUNTS=`gconftool-2 --all-dirs /apps/activesync`

for ACC in $LOCAL_AS_ACCOUNTS ; do
	# get original sync time (PEAK)
	LOCAL_ORIG_TIME=`cat /tmp/$ACC/peak_schedule`
	if [ "x$LOCAL_ORIG_TIME" == "x" ] ; then
		LOCAL_ORIG_TIME=60
	fi
	LOCAL_ORIG_CURR_SCHED=`cat /tmp/$ACC/current_schedule`
	if [ "x$LOCAL_ORIG_CURR_SCHED" == "x" ] ; then
		LOCAL_ORIG_CURR_SCHED=60
	fi
	# Now set original schedule
	gconftool-2 -s --type=int $ACC/schedule/peak_schedule -- $LOCAL_ORIG_TIME
	gconftool-2 -s --type=int $ACC/schedule/current_schedule -- $LOCAL_ORIG_CURR_SCHED
	# Inc the change counter
	COUNTER=`gconftool-2 -g $ACC/params_change_id`
	#echo "COUNTER=$COUNTER" >> /tmp/counter
	#echo $(($COUNTER+1)) >> /tmp/counter
	gconftool-2 -s --type=int $ACC/params_change_id -- $(($COUNTER+1))
	# And cleanup the crap
	rm -rf /tmp/$ACC
done

Тук по същият начин получаваме списък с акаунти и за всеки един от тях възстановяваме старите стойности. Ако по някаква случайност нямаме стара стойност избираме среден вариант със стойност от 1 час. И най-накрая разчистваме записаната настройка. Разбира се не трябва да забравяме да променим и брояча за промени на стойностите.

Заключение

Е с малко работа/играчка успяхме да обучим пощенският ни клиент да преминава автоматично в режим Винаги на Линия когато използваме USB мрежа (благодарение на PC Suite режима). По този начин ще сте винаги информирани какво се случва с вашата поща (а дали това е желателно си е чисто ваш проблем :P)

История:

  • Първа версия: 21.03.2011
  • Допълнителни променливи: 26.04.2011
Коментари
Няма коментари »
Категории
Статии
Tags
MfE, n900, nokia, pcsuite
RSS коментари RSS коментари
Trackback Trackback

Модулна система за действия в PC Suite режим при Nokia N900

Владимир | 03/20/2011

Както знаете а може би не знаете аз съм горд собственик на Nokia N900 и даже съм понаписал няколко статии за това устройство. Една от първите причини да си закупя тази играчка беше, че е нещо доста повече от телефон. По-скоро се класира като таблет който даже има и телефон в него. Първата сериозна модификация която му направих беше да го науча да използва USB за интернет което си е голяма благинка. Хем играчката има интернет, хем се и зарежда :).
Както съм описал в статията налага се да се попипне тук там за да може да се вдигне мрежов интерфейс на се осигурят рутинг и други дреболийки.
С оглед на бъдещето реших да модифицирам две парчета от решението, за да може в бъдеще по-лесно и по-логически да добавям нови функционалности.

Идеята

Всички знаем че монолитните парчета код не че пречат, но са трудни за управление и търсене на проблеми. Ако си изградим модулна система за изпълняване на парчета код ще имаме по лесен начин за добавяне/премахване на функционалност и като следствие от това по-лесно управление на устройството.
Днес ще модифицираме кода в /usr/sbin/pcsuite-enable.sh и /usr/sbin/pcsuite-disable.sh за да може да изпълнява множество скриптове.
Идеята за реализацията идва от начина по който стандартните командни обвивки в Linux зареждат променливи при стартиране.

Реализация – pcsuite-enable.sh

В оригиналната статия имаме следното парче код

При избиране на PC-Suite mode от менюто при включване се изпълнява скрипта /usr/sbin/pcsuite-enable.sh. За да активираме автоматично интерфейса трябва да добавим в края му необходимите ни команди. Намерете секцията:

kill -USR1 $SYNCD_PID
logger "$0: sent SIGUSR1 to syncd"

exit 0

и я заменете с:

kill -USR1 $SYNCD_PID
logger "$0: sent SIGUSR1 to syncd"
ifup usb0
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
echo "nameserver 8.8.4.4" >> /etc/resolv.conf

exit 0

Вместо да пишем директно във файла там ще добавим малък цикъл който да проверява на друго място дали има файлове и да ги включва в кода автоматично. Също така и ще оправим един малък бъг. Както забелязвате от кода мрежата се стартира след като демонът за синхронизация е информиран, че се е случило нещо. Следствието от това е, че демонът няма мрежа и не изпълнява синхронизация. Нашето парче код ще бъде преместено над него за да може да си свършим цялата работа и да имаме мрежа когато демонът е информиран.

Новият ни код изглежда по следният начин

## Modular actions on PCSuite Enable
if [ -d /etc/pcsuite/enable ]; then
  for i in /etc/pcsuite/enable/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi
## Modular actions end

exit 0

Какво прави това парче код

Проверява дали съществува директория /etc/pcsuite/enable и за всеки файл в нея който има разширение *.sh ако може да бъде прочетен го включва в скрипта.

Съответно за да възстановим старата функционалност в директорията /etc/pcsuite/enable създаваме 2 файла

/etc/pcsuite/enable # ls -l
-rw-r–r– 1 root root 160 Mar 20 12:07 00-bring-usb-network-up.sh
-rw-r–r– 1 root root 103 Mar 20 12:17 99-invoke-syncd.sh

Със следното съдържание
00-bring-usb-network-up.sh

# Bring up USB networking so device can leech net from PC

ifup usb0
echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "nameserver 8.8.4.4" >> /etc/resolv.conf

99-invoke-syncd.sh

# Restore removed func from pcsuite-enable.sh
kill -USR1 $SYNCD_PID
logger "$0: sent SIGUSR1 to syncd"

Избрали сме да използване цифрови префикси за по лесно подреждане на модификациите. Може да се окаже че някоя модификация изисква други модификации да са свършили преди нея и по този начин най-лесно постигаме това.

Реализация – pcsuite-disable.sh

В оригиналната статия имаме следното парче код

При изваждане на USB кабела автоматично се изпълнява скрипта /usr/sbin/pcsuite-disable.sh където и ще добавим нашите инструкции за автоматично спиране на интерфейса.
Намерете секцията:

logger "$0: do nothing to pass USB certs"

exit 0

и я заменете с:

logger "$0: do nothing to pass USB certs"
ifdown usb0
echo "nameserver 127.0.0.1" > /etc/resolv.conf

exit 0

Това парче ще модифицираме по аналогичен начин

logger "$0: do nothing to pass USB certs"

## Modular actions on PCSuite Disable
if [ -d /etc/pcsuite/disable ]; then
  for i in /etc/pcsuite/disable/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi
## Modular actions end

exit 0

Какво прави това парче код

Проверява дали съществува директория /etc/pcsuite/disable и за всеки файл в нея който има разширение *.sh ако може да бъде прочетен го включва в скрипта.

Съответно за да възстанивим старата функционалност създаваме файла 99-bring-usb-network-down.sh със следното съдържание
99-bring-usb-network-down.sh

# Bring down and cleanup USB networking

ifdown usb0
echo "nameserver 127.0.0.1" > /etc/resolv.conf

В заключение

По този прост начин си сътворихме система за модулно, и до известна степен със зависимости изпълнение на модификации. Освен това получихме лесен начин за управление на модификациите. АКо нещо не нии трябва просто го махнете от директорията или го преименувайте примерно на *.sh.inactive
Е надявам се да ви е било полезно

Коментари
2 Коментара »
Категории
Статии
Tags
modularity, n900, nokia, pcsuite
RSS коментари RSS коментари
Trackback Trackback

To cache or not to cache … that’s a stupid question

Владимир | 02/09/2011

След едно случайно заиграване покрай http://neo2shyalien.eu/2011/01/28/eaccelerator.html и великият facepalm момент си поставих задачката аджеба да видим колко производителност се печели от използването на Opcode Caching при PHP.

Речено сторено.

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

Коментари
11 Коментара »
Категории
Статии
Tags
apc, debian, eaccelerator, lighttpd, nginx, performance, php, xcache
RSS коментари RSS коментари
Trackback Trackback

Сигурно електронно банкиране с Firefox и Linux

Владимир | 12/11/2010

Нека да ви запозная с Гошо. Гогата е млад, активно работещ и интересуващ се от новите технологии и удобства. Въпреки всичко това той все още извършва своите банкови задачи като ходи на крака до някой клон и изпраща необходимите плащания по старият начин. Това става все по неудобно тъй като му се налага все по-често и по-често. А в банките се чака на опашки, работят до 16:00 и като цяло преживяването е неприятно. Той решава, че ще използва електронното банкиране което предлага неговата банка, но понеже чете SecurityFocus, Slashdot и други подобни сайтове за новини решава да се подсигури доста сериозно.
Крайното решение на което се спира е да извършва своите банкови операции с помощта на Firefox и Linux.

Решението до което този наш въображаем приятел Гогата би стигнал може да намерите по-долу.
Прочети останалата част от поста »

Коментари
7 Коментара »
Категории
Статии
Tags
banking, firefox, secure, банкиране, сигурност
RSS коментари RSS коментари
Trackback Trackback

Multiple courier-imap-ssl instances on single machine

Владимир | 10/25/2010

Днес ще покажем как да си сглобим сървър за поща на който ще работят няколко инстанции на Courier. Интересното в случая ще е че на всяка от инстанциите ще има различен SSL сертификат. По този начин на една реална физическа машина ще хостваме няколко напълно легитимни мейл сървъра със техните си отделни сертификати.

Процедурата е пределно проста.
Първо трябва да си инсталираме необходимият софтуер. Аз лично съм привърженик на Debian и него си слагам

apt-get install postfix courier-imap-ssl sasl2-bin libsasl2-modules courier-pop-ssl ca-certificates

Е postfix-a не ни е нужен точно за това изпълнение но помага да го имаме. При изпълняването на горната команда ще бъдат инсталирани няколко допълнителни пакета включително courier-authlib.
След като приключи инсталацията трябва да спрем стартирането на цялата система courier с изключение на демона за аутентификация. Той ще остане единственото недублирано нещо.
Да приемем че имаме следният набор от мрежови настройки:

IP1: 10.199.199.201
IP2: 10.199.199.202
Mask: 255.255.255.0

Да осъзнавам факта че това не са публични адреси но ако не можете да си смените два адреса на няколко места … не знам защо изобщо четете това.
Следващата ни стъпка е да направим по две копия на конфигурациите на courier и стртиращите скриптове. В крайна сметка получаваме следна структура:

/etc/
/etc/courier/
/etc/courier-201/
/etc/courier-202/
/etc/init.d/courier-imap
/etc/init.d/courier-imap-201
/etc/init.d/courier-imap-202
/etc/init.d/courier-imap-ssl
/etc/init.d/courier-imap-ssl-201
/etc/init.d/courier-imap-ssl-202
/etc/init.d/courier-pop
/etc/init.d/courier-pop-201
/etc/init.d/courier-pop-202
/etc/init.d/courier-pop-ssl
/etc/init.d/courier-pop-ssl-201
/etc/init.d/courier-pop-ssl-202

Както се вижда структурата сме организирали по последният октет на IP адреса на който ще закачим инстанцията на куриер-а.

Следващата стъпка е да редактираме скриптовете за стартиране да сочат към правилната директория с конфигурации. Тоест трябва да редактираме всеки един от скриптовете с имена *-201, *-202 и да променим стойността на sysconfdir. По подразбиране тя е /etc/courier а трябва да стане съответно /etc/courier-201 и /etc/courier-202.

След като вече сме насочили скриптовете за стартиране към правилните директории е време да променим самите конфигурации. Поради факта че искаме да използваме SSL се налага всяка инстанция да е на отделен адрес. И понеже така и така имаме няколко адреса нека да преместим и неподсигурените връзки на същите адреси.

В конфигурационните файлове трябва да се променят следните опции

ADDRESS – от 0 да стане на конкретният IP адрес който сме заплюли (201,202)
SSLADDRESS – същото като по горе
PIDFILE – към зададеният път да добавим последният октет. Т.е. от imapd.pid да стане imapd-201.pid
SSLPIDFILE – аналогично на горното
TLSCERTFILE – дали ще е самоподписан или ще си е нормален това е ваш избор.

Е остана само да включите новосъздадените ни скриптове за стартиране да стартират при стартиране на машина да рестартирате и да тествате. Ако сте направили всичко вече си имате два напълно отделени пощенски сървъра изградени с Courier.

Коментари
Няма коментари »
Категории
Статии
Tags
courier, debian, linux, mail, miltiple instances, ssl
RSS коментари RSS коментари
Trackback Trackback

Backup with rsnapshot and ssh

Владимир | 10/22/2010

Disclaimer: Описаните техники в този документ могат да ви помогнат но не е задължително да са напълно вярни и изчерпателни. Не поемам отговорност за каквито и да било реални или нереални, вреди, ползи, пропуски, паднали къщи или каквото и да е произтичащи от ползването или неползването на този документ.
История

  • 08.11.2007 – Първа версия

Мотивация
По темата за архивирането на данни има няколко мнения и всички те са вярни в определена степен и светлина. Най често споменаваните са:

  • Архивирайте често и редовно
  • Архивирайте когато е нужно и имайте свестен план за възстановяване
  • Real men don’t do backups! They let the internet mirror it!

Е за радост или съжаление аз съм от хората които са по първият начин. Държа данните ми да са на сигурно място. И за целта трябва да имам стратегия. Днес ще ви разкажа как този сайт се архивира. Какво се използва и как е навързано.
Трябва да се отбележи че системата не е от най-добрите но е достатъчно добра че да работи и да не ми създава проблеми.
Цел
Целта ни днес е да реализираме напълно автоматизирана система за архивиране на данните. Допълнителни цели са скорост, минимален обем на прехвърляните данни, лесно възстановяване на данните от архива, сигурност.
Съставките
Като цяло нищо странно или екзотично. Дебиан базирана система (и хостът и машината която архивира), rsnapshot, ssh, rsync, diff, cp, du, perl.
Основата на системата се върти около rsync, rsnapshot е обвивка която предлага доста възможности но всичко е постижимо с нормален rsync. Допълнително са ни необходими cron и известно количество познания за начина на работа и методите за сигурност около SSH.
Най-голямо внимание трябва да се обърне на подсигуряването на системата, тоест настройката на ssh
Настройване на rsnapshot
Това като цяло е най-лесната част от цялото занимание. Избрал съм rsnapshot поради факта че информацията се предава посредством rsync тоест само разликите, използва схема за ротиране на архивните копия и може би едно от най-важните неща – използва твърди връзки между непроменените файлове от различните стартове на архивирането и по този начин пести място.
След инсталацията му трябва да се редактира конфигурационният му файл в който трябва да се дефинират времеви периоди (не са точно времеви, но за това след малко), точки за архивиране и някои команди.
/etc/rsnapshot.conf

# дефинираме къде ще съхраняваме архивите
snapshot_root   /home/webbackup/
# дефиниране на някои команди които ще са ни необходими
cmd_cp          /bin/cp
cmd_rm          /bin/rm
cmd_rsync       /usr/bin/rsync
# за съжаление тук не могат да се добавят допълнителни опции
cmd_ssh         /usr/bin/ssh
cmd_logger      /usr/bin/logger
cmd_du          /usr/bin/du
cmd_rsnapshot_diff      /usr/bin/rsnapshot-diff
# дефинираме си период (по-точно име и брой архиви)
interval        whgeto  10
# малко логове и т.н.
verbose         2
loglevel        3
logfile         /var/log/rsnapshot.log
lockfile        /var/run/rsnapshot.pid
# някои от данните не искаме да ги синхронизираме
exclude log/*
exclude phptmp/*
# и най накрая точките които ще архивираме
backup  root @ getoto.net:/var/www/       getoto.net/web/
backup  root @ getoto.net:/var/lib/mysql/ getoto.net/sql/

След като вече сме дефинирали какво и как да архивираме е време да си настроим периодична задачка която реално извършва архивирането. Това се постига чрез добавяне на запис в системата на cron.

0 */6   * * *   webbackup    /usr/bin/rsnapshot whgeto

Това се превежда като … на всеки 6 часа изпълнявай като потребител webbackup командата …
С това настройката на rsnapshot завършва. Но сега следва да си подсигурим достъпа до машината и да го ограничим до използването само на строго определени команди.

Настройване на SSH
След като системата ни е настроена да извършва регулярно архивиране на нашите данни е време да подсигурим достъпа. Искаме да получим следната ситуация. Вход без парола (с ключ), възможен само от определен адрес, който да може да изпълнява само строго определени команди.

Цялото това нещо се постига по следният начин:

  • Генериране на ключ който ще се използва за операциите – самият ключ е без парола. Избираме ключа да не е особенно голям за да пестим време, а и освен това ще е бъде доста ограничен.
    ssh-keygen -t rsa -b 1024 -f ~/keys/backup && chmod 600 ~/keys/backup

    По този начин в папка ~/keys ще си генерираме РСА ключ с големина 1024 байта и ще променим правата му така че само ние да можем да го четем и променяме. Последната стъпка е много важна тъй като ако правата не са коректни ключа няма да бъде използван.

  • Добавяме публичната част от ключа в списъка с упълномощените ключове на машината която ще архивираме. Напълно достатъчно е публичната част от ключа да бъде копирана във файла /root/.ssh/authorized_keys
  • Влизаме един път със този ключ в целевият сървър (машина която ще архивираме). Целта на това е ръчно да приемем подписа на целевата машина като валиден. Ако тази стъпка се пропусне цялата операция по архивирането ще пропадне.
  • Редактираме файлът ~/.ssh/config – това е файл в който могат да се конфигурират множество аспекти на поведението на клиенат ssh на базата на това с кой хост се опитваме да се свържем. В моят случай файлът е със следното съдържание:
    # За кой хост говорим
    Host getoto.net
      # ще използваме само IPv4 (v6 не поддържаме)
      AddressFamily inet
      # ще използваме пакетен режим (неинтерактивен)
      BatchMode yes
      # ще използваме този файл за ключ
      IdentityFile /home/webbackup/keys/backup
      # и изискваме задължително версия 2
      Protocol 2

    По този начин принуждаваме ssh клиента да използва нашият ключ (специално създаден) когато се свързва към машината.
    С това приключва конфигурацията на хоста който извършва архивирането.

  • Редактиране на файлът /root/.ssh/authorized_keys – тук се извършва ограничаването на възможностите на нашият ключ. В този файл ще ограничим ключът ни за архивиране да може да се използва от едно място и да може да изпълнява само определени команди.
    /root/.ssh/authorized_keys

    command="/root/.ssh/authprogs.pl",from="11.22.33.44" ssh-rsa AAAAB3NzaC1 ...

    По този начин ограничаваме ключът да може да се използва само от машина с адрес 11.22.33.44 и единствената команда която може да изпълни (без да може да изпълни нещо друго) е /root/.ssh/authprogs.pl
    Програмата authprogs.pl е скрипт взет от http://www.hackinglinuxexposed.com/. Неговата цел е да предостави възможност за изпълняване на няколко различни команди. Причината е че чрез възможностите на ssh можем да зададем само една задължителна команда.
    Самият срипт има нужда от прост конфигурационен файл

    # хост
    [11.22.33.44]
    # команди които може да изпълнява
    # Backups
    rsync --server --sender -logDtprR --numeric-ids . /var/www
    rsync --server --sender -logDtprR --numeric-ids . /var/lib/mysql

    По този начин ефективно прескочихме ограниченията на ssh

  • Тестване – пуснете ръчно rsnapshot с интервала който сме си дефинирали. Ще повиси малко и в последствие ще имате вече архиви в точката която сте дефинирали като архивна.
    garota:~# ls -l /home/webbackup/
    drwxr-xr-x 3 1005 1005 4096 2007-11-08 12:00 whgeto.0
    drwxr-xr-x 3 1005 1005 4096 2007-11-08 11:39 whgeto.1
    drwxr-xr-x 3 1005 1005 4096 2007-11-08 11:07 whgeto.2
    garota:~# ls -l /home/webbackup/whgeto.1
    drwxr-xr-x 4 1005 1005 4096 2007-11-08 11:36 getoto.net
    garota:~# ls -l /home/webbackup/whgeto.1/getoto.net/
    drwxr-xr-x 3 1005 1005 4096 2007-11-08 11:36 sql
    drwxr-xr-x 3 1005 1005 4096 2007-11-08 11:10 web

Заключение
Е надявам се това да ви е помогнало поне малко. Вече би трябвало да имате изградена система за напълно автоматизиран и подсигурен бекъп. Поне на мен ми върши добра работа.

Полезни Връзки

  • authprogs.pl
  • http://www.snailbook.com/faq/restricted-scp.auto.html
  • http://www.hackinglinuxexposed.com/articles/20030115.html
  • http://pkeck.myweb.uga.edu/ssh/
  • http://sial.org/howto/openssh/
Коментари
Няма коментари »
Категории
Статии
Tags
backup, configuration, debian, rsnapshot, rsync, scp, security, ssh, web
RSS коментари RSS коментари
Trackback Trackback

Записване на разговори с Nokia N900

Владимир | 08/20/2010

Nokia N900 е едно приятно устройство, което може да се ползва дори и като телефон (намиг). В определени ситуации е добре да си записвате разговорите (погледнете забележката в края). Типични примери са:

  • разсеян/а сте – е сега случва се. Признайте си и да свършим с въпросите
  • Искате да си правите архив на разговорите. Полезно е поради ред причини – например искате да проверите или да имате доказателство за определена бизнес политика
  • Работите в областта на телефонната поддръжка

За пълен архив ви е нужно по някакъв начин да можете да:

  • да записвате всяко едно събитие което се е случило (входящ телефонен разговор, смс съобщение, чат и др.)
  • да записвате всеки един проведен разговор

За ваше щастие това конкретно устройство е с отворен код и има огромно количество приложения за него, и всичко което ни е необходимо е вече налично.

Как ще реализираме задачата
Ще инсталираме 2 приложения. Едното за запазване на архив на събитията случили се на телефона и второто за записване на самите разговори.

Инсталиране на Glogarchive
Glogarchive е приложение което може да прави архивно копие на всяко едно събитие което се е случило с вашето устройство.

За да го инсталирате е необходимо да отворите Мениджъра на приложенията
n900-menu
и да изберете менюто за инсталиране на приложения в отворилото се меню изберете секция Utilities

application-manager-cat-utils
и там намерете приоложението Glogarchive
app-glogarchive
. Съгласете се с излезналият въпрос дали искате да инсталирате непроверено приложение и продължете
app-install-confirm
. Изчакайте процеса и продължете със инсталирането на следващото приложение.

Инсталиране на Recaller
Recaller е приложение което може да прави архивен запис на всеки един разговор проведен през вашият телефон. Освен това може да се използва като диктофон или да записва нещо което слушате.
За да го инсталирате е необходимо да отворите Мениджъра на приложенията и да изберете менюто за инсталиране на приложения в отворилото се меню изберете секция Desktop
application-manager-cat-desktop
и там намерете приоложението Recaller
app-recaller
. Съгласете се с излезналият въпрос дали искате да инсталирате непроверено приложение и продължете. Изчакайте процеса и продължете към конфигурацията на приложенията.

Конфигуриране на Glogarchive
Влезте в менюто в горният десен ъгъл и скролнете докато откриете glogarchive
menu-glogarchive
. Ще видите следният екран
glogarchive-main
. Няма много за конфигуриране в интерес на истината. Единственото което е необходимо да правите е редовно да пускате приложението и да натискате „Archive new Events now! (погледнете предната картинка). След като извършите архивирането можете да търсите по множество параметри а също така и да експортирате списъка със събития за по нататъшна обработка със друг софтуер. Продължете към конфигуриране на Recaller

Конфигуриране на Recaller
Приложението Recaller представлява widget който трябва да бъде добавен на някой десктоп (ако желаете да е наличен естествено). Това се постига като влезете в менюто за редактиране съдържанието на десктопи (след еднократно натискане на екрана се появява зъбно колело, натиснете върху него

). От там изберете добавяне на widget

и изберете Recaller

. Докато все още сте в режим на редактиране сложете го някъде където ви е удобно и натиснете гаечният ключ за да покажете менюто за конфигурация

. В отворилото се меню изберете настройки и попълнете както ви харесва. Ако искате да записвате всеки разговор автоматично е необходимо да изберете кутийката до AutoRec

. С така направените настройки разговорите ще се записват автоматично в папка Recordings в публично достъпната част от паметта на телефона във формата AAC като източника на звук ще бъде телефонът.

А После на къде
Е вече имате записите които са сортирани според телефонът на човека който ви е търсил със продължителността им и часът и т.н. С тях можете да правите каквото си искате. По мои наблюдения играчката записва с доста добро качество и използва около 1МБ дисково пространство за 1 минута разговор. Което ще рече че съвсем спокойно можете да записвате доста дълго време (27 ГБ място за използване хич не е малко).

Забележка и предупреждение
Имайте предвид че записването на разговор без знанието и съгласието и на двете страни е наказуемо според българското законодателство и може да ви ухапе доста неприятно. Не съм адвокат но поне по беклите спомени които имам уведомяването в началото на разговора и искането на съгласие е достатъчно.

Коментари
7 Коментара »
Категории
Статии
Tags
n900, nokia, record, snoop, wiretap, записване на разговори, подслушване, сигурност
RSS коментари RSS коментари
Trackback Trackback

USB Networking за Nokia N900

Владимир | 06/19/2010

От известно количество време съм собственик на Nokia N900 MID. В цялото словосъчетание като че ли Multimedia Internet Device е важната част, но не отразява дори с малко какво може устройството.
Накратко това е по скоро таблет със малко GSM чарколяцо отколкото телефон с браузър. За бонус играчката е доста отворена (по подразбиране си идва със шел към нея), базирана е на прилични стандарти и като цяло е готина занимавка.

Какво ще разглеждаме днес

Nokia N900 MID
Устройство: Nokia N900
Хардуер: ARM A8 Cortex SOC, 256MB RAM, 32GB Internal Flash, 3,5 inch 800×480 touchscreen дисплей, пълна qwerty клавиатура
Софтуер: Maemo 5, частично базиран на дебиан (кодово име Fremantle) – не не е Freemantle, и аз го бърках доста.
Възможности: Сърфиране из нета, пощенски клиент, таблет, мултимедийна станция (да поддържа и UPnP и DLNA), четене на документи, чат клиент, фотоапарат, бърза редакция на прости документи, календар и даже телефон. Поглеждайки всичката функционалност достъпна в устройството човек добива чувството че телефона е по скоро сложен защото са има място на платката отколкото че специално са си мислили да го слагат (но пък всеки може да си мисли каквото си иска). Едно от най приятните неща свързани с тази играчка е факта че можете съвсем спокойно да си инсталирате доста прилични количества софтуер, без почти никакъв риск. Ако официалният или community based софтуер не ви достига никой не ви спира да седнете и да си хакнете нещо което на вас ви трябва/харесва. Nokia предоставят всички необходими инструменти за разработка – включително виртуална машина със всичкия необходим софтуер и емулатор в който да си тествате софтуера който пишете.

Какво ще правим днес

Днес ще ви покажа как можете да използвате USB кабела за да се свържете със вашия телефон посредством SSH, да му дадете малко Internet (защото наоколо няма WI-FI а не ви се плаща на българските оператори кожодери) и как да убедите стандартните приложения че има интернет. Платформата върху която ще реализираме цялото упражнение (освен Телефона/Таблета/Играчката) е Ubuntu 9.04 (Jaunty) и Ubuntu 9.10 (Karmic). Все пак разполагам само с това под ръка.

Как ще протече целият процес

  • Инсталиране на необходимият софтуер върху устройството
  • Конфигуриране на USB мрежата от страна на устройството
  • Конфигуриране на USB мрежата от страна на Компютъра
  • Конфигуриране на автоматична активация/деактивация на USB мрежата от страна на устройството
  • Конфигуриране на рутирането от страна на компютъра
  • Обучаване на стандартните маемо приложения че имат интернет :)

Изхождаме от предположението че имате Wi-Fi под ръка. Не че иначе не е постижимо но ще отнеме повечко време и ще е доста неудобно. Въпреки че клавиатурата е удобна за писане, не е най-добрата когато става въпрос за специални знаци и *nix команди.

Инсталиране на необходимия софтуер върху устройството

За да си свършим задачките ще ни е необходим малко софтуер. В случая ще ни е необходим root достъп за да променим няколко системни файла. Цялата операция може да се осъществи от самото устройство, но смятам че е по удобно да я свършите с помощта на малко по голяма и удобна клавиатура като тази на вашият компютър/лаптоп.

За целта на занятието ще ни е необходим следният софтуер:

  • rootsh – за да придобием root достъп от конзолата на устройството (ако изпитаме нужда)
  • SSH сървър – налични са OpenSSH и Dropbear – по ваш избор. Аз лично предпочитам OpenSSH. Намира се в хранилището extras-testing
  • personal-ip-address – това е аплет за един от десктопите който ще ви покаже ип адреса на устройството. Това е по скоро удобство
  • libicd-network-null – това е модул за мрежовата подсистема който позволява създаване на фалшиви мрежови връзки. Устройството по подразбиране поддържа само wireless и gprs (официално). Намира се в хранилището extras-devel което по подразбиране не е въведено

За начало може да инсталирате само SSH сървъра и после останалата част ако прецените че ви е нужна. За да инсталирате SSH сървър е необходимо да добавите хранилището extras тестинг през нормалният пакетен мениджър на Maemo. Докато сте там може да си инсталирате и rootsh – полезен е. В процеса на инсталация ще бъдете попитани да си въведете новата root парола (без нея няма как да се логнете на играчката).

След като инсталирате софтуера пробвайте да се закачите :) трябва да се случи и вие вече сте root с абсолютни права върху устройството. Бъдете внимателни и не правете нищо лудо (като rm -rf /)

Конфигуриране на USB мрежата от страна на устройството

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

Отворете /etc/network/interfaces
Там трябва да откриете нещо подобно на:

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto usb0
iface usb0 inet static
	address 192.168.2.15
	netmask 255.255.255.0
	gateway 192.168.2.14

Ако не изглежда така постарайте се и нека заприлича. Важното в случая са редовете след auto usb0 адреса си го изберете както ви подхожда но го запомнете. Адреса в реда с gateway ще ни е необходим малко по късно за другият край на мрежата. Това е една добра конфигурация която ще разширим малко по късно.

Сега е време да изпробвате дали сте направили всичко правилно :)

ifup usb0
ifconfig

Ако в изхода от ifconfig идите нещо подобно на:

usb0      Link encap:Ethernet  HWaddr FE:84:91:74:71:F7
          inet addr:192.168.2.15  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3373 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7065 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:168768 (164.8 KiB)  TX bytes:2344721 (2.2 MiB)

Всичко работи както би трябвало.

Конфигуриране на USB мрежата от страна на Компютъра

След като сте конфигурирали единият край на мрежата време е да конфигурирате и другия :) тоест вашият компютър лаптоп. Последно време започнах да оценявам удобствата на Gnome Network Manager така че ще покажа как се случват работите там.
Първата стъпка е да включите телефона си посредством USB кабела към вашата машина. На въпроса в какъв режим да се представя пред вашият компютър изберете PC-Suite mode. След кратко мислене във NetworkManager-а ще се появят две нови устройства. Жична мрежа и GSM модем. Би трябвало да изглежда по подобен начин. (извинявам се но вече при мен е конфигурирано)

Време е да изберете опцията за редактиране на връзки, да изберете вашата връзка (най-вероятно е Auto USB0) и да я конфигурирате, както е показано в следващите две снимки:


За да проверим дали всичко е наред изключете кабела, включете го отново и изберете пак PC-Suite mode. Едно нещо за което трябва да внимавате е да не променяте мак адреса който е открит от Network Manager-a след малко ще обясним на телефона как да използва винаги него.
Сега вече трябва да можете да пингнете вашият телефон закачен през кабелчето :)

Конфигуриране на автоматична активация/деактивация на USB мрежата от страна на устройството

Сега след като вече имаме връзка между компютъра и телефона базирана на USB кабела време е да обучим телефона да не променя тази връзка и да я активира/спира автоматично всеки път когато изберете PC-Suite mode. За целта са необходими няколко стъпки:

  • Обясняване на телефона винаги да използва същият мак адрес за да може връзката да се активира автоматично от страната на компютъра
  • добавяне на автоматично активиране на интерфейса при влизане в PC-Suite Mode
  • Добавяне на правилен gateway и рутинг при активиране на интерфейса
  • автоматично деактивиране на интерфайса при излизане от PC-Suite mode

Обясняване на телефона винаги да използва същият мак адрес за да може връзката да се активира автоматично от страната на компютъра

Това е необходимо поради причината че при всеки рестарт на телефона мак адреса на usb интерфейса се генерира на ново. И като цяло е винаги различен. Приучаването се състои в дефинирането на опция за кернел модула който се грижи за този мрежов интерфейс (g_nokia). Логнете се като root на вашият телефон (това звучи яко) и изпълнете

echo > "options g_nokia host_addr=C6:EB:3E:B7:65:D7" > /etc/modprobe.d/g_nokia

Или всеки един мак адрес който ви харесва (например: C0:FF:EE:C0:FF:EE или 01:23:45:67:89:AB). Ако сменяте мак адреса ще се наложи да рестартирате телефона за да прихване новата настройка.

добавяне на автоматично активиране на интерфейса при влизане в PC-Suite Mode

При избиране на PC-Suite mode от менюто при включване се изпълнява скрипта /usr/sbin/pcsuite-enable.sh. За да активираме автоматично интерфейса трябва да добавим в края му необходимите ни команди. Намерете секцията:

kill -USR1 $SYNCD_PID
logger "$0: sent SIGUSR1 to syncd"

exit 0

и я заменете с:

kill -USR1 $SYNCD_PID
logger "$0: sent SIGUSR1 to syncd"
ifup usb0
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
echo "nameserver 8.8.4.4" >> /etc/resolv.conf

exit 0

Реално добавяме 3 команди:

  • ifup usb0 – автоматично ще вдигне нашият интерфейс
  • echo „nameserver x.x.x.x“ >> /etc/resolv.conf – ще добави допълнителни сървъри за имена към стандартните (направил съм го с цел да се избягнат някои шантави и/или проблемни DNS сървъри. Посочените адреси са публичните DNS сървъри на google. Ако не ви харесват можете да ги замените с други по ваше усмотрение.

Добавяне на правилен gateway и рутинг при активиране на интерфейса

За да сме сигурни че телефонът няма да сътвори глупости от типа на използване на GPRS за разни глупости ще подменим пътят по подразбиране и gateway-а. За целта добавете в дефиницията за интерфейса в /etc/network/interfaces

	up route del default
	up route add default gw  192.168.2.14

автоматично деактивиране на интерфайса при излизане от PC-Suite mode

При изваждане на USB кабела автоматично се изпълнява скрипта /usr/sbin/pcsuite-disable.sh където и ще добавим нашите инструкции за автоматично спиране на интерфейса.
Намерете секцията:

logger "$0: do nothing to pass USB certs"

exit 0

и я заменете с:

logger "$0: do nothing to pass USB certs"
ifdown usb0
echo "nameserver 127.0.0.1" > /etc/resolv.conf

exit 0

Както е видно спираме интерфейса и възстановяваме статуквото с DNS сървърите. След тези операции вече при включване на usb кабела и избиране на PC-Suite mode автоматично ще се вдига интерфейс с настройки да взема интернет от машината за която е закачен, но за съжаление машината за която е закачен все още не знае как да му даде интернет.

Конфигуриране на рутирането от страна на компютъра

Колкото и да улеснява Network Manager-а при някои операции (видяхте колко бързо се справи с откриването и разпознаването на телефона) все пак той крие и доста недостатъци. Като факта че част от стандартните парадигми с които е свикнал един системен администратор не работят както се очаква. Стандартният администратор би дефинирал usb0 интерфейса по начин подобен на този за телефонната страна със команди във up клаузата които да пуснат ip_forward и да добавят необходимите iptables правила и ще установи че нещо не се получава … За да ви спестя заигравките оставаме изцяло в свена на Network Manager-a. Той поддържа възможност за изпълняване на скриптове при определени събития (като включване/изключване на интерфейс и др.)
Създайте следният файл: /etc/NetworkManager/dispatcher.d/99nokia-n900-routing със следното съдържание:

#!/bin/sh -e
# Script to dispatch NetworkManager events
#
# Runs when NetworkManager fiddles with interfaces.
# Author vvitkov
# ver: 0.1
# based on NM standard dispatcher for ifupdown

if [ -z "$1" ]; then
    echo "$0: called with no interface" 1>&2
    exit 1;
fi

# Fake ifupdown environment
export IFACE="$1"
export LOGICAL="$1"
export ADDRFAM="NetworkManager"
export METHOD="NetworkManager"
export VERBOSITY="0"

# Run the right scripts
case "$2" in
    up)
	export MODE="start"
	export PHASE="up"

	if [ $IFACE = 'usb0' ] ; then
		iptables -A POSTROUTING -t nat -s 192.168.2.15/32 -j MASQUERADE
		echo 1 > /proc/sys/net/ipv4/ip_forward
	fi

	;;
    down)
	export MODE="stop"
	export PHASE="down"

	if [ $IFACE = 'usb0' ] ; then
		iptables -D POSTROUTING -t nat -s 192.168.2.15/32 -j MASQUERADE
		echo 0 > /proc/sys/net/ipv4/ip_forward
	fi

	;;
    pre-up)
	export MODE="start"
	export PHASE="pre-up"
	;;
    post-down)
	export MODE="stop"
	export PHASE="post-down"
	;;
    *)
	echo "$0: called with unknown action \`$2'" 1>&2
	exit 1
	;;
esac

Изпълнете отново магическите действия изключване на кабел, включване на кабел, избор на PC-Suite mode и кратко изчакване. Вече от вашият телефон съвсем спокойно трябва да можете да пингвате разни машини в интернет като примерно www.google.com.

Обучаване на стандартните маемо приложения че имат интернет :)

Въпреки че телефона има интернет приложенията които идват с него все още не знаят за това. Те разчитат на D-Bus да ги информира за подобни събития и докато не бъдат информирани си мислят че нет няма. Трябва да коригираме това :)
За целта ще добавим нова фиктивна конекция която да активираме при вдигането на usb0 интерфейса на телефонът ни. За да можем да добавим фиктивната конекция ни е необходим пакета libicd-network-null който се намира в extras-devel хранилището за пакети. Тъй като ще използваме това хранилище само за един пакет не е нужно да го добавяме в стандартният пакетен мениджър.

  • логнете се като root във вашият телефон
  • добавете в края на /etc/apt/sources.list.d/hildon-application-manager.list следният ред deb http://repository.maemo.org/extras-testing/ fremantle free non-free
  • обновете списъка с пакети: apt-get update
  • инсталирайте необходимият пакет: apt-get install libicd-network-null
  • премахнете добавеният ред и обновете списъка с пакетите отново

Вече имаме необходимата инфраструктура за създаване на фиктивна мрежова връзка. Изпълнете следното за да я добавите и активирате (на телефона):

gconftool-2 -s -t string /system/osso/connectivity/IAP/DUMMY/type DUMMY
gconftool-2 -s -t string /system/osso/connectivity/IAP/DUMMY/name "USBnet"
gconftool-2 -s -t string /system/osso/connectivity/IAP/DUMMY/autoconnect false
killall icd2

С това дефинираме фиктивна връзка с вътрешен идентификатор DUMMY и име USBnet.
Единственото което остава да направим е да информирам D-Bus подсистемата при активирането на интерфейса да включи тази връзка и съответно при спирането на интерфейса да я изключи. Това се постига с добавянето на следните 2 реда към /etc/network/interfaces в секцията за usb0

	up run-standalone.sh dbus-send --type=method_call --system --dest=com.nokia.icd /com/nokia/icd com.nokia.icd.connect string:DUMMY uint32:0
	down run-standalone.sh dbus-send --system --dest=com.nokia.icd /com/nokia/icd_ui com.nokia.icd_ui.disconnect boolean:true

Заключение

Вече вашият телефон може да разполага с интернет посредством usb кабел. Тествайте сами и се убедете.
Част от информацията е взаимствана от: http://wiki.maemo.org/N900_USB_networking
Ако имате въпроси питайте

Редакция: Променен е начина на изпълнение за вдигане на USB интерфейса за да позволи модулно изпълнение на модификации

Коментари
3 Коментара »
Категории
hardware, Статии
Tags
linux, maemo, n900, networking, nokia, routing, ubuntu, usb
RSS коментари RSS коментари
Trackback Trackback

Ревю на QNAP TS-219P NAS

Владимир | 01/09/2010

QNAP’s TS-219 Pro е високо производителен NAS сървър поддържащ до 2 SATA I/II Диска с общ капацитет до 4TB. Днес разглежданият NAS сървър е един от най-добрите в своят клас. Характеризира се най-пълно с изречението „Многофункционално мрежово устройство за съхранение на данни в малък офис или у дома и още нещо..“

Какво ще разглеждаме днес

QNAP TS-219P

QNAP TS-219P

High Performance 2-Bay Turbo NAS Server
Model: TS-219 Pro

Хардуерни характеристики

Всяко едно устройство първично се характеризира с вложените в него компоненти и качество на изработката.
С удоволствие мога да кажа, че QNAP са свършили страхотна работа. Не само изработката на устройството е превъзходна но и вложените компоненти са предостатъчни за продължителна и надеждна работа.

  • CPU: Marvell 1.2 Ghz
  • RAM: 512MB
  • FLASH: 16MB
  • HDD: 2 SATA I/II Slots for 2,5/3,5 inch disks
  • LAN: 1 x 1Gbit LAN Port
  • External ports: Power, 3 x USB 2.0, 2 x eSata
  • Form Factor: Small Tower
  • Size: 150(H) x 102 (W) x 216(D) mm

Прави много добро впечатление че кутията е изцяло изработена от много солидна ламарина с много приятен за окото кафяв оттенък. Единственият компонент по кутията който не е метален, е пластмасовият преден капак покриващ изведените контролни бутони и индикатори за състоянието на устройството. Самото устройство изглежда солидно и здраво но въпреки това е по-леко от очакваното, имайки предвид изработката му. В самото устройство има единична силно интегрирана платка със SOC елемент, RAM чипове, които за съжаление са запоени към платката и не подлежат на подмяна или разширяване, дъщерна карта към която се закачат твърдите дискове (абсолютно безпроблемно) и малък индикаторен и контролен панел.

Софтуерни особенности

Прави добро впечатление как производителите от QNAP съвсем спокойно обявяват че устройството им работи благодарение на GNU/Linux система и в официалната си документация са включили GPL V3.0 лиценза в пълният му текст. За незапознатите процесорът на Marvell е базиран на ARM V7. Друг приятен момент в запознаването с устройството е че от самото начало ssh достъпа до него е разрешен. Потребителският инерфейс чрез който може да се управлява устройството е доста красив, функционален изграден в голяма част със типичните за web 2.0 инструменти. Базиран е на HTML, AJAX, библиотеките jquery и scriptalicious.
Начините за употреба на устройстовото са почти безгранични. Имайки предвид че това реално е мрежов сървър за съхранение на данни в него можем да намерим всички очаквани услуги:

  • HTTP
  • FTP включително със TLS и FXP (сваляне от самият FTP сървър)
  • SMB или по-известно като Microsoft Networking
  • AFP изестен като Apple File Protocol
  • NFS който е дефакто стандарт в Unix/Linux/BSD среда

Допълнително за да се улесни живота на потребителите (или да се утежни живота на администраторите, в зависимост от интерпретацията) има налични няколко допълнителни приложения и възможности:

  • Download Station – комбинация от битторент клиент и система за сваляне на файлове
  • Multimedia Station – за излъчване на съхранената музика/филми към съвместими плеъри
  • iTunes сървър с поддръжка на плейлисти
  • Web File Manager – за по лесно качване/сваляне на файлове
  • Surveillance station – дава възможност за управление и архивиране на до 2 IP базирани видеокамери
  • WEB сървър – в допълнение на стандартният малък сървър необходим за показване на потребителският интерфейс чрез който могат да се сервират файлове и приложения.
  • MySQL сървър
  • Пакетен мениджър – чрез него могат да се инсталират не малък брой приложения включително популярният сред хардуерните среди пакетен мениджър ipkg.

Първична инсталация

За голямо неудоволствие на потребителите на операционни системи различни от Microsoft Winodows или Mac QNAP не предлагат инструменти за първично кофигуриране или управление. Въпреки това рааботата с устройството е много лесна и приятна. Един труден момент е намирането на ип адреса на устройството ако не използвате някоя от споменатите по горе две операционни системи.
При първото си включване TS-219P ако в мрежата ви има наличен DHCP сървър той си взема автоматично адрес. При обратната ситуация автоматично си настройва така нареченият Link Local address (169.254.100.100). След свързване с горепосоченият адрес се вижда следното:

с което ни подканва да инициализираме новото ни устройство и естествено ни информира че всичката информация на диска ще бъде изтрита.
Следва първично инициализиране на диска при което се установяват необходимите за работа дялове:

Прави добро впечатление че в процеса на първична инсталация инженерите от QNAP са решили да наложат задължителен ъпгрейд на наличният фирмуеър движещ устройството. За съжаление се приема всеки валиден имидж на операционната система

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

След въвеждане на очакваните настройки: име на устройството, администраторска парола, IP конфигурация, синхронизция на времето, избор на услугите които да бъдат активирани и избиране на дисковата конфигурация следва екран обобщаващ направените избори и очакващ потвърждения:

След прилагането на избраните настройки и инициализиране на дисковете NAS устройството се рестартира и пренасочва към административният интерфейс:

Освен показаният по горе интерфейс в стил Cover Flow има и вариант в който просто иконите са подредени в един ред.

Административен интерфейс

При опит за свързване с IP адреса на устройството (ако не е активиран web сървърът) потребителят е пренасочен към административният интерфейс на порт 8080 където могат да бъдат използвани различните активирани приложения и административният интерфейс. За влизане в системата се поддържа и SSL криптиране на връзката между администратора и NAS устройството.

При въвеждане на административен потребител ни се показва административният интерфейс в който ни се предоставят на пръв поглед някои често използвани задачи:

В дървовидната структура много добре са подредени всички необходими задачи с ясно изразени икони и удобства. Малък недостатък който се забелязва при работа с устройството е кеширането на данните особенно при операции свързани с тотално преконфигуриране на дисковата конфигурация. Това води до пълно изтриване на данните но поради кеширането част от етикетите и предишните конфигурации остават активни.

Интересни елементи на устройството

Въпреки че TS-219P се предлага като NAS сървър то има далеч повече функционалност от очакваната. Както споменахме в предните параграфи, има голям набор от приложения и услуги. Сред тях изпъкват наличният DHCP сървър и възможността за настройване на jumbo frames:

Системата за хардуерен мониторинг:

Базовата защита от мрежови атаки изнесена в удобен интерфейс:

Вариантите за известяване (e-mail, sms):

Доста разочароващо е липсата на възможноста за известяване и управление посредством SNMP, но това не е задължително за всеки. Всъщност това е необходимо за по-големи организации които не са в целевият сегмент на устройството.
Друга забележителна възможност за устройство от такъв клас е възможността за създаване и управление на iscsi target дялове:

В тази функционалност е интересно да се отпележи възможноста за тънко провизиране на дяловете предназначени за iscsi target. Посредством тази възможност в първият момент не се заема цялото място което сме решили да отделим за конкретният случай, което от своя страна позволява създаването на повече дялове които при нарастване запълват наличното място. При подобна ситуация е възможно да се извърши онлайн разширяване на дисковото пространство.
Също така интересни са и възможностите за онлайн миграция и разширяване на наличното пространство. Системата автоматично определя възможните действия над избраните дялове/дискове и предоставя само тези възможности:


Предлагат се доста възможности за споделяне на данните в зависимост от избраният протокол, включително присъединяване на устройството към активна директория, частично премахване на блокирането на файлове при достъп, правата на различните потребители/групи и адреси от които се опитва достъп до ресурсите на системата.


Както е видно от представената по-долу картинка освен че на устройството има инсталиран пълнофункционален web сървър също така има инсталирано PHP и възможността за пълна редакция на самата конфигурация.

Наличните модули са напълно достатъчни за пълноценна работа на да речем Joomla.
Последният акцент от наличният софтуер е Download Station системата:

Той предоставя в удобен интерфейс за сваляне както на торент файлове така и на файлове разположени върху http/ftp сървъри.

Тестове

С цел пълно разбиране на възможностите на устройството го подложихме на серия от тестове, вариращи от прости тестове за монтиране на споделените устройства, скорост на трансфер, работа с малки файлове и синтетични стандартни тестове за оценка на NAS устройства.

Използваните конфигурации в тестовете са следните:

  • Тествано устройство:
    • Устройство: TS-219P
    • Дискове: 2 x 250 Gb 2,5 inch Hitachi
  • Тестова платформа:
    • CPU: Intel Core2Duo P8400
    • RAM: 4GB
    • Video: ATI Radeon HD3450
    • Мрежова карта: 1Gbit Broadcom Tigon 3
    • OS: Debian Lenny
  • Конфигурация на тестовата среда:
    • Мрежа: директна връзка между тестваното устройство и тестовата платформа, работеща със скорост от 1Gbit/s
    • TS-219P: всички услуги освен NFS споделяне на файлове и административният интерфейс бяха изключени
    • Тестова платформа: текстова среда със изключени всички услуги освен необходимите за монтиране на NFS споделена папка
    • Монтиране на споделената папка: mount -o noatime,intr,hard,rsize=65535,wsize=65535,noacl,nolock,ac 192.168.10.148:/share/MD0_DATA/review /home/nas
    • Потребители: Единствен административен потребител както на устройството така и на тестовата платформа
    • Единствена споделена папка на тестваното устройство с пълен достъп за всички до нея.
  • Тестови процедури:
    • Всеки от тестовете бе изпълнен 5 пъти с рестартиране на NAS системата и тестовата платформа с изчакване от 1 час след стартирането на системите и усредняване на резултатите.
    • Тест 1: Копиране на 2 GB файл със случайни данни
    • Тест 2: Копиране на 24 GB видео материали размер от 50 MB до 900 MB
    • Тест 3: Копиране на 10 GB офис файлове със среден размер от 1MB
    • Тест 4: IoZone тестове

Резултати

При Тест 1 с копиране на единичен голям файл се наблюдават скорости на трансфер от 37 до 45 MB/s даващ ни среден резултат от 46 s за трансфера.
При Тест 2 поради копирането на по голям брой файлове с относително средни размери се наблюдават скорости от 36 до 42 MB/s даващ усреднен резултат от 605 s за трансфера
При Тест 3 поради големият брой малки файлове (общ брой 14000) се наблюдава деградиране на производителността на трансфера. Наблюдаваните скорости са от 28 до 33 MB/s даващ усреднен времеви разултат от 311 s.
При Тест 4 се срещат няколко странни резлутата които в началото бяха отдадени на временни проблеми но в последствие се оказва че са сериозни и реални проблеми при определени размери на блоковете при трансфер. Пълните данни са налични при заявка. По долу може да откриете графиките при размер на блока за трансфер от 4kb

Файловият размер е в килобайти. Както се забелязва има доста странно пропадане в скоростта при размер на файла от 8 MB. Друг интересен момент е много сериозното повишаване на скоростта на четене за големи файлови размери. (макар и на цената на доста завишено натоварване на процесора).

Заключения и финални мисли

TS-219P е един прекрасен NAS с целева аудитория малък офис или дома. Има много удобен интерфейс за управление и голямо количество възможности за употреба. Освен стандартно очакваните възможности и приложения за един NAS има и доста други които дори и по някога стоящи не на място са полезни и удобни. Благодарение на технология на онлайн миграция и онлайн разширяване на дисковото пространство този нас може да бъде използван дълго време само с редовна подмяна на дисковете. Освен всичко това устройството позволява интелигентно управление на използваното електричество, има стабилен и издържлив дизайн (имаше желания за скачане върху него които бяха отказани заради страха от самонараняване). Както може да се види от синтетичните тестове с IOZone той е подходящо устройство при работа със средни до големи файлове.
За финални думи искам да кажа че съм много доволен от работата свършена от инженерите на QNAP.

Коментари
1 Коментар »
Категории
hardware, review, Статии
Tags
embedded, hardware, linux, qnap, review, tests, TS-219P
RSS коментари RSS коментари
Trackback Trackback

Trac + SVN The setup

Владимир | 12/06/2009

Disclaimer: Описаните техники в този документ могат да ви помогнат но не е задължително да са напълно вярни и изчерпателни. Не поемам отговорност за каквито и да било реални или нереални, вреди, ползи, пропуски, паднали къщи или каквото и да е произтичащи от ползването или неползването на този документ.

История

  • 25.01.2007 – Първа версия

Тук ще се постарая да опиша по какъв начин съм настроил система състояща се от Trac и SVN която използвам за управление на проекти.

Идеята
Тъй като се занимавам с много и най-вече различни проекти, стана ясно че имам мужда от система за управление на проекти. И докато това ми се търкаляше в главата реших че ще е добре ако може да се използва за множество проекти с множество хора. Почна се търсенето, като минах през dotProject, TikiWiki, Mantis и някои други. Но просто някак си не ми допадаха. В крайна сметка се спрях на Trac и SVN.

Мотивацията
Избрах комбинацията Trac + SVN по следните причини

  • Свикнал съм със SVN пък макар и от конзола
  • Trac се разработва относително активно
  • Вече имах инсталиран Python заради част от системата ми
  • В самия Trac има вградено wiki което ще се ползва за описанието на проектите и документацията
  • Има билетчета за проблеми
  • Куп други дреболии

След всичко казано Trac се оказа едно добро решение.

Желязото
Машината на която работи всичко това е следната

Debian Unstable
600 Mhz CPU
256 MB Ram
20G HDD

Върху нея работят доста услуги: mysql, apache, exim, routing/shaping/nat, dns, dhcp, ntp, ftp, shell, samba (в режим на Master Browser) и други.

Като цяло доста слабичка машинка по днешни стандарти, но полезна и гледана с любоФ

Необходим Софтуер
За да може системата да работи като хората ни трябва следният софтуер

  • Trac
  • subversion
  • libneon
  • Python
  • pysqlite
  • python-subversion-bindings
  • mod_python
  • clearsilver
  • xinetd
  • други дреболии

Като цяло най-лесно е ако си имате дебиан. Ако е такъв случая процедурата е пределно проста

apt-get install trac libapache2-mod-python xinetd

И започва веселбата :)

Допълнително към Python сме инсталирали python-setuptools, tracwebadmin, tracaccountmanager.

Разположение на файловете
Тъй като ще има няколко проекта, ще отделим специално място за цялата система. Препоръчително е да е на отделен дял.
При мен се спрях на директорията /home/projects която има следната структура

/home/projects/
/home/projects/trac
/home/projects/trac/project1
/home/projects/trac/project2
... ... ...
/home/projects/svn
/home/projects/svn/project1
/home/projects/svn/project2
... ... ...

Възможно е Trac и SVN инстанциите да се намират в директориите на проектите но така се усложнява млко конфигурацията

Същинското изпълнение
Създайте си директорната структура която ще ви е удобна:

mkdir -p /home/projects/{trac,svn}

Създайте си съответните проекти (това става с trac-admin)

trac-admin /home/projects/trac/project1 initenv

Ще ви бъдат зададени няколко въпроса и по точно: Име на проекта, База данни (sqlite е добър избор), тип на хранилището за код, къде се намира самото хранилище.
Ограничение е че хранилището на код трябва задължително да е на същата машина (не се поддържат отдалечени), но това може лесно да се заобиколи с помощта на nfs

Създайте съответните хранилища за код (svnadmin)

svnadmin create /home/projects/svn/project11
Променете правата на така създадените директории съответно на потребителя като който вървят Trac системата и svn сървъра
1chown -R www-data:www-data /home/projects/trac/project1
chown -R svnserv:svnserv /home/projects/svn/project1

Използваме www-data тъй като под този потребител работи Apache сървъра. Потребителя svnserv сме създали предварително като за домашна директория сме му задали /home/projects/svn

След като имаме вече създадени проектите време е да можем да ги покажем в браузър (иначе са безполезни).
Trac може да работи като самостоятелен демон (tracd), като CGI процес (trac.cgi, trac.fcgi) или в контекста на Apache (което сме и избрали) с помощта на mod_python.

В конфигурацията на Apache добавяме

LoadModule python_module modules/mod_python.so
# или го разрешаваме с помощта на дистрибуцията си
 
<location /projects>
    # с какво ще обработваме съдържанието
    SetHandler mod_python
    # точно с какво (trac)
    PythonHandler trac.web.modpython_frontend
    # коя информация точно ще сервираме
    PythonOption TracEnvParentDir /home/projects/trac
    # от какво ще генерираме индекса (не е задължителен)
    PythonOption TracEnvIndexTemplate /home/projects/trac/listing.cs
    # debug mode ON
    PythonDebug on
</location>

Рестартираме сървъра и проверяваме. Трябва да се вижда нещо подобно на следната картинка
trac-1

Ако ли пък не … почвайте да гледате в логовете какво пише.

Следва да пуснем svn сървър. Това се прави с помощта на svnserve. В случая съм избрал да го стартирам през xinetd понеже няма да е толкова натоварен. За по голяма сигурност ще работи като отделен потребител (svnserv)

Конфигурацията на xinetd е следната

service subversion
{
        # слушаме само на IPv4 адрес
        flags = IPv4
        # услугата НЕ е спряна
        disable = no
        # потребител и група
        user = svnserv
        group = svnserv
        # максимален брой инстанции
        instances = 5
        # be nice :)
        nice = 15
        # кой точно е сървърът
        server = /usr/bin/svnserve
        # аргументи за стартирането му
        server_args = --inetd --root /home/projects/svn
        # обичайните работи (логване, типаж ...)
        log_on_success = PID HOST DURATION
        log_on_failure = HOST ATTEMPT
        wait = no
        socket_type = stream
}

Тествайте със svn клиент дали работи.

Подсигуряване и подобряване на Услугите
След като имаме работещи услуги време е да помислим за тяхното подсигуряване. А именно ето какво ще направим:

За Trac системите

  • Премахване на анонимният достъп (изцяло). За тази цел ще ни се наложи да използваме trac-admin. Възможно е да се реализира през web интерфейс но все пак трябва да се знае как се прави на ръка.
    # влизаме в интерактивен режим
          trac-admin /projects/trac/project1
          # привилегиите се управляват посредством командата permission
          Trac [/home/projects/trac/project1]> permission help
          permission list [user]
                  -- List permission rules
    
          permission add <user> <action> [action] [...]
                  -- Add a new permission rule
    
          permission remove <user> <action> [action] [...]
                  -- Remove permission rule
          # това е просто за запознаване
          # следва същинското премахване
          Trac [/home/projects/trac/project1]> permission remove anonymous *

    Вече анонимните потребители нямат никакви права.

  • добавяне на нов административен потребител с пълни права. Това се прави за да имаме по лесен контрол.
    Trac [/home/projects/trac/project1]> permission add user1 TRAC_ADMIN, MILESTONE_DELETE ....
          # всички възможни привилегии

    Така добавеният потребител user1 ефективно получава пълен и абсолютен контрол.

  • активиране на администраторският панел - тази процедура се извършва чрез редакция на кконфигурационният файл conf/trac.ini в директорията на нашият проект. За да активираме администраторският интерфейс е необходимо да разрешим използването на компонентите които са ни нужни а именно да добавим
    [components]
    webadmin.* = enabled
  • включване на подобрен процес на влизане в системата - по начало процеса на влизане в Trac не е особенно красив нито пък удобен, затова и ще бъде подменен от разширението TracAccountManager. То има зависимост от TracWebAdmin който вече е активиран. За да можем да ползваме подобреният процес трябва първо да изключим вграденият във trac и да активираме новият. Това става отново с редакция на trac.ini
    [components]
    acct_mgr.admin.accountmanageradminpage = enabled
    acct_mgr.api.accountmanager = enabled
    acct_mgr.htfile.abstractpasswordfilestore = enabled
    acct_mgr.htfile.htdigeststore = disabled
    acct_mgr.htfile.htpasswdstore = enabled
    acct_mgr.http.httpauthstore = disabled
    acct_mgr.web_ui.accountmodule = enabled
    acct_mgr.web_ui.loginmodule = enabled
    trac.web.auth.loginmodule = disabled
    
    [account-manager]
    password_file = /home/projects/trac/users
    password_store = HtPasswdStore

    Какво точно прави всяка опция е добре обяснено в документацията (линковете са в края)
    Сега е необходимо да рестартираме web сървъра за да влезнат в сила нашите промени.

За svn сървъра:

Забраняване на всякакъв достъп за неауторизирани потребители

Това се изпълнява като се редактират конфигурациите на svn сървъра. Те се намират в директорията в която е нашето хранилище на код. Модифицираме ги по следният начин:

conf/svnserve.conf

### This file controls the configuration of the svnserve daemon
### Visit http://subversion.tigris.org/ for more information.

[general]
# никакъв достъп за анонимните
anon-access = none
password-db = passwd
authz-db = authz
realm = Project 1

conf/authz

### This file is an example authorization file for svnserve.
### Its format is identical to that of mod_authz_svn authorization
### files.

[groups]

# за кой път иде реч (правата се унаследяват)
[/]
# правата на потребител (четене и писане)
user1 = rw
# правата на всички останали (пълна нула)
* =

conf/passwd

### This file is an example password file for svnserve.

[users]
user1 = password

Заключение
След като сме си свършили всичката работа следва да рестартираме за един последен път apache и xinetd и да започнем да си ползваме системата. За подробности за работата с нея … във връзките

Връзки
Trac
mod_python
Apache
Subversion
TracWebAdmin
TracAccountManager

Коментари
Няма коментари »
Категории
Статии
Tags
256 mb ram, Code, ntp, projects, Python, SVN, Trac
RSS коментари RSS коментари
Trackback Trackback

« Previous Entries

Разни Лични

  • БирБлог
  • На море
  • Шумилницата

Blogroll

  • Summerborn

Етикети

bash Code debian dhcp dhcpd dns dnsmasq encryption firewall fun gnupg installation iproute iptables jabber linux lqlqlq management memdisk mrtg n900 netboot new nokia Norton ntp pcsuite php ping port reborn router routing rsync secure shaper simple soho squid ssh tftp web webserver Конкурс сигурност
rss RSS коментари valid xhtml 1.1 get firefox