воскресенье, 7 июля 2013 г.

Тассос (Θάσος, Thassos, Тасос). Греция, фото, море, горы.


Остров Θάσος

В отпуск захотелось куда-нибудь съездить, чтобы и море, и горы, и походить-побродить было где.
Решили посмотреть, что же за такой остров Тассос (Thassos)? В Google Earth порылись  - показалось соблазнительно: горы до километра и больше высотой, огромные пляжи, грунтовки по всему острову (и, самое главное, по всему побережью). Как выяснилось, реальность не только не разочаровала, но оказалась даже богаче, чем воображение.Тур купили у Mouzenidis-Travel.

Ниже, несколько фотографий, сделанных в этой поездке (все кликабельно).

Из всех вариантов, в какое именно место ехать, выбрано было село Skala Potamia: это восточное побережье острова; с запада горы (причем, в этом месте самые высокие); песчаный пляж около трех километров. Вот как оно выглядит с высоты.

Гостиницу (Natasa Hotel) выбрали подальше от моря - чтобы не было шумно. Но, естественно, есть варианты и у самого пляжа. Вот, собственно, она :

С веранды отличный вид на Эгейское море:

А дальше - девять дней походов по горным тропинкам и купания в чистейшем море.

В горах около Skala Potamia распололожены два села: Potamia и Panagia. Оба очень живописные.
Вот Potamia с горы, у подножия которой она расположена.
Чистенькие улочки:
И повсюду цветы:

Вот такие жуки на острове (носорог), которого мы спасли от неминуемой гибели под колесами машин:



Panagia тоже очень своебразное и живописное место: крыши у домов покрыты не черепицей, как практически везде в средиземноморье, а сланцем (горы состоят частично из мрамора, частично из сланца). 
А еще около Panagia есть пещера. Назывется Драконья (Dragon Cave).Освещения в ней не предусмотрено, так что для посещения нужно запастись фанариком. После жары в ней так здорово!



Грунтовки, которые так соблазнительно выглядели на Google Earth, и в действительности оказались отличными дорогами, по которым машины практически не ездят (за все время ни разу не встратили ни одной машины). Лежат они на высоте 50-150 метров над морем, и с них открываются шикарные виды:
Скала вдоль дороги - мрамор.
А это, видимо при строительстве дороги, раскопали небольшую пещеру: видны натеки травертина(?):
Через пару дней захотелось забраться повыше и поближе посмотреть на скалы, которыми окружн поселок. Благо, для реализации этого желания все было: карта с нанесенными тропами и GPS навигатор.
Для начала решили забраться на седловину с высотой около 750 метров. Выйдя из села, попали на плантации олив (выращивание оливок и производство масла - это основа с.х. на острове).Этим деревьям, я думаю, не меньше 100 лет.
А выше начался лес с огромными платанами. Я таких старых и толстых платанов раньше никогда не видел. В дупле можно совершенно спокойно лечь и вытянуться во весь рост.
А это съедобный каштан цветет:


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

С высоты платаны видны как светлозеленые пятна:

Высота 750 была успешно покорена, и захотелось подняться на самую высокую вершину острова - гору Ипсарио (Ypsario). На снимке выше она в левом вехнем углу кадра. Подъем промаркирован, т.е. сбиться с пути сложно. Дорога идет через село Potamia  и переходит в  тропу, которая поднимается до самой вершины.

На горах растут сосны.


 А еще выше только скалы:

Зеленые кочки на фото выглядят очень мягкими - так и тянут посидеть на них. Но на деле, они по жесткости больше похожи на пластик и оснащены колючками.
Кстати, практически все кустарники колючие (видимо, чтобы их не объедали овцы и козы :) , которых на острове изобилие).
 И вот, наконец, вершина. Высота 1206 метров. Это геодезический знак.
С горы видно,  что мы действительно на острове - вокруг море.

Ну и конечно, Тассос - это еще и море. Море чистейшее.

Честно говоря, на "официальном" плаже мы купались только один раз (хотя лежаки, душ и прочее - все это есть): хотелось уединиться, да и жарко лежать целый день на пляже.

Вот один из диких пляжиков недалеко от поселка:

