Parent: [f481b6] (diff)

Download this file

scweb.py    111 lines (95 with data), 3.0 kB

  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
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
import subprocess
import sys
import bottle
import re
import time
SPLITRE = '''\|\|'''
def _listReceivers():
devnull = open('/dev/null', 'w')
try:
data = subprocess.check_output(['scctl', '-lm'], stderr = devnull)
except:
data = "scctl error"
o = []
for line in data.splitlines():
#print >> sys.stderr, line
fields = re.split(SPLITRE, line);
if len(fields) == 4:
status, fname, uuid, uri = fields
elif len(fields) == 3:
status, fname, uuid = fields
uri = ''
else:
status = None
if status:
status = status.strip()
if status is not None:
o.append((fname, status, uuid, uri))
return o
@bottle.route('/static/:path#.+#')
def server_static(path):
return bottle.static_file(path, root='./static')
@bottle.route('/')
@bottle.view('main')
def top():
devnull = open('/dev/null', 'w')
cmd = subprocess.Popen(['scctl', '-S'], stderr = devnull, stdout = devnull)
# Sleep a wee bit to give a chance to the server to initialize
time.sleep(1)
return dict(title='')
@bottle.route('/list')
@bottle.view('list')
def listReceivers():
return {'receivers' : _listReceivers()}
@bottle.route('/assoc')
@bottle.post('/assoc')
@bottle.view('assoc')
def assocReceivers():
devnull = open('/dev/null', 'w')
assocs = bottle.request.forms.getall('Assoc')
sender = bottle.request.forms.get('Sender')
if sender != '' and len(assocs) != 0:
arglist = ['scctl', '-r', sender]
for uuid in assocs:
arglist.append(uuid)
print >> sys.stderr, arglist
try:
subprocess.check_call(arglist, stderr = devnull)
except:
pass
try:
data = subprocess.check_output(['scctl', '-Lm'], stderr = devnull)
except:
data = "scctl error"
s = []
for line in data.splitlines():
fields = re.split(SPLITRE, line);
fname, uuid, reason, uri = fields
s.append((fname, uuid, uri))
return {'receivers' : _listReceivers(), 'senders' : s}
@bottle.route('/stop')
@bottle.post('/stop')
@bottle.view('stop')
def stopReceivers():
devnull = open('/dev/null', 'w')
for uuid in bottle.request.forms.getall('Stop'):
try:
subprocess.check_call(['scctl', '-x', uuid], stderr=devnull)
except:
pass
try:
data = subprocess.check_output(['scctl', '-lm'], stderr = devnull)
except:
data = "scctl error"
a = []
for line in data.splitlines():
fields = re.split(SPLITRE, line);
if len(fields) == 4:
status, fname, uuid, uri = fields
if status != 'Off':
a.append((fname, status, uuid, uri))
elif len(fields) == 3:
status, fname, uuid = fields
if status != 'Off':
a.append(fname, status, uuid, '')
return {'active' : a}