[zorp-hu] Szures IP cim
reszlet alapján
Deim Agoston
zorp-hu@lists.balabit.hu
Sun, 12 Dec 2004 11:16:26 +0100
hello,
csak a listaarchívum kedvéért:
HÖLTZL Péter <holtzl.peter@balabit.hu> irta:
> import re
>
> class xProxy(PlugProxy):
>
> def config(self):
>
> tmp=re.spit("\.", self.session.server_address.ip_s)
^^^
ez itt nem split?
> if !(tmp[0]=="10" and tmp[1]=="99" and tmp[3]=="243"):
> raise "Hiba"
>
> a megoldas nagyon ronda
szerintem meg működik és ez a lényeg, nem?
:-))) Bár a re modul _nagyon_ lassú tud lenni.
Esetleg lehetne használni még re és split helyett fordított logikával a match
funkciót, az alhálózat címeket pedig egy compiled object-be rakni a
compile-lal a re modulból, úgy sokkal gyorsabb a regexpek kezelése, de
meg kell nézni teszttel. A match funkcióval azt kell megnézni, hogy a
server_address.ip_s-ben megfelel-e a compiled object-ben lévő regexpnek.
De a re nélkül is működne ez. Akkor megspórolod a regexp fordítási és
hasonlítási idejét. A self.session.server_address.ip_s -t, mivel string
típusú utolsó emlékeim szerint, meg pont is van benne, integer nehezen
lehetne például, csak belső class-szal - simán tudod splitelni és úgy
megtenni a szükséges összehasonlítást. A kimaradt regexp összehasonlítás
nagyban javít a sebességen, a regexp gonosz :-) a leglassabb minden
közül.
Alternatív megoldás 2 (by Attila/LSC):
if not self.session.server_address.ip_s.startswith(első címek) and
not self.session.server_address.ip_s.endswith (ucsó cím)
raise "Hiba"
Ezek sem szépek, de megdőlt a perl alatt sokféleképpen megoldod,
pythonban pedig az a jó, de nem látod át, itt pedig egyszerű, mert egy
modul van csak elmélet :-)
üdv,
Ago
-----------
Deim Ágoston
LSC Linux Support Center Kft.
e-mail: deim.agoston@lsc.hu
Tel/fax:06-1/341-0457