• ↓
  • ↑
  • ⇑
 
Записи с темой: опыт сын ошибок трудных (список заголовков)
23:22 

Чуть не сбил человека

Танкист Апокалипсиса
Ехал по неосвещённой дороге, навстречу поток машин, фары слепят, всё более-менее нормально. Перекидываю взгляд на приборы-боковое зеркало, возвращаюсь обратно - и тут свет фар выхватывает двух девиц в тёмной одежде на краю дороги. На краю-то на краю, но на дороге, и близко от машины. Успели: я - отвернуть, одна из девиц - отпрыгнуть. Разошлись.

Нда, блин.
Внимательней быть надо. И водителям, и пешеходам.

@темы: Опыт сын ошибок трудных

22:01 

Ойядурак!

Танкист Апокалипсиса
Блондинки бывают не только женского полу, ага:
Внедрить плагин для проверки на корректность локальных адресов, проверить его работоспособность прямо с локального адреса (localhost) сервера, а после этого удивляться "а почему это у нас всё отвалилось?". Ещё бы - при отбросе спам-писем блокируются на час IP-адреса спамеров, а в этот раз спамером оказался я.

Ойядурак!

@темы: Позитив, Опыт сын ошибок трудных, Информационные технологии

11:54 

Патч для Cyrus-IMAP

Танкист Апокалипсиса
Тут лежит патч для Cyrus-IMAP, исправляющий (меняющий) некоторые нюансы работы программы, в частности - пустой адрес отправителя в автоответе при включённом фильтре "VACATION".

Версия патча рассчитана на версию 2.2.8, для работы на 2.3.6 пришлось немного доработать напильником.



oss.digirati.com.br/mail/cyrus.html

@темы: Опыт сын ошибок трудных, Информационные технологии

10:13 

"И вновь продолжается бой..."

Танкист Апокалипсиса
со спамерами.
Решил прикрутить проверку на правильность адресов локальных получателей, для чего в наличии есть несколько способов:
1. Написать правила фильтрации самому (я попробовал. Ругани не было, но правила не работали - то ли запихнул не в то место конфигурационного фоайла sendmail, то ли ещё что)
2. Воспользоваться набором штепселей и затычек "Real Time Cyrus Integration Version 2". Штука заработала, но для того, чтобы она ещё проверяла и на наличие псевдонимов, надо было делать много лишних телодвижений. Лень.
3. Найти и собрать фильтр milter-ahead. Оказался сложен (то есть - не для ленивых) в сборке, не умеет, опять же, проверять псевдонимы.
По пунктам 2,3 невозможность проверки, возможно, связана с тем, что у меня БД пользователей и псевдонимов хранится в PostgreSQL.
4. Для велосипедистов.

Собственно, поступил четвёртым способом: взял и написал свой фильтр, который делает всё, что нужно. Сейчас он проходит тестирование, но уже показал свою эффективность - количество вторичного спама резко упало. Да и нагрузка на спаморезку снизилась за счёт отлупа на этапе передачи адреса получателя. Фильтр заточен под набор патчей для sendmail, обеспечивающих работу с СУБД PostgreSQL, хотя ничто не запрещает использовать его и отдельно, но это получится множенье сущностей.

Если всё пойдёт нормально - выложу проект в открытый доступ.

П.С, Пока есть бага - примерно через 8 часов начинается дурка с выборкой пользователей из таблицы.

@темы: Опыт сын ошибок трудных, Информационные технологии

11:17 

Очередная микрозатычка на пути спама.

Танкист Апокалипсиса
Спамеры обнаглели - вчера они умудрялись пропихивать к почтовику до 600 спам-соединений одномоментно. В общем, мне надоело, что, хоть спам и эффективно режется, но порядок энтропии во Вселенной возрастает, поэтому в фильтр spamass-milter я дописал три строчки в процедуру отброса сообщений с признаком "спам". Эти три строчки сохраняют IP-адрес, с которого пришло спам-письмо, в текстовой файл.
Затем я написал скриптик, который полученные адреса подставляет в iptables с правилом "послать на ...й" и держит их в этом режиме один час, после чего соединения с того адреса снова разрешаются. Для этого скрипт вызывается cron'ом ежеминутно.

Данное решение не претендует на универсальность.
=== патч spamass-milter ===
diff -Naur spamass-milter-0.2.0/spamass-milter.cpp spamass-milter-0.2.0-1/spamass-milter.cpp
--- spamass-milter-0.2.0/spamass-milter.cpp 2004-12-05 17:10:44.000000000 +0300
+++ spamass-milter-0.2.0-1/spamass-milter.cpp 2007-07-04 16:51:13.000000000 +0400
@@ -379,6 +379,11 @@
{
debug(D_MISC, "Rejecting");
smfi_setreply(ctx, "550", "5.7.1", "Blocked by SpamAssassin");
+/* Запись IP-адреса спамера в текстовой файл */
+ FILE *log=fopen("/var/spool/antispam/spamip.txt", "at");
+ fprintf(log, "%s\n", inet_ntoa(((context *)smfi_getpriv(ctx))->connect_ip));
+ fclose (log);
+
return SMFIS_REJECT;
}
}
=== конец патча ===

