15 дек. 2010 г.

Стартовый скрипт прошивки dd-wrt для абонентов byfly


#!/bin/sh
mkdir /tmp/rym
VLAN="br0" #бриджевый интерфейс, связывающий Wi-Fi и порты
MY_LAN="192.168.100.48/28" # домашняя подсеть
MY_SERVER="192.168.100.56" # IP локального сервура(NAS, WebServer, Transmittion)

if [ ${VLAN} ]; then
ifconfig ${VLAN} up
sleep 1
else
exit
fi


# скрипт, отрабатывающий при поднятии гостевого соединения(маршруты прописываются для г.Минска)
echo "#!/bin/sh
VLAN=\"${VLAN}\"
MY_LAN=\"${MY_LAN}\"
MY_SERVER=\"${MY_SERVER}\"
IPTBL=\"/usr/sbin/iptables\"
RT=\"/sbin/route\"
\$IPTBL -A FORWARD -t filter -i \$1 -m state --state ESTABLISHED,RELATED -j ACCEPT
\$IPTBL -t nat -A POSTROUTING -o \$1 -s \$MY_LAN -d 0/0 -j MASQUERADE
### torrents
\$IPTBL -A FORWARD -p tcp -i \$1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT --dport 60885
\$IPTBL -A FORWARD -p udp -i \$1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT --dport 60885
\$IPTBL -t nat -A PREROUTING -p tcp -i \$1 -d \$5 --dport 60885 -j DNAT --to-destination \$MY_SERVER:60885
\$IPTBL -t nat -A PREROUTING -p udp -i \$1 -d \$5 --dport 60885 -j DNAT --to-destination \$MY_SERVER:60885
### http
\$IPTBL -A FORWARD -p tcp -i \$1 --dport 8080 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
\$IPTBL -A PREROUTING -t nat -p tcp -i \$1 -d \$5 --dport 8080 -j DNAT --to-destination \$MY_SERVER:80
### ssh
\$IPTBL -A FORWARD -p tcp -i \$1 --dport 22022 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
\$IPTBL -t nat -A PREROUTING -p tcp -i \$1 -d \$5 --dport 22022 -j DNAT --to-destination \$MY_SERVER:22
### transmittion
\$IPTBL -t nat -A PREROUTING -p tcp -i \$1 -d \$5 --dport 9090 -j DNAT --to-destination \$MY_SERVER:9091
\$IPTBL -A FORWARD -p tcp -i \$1 --dport 9090 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
sleep 1
\$RT add -net 86.57.151.0 netmask 255.255.255.224 \$1
\$RT add -host 86.57.251.28 \$1
\$RT add -host 86.57.253.1 \$1
\$RT add -host 86.57.253.1 \$1
\$RT add -host 193.232.248.79 \$1
\$RT add -host 193.232.248.80 \$1
\$RT add -host 82.209.245.151 \$1
\$RT add -host 194.158.206.240 \$1
\$RT add -host 194.158.206.241 \$1
\$RT add -host 194.158.206.246 \$1
\$RT add -host 194.158.202.59 \$1
\$RT add -host 82.209.195.15 \$1
\$RT add -net 86.57.250.0 netmask 255.255.254.0 \$1
\$RT add -net 86.57.246.0 netmask 255.255.255.0 \$1
\$RT add -net 93.84.112.0 netmask 255.255.248.0 \$1
\$RT add -net 178.124.128.0 netmask 255.255.248.0 \$1
\$RT add -net 91.149.189.0 netmask 255.255.255.128 \$1
\$RT add -net 91.149.189.128 netmask 255.255.255.192 \$1
\$RT add -net 93.125.53.0 netmask 255.255.255.0 \$1
\$RT add -net 178.172.148.0 netmask 255.255.255.0 \$1
\$RT add -net 91.149.157.0 netmask 255.255.255.128 \$1
\$RT add -net 91.149.157.192 netmask 255.255.255.192 \$1
\$RT add -net 93.125.30.0 netmask 255.255.254.0 \$1
\$RT add -host 194.158.199.177 \$1
\$RT add -host 82.209.240.241 \$1
\$RT add -host 82.209.243.241 \$1
\$RT add -net 1.0.0.0/8 \$1
sleep 1
" > /tmp/rym/guest.ip-up
chmod +x /tmp/rym/guest.ip-up


