replace old masterserver with new http MS

This commit is contained in:
headshot2017 2022-02-21 12:49:06 -04:00
parent 53aa9064e0
commit 9230b1b785

View File

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import socket, thread, time, random, traceback import socket, thread, time, random, traceback, requests, json
from os.path import exists from os.path import exists
from PyQt4 import QtGui, QtCore from PyQt4 import QtGui, QtCore
@ -194,18 +194,15 @@ class lobby(QtGui.QWidget):
self.actual_serverlist = [] self.actual_serverlist = []
del servers[0] del servers[0]
del servers[-1] del servers[-1]
for svcontent in servers: for server in servers:
server = svcontent.split('&') name = server["name"]
desc = server["description"]
name = server[0].decode('utf-8') ip = server["ip"]
desc = server[1].decode('utf-8') port = server["port"]
ip = server[2]
port = int(server[3])
webAO_bucket = server[4]
serveritem = QtGui.QListWidgetItem(name) serveritem = QtGui.QListWidgetItem(name)
if self.tab == 0: self.serverlist.addItem(serveritem) if self.tab == 0: self.serverlist.addItem(serveritem)
self.actual_serverlist.append((ip, port, name, desc, webAO_bucket)) self.actual_serverlist.append((ip, port, name, desc))
def moveToGame(self, stuff): def moveToGame(self, stuff):
tcp, charlist, musiclist, background, evidence, areas, features, joinooc, hplist, webAO_bucket = stuff tcp, charlist, musiclist, background, evidence, areas, features, joinooc, hplist, webAO_bucket = stuff
@ -319,11 +316,9 @@ class lobby(QtGui.QWidget):
if self.tab == 0: if self.tab == 0:
self.serverinfo.setText(self.actual_serverlist[i][3]) self.serverinfo.setText(self.actual_serverlist[i][3])
self.aoserverinfo.setIP(text, *self.actual_serverlist[i][:2]) self.aoserverinfo.setIP(text, *self.actual_serverlist[i][:2])
self.aoserverinfo.webAO_bucket = self.actual_serverlist[i][-1]
print '[debug]', 'ind: ' + str(i) + ', ip: ' + self.actual_serverlist[i][0] + ', port: ' + str(self.actual_serverlist[i][1]) print '[debug]', 'ind: ' + str(i) + ', ip: ' + self.actual_serverlist[i][0] + ', port: ' + str(self.actual_serverlist[i][1])
elif self.tab == 1: elif self.tab == 1:
self.aoserverinfo.setIP(text, *self.favoriteslist[i][:2]) self.aoserverinfo.setIP(text, *self.favoriteslist[i][:2])
self.aoserverinfo.webAO_bucket = ""
print '[debug]', 'ind: ' + str(i) + ', ip: ' + self.favoriteslist[i][0] + ', port: ' + str(self.favoriteslist[i][1]) print '[debug]', 'ind: ' + str(i) + ', ip: ' + self.favoriteslist[i][0] + ', port: ' + str(self.favoriteslist[i][1])
self.aoserverinfo.stop() self.aoserverinfo.stop()
@ -333,8 +328,9 @@ class lobby(QtGui.QWidget):
self.gamewindow.showGame(tcp, charlist, musiclist, background, evidence, areas, features, oocjoin, hplist, webAO_bucket) self.gamewindow.showGame(tcp, charlist, musiclist, background, evidence, areas, features, oocjoin, hplist, webAO_bucket)
def lobby_sendchat(self): def lobby_sendchat(self):
text = self.lobbychatinput.text().toUtf8() #text = self.lobbychatinput.text().toUtf8()
self.masterserver.ms_tcp.send('CT#' +self.oocname+ '#' + text + '#%') #self.masterserver.ms_tcp.send('CT#' +self.oocname+ '#' + text + '#%')
self.lobbychatlog.append("Lobby chat is not supported on the new HTTP-based masterserver.")
self.lobbychatinput.clear() self.lobbychatinput.clear()
def setoocname(self): def setoocname(self):
@ -343,13 +339,13 @@ class lobby(QtGui.QWidget):
def lobbychatlog_update(self): def lobbychatlog_update(self):
if self.lobbychatlog.verticalScrollBar().value() == self.lobbychatlog.verticalScrollBar().maximum(): self.lobbychatlog.verticalScrollBar().setValue(self.lobbychatlog.verticalScrollBar().maximum()) if self.lobbychatlog.verticalScrollBar().value() == self.lobbychatlog.verticalScrollBar().maximum(): self.lobbychatlog.verticalScrollBar().setValue(self.lobbychatlog.verticalScrollBar().maximum())
def newOOCMessage(self, name, text): def newOOCMessage(self, text):
self.lobbychatlog.append('%s: %s' % (name, text)) self.lobbychatlog.append(text)
class MasterServer(QtCore.QThread): class MasterServer(QtCore.QThread):
gotServers = QtCore.pyqtSignal(list) gotServers = QtCore.pyqtSignal(list)
gotOOCMsg = QtCore.pyqtSignal(str, str) gotOOCMsg = QtCore.pyqtSignal(str)
msgbox_signal = QtCore.pyqtSignal(int, str, str) msgbox_signal = QtCore.pyqtSignal(int, str, str)
def __init__(self): def __init__(self):
@ -357,7 +353,13 @@ class MasterServer(QtCore.QThread):
def run(self): def run(self):
tempdata = "" tempdata = ""
self.ms_tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.ms_http = requests.get("http://servers.aceattorneyonline.com/servers")
self.ms_motd = requests.get("http://servers.aceattorneyonline.com/motd")
if self.ms_http.ok: self.gotServers.emit(json.loads(self.ms_http.content))
if self.ms_motd.ok: self.gotOOCMsg.emit(self.ms_motd.content)
"""
try: try:
self.ms_tcp.connect(('master.aceattorneyonline.com', 27016)) self.ms_tcp.connect(('master.aceattorneyonline.com', 27016))
except: except:
@ -399,6 +401,7 @@ class MasterServer(QtCore.QThread):
name = decode_ao_str(network[1].decode("utf-8")) name = decode_ao_str(network[1].decode("utf-8"))
chatmsg = decode_ao_str(network[2].decode("utf-8")) chatmsg = decode_ao_str(network[2].decode("utf-8"))
self.gotOOCMsg.emit(name, chatmsg) self.gotOOCMsg.emit(name, chatmsg)
"""
class AOServerInfo(QtCore.QThread): class AOServerInfo(QtCore.QThread):
moveToGameSignal = QtCore.pyqtSignal(list) moveToGameSignal = QtCore.pyqtSignal(list)
@ -502,11 +505,16 @@ class AOServerInfo(QtCore.QThread):
maxplayers = int(network[2]) maxplayers = int(network[2])
self.canConnect.emit() self.canConnect.emit()
self.setOnlinePlayers.emit('%d/%d players online' % (players, maxplayers)) self.setOnlinePlayers.emit('%d/%d players online' % (players, maxplayers))
self.tcp.send("ASS#%") # get webAO bucket
got_stuff = True got_stuff = True
elif header == "decryptor": elif header == "decryptor":
self.tcp.send("HI#AO2XP %s#%%" % hardware.get_hdid()) self.tcp.send("HI#AO2XP %s#%%" % hardware.get_hdid())
elif header == "ASS": # ha ha ha...
self.webAO_bucket = network[1]
print self.webAO_bucket
elif header == "ID": elif header == "ID":
self.tcp.send("ID#AO2XP#%s#%%" % GAME_VERSION[1:]) # need to send this to tsuserver3 servers in order to get feature list (FL) self.tcp.send("ID#AO2XP#%s#%%" % GAME_VERSION[1:]) # need to send this to tsuserver3 servers in order to get feature list (FL)