From b23d4c294fab571d1016552dba1519d60dc24751 Mon Sep 17 00:00:00 2001 From: Carson Fleming Date: Thu, 22 Dec 2022 04:16:53 -0800 Subject: Create install make-target, ready for initial distribution --- makefile | 23 ++++++++++++++++++++++- pk.service | 14 ++++++++++++++ pkctl.py | 30 ++++++++++++------------------ 3 files changed, 48 insertions(+), 19 deletions(-) create mode 100644 pk.service diff --git a/makefile b/makefile index 6f4004b..9a2f6d0 100644 --- a/makefile +++ b/makefile @@ -1,4 +1,25 @@ all: - (echo "#!"`which python` && curl -s https://war.cflems.net/warcrypto.py && cat pkd_stub.py) >pkd.py + (echo "#!"`which python3` && curl -s https://war.cflems.net/warcrypto.py && cat pkd_stub.py) >pkd.py clean: rm -f pkd.py *.pid *.sock *.log +install: + useradd -rUs /usr/sbin/nologin pkd + mkdir -p /run/pk /etc/pk + chmod 0755 /run/pk + chmod 0700 /etc/pk + touch /var/log/pk.log + chown pkd:pkd /var/log/pk.log + chmod 0640 /var/log/pk.log + cp ./default_key.json /etc/pk/server_key.json + chmod 0600 /etc/pk/server_key.json + chown -R pkd:pkd /etc/pk /run/pk + cp ./pkd.py /usr/bin/pkd + cp ./pkctl.py /usr/bin/pkctl + chmod 0755 /usr/bin/pkd /usr/bin/pkctl + chown root:root /usr/bin/pkd /usr/bin/pkctl + cp ./pk.service /lib/systemd/system/pk.service + chown root:root /lib/systemd/system/pk.service + chmod 0644 /lib/systemd/system/pk.service + systemctl daemon-reload + systemctl enable pk.service + systemctl start pk.service diff --git a/pk.service b/pk.service new file mode 100644 index 0000000..126588b --- /dev/null +++ b/pk.service @@ -0,0 +1,14 @@ +[Unit] +Description=Penguin's Kiss TCP server and screen daemon +After=network.target + +[Service] +Type=forking +Restart=on-failure +User=pkd +ExecStart=/usr/bin/pkctl start +ExecStop=/usr/bin/pkctl stop +PIDFile=/run/pk/pk.pid + +[Install] +WantedBy=multi-user.target diff --git a/pkctl.py b/pkctl.py index cb833f1..514c817 100755 --- a/pkctl.py +++ b/pkctl.py @@ -1,31 +1,25 @@ -#!/usr/bin/python +#!/usr/bin/python3 import os, sys, signal, socket, threading, time # basic config -#SOCKET_FILE = "/run/pk/pk.sock" -#PID_FILE = "/run/pk/pk.pid" -#DAEMON_FILE = "/usr/bin/pkd" -#LOGFILE = "/var/log/pk.log" -SOCKET_FILE = "./pk.sock" -PID_FILE = "./pk.pid" -DAEMON_FILE = "./pkd.py" -LOG_FILE = "./pk.log" -KEY_FILE = "./pkdkey.json" +SOCKET_FILE = "/run/pk/pk.sock" +PID_FILE = "/run/pk/pk.pid" +DAEMON_FILE = "/usr/bin/pkd" +LOGFILE = "/var/log/pk.log" +KEY_FILE = "/etc/pk/server_key.json" DAEMON_PORT = 2236 DAEMON_BITS = 4096 -#TODO: -#KEY_FILE=....json -#SWITCH_USER=pkd -#pass port, bits, key file to server def isd_running(): return os.path.isfile(PID_FILE) def startd(): - return os.system('python %s %s %s %s %d %d %s' % (DAEMON_FILE, SOCKET_FILE,\ - PID_FILE, LOG_FILE, \ - DAEMON_BITS, DAEMON_PORT,\ - KEY_FILE)) + os.setuid(DAEMON_UID) + os.setgid(DAEMON_GID) + return os.system('%s %s %s %s %d %d %s' % (DAEMON_FILE, SOCKET_FILE,\ + PID_FILE, LOG_FILE, \ + DAEMON_BITS, DAEMON_PORT,\ + KEY_FILE)) def signald(sig): if not isd_running(): -- cgit v1.2.3