# скрипт, отрабатывающий при отваливании гостевого соединения(чистка iptables и маршрутов)
echo "#!/bin/sh
VLAN=\"${VLAN}\"
MY_LAN=\"${MY_LAN}\"
MY_SERVER=\"${MY_SERVER}\"
IPTBL=\"/usr/sbin/iptables\"
RT=\"/sbin/route\"
\$IPTBL -D FORWARD -t filter -i \$1 -m state --state ESTABLISHED,RELATED -j ACCEPT
\$IPTBL -t nat -D POSTROUTING -o \$1 -s \$MY_LAN -d 0/0 -j MASQUERADE
### torrents
\$IPTBL -D FORWARD -p tcp -i \$1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT --dport 60885
\$IPTBL -D FORWARD -p udp -i \$1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT --dport 60885
\$IPTBL -t nat -D PREROUTING -p tcp -i \$1 -d \$5 --dport 60885 -j DNAT --to-destination \$MY_SERVER:60885
\$IPTBL -t nat -D PREROUTING -p udp -i \$1 -d \$5 --dport 60885 -j DNAT --to-destination \$MY_SERVER:60885
### http
\$IPTBL -D FORWARD -p tcp -i \$1 --dport 8080 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
\$IPTBL -D PREROUTING -t nat -p tcp -i \$1 -d \$5 --dport 8080 -j DNAT --to-destination \$MY_SERVER:80
### ssh
\$IPTBL -D FORWARD -p tcp -i \$1 --dport 22022 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
\$IPTBL -t nat -D PREROUTING -p tcp -i \$1 -d \$5 --dport 22022 -j DNAT --to-destination \$MY_SERVER:22
### transmittion
\$IPTBL -t nat -D PREROUTING -p tcp -i \$1 -d \$5 --dport 9090 -j DNAT --to-destination \$MY_SERVER:9091
\$IPTBL -D FORWARD -p tcp -i \$1 --dport 9090 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
sleep 1
\$RT del -net 86.57.151.0 netmask 255.255.255.224 \$1
\$RT del -host 86.57.251.28 \$1
\$RT del -host 86.57.253.1 \$1
\$RT del -host 86.57.253.1 \$1
\$RT del -host 193.232.248.79 \$1
\$RT del -host 193.232.248.80 \$1
\$RT del -host 82.209.245.151 \$1
\$RT del -host 194.158.206.240 \$1
\$RT del -host 194.158.206.241 \$1
\$RT del -host 194.158.206.246 \$1
\$RT del -host 194.158.202.59 \$1
\$RT del -host 82.209.195.15 \$1
\$RT del -net 86.57.250.0 netmask 255.255.254.0 \$1
\$RT del -net 86.57.246.0 netmask 255.255.255.0 \$1
\$RT del -net 93.84.112.0 netmask 255.255.248.0 \$1
\$RT del -net 178.124.128.0 netmask 255.255.248.0 \$1
\$RT del -net 91.149.189.0 netmask 255.255.255.128 \$1
\$RT del -net 91.149.189.128 netmask 255.255.255.192 \$1
\$RT del -net 93.125.53.0 netmask 255.255.255.0 \$1
\$RT del -net 178.172.148.0 netmask 255.255.255.0 \$1
\$RT del -net 91.149.157.0 netmask 255.255.255.128 \$1
\$RT del -net 91.149.157.192 netmask 255.255.255.192 \$1
\$RT del -net 93.125.30.0 netmask 255.255.254.0 \$1
\$RT del -host 194.158.199.177 \$1
\$RT del -host 82.209.240.241 \$1
\$RT del -host 82.209.243.241 \$1
\$RT del -net 1.0.0.0/8 \$1
sleep 1
" > /tmp/rym/guest.ip-down
chmod +x /tmp/rym/guest.ip-down
# скрипт, отрабатывающий при поднятии интернет соединения
echo "#!/bin/sh
VLAN=\"${VLAN}\"
MY_LAN=\"${MY_LAN}\"
MY_SERVER=\"${MY_SERVER}\"
IPTBL=\"/usr/sbin/iptables\"
RT=\"/sbin/route\"
\$IPTBL -A FORWARD -t filter -i \$1 -m state --state ESTABLISHED,RELATED -j ACCEPT
\$IPTBL -t nat -A POSTROUTING -o \$1 -s \$MY_LAN -d 0/0 -j MASQUERADE
### torrents
\$IPTBL -A FORWARD -p tcp -i \$1 -d \$5 --dport 60885 -j REJECT
\$IPTBL -A FORWARD -p udp -i \$1 -d \$5 --dport 60885 -j REJECT
### http
\$IPTBL -A FORWARD -p tcp -i \$1 --dport 8080 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
\$IPTBL -A PREROUTING -t nat -p tcp -i \$1 -d \$5 --dport 8080 -j DNAT --to-destination \$MY_SERVER:80
### ssh
\$IPTBL -A FORWARD -p tcp -i \$1 --dport 22022 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
\$IPTBL -t nat -A PREROUTING -p tcp -i \$1 -d \$5 --dport 22022 -j DNAT --to-destination \$MY_SERVER:22
### transmittion
\$IPTBL -t nat -A PREROUTING -p tcp -i \$1 -d \$5 --dport 9090 -j DNAT --to-destination \$MY_SERVER:9091
\$IPTBL -A FORWARD -p tcp -i \$1 --dport 9090 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
sleep 1
" > /tmp/rym/int.ip-up
chmod +x /tmp/rym/int.ip-up
# скрипт, отрабатывающий при отваливании интернет соединения
echo "#!/bin/sh
VLAN=\"${VLAN}\"
MY_LAN=\"${MY_LAN}\"
MY_SERVER=\"${MY_SERVER}\"
IPTBL=\"/usr/sbin/iptables\"
RT=\"/sbin/route\"
\$IPTBL -D FORWARD -t filter -i \$1 -m state --state ESTABLISHED,RELATED -j ACCEPT
\$IPTBL -t nat -D POSTROUTING -o \$1 -s \$MY_LAN -d 0/0 -j MASQUERADE
### torrents
\$IPTBL -D FORWARD -p tcp -i \$1 -d \$5 --dport 60885 -j REJECT
\$IPTBL -D FORWARD -p udp -i \$1 -d \$5 --dport 60885 -j REJECT
### http
\$IPTBL -D FORWARD -p tcp -i \$1 --dport 8080 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
\$IPTBL -D PREROUTING -t nat -p tcp -i \$1 -d \$5 --dport 8080 -j DNAT --to-destination \$MY_SERVER:80
### ssh
\$IPTBL -D FORWARD -p tcp -i \$1 --dport 22022 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
\$IPTBL -t nat -D PREROUTING -p tcp -i \$1 -d \$5 --dport 22022 -j DNAT --to-destination \$MY_SERVER:22
### transmittion
\$IPTBL -t nat -D PREROUTING -p tcp -i \$1 -d \$5 --dport 9090 -j DNAT --to-destination \$MY_SERVER:9091
\$IPTBL -D FORWARD -p tcp -i \$1 --dport 9090 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
sleep 1
" > /tmp/rym/int.ip-down
chmod +x /tmp/rym/int.ip-down

