def __init__(self, CONFIG_, logger, observerable, run_event): #super(IpopController, self).__init__("controller") #self.observable = observer.Observable() #self.observable.register(self) global CONFIG CONFIG = CONFIG_ self.run_event = run_event self.observable = observerable il.UdpServer.__init__(self, CONFIG["xmpp_username"], CONFIG["xmpp_password"], CONFIG["xmpp_host"], CONFIG["ip4"], logger) self.idle_peers = {} self.user = CONFIG["xmpp_username"] # XMPP username self.password = CONFIG["xmpp_password"] # XMPP Password self.host = CONFIG["xmpp_host"] # XMPP host self.ip4 = CONFIG["ip4"] self.uid = il.gen_uid(self.ip4) # SHA-1 hash self.vpn_type = CONFIG["controller_type"] self.ctrl_conn_init() global logging print dir(logger) logging = logger print dir(logging) logging.error("what") self.uid_ip_table = {} parts = CONFIG["ip4"].split(".") ip_prefix = parts[0] + "." + parts[1] + "." # Populating the uid_ip_table with all the IPv4 addresses # and the corresponding UIDs in the /16 subnet for i in range(0, 255): for j in range(0, 255): ip = ip_prefix + str(i) + "." + str(j) uid = il.gen_uid(ip) self.uid_ip_table[uid] = ip # Ignore the network interfaces in the list if "network_ignore_list" in CONFIG: logging.debug("network ignore list") il.make_call(self.sock, m="set_network_ignore_list",\ network_ignore_list=CONFIG["network_ignore_list"])
def create_connection_req(self, data, idle_peers): version_ihl = struct.unpack('!B', data[54:55]) version = version_ihl[0] >> 4 if version == 4: s_addr = socket.inet_ntoa(data[66:70]) d_addr = socket.inet_ntoa(data[70:74]) elif version == 6: s_addr = socket.inet_ntop(socket.AF_INET6, data[62:78]) d_addr = socket.inet_ntop(socket.AF_INET6, data[78:94]) # At present, we do not handle ipv6 multicast if d_addr.startswith("ff02"): return uid = ipoplib.gen_uid(d_addr) try: msg = idle_peers[uid] except KeyError: logCBT = self.CFxHandle.createCBT(initiator='BaseTopology' 'Manager', recipient='Logger', action='error', data="Peer {0} is not " "logged in".format(d_addr)) self.CFxHandle.submitCBT(logCBT) return logCBT = self.CFxHandle.createCBT(initiator='BaseTopology' 'Manager', recipient='Logger', action='debug', data="idle_peers[uid]" " --- {0}".format(msg)) self.CFxHandle.submitCBT(logCBT) cbt_data = { 'uid': uid, 'idle_peers': idle_peers, 'send_req': True } CBT = self.CFxHandle.createCBT(initiator='BaseTopologyManager', recipient='BaseTopologyManager', action='ONDEMAND_CONNECTION', data=cbt_data) self.CFxHandle.submitCBT(CBT)
def initialize(self): # Populating the uid_ip_table with all the IPv4 addresses # and the corresponding UIDs in the /16 subnet parts = self.CMConfig["ip4"].split(".") ip_prefix = parts[0] + "." + parts[1] + "." for i in range(0, 255): for j in range(0, 255): ip = ip_prefix + str(i) + "." + str(j) uid = gen_uid(ip) self.uid_ip_table[uid] = ip logCBT = self.CFxHandle.createCBT(initiator='AddressMapper', recipient='Logger', action='info', data="AddressMapper Loaded") self.CFxHandle.submitCBT(logCBT)
def __init__(self): with open('config.json') as data_file: # Read config.json into an OrderedDict, to load the # modules in the order in which they appear in config.json self.json_data = json.load(data_file, object_pairs_hook=OrderedDict) # Parse config and update default CONFIG in ipoplib self.parse_config() ipoplib.CONFIG = self.CONFIG # CFxHandleDict is a dict containing the references to # CFxHandles of all CMs with key as the module name and # value as the CFxHandle reference self.CFxHandleDict = {} self.vpn_type = self.CONFIG['CFx']['vpn_type'] self.user = self.CONFIG['CFx']["xmpp_username"] self.password = self.CONFIG['CFx']["xmpp_password"] self.host = self.CONFIG['CFx']["xmpp_host"] self.ip4 = self.CONFIG['AddressMapper']["ip4"] if(self.vpn_type == 'GroupVPN'): self.uid = ipoplib.gen_uid(self.ip4) # SHA-1 Hash elif(self.vpn_type == 'SocialVPN'): self.uid = self.CONFIG['CFx']['local_uid'] self.ip6 = ipoplib.gen_ip6(self.uid) if socket.has_ipv6: self.sock = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM) self.sock_svr = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM) self.sock_svr.bind((self.CONFIG['TincanSender']["localhost6"], self.CONFIG['CFx']["contr_port"])) else: self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.sock_svr = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.sock_svr.bind((self.CONFIG['TincanSender']["localhost"], self.CONFIG['CFx']["contr_port"])) self.sock.bind(("", 0)) self.sock_list = [self.sock, self.sock_svr]