X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=geekigeeki.py;h=a0dc72ca0629280be7792e5c57d3dee60c5b2525;hb=6002848303f10b453acd930707ea436ec1183725;hp=a36eced13ff809056a7aae93d66ef79e4fbd32ed;hpb=e8e48e36abeab2e05f2e6cde0a8072ef76f20ba5;p=geekigeeki.git diff --git a/geekigeeki.py b/geekigeeki.py index a36eced..a0dc72c 100755 --- a/geekigeeki.py +++ b/geekigeeki.py @@ -18,7 +18,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -__version__ = '$Id$'[4:12] +__version__ = '4.0-' + '$Id$'[4:11] from time import clock start_time = clock() @@ -26,13 +26,14 @@ title_done = False import cgi, sys, os, re, errno, stat -# FIXME: we accept stuff like foo/../bar and we shouldn't -file_re = re.compile(r"([A-Za-z0-9_\-][A-Za-z0-9_\.\-/]*)") +image_ext = 'png|gif|jpg|jpeg|bmp|ico' video_ext = "ogg|ogv|oga" # Not supported by Firefox 3.5: mkv|mpg|mpeg|mp4|avi|asf|flv|wmv|qt -img_re = re.compile(r".*\.(png|gif|jpg|jpeg|bmp|ico|" + video_ext + ")", re.IGNORECASE) +image_re = re.compile(r".*\.(" + image_ext + "|" + video_ext + ")", re.IGNORECASE) video_re = re.compile(r".*\.(" + video_ext + ")", re.IGNORECASE) -url_re = re.compile(r"[a-z]{3,8}://[^\s'\"]+\S") -ext_re = re.compile(r"\.([^\./]+)$") +# FIXME: we accept stuff like foo/../bar and we shouldn't +file_re = re.compile(r"([A-Za-z0-9_\-][A-Za-z0-9_\.\-/]*)") +url_re = re.compile(r"[a-z]{3,8}://[^\s'\"]+\S") +ext_re = re.compile(r"\.([^\./]+)$") # CGI stuff --------------------------------------------------------- def script_name(): @@ -80,7 +81,7 @@ def permalink(s): return re.sub(' ', '-', re.sub('[^a-z0-9_ ]', '', s.lower()).strip()) def humanlink(s): - return re.sub(r'([^:/\.]+)(?:\.[^/:]+|)$', r'\1', s.replace('_', ' ')) + return re.sub(r'(?:.*[/:]|)([^:/\.]+)(?:\.[^/:]+|)$', r'\1', s.replace('_', ' ')) # Split arg lists like "blah| blah blah| width=100 | align = center", # return a list containing anonymous arguments and a map containing the named arguments @@ -198,7 +199,7 @@ def send_httperror(status="403 Not Found", query=""): def link_tag(dest, text=None, privileged=False, **kvargs): if text is None: text = humanlink(dest) - elif img_re.match(text): + elif image_re.match(text): text = '' + text + '' link_class = kvargs.get('class', kvargs.get('cssclass', None)) @@ -223,7 +224,7 @@ def link_inline(name, descr=None, kvargs={}): url = relative_url(name) if video_re.match(name): return '' % url - elif img_re.match(name): + elif image_re.match(name): return '%s' % (url, url + url_args(kvargs), descr) elif file_re.match(name) and not ext_re.search(name): # FIXME: this guesses a wiki page return Page(name).send_naked() @@ -336,6 +337,7 @@ def send_footer(mod_string=None): cgi.print_arguments() cgi.print_form(form) cgi.print_environ() + #FIXME link_inline("sys/footer") print('''