5 Commits

Author SHA1 Message Date
d0db0a7d94 Name, mail 2020-05-25 16:05:08 +02:00
384c7368b2 Screenshot, a word about commands 2020-05-25 15:57:57 +02:00
63e52b8c3e ding client with -c <CONFIGFILE> option 2020-05-03 01:58:54 +02:00
4622833ff5 systemd example file 2020-05-02 20:29:52 +02:00
57fb2f7b99 Using actual ConfigParser call; dingd has -c for config file 2020-05-02 20:24:16 +02:00
5 changed files with 56 additions and 23 deletions

View File

@ -1,6 +1,6 @@
BSD 2-Clause License
Copyright (c) 2017, Bandie Canis
Copyright (c) 2017, Bandie <bandie@chaospott.de>
All rights reserved.
Redistribution and use in source and binary forms, with or without

View File

@ -12,8 +12,7 @@ The authentication is done via a SSL Client Certificate signed by an (self gener
## Pic or didn't happen
![Screenshot of ding](/img/dingScreenshot.png)
[Can't read a thing?](https://raw.githubusercontent.com/Bandie/ding/master/img/dingScreenshot.png)
![Screenshot of ding](https://git.chaospott.de/Bandie/ding/raw/branch/master/img/dingScreenshot.png)
## Requirements
@ -35,6 +34,8 @@ Step 1 to 3 can only be run on UNIX or GNU/Linux.
6. Start the server using `./dingd` or `python .\dingd` on Windows. (You may want to put this in a tmux session. [Ctrl+B, D] ;) ).
7. Try out the client using `./ding <command>` òr `python .\ding <command>` on Windows.
### A word about the commands
It works much better to use (bash) scripts instead of executing the commands directly.
## Optional: Cleartext password with timeout
If you want to be sure that this power won't be abused by bad people using your computer, you may want to add a password (saved in cleartext).

28
ding
View File

@ -3,7 +3,7 @@
# Author: Bandie Canis
# License: 2-Clause BSD License
import sys, ssl, socket, os
import sys, ssl, socket, os, getopt
import configparser
@ -14,14 +14,17 @@ certfile = None
keyfile = None
exitcode = 1
def readConfig():
def init(conf):
if(conf == None):
if(os.name == 'nt'):
CONFIG = "ding.win.cfg"
else:
CONFIG = "ding.cfg"
else:
CONFIG = conf
cfg = configparser.SafeConfigParser()
cfg = configparser.ConfigParser()
try:
cfg.read(CONFIG)
@ -67,7 +70,7 @@ def send(conn, cmd):
quit(exitcode)
def main():
def main(arg):
try:
context = ssl.SSLContext(ssl.PROTOCOL_TLS)
context.verify_mode = ssl.CERT_REQUIRED
@ -85,7 +88,7 @@ def main():
try:
send(conn, bytes(sys.argv[1], sys.stdin.encoding))
send(conn, bytes(arg[0], sys.stdin.encoding))
except IndexError:
print(sys.argv[0], ": Missing argument.\nSyntax: ", sys.argv[0], " <COMMAND>", file=sys.stderr)
except ConnectionRefusedError:
@ -98,7 +101,16 @@ def main():
if(__name__ == "__main__"):
readConfig()
main()
quit(exitcode)
try:
conf = None
opts, args = getopt.getopt(sys.argv[1:], "c:")
for o, a in opts:
if o == "-c":
conf = a
init(conf)
main(args)
except getopt.GetoptError as e:
print("Error using options. Allowed options:\n-c [FILE] - Config file\n")
quit(2)
quit(exitcode)

22
dingd
View File

@ -3,7 +3,7 @@
# Author: Bandie Canis
# License: 2-Clause BSD license
import ssl, socket, subprocess, time, os, sys
import ssl, socket, subprocess, time, os, sys, getopt
import configparser
CONFIG = None
@ -26,7 +26,7 @@ def getTimestamp():
return t
def execFromConfig(option, pw=False):
cfg = configparser.SafeConfigParser()
cfg = configparser.ConfigParser()
cfg.read(CONFIG)
if(pw):
@ -107,16 +107,19 @@ def main():
except EOFError:
print(getTimestamp(), "EOF")
def init():
def init(cfg=None):
global CONFIG, host, port, cafile, certfile, keyfile, pw_on, password, pwtimeout, tmppw_on, context, bindsocket
if(cfg==None):
if(os.name == 'nt'):
CONFIG = "dingd.win.cfg"
else:
CONFIG = "dingd.cfg"
else:
CONFIG = cfg
cfg = configparser.SafeConfigParser()
cfg = configparser.ConfigParser()
cfg.read(CONFIG)
try:
@ -176,10 +179,17 @@ def init():
if(__name__ == "__main__"):
try:
init()
conf = None
opts, args = getopt.getopt(sys.argv[1:], "c:")
for o, a in opts:
if o == "-c":
conf = a
init(conf)
main()
except getopt.GetoptError as e:
print("Error using options. Allowed options:\n-c [FILE] - Config file\n")
quit(2)
except KeyboardInterrupt:
print("\r\rServer stopped.")

10
systemd/dingd.service Normal file
View File

@ -0,0 +1,10 @@
[Unit]
Description=dingd Service
[Service]
ExecStart=/root/ding/dingd -c /path/to/config/file/dingd.cfg
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=default.target