I am trying to update a global variable AUTHEN which refers to the socket's inputstream.
In the run()
method, I am trying to modify the AUTHEN's value. However, it never changes when I actually run the program. I am sure my server is did send other message other than "something"
import threading
import sys
import time
import socket
import ssl
AUTHEN ="Something"
class timer(threading.Thread):
def __init__(self):
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.ssl_sock = ssl.wrap_socket(self.sock, ssl_version=ssl.PROTOCOL_SSLv23)
self.ssl_sock.connect(('localhost',9991))
self.isrun = True
threading.Thread.__init__(self)
def send(self,str):
self.ssl_sock.send(str + "\n")
def run(self):
global AUTHEN
while self.isrun:
receive = self.ssl_sock.recv(1024)
AUTHEN = receive
print("recv ->" +AUTHEN)
self.sock.close()
self.ssl_sock.close()
def close(self):
self.isrun == False
def authentication(self,username,password):
global AUTHEN
print "Verifing identity"
self.ssl_sock.send("U&P"+"sprt"+username+"sprt"+password+'\n')
while (True):
print AUTHEN
if(AUTHEN == str("OK\r\n")):
return AUTHEN
else:
print "Please Try again"
break
def main():
client = timer()
client.start()
#LOG IN
while(True):
loginMessage = str(raw_input("Please enter username and password as following format: \n username%password \n"))
username = loginMessage.split("%")[0]
password = loginMessage.split("%")[1]
Result = client.authentication(username,password)
if(Result == str("OK\r\n")):
print "LOG IN SUCCESSFULLY"
print "Welcome:\n","Command to be used:\n","-a filename\n" "-c number\n", "-f filename\n","-h hostname:port\n","-n name\n","-u certificate\n","-v filename certificate\n","otherwise input will be treated as normal message"
break
if __name__=='__main__':
main()
Thank you.