def connect(): connected = False while True: try: if(connected == False): Log.i("PortalConnect","Connecting to PORTAL",PortalConnect.IP, 4046) PortalConnect.checkVPN() server_address = (PortalConnect.IP, 4046 ) PortalConnect.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) PortalConnect.sock.connect(server_address) PortalConnect.sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) PortalConnect.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 1) PortalConnect.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 1) PortalConnect.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 5) Log.i("PortalConnect","Connected to PORTAL") PortalConnect.sock.settimeout(3) data = { 'cmd' : 'register.renew', 'locIP' : PortalConnect.get_lan_ip(), 'webVer' : PortalConnect.config ['PortalConnect']['webVer'], 'hubVer' : PortalConnect.getMaxVer(), 'id' : PortalConnect.config ['PortalConnect']['id'], } #PortalConnect.sock.setblocking(0) connected = True PortalConnect.sock.sendall(json.dumps({"data":data}).encode()) PortalConnect.thread() #data = PortalConnect.sock.recv(1024) #Log.i('PortalConnect', "ReReged: ", data) #PortalConnect.sock.sendall(b"") time.sleep(1) #if not data: #connected = False #break except ConnectionError as e: Log.e('PortalConnect/Connect',"While E: %s"%e) connected = False time.sleep(5) #break except ValueError as e: Log.e('PortalConnect/Connect',"While E: %s"%e) connected = False time.sleep(5) except socket.error as e: #if(e.errno != 11): Log.w('PortalConnect/Connect',"Retrying...\n%s"%e) connected = False time.sleep(5)
def start(): PortalConnect.config = common.config if('PortalConnect' in PortalConnect.config): PortalConnect.IP = PortalConnect.config ['PortalConnect']['GATE-IP'] #PortalConnect.IP = 'localhost' PortalConnect.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) res = str(check_output(["sudo","ls","-l","/etc/ppp/peers/"])) if "main" not in res: vpnConfig = "pptpsetup --create main --server %s --username %s --password %s --encrypt MPPE --start" % (common.config['PortalConnect']['PUBLIC-IP'],common.config['PortalConnect']['user'],common.config['PortalConnect']['passw']) res = str(check_output(vpnConfig.split(" "))) Log.i("VPN Setup","pptpsetup create main:",res) else: print(os.system("sudo poff -a") ) res = os.system("sudo pon main updetach persist") print(res) if res != 0: Log.e("VPN Setup","Error connecting to VPN server(",res) threading.Thread(target = PortalConnect.connect, args=()).start() else: Log.w('PortalConnect',"Hub server not registed, so working in 'offline' mode. Run 'register.py'")