--- /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 <connThreshold> 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