mirror of
https://github.com/BOSWatch/BW3-Core.git
synced 2026-04-07 07:14:10 +00:00
simplify server and and client
This commit is contained in:
parent
031f19063b
commit
cc680b578f
3 changed files with 34 additions and 137 deletions
96
bw_server.py
96
bw_server.py
|
|
@ -15,6 +15,7 @@
|
|||
@description: BOSWatch server application
|
||||
"""
|
||||
from boswatch.utils import paths
|
||||
|
||||
if not paths.makeDirIfNotExist(paths.LOG_PATH):
|
||||
print("cannot find/create log directory: %s", paths.LOG_PATH)
|
||||
exit(1)
|
||||
|
|
@ -53,27 +54,10 @@ try:
|
|||
from boswatch.utils import header
|
||||
from boswatch.network.broadcast import BroadcastClient
|
||||
from boswatch.network.broadcast import BroadcastServer
|
||||
except Exception as e: # pragma: no cover
|
||||
except: # pragma: no cover
|
||||
logging.exception("cannot import modules")
|
||||
print("cannot import modules")
|
||||
print(e)
|
||||
exit(1)
|
||||
|
||||
# Test for the broadcast connection info function
|
||||
server = BroadcastServer()
|
||||
server.start()
|
||||
|
||||
|
||||
# test for the timer class
|
||||
from boswatch.utils.timer import RepeatedTimer
|
||||
from boswatch.network.netCheck import NetCheck
|
||||
net = NetCheck()
|
||||
test = RepeatedTimer(3, net.checkConn)
|
||||
test.start()
|
||||
time.sleep(10)
|
||||
print(net.connectionState)
|
||||
test.stop()
|
||||
|
||||
try:
|
||||
header.logoToLog()
|
||||
header.infoToLog()
|
||||
|
|
@ -91,78 +75,40 @@ try:
|
|||
|
||||
bwConfig = configYaml.loadConfigFile(paths.CONFIG_PATH + args.config, "serverConfig")
|
||||
if bwConfig is None:
|
||||
logging.exception("cannot load config file")
|
||||
print("cannot load config file")
|
||||
exit(1) # without config cannot run
|
||||
logging.error("cannot load config file")
|
||||
|
||||
bwPluginManager = PluginManager()
|
||||
bwPluginManager.searchPluginDir()
|
||||
bwPluginManager.importAllPlugins()
|
||||
bwPluginManager.loadAllPlugins()
|
||||
except: # pragma: no cover
|
||||
logging.exception("error occurred")
|
||||
exit(1)
|
||||
|
||||
bwDoubleFilter = DoubleFilter()
|
||||
|
||||
serverPaused = False # flag to pause alarming of server
|
||||
serverStop = False # flag to stop the whole server application
|
||||
# ############################# begin server system
|
||||
try:
|
||||
|
||||
# server flags test code
|
||||
# ----------------------
|
||||
# import threading
|
||||
# def eins():
|
||||
# global serverPaused
|
||||
# serverPaused = True
|
||||
# def zwei():
|
||||
# global serverPaused
|
||||
# serverPaused = False
|
||||
def drei():
|
||||
global serverStop
|
||||
serverStop = True
|
||||
#
|
||||
# t1 = threading.Timer(1, eins)
|
||||
# t2 = threading.Timer(5, zwei)
|
||||
# t3 = threading.Timer(600, drei)
|
||||
# t1.start()
|
||||
# t2.start()
|
||||
# t3.start()
|
||||
if bwConfig["server"]["useBroadcast"]:
|
||||
bcServer = BroadcastServer()
|
||||
bcServer.start()
|
||||
|
||||
incomingQueue = queue.Queue()
|
||||
bwServer = TCPServer(incomingQueue)
|
||||
if bwServer.start():
|
||||
|
||||
while 1:
|
||||
if serverPaused:
|
||||
logging.warning("Server pause flag received ...")
|
||||
logging.debug("But all received packages will be cached!")
|
||||
packetsOld = 0
|
||||
while serverPaused is True:
|
||||
time.sleep(0.2) # reduce cpu load (run all 200ms)
|
||||
packetsNew = incomingQueue.qsize()
|
||||
if packetsNew is not packetsOld:
|
||||
logging.debug("%s packet(s) waiting in queue", packetsNew)
|
||||
packetsOld = packetsNew
|
||||
logging.warning("Server resumed ...")
|
||||
|
||||
if serverStop:
|
||||
logging.warning("Server stop flag received ...")
|
||||
break
|
||||
|
||||
if incomingQueue.empty(): # pause only when no data
|
||||
time.sleep(0.1) # reduce cpu load (run all 100ms)
|
||||
time.sleep(0.1) # reduce cpu load (wait 100ms)
|
||||
|
||||
else:
|
||||
data = incomingQueue.get()
|
||||
|
||||
data = incomingQueue.get()
|
||||
if data is not None:
|
||||
logging.info("get data from %s (waited in queue %0.3f sec.)", data[0], time.time() - data[2])
|
||||
logging.debug("%s packet(s) waiting in queue", incomingQueue.qsize())
|
||||
logging.debug("%s packet(s) still waiting in queue", incomingQueue.qsize())
|
||||
bwPacket = Packet((data[1]))
|
||||
|
||||
if not bwDoubleFilter.filter(bwPacket):
|
||||
continue
|
||||
|
||||
bwPacket.set("clientIP", data[0])
|
||||
bwPacket.addServerData()
|
||||
|
||||
bwPluginManager.runAllPlugins(bwPacket)
|
||||
# print(bwPacket.get("clientVersion")["major"])
|
||||
# todo implement routing
|
||||
|
||||
incomingQueue.task_done()
|
||||
|
||||
except KeyboardInterrupt: # pragma: no cover
|
||||
|
|
@ -176,10 +122,8 @@ finally: # pragma: no cover
|
|||
# bwServer or bwPluginManager are not defined in case of an early error
|
||||
try:
|
||||
bwServer.stop()
|
||||
except: # pragma: no cover
|
||||
pass
|
||||
try:
|
||||
bwPluginManager.unloadAllPlugins()
|
||||
if "bcServer" in locals():
|
||||
bcServer.stop()
|
||||
except: # pragma: no cover
|
||||
pass
|
||||
logging.debug("BOSWatch has ended ...")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue