mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-08-26 12:46:08 +00:00
Explicitly handle routes.
This commit is contained in:
parent
7ef96dda12
commit
b24fc07970
@ -5,13 +5,14 @@
|
|||||||
|
|
||||||
import santiago
|
import santiago
|
||||||
|
|
||||||
|
from Cheetah.Template import Template
|
||||||
import cherrypy
|
import cherrypy
|
||||||
import httplib, urllib, urlparse
|
import httplib, urllib, urlparse
|
||||||
import sys
|
import sys
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
|
||||||
def start():
|
def start(*args, **kwargs):
|
||||||
"""Module-level start function, called after listener and sender started.
|
"""Module-level start function, called after listener and sender started.
|
||||||
|
|
||||||
TODO: integrate multiple servers:
|
TODO: integrate multiple servers:
|
||||||
@ -21,7 +22,7 @@ def start():
|
|||||||
"""
|
"""
|
||||||
cherrypy.engine.start()
|
cherrypy.engine.start()
|
||||||
|
|
||||||
def stop():
|
def stop(*args, **kwargs):
|
||||||
"""Module-level stop function, called after listener and sender stopped.
|
"""Module-level stop function, called after listener and sender stopped.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@ -39,23 +40,32 @@ class Listener(santiago.SantiagoListener):
|
|||||||
cherrypy.server.socket_port = socket_port
|
cherrypy.server.socket_port = socket_port
|
||||||
cherrypy.server.ssl_certificate = ssl_certificate
|
cherrypy.server.ssl_certificate = ssl_certificate
|
||||||
cherrypy.server.ssl_private_key = ssl_private_key
|
cherrypy.server.ssl_private_key = ssl_private_key
|
||||||
cherrypy.tree.mount(cherrypy.Application(self, "/"))
|
|
||||||
|
d = cherrypy.dispatch.RoutesDispatcher()
|
||||||
@cherrypy.expose
|
d.connect("index", "/", self.index)
|
||||||
|
d.connect("learn", "/learn/:host/:service", self.learn)
|
||||||
|
d.connect("where", "/where/:host/:service", self.where)
|
||||||
|
d.connect("provide", "/provide/:host/:service/:location", self.provide)
|
||||||
|
|
||||||
|
cherrypy.tree.mount(cherrypy.Application(self), "", {"/": {"request.dispatch": d}})
|
||||||
|
|
||||||
def index(self, **kwargs):
|
def index(self, **kwargs):
|
||||||
"""Receive an incoming Santiago request from another Santiago client."""
|
"""Receive an incoming Santiago request from another Santiago client."""
|
||||||
|
|
||||||
santiago.debug_log("Received request {0}".format(str(kwargs)))
|
santiago.debug_log("Received request {0}".format(str(kwargs)))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.incoming_request(kwargs["request"])
|
self.incoming_request(kwargs["request"])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.exception(e)
|
logging.exception(e)
|
||||||
|
|
||||||
@cherrypy.expose
|
if not cherrypy.request.remote.ip.startswith("127.0.0."):
|
||||||
def learn(self, host, service):
|
santiago.debug_log("Request from non-local IP")
|
||||||
|
return
|
||||||
|
|
||||||
|
raise cherrypy.HTTPRedirect("/freedombuddy")
|
||||||
|
|
||||||
|
def learn(self, host, service, **kwargs):
|
||||||
"""Request a resource from another Santiago client.
|
"""Request a resource from another Santiago client.
|
||||||
|
|
||||||
TODO: add request whitelisting.
|
TODO: add request whitelisting.
|
||||||
@ -94,16 +104,6 @@ class Listener(santiago.SantiagoListener):
|
|||||||
|
|
||||||
return super(Listener, self).provide(client, service, location)
|
return super(Listener, self).provide(client, service, location)
|
||||||
|
|
||||||
@cherrypy.expose
|
|
||||||
def pdb(self):
|
|
||||||
"""Set a trace."""
|
|
||||||
|
|
||||||
if not cherrypy.request.remote.ip.startswith("127.0.0."):
|
|
||||||
santiago.debug_log("Request from non-local IP")
|
|
||||||
return
|
|
||||||
|
|
||||||
import pdb; pdb.set_trace()
|
|
||||||
|
|
||||||
class Sender(santiago.SantiagoSender):
|
class Sender(santiago.SantiagoSender):
|
||||||
|
|
||||||
def __init__(self, my_santiago, proxy_host, proxy_port):
|
def __init__(self, my_santiago, proxy_host, proxy_port):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user