mirror of
https://github.com/moparisthebest/HttpUploadComponent
synced 2024-11-21 16:35:04 -05:00
Make configfile and logfile configurable via commandline options
Use argparse to parse --config und --logfile so it can be better used from a startup script. Add Debian startup-script in contrib/
This commit is contained in:
parent
8bd4ad6803
commit
c3b41b2415
72
contrib/httpuploadcomponent
Executable file
72
contrib/httpuploadcomponent
Executable file
@ -0,0 +1,72 @@
|
||||
#!/bin/bash
|
||||
### BEGIN INIT INFO
|
||||
# Provides: HttpUploadComponent
|
||||
# Required-Start: prosody
|
||||
# Required-Stop: prosody
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: Start HttpUploadComponent
|
||||
# Description: HttpUploadComponent for prosody
|
||||
### END INIT INFO
|
||||
## more info: http://wiki.debian.org/LSBInitScripts
|
||||
|
||||
. /lib/lsb/init-functions
|
||||
|
||||
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
|
||||
DAEMON=/usr/local/src/HttpUploadComponent/server.py
|
||||
NAME=httpuploadcomponent
|
||||
DESC=HttpUploadComponent
|
||||
CONFIG=/etc/prosody/HttpUploadComponent.yml
|
||||
LOGFILE=/var/log/prosody/httpuploadcomponent.log
|
||||
PIDFILE=/var/run/${NAME}.pid
|
||||
USER=prosody
|
||||
export LOGNAME=$USER
|
||||
|
||||
test -x $DAEMON || exit 0
|
||||
set -e
|
||||
|
||||
function _start() {
|
||||
start-stop-daemon --start --quiet --pidfile $PIDFILE --chuid $USER:$USER --background --make-pidfile --exec $DAEMON -- --config $CONFIG --logfile $LOGFILE
|
||||
}
|
||||
|
||||
function _stop() {
|
||||
start-stop-daemon --stop --quiet --pidfile $PIDFILE --oknodo --retry 3
|
||||
rm -f $PIDFILE
|
||||
}
|
||||
|
||||
function _status() {
|
||||
start-stop-daemon --status --quiet --pidfile $PIDFILE
|
||||
return $?
|
||||
}
|
||||
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
echo -n "Starting $DESC: "
|
||||
_start
|
||||
echo "ok"
|
||||
;;
|
||||
stop)
|
||||
echo -n "Stopping $DESC: "
|
||||
_stop
|
||||
echo "ok"
|
||||
;;
|
||||
restart|force-reload)
|
||||
echo -n "Restarting $DESC: "
|
||||
_stop
|
||||
sleep 1
|
||||
_start
|
||||
echo "ok"
|
||||
;;
|
||||
status)
|
||||
echo -n "Status of $DESC: "
|
||||
_status && echo "running" || echo "stopped"
|
||||
;;
|
||||
*)
|
||||
N=/etc/init.d/$NAME
|
||||
echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
15
server.py
15
server.py
@ -10,6 +10,7 @@ import hashlib
|
||||
import random
|
||||
import os
|
||||
import ssl
|
||||
import argparse
|
||||
from threading import Thread
|
||||
from threading import Lock
|
||||
try:
|
||||
@ -24,6 +25,8 @@ except ImportError:
|
||||
import sleekxmpp
|
||||
from sleekxmpp.componentxmpp import ComponentXMPP
|
||||
|
||||
LOGLEVEL=logging.DEBUG
|
||||
|
||||
global files
|
||||
global files_lock
|
||||
global config
|
||||
@ -165,13 +168,19 @@ if __name__ == "__main__":
|
||||
global files_lock
|
||||
global config
|
||||
|
||||
with open('config.yml','r') as ymlfile:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("-c", "--config", type=unicode, default='config.yml', help='Specify alternate config file.')
|
||||
parser.add_argument("-l", "--logfile", type=unicode, default=None, help='File where the server log will be stored. If not specified log to stdout.')
|
||||
args = parser.parse_args()
|
||||
|
||||
with open(args.config,'r') as ymlfile:
|
||||
config = yaml.load(ymlfile)
|
||||
|
||||
files = set()
|
||||
files_lock = Lock()
|
||||
logging.basicConfig(level=logging.DEBUG,
|
||||
format='%(levelname)-8s %(message)s')
|
||||
logging.basicConfig(level=LOGLEVEL,
|
||||
format='%(asctime)-24s %(levelname)-8s %(message)s',
|
||||
filename=args.logfile)
|
||||
server = ThreadedHTTPServer(('0.0.0.0', config['http_port']), HttpHandler)
|
||||
if 'keyfile' in config and 'certfile' in config:
|
||||
server.socket = ssl.wrap_socket(server.socket, keyfile=config['keyfile'], certfile=config['certfile'])
|
||||
|
Loading…
Reference in New Issue
Block a user