[zorp-hu] Url szures es regularis kifejezesek
Balazs Scheidler
bazsi@balabit.hu
Thu, 13 Dec 2001 22:19:33 +0100
On Thu, Dec 13, 2001 at 10:04:54AM +0100, KUN Arpad wrote:
> Fut a zorp, az alap funkciok mukodnek is.
> Vegigolvastam a share/zorp/pylib/Zorp/Http.py -t, hogy milyen funkciokra
> kepes, talaltam peldakat is. Igaz ezek elteroek voltak azoktol, amiket a
> zorp reference guide -ban olvastam. Gondolom azota valtozott nehany
> dolog.
> Nehany webserver elott transzparens szuresre szeretnem hasznalni a
> zorpot, es egy ket dologgal nem boldogultam eddig.
>
> Ami a problemam, hogy a megadott uj peldak nem nagyon akartak mukodni
> (konkretan az url szures). A kerdesem, hogy mitol lehet ez? (alul a
> reszletek)
>
> A masik, ami erdekelne, hogy lehetseges-e reguralis kifejezesek alapjan
> szurni? Pl http get-ekre szeretnek nehany rule-t felvinni, de a pyhton
> egyelore eleg elvarazsolt nekem. Tudnal egy-ket peldat mondani, hogy
> egymas ala hogy lehetne ezeket definialni?
> Valahogy igy kepzelem el: (persze lehet, hogy hibasan, de talan ertheto
> :) )
>
> if (url == "^.*\/etc\/passwd.*$")
> return HTTP_REQ_ACCEPT
> self.error_info = 'Content denied by policy.'
> return HTTP_REQ_REJECT
>
> if (url == "http://www.ungabunga.hu")
> return HTTP_REQ_ACCEPT
> self.error_info = 'Content denied by policy2.'
> return HTTP_REQ_REJECT
a python az re modullal tamogatja a regularis kifejezesek hasznalatat. ezt
egyresz megirhatod te magad, de hasznalhatod a Matcher.py altal kinalt
funkciokat is. pl:
class MyHttp(HttpProxyURIFilter):
matcher=RegexpFileMatcher('/etc/zorp/http.deny', '/etc/zorp/http.ignore')
ennyi. ha megnezed a HttpProxyURIFilter kodjat, akkor valami olyasmit latsz,
amit te is akartal csinalni. A Matcher ket file-t hasznal:
* minden ami a http.deny-be fel van sorolva, azt a proxy nem fogja engedni
(regexp)
* minden ami a http.ignore -ban van, az kivetel, tehat ha veletlenul a
http.deny illeszkedik, akkor ezzel kiszurhetjuk
>
> -----
>
> Itt van a pillanatnyi config, amire a syslogba ezt a hibauzenetet
> szorja:
>
> ---------- log ----------
> zorp-http[25450]: zorp version 1.4.0rc13 going down.
> zorp-http[25452]: (zorp/nosession): File
> "/usr/local/zorp/etc/zorp/policy.py", line 83
> zorp-http[25452]: (zorp/nosession): if (url ==
> "http://www.balabit.hu")
> zorp-http[25452]:
> (zorp/nosession): ^
> zorp-http[25452]: (zorp/nosession): SyntaxError: invalid syntax
> ----------
biztosan kevered a space-ket es a tabokat, illetve nem egyforman hasznalod
oket.
> class IntraHttp(HttpProxy):
>
> def config(self):
> HttpProxy.config(self)
> self.transparent_mode = TRUE
> # self.request_header["User-Agent"] = (HTTP_HDR_CHANGE_VALUE, "Lynx/2.8.3rel.1")
> self.request["GET"] = (HTTP_REQ_POLICY, self.filterURL)
>
> def filterURL(self, method, url, version):
> if (url == "http://www.balabit.hu")
> return HTTP_REQ_ACCEPT
> self.error_info = 'Content denied by policy.'
> return HTTP_REQ_REJECT
> # return Z_REJECT here to reject this request
> # change self.request_url to redirect to another url
> # change connection_mode to HTTP_CONNECTION_CLOSE to force kept-alive connections to close
> log("http.info", 3, "%s: GET: %s" % (self.session.session_id, url))
> return HTTP_REQ_ACCEPT
>
figyelj arra, hogy a tab a 8 space-nek szamit, es egy adott indent levelen
ugyanannyi whitespace-nek kell lennie. (probald esetleg expand-dal
kicserelni a tabokat space-re, es nezd meg, hogy az egy szinten levo dolgok
ugyanott vannak-e)
--
Bazsi
PGP info: KeyID 9AF8D0A9 Fingerprint CD27 CFB0 802C 0944 9CFD 804E C82C 8EB1