chiark
/
gitweb
/
~ian
/
hippotat.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
no daft debug
[hippotat.git]
/
server
diff --git
a/server
b/server
index 6cb8d9861e8ed36d3612ef1e7a9c452d75516d8c..0d75e0b8b1f78cac850c70bf405b8cc50be07c6a 100755
(executable)
--- a/
server
+++ b/
server
@@
-12,11
+12,13
@@
from twisted.web.server import NOT_DONE_YET
import syslog
import syslog
+import traceback
+
clients = { }
#---------- "router" ----------
clients = { }
#---------- "router" ----------
-def route(packet, saddr, daddr):
+def route(packet,
iface,
saddr, daddr):
def lt(dest):
log_debug(DBG.ROUTE, 'route: %s -> %s: %s' % (saddr,daddr,dest), d=packet)
try: dclient = clients[daddr]
def lt(dest):
log_debug(DBG.ROUTE, 'route: %s -> %s: %s' % (saddr,daddr,dest), d=packet)
try: dclient = clients[daddr]
@@
-29,10
+31,10
@@
def route(packet, saddr, daddr):
queue_inbound(packet)
elif daddr == relay:
lt('discard relay')
queue_inbound(packet)
elif daddr == relay:
lt('discard relay')
- log_discard(packet, saddr, daddr, 'relay')
+ log_discard(packet,
iface,
saddr, daddr, 'relay')
else:
lt('discard no-client')
else:
lt('discard no-client')
- log_discard(packet, saddr, daddr, 'no-client')
+ log_discard(packet,
iface,
saddr, daddr, 'no-client')
#---------- client ----------
#---------- client ----------
@@
-67,8
+69,8
@@
class Client():
self._log(DBG.INIT, 'new')
self._log(DBG.INIT, 'new')
- def _log(self,
pri
, msg, **kwargs):
- log_debug(
pri, 'client '+self._ip+': '
+msg, **kwargs)
+ def _log(self,
dflag
, msg, **kwargs):
+ log_debug(
dflag, ('client %s: ' % self._ip)
+msg, **kwargs)
def process_arriving_data(self, d):
self._log(DBG.FLOW, 'req data', d=d)
def process_arriving_data(self, d):
self._log(DBG.FLOW, 'req data', d=d)
@@
-76,7
+78,7
@@
class Client():
(saddr, daddr) = packet_addrs(packet)
if saddr != self._ip:
raise ValueError('wrong source address %s' % saddr)
(saddr, daddr) = packet_addrs(packet)
if saddr != self._ip:
raise ValueError('wrong source address %s' % saddr)
- route(packet, saddr, daddr)
+ route(packet, s
elf._ip, s
addr, daddr)
def _req_cancel(self, request):
self._log(DBG.HTTPCTRL, 'cancel', idof=request)
def _req_cancel(self, request):
self._log(DBG.HTTPCTRL, 'cancel', idof=request)
@@
-137,14
+139,14
@@
class Client():
def process_request(request, desca):
# find client, update config, etc.
metadata = request.args['m']
def process_request(request, desca):
# find client, update config, etc.
metadata = request.args['m']
- metadata = metadata.split(b'\n')
- (ci_s, pw, tro) = metadata
.split(b'\n')
[0:3]
- desca['m'] = [ci_s, tro]
+ metadata = metadata.split(b'\
r\
n')
+ (ci_s, pw, tro) = metadata[0:3]
+ desca['m
[0,2]
'] = [ci_s, tro]
ci = ipaddr(ci_s)
desca['ci'] = ci
cl = clients[ci]
if pw != cl.pw: raise ValueError('bad password')
ci = ipaddr(ci_s)
desca['ci'] = ci
cl = clients[ci]
if pw != cl.pw: raise ValueError('bad password')
- desca['pwok'
=True]
+ desca['pwok'
]=True
if tro != cl.target_requests_outstanding:
raise ValueError('tro must be %d' % cl.target_requests_outstanding)
if tro != cl.target_requests_outstanding:
raise ValueError('tro must be %d' % cl.target_requests_outstanding)
@@
-168,14
+170,17
@@
def log_http(desca, msg):
class IphttpResource(twisted.web.resource.Resource):
isLeaf = True
def render_POST(self, request):
class IphttpResource(twisted.web.resource.Resource):
isLeaf = True
def render_POST(self, request):
+ log_debug(DBG.HTTP_FULL,
+ 'req recv: ' + repr(request) + ' ' + repr(request.args),
+ idof=id(request))
desca = {'d': None}
try: process_request(request, desca)
except Exception as e:
desca = {'d': None}
try: process_request(request, desca)
except Exception as e:
- emsg =
str(e).encode('utf-8'
)
+ emsg =
traceback.format_exc(
)
log_http(desca, 'EXCEPTION ' + emsg)
request.setHeader('Content-Type','text/plain; charset="utf-8"')
request.setResponseCode(400)
log_http(desca, 'EXCEPTION ' + emsg)
request.setHeader('Content-Type','text/plain; charset="utf-8"')
request.setResponseCode(400)
- return emsg
+ return emsg
.encode('utf-8')
log_http(desca, '... [%s]' % id(request))
return NOT_DONE_YET
log_http(desca, '... [%s]' % id(request))
return NOT_DONE_YET