forked from amennen/rtAttenPenn
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathFileWatchServer.py
58 lines (48 loc) · 2.65 KB
/
FileWatchServer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import sys
import re
import logging
import argparse
from rtfMRI.utils import installLoggers
from webInterface.webSocketFileWatcher import WebSocketFileWatcher
from webInterface.WebClientUtils import certFile, checkSSLCertAltName, makeSSLCertFile
defaultAllowedDirs = ['/tmp', '/data']
defaultAllowedTypes = ['.dcm', '.mat']
if __name__ == "__main__":
installLoggers(logging.INFO, logging.INFO, filename='logs/fileWatcher.log')
# do arg parse for server to connect to
parser = argparse.ArgumentParser()
parser.add_argument('-s', action="store", dest="server", default="localhost:8888",
help="Server Address")
parser.add_argument('-i', action="store", dest="interval", type=int, default=5,
help="Retry connection interval (seconds)")
parser.add_argument('-d', action="store", dest="allowedDirs", default=defaultAllowedDirs,
help="Allowed directories to server files from - comma separated list")
parser.add_argument('-f', action="store", dest="allowedFileTypes", default=defaultAllowedTypes,
help="Allowed file types - comma separated list")
parser.add_argument('-u', '--username', action="store", dest="username", default=None,
help="rtAtten website username")
parser.add_argument('-p', '--password', action="store", dest="password", default=None,
help="rtAtten website password")
args = parser.parse_args()
if not re.match(r'.*:\d+', args.server):
print("Usage: Expecting server address in the form <servername:port>")
parser.print_help()
sys.exit()
if type(args.allowedDirs) is str:
args.allowedDirs = args.allowedDirs.split(',')
if type(args.allowedFileTypes) is str:
args.allowedFileTypes = args.allowedFileTypes.split(',')
addr, port = args.server.split(':')
# Check if the ssl certificate is valid for this server address
if checkSSLCertAltName(certFile, addr) is False:
# Addr not listed in sslCert, recreate ssl Cert
makeSSLCertFile(addr)
print("Server: {}, interval {}".format(args.server, args.interval))
print("Allowed file types {}".format(args.allowedFileTypes))
print("Allowed directories {}".format(args.allowedDirs))
WebSocketFileWatcher.runFileWatcher(args.server,
retryInterval=args.interval,
allowedDirs=args.allowedDirs,
allowedTypes=args.allowedFileTypes,
username=args.username,
password=args.password)