#файл настройки интернет ppoe-соединения
echo "plugin /usr/lib/rp-pppoe.so
nic-${VLAN}
noccp
nomppc
noipdefault
noauth
defaultroute
noaccomp
nobsdcomp
nodeflate
nopcomp
nomppe
user 'user@beltel.by'
password 'pass'
default-asyncmap
mtu 1492
mru 1492
persist
maxfail 0
holdoff 30
unit 1
lcp-echo-interval 10
ip-up-script /tmp/rym/int.ip-up
ip-down-script /tmp/rym/int.ip-down
lcp-echo-failure 5" > /tmp/rym/int.pppoe
#файл настройки гостевого ppoe-соединения
echo "plugin /usr/lib/rp-pppoe.so
nic-${VLAN}
noccp
nomppc
noipdefault
noauth
nodefaultroute
noaccomp
nobsdcomp
nodeflate
nopcomp
nomppe
user 'user@guest'
password 'pass'
default-asyncmap
mtu 1492
mru 1492
persist
maxfail 0
holdoff 30
unit 0
lcp-echo-interval 10
ip-up-script /tmp/rym/guest.ip-up
ip-down-script /tmp/rym/guest.ip-down
lcp-echo-failure 5" > /tmp/rym/guest.pppoe
sleep 1
#на всякий случай
/usr/sbin/iptables -A FORWARD -t filter -i ${VLAN} -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
/usr/sbin/iptables -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
/usr/sbin/iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP
sleep 1
#поднятие гостевого соединения
pppd file /tmp/rym/guest.pppoe
sleep 2
#подянтие интернет соединения
pppd file /tmp/rym/int.pppoe
sleep 2
Сохраняем данный скрипт через веб морду в автозапуск - перезагружаем роутер - и вуаля - все поднимается, при отваливании соединений - они автоматом поднимаются, и восстанавливают все настройки.
ЗЫ: Необходимо заменить user и pass на свои

10 дек. 2010 г.

Конвертация множества jpeg в pdf

Для конвертации множества картинок в pdf можно использовать ImageMagick как указано по данным ссылкам: 1 и 2

15 нояб. 2010 г.

Не логиниться kopete к серверу ICQ

Сегодня не смог подключиться к ICQ посредством Kopete. Результатом решения проблемы стало выставление в параметрах подключения учетной записи "Заменить стандартную информацию о сервере " на login.icq.com. И вуаля - все работает

1 нояб. 2010 г.

Оптимизация ядра opensuse 11.3 для Dell Inspiron 1525

Начитавшись статей по оптимизации ядра для своих нужд, решил и для своего ноутбука собрать собственное ядро. Основополагающей статьей является описание на linuxcenter.ru .
Собственно для начала нам нужны исходники установленного ядра (kernel-devel),  и в зависимости от того, чем мы будем пользоваться при создании своего конфига - дополнительные либы. Я предпочел настраиваться при помощи xconfig, соответственно мне понадобились либы Qt.
#cd /usr/src/linux
#make mrproper
#make xconfig
Далее изменил значения в следующих ветках(описание не пишу, ибо все они описаны в статье)


Split the kernel package into multiple RPMs (SPLIT_PACKAGE) => n

general:
Prompt for development and/or incomplete code/drivers (EXPERIMENTAL) => n
Local version - append to kernel release (LOCALVERSION) => my

Enable loadable module support (MODULES)
Module versioning support (MODVERSIONS) => n
Processor type and features:
Support for extended (non-PC) x86 platforms (X86_EXTENDED_PLATFORM) => n
Processor family
Core 2/newer Xeon (MCORE2)
 Preemption Model =>
  Preemptible Kernel (Low-Latency Desktop) (PREEMPT)
/dev/cpu/microcode - microcode support (MICROCODE)
AMD microcode patch loading support (MICROCODE_AMD) => n
/dev/cpu/*/msr - Model-specific register support (X86_MSR) => n
/dev/cpu/*/cpuid - CPU information support (X86_CPUID) => n
Old style AMD Opteron NUMA detection (K8_NUMA) => n
ACPI NUMA detection (X86_64_ACPI_NUMA) => n
NUMA emulation (NUMA_EMU) => n
Allow for memory hot-add (MEMORY_HOTPLUG) => n
EFI runtime service support (EFI) => n
Timer frequency => 1000Hz

Power management and ACPI options
ACPI (Advanced Configuration and Power Interface) Support (ACPI)
AC Adapter (ACPI_AC) => y
Battery (ACPI_BATTERY) => y
Fan (ACPI_FAN) =>y
Processor (ACPI_PROCESSOR) => y
Thermal Zone (ACPI_THERMAL) =>y
NUMA support (ACPI_NUMA) =>n
Debug Statements (ACPI_DEBUG) =>n

Device Drivers
Parallel port support (PARPORT) => n
Block devices (BLK_DEV)
Compaq SMART2 support (BLK_CPQ_DA)=>n
Compaq Smart Array 5xxx support (BLK_CPQ_CISS_DA)=>n
Mylex DAC960/DAC1100 PCI RAID Controller support (BLK_DEV_DAC960)=>n
Twofish encryption for loop device for old S.u.S.E. crypto partitions (CIPHER_TWOFISH)=>n
Network device support (NETDEVICES)
ARCnet support (ARCNET)=>n
  SLIP (serial line) support (SLIP) => n
Multimedia support (MEDIA_SUPPORT)
  Radio Adapters (RADIO_ADAPTERS) => n
  DVB/ATSC adapters (DVB_CAPTURE_DRIVERS) => n

Serial ATA and Parallel ATA drivers (ATA) => y
  AHCI SATA support (SATA_AHCI) =>y


