Commit 4ecdee13 authored by Julien Muchembled's avatar Julien Muchembled

registry: new @rpc_private decorator

parent e92ca586
...@@ -40,6 +40,10 @@ def rpc(f): ...@@ -40,6 +40,10 @@ def rpc(f):
f.getcallargs = eval("lambda %s: locals()" % ','.join(args[1:])) f.getcallargs = eval("lambda %s: locals()" % ','.join(args[1:]))
return f return f
def rpc_private(f):
f._private = None
return rpc(f)
class HTTPError(Exception): class HTTPError(Exception):
pass pass
...@@ -237,7 +241,7 @@ class RegistryServer(object): ...@@ -237,7 +241,7 @@ class RegistryServer(object):
def handle_request(self, request, method, kw, def handle_request(self, request, method, kw,
_localhost=('127.0.0.1', '::1')): _localhost=('127.0.0.1', '::1')):
m = getattr(self, method) m = getattr(self, method)
if method in ('revoke', 'versions', 'topology'): if hasattr(method, '_private'):
x_forwarded_for = request.headers.get('X-Forwarded-For') x_forwarded_for = request.headers.get('X-Forwarded-For')
if request.client_address[0] not in _localhost or \ if request.client_address[0] not in _localhost or \
x_forwarded_for and x_forwarded_for not in _localhost: x_forwarded_for and x_forwarded_for not in _localhost:
...@@ -482,7 +486,7 @@ class RegistryServer(object): ...@@ -482,7 +486,7 @@ class RegistryServer(object):
logging.info("Sending bootstrap peer: %s", msg) logging.info("Sending bootstrap peer: %s", msg)
return x509.encrypt(cert, msg) return x509.encrypt(cert, msg)
@rpc @rpc_private
def revoke(self, cn_or_serial): def revoke(self, cn_or_serial):
with self.lock: with self.lock:
with self.db: with self.db:
...@@ -505,7 +509,7 @@ class RegistryServer(object): ...@@ -505,7 +509,7 @@ class RegistryServer(object):
q("INSERT INTO crl VALUES (?,?)", (serial, not_after)) q("INSERT INTO crl VALUES (?,?)", (serial, not_after))
self.updateNetworkConfig() self.updateNetworkConfig()
@rpc @rpc_private
def versions(self): def versions(self):
with self.peers_lock: with self.peers_lock:
self.request_dump() self.request_dump()
...@@ -531,7 +535,7 @@ class RegistryServer(object): ...@@ -531,7 +535,7 @@ class RegistryServer(object):
break break
return json.dumps(peer_dict) return json.dumps(peer_dict)
@rpc @rpc_private
def topology(self): def topology(self):
p = lambda p: '%s/%s' % (int(p, 2), len(p)) p = lambda p: '%s/%s' % (int(p, 2), len(p))
peers = deque((p(self.prefix),)) peers = deque((p(self.prefix),))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment