Include admin callback script
This commit is contained in:
parent
f26d7eeabe
commit
31cb17b32f
129
admin_cb.py
Executable file
129
admin_cb.py
Executable file
@ -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>"
|
Loading…
x
Reference in New Issue
Block a user