[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