Commit f73c51ec authored by Julien Muchembled's avatar Julien Muchembled

Move runtime files to a subdirectory and simplify command-line options

We consider using sockets to communicate with OpenVPN, via --management option.
parent 1257f36c
...@@ -172,7 +172,7 @@ if 1: ...@@ -172,7 +172,7 @@ if 1:
crypto.dump_certificate(crypto.FILETYPE_ASN1, ca)).hexdigest() crypto.dump_certificate(crypto.FILETYPE_ASN1, ca)).hexdigest()
db_path = 'registry/registry.db' db_path = 'registry/registry.db'
registry.screen('./py re6st-registry @registry/re6st-registry.conf' registry.screen('./py re6st-registry @registry/re6st-registry.conf'
' --db %s --mailhost %s -v%u --control-socket registry/babeld.socket' ' --db %s --mailhost %s -v%u'
% (db_path, os.path.abspath('mbox'), VERBOSE)) % (db_path, os.path.abspath('mbox'), VERBOSE))
registry_url = 'http://%s/' % REGISTRY registry_url = 'http://%s/' % REGISTRY
registry.Popen(('python', '-c', """if 1: registry.Popen(('python', '-c', """if 1:
...@@ -207,9 +207,8 @@ if 1: ...@@ -207,9 +207,8 @@ if 1:
p.communicate(str(token[0])) p.communicate(str(token[0]))
os.remove(dh_path) os.remove(dh_path)
os.remove(folder + '/ca.crt') os.remove(folder + '/ca.crt')
node.screen('./py re6stnet @%s/re6stnet.conf -v%u --registry %s' node.screen('./py re6stnet @%s/re6stnet.conf -v%u --registry %s %s'
' --control-socket %s/babeld.socket' % (folder, VERBOSE, registry, args))
' %s' % (folder, VERBOSE, registry, folder, args))
re6stnet(registry, 'registry', '--ip ' + REGISTRY, registry='http://localhost/') re6stnet(registry, 'registry', '--ip ' + REGISTRY, registry='http://localhost/')
re6stnet(machine1, 'm1', '-I%s' % m1_if_0.name) re6stnet(machine1, 'm1', '-I%s' % m1_if_0.name)
re6stnet(machine2, 'm2', '--remote-gateway 10.1.1.1', prefix_len=80) re6stnet(machine2, 'm2', '--remote-gateway 10.1.1.1', prefix_len=80)
......
log m1/ log m1/
run m1/run
state m1/ state m1/
babel-pidfile m1/babeld.pid
pp 1194 tcp pp 1194 tcp
dh dh2048.pem dh dh2048.pem
ca ca.crt ca ca.crt
......
log m2/ log m2/
run m2/run
state m2/ state m2/
babel-pidfile m2/babeld.pid
pp 1194 tcp pp 1194 tcp
dh dh2048.pem dh dh2048.pem
ca ca.crt ca ca.crt
......
log m3/ log m3/
run m3/run
state m3/ state m3/
babel-pidfile m3/babeld.pid
pp 1194 tcp pp 1194 tcp
dh dh2048.pem dh dh2048.pem
ca ca.crt ca ca.crt
......
log m4/ log m4/
run m4/run
state m4/ state m4/
babel-pidfile m4/babeld.pid
pp 1194 tcp pp 1194 tcp
dh dh2048.pem dh dh2048.pem
ca ca.crt ca ca.crt
......
log m5/ log m5/
run m5/run
state m5/ state m5/
babel-pidfile m5/babeld.pid
ca ca.crt ca ca.crt
cert m5/cert.crt cert m5/cert.crt
key m5/cert.key key m5/cert.key
......
log m6/ log m6/
run m6/run
state m6/ state m6/
babel-pidfile m6/babeld.pid
pp 1194 tcp pp 1194 tcp
dh dh2048.pem dh dh2048.pem
ca ca.crt ca ca.crt
......
log m7/ log m7/
run m7/run
state m7/ state m7/
babel-pidfile m7/babeld.pid
pp 1194 tcp pp 1194 tcp
dh dh2048.pem dh dh2048.pem
ca ca.crt ca ca.crt
......
log m8/ log m8/
run m8/run
state m8/ state m8/
babel-pidfile m8/babeld.pid
ca ca.crt ca ca.crt
cert m8/cert.crt cert m8/cert.crt
key m8/cert.key key m8/cert.key
......
ca ca.crt ca ca.crt
key registry/ca.key key registry/ca.key
logfile registry/registry.log logfile registry/registry.log
run registry/run
hello 4 hello 4
client-count 2 client-count 2
tunnel-refresh 100 tunnel-refresh 100
log registry/ log registry/
run registry/run
state registry/ state registry/
babel-pidfile registry/babeld.pid
dh dh2048.pem dh dh2048.pem
ca ca.crt ca ca.crt
cert registry/cert.crt cert registry/cert.crt
......
...@@ -81,11 +81,11 @@ def main(): ...@@ -81,11 +81,11 @@ def main():
_('--anonymous-prefix-length', type=int, _('--anonymous-prefix-length', type=int,
help="Length of allocated anonymous prefixes." help="Length of allocated anonymous prefixes."
" If 0 or unset, registration by email is required") " If 0 or unset, registration by email is required")
_('--control-socket', metavar='CTL_SOCK', default=ctl.SOCK_PATH,
help="Socket path to use for communication between re6stnet and babeld"
" (option -R of Babel).")
_('-l', '--logfile', default='/var/log/re6stnet/registry.log', _('-l', '--logfile', default='/var/log/re6stnet/registry.log',
help="Path to logging file.") help="Path to logging file.")
_('-r', '--run', default='/var/run/re6stnet',
help="Path to re6stnet runtime directory:\n"
"- babeld.sock (option -R of babeld)\n")
_('-v', '--verbose', default=1, type=int, _('-v', '--verbose', default=1, type=int,
help="Log level. 0 disables logging." help="Log level. 0 disables logging."
" Use SIGUSR1 to reopen log.") " Use SIGUSR1 to reopen log.")
......
...@@ -2,8 +2,6 @@ import logging, socket, struct ...@@ -2,8 +2,6 @@ import logging, socket, struct
from collections import namedtuple from collections import namedtuple
from . import utils from . import utils
SOCK_PATH = '/var/run/re6st-babeld.sock'
uint16 = struct.Struct("!H") uint16 = struct.Struct("!H")
header = struct.Struct("!HI") header = struct.Struct("!HI")
......
...@@ -80,7 +80,7 @@ class RegistryServer(object): ...@@ -80,7 +80,7 @@ class RegistryServer(object):
self.email = self.cert.ca.get_subject().emailAddress self.email = self.cert.ca.get_subject().emailAddress
self.peers_lock = threading.Lock() self.peers_lock = threading.Lock()
self.ctl = ctl.Babel(config.control_socket, self.ctl = ctl.Babel(os.path.join(config.run, 'babeld.sock'),
weakref.proxy(self), self.network) weakref.proxy(self), self.network)
self.onTimeout() self.onTimeout()
......
...@@ -190,9 +190,9 @@ def select(R, W, T): ...@@ -190,9 +190,9 @@ def select(R, W, T):
if next_refresh <= t: if next_refresh <= t:
refresh() refresh()
def makedirs(path): def makedirs(*args):
try: try:
os.makedirs(path) os.makedirs(*args)
except OSError, e: except OSError, e:
if e.errno != errno.EEXIST: if e.errno != errno.EEXIST:
raise raise
......
#!/usr/bin/python #!/usr/bin/python
import atexit, errno, logging, os, signal, socket import atexit, errno, logging, os, shutil, signal
import subprocess, sys, time, threading import socket, subprocess, sys, time, threading
from collections import deque from collections import deque
from re6st import ctl, plib, tunnel, utils, version, x509 from re6st import plib, tunnel, utils, version, x509
from re6st.cache import Cache from re6st.cache import Cache
from re6st.utils import exit, ReexecException from re6st.utils import exit, ReexecException
...@@ -25,6 +25,10 @@ def getConfig(): ...@@ -25,6 +25,10 @@ def getConfig():
"- re6stnet.log: log file of re6stnet itself\n" "- re6stnet.log: log file of re6stnet itself\n"
"- babeld.log: log file of router\n" "- babeld.log: log file of router\n"
"- <iface>.log: 1 file per spawned OpenVPN\n") "- <iface>.log: 1 file per spawned OpenVPN\n")
_('-r', '--run', default='/var/run/re6stnet',
help="Path to re6stnet runtime directory:\n"
"- babeld.pid (option -I of babeld)\n"
"- babeld.sock (option -R of babeld)\n")
_('-s', '--state', default='/var/lib/re6stnet', _('-s', '--state', default='/var/lib/re6stnet',
help="Path to re6stnet state directory:\n" help="Path to re6stnet state directory:\n"
"- cache.db: cache of network parameters and peer addresses\n" "- cache.db: cache of network parameters and peer addresses\n"
...@@ -53,12 +57,6 @@ def getConfig(): ...@@ -53,12 +57,6 @@ def getConfig():
_ = parser.add_argument_group('routing').add_argument _ = parser.add_argument_group('routing').add_argument
_('-B', dest='babel_args', metavar='ARG', action='append', default=[], _('-B', dest='babel_args', metavar='ARG', action='append', default=[],
help="Extra arguments to forward to Babel.") help="Extra arguments to forward to Babel.")
_('--babel-pidfile', metavar='PID', default='/var/run/re6st-babeld.pid',
help="Specify a file to write our process id to"
" (option -I of Babel).")
_('--control-socket', metavar='CTL_SOCK', default=ctl.SOCK_PATH,
help="Socket path to use for communication between re6stnet and babeld"
" (option -R of Babel).")
_('--table', type=int, default=42, _('--table', type=int, default=42,
help="Use given table id. Set 0 to use the main table, if you want to" help="Use given table id. Set 0 to use the main table, if you want to"
" access internet via this network (in this case, make sure you" " access internet via this network (in this case, make sure you"
...@@ -245,9 +243,12 @@ def main(): ...@@ -245,9 +243,12 @@ def main():
# Init db and tunnels # Init db and tunnels
tunnel_interfaces = server_tunnels.keys() tunnel_interfaces = server_tunnels.keys()
timeout = 4 * cache.hello timeout = 4 * cache.hello
cleanup = [lambda: cache.cacheMinimize(config.client_count)] cleanup = [lambda: cache.cacheMinimize(config.client_count),
lambda: shutil.rmtree(config.run, True)]
utils.makedirs(config.run, 0700)
control_socket = os.path.join(config.run, 'babeld.sock')
if config.client_count and not config.client: if config.client_count and not config.client:
tunnel_manager = tunnel.TunnelManager(config.control_socket, tunnel_manager = tunnel.TunnelManager(control_socket,
cache, cert, next_renew, config.openvpn_args, timeout, cache, cert, next_renew, config.openvpn_args, timeout,
config.client_count, config.iface_list, address, ip_changed, config.client_count, config.iface_list, address, ip_changed,
remote_gateway, config.disable_proto, config.neighbour) remote_gateway, config.disable_proto, config.neighbour)
...@@ -348,8 +349,8 @@ def main(): ...@@ -348,8 +349,8 @@ def main():
cleanup.append(plib.router(subnet, cache.hello, config.table, cleanup.append(plib.router(subnet, cache.hello, config.table,
os.path.join(config.log, 'babeld.log'), os.path.join(config.log, 'babeld.log'),
os.path.join(config.state, 'babeld.state'), os.path.join(config.state, 'babeld.state'),
config.babel_pidfile, tunnel_interfaces, os.path.join(config.run, 'babeld.pid'),
config.control_socket, cache.babel_default, tunnel_interfaces, control_socket, cache.babel_default,
*config.babel_args).stop) *config.babel_args).stop)
if config.up: if config.up:
exit.release() exit.release()
......
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