Скрипт, как было указано, должен вызываться как можно чаще, в идеале - сразу после получения IP, однако это уже тянет на полноценную программу. В переменной TEMP_VAR хранится размер очереди и. соответсвенно, время пребывания адреса в чёрном списке. Чем больше значение - больше времени.
=== текст скрипта ===
#!/bin/bash
BAD_IP_FILELIST_DIR=/var/spool/antispam
TEMP_VAR=60
for bad_spammer_ip in `cat $BAD_IP_FILELIST_DIR/spamip.txt.$TEMP_VAR`
do
iptables -D INPUT -s $bad_spammer_ip -j REJECT
done

rm -f $BAD_IP_FILELIST_DIR/spamip.txt.$TEMP_VAR

while [ $TEMP_VAR -gt 1 ]; do
let TEMP_VAR1=$TEMP_VAR-1
mv -f $BAD_IP_FILELIST_DIR/spamip.txt.$TEMP_VAR1 $BAD_IP_FILELIST_DIR/spamip.txt.$TEMP_VAR
let TEMP_VAR=$TEMP_VAR-1
done;

mv -f $BAD_IP_FILELIST_DIR/spamip.txt $BAD_IP_FILELIST_DIR/spamip.txt.1
touch $BAD_IP_FILELIST_DIR/spamip.txt

for bad_spammer_ip in `cat $BAD_IP_FILELIST_DIR/spamip.txt.1`
do
iptables -A INPUT -s $bad_spammer_ip -j REJECT
done
=== конец скрипта ===

@темы: Опыт сын ошибок трудных, Информационные технологии

09:35 

Вернулся домой.

Танкист Апокалипсиса
По результатам: с двумя баллонами так ни разу и не поплавал; все погружения общим числом семь сделал в сухом костюме. В пятницу в "Аква-глобусе" меня тоже поздравили и подарили водолазный нож, которым я тут же умудрился порезаться. 8-)
Неделя проживания на курорте обошлась мне в 5 тысяч, 1400 - жильё, остальное - развлекуха, питание, транспорт и т.д. Нырялка - ещё в 5 тысяч, а авиабилеты (вместе с упаковкой багажа, оплатой перевеса) - в 10000 (сами билеты стоят до 8900).
Подсказки: если кто полетит в Анапу, то по прибытии в аэропорт лучше сразу позвонить в одну из таксомоторных компаний города, а тех, что стоят около здания аэровокзала - не трогать. Цены у привокзальных таксистов в 1,5 раза выше: в город я доехал за 300 (плюс ещё 100, чтобы довезти снарягу от дома до клуба), а из города доехал за 180 (и ещё бы доплатил 30 за заезд в любую точку города). Разница очевидна. Телефончики тута.

@темы: Опыт сын ошибок трудных, Дайвинг

12:33 

Пристрелка

Танкист Апокалипсиса
Был в тире. Объяснили, как правильно держать ружьё. До объяснения пули уходили влево вниз, после объяснения - в центр. Т-образная прицельная марка слишком задрана - при прицеливании по центру перекрестия пуля ложится сантиметров на 10 ниже. Если брать по верхней части вертикального штриха - пуля идёт в центр.

@темы: Опыт сын ошибок трудных, Оружие

16:59 

Блин, и что теперь делать?

Танкист Апокалипсиса
Получил зарплату. Отнёс банкомату Сбербанка на поклон, скормил аппарату, а в результате получил сведения о том, что на счёт будет зачислено только 3000 рублей. В гневе пошёл писать заявление на компенсацию. Написал. Жду утра и развязки.

Upd: Денег было не 30000 рубликов. Деньги клал в два приёма: сначала 30 банкнот по 100 рублей, их банкомат сожрал успешно. А затем - вторую часть. На ней он и заткнулся.

@темы: Опыт сын ошибок трудных

14:02 

Намучился я с postgresql и netams

Танкист Апокалипсиса
Вкратце о мучениях: при запуске Linux не включается система учёта траффика. Если точнее - запускается, но потом умирает. Экспериментальным путём установил, что "включаемость" считалки зависит от скорости успешного запуска СУБД. После этого в скрипт запуска PostgreSQL после команды запуска дописал следующее:
===начало===
POSTGRES_IS_RUNNING=`ps ax|grep "postgres: stats collector process"|grep -c -v grep`
until [ $POSTGRES_IS_RUNNING -gt 0 ];
do
sleep 1
POSTGRES_IS_RUNNING=`ps ax|grep "postgres: stats collector process"|grep -c -v grep`
done
===конец==
данная хрень читает список процессов и смотрит, не появился ли там процесс с названием "postgres: stats collector process". Если появился - задача считается выполненной и скрипт завершает работу. Если нет, то делается пауза в одну секунду и цикл повторяется снова.

