summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarson Fleming <cflems@cflems.net>2022-12-22 04:16:53 -0800
committerCarson Fleming <cflems@cflems.net>2022-12-22 04:16:53 -0800
commitb23d4c294fab571d1016552dba1519d60dc24751 (patch)
treea9f71c02b15ca4bea01e70f6d162cd3447da3225
parent80d123bd95a2a926dc7aef5810cec6834dbf84fb (diff)
downloadpk-b23d4c294fab571d1016552dba1519d60dc24751.tar.gz
Create install make-target, ready for initial distribution
-rw-r--r--makefile23
-rw-r--r--pk.service14
-rwxr-xr-xpkctl.py30
3 files changed, 48 insertions, 19 deletions
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():