Commit 11f6f9df authored by Ulysse Beaugnon's avatar Ulysse Beaugnon

Merge branch 'master' of https://git.erp5.org/repos/vifibnet

parents 5d9fa24a b7453ca8
#!/usr/bin/env python
import sqlite3, xmlrpclib, time
import utils
class PeerManager:
def __init__(self, dbPath, server, server_port, refresh_time, external_ip, internal_ip, port, proto, db_size):
def __init__(self, db_path, server, server_port, refresh_time, external_ip, internal_ip, port, proto, db_size):
self._refresh_time = refresh_time
self._external_ip = external_ip
self._internal_ip = internal_ip
......@@ -14,7 +13,7 @@ class PeerManager:
self._proxy = xmlrpclib.ServerProxy('http://%s:%u' % (server, server_port))
utils.log('Connectiong to peers database', 4)
self._db = sqlite3.connect(dbPath, isolation_level=None)
self._db = sqlite3.connect(db_path, isolation_level=None)
utils.log('Preparing peers database', 4)
try:
self._db.execute("UPDATE peers SET used = 0")
......@@ -45,9 +44,9 @@ class PeerManager:
self._db.execute("DELETE FROM peers WHERE ip = ?", (self._external_ip,))
utils.log('New peers : %s' % ', '.join(map(str, new_peer_list)), 5)
def getUnusedPeers(self, nPeers):
def getUnusedPeers(self, peer_count):
return self._db.execute("SELECT id, ip, port, proto FROM peers WHERE used = 0 "
"ORDER BY RANDOM() LIMIT ?", (nPeers,))
"ORDER BY RANDOM() LIMIT ?", (peer_count,))
def usePeer(self, id):
utils.log('Updating peers database : using peer ' + str(id), 5)
......
#!/usr/bin/env python
import os, subprocess
import utils
......@@ -22,12 +21,12 @@ def openvpn(*args, **kw):
# TODO : set iface up when creating a server/client
# ! check working directory before launching up script ?
def server(serverIp, network, max_clients, dh_path, pipe_fd, port, proto, *args, **kw):
def server(server_ip, network, max_clients, dh_path, pipe_fd, port, proto, *args, **kw):
utils.log('Starting server', 3)
return openvpn(
'--tls-server',
'--mode', 'server',
'--up', 'ovpn-server %s/%u' % (serverIp, len(network)),
'--up', 'ovpn-server %s/%u' % (server_ip, len(network)),
'--client-connect', 'ovpn-server ' + str(pipe_fd),
'--client-disconnect', 'ovpn-server ' + str(pipe_fd),
'--dh', dh_path,
......@@ -36,12 +35,12 @@ def server(serverIp, network, max_clients, dh_path, pipe_fd, port, proto, *args,
'--proto', proto,
*args, **kw)
def client(serverIp, pipe_fd, *args, **kw):
def client(server_ip, pipe_fd, *args, **kw):
utils.log('Starting client', 5)
return openvpn(
'--nobind',
'--client',
'--remote', serverIp,
'--remote', server_ip,
'--up', 'ovpn-client',
'--route-up', 'ovpn-client ' + str(pipe_fd),
*args, **kw)
......
#!/usr/bin/env python
import socket, uuid
import log
......@@ -19,17 +18,17 @@ class RingMember:
class Ring:
def __init__(self, entryPoint):
def __init__(self, entry_point):
# initialize the connection
self.sock = socket.socket( socket.AF_INET6, socket.SOCK_DGRAM )
self.sock.bind(('', 0))
self.me = RingMember(uuid.uuid1().int ,'', self.sock.getsockname()[1]) # TODO : get the address
# to enter the ring
self.predecessor = None
if entryPoint == None:
if entry_point == None:
self.successor = self.me
else:
self.send('FIND_SUCCESSOR ' + str(self.me.id) + ' ' + self.me.toString(), entryPoint)
self.send('FIND_SUCCESSOR ' + str(self.me.id) + ' ' + self.me.toString(), entry_point)
log.log('Init the ring with me = ' + self.me.toString(), 3)
# TODO :
......@@ -72,6 +71,7 @@ class Ring:
# to be called periodically
# def fixFingers(self)
# # XXX: naming - should be finger_count
# next = (next + 1) mod (nFingers) # Or Random, cf google
# finger[next] = find_successor(n+2^{next-1});
......
#!/usr/bin/env python
import os, random, traceback, time
import plib, utils, db
......
#!/usr/bin/env python
import miniupnpc
import socket
# return (address, port)
def ForwardViaUPnP(localPort):
def ForwardViaUPnP(local_port):
u = miniupnpc.UPnP()
u.discoverdelay = 200
u.discover()
u.selectigd()
externalPort = 1194
external_port = 1194
while True:
while u.getspecificportmapping(externalPort, 'UDP') != None:
externalPort = max(externalPort + 1, 49152)
if externalPort == 65536:
while u.getspecificportmapping(external_port, 'UDP') != None:
external_port = max(externalPort + 1, 49152)
if external_port == 65536:
raise Exception
if u.addportmapping(externalPort, 'UDP', u.lanaddr, localPort, 'Vifib openvpn server', ''):
return (u.externalipaddress(), externalPort)
if u.addportmapping(external_port, 'UDP', u.lanaddr, local_port, 'Vifib openvpn server', ''):
return (u.externalipaddress(), external_port)
# TODO : specify a lease duration
#!/usr/bin/env python
import argparse, time, struct, socket
from OpenSSL import crypto
......
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