Compare commits

..

4 Commits

Author SHA1 Message Date
e10b15bfed clean and add exception 2021-02-16 12:31:04 +01:00
root
0ffcb98d83 prod 2021-02-16 12:24:15 +01:00
0636f72717 fix? 2020-05-28 12:06:10 +02:00
3f68462e7a ip log 2020-05-28 11:38:10 +02:00
2 changed files with 45 additions and 10 deletions

View File

@ -1,6 +1,7 @@
import socket import socket
import threading import threading
import time import time
import traceback
class MasterServer: class MasterServer:
@ -17,5 +18,9 @@ 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)

View File

@ -2,27 +2,57 @@ from dpnet.netserver import Netserver
from giants.masterserver import MasterServer from giants.masterserver import MasterServer
import asyncio import asyncio
num_players_alltime = 0 ## stats
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.497 version = 1.5
server_name = "Hello %s" % ip map_name = "Players last 24h/last 48h"
global num_players_alltime server_name = "\x03!! V1.5 IS OUT !! \x04 Download on Discord: \x06https://discord.gg/Avj4azU\x01"
num_players_alltime = num_players_alltime + 1
player_count = num_players_alltime self.db_execute("INSERT INTO multiplayer_stats(ip, date) VALUES (%s, NOW())", (ip,))
max_player_count = 20 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]
map_name = "best map ever" 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]
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() server = Server(port=19110)
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()