Страница 1 из 1
[ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-11-24 11:13:25
hizel
пока работает для табличек
Код: Выделить всё
>sudo python
Python 2.6.2 (r262:71600, Sep 14 2009, 11:40:55)
[GCC 4.2.1 20070719 [FreeBSD]] on freebsd7
Type "help", "copyright", "credits" or "license" for more information.
>>> from ipfw import table_add, table_del, table_length, table_list
>>> table_length(35)
2
>>> table_list(35)
(('192.168.0.1', 32, 0), ('192.168.0.2', 32, 0))
>>> table_del(35,'192.168.0.1')
>>> table_list(35)
(('192.168.0.2', 32, 0),)
>>> table_add(35,'192.168.0.10')
>>> table_list(35)
(('192.168.0.2', 32, 0), ('192.168.0.10', 32, 0))
>>> quit()
Код: Выделить всё
>sudo ipfw table 35 list
192.168.0.2/32 0
192.168.0.10/32 0
perl биндинги не осилил

Re: [ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-11-24 11:19:42
ProFTP
а чем он лучше будет?
вот этот типо
http://search.cpan.org/~muir/BSD-Ipfwge ... pfwgen.pod ?
http://search.cpan.org/search?query=ipfw&mode=all
Код: Выделить всё
#/usr/local/bin/perl -w
use strict;
use BSD::Ipfwgen;
use IO::Handle;
outside 'fxp0';
leaf 'etha32';
consolidate '209.66.121.128/25';
us qw(
140.174.82.0/24
207.33.232.0/22
207.33.184.0/22
207.33.240.0/21
209.157.64.0/19
140.174.154.0/24
207.33.66.0/24
209.66.121.0/24
);
not_us qw(
209.66.121.0/29
);
symmetric qw(
209.66.121.0/27
);
count_by_interface();
count_by_tcp qw(80 119 21 53 25 871 513 23 6667);
count_by_address qw();
drop_unwanted qw(
192.168.0.0:255.255.0.0
172.16.0.0:255.240.0.0
10.0.0.0:255.0.0.0
);
no_looping();
no_spoofing_us();
no_spoofing_by_us();
no_leaf_spoofing();
to_me_rules <<'';
=deny udp from not 140.174.82.0/26 to any 111,2049 # portmap, NFS
=deny tcp from not 140.174.82.0/26 to any 111 # portmap
from_me_rules <<'';
=deny udp from any 111,2049 to not 140.174.82.0/26 # portmap, NFS
=deny tcp from any 111 to not 140.174.82.0/26 # portmap
to_net_rules ('=host:mac84', <<'');
=skiprule tcp from 140.174.82.32/27 to =host:mac84 6000 # mac84
=deny tcp from any to =host:mac84 6000
generate qw(INSECURE DEFAULT-ACCEPT);
Re: [ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-11-24 11:24:25
hizel
pfwgen generates commands that work with FreeBSD 2.2.5's firewall program: ipfw.
а моему биндингу не нужен ipfw узерлендовский, он напрямую работает
Код: Выделить всё
static PyObject *
ipfw_table_add(PyObject *self, PyObject *args)
{
int table,mask=32,value=0;
char *ip_str;
int i,s=-1;
ipfw_table_entry ent;
if (!PyArg_ParseTuple(args,"is|ii",&table,&ip_str,&mask,&value))
return NULL;
// Table add entry
if(table<MIN_TABLE){
PyErr_SetString(IPFWError, "m..");
return NULL;
}
ent.value = value;
ent.tbl = table;
ent.masklen = mask;
if(!inet_aton(ip_str, (struct in_addr*)&ent.addr)){
PyErr_SetString(IPFWError, "ip address bad");
return NULL;
}
s=socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
if(s<0){
PyErr_SetString(IPFWError, "socket fail");
return NULL;
}
i = setsockopt(s, IPPROTO_IP, IP_FW_TABLE_ADD, &ent, sizeof(ent));
if(i && errno != EEXIST){ // Allow add existent entry
PyErr_SetString(IPFWError, "setsocket fail");
return NULL;
}
Py_INCREF(Py_None);
return Py_None;
}
как та так
Re: [ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-11-24 12:22:18
ProFTP
А где perl биндинг?
Re: [ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-11-24 12:27:12
hizel
perl биндинги не осилил
ты видел как пишутся перл биндинги, там разрыв мозга сразу!

Re: [ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-11-24 12:40:12
ProFTP
я не знаю что такое билдинги
http://www.google.com.ua/#hl=uk&q=perl+ ... 9b7f7c4055
не нашел
я так понял это libc? Glib?
http://search.cpan.org/search?query=Glib&mode=all
ну в общем Си библиотеку можно перевеси в perl XS называется, он приведет в какой-то свой вид эту библиотеку и будет динамически ее использовать...
Re: [ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-11-24 12:47:06
hizel
glibc для линупсоедов
кстати
Re: [ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-11-24 12:50:12
hizel
Re: [ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-11-24 12:51:52
ProFTP
обясни что такое биндинг?
Re: [ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-11-24 12:55:05
hizel
Re: [ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-11-24 13:11:44
hizel
вот теперь вопрос или мне трахаца с биндинговыми нашлепками только пистон или трахаца с упаковкой и распаковкой структур в строку ммм зато perl+python
Re: [ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-11-24 13:53:32
ProFTP
показывай уже что там такое....

Re: [ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-11-24 23:46:37
hizel
Re: [ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-11-25 6:46:53
ProFTP
ты Сишняк оказывается?
а на perl или python можно это было сделать?
и вообще смысл, т.е. абсолютно под ругому хочшеь сделать ipfw? а ошибки в безопасности не сделаешь?
может лучше стандартный фаервол использовать?
Re: [ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-11-25 10:48:30
hizel
можно написать, но придется трахацо с переводом структур в строку
мне например нужно добавить один ip в таблицу ipfw - это из пистона\перла запуск шела и из него запуск ipfw долго и ошибки фигово орабатываются, а через эту штуку открыть сокет и кинуть значение всё
Re: [ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-11-25 10:58:59
ProFTP
это в pf делается быстро!
а в ipfw долго
как это запустить?
где-то написано как это настроить, как это написать? надо сищные исходники где-то посмотреть?
как мне наприсать на perl чтобы тоже быстро добавить в ipfw таблицу?
Re: [ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-11-25 11:13:33
ProFTP
а предкомпеляция тут не поможет
http://search.cpan.org/~sisyphus/Inline-0.45/C/C.pod
http://search.cpan.org/search?query=inl ... C&mode=all
Код: Выделить всё
use Inline C;
greet('Ingy');
greet(42);
__END__
__C__
void greet(SV* sv_name) {
printf("Hello %s!\n", SvPV(sv_name, PL_na));
}
Re: [ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-11-25 11:15:11
hizel
с чего это в pf это делается быстро? там такие же накладные расходы на запуск из перал\пистона\etc. pfctl
исходники все в /usr/src

Re: [ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-11-25 11:16:48
ProFTP
я имел ввиду, вроде бы, в pf в таблицу добавлять - быстрее будет...
Re: [ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-11-25 11:18:49
hizel
хз, я исходники pfctl не смотрел, очень сомневаюсь что быстрее ipfw
Код: Выделить всё
s=socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
i = setsockopt(s, IPPROTO_IP, IP_FW_TABLE_ADD, &ent, sizeof(ent));
грубо говоря вся последовательность действий ;]
Re: [ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-11-26 9:11:56
ProFTP
кстатети, кто знает есть ли решение, как вот это /usr/ports/multimedia/ffmpeg поставить куда нибудь на хостинг, чтобы можно было скопировать на хостинг и чтобы оно там работало?
на perl есть фишка, но она старая 2006 гоад и для lunux сборки, оно ругается на всё и не ставиться....
http://search.cpan.org/~allenday/FFmpeg-6036/FFmpeg.pm
Re: [ЧСВ]python биндинг для ipfw бацаю
Добавлено: 2009-12-13 22:12:42
ProFTP
hizel писал(а):можно написать, но придется трахацо с переводом структур в строку
мне например нужно добавить один ip в таблицу ipfw - это из пистона\перла запуск шела и из него запуск ipfw долго и ошибки фигово орабатываются, а через эту штуку открыть сокет и кинуть значение всё
я вот переписал статью
http://www.lissyara.su/articles/freebsd ... pfw_table/
там оптимизирован скрипт до того, что смотрит существующие ip в таблице, те ip которые уже присутствуют - они не добавляются, а добавляются только новые...
раз в 3 часа запускать скрипт - будет добавляться не более чем пару сек.