diff -r 000000000000 -r 676905a3b03c dejsem.1.5/python/dejsem.pycharm/main.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dejsem.1.5/python/dejsem.pycharm/main.py Wed Nov 27 09:50:16 2019 +0100 @@ -0,0 +1,86 @@ +#!/usr/bin/python3 +# coding=utf8 + +# hal.hh.cz +# /usr/local/bin/dejsem.py +# /usr/local/dejsem/ssl +# +# FVWM shotcuts Ctrl-Alt-B Ctrl-Alt-C Ctrl-Alt-V +# Key B A CM Exec ACT=PUSHCLIP CHAN=N dejsem.py # copy local --> shared clipboard +# Key C A CM Exec ACT=PUSHCLIP CHAN=N dejsem.py # copy local --> shared clipboard +# Key V A CM Exec ACT=PULLCLIP CHAN=N dejsem.py # copy shared --> local clipboard +# +# server side +# ● akceptuje cmd-connection na základním portu kanálu a přijímá z ní příkazy +# ● po provedení příkazu +# PULLCLIP +# PULLHIST +# PUSHCLIP +# GETPEER +# SETPEER +# EXPOSE +# EXPOSEUP +# FREE +# LONGTASK +# se connection uzavře +# ● po provedení příkazu +# PULLFILE +# PUSHFILE +# PULLLIST +# MOVE +# DELETE +# CREATDIR +# RECKON +# zůstává connection otevřená a pokračuje čtením dalšího příkazu, protože tyto příkazy mohou být dávkové +# timeouts +# conn_TO connection retry wait TO - wait before next connect try (try times) +# block_TO blocking net operations TO +# long_run_accept_TO accept TO on ports binded dynamicaly for long duration operations +# peer_accept_TO accept TO waiting for connection from peer when receiving peer files (PULLPEER) + +import sys, os, random, time, signal + +def stop(sign, frame): + for pid in pids: + os.kill(pid, signal.SIGTERM) + +pids = set() # seznam subthreads pro účely mimořádného ukončení + +if __name__ == '__main__': + from parms import Parms + Parms.setup() + random.seed(Parms.random_seed) if Parms.random_seed else random.seed() + + from d import D + D.t0 = time.time() + d = D(Parms.applName) + d.log("{}, ver. {:.2f}".format(sys.argv[0], Parms.version), sev=1) + + if Parms.action == 'SRV': + from server import Server + pid = os.fork() + if not pid: # child + from meter import Meter + Meter(d).run() + sys.exit(0) + else: # parent + pids.add(pid) + d.log("Meter spawned in process {}".format(pid), sev=1) + for chan in range(1, 99): + if "{:02d}".format(chan) in os.listdir(Parms.srv_homedir): + pid = os.fork() + if not pid: # child + Server(d, chan) + sys.exit(0) + else: # parent + pids.add(pid) + d.log("server node SSL {:02d} started in process {}".format(chan, pid), sev=4) + d.log("all server nodes spawned", sev=1) + signal.signal(signal.SIGINT, stop) + signal.signal(signal.SIGTERM, stop) + signal.pthread_sigmask(signal.SIG_UNBLOCK, {signal.SIGINT, signal.SIGTERM}) + signal.pause() + d.log("KeyboardInterrupt") + else: + from client import Client + Client(d) \ No newline at end of file