Нашёл решение "неудобной" задачи.
Не очень красивое - но работает. Лучше чем вот так напрягать sed через шелл:
var2=`echo $(var) | sed s/\ /,/g`
Нужно в Makefile заменить в переменной все пробелы запятыми. Если бы меняли все двоеточия на точки с запятой - проблем никаких:
$(subst :,;,$(var))
А нужная нам конструкция явно не работает:
$(subst ,,,$(var))
Решение - сделать переменные содержащие пробел и запятую. Более того - переменные можно сделать с "говорящими" именами: $(,) и $( ). На самом деле можно их использовать как "$ " и "$," - без кавычек :) Вот "код":
, := ,
space :=
space +=
$(space) :=
$(space) +=
После него работает, например, такой вызов:
$(subst $ ,$(,),$(var))
2009-07-07
акм и все-все-все
Никто может и не заметил, но в К+ с какого-то времени появилась замечательная опция: /makeqr
Что крайне удобно для автоматической онлайн-регистрации.
Клоны АКМ работают "по-старинке" - то есть ищут окошки, нажимают кнопки, копируют и вставляют текст..
А процедура "онлайн-регистрации" куда проще..
0. Сносите регистрацию и историю пополнений. По желанию.
del DISTR\BIS\*.BIS
1. Формируете файлы SEND\*.QR:
cons.exe /makeqr
2. Отправляете файлы на сервер регистрации.
3. Получаете архив с файлами ответов (*.AR).
4. Распаковываете его в папку RECEIVE
5. Запускаете cons.exe /REG
"Все базы зарегистрированы"
Причём если запросы не поменялись (например всего лишь были приняты обновления на другой машине - и базы перенесены оттуда, или была переустановленна система
== если те же din и тот же BIOS), то и ответы будет идентичными :)
То есть ответы на регистрацию могут использоваться неоднократно. Надо только сохранить архив с ответами и выполнять пункты 4 и 5 :)
Например в скрипте, автоматически рассылающем через rsync обновлённые базы..
Если ваш комплект содержит DIN от разных ИЦ - кроме cons.qr появляются индивидуальные файлы запросов. Лучше всего их собрать в один файл - если номер ИЦ вас не беспокоит. Да и всем так удобнее и проще..
Для работы "в автоматическом режиме" есть пара скриптиков для такой "активности".
1. Active Perl (клиентская часть: создаёт QR, собирает в один файл, отправляет на сервер, принимает архив, распаковывает, запускает регистрацию..)
Может быть эту часть проще переписать на .net - чтобы уйти от зависимости перла.. Хотя опять же - проще использовать Gen чтобы формировать ответы на месте. Но тогда уже есть АКМС - переписанный на Цэ Gen.. Только его исходников особо не видно.. Но можно использовать бинарник..
Вариантов много, благодаря автору Gen открывшего источник получения магических чисел :)
2. perl+CGI+Gen.html (серверная часть: принимает запросы от клиентов, ищет в них запросы консультанта, запускает javascript-функцию из "Генератора циферок", собирает ответы в zip файл и посылает клиенту).. Для работы нужен javascript Gen.html (который может быть без особого труда найден на просторах рунета) :)
Без Gen'а, имхо, всё выглядит вполне "лицензионно чистым" и ничьих прав в принципе даже и не нарушает - нет программ "нарушающих работу баз данных".. Останется проблема легализации нахождения у вас К+..
Что крайне удобно для автоматической онлайн-регистрации.
Клоны АКМ работают "по-старинке" - то есть ищут окошки, нажимают кнопки, копируют и вставляют текст..
А процедура "онлайн-регистрации" куда проще..
0. Сносите регистрацию и историю пополнений. По желанию.
del DISTR\BIS\*.BIS
1. Формируете файлы SEND\*.QR:
cons.exe /makeqr
2. Отправляете файлы на сервер регистрации.
3. Получаете архив с файлами ответов (*.AR).
4. Распаковываете его в папку RECEIVE
5. Запускаете cons.exe /REG
"Все базы зарегистрированы"
Причём если запросы не поменялись (например всего лишь были приняты обновления на другой машине - и базы перенесены оттуда, или была переустановленна система
== если те же din и тот же BIOS), то и ответы будет идентичными :)
То есть ответы на регистрацию могут использоваться неоднократно. Надо только сохранить архив с ответами и выполнять пункты 4 и 5 :)
Например в скрипте, автоматически рассылающем через rsync обновлённые базы..
Если ваш комплект содержит DIN от разных ИЦ - кроме cons.qr появляются индивидуальные файлы запросов. Лучше всего их собрать в один файл - если номер ИЦ вас не беспокоит. Да и всем так удобнее и проще..
Для работы "в автоматическом режиме" есть пара скриптиков для такой "активности".
1. Active Perl (клиентская часть: создаёт QR, собирает в один файл, отправляет на сервер, принимает архив, распаковывает, запускает регистрацию..)
Может быть эту часть проще переписать на .net - чтобы уйти от зависимости перла.. Хотя опять же - проще использовать Gen чтобы формировать ответы на месте. Но тогда уже есть АКМС - переписанный на Цэ Gen.. Только его исходников особо не видно.. Но можно использовать бинарник..
Вариантов много, благодаря автору Gen открывшего источник получения магических чисел :)
2. perl+CGI+Gen.html (серверная часть: принимает запросы от клиентов, ищет в них запросы консультанта, запускает javascript-функцию из "Генератора циферок", собирает ответы в zip файл и посылает клиенту).. Для работы нужен javascript Gen.html (который может быть без особого труда найден на просторах рунета) :)
Без Gen'а, имхо, всё выглядит вполне "лицензионно чистым" и ничьих прав в принципе даже и не нарушает - нет программ "нарушающих работу баз данных".. Останется проблема легализации нахождения у вас К+..
Ngnix как почтовый прокси сервер
Возникла задачка - закинуть почту из старого корпоративного сервера в гугль аппс..
Сборщик POP3 у гугля естественно есть. Провайдер даёт pop3 доступ.
Казалось бы всё просто. Ан-нет!
Провайдер (ЦентрТелеком) не пускает к себе на POP3 из внешних сетей.
То есть порт то открыт - но всегда auth failed.
Сначала решение "в лоб". Попытаться открыть ssh туннель.
Но пол-часика помучившись - так и не удалось.
Руки кривые и что-то не так делал :)
Второе решение - разобраться таки с nginx.
Ну чего там - "прокси сервер" :)
Но вот где адрес сервера к которому подключаться надо - в конфигах
"прокси" подозрительно не находилось. Всё указывало на необходимость
использовать какой-то http_auth.
Опять же - для этого нужен внешний скрипт, а скрипты к ngnix'у прикручивать..
Безопасно пока не научился :)
Однако можно заставить самого nginx отвечать на свои же запросы :)
1. Ставим:
sudo apt-get install nginx
sudo apt-get build-dep nginx
2. Скачиваем nginx с родного сайта.
И распаковываем. unp nginx*
Тот, что идёт в комплекте с убунтой во-первый старый, (даже из самой свежей репки не говоря о харди что у меня стоит). Во вторых собран без поддержки mail proxy.
Можно, конечно, сделать apt-get source nginx
Добавить в файле debian/rules опцию --with-mail
и сделать apt-get source -b nginx
Но это слишком просто :)
3. В папке создаём файлик config-run
Конфиг взял из убунты - благо он крайне простой - добавил и убрал что не нужно.
4. Собираем:
. config-run
make
5. Копируем на будущий прокси обновлённый бинарник.
scp objs/nginx root@myproxy:/usr/sbin/
6. Правим конфиг /etc/nginx/nginx.conf
7. Запускаем и проверяем.
Что ещё можно. Можно проверять доступ - запрос на /auth содержит поле Client-IP.
Можно сделать "настоящий" скрипт. Или использовать возможности rewrite самого nginx..
Например для перенаправления на разные pop сервера для разных IP - или например для разных логинов..
Сборщик POP3 у гугля естественно есть. Провайдер даёт pop3 доступ.
Казалось бы всё просто. Ан-нет!
Провайдер (ЦентрТелеком) не пускает к себе на POP3 из внешних сетей.
То есть порт то открыт - но всегда auth failed.
Сначала решение "в лоб". Попытаться открыть ssh туннель.
Но пол-часика помучившись - так и не удалось.
Руки кривые и что-то не так делал :)
Второе решение - разобраться таки с nginx.
Ну чего там - "прокси сервер" :)
Но вот где адрес сервера к которому подключаться надо - в конфигах
"прокси" подозрительно не находилось. Всё указывало на необходимость
использовать какой-то http_auth.
Опять же - для этого нужен внешний скрипт, а скрипты к ngnix'у прикручивать..
Безопасно пока не научился :)
Однако можно заставить самого nginx отвечать на свои же запросы :)
1. Ставим:
sudo apt-get install nginx
sudo apt-get build-dep nginx
2. Скачиваем nginx с родного сайта.
И распаковываем. unp nginx*
Тот, что идёт в комплекте с убунтой во-первый старый, (даже из самой свежей репки не говоря о харди что у меня стоит). Во вторых собран без поддержки mail proxy.
Можно, конечно, сделать apt-get source nginx
Добавить в файле debian/rules опцию --with-mail
и сделать apt-get source -b nginx
Но это слишком просто :)
3. В папке создаём файлик config-run
./configure --conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--http-log-path=/var/log/nginx/access.log \
--http-client-body-temp-path=/var/lib/nginx/body \
--http-proxy-temp-path=/var/lib/nginx/proxy \
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
--with-mail
Конфиг взял из убунты - благо он крайне простой - добавил и убрал что не нужно.
4. Собираем:
. config-run
make
5. Копируем на будущий прокси обновлённый бинарник.
scp objs/nginx root@myproxy:/usr/sbin/
6. Правим конфиг /etc/nginx/nginx.conf
user www-data;
worker_processes 1;
events {worker_connections 10;}
http {server {
listen 8080;
location /auth { # mailcheck
add_header Auth-Status OK;
add_header Auth-Server 212.26.224.70;# pop3.ryazan.ru;
add_header Auth-Port 110;
return 204;
}
}}
mail {
auth_http localhost:8080/auth;
server {
listen 110;
protocol pop3;
proxy on;
}
}
7. Запускаем и проверяем.
Что ещё можно. Можно проверять доступ - запрос на /auth содержит поле Client-IP.
Можно сделать "настоящий" скрипт. Или использовать возможности rewrite самого nginx..
Например для перенаправления на разные pop сервера для разных IP - или например для разных логинов..
2009-06-25
JSON и BENCODE
Старенькие скрипты конверсии торрентов в json лежат без дела :)
Ища "нормальный" редактор торрентов и "нормальную" библиотеку на дотнете чтобы работать с торрентами (нормальных прог bencode так и не встретил), вспомнил про json. Оказывается есть куча редакторов (даже на javascript) для json. И естественно библиотек.
Остаётся "адаптировать" библиотеки и скрипты на обработку torrent-ов :
А базовые типы данных те же: целое, строка, массив и словарь (или хеш - по пёрловскому :))
Вот только перл не различал целый тип и строку (приходилось регекспом проверять а не число ли эта строка :)) javascript различает..
Ища "нормальный" редактор торрентов и "нормальную" библиотеку на дотнете чтобы работать с торрентами (нормальных прог bencode так и не встретил), вспомнил про json. Оказывается есть куча редакторов (даже на javascript) для json. И естественно библиотек.
Остаётся "адаптировать" библиотеки и скрипты на обработку torrent-ов :
А базовые типы данных те же: целое, строка, массив и словарь (или хеш - по пёрловскому :))
Вот только перл не различал целый тип и строку (приходилось регекспом проверять а не число ли эта строка :)) javascript различает..
2009-06-23
Ну вот, блин.
Решили что я спамер :) Нефиг хвалебные оды петь провайдеру :)
А что делать если после тарифов mh встретил такое чудо - и на порядок дешевле..
Ладно. Надеюсь меня поймут :)
Изучаю принципы работы с фрилансом. В качестве работодателя. Как-то несерьёзно получается. Чувствую себя эксплуататором. Даже рассмотрение моей проблемы на самом деле достаточно времязатратное мероприятие.. И всем заинтересовавшимся заплатить не смогу :)
Борюсь со стойким желанием платить по 20 долларов за консультации :)
А что делать если после тарифов mh встретил такое чудо - и на порядок дешевле..
Ладно. Надеюсь меня поймут :)
Изучаю принципы работы с фрилансом. В качестве работодателя. Как-то несерьёзно получается. Чувствую себя эксплуататором. Даже рассмотрение моей проблемы на самом деле достаточно времязатратное мероприятие.. И всем заинтересовавшимся заплатить не смогу :)
Борюсь со стойким желанием платить по 20 долларов за консультации :)
2009-05-18
FastVPS - это здорово! Как и Visa.
Реально классный провайдер FastVPS :)
Всё реально очень быстро и недорого.
Даже пугает дешевизна vps - менее 150 рублей (2,90 евро) в месяц..
Возможно пригодятся безлимитные тарифы для скачкивания с rapidshare (собственно нашёл через сайт скрипта rapidget.pro) :)
Крайне приятные расценки для регистрации имён (в зоне .ru по 150 рэ регистрация и продление - надо всего лишь сделать тикет с запросом "спеццен" - через несколько секунд уже ответили и всё включили).
Респект и уважуха, долгих и счастливых лет провайдеру. Поддержка и сервис на высоте.
Будем надеяться что качество услуг не ухудшится :)
Помогли в поддержке и сделать оплату "нестандартным" способом. Будем надеяться что и стандартные методы оплаты тоже будут работать - и станут наконец мне удобны (yandex.деньи или кредитка - не люблю webmoney).
Кстати, насчёт кредиток. Visa - это здорово. В местном филиале банка финсервис оформили (и выдали!) за 15 минут. Банкоматов немного - (естественно хотелось бы больше) - но вполне функциональны. Можно взять и положить деньги. + интернет банкинг - без 50 рублей в месяц (без услуги СМС банка) не очень удобный - но вполне юзабельный. Можно смотреть выписки по счёту и по операциям с картой, оплатить без комиссии сотовый телефон не выходя из дома (что резко понизило нужность яндекса с его комиссией на занесение денег на счёт).
К тому же единственная карточка которая мне попадалась нормально проходящая для оплаты через интернет. Trust, сбербанк, втб24 - ни одну из этих не мог активировать на paypal и уж тем более где-то расплатиться. К тому же надо ждать оформления по несколько недель. А тут на месте при мне оформили.
Ну и естественно это полноценная виза (не электрон) - и естественно принимается везде где принимается виза. Повторюсь - полная бесплатность оформления. Ах, да - и ещё 7% годовых на денежные средства на счёте (в течение года после оформления) с ежемесячной капитализацией.
Реально круто. Только простота оплаты через интернет реально стремает от держания на карте более или менее приличных денег :)
Хотя вот. Ноу-хау родилось. Надо оформить ещё одну карточку visa :) При этом в интернете светить пустую - при необходимости оплаты закидывать туда деньги - чтобы всё время там было около 0 остатки. Через интернет банк со счёта на счёт можно легко перекинуть когда надо оплатить..
Засветку карты в супермаркете, конечно, не исключить - но хоть через интернет не поимеют :)
Всё реально очень быстро и недорого.
Даже пугает дешевизна vps - менее 150 рублей (2,90 евро) в месяц..
Возможно пригодятся безлимитные тарифы для скачкивания с rapidshare (собственно нашёл через сайт скрипта rapidget.pro) :)
Крайне приятные расценки для регистрации имён (в зоне .ru по 150 рэ регистрация и продление - надо всего лишь сделать тикет с запросом "спеццен" - через несколько секунд уже ответили и всё включили).
Респект и уважуха, долгих и счастливых лет провайдеру. Поддержка и сервис на высоте.
Будем надеяться что качество услуг не ухудшится :)
Помогли в поддержке и сделать оплату "нестандартным" способом. Будем надеяться что и стандартные методы оплаты тоже будут работать - и станут наконец мне удобны (yandex.деньи или кредитка - не люблю webmoney).
Кстати, насчёт кредиток. Visa - это здорово. В местном филиале банка финсервис оформили (и выдали!) за 15 минут. Банкоматов немного - (естественно хотелось бы больше) - но вполне функциональны. Можно взять и положить деньги. + интернет банкинг - без 50 рублей в месяц (без услуги СМС банка) не очень удобный - но вполне юзабельный. Можно смотреть выписки по счёту и по операциям с картой, оплатить без комиссии сотовый телефон не выходя из дома (что резко понизило нужность яндекса с его комиссией на занесение денег на счёт).
К тому же единственная карточка которая мне попадалась нормально проходящая для оплаты через интернет. Trust, сбербанк, втб24 - ни одну из этих не мог активировать на paypal и уж тем более где-то расплатиться. К тому же надо ждать оформления по несколько недель. А тут на месте при мне оформили.
Ну и естественно это полноценная виза (не электрон) - и естественно принимается везде где принимается виза. Повторюсь - полная бесплатность оформления. Ах, да - и ещё 7% годовых на денежные средства на счёте (в течение года после оформления) с ежемесячной капитализацией.
Реально круто. Только простота оплаты через интернет реально стремает от держания на карте более или менее приличных денег :)
Хотя вот. Ноу-хау родилось. Надо оформить ещё одну карточку visa :) При этом в интернете светить пустую - при необходимости оплаты закидывать туда деньги - чтобы всё время там было около 0 остатки. Через интернет банк со счёта на счёт можно легко перекинуть когда надо оплатить..
Засветку карты в супермаркете, конечно, не исключить - но хоть через интернет не поимеют :)
BIND vs DJBDNS
Let the holy war begin.
Задолбался кривизной BIND9 - после двухмесячника DDoS на dns-amplification - когда мой "кеширующий сервер" нехорошие личности использовали для заваливания чужих сетей (стоивших мне примерно 50 рублей трафика в день) - даже после "исправления" - путём разнесения views в конфигах bind..
Решение всего было ещё в 2003 году. Пока петух не клюнет.. Слезаю одним словом с bind - всё на djbdns :) tinydns, axfrdns, dnscache. Вполне всё красиво.
На vps - tinydns + axfrdns (только axfr для secondary bind). Был бы ещё серверок для моего secondary - было бы вообще без tcp. И не нужно было бы волноваться против единственной пока обнаруженной дырки в djbdns :)
В домашнем интранете - tinydns + dnscache. Очень-очень хочется сюда добавить какой-нибудь tiny-dhcpd - ибо как становится ясно - продукты isc нафиг не сдалсь. Шибко сложный демон для шибко простой задачи. Опять же - стандартные средства ddns неюзабельны из-за тупизны разработчиков.
Ну и немножко qmail везде :) Никакого x64 потому "дырок" нигде не предвидится :)
Задолбался кривизной BIND9 - после двухмесячника DDoS на dns-amplification - когда мой "кеширующий сервер" нехорошие личности использовали для заваливания чужих сетей (стоивших мне примерно 50 рублей трафика в день) - даже после "исправления" - путём разнесения views в конфигах bind..
Решение всего было ещё в 2003 году. Пока петух не клюнет.. Слезаю одним словом с bind - всё на djbdns :) tinydns, axfrdns, dnscache. Вполне всё красиво.
На vps - tinydns + axfrdns (только axfr для secondary bind). Был бы ещё серверок для моего secondary - было бы вообще без tcp. И не нужно было бы волноваться против единственной пока обнаруженной дырки в djbdns :)
В домашнем интранете - tinydns + dnscache. Очень-очень хочется сюда добавить какой-нибудь tiny-dhcpd - ибо как становится ясно - продукты isc нафиг не сдалсь. Шибко сложный демон для шибко простой задачи. Опять же - стандартные средства ddns неюзабельны из-за тупизны разработчиков.
Ну и немножко qmail везде :) Никакого x64 потому "дырок" нигде не предвидится :)
Подписаться на:
Сообщения (Atom)