X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=geekigeeki.py;h=1e2b065d05705ba8851177338d651429809590a4;hb=adf0fd62361a085ac014efa4985647864a46f603;hp=44be2a46bcc3163307d0f65d62b7421b73c130f8;hpb=a8cdeeed7e87a195c5e9e0b1e2b74e6b04da1109;p=geekigeeki.git diff --git a/geekigeeki.py b/geekigeeki.py index 44be2a4..1e2b065 100755 --- a/geekigeeki.py +++ b/geekigeeki.py @@ -85,7 +85,7 @@ def send_guru(msg_text, msg_type): print ' Software Failure. Press left mouse button to continue.\n' print msg_text if msg_type == 'error': - print ' Guru Meditation #DEADBEEF.ABADC0DE' + print '\n Guru Meditation #DEADBEEF.ABADC0DE' print '' # FIXME: This little JS snippet is harder to pass than ACID 3.0 print """ @@ -110,7 +110,7 @@ def send_guru(msg_text, msg_type): } """ -def send_title(name, text="Limbo", msg_text=None, msg_type='error'): +def send_title(name, text="Limbo", msg_text=None, msg_type='error', writable=False): global title_done if title_done: return @@ -125,23 +125,27 @@ def send_title(name, text="Limbo", msg_text=None, msg_type='error'): print ' ' if not name: print ' ' - for css in css_url: - print ' ' % relative_url(css) - if icon_url: - print ' ' % relative_url(icon_url) - if privileged_url is not None: - print ' ' \ + for meta in meta_urls: + http_equiv, content = meta + print ' ' % (http_equiv, relative_url(content)) + + for link in link_urls: + rel, href = link + print ' ' % (rel, relative_url(href)) + + if name and writable and privileged_url is not None: + print ' ' \ % (privileged_path() + '?edit=' + name) if history_url is not None: print ' ' \ - % (history_url + '?a=rss') + % relative_url(history_url + '?a=rss') print '' # Body - if name and privileged_url is not None: + if name and writable and privileged_url is not None: print '' else: print '' @@ -155,17 +159,21 @@ def send_title(name, text="Limbo", msg_text=None, msg_type='error'): print ' ' + link_tag('?fullsearch=' + name, text, 'navlink') + ' ' else: print ' ' + text + ' ' - print ' | ' + link_tag('FrontPage', 'Front Page', 'navlink') + print ' | ' + link_tag('FrontPage', 'Home', 'navlink') print ' | ' + link_tag('FindPage', 'Find Page', 'navlink') if 'history_url' in globals(): - print ' | Recent Changes' + print ' | Recent Changes' if name: - print ' | Page History' + print ' | Page History' if name: print ' | ' + link_tag('?raw=' + name, 'Raw Text', 'navlink') if privileged_url is not None: - print ' | ' + link_tag('?edit=' + name, 'Edit Page', 'navlink', privileged=True) + if writable: + print ' | ' + link_tag('?edit=' + name, 'Edit', 'navlink', privileged=True) + else: + print ' | ' + link_tag(name, 'Login', 'navlink', privileged=True) + else: print ' | Immutable Page' @@ -175,6 +183,11 @@ def send_title(name, text="Limbo", msg_text=None, msg_type='error'): print '
' +def send_httperror(status="403 Not Found", query=""): + print "Status: %s" % status + send_title(None, msg_text=("%s: on query '%s'" % (status, query))) + send_footer(None) + def link_tag(params, text=None, ss_class=None, privileged=False): if text is None: text = params # default @@ -236,15 +249,23 @@ def print_search_stats(hits, searched): print "

%d hits out of %d pages searched.

" % (hits, searched) def handle_raw(pagename): + if not file_re.match(pagename): + send_httperror("403 Forbidden", pagename) + return + Page(pagename).send_raw() def handle_edit(pagename): + if not file_re.match(pagename): + send_httperror("403 Forbidden", pagename) + return + pg = Page(pagename) if 'save' in form: if form['file'].value: - pg.save(form['file'].file.read()) + pg.save(form['file'].file.read(), form['changelog'].value) else: - pg.save(form['savetext'].value.replace('\r\n', '\n')) + pg.save(form['savetext'].value.replace('\r\n', '\n'), form['changelog'].value) pg.format() elif 'cancel' in form: pg.msg_text = 'Editing canceled' @@ -261,17 +282,20 @@ def make_index_key(): return '

'+ ' | '.join(links) + '

' def page_list(dir = None, re = word_re): - return filter(re.match, os.listdir(dir or data_dir)) + return sorted(filter(re.match, os.listdir(dir or data_dir))) def send_footer(name, mod_string=None): if globals().get('debug_cgi', False): cgi.print_arguments() cgi.print_form(form) cgi.print_environ() - print '