Камни и галька практически вся мраморная. Также лежат гнейсовые валуны:
Вот пляж подальше - туда, если лениво идти, местные могут привезти на лодке (или катере). 

Но мы до него ходили пешком.

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

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




На Тассосе основное производство - это добыча мрамора. Он  так и называется Show White Thassos Marble.
Вот один из карьеров по добыче мрамора. Высота где-то метров под двести.
Этот же карьер; "маленькие" машинки на фото - это катерпиллеры. Вырезаются огромные (~4x4x4) метра блоки из скалы, пилятся и отвозятся на здоровенных грузовиках.
Кроме мраморных плит как побочный продукт получают щебень, привозят для отправки к морю. На солнце этот щебень блестит как снег: небо и море кажутся очень темными в сравнении с ним.
 Вообще-то, по территории карьера ходить посторонним нельзя, но нам, как иностранцам, рабочие разрешили; предупредили  только, что ездят большшие грузовики:). Кстати, они вполне понятно объясняются на английском.

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

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




вторник, 5 февраля 2013 г.

формат sfpdf

Все нижеизложенное относится только к старым версиям просмотрщика на основе Foxit Reader и StarForce Reader 2.0.x.x (например, 2.0.6.1).
Появились документы, ккоторые можно просмотреть только с помощью StarForce Reader 3.3.x (текущая версия 3.3.96).
С ними такой способ не работает: в памяти процесса расшифрованный документ целиком не хранится.

 Принесли некий диск с "КАРДИОНЕВРОЛОГИЯ
Сборник статей и тезисов II Национального конгресса «Кардионеврология»"
Попросили напечтать несколько статей.

