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