Permalink
Browse files

Include admin callback script

  • Loading branch information...
m94mni committed Jun 1, 2010
1 parent f26d7ee commit 31cb17b32fd95be3e5afd552cbc082c9c92d16d5
Showing with 129 additions and 0 deletions.
  1. +129 −0 admin_cb.py
View
@@ -0,0 +1,129 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import cgi
+import cgitb
+cgitb.enable()
+
+from urllib import unquote
+import sys, os
+
+# Modify this to point to where you usually run planet.
+BASE_DIR = '..'
+
+# Modify this to point to your venus installation dir, relative to planet dir above.
+VENUS_INSTALL = "venus"
+
+# Config file, relative to planet dir above
+CONFIG_FILE = "config/live"
+
+# Admin page URL, relative to this script's URL
+ADMIN_URL = "admin.html"
+
+
+# chdir to planet dir - config may be relative from there
+os.chdir(os.path.abspath(BASE_DIR))
+
+# Add venus to path.
+sys.path.append(VENUS_INSTALL)
+
+# Add shell dir to path - auto detection does not work
+sys.path.append(os.path.join(VENUS_INSTALL, "planet", "shell"))
+
+# import necessary planet items
+from planet import config
+from planet.spider import filename
+
+
+# Load config
+config.load(CONFIG_FILE)
+
+# parse query parameters
+form = cgi.FieldStorage()
+
+
+# Start HTML output at once
+print "Content-Type: text/html;charset=utf-8" # HTML is following
+print # blank line, end of headers
+
+
+print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'
+print '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sv"><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>Admin results</title></head><body>'
+print '<div>'
+
+# Cache and blacklist dirs
+
+cache = config.cache_directory()
+blacklist = config.cache_blacklist_directory()
+
+# Must have command parameter
+if not "command" in form:
+ print "<p>Unknown command</p>"
+
+elif form['command'].value == "blacklist":
+
+ # find list of urls, in the form bl[n]=url
+
+ for key in form.keys():
+
+ if not key.startswith("bl"): continue
+
+ url = unquote(form[key].value)
+
+ # find corresponding files
+ cache_file = filename(cache, url)
+ blacklist_file = filename(blacklist, url)
+
+ # move to blacklist if found
+ if os.path.exists(cache_file):
+
+ os.rename(cache_file, blacklist_file)
+
+ print "<p>Blacklisted <a href='" + url + "'>" + url + "</a></p>"
+
+ else:
+
+ print "<p>Unknown file: " + cache_file + "</p>"
+
+
+elif form['command'].value == "run":
+
+ # run spider and refresh
+
+ from planet import spider, splice
+ try:
+ spider.spiderPlanet(only_if_new=False)
+ print "<p>Successfully ran spider</p>"
+ except Exception, e:
+ print e
+
+ doc = splice.splice()
+ splice.apply(doc.toxml('utf-8'))
+
+elif form['command'].value == "refresh":
+
+ # only refresh
+
+ from planet import splice
+
+ doc = splice.splice()
+ splice.apply(doc.toxml('utf-8'))
+
+ print "<p>Successfully refreshed</p>"
+
+elif form['command'].value == "expunge":
+
+ # only expunge
+ from planet import expunge
+ expunge.expungeCache()
+
+ print "<p>Successfully expunged</p>"
+
+
+
+
+print "<p><strong><a href='" + ADMIN_URL + "'>Return</a> to admin interface</strong></p>"
+
+
+
+print "</body></html>"

0 comments on commit 31cb17b

Please sign in to comment.