@темы: Опыт сын ошибок трудных, Информационные технологии

13:17 

Долгое время мучился с АТС Panasonic KX-TD1232

Танкист Апокалипсиса
Через некоторе время "подвисали" все линии "Комстара": в трубке тишина и слышна фоновая музыка АТС. При этом телефонные линии МГТС работают без проблем. Были перепробованы настройки телефонов, офисной АТС, пинали "Комстар" - ничего не помогало. Как последнее средство купил так называемые "отбойники" для телефонных линий. Помогло, тьфу-тьфу-тьфу, блин!

@темы: Опыт сын ошибок трудных

18:10 

Поздравьте меня!

Танкист Апокалипсиса
В моём активе - "две сплошных". Целиком, полностью и т.д. - моя вина.

Обошлось "мелким нарушением" и оплатой в СтеклоБанку.

@темы: Опыт сын ошибок трудных

18:44 

И на что я убил день?

Танкист Апокалипсиса
День, помимо выполнения прямых обязанностей, был посвящён прикручиванию OpenGL к VNC. Ну запустил, посмотрел. Да, картинки отрисовываются, но скорость... В общем - представляет собой сугубо спортивный интерес.

@темы: Опыт сын ошибок трудных, Информационные технологии

23:40 

Был занят.

Танкист Апокалипсиса
Пытался поломать дистрибутив почтового клиента. Какого - неважно, но, думаю, догадаться можно. На самом деле, крэк под программу уже давно существует, но накладывается он после установки программы. И если с одной-двумя-десятью инсталляциями ещё можно смириться, то устанавливать эту прелесть на бОльшее количество компьютеров было бы лениво.
"И вот, беру я в руки молоток..."
Задача сформулирована достаточно чётко, просто и понятно:
а) установить программу.
б) крэкнуть всё, что нужно сломать.
в) внести изменённые файлы в дистрибутив и собрать его заново, как будто "так оно и было".
На словах всё просто. На деле же всё получилось намного сложнее. Сразу возник вопрос: чем дистрибутив открывать? Хорошо ещё, что он в формате MSI. Правда, на этом приятные новости заканчиваются, потому что пакет составлен таким образом, что при открытии его в Wise Installer видно всего лишь два файлика из более чем сотни. Игра с параметрами открытия и конвертации не помогла.
Хорошо.
Выяснилось, что можно сделать экспорт в формат XML. Экспорт меня не удовлетворил, поэтому пришлось отыскать программу msi2xml (она же - xml2msi) и, побаловавшись опциями, разобрать инсталлятор по косточкам.
Параметры были таковы: msi2xml -b Directory setup.msi , где Directory - каталог, куда распакуем содержимое, а setup.msi - дистрибутив. При использовании данной команды в каталоге появляются ресурсы инсталлятора (иконки, картинки и прочее), файл с именем setup.msi.xml (тут находятся скрипты, управляющие процессом установки программы) и один или более архивов в формате CAB (каб) - собственно, сама программа.
Распаковать архивы можно при помощи WinRAR или команды expand. Но WinRAR удобнее. :-) Да, вот ещё что: необходимо сделать также список имён файлов в архивах следующей командой: expand -D имя_файла_архива.cab > имя_списка_файлов.txt. Зачем это нужно, станет ясно позднее.
Распаковал.
Наложил кряк.
А теперь надо запаковать. Но тут ещё одна трудность: сделать архив можно при помощи команды makecab. Проблема только в том, что она не имеет документации. Вообще. Кое-что есть в Сети, но это ещё найти надо. Есть программы сторонних разработчиков, но архивы, которые ими создавались, оказались непригодны для использования в инсталляторе. (Чтобы это понять и найти выход, пришлось потратить немало времени) Почему непригодны? Да потому, что файлы в архив должны быть запакованы в том же порядке, что был в изначальном пакете! Вот тут-то нам и пригодится файл имя_списка_файлов.txt, сделанный ранее. Его надо подредактировать (убрать несколько строк, к именам файлов не имеющих отношения, удалить название каб-файла из начала строк, да добавить несколько строк с параметрами создаваемого архива (их не помню, ищите в Сети, они есть)) и вызвать следующую команду: makecab -F имя_списка_файлов.txt
Если всё было верно, на выходе получим плотно упакованные файлы программы. Далее всё просто, командой xml2msi -m setup.msi.xml воссоздаём инсталлятор и можем насладжаться жизнью.

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

Трудозатраты - огромны. Но знания - бесценны.

@темы: Опыт сын ошибок трудных, Информационные технологии

Что-то видел, что-то знаю...

главная