Эдик Торощин перевел довольно забавную байку.
Читать здесь.
Tag: Linux
MyDNS to BIND convert script
Понадобилось мне тут на одном хосте поднять ispconfig. Ниче так, работает, одна проблема: для поддержки DNS там используется MyDNS (реально mydns-ng), который как-то странно работает. В частности он не умеет (не смотря на заявления автора) IXFR, так что на нормальные вторичники зона не трансферится, пока там явно не включишь request-ixfr no; для первичного сервера. И вроде как заменить MyDNS нечем, исправить нереально, а работать должно. В итоге родилась извращенная идея генерить гонфиги и зоны для BIND на лету. Был написан такой скрипт:
#!/bin/sh rm -f /etc/bind/mydns/db.* echo -n > /etc/bind/named.conf.mydns echo "select origin from dns_soa where active='Y';" | mysql --defaults-file=/etc/mysql/debian.cnf dbispconfig | while read DOMAIN;do [ "$DOMAIN" = "origin" ]&&continue mydnsexport "$DOMAIN" > /etc/bind/mydns/db."$DOMAIN" XFER=$(echo "select xfer from dns_soa where origin=\"$DOMAIN\"" | mysql --defaults-file=/etc/mysql/debian.cnf dbispconfig | tail -n1|tr , \;| sed -e 's/;;/;/g' -e 's/^;$//')\; echo "zone \"$DOMAIN\" { type master; allow-transfer { $XFER }; file \"/etc/bind/mydns/db.$DOMAIN\"; };" >> /etc/bind/named.conf.mydns done /etc/init.d/bind9 reload > /dev/null
где /etc/mysql/debian.cnf – это файл содержащий параметры доступа к mysql:
[client] host = localhost user = root password = password socket = /var/run/mysqld/mysqld.sock
Правда, как оказалось, mydnsexport генерирует невалидный файл зоны, так что пришлось его слегка пропатчить:
diff -rNu mydns-1.2.8/src/lib/rr.c mydns-1.2.8.patched/src/lib/rr.c --- mydns-1.2.8/src/lib/rr.c 2009-02-03 12:15:26.000000000 +0300 +++ mydns-1.2.8.patched/src/lib/rr.c 2009-09-27 05:00:26.000000000 +0400 @@ -866,6 +866,7 @@ "%s%s%s" "%s%s" "%s%s" + "%s" "%s", columns, @@ -891,8 +892,9 @@ (filter)? " AND " : "", (filter)? filter : "", + " ORDER BY name,type", /* Optional sorting */ - (mydns_rr_use_stamp)? " ORDER BY stamp DESC" : ""); + (mydns_rr_use_stamp)? ",stamp DESC" : ""); RELEASE(namequery);
Ну и вставить вызов скрипта в крон. Извращение, но работает.
RuNIX.org update
Git trac post-receive hook
Добавил тут для одного из проектов хук в репозиторий, который закрывает тикеты по коммит-логам.
Неочевидное тут вот что:
закрывать тикеты надо тогда, когда коммит попадает на master (такая у нас модель разработки), соответственно надо отлавливать мержи и в случае мержа просматривать смерженные коммиты.
Upd: Гит оказался умнее меня и сам (rev-list) выводит коммиты со смерженных веток. Поэтому всё намного проще и получившийся скрипт даже и не интересен ни разу.
Скрипт получился такой:
#!/bin/sh # This script is run after receive-pack has accepted a pack and the # repository has been updated. It is passed arguments in through stdin # in the form # oldrev newrev refname # For example: # aa453216d1b3e49e7f6f98441fa56946ddcd6a20 68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master TRAC_HOOK="/srv/git/hooks/trac-post-commit-hook" TRAC_DIR="/srv/trac/stand" procrevs() { while read gitrev; do "$TRAC_HOOK" -p "$TRAC_DIR" -r "$gitrev" done } while read OLD NEW NAME;do test "$NAME" == "refs/heads/master"||continue git rev-list --no-merges "$OLD..$NEW"|procrevs done
Где TRAC_HOOK – это trac-post-commit-hook из дистрибутива trac, TRAC_DIR – каталог с проектом trac. В самом trac’е должен быть включен и настроен плагин trac-git.
Пингвины захватывают мир
Только что на одном из подоконников в коридорах факультета ВМиК МГУ обнаружили десяток флэшек. По 2 гига каждая. На стальной боковине надпись маркером Linux. Внутри fat32 раздел с syslinux и образом RFRemix-11-i686. Бутиться пока не пробовал.
Пингвины откладывают яйца? Галагтеко опасносте?
OpenPGP key update
Продолжая волну флэшмоба тоже поменял PGP-ключик.
Мой новый ключ:
pub 2048R/2AAC33F1 2009-05-18 Отпечаток ключа = 04B5 9D90 DF7C C2AB CD49 BAEA CA87 E9E8 2AAC 33F1 uid Alexander GQ Gerasiov <gq@cs.msu.su>
PS Если кто-то хочет обменяться подписями – можете отмечаться в комментах.
О некрофилах
Таненбаум всё еще мечтает о world domination.
Хотя, с другой стороны, за такие деньги…
Почитал внимательнее minix3.org. Таненбаум, похоже, понял, что сказки про микроядро не интересны никому, кроме гиков. Теперь он упирает на BSD-лицензию и смотрит на проприетарные встроенные системы как целевую аудиторию.
В общем даже интересно. Где бы найти немножко времени, чтобы посмотреть на код…
runix.org
Повесил на сабж в уголок рекламу от гугла. Я с ней там немножко поиграюсь – вы уж не пугайтесь. Многаденег обещаю не зарабатывать 😀
Патрег – Бох
Пообщался с красноглазыми слакофилами. Они такие забавные.