Networking support (NET)

Networking options

Packet socket (PACKET) => y
The IPv6 protocol (IPV6) =>n
Sound card support (SOUND)
Advanced Linux Sound Architecture (SND)
PCI sound devices (SND_PCI)
все убрал кроме
Intel/SiS/nVidia/AMD/ALi AC97 Controller (SND_INTEL8X0)
Intel/SiS/nVidia/AMD MC97 Modem (SND_INTEL8X0M)
Intel HD Audio (SND_HDA_INTEL)
оставил только








Build hwdep interface for HD-audio driver (SND_HDA_HWDEP)
Support digital beep via input layer (SND_HDA_INPUT_BEEP)
Support jack plugging notification via input layer (SND_HDA_INPUT_JACK)
Build Realtek HD-audio codec support (SND_HDA_CODEC_REALTEK)
Build IDT/Sigmatel HD-audio codec support (SND_HDA_CODEC_SIGMATEL)
Build INTEL HDMI HD-audio codec support (SND_HDA_CODEC_INTELHDMI)
Enable generic HD-audio codec parser (SND_HDA_GENERIC)
Aggressive power-saving on HD-audio (SND_HDA_POWER_SAVE)


File systems
Caches
  Filesystem caching on files (CACHEFILES) => n
The Extended 4 (ext4) filesystem (EXT4_FS)=>y
FUSE (Filesystem in Userspace) support (FUSE_FS)=>y
Character device in Userpace support (CUSE)=>m
DOS/FAT/NT Filesystems
VFAT (Windows-95) fs support (VFAT_FS)=>y
Default codepage for FAT (FAT_DEFAULT_CODEPAGE)=>866
Default iocharset for FAT (FAT_DEFAULT_IOCHARSET)=>utf8
NTFS file system support (NTFS_FS)=>y
NTFS write support (NTFS_RW)=>y
Native language support (NLS)
Default NLS Option (NLS_DEFAULT)=>utf8
Windows CP1251 (Bulgarian, Belarusian) (NLS_CODEPAGE_1251)=>y
NLS UTF-8 (NLS_UTF8)=>y

Kernel hacking
Kernel debugging (DEBUG_KERNEL)
После сохранения настроек выполняем

# make bzImage CONFIG_DEBUG_SECTION_MISMATCH=y
# make modules CONFIG_DEBUG_SECTION_MISMATCH=y
# make modules_install
# make install

Для увеличения произвидительности ФС ext3/ext4 необходимо в fstab прописать следующие опции для данных разделов:
 acl,user_xattr,noatime,nodiratime,barrier=1

Для  увеличения скорости доступа к файлам необходимо включить индексирование на данных разделах, для этого необходимо отмонтировать разделы(если раздел содержит / или /home необходимо загрузиться с liveCD и произвести данные манипуляции).

Сначала нужно указать режим журналирования:
# tune2fs -O dir_index /dev/sda1

Затем – включить индексацию существующих директорий:
e2fsck -D /dev/sda1

Выполнение команды e2fsck может занять немного времени – это зависит от размера вашего раздела и количества директорий в нем.

Для оптимизации системного кэша редактируем файл /etc/sysctl.conf и добавим в конец файла строки
vm.swappiness = 10
vm.vfs_cache_pressure = 500

После перезагрузки наслаждаемся улучшенной работой нашей ОСи.

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

30 окт. 2010 г.

Настройка DIR-300 для ByFly и поднятие 2-х ppoe соединений

ВНИМАНИЕ!! ДАННАЯ СТАТЬЯ ПРЕДНАЗНАЧАЕТСЯ ТОЛЬКО ДЛЯ ОЗНАКОМЛЕНИЯ И АВТОР НЕ НЕСЕТ НИКАКОЙ ОТВЕТСВЕННОСТИ В СЛУЧАЕ ИСПОЛЬЗОВАНИЯ МАТЕРИАЛОВ ДАННОЙ СТАТЬИ 

Приобрел на днях вай-фай роутер D-Link D-300 и решил его настроить для собственных нужд(поднятие 2-х соединений для интернета и гостевого доступа, управление всей подсетью). По умолчанию DIR-300 разрешает поднимать только одно pppoe соединение, но на помощь пришла прошивка DD-WRT. Прошивка роутера под ОС Windows  производиться по инструкции, под ОС Linux необходимо настроить и запустить tftp сервер. В моем случае это был atftp. Устанавливаем оный при помощи #zypper in atftp.
После лезем в файл настройки /etc/sysconfig/atftpd и в  ATFTPD_DIRECTORY указываем путь к папке, в которой у нас будут лежать необходимые файлы необходимые для прошивки(ap61.ram, ap61.rom,linux.bin, которые берем здесь для DIR-300), в моем случает - /srv/tftp. Запукаем сервер atftp
#/etc/atftpd start и прошиваем следуя инструкциям.
Данная прошивка позволяет также соединять две и более точки в беспроводную сеть по технологии WDS. Т.к. у меня модем "Промсвязь 200 А", который построен на базе ZTE zte w300, который тоже теоретически может участвовать в построении беспроводной сети по технологии WDS, были попытки соединить их посредством Wi-Fi, хотя оные не увенчались успехом(после знающие люди сказали что к сожалению "Промсвязь 200 А" не держит WDS). Но все таки можно расширить зону покрытия при помощи соединения модема и роутера посредством кабеля.
Для правильной работы необходимо перевести модем в режим моста.
И настроить dhcp(если оный будет использоваться) на дублирование с нашего роутера

Далее настраивается сам роутер. Для поднятия двух соединений необходимо в administration -> commands
ввести следующий текст
#!/bin/sh