Оказалось, однако, что на диске не pdf, а некое поделие от StarForce (от той самой StarForce, что делала защиту для игрушек путем установки своего драйвера, который в т.ч. проверял ключ на CD, и х.з. чем еще потенциально мог заниматься :(  )

Идея защиты контента такая:
  при [авто]запуске приложения с диска, это самое приложение проверяет ключ на CD и распаковывает sfpdf в pdf (в памяти: на диске временных файлов не нашлось),
После этого, для распакованного файла запускает Foxit PDF Reader, который также находится на CD.
Без диска, естественно, контент не посмотришь.
Из reader-а документ можно только смотреть, нельзя копировать, нельзя печатать.

Но напечатать-то надо...
К счастью, выяснилось, это защита sfpdf  "от добрых людей".

Методика извлечения контента очень простая.
1. запускаем приложение с диска -> получаем запущенный экземпляр Foxit PDF Reader.
2. запускаем process explorer (из пакета sysinternals)
3. из procexp делаем полный дамп процесса foxit pdf reader.
4. в дампе находим %PDF-1.6 .... %EOF\x0d\x0a, и сохраняем этот фрагмент в отдельный файл с расширением .pdf
5. полученный pdf документ можно просматривать и печатать из любого pdf viewer-a.
6. если сам pdf защищен от печати, то, как вариант http://www.freemypdf.com/. Естественно, документы ДСП для снятия ограничений  туда лучше не совать :)




воскресенье, 16 декабря 2012 г.

openvpn box of TL-MR3020

Задача: с планшета ipad  mini wifi получить доступ в интернет и к внутренней сети организации через openvpn через wifi в гостинице и, при отсутствии wifi, через сеть 3G.

Как известно, для iOS нет официального openvpn клиента, и, судя по форуму openvpn (например, https://forums.openvpn.net/topic4568.html) в ближайшее время не появится.
Один вариант решения: jailbreak -> Cydia -> GuizmOVPN.
Этот  вариант описан на сайте разработчика http://www.guizmovpn.com/
Но для iOS 6 jailbreak пока не существует, не хочется делать jail, и у меня ipad mini wifi без 3G модуля.

Второй вариант: роутер с запущенным ovpn клиентом и с возможностью коннектиться как через 3G модем, так и через wifi адаптер. Этот вариант и реализован.
Вот как выглядит :

Вот так подаю доп. питание на hub :

По железу: 
 роутер TP-Link MR3020 (выбран из-за небольшого размера и возможности установить openwrt)/
 модем ZTE MF190 от Биланта, разлоченный и перешитый на MTS (как сделать, описано в http://4pda.ru/forum/index.php?showtopic=277903)
  Замечание: на прошивке от Movistar не смог заставить модем работать под openwrt: (но, м.б. это мои кривые руки /и нежелание долго ковыряться/)
 wifi адаптер, используемый в качестве клиента для подключения к точке доступа в гостинице: ASUS USB-N13 (Ralink rt2870)
 usb hub - купил по принципу : цена < 300р и возможность работать с SD/MicroSD картами (на всякий случай :) )
 доп. диск в моем случае SD 2Gb, но, естественно, можно использовать usb flash drive.

Как установить openwrt на роутер, описано в http://wiki.openwrt.org/toh/tp-link/tl-mr3020.
Я установил прошивку Attitude Adjustment Beta 2 snapshot (рекоммендуют ее). Но, скорее всего, проблем не будет и с lastest trunk snapshot. Выполнил начальную конфигурацию (доступ в интернет с lan порта (можно и с wlan, непринципиально)). Сделал это через web-интерфейс (так проще) Network->Interfaces->LAN, Network->Firewall.
Заходим telnet-ом на роутер и проверяем, что мы видим удаленные сайты (ping www.ru) 

Теперь, собственно, кастомизация:


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

1.Т.к. нам нужны доп.пакеты, читаем, как они устанавливаются http://wiki.openwrt.org/doc/packages.
Замечание1: для установки пакетов, нужен доступ в интернет с роутера (см.выше).
Замечание2: После рестарта роутера делаем opkg update (загрузка списка пакетов в tmpfs)
Замечание3: Устанавливаем нужный пакет в NAND командой opkg install <pkg>. 
Если нужно устанавливать пакет на usb (а это будет нужно),  читаем http://wiki.openwrt.org/doc/recipes/install.packages.on.usb-stick. Чтобы указать, что пакет нужно установить в /opt, указываем opkg install <pkg> -d opt.
Вот /etc/opkg.conf  с добавленным /opt в качестве места назначения для установки.
====
src/gz attitude_adjustment http://downloads.openwrt.org/attitude_adjustment/12.09-beta2/ar71xx/generic/packages
dest root /
dest ram /tmp
dest opt /opt
lists_dir ext /var/opkg-lists
option overlay_root /overlay

====
 Но, чтобы устанавливать пакеты в /opt (flash drive), его надо сначала создать (см. ниже).


Замечание 4: пакеты, содержащие модули ядра, лучше ставить в NAND (а модули для поддержки usb storage только в NAND) чтобы не иметь проблем с их автоматической загрузкой при старте роутера.
2. подключаем доп.раздел на флешке и монтируем в /opt.

Как делается, описано в http://wiki.openwrt.org/doc/howto/usb.essentials
и http://wiki.openwrt.org/doc/howto/usb.storage
В моем случае я установил поддержку для usb2.0 (лишние модули лучше не ставить, т.к. место в NAND ограничено) и поддержку ext2 (kmod-fs-ext4).
На флешке предварительно создал раздел и на нем ext2fs на линуксовой машине (так было проще).
Проверил, что раздел монтируется (dmesg -> смотрим название устройства (в моем случае /dev/sda1), mount /dev/sda1 /mnt)
Теперь указываем, что этот раздел нужно монтировать в /opt при старте роутера:
Это деляется либо правкой /etc/config/fstab, либо из luci (System -> Mount points)

 Вот содержание /etc/config/fstab
====
config global automount
      option from_fstab 1
      option anon_mount 1
     
config global autoswap
      option from_fstab 1
      option anon_swap 0
     
config mount
      option target   /opt
      option device   /dev/sda1
      option fstype   ext2

      option options  rw,sync
      option enabled  1
      option enabled_fsck 0

====
Перегружаемся, проверяем, что /dev/sda1 смонтирован на /opt
root@tpl3020:/# mount
....
/dev/sda1 on /opt type ext2 (rw,relatime,user_xattr,barrier=1)



Теперь пакеты можно устанавливать как в nand, так и на flash drive.

Чтобы не иметь проблем с загрузкой библиотек с /opt/lib и /opt/usr/lib и с путями, правим
/etc/profile:
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/opt/usr/bin:/opt/usr/sbin:/opt/usr/local/bin
export LD_LIBRARY_PATH=/opt/usr/lib:/opt/lib



3. настраиваем wifi адаптер, который будет клиентом 
Для этого устанвливаем kmod-rt2x00-usb, kmod-rt2800-usb, wireless-tools (их можно поставить на /opt), перегружаемся и смотрим dmesg:
дожны быть строчки:
 rt2x00usb               6848  1 rt2800usb
mac80211              252272  4 ath9k,rt2800lib,rt2x00usb,rt2x00lib



настраиваем /etc/config/wireless (добавляем radio1 и интерфейс wwan):
config wifi-device 'radio1'
      option type 'mac80211'
      option macaddr 'f4:6d:04:b1:8b:d7'
      option hwmode '11ng'
      option htmode 'HT20'
      list ht_capab 'GF'
      list ht_capab 'SHORT-GI-20'
      list ht_capab 'SHORT-GI-40'
      list ht_capab 'TX-STBC'
      list ht_capab 'RX-STBC12'
      option country 'US'
      option txpower '12'
      option disabled '0'
      option channel '1'

config wifi-iface
      option network 'wwan'
      option ssid 'MY_AP'   <- имя точки доступа, у которой мы будем клиентом
      option encryption 'psk2' <- шифрование
      option device 'radio1'
      option mode 'sta' <- режим клиента
      option bssid '90:F6:52:92:68:5E'
      option key 'XXXXXXXXXX' <- ключ 



настраиваем /etc/config/network
config interface 'wwan'
      option proto 'dhcp' <- в моем случае адрес получаем по DHCP



настраиваем /etc/config/firewall
config zone
      option name 'wan'
      option input 'REJECT'
      option output 'ACCEPT'
      option forward 'REJECT'
      option masq '1'
      option mtu_fix '1'
      option network 'wan wlan1 wwan'

перегружаемся.

После перезагрузки должны увидеть следующее:
root@tpl3020:/# ifconfig wlan1
wlan1     Link encap:Ethernet  HWaddr F4:6D:04:B1:8B:D7 
          inet addr:192.168.10.103  Bcast:192.168.10.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:190 errors:0 dropped:0 overruns:0 frame:0
          TX packets:183 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:32
          RX bytes:23056 (22.5 KiB)  TX bytes:20258 (19.7 KiB)
 

На этом с wifi все. Нстройки можно делать и из luci.

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

4. настравиваем 3G модем.
Вместо wifi адаптера вставляем в hub модем (уже перешитый, см.выше) и перегружаемся.
Как настраивать модем, описано в http://wiki.openwrt.org/doc/recipes/3gdongle

Замечание1: chat, luci-proto-3g лучше всего ставить в NAND: они маленькие, и не будет проблем с путями и библиотеками. usb-modeswitch я поставил в /opt и сделал необх. линки на /usr/bin и т.д.

Замечание2: чтобы модем при старте роутера переключался в режим tty, в /etc/rc.local добавил:
export LD_LIBRARY_PATH=/opt/usr/lib:/opt/lib
/opt/usr/bin/usb_modeswitch -c /etc/usb_modeswitch.d/19d2\:0149 -v 19d2 -p 2000



Замечание3: можно еще поставить в /opt minicom для работы с модемом.
После перезагрузки должны увидеть (на прошивке MTS):
root@tpl3020:/# ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB1  /dev/ttyUSB2  /dev/ttyUSB3

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

Нам для использования нужен будет /dev/ttyUSB3.

Из luci Network->Interfaces (так проще) создаем новую сеть wan1 с интерфейсом 3g-wan1 с протоколом UMTS/GPRS/EV-DO
Из luci Network->Firewall добавляем сеть wan1 в зону wan.

перегружаемся.
После перезагрузки должны увидеть :
root@tpl3020:/# ifconfig 3g-wan1
3g-wan1   Link encap:Point-to-Point Protocol 
          inet addr:10.197.255.211  P-t-P:10.64.64.64  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:131 errors:0 dropped:0 overruns:0 frame:0
          TX packets:133 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:10558 (10.3 KiB)  TX bytes:10220 (9.9 KiB)

Модем настроили.

5. Настраиваем openvpn.

Устанавливаем kmod-tun
Устанавливаем openvpn в /opt

Дополнительно сделал:

root@tpl3020:/# ls -l /etc/init.d/openvpn
lrwxrwxrwx    1 root     root            23 Dec 26 12:10 /etc/init.d/openvpn -> /opt/etc/init.d/openvpn

создал /opt/etc/openvpn/config/up.sh
#!/bin/sh
/usr/sbin/iptables -t nat -A POSTROUTING -o tun0 -j SNAT --to-source $4
exit 0



создал /opt/etc/openvpn/config/down.sh
#!/bin/sh
/usr/sbin/iptables -t nat -D POSTROUTING -o tun0 -j SNAT --to-source $4
exit 0

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


Как настраивать из консоли, описано  в http://wiki.openwrt.org/doc/howto/vpn.openvpn.
Но, т.к. рулить с планшета удобнее через web морду (luci), лучше поставить luci-app-openvpn.
И тут нас подстерегает засада: в trunk нет этого пакета, т.к. он почему-то у разработчиков считается broken.

Я поступил так:
скачал с http://downloads.openwrt.org/ исходинки luci. http://downloads.openwrt.org/sources/luci-0.11%2bsvn9463.tar.gz
из архива вытащил applications/luci-openvpn и разложил то, что там было :
luasrc/controller/openvpn.lua -> /usr/lib/lua/luci/controller/
luasrc/model/cbi/openvpn*  -> /usr/lib/lua/luci/model/cbi/
luasrc/view/openvpn/* -> /usr/lib/lua/luci/view/openvpn/

root/etc/config/openvpn_recipes -> /etc/config/openvpn_recipes
и создал пустой /etc/config/openvpn

После этого в luci повилась вкладка Services->OpenVPN. Настраивать клинт можно оттуда.
И самое главное, там есть кнопочка start/stop, позволяющая из GUI управлять vpn соединением.

Замечание: т.к. openvpn ставится на /opt, а при запуске uhttpd нет необходимых LD_LIBRARY_PATH и PATH, я добавил в /opt/etc/init.d/openvpn строчки:
=========
#!/bin/sh /etc/rc.common
# Copyright (C) 2008-2011 OpenWrt.org
# Copyright (C) 2008 Jo-Philipp Wich
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.

START=95

SERVICE_DAEMONIZE=1
SERVICE_WRITE_PID=1

EXTRA_COMMANDS="up down"

LIST_SEP="
"

export LD_LIBRARY_PATH=/opt/lib:/opt/usr/lib
export PATH=$PATH:/opt/usr/bin:/opt/usr/sbin:/opt/usr/local/bin

 .....
==========
Еще добавил в /opt/etc/init.d/openvpn в start_instance() для того, чтобы могли запускаться скрипты up.sh/down.sh
==========
service_start /usr/sbin/openvpn --syslog "openvpn($s)" --writepid "$SERVICE_PID_FILE" --script-security 3 $ARGS
==========

После конфигурирования клиента из luci в /etc/config/openvpn
получилось следующее:
config openvpn 'client_tun'
      option nobind '1'
      option float '1'
      option client '1'
      option comp_lzo '1'
      option reneg_sec '0'
      option dev 'tun'
      option verb '3'
      option persist_tun '1'
      option persist_key '1'
      option remote_cert_tls 'server'
      option remote '111.111.222.222'
      option proto 'tcp-client'
      option port '1194'
      option up '/opt/etc/openvpn/config/up.sh'
      option down '/opt/etc/openvpn/config/down.sh'
      option ca '/opt/etc/openvpn/keys/ca.crt'
      option cert '/opt/etc/openvpn/keys/my.crt'
      option key '/etc/openvpn/keys/my.key'
      option tls_auth '/opt/etc/openvpn/keys/tls.key 1'
      option tls_timeout '30'
      option hand_window '160'
      option enabled '1'


в /etc/config/network добавлен tun0 с именем openvpn.
config interface 'openvpn'
      option proto 'none'
      option ifname 'tun0'

в /etc/config/firewall я не создавал отдельную зону для openvpn (но можно и создать отдельную при желании):
config zone
      option name 'wan'
      option input 'REJECT'
      option output 'ACCEPT'
      option forward 'REJECT'
      option masq '1'
      option mtu_fix '1'
      option network 'wan wan1 wlan1 openvpn wwan'


Вот скриншоты, как это выглядит в luci :

 интерфейсы:








зоны в firewall:









openvpn клиент:








Если все правильно сконфигурировано, то при нажатии на кнопку start из luci, клиент должен запуститься и появиться инерфейс tun0 (см.рисунок выше). 

root@tpl3020:/# ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 
          inet addr:10.8.0.6  P-t-P:10.8.0.5  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
 

и должны пинговаться (если разрешено на сервере,естественно) внутренние адреса:
root@tpl3020:/# ping 192.168.110.11
PING
192.168.110.11 (192.168.110.11): 56 data bytes
64 bytes from
192.168.110.11: seq=0 ttl=253 time=107.732 ms
 Из консоли клиент можно запустить 
/etc/init.d/openvpn up <имя_соединения>. У меня имя client_tun.

6. Включение/выключение openvpn нажатием на кнопку WPS.
web морда для управление это хорошо, но хочется более простого способа. На роутере есть кнопка wps, которую можно использовать для запуска/останова клиента.

Как вообще конфигурировать кнопки и лампочки, написано в
http://wiki.openwrt.org/doc/howto/hardware.button
Замечание: не забываем про установку /etc/hotplug.d/button/00-button
и
http://wiki.openwrt.org/doc/uci/system

Применительно к моему случаю, я сделал следующее:

/etc/config/system
=====
config led 'led_wps'
      option name 'WPS'
      option sysfs 'tp-link:green:wps'
      option trigger 'none'
      option default '0'

config button
      option button 'wps'
      option action 'pressed'
      option handler '/opt/etc/init.d/ovpn-trigger'
=====

/opt/etc/init.d/ovpn-trigger:
=====
#!/bin/sh
pid_file=/var/run/openvpn-client_tun.pid

if [ -f $pid_file ]
then
      logger 'openvpn client stopping'
      /opt/etc/init.d/openvpn down client_tun
      /bin/echo 0 >/sys/class/leds/tp-link\:green\:wps/brightness
else
      logger 'openvpn client starting'
      /opt/etc/init.d/openvpn up client_tun
      /bin/echo 1 >/sys/class/leds/tp-link\:green\:wps/brightness
     
      cnt=0
      while [ $cnt -lt 30 ]
      do
              sleep 1
              #echo $cnt
              cnt=`expr $cnt + 1`
              state=`cat /sys/class/leds/tp-link\:green\:wps/brightness`
              #echo $state
              if [ $state -eq 1 ]
              then
                      echo 0 >/sys/class/leds/tp-link\:green\:wps/brightness
              else
                      echo 1 >/sys/class/leds/tp-link\:green\:wps/brightness
              fi
              ifconfig tun0 >/dev/null 2>&1
              if [ $? -eq 0 ]
              then
                      echo 1 >/sys/class/leds/tp-link\:green\:wps/brightness
                      break
              fi
      done
      # tun0 did not up: shutdown openvpn
      ifconfig tun0 >/dev/null 2>&1
      if [ ! $? -eq 0 ]
      then
              echo 0 >/sys/class/leds/tp-link\:green\:wps/brightness
              /opt/etc/init.d/openvpn down client_tun
              logger 'openvpn client shutdown (could not connect)'
      fi
fi
exit 0
=====

 /etc/init.d/openvpn
=====
stop_instance() {
      local s="$1"

      section_enabled "$s" || return 1

      SERVICE_PID_FILE="/var/run/openvpn-$s.pid"
      service_stop /usr/sbin/openvpn
      rm $SERVICE_PID_FILE <- при остановке клиента pid файл не удалался по-умолчанию.
}
=====

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

На этом все.
========================================================================
Использованные доп. ссылки (м.б. найдется что-то интересное)

 OpenWrt: Configure WiFi Client as WAN and set up a 2nd AP to redistribute the WAN-Access – http://goo.gl/bIVik:  https://gist.github.com/2398728

Piratebox

PirateBox creation based on TP-Link MR3020
http://www.disk91.com/2012/technology/networks/piratebox-creation-based-on-tp-link-mr3020/
http://cookingcomputersandmore.com/?page_id=10
http://piratebox.aod-rpg.de/dokuwiki/doku.php

По модему:
http://forum.ru-board.com/topic.cgi?forum=6&topic=5795&start=20
http://www.hub.ru/wiki/ZTE_MF626
http://lists.debian.org/debian-russian/2009/07/msg00100.html

По роутерам tp-link
http://klseet.com/index.php/tp-link-portable-routers

среда, 5 декабря 2012 г.

oracle server rehosting


EM Not working after host name change (11g R2 solaris)
http://www.orafaq.com/forum/t/162719/0/

1. попытка переделать конфиги (.properties) в $ORACLE_HOME/<nodename>_<SID>
потерпела неудачу из-за b64InternetCertificate.txt, b64LocalCertificate.txt, которые выданы для старого имени хоста.

Зато нашлась процедура в документации oracle:
http://docs.oracle.com/cd/E18283_01/server.112/e17120/dbcontrol006.htm (EMCA Troubleshooting Tips)

Раздел: "Using EMCA When the Database Host Name or IP Address Changes"

When the database host name (including the domain name) or the IP address changes, deconfigure and then reconfigure Database Control with the -repos recreate flag for the emca command. For example, to recreate Database Control with a new host name, complete the following steps:
  1. Set ORACLE_HOSTNAME=old_hostname in the environment.
  2. De-configure the old dbconsole by running the following command:
    For a single-instance database:
    $ $ORACLE_HOME/bin/emca -deconfig dbcontrol db
    
    For Oracle RAC:
    $ $ORACLE_HOME/bin/emca -deconfig dbcontrol db -cluster
    
  3. Un-set ORACLE_HOSTNAME in the environment.
  4. Configure a new dbconsole by running one of the following commands:
    For a single-instance database, enter:
    $ $ORACLE_HOME/bin/emca -config dbcontrol db -repos recreate
    
    For Oracle RAC, enter:
    $ $ORACLE_HOME/bin/emca -config dbcontrol db -repos recreate -cluster
    

пятница, 9 ноября 2012 г.

NTLM (mod_ntlm) for Solaris 10

Описана устанока и конфигурирование для Solaris 10 x86. Есть ссылки на собранный модуль.
NTLM (mod_ntlm) for Solaris 10 

Замечание1: по ссылке собранный модуль не работает (seg.fault) с apache2 из поставки solaris. Похоже, из-за того, что собран gcc.

Замечание2: для сборки в этом случае нужен пакет SUNWspro. Собранный модуль находится в каталоге .libs. В apache2/libexec его оттуда лучше перенести руками.

Замечание3: в конфиге для DS надо указывать имя, а не IP адрес. Например: NTLMServer r01gui1

И самое гадкое: проблема с SMB_Logon_Server: SMB_SessSetupAndX failed; errorclass = 1, Error Code = 5\n при частом обновлении страницы, которую, похоже, никто не исследовал.

А она, оказывается, связана с тем, что в mod_ntlm.c:ntlm_check_response() (строчка примерно 600) есть проверка:
if (ntlm_connection->auth_ok && ntlm_connection->user) {
/* user has already valid credentials */
if ((!strcmp(ntlm_connection->user, ntlmssp->user))
&& (!strcmp(ntlm_connection->domain, ntlmssp->domain))
&& (!memcmp(ntlm_connection->password, ntlmssp->nt, RESP_LEN))) {
log(r, APLOG_INFO, “silent reauthentication”);
/* silently accept login with same credentials */
r->user = apr_pstrdup(r->connection->pool, ntlm_connection->user);
r->ap_auth_type = apr_pstrdup(r->connection->pool, NTLM_AUTH_NAME);
return OK;
}
В (!memcmp(ntlm_connection->password, ntlmssp->nt, RESP_LEN)) password и nt содержат разные значения. Как workaround я закомментарил эту проверку на совпадение пароля. После этого все стало хорошо.

Еще один момент: в httpd.conf параметр KeepAlive OnНапример, в rhel6 он по-молчанию Off, и аутентификация не работает.
Это описано в :
http://www.tune-it.ru/web/tiamat/home/-/blogs/27671;jsessionid=91c6c25fe1cdaff0156df869f5e3  <- keepalive