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'")