## VLAN - сетевой интерфейс, его можно посмотреть через ifconfig на роутере ##

VLAN="br0"
GUEST_PPP="ppp0"
INET_PPP="ppp1"

if [ ${VLAN} ]; then
ifconfig ${VLAN} up
sleep 1
else
exit
fi


## файл для настройки интернет соединения
echo "plugin /usr/lib/rp-pppoe.so
nic-${VLAN}
noccp
nomppc
noipdefault
noauth
defaultroute
noaccomp
nobsdcomp
nodeflate
nopcomp
nomppe
user '№Договора@beltel.by'
password 'пароль'
default-asyncmap
mtu 1492
mru 1492
persist
maxfail 0
holdoff 30
unit 1
lcp-echo-interval 10
lcp-echo-failure 5" > /tmp/int.pppoe

# файл настройки для гостевого соединения
echo "plugin /usr/lib/rp-pppoe.so
nic-${VLAN}
noccp
nomppc
noipdefault
noauth
nodefaultroute
noaccomp
nobsdcomp
nodeflate
nopcomp
nomppe
user '№Договора@guest'
password 'пароль'
default-asyncmap
mtu 1492
mru 1492
persist
maxfail 0
holdoff 30
unit 0
lcp-echo-interval 10
lcp-echo-failure 5" > /tmp/guest.pppoe

## поднятие соединений

pppd file /tmp/guest.pppoe
sleep 5
pppd file /tmp/int.pppoe
sleep 5

## настройка для работы интернета в целом
## 192.168.100.48/28 - моя подсеть, 192.168.100.53 - мой IP

GUEST_IP="`ifconfig |grep ${GUEST_PPP} -A1 |grep -e addr:| awk '{print($2)}'| awk -F : '{print($2)}'`"

iptables -A FORWARD -t filter -i ${VLAN} -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -t filter -i ${GUEST_PPP} -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o ${GUEST_PPP} -s 192.168.100.48/28 -d 0/0 -j MASQUERADE
iptables -A FORWARD -t filter -i ${INET_PPP} -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o ${INET_PPP} -s 192.168.100.48/28 -d 0/0 -j MASQUERADE


### настройка для возможности качать с торрентов ( в даннмо случае udp:60881 и 60884, tcp: 60885)
iptables -t nat -A PREROUTING -p tcp -i ${GUEST_PPP} -d ${GUEST_IP} --dport 60885 -j DNAT --to-destination 192.168.100.53:60885
iptables -t nat -A PREROUTING -p udp -i ${GUEST_PPP} -d ${GUEST_IP} --dport 60881 -j DNAT --to-destination 192.168.100.53:60881
iptables -t nat -A PREROUTING -p udp -i ${GUEST_PPP} -d ${GUEST_IP} --dport 60884 -j DNAT --to-destination 192.168.100.53:60884

### Несмотря на наличие в настройках соединений default route - он все равно не сбрасывается
route del default
sleep 3
route add default ${INET_PPP}
sleep 3


## маршруты к гостевым ресурсам для минска, согласно батнику на FTP байфлая
route add -net 86.57.151.0 netmask 255.255.255.224 ${GUEST_PPP}
route add -host 86.57.251.28 ${GUEST_PPP}
route add -host 86.57.253.1 ${GUEST_PPP}
route add -host 86.57.253.1 ${GUEST_PPP}
route add -host 193.232.248.79 ${GUEST_PPP}
route add -host 193.232.248.80 ${GUEST_PPP}
route add -host 82.209.245.151 ${GUEST_PPP}
route add -host 194.158.206.240 ${GUEST_PPP}
route add -host 194.158.206.241 ${GUEST_PPP}
route add -host 194.158.206.246 ${GUEST_PPP}
route add -host 194.158.202.59 ${GUEST_PPP}
route add -host 82.209.195.15 ${GUEST_PPP}
route add -net 86.57.250.0 netmask 255.255.254.0 ${GUEST_PPP}
route add -net 86.57.246.0 netmask 255.255.255.0 ${GUEST_PPP}
route add -net 93.84.112.0 netmask 255.255.248.0 ${GUEST_PPP}
route add -net 178.124.128.0 netmask 255.255.248.0 ${GUEST_PPP}
route add -net 91.149.189.0 netmask 255.255.255.128 ${GUEST_PPP}
route add -net 91.149.189.128 netmask 255.255.255.192 ${GUEST_PPP}
route add -net 93.125.53.0 netmask 255.255.255.0 ${GUEST_PPP}
route add -net 178.172.148.0 netmask 255.255.255.0 ${GUEST_PPP}
route add -net 91.149.157.0 netmask 255.255.255.128 ${GUEST_PPP}
route add -net 91.149.157.192 netmask 255.255.255.192 ${GUEST_PPP}
route add -net 93.125.30.0 netmask 255.255.254.0 ${GUEST_PPP}
route add -host 194.158.199.177 ${GUEST_PPP}
route add -host 82.209.240.241 ${GUEST_PPP}
route add -host 82.209.243.241 ${GUEST_PPP}

И нажать на кнопку save startup, после чего - перезагрузить роутер(мин 5 ему на это потребуется)
После данных манипуляций работает и гость и платник.

UPD: Для просмотра IPTV от Zala.by при подключении приставки к нашему dir-300 необходимо в загрузочный скрипт добавить
iptables -t nat -A PREROUTING -m mac --mac-source хх:хх:хх:хх:хх:хх -j DNAT --to-destination 192.168.100.50
 где хх:хх:хх:хх:хх:хх - мак адрес нашей приставки(указан в договоре), 192.168.100.50 - адрес нашего модема. Вроде все должно при этом работать, но при включении IPTV  - пропадает интернет и вешается маршрутизатор, а при длительном просмотре - отваливается интернет соединение и вовсе - так что все равно придется подключать приставку от IPTV напрямую к модему.
