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