[zorp-hu] Zorp alapok

SZALAY Attila sasa@pheniscidae.satimex.tvnet.hu
Tue, 2 Oct 2001 23:22:34 +0200


Hi All!

On 2001 Oct 02, MG wrote:
> 
> Most nezem ez nem jo pelda, mert ezt az ipchains is tudja. :)
> Szoval egy konkret pelda kellene.

Egy konkret, amde kisse bonyolultabb pelda:

class MyPop3sProxy(PsslProxy):

	class MyPop3(Pop3Proxy):

		def usercheck(self, command):
			if len(self.command_param) == 8:
				try:
					string.index(self.command_param,"kiscsibe")
					return POP3_REQ_ACCEPT
				except ValueError:
					pass
			return POP3_REQ_ABORT

			def config(self):
				self.request["USER"] = (POP3_REQ_POLICY, self.usercheck)
				self.request["APOP"] = (POP3_REQ_REJECT)
				self.request["DELE"] = (POP3_REQ_REJECT)

	def config(self):
		self.client_need_ssl = TRUE
		self.client_verify_type = 1
		self.stack_proxy = self.MyPop3
		self.client_cert = "/etc/zorp/ssl/pop3.cert"
		self.client_key  = "/etc/zorp/ssl/pop3.key"

Ez egyebkent egy feloldalas Pop3s proxy, azaz a kliens oldalan pop3s
mig a szerver-nek semmit nem kell tudnia az ssl-rol.
Ezen kivul csak es kizarolag a kiscsibe user-t engedjuk be, es
neki sem engedjuk meg a level torleset.

Mas szoval zorp-nal, mint applikacios szintu proxy-nal majd minden
parancsrol eldonthetjuk, hogy atmehet-e vagy nem.
Raadasul, mivel itt egy programozasi nyelv all a rendelkezesunkre,
nem vagyunk kiszolgaltatva az epp aktualis adatoknak sem. (Azaz
felhasznalhatunk korabbi adatokat, vagy eppen rendszeren kivuli
adatokat is, mint pl. az aktualis ido, a gep terheltsege, stb.)

Erre pelda a kovetkezo felallas. Feladat, hogy user nem torolheti
le a levelet olvasatlanul. (Legalabbis a pop3 szerverrol le kell
toltenie a sajat gepere, mielott a szerveren torolne.) Nezzuk
hogyan oldhatjuk ezt meg zorp alatt:

class MyPop3(Pop3Proxy):

	def retr(self, command):
		self.letoltve[atoi(self.command_param)] = TRUE
      return POP3_REQ_ACCEPT

   def dele(self, command):
      if self.letoltve[atoi(self.command_param)] = TRUE:
         return POP3_REQ_ACCEPT
      return POP3_REQ_REJECT

   def config(self):
      self.letoltve = {}
      self.request["RETR"] = (POP3_REQ_POLICY, self.retr)
      self.request["DELE"] = (POP3_REQ_POLICY, self.dele)

Vagyis csinalunk egy tombot, es ennek a tombnek a megfelelo
elemenek a valtoztatasaval jelezzuk, ha azt a levelet letoltottek,
es csak ebben az esetben engedjuk a torleset.

De megemlithetnem peldanak az egyszeru URL szurest is.

Vagy pl. azt, hogy csinalhatunk (pontosabban keszen kapunk)
olyan Ftp proxyt, ami pl. csak letoltest, mas esetben csak
feltoltest engedelyezi.

Vagy pl. megemlithetem, hogy ftp eseten tud valtani
passziv es aktiv kapcsolat kozott ugy, hogy pl. kifele csak
aktiv _latszik_.

Vagy pl. http-nel tud konvertalni nem proxy kerest
proxy keresre.

stb. A lehetoseg szama vegtelen. :)

-- 
PGP ID 0x8D143771, /C5 95 43 F8 6F 19 E8 29  53 5E 96 61 05 63 42 D0
GPG ID   ABA0E8B2, 45CF B559 8281 8091 8469  CACD DB71 AEFC ABA0 E8B2

An exaggeration is a thruth that has lost its temper -- Kahlil Gibran