Upd: обновленная версия скрипта запуска лежит здесь

18 окт. 2010 г.

Установка и тестирование OCR tesseract

Прочитал довече статейку о выпуске новой версии tesseract - системы оптического распознования текста c открытым исходным кодом и решил установить и проверить в действии. На сайте в ридми написано что для корректной работы необходимы следующие библиотеки: libpng, libjpeg, libtiff, zlib. Установил все это при помощи комманды:
zypper in libpng12-devel libjpeg-devel libtiff-devel zlib-dev
Для корректной работы также необходим пакет leptonica  - ПО с открытым исходным кодом, необходимый для приложений, работающих и анализирующих изображения. Загружаем leptonica, разархивируем и устанавливаем стандартным способом:
./configure && make && make install && ldconfig
Разархивируем tesseract и устанавливаем
./configure && make && make install && ldconfig
Скачиваем языки для распознавания (tesseract-..tar.gz ) и разархивируем в  /usr/local/share/tessdata. И вуаля - можно использовать tesseract для распознования текстов.
Тестирование.
Распознование производится из коммандной строки по шаблону:
tesseract картинка выходной файл [-l язык]
 Для тестирования использовался первый попавшийся  под руку лист с текстом (фотографировался цифровым фотоаппаратом с разрешением 3000х4000)
При попытке распознования tesseract 1.jpg 1txt -l rus получил ошибку
name_to_image_type:Error:Unrecognized image type:1.jpg
IMAGE::read_header:Error:Can't read this image type:1.jpg
Read of file 1.jpg failed.
В результате пришлось конвертировать файл в формат tiff( размер файла увеличился с 2.6 Мб до 45.8 Мб). После данной манипуляции файл распознался, но сносно. При попытке кадрирования, для захвата  только листа с текстом - результат получился хуже.
Скорее всего при сканировании документов через сканер и распознования оных результ получится по лучше, но проверить сие утверждение не имею физической возможности.

12 окт. 2010 г.

Kwin падает на KDE > 4.5

После долгих мучений, связанных с постоянным падением Kwin, переустановок пакетов Qt, KDE, Mesa(т.к. являюсь обладателем встроенной видеокарты от Intel), alsa(т.к. и на данные дрова тоже грешил) на одном из форумов был случайным образом найден ответ на причины падения Kwin - для стабильной работы необходимо было включить в Параметрах системы -> эффекты рабочего стола -> дополнительно -> вертикальная синхронизация(сия манипуляция проводилась на Opensuse 11.3 x64 - в других дистрибах должно быть что то подобное). После ребута - уже сутки аптайм :)

24 сент. 2010 г.

Создание виртуального сервера для разработки

Для работы нам потребуется VMplayer и linux дистрибутив на основе которого мы будем поднимать наш сервер(для себя я выбрал Opensuse). При помощи VMplayera создаем новую виртуальную машину и в качестве CD-ROM указываем iso образ нашего дистрибутива, указываем ограничение на RAM в 256Мб(вполне хватает для работы apache и MySQL). При создании виртуальной машины vmplayer мне предложил автоматическую установку, но я отказался, т.к. он по дефолту поставил бы графическую оболочку. При установке выбираем графическую оболочку(X minimal - text mode) и необходимые пакеты(Apache, php, MySQL) и ждем завершения установки. После установки в настройках виртуальной машины выбираем shared folders и добавляем папку, в которой будут лежать наши проекты(в моем случае папка ~/projects и назвал я её local). Загружаем виртуальную машину, добавляем в /etc/fstab запись о shared folders:
.host:/local /mnt/hgfs vmhgfs rw,umask=0000 0 0
Лезем править конфигурационные файлы:
  • для apache лезем в  /etc/apache2/listen.conf и раскомментируем строку
    NameVirtualHost *:80
    - для работы виртуальных хостов
  •  для apache лезем в /etc/apache2 и добавляем строчку
    Include /mnt/hgfs/hosts/*.conf
    (для удобства - все конфигурационные файлы для apache лежат в ~/projects/hosts/)
Для корректной работы необходимо также разрешить firewall пропускать Apache и Mysql во внешний мир(~: yast2 -> Security & users -> firewall -> allowed services)
Перезагружаемся - вуаля - сервер работает.

Для полного счастья необходимо установить на сервер PHPMyAdmin и не обходимые модули для php, которые требует PMA(mcrypt, mbstring)

28 июл. 2010 г.

Ошибка ksmserver на opensuse 11.3 x64

После сетевого обновления перестал стартовать KDE с ошибкой "Could not start ksmserver. Check your installation". Решением данной проблемы было понижение версий libkde4, kdebase4, kdebase4-runtime при помощи данных комманд:
#zypper in -r 11.3_DVD -f kdebase4-4.4.4-1.5
#zypper in -r 11.3_DVD -f kdebase4-runtime-4.4.4-2.4
#zypper in -r 11.3_DVD -f libkde4-4.4.4-2.5
Где 11.3_DVD - мой репозитарий из образа установки 11.3

20 июл. 2010 г.

Nepomuk Strigi

Еще со времени opensuse 11.2 не работал полнотекстовый поиск nepomuk strigi выдавал ошибку об отсутствии provider-а для поиска. Ошибка исправляется простым удалением каталога ~/.kde4/share/apps/nepomuk/repository/main коммандой $ rm -Rf `kde4-config --localprefix`/share/apps/nepomuk/repository/main
Можно также подправить файл ~/.kde4/share/config/nepomukserverrc и заменить на
Used Soprano Backend=redland
на Used Soprano Backend=virtuosobackend

16 июл. 2010 г.

Обновление opensuse с 11.2 до 11.3

Вчера наконец-то состоялся релиз 11.3 ну и я не долго думая решил обновить систему. Обновление прошло почти без заминок следующими шагами:
1. скачал DVD-образ 11.3
2. заменил старый образ в списке репозитариев на новый
3. выполнил #zypper dup -l -r dvd (где dvd - репозиторий из образа DVD)
вуаля - ушел на ребут и все стартануло на ура

Upd: т.к. в системе стоял ndiswrapper собранный вручную - отвалился именно он и соответственно wifi - установка ndiswrapper решила все проблемы.
Возникли так же проблеммы с 3D на рабочем столе(compiz), все дело было в настройках рабочего стола - дополнительно - OpenGL - растровые текстуры (стояла разделенная память - и напрочь отказывалась работать), версия драйвера Mesa оказалась не при чем

Upd2: не хотел нормально работать точпад - не реагировал на нажатие(tap). Решение состоит в добавлении в файл /etc/X11/xorg.conf.d/20-synaptics.conf строчки
Option "TapButton1" "1"
в секции InputClass

23 июн. 2010 г.

unlock 3.1.3 Iphone 3GS b 06.04 с модемом 05.12.01

После одних не совсем ровных рук ко мне попал яблофон 3ГС, прошитый до версии 3.1.3 с поднятием версии модема до 05.12.01. Ковыряние тырнета месяц назад не принес никаких результатов кроме как понижение версии прошивки до 3.1.2(скачать можно с blackra1n.org) при помощи рекавери из ITunes (предварительно внеся в файл C:\WINDOWS\system32\drivers\etc\hosts запись 74.208.10.249 gs.apple.com) и джейл тулзой blackra1n. И вот в тырнете появилось лекарство для 3ГС - в сидии добавить репозиторий repo666.ultrasn0w.com и установить прилагу ultrasn0w - в результате чего яблофон перезагрузится и найдет симку.

21 июн. 2010 г.

Корректное монтирование USB накопителей в OpenSuse 11.2

Проблема: при автомонтировании флеш накопителей с файловой системой FAT при помощи плазмойда device notifier происходит некорректное отображение русской кодировки.
Решение как оказалось не совсем то и быстрое, но единственное которое помогло.
Подводный камень нашелся при помощи просмотра файла конфигурации ядра
>zcat /proc/config.gz | grep FAT
CONFIG_FAT_FS=m
CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=366
CONFIG_FAT_DEFAULT_IOCHARSET="ISO-8859-1"

Необходимо было поправить настройки ядра и пересобрать оное.
Сырцы ядра у меня лежали вот сдеся: /usr/src/linux
для конфигурации использовалась графическая оболочка xconfig
>make  xconfig - для работы необходим qt3
после правки настроек file systems -> DOS/FAT/NT File systems для VFAT были выставлены default codepage в 866 и iocharset в utf8
ну и после собственно сама сборка ядра
#make && make install &&make modules_install
несмотря на то что исходники весят 400 мб после сборки размер увеличился до 5Гб , так что необходимо предусмотреть наличие свободного места на диске.
После сборки у меня ядро заменило существующее соответственно не пришлось править настройки загрузчика.

После перезагрузки поотваливались wifi, vmware. Wi-fi поднялся без проблем а vmware player не закхотел пересобирать свои модули т.к. говорил что ядро не обновилось, а старые не хотели подгружаться по причине нейкой несовместимости но все решилось переустановкой самого vmplayera.

PS. Корректировка некоторых параметров позитивно сказалась на производительности.

настройка сети в VMPlayer под Linux

Как то возникла необходимость поправить настройки сети для виртуальной машины, т.к. изначально там все работает под DHCP, а мне необходимо было присвоить статический адрес своему виртуальному серверу, не прописывая жестко настройки на самом сервере. Исходные данные:
ifconfig
vmnet1 Link encap:Ethernet HWaddr 00:50:56:C0:00:01
inet addr:192.168.170.1 Bcast:192.168.170.255 Mask:255.255.255.0
inet6 addr: fe80::250:56ff:fec0:1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:32 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

 Необходимо сделать что б виртуальная машина находилась в подсети 192.168.40.0/24 и имела статический адрес 192.168.40.2 посредствам DHCP.

Для поставленной задачи необходимо поправить 2 файла.
В файле /etc/vmware/networking
answer VNET_1_HOSTONLY_NETMASK 255.255.255.0
answer VNET_1_HOSTONLY_SUBNET 192.168.40.0
В файле /etc/vmware/vmnet1/dhcpd/dhcpd.conf
subnet 192.168.40.0 netmask 255.255.255.0

Для нашего сервера дописываем

host devserver {
hardware ethernet 00:0c:29:7e:6f:29;
fixed-address 192.168.40.2;
}
где mac-адрес сервера = 00:0c:29:7e:6f:29

host vmnet1 {
hardware ethernet 00:50:56:C0:00:01;
fixed-address 192.168.40.1;
option domain-name-servers 0.0.0.0;
option domain-name "";
}
- наш dhcp сервер
и для полной работоспособности выставляем
subnet 192.168.40.0 netmask 255.255.255.0
Перезапускаем службы vmware
~ sudo /etc/init.d/vmware stop
~ sudo /etc/init.d/vmware start
И вуаля - получаем требуемый результат

4 мар. 2010 г.

Skype Проблемы с видео

При установке скайпа все нормально заработало, но не хотело работать видео(не проходило проверку, в консоли выбивало X Error, request 132, minor 18, error code 8 BadMatch (invalid parameter attributes)), в результате поисков в интернете нашел пару причин, по которым это может происходить:
1. Из-за пакета compiz
2. Из-за cairo-dock
 Удалять компиз я побоялся, т.к. в Opensuse 11.2 он интегрирован в КДЕ и при его удалении могли посыпаться различные ошибки.
 Пришлось удалить из автозагрузки Cairo-Dock(with OpenGL) и заменить его на Cairo-Dock(without OpenGL)  - получилось не так красиво как раньше, но зато была решена проблема со Skype

25 янв. 2010 г.

Видеосервис (потоковое видео) на apache2 под linux

Нужно скачать mod_flvx.c
закинуть его в /usr/lib/apache2 откомпилировать при помощи
# apxs2 -i -a -c mod_flvx.c
проверяем в /etc/sysconfig/apache2 наличие в стартовых модулях (APACHE_MODULES) записи flvx
прописываем в /etc/apache2/httpd.conf

AddType video/x-flv .flv
AddHandler flv-stream .flv

ребутаемся и при помощи apache2ctl -M проверяем наличие flvx_module
Грузим mplayer, если оного нету.(Так же необходим libmp3lame - иначе ничего не получиться - будет ругаться memplayer)
При компиляции не хотел ставиться и дико ругался на ivtv

vo_ivtv.c: In function 'ivtv_reset':
vo_ivtv.c:79: error: storage size of 'sd' isn't known
vo_ivtv.c:80: error: storage size of 'sd1' isn't known
vo_ivtv.c:84: error: 'IVTV_STOP_FL_HIDE_FRAME' undeclared (first use in this function)
vo_ivtv.c:84: error: (Each undeclared identifier is reported only once
vo_ivtv.c:84: error: for each function it appears in.)
vo_ivtv.c:87: error: 'IVTV_IOC_STOP_DECODE' undeclared (first use in this function)
vo_ivtv.c:97: error: 'IVTV_IOC_START_DECODE' undeclared (first use in this function)
vo_ivtv.c:80: warning: unused variable 'sd1'
vo_ivtv.c:79: warning: unused variable 'sd'
make[1]: *** [vo_ivtv.o] Error 1

Пришлось сконфигурировать без оной возможности, т.е.
./configure --disable-ivtv

Т.к. на сервере на не нужен mplayer а только menconver, то можно настроить при помощи строки

./configure --disable-ivtv --disable-mplayer

Для полного счастья необходима утилита flvtool, которая создает индексы в FLV файлах, что позволит использовать перемотку без кеширования полного файла,  а также ruby который необходим для запуска утилиты.

После установки flvtool можно конвертировать видео в FLV при помощи 2-х комманд:

mencoder \
orig.ext \
-ofps 25 \
-o dest_file.flv \
-of lavf \
-oac mp3lame \
-lameopts abr:br=64 \
-srate 22050 \
-ovc lavc \
-lavcopts vcodec=flv:keyint=50:vbitrate=300:mbd=2:mv0:trell:\
v4mv:cbp:last_pred=3 -vf scale=640:480

Данная комманда конвертирует видеофайл orig.ext в dest_file.flv. После этого нужно добавить индексы при помощи

flvtool2 -UP dest_file.flv

И вуаля - все работает(тестирование проводилось при помощи VLC, который спокойно играет потоковое видео).

Для показа видео на сайте можно использовать любой Flash-плеер, лично я использую JW, удобный для себя плеер можно выбрать здесь .

ЗЫ: наткнулся в интернете на статью, где написано что flvtool подходит только для небольших файлов, т.к. первоначально загружает весь видео-файл в память и только после начинает с ним работать, как аналог - предлагают использовать утилиту yamdi.
ЗЫЫ: для конвертации видео для PSP можно использовать следующие настройки (записать в  ~/.mplayer/mencoder.conf ) (стандартным плеером не проигрывает, а вот PMPlayer Advance(PPA) играет на ура):
[psp]
profile-desc="PSP MPEG4 encoding profile."
vf=harddup,dsize=16/9,scale=480,scale=:272,expand=480:272
ofps=30000/1001
ovc=lavc=1
oac=lavc=1
lavcopts=aglobal=1:vglobal=1:vcodec=mpeg4:acodec=libfaac:vbitrate=800:threads=4
of=lavf=1
lavfopts=format=mp4
af=lavcresample=24000,channels=2
srate=24000
msglevel=all=-1
Но для сих деяний необходимо установить аудио кодек aac и видео кодек x264


для плеера iRiver E150
mencoder INFILE.SOMETHING -vf scale=320,expand=320:240 -oac mp3lame -lameopts abr=128 -ovc xvid -xvidencopts bitrate=600:max_bframes=0:vhq=4 -of avi -o OUTFILE.AVI

9 янв. 2010 г.

Настройка Zend Studio в linux на примере OpenSuse

Скачав и установив себе Zend Studio 7.1.0 и посмотрев в свойства установки обнаружил что данная среда разработки крутится под jre-1.5, и решил поставить его на jre, которая находится в системе(1.6). Все оказалось просто:
слил последнее обновление для jre вот отсюда
установил сие обновление (подробная инструкция лежит по ссылке на странице для скачивания)
вставил запись в конфигурацию Zend (/usr/local/Zend/ZendStudioforEclipse-6.X.X/ZendStudio.ini) следующего содержания
-vm
/usr/java/jre1.6.0_17/lib/amd64/server/libjvm.so

как и было указано на офф сайте
Ну и для полного счастья можно ознакомится с полезностями по ускорению работы Zend Studio.
Для сокрытия папок .svn в проекте необходимо задать в PHP Explorer для данного проекта build path -> configure inclusion/exclusion filters **/.svn/, что позволит исключить папки .svn("**/" задает рекурсию)
PS: Все старания напрасны - Зенд Студио никак не хочет билдить проекты на неродном jre.