From: Bernie Innocenti Date: Tue, 24 Nov 2009 18:15:15 +0000 (-0500) Subject: Merge branch 'master' of ssh://trinity.codewiz.org/~/public_html/wiki/git/geekigeeki X-Git-Url: https://codewiz.org/gitweb?a=commitdiff_plain;ds=sidebyside;h=bfa2f63dc09c936f10b7cc3c1ee0c1c136af3591;hp=-c;p=geekigeeki.git Merge branch 'master' of ssh://trinity.codewiz.org/~/public_html/wiki/git/geekigeeki --- bfa2f63dc09c936f10b7cc3c1ee0c1c136af3591 diff --combined geekigeeki.py index 79dda63,aa54781..9d2bf9e --- a/geekigeeki.py +++ b/geekigeeki.py @@@ -36,6 -36,7 +36,7 @@@ def config_get(key, default=None) def script_name(): return os.environ.get('SCRIPT_NAME', '') + #TODO: move post-edit hook into wiki, then kill this def script_path(): return os.path.split(os.environ.get('SCRIPT_FILENAME', ''))[0] @@@ -46,8 -47,9 +47,9 @@@ def query_string() else: return os.environ.get('QUERY_STRING', '') or 'FrontPage' - def privileged_path(): - return config_get('privileged_url') or script_name() + def is_privileged(): + purl = config_get('privileged_url') + return (purl is not None) and os.environ.get('SCRIPT_URI', '').startswith(purl) def remote_user(): user = os.environ.get('REMOTE_USER', '') @@@ -71,7 -73,7 +73,7 @@@ def is_external_url(pathname) def relative_url(pathname, privileged=False): if not is_external_url(pathname): if privileged: - url = privileged_path() + url = config_get('privileged_url') or script_name() else: url = script_name() pathname = url + '/' + pathname @@@ -143,7 -145,7 +145,7 @@@ def send_title(name, text="Limbo", msg_ rel, href = link print(' ' % (rel, relative_url(href))) - editable = name and writable and config_get('privileged_url') is not None + editable = name and writable and is_privileged() if editable: print(' ' \ % relative_url('?a=edit&q=' + name, privileged=True)) @@@ -612,8 -614,8 +614,8 @@@ class WikiFormatter print('

') else: indent = indent_re.match(self.line) - #3.0: print(self._indent_to(len(indent.group(0))), end=' ') print(self._indent_to(len(indent.group(1)), indent.group(2))) + # Stand back! Here we apply the monster regex that does all the parsing print(re.sub(scan_re, self.replace, self.line)) if self.in_pre: print('') @@@ -666,7 -668,7 +668,7 @@@ class Page out = '== ' pathname = '' for dirname in self.page_name.strip('/').split('/'): - pathname = (pathname + '/' + dirname) if pathname else dirname + pathname = (pathname and pathname + '/' ) + dirname out += '[[' + pathname + '|' + dirname + ']]/' out += ' ==\n' @@@ -694,7 -696,7 +696,7 @@@ #print "bernie: pragmas[" + m.group(1) + "] = " + m.group(2) + "
\n" except IOError, err: if err.errno != errno.ENOENT and err.errno != errno.EISDIR: - raise er + raise err return self._pragmas def pragma(self, name, default): @@@ -791,8 -793,10 +793,10 @@@ def save(self, newdata, changelog): if not self.can_write(): - self.msg_text = 'Write access denied by ACLs' - self.msg_type = 'error' + self.msg_text = 'Write access denied by Access Control List' + return + if not is_privileged(): + self.msg_text = 'Unauthenticated access denied' return self._write_file(newdata)