This commit is contained in:
Matteo ℱan 2020-10-21 23:39:46 +02:00
parent 56d4652de9
commit 319c6b3ef0
No known key found for this signature in database
GPG key ID: 3C30A05BC133D9B6
6 changed files with 32 additions and 20 deletions

3
.gitignore vendored
View file

@ -1,9 +1,6 @@
# App files
pykms_logserver.log*
pykms_logclient.log*
pykms_newlines.txt*
pykms_clean_newlines.txt*
pykms_config.pickle*
pykms_database.db*
etrigan.log*

View file

@ -217,7 +217,17 @@ examples (with fictitious addresses and ports):
<td>False</td>
<td>[('1.1.1.1', 1699), ('2.2.2.2', 1677)]</td>
<td>[10, 15]</td>
<td>[True, True]</td>
<td>[False, False]</td>
<td>False</td>
</tr>
<tr>
<td><pre>python3 pykms_Server.py connect -b 12 -n 1.1.1.1,1699 -u -n 2.2.2.2,1677</pre></td>
<td>('0.0.0.0', 1688)</td>
<td>12</td>
<td>True</td>
<td>[('1.1.1.1', 1699), ('2.2.2.2', 1677)]</td>
<td>[12, 12]</td>
<td>[False, True]</td>
<td>False</td>
</tr>
<tr>
@ -227,7 +237,7 @@ examples (with fictitious addresses and ports):
<td>False</td>
<td>[('1.1.1.1', 1699), ('2.2.2.2', 1677)]</td>
<td>[8, 12]</td>
<td>[False, True]</td>
<td>[False, False]</td>
<td>True</td>
</tr>
<tr>

View file

@ -18,7 +18,6 @@ __copyright__ = "© Copyright 2020"
__url__ = "https://github.com/SystemRage/Etrigan"
__description__ = "Etrigan: a python daemonizer that rocks."
path = os.path.dirname(os.path.abspath(__file__))
class Etrigan(object):
"""
@ -517,7 +516,7 @@ class JasonBlood(Etrigan):
jasonblood_func()
def jasonblood_func():
with open(os.path.join(path, 'etrigan_test.txt'), 'a') as file:
with open(os.path.join('.', 'etrigan_test.txt'), 'a') as file:
file.write("Yarva Demonicus Etrigan " + time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime()) + '\n')
def Etrigan_parser(parser = None):
@ -535,7 +534,7 @@ def Etrigan_parser(parser = None):
action = "store", dest = "etriganpid", default = "/tmp/etrigan.pid",
help = "Choose a pidfile path. Default is \"/tmp/etrigan.pid\".", type = str) #'/var/run/etrigan.pid'
parser.add_argument("--etrigan-log",
action = "store", dest = "etriganlog", default = os.path.join(path, "etrigan.log"),
action = "store", dest = "etriganlog", default = os.path.join('.', "etrigan.log"),
help = "Use this option to choose an output log file; for not logging don't select it. Default is \"etrigan.log\".", type = str)
parser.add_argument("--etrigan-lev",
action = "store", dest = "etriganlev", default = "DEBUG",

View file

@ -7,6 +7,7 @@ from collections import OrderedDict
import logging
from io import StringIO
import queue as Queue
from tempfile import gettempdir
#----------------------------------------------------------------------------------------------------------------------------------------------------------
@ -192,8 +193,8 @@ class ShellMessage(object):
self.put_text = put_text
self.where = where
self.plaintext = []
self.path_nl = os.path.dirname(os.path.abspath( __file__ )) + '/pykms_newlines.txt'
self.path_clean_nl = os.path.dirname(os.path.abspath( __file__ )) + '/pykms_clean_newlines.txt'
self.path_nl = os.path.join(gettempdir(), 'pykms_newlines.txt')
self.path_clean_nl = os.path.join(gettempdir(), 'pykms_clean_newlines.txt')
self.queue_get = Queue.Queue()
def formatter(self, msgtofrmt):

View file

@ -483,8 +483,8 @@ def kms_parser_check_connect(config, options, userarg, zeroarg, onearg):
pos2 = userarg.index(config['listen'][indx + 1])
arguments = userarg[pos1 + 1 : pos2 - 1]
kms_parser_check_optionals(arguments, zeroarg, onearg, msg = 'optional connect')
assign(arguments, indx, ['-b', '--backlog'], config['backlog'], options['backlog']['def'])
assign(arguments, indx, ['-u', '--no-reuse'], config['reuse'], options['reuse']['def'])
assign(arguments, indx, ['-b', '--backlog'], config['backlog'], config['backlog_main'])
assign(arguments, indx, ['-u', '--no-reuse'], config['reuse'], config['reuse_main'])
if not arguments:
config['backlog'][indx] = config['backlog_main']
@ -497,13 +497,12 @@ def kms_parser_check_connect(config, options, userarg, zeroarg, onearg):
pos = userarg.index(config['listen'][indx + 1])
arguments = userarg[pos + 1:]
kms_parser_check_optionals(arguments, zeroarg, onearg, msg = 'optional connect')
assign(arguments, None, ['-b', '--backlog'], config['backlog'], options['backlog']['def'], islast = True)
assign(arguments, None, ['-u', '--no-reuse'], config['reuse'], options['reuse']['def'], islast = True)
assign(arguments, None, ['-b', '--backlog'], config['backlog'], config['backlog_main'], islast = True)
assign(arguments, None, ['-u', '--no-reuse'], config['reuse'], config['reuse_main'], islast = True)
if not arguments:
config['backlog'][indx + 1] = config['backlog_main']
config['reuse'][indx + 1] = config['reuse_main']
else:
assign_main(userarg[1:], config)

View file

@ -13,7 +13,8 @@ import pickle
import socketserver
import queue as Queue
import selectors
import getpass
from getpass import getuser
from tempfile import gettempdir
from time import monotonic as time
import pykms_RpcBind, pykms_RpcRequest
@ -393,7 +394,7 @@ class Etrigan(Etrigan):
def server_daemon():
if 'etrigan' in srv_config.values():
path = os.path.join('.', 'pykms_config.pickle')
path = os.path.join(gettempdir(), 'pykms_config.pickle')
if srv_config['operation'] in ['stop', 'restart', 'status'] and len(sys.argv[1:]) > 2:
pretty_printer(put_text = "{reverse}{red}{bold}too much arguments with etrigan '%s'. Exiting...{end}" %srv_config['operation'],
@ -419,7 +420,7 @@ def server_daemon():
logfile = srv_config['etriganlog'], loglevel = srv_config['etriganlev'],
mute = srv_config['etriganmute'], pause_loop = None)
if srv_config['operation'] == 'start':
if srv_config['operation'] in ['start', 'restart']:
serverdaemon.want_quit = True
if srv_config['gui']:
serverdaemon.funcs_to_daemonize = [server_with_gui]
@ -428,6 +429,8 @@ def server_daemon():
serverdaemon.funcs_to_daemonize = [server_without_gui.start, server_without_gui.join]
indx_for_clean = lambda: (0, )
serverdaemon.quit_on_stop = [indx_for_clean, server_without_gui.clean]
elif srv_config['operation'] == 'stop':
os.remove(path)
Etrigan_job(srv_config['operation'], serverdaemon)
@ -516,16 +519,19 @@ def server_check():
srv_config['listen'] = addresses
def server_create():
# Create address list (when the current user indicates execution inside the Windows Sandbox, then we wont allow port reuse - it is not supported).
# Create address list (when the current user indicates execution inside the Windows Sandbox,
# then we wont allow port reuse - it is not supported).
all_address = [(
srv_config['ip'], srv_config['port'],
(srv_config['backlog_main'] if 'backlog_main' in srv_config else srv_options['backlog']['def']),
(srv_config['reuse_main'] if 'reuse_main' in srv_config else False if getpass.getuser() == 'WDAGUtilityAccount' else srv_options['reuse']['def'])
(srv_config['reuse_main'] if 'reuse_main' in srv_config else False if getuser() == 'WDAGUtilityAccount' \
else srv_options['reuse']['def'])
)]
log_address = "TCP server listening at %s on port %d" %(srv_config['ip'], srv_config['port'])
if 'listen' in srv_config:
for l, b, r in zip(srv_config['listen'], srv_config['backlog'], srv_config['reuse']):
r = (False if getuser() == 'WDAGUtilityAccount' else r)
all_address.append(l + (b,) + (r,))
log_address += justify("at %s on port %d" %(l[0], l[1]), indent = 56)