forked from hipstercat/giantsd
Compare commits
No commits in common. "stats_ip" and "master" have entirely different histories.
@ -1,7 +1,6 @@
|
|||||||
import socket
|
import socket
|
||||||
import threading
|
import threading
|
||||||
import time
|
import time
|
||||||
import traceback
|
|
||||||
|
|
||||||
|
|
||||||
class MasterServer:
|
class MasterServer:
|
||||||
@ -18,9 +17,5 @@ class MasterServer:
|
|||||||
|
|
||||||
def _register(self):
|
def _register(self):
|
||||||
while True:
|
while True:
|
||||||
print("Sending register")
|
|
||||||
try:
|
|
||||||
self.socket.sendto(("0"+str(self.server.listen_port)).encode("ascii"), (self.masterserverip, self.masterserverport))
|
self.socket.sendto(("0"+str(self.server.listen_port)).encode("ascii"), (self.masterserverip, self.masterserverport))
|
||||||
except:
|
|
||||||
traceback.print_exc()
|
|
||||||
time.sleep(120)
|
time.sleep(120)
|
||||||
|
48
server.py
48
server.py
@ -2,57 +2,27 @@ from dpnet.netserver import Netserver
|
|||||||
from giants.masterserver import MasterServer
|
from giants.masterserver import MasterServer
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
## stats
|
num_players_alltime = 0
|
||||||
import pymysql
|
|
||||||
|
|
||||||
|
|
||||||
class Server:
|
class Server:
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
self.listen_ip = kwargs.get("ip", "0.0.0.0")
|
self.listen_ip = kwargs.get("ip", "0.0.0.0")
|
||||||
self.listen_port = kwargs.get("port", 19711)
|
self.listen_port = kwargs.get("port", 19711)
|
||||||
self.register_with_ms = kwargs.get("register", True)
|
self.register_with_ms = kwargs.get("register", True)
|
||||||
## stats
|
|
||||||
self.db = self.db_connect()
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def db_connect(cls):
|
|
||||||
return pymysql.connect(host='192.168.40.2', user="gck", passwd="gck", db="gck", autocommit=True)
|
|
||||||
|
|
||||||
def db_execute(self, sql, args=None):
|
|
||||||
try:
|
|
||||||
with self.db.cursor() as cursor:
|
|
||||||
cursor.execute(sql, args)
|
|
||||||
except:
|
|
||||||
self.db = self.db_connect()
|
|
||||||
return self.db_execute(sql, args)
|
|
||||||
|
|
||||||
def db_query(self, sql, args=None):
|
|
||||||
try:
|
|
||||||
with self.db.cursor() as cursor:
|
|
||||||
cursor.execute(sql, args)
|
|
||||||
t = cursor.fetchall()
|
|
||||||
return t
|
|
||||||
except:
|
|
||||||
self.db = self.db_connect()
|
|
||||||
return self.db_query(sql, args)
|
|
||||||
|
|
||||||
async def on_connection_received(self, ip, port):
|
async def on_connection_received(self, ip, port):
|
||||||
version = 1.5
|
version = 1.497
|
||||||
map_name = "Players last 24h/last 48h"
|
server_name = "Hello %s" % ip
|
||||||
server_name = "\x03!! V1.5 IS OUT !! \x04 Download on Discord: \x06https://discord.gg/Avj4azU\x01"
|
global num_players_alltime
|
||||||
|
num_players_alltime = num_players_alltime + 1
|
||||||
self.db_execute("INSERT INTO multiplayer_stats(ip, date) VALUES (%s, NOW())", (ip,))
|
player_count = num_players_alltime
|
||||||
stats_24 = self.db_query("SELECT COUNT(DISTINCT ip) FROM multiplayer_stats WHERE date + INTERVAL 1 DAY > NOW() AND ip not in ('192.168.40.1')")[0][0]
|
max_player_count = 20
|
||||||
stats_48 = self.db_query("SELECT COUNT(DISTINCT ip) FROM multiplayer_stats WHERE date + INTERVAL 2 DAY > NOW() AND ip not in ('192.168.40.1')")[0][0]
|
map_name = "best map ever"
|
||||||
|
|
||||||
player_count = stats_24
|
|
||||||
max_player_count = stats_48
|
|
||||||
|
|
||||||
return version, server_name, player_count, max_player_count, map_name
|
return version, server_name, player_count, max_player_count, map_name
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
server = Server(port=19110)
|
server = Server()
|
||||||
if server.register_with_ms:
|
if server.register_with_ms:
|
||||||
ms = MasterServer(server)
|
ms = MasterServer(server)
|
||||||
register_thread = ms.register_and_run()
|
register_thread = ms.register_and_run()
|
||||||
|
Loading…
Reference in New Issue
Block a user