preliminary wss support
This commit is contained in:
parent
75c248ff9b
commit
6044f350dd
12
AOsocket.py
12
AOsocket.py
@ -2,6 +2,7 @@ import socket
|
||||
import platform
|
||||
|
||||
import websocket
|
||||
import ssl
|
||||
|
||||
from constants import *
|
||||
|
||||
@ -63,8 +64,17 @@ class AOwebSocket(object):
|
||||
"User-Agent": "AO2XP %s, Python %s, %s %s %s" % (GAME_VERSION, platform.python_version(), platform.system(), platform.release(), platform.machine())
|
||||
}
|
||||
|
||||
def connect(self, ip, port):
|
||||
def connect(self, ip, port, secure_port):
|
||||
try:
|
||||
if secure_port:
|
||||
try:
|
||||
print "[debug]", "Trying secure websocket..."
|
||||
self.sock.connect("wss://%s:%s" % (ip, secure_port), header=self.header)
|
||||
except:
|
||||
print "[debug]", "Connecting to secure websocket failed. Trying websocket..."
|
||||
self.sock.connect("ws://%s:%s" % (ip, port), header=self.header)
|
||||
else:
|
||||
print "[debug]", "Trying websocket..."
|
||||
self.sock.connect("ws://%s:%s" % (ip, port), header=self.header)
|
||||
except:
|
||||
return False
|
||||
|
@ -20,6 +20,7 @@ Features added since the last commit of [Headshot's AO2XP](https://github.com/he
|
||||
- Demo recording and playback with a seekbar, no need to send messages to OOC
|
||||
- Pair with players directly from the player list
|
||||
- Playing music over HTTPS (on systems where the BASS library can't do it on its own)
|
||||
- Connections over secure websockets (wss)
|
||||
- FLAC music support
|
||||
- MIDI music support (needs a soundfount file named `gm.sf2` in the root AO2XP directory)
|
||||
- Module music support (MOD, XM, IT, S3M)
|
||||
|
49
mainmenu.py
49
mainmenu.py
@ -118,7 +118,7 @@ class lobby(QtGui.QWidget):
|
||||
self.onlineplayers = QtGui.QLabel(self)
|
||||
self.onlineplayers.setStyleSheet('color: white')
|
||||
self.onlineplayers.setAlignment(QtCore.Qt.AlignCenter | QtCore.Qt.AlignTop)
|
||||
self.onlineplayers.setText(random.choice(['hi', 'oh, welcome back', 'hello', 'click on a server to begin', 'yo, how you doing?']))
|
||||
self.onlineplayers.setText(random.choice(['Hi', 'Oh, welcome back', 'Hello', 'Click on a server to begin', 'Yo, how are you doing?']))
|
||||
self.onlineplayers.move(336, 91)
|
||||
self.onlineplayers.resize(173, 16)
|
||||
|
||||
@ -196,8 +196,8 @@ class lobby(QtGui.QWidget):
|
||||
self.masterserver.start()
|
||||
|
||||
if not demo and self.autoconnect:
|
||||
self.aoserverinfo.setIP(self.autoconnect[-1], self.autoconnect[0], self.autoconnect[1], self.autoconnect[2])
|
||||
print '[debug]', 'Connecting automatically to ip: ' + self.autoconnect[0] + ', port: ' + str(self.autoconnect[1]) + ", websocket port: " + str(self.autoconnect[2])
|
||||
self.aoserverinfo.setIP(self.autoconnect[-1], self.autoconnect[0], self.autoconnect[1], self.autoconnect[2], self.autoconnect[3])
|
||||
print '[debug]', 'Connecting automatically to ip: ' + self.autoconnect[0] + ', port: ' + str(self.autoconnect[1]) + ", websocket port: " + str(self.autoconnect[2]) + ", websocket port: " + str(self.autoconnect[3])
|
||||
self.aoserverinfo.stop()
|
||||
self.aoserverinfo.start()
|
||||
|
||||
@ -218,10 +218,11 @@ class lobby(QtGui.QWidget):
|
||||
ip = server["ip"]
|
||||
port = server["port"]
|
||||
ws_port = server["ws_port"] if "ws_port" in server else 0
|
||||
wss_port = server["wss_port"] if "wss_port" in server else 0
|
||||
|
||||
serveritem = QtGui.QListWidgetItem(name)
|
||||
if self.tab == 0: self.serverlist.addItem(serveritem)
|
||||
self.actual_serverlist.append((ip, port, name, desc, ws_port))
|
||||
self.actual_serverlist.append((ip, port, name, desc, ws_port, wss_port))
|
||||
|
||||
def moveToGame(self, stuff):
|
||||
tcp, playerlist, charlist, musiclist, background, evidence, areas, features, joinooc, hplist, webAO_bucket = stuff
|
||||
@ -283,15 +284,16 @@ class lobby(QtGui.QWidget):
|
||||
ip = self.actual_serverlist[i][0]
|
||||
port = str(self.actual_serverlist[i][1])
|
||||
name = self.actual_serverlist[i][2]
|
||||
ws = self.actual_serverlist[i][-1]
|
||||
ws = self.actual_serverlist[i][4]
|
||||
ws = self.actual_serverlist[i][5]
|
||||
|
||||
for sv in self.favoriteslist:
|
||||
if sv[0] == ip and sv[1] == port:
|
||||
return QtGui.QMessageBox.information(self, "Error", "This server already exists in your favorites list, named '%s'" % sv[2])
|
||||
|
||||
self.favoriteslist.append([ip, port, ws, name])
|
||||
self.favoriteslist.append([ip, port, ws, wss, name])
|
||||
with open(AOpath+'serverlist.txt', "a") as file:
|
||||
file.write("%s:%s:%s:%s\n" % (ip, port, ws, name))
|
||||
file.write("%s:%s:%s:%s:%s\n" % (ip, port, ws, wss, name))
|
||||
file.close()
|
||||
|
||||
def onClicked_connect(self):
|
||||
@ -341,12 +343,11 @@ class lobby(QtGui.QWidget):
|
||||
if self.serverlist.item(i) == item:
|
||||
if self.tab == 0:
|
||||
self.serverinfo.setText(self.actual_serverlist[i][3])
|
||||
self.aoserverinfo.setIP(text, self.actual_serverlist[i][0], self.actual_serverlist[i][1], self.actual_serverlist[i][-1])
|
||||
print '[debug]', 'ind: ' + str(i) + ', ip: ' + self.actual_serverlist[i][0] + ', port: ' + str(self.actual_serverlist[i][1]) + ", websocket port: " + str(self.actual_serverlist[i][-1])
|
||||
self.aoserverinfo.setIP(text, self.actual_serverlist[i][0], self.actual_serverlist[i][1], self.actual_serverlist[i][4], self.actual_serverlist[i][5])
|
||||
print '[debug]', 'ind: ' + str(i) + ', ip: ' + self.actual_serverlist[i][0] + ', port: ' + str(self.actual_serverlist[i][1]) + ", websocket port: " + str(self.actual_serverlist[i][4]) + ", secure websocket port: " + str(self.actual_serverlist[i][5])
|
||||
elif self.tab == 1:
|
||||
self.aoserverinfo.setIP(text, self.favoriteslist[i][0], self.favoriteslist[i][1], self.favoriteslist[i][2])
|
||||
print '[debug]', 'ind: ' + str(i) + ', ip: ' + self.favoriteslist[i][0] + ', port: ' + str(self.favoriteslist[i][1]) + ", websocket port: " + str(self.favoriteslist[i][2])
|
||||
|
||||
self.aoserverinfo.setIP(text, self.favoriteslist[i][0], self.favoriteslist[i][1], self.favoriteslist[i][2], self.favoriteslist[i][3])
|
||||
print '[debug]', 'ind: ' + str(i) + ', ip: ' + self.favoriteslist[i][0] + ', port: ' + str(self.favoriteslist[i][1]) + ", websocket port: " + str(self.favoriteslist[i][2]) + ", secure websocket port: " + str(self.favoriteslist[i][3])
|
||||
self.aoserverinfo.stop()
|
||||
self.aoserverinfo.start()
|
||||
|
||||
@ -404,15 +405,18 @@ class AOServerInfo(QtCore.QThread):
|
||||
self.ip = ""
|
||||
self.port = 0
|
||||
self.ws_port = 0
|
||||
self.wss_port = 0
|
||||
self.name = "jm"
|
||||
self.webAO_bucket = ""
|
||||
self.useWS = False
|
||||
self.connected = False
|
||||
self.disconnect = False
|
||||
|
||||
def setIP(self, name, ip, port, ws_port=0):
|
||||
def setIP(self, name, ip, port, ws_port=0, wss_port=0):
|
||||
self.ip = ip
|
||||
self.port = int(port)
|
||||
self.ws_port = int(ws_port)
|
||||
self.wss_port = int(wss_port)
|
||||
self.name = name
|
||||
|
||||
def stop(self):
|
||||
@ -423,21 +427,21 @@ class AOServerInfo(QtCore.QThread):
|
||||
|
||||
def run(self):
|
||||
self.disconnect = False
|
||||
self.tcp = AOsocket.AOwebSocket()
|
||||
|
||||
try:
|
||||
if self.ws_port == 0: raise Exception # make it jump to except: and use TCP
|
||||
print "[debug]", "trying websocket..."
|
||||
self.tcp.connect(self.ip, self.ws_port)
|
||||
if self.ws_port == 0 and self.wss_port == 0: raise Exception # make it jump to except: and use TCP
|
||||
self.tcp = AOsocket.AOwebSocket()
|
||||
self.connected = self.tcp.connect(self.ip, self.ws_port, self.wss_port)
|
||||
except:
|
||||
self.tcp = AOsocket.AOtcpSocket()
|
||||
try:
|
||||
print "[debug]", "trying TCP..."
|
||||
self.tcp.connect(self.ip, self.port)
|
||||
print "[debug]", "Trying TCP..."
|
||||
self.connected = self.tcp.connect(self.ip, self.port)
|
||||
except:
|
||||
self.setOnlinePlayers.emit("couldn't retrieve players")
|
||||
self.setOnlinePlayers.emit("Couldn't retrieve players")
|
||||
return
|
||||
|
||||
print "[debug]", "connected! websocket: %s" % self.tcp.isWS
|
||||
print "[debug]", "Connected! websocket: %s" % self.tcp.isWS
|
||||
self.tcp.sock.settimeout(0.1)
|
||||
|
||||
got_stuff = False
|
||||
@ -498,7 +502,8 @@ class AOServerInfo(QtCore.QThread):
|
||||
got_stuff = True
|
||||
|
||||
elif header == "decryptor":
|
||||
self.tcp.send("HI#AO2XP %s#%%" % hardware.get_hdid())
|
||||
#self.tcp.send("HI#AO2XP %s#%%" % hardware.get_hdid())
|
||||
self.tcp.send("HI#%s#%%" % hardware.get_hdid())
|
||||
|
||||
elif header == "ASS": # ha ha ha...
|
||||
self.webAO_bucket = network[1]
|
||||
|
Loading…
Reference in New Issue
Block a user