def render_GET(self, request): args = {} for a in request.args: args[a] = request.args[a][0] logged = session.get_user(request) if 'account' in args: res = args['account'] else: parts = request.path.split("/") if len(parts) > 5 and logged and (logged.voip_id == parts[3] or logged.admin == 1): section = parts[2] user = parts[3] offset = parts[4] limit = parts[5] if section == 'json': return self.render_user_accounting(logged, user, request, offset, limit) elif len(parts) > 2: user = parts[2] if user == 'accounts': res = self.render_accounts(request) elif logged and (logged.voip_id == user or logged.admin == 1): res = self.render_user(user, request) return res else: return redirectTo("/", request) if isinstance(res, str): return print_template('content-pbx-lorea', {'content': res}) else: return res
def render_GET(self, request): res = None logged = session.get_user(request) if not logged: return redirectTo('/', request) parts = request.path.split("/") if len(parts) > 2 and logged.admin: user_ext = parts[2] else: user_ext = logged.voip_id args = { 'ext': user_ext, 'lowquality': '', 'tls': '', 'srtp': '', 'voicemail': '' } options = get_options(user_ext) if 'codecs' in options and 'gsm' in options['codecs']: args['lowquality'] = ' checked ' if options['tls']: args['tls'] = ' checked ' if options['srtp']: args['srtp'] = ' checked ' if options['voicemail']: args['voicemail'] = ' checked ' model = Model() user = model.query(User).filter_by(voip_id=user_ext).first() if user and (logged.admin or user.id == logged.id): args['bitcoin'] = self.render_btc(logged, user, wallet) else: return redirectTo('/', request) content = print_template('options', args) return print_template('content-pbx-lorea', {'content': content})
def render_GET(self, request): logged = session.get_user(request) args = {} for a in request.args: args[a] = request.args[a][0] if 'account' in args: res = args['account'] else: parts = request.path.split("/") if len(parts) > 5 and logged and (logged.voip_id == parts[3] or logged.admin == 1): section = parts[2] user = parts[3] offset = parts[4] limit = parts[5] if section == 'json': return self.render_user_accounting(logged, user, request, offset, limit) elif len(parts) > 2: user = parts[2] if user == 'accounts': res = self.render_accounts(request) elif logged and (logged.voip_id == user or logged.admin == 1): res = self.render_user(user, request) return res else: return redirectTo("/", request) if isinstance(res, str): return print_template('content-pbx-lorea', {'content': res}) else: return res
def render_POST(self, request): logged = get_user(request) if not logged: return redirectTo("/", request) args = {} options = {} user_ext = logged.voip_id for a in request.args: args[a] = request.args[a][0] if logged: if 'tls' in args and args['tls']: options['tls'] = args['tls'] else: options['tls'] = False if 'srtp' in args and args['srtp']: options['srtp'] = args['srtp'] else: options['srtp'] = False options['voicemail'] = args.get('voicemail', False) if 'ext' in args and args['ext'] and logged.admin: user_ext = args['ext'] if 'lowquality' in args and args['lowquality']: options['codecs'] = ['gsm'] change_options(user_ext, options) return redirectTo('/options/' + user_ext, request) return redirectTo('/', request)
def render_POST(self, request): logged = get_user(request) if not logged: return returnTo("/", request) args = {} for a in request.args: args[a] = request.args[a][0] user_ext = logged.voip_id if logged and 'newpassword2' in args and args[ 'newpassword2'] and 'newpassword1' in args and args[ 'newpassword1'] and ( ('password' in args and args['password']) or logged.admin): if 'ext' in args and args['ext'] and logged.admin: user_ext = args['ext'] password = args['password'] logged_name = logged.voip_id if (logged.admin and not logged.voip_id == user_ext ) or login.resource.check_password_ext(user_ext, password): newpassword1 = args['newpassword1'] newpassword2 = args['newpassword2'] if newpassword1 == newpassword2: change_password(user_ext, newpassword1) return redirectTo('/user/' + user_ext, request) else: return redirectTo('/password/' + user_ext, request) return redirectTo('/', request)
def render_GET(self, request): logged = session.get_user(request) if logged and logged.admin: content = self.render_stats(request) content = "<pre>%s</pre>" % (content,) return templates.print_template('content-pbx-lorea', {'content': content}) return redirectTo("/", request)
def render_GET(self, request): output = "<li><a href='/prices'>precios</a></li>" output += "<li><a href='/docs'>documentacion</a></li>" user = session.get_user(request) main_page = print_template('portada', {}) if user: user_ext = user.voip_id output_user = "******" + user.voip_id + "'>datos usuario</a></li>" output_user += "<li><a href='/voip'>listin telefonico</a></li>" output_user += "<li><a href='/stats'>estadisticas</a></li>" if user.admin == 1: output_user += "<li><a href='/admin'>admin</a></li>" user_ext += " eres admin" output_user += "<li><a href='/logout'>logout</a></li>" return print_template( 'logged-pbx-lorea', { 'LINKS': output, 'LOGGED_LINKS': output_user, 'user': user_ext, 'content': main_page }) else: output += "<li><a href='/register'>registrarse</a></li>" return print_template('home-pbx-lorea', { 'LINKS': output, 'content': main_page })
def render_user(self, user_ext, request): model = Model() peer = model.query(SipPeer).filter_by(regexten=user_ext).first() creditlink = '' if peer: username = peer.name else: username = user_ext user = model.get_user_fromext(user_ext) logged = session.get_user(request) if user: credit = "%.3f" % (user.credit,) user_charges = charges.get_charges(user_ext) n_calls = len(user.calls) pager = self.render_pager(user_ext, n_calls) user_calls = calls.get_calls(user_ext, logged, 10) + "<p>%s</p>" % (pager,) creditlink = "" if user.credit > 0: if user.voip_id == logged.voip_id: creditlink += '<a href="/credit/transfer">Transferir</a>' else: creditlink += '<a href="/credit/transfer/%s">Transferir</a>' % (user.voip_id) if logged.admin: creditlink += ' <a href="/credit/add/%s">Crear</a>' % (user.voip_id) else: credit = 0.0 user_charges = "" user_calls = "" all_calls = self.render_user_calls(user_ext, request) args = {'ext': user_ext, 'username': username, 'credit': credit, 'credit_link':creditlink ,'calls': user_calls, 'charges': user_charges, 'all_calls': all_calls} return print_template('user-pbx-lorea', args)
def render_GET(self, request): res = None logged = session.get_user(request) if not logged: return redirectTo('/', request) parts = request.path.split("/") if len(parts) > 2 and logged.admin: user_ext = parts[2] else: user_ext = logged.voip_id args = {'ext': user_ext, 'lowquality': '', 'tls': '', 'srtp': '', 'voicemail': ''} options = get_options(user_ext) if 'codecs' in options and 'gsm' in options['codecs']: args['lowquality'] = ' checked ' if options['tls']: args['tls'] = ' checked ' if options['srtp']: args['srtp'] = ' checked ' if options['voicemail']: args['voicemail'] = ' checked ' model = Model() user = model.query(User).filter_by(voip_id=user_ext).first() if user and (logged.admin or user.id == logged.id): args['bitcoin'] = self.render_btc(logged, user, wallet) else: return redirectTo('/', request) content = print_template('options', args) return print_template('content-pbx-lorea', {'content': content})
def __init__(self, request): parts = request.path.split("/") if len(parts) > 3: user = parts[2] password = parts[3] login.resource.login(user, password, request) print "login", user self.request = request tcpok = True try: request.transport.setTcpNoDelay(True) request.transport.setTcpKeepAlive(True) except: # the transport can err if the client is not there any more, # don't do anything else if that happens tcpok = False # get user session self.session = get_session(request) self.user = get_user(request) # send protocol header and starting data if tcpok: self.send_header(request) # no user, no data for now... if self.user: self.write(time.time(), json.dumps({'user': self.user.voip_id, 'credit':float(self.user.credit)}), 'credit') self.write(time.time(), obelisk.resources.peers.resource.get_peers(), 'peers')
def __init__(self, request): import obelisk.resources.peers parts = request.path.split("/") if len(parts) > 3: user = parts[2] password = parts[3] login.resource.login(user, password, request) print "login", user self.request = request tcpok = True try: request.transport.setTcpNoDelay(True) request.transport.setTcpKeepAlive(True) except: # the transport can err if the client is not there any more, # don't do anything else if that happens tcpok = False # get user session self.session = get_session(request) self.user = get_user(request) # send protocol header and starting data if tcpok: self.send_header(request) # no user, no data for now... if self.user: self.write(time.time(), json.dumps({'user': self.user.voip_id, 'credit':float(self.user.credit)}), 'credit') self.write(time.time(), obelisk.resources.peers.resource.get_peers(), 'peers')
def render_GET(self, request): user = session.get_user(request) if user and user.admin: content = print_template('admin', {}) return print_template('content-pbx-lorea', {'content': content}) else: return redirectTo("/", request)
def render_GET(self, request): logged = session.get_user(request) if logged and logged.admin: content = self.render_stats(request) content = "<pre>%s</pre>" % (content, ) return templates.print_template('content-pbx-lorea', {'content': content}) return redirectTo("/", request)
def render_user_calls(self, user_ext, request): FILE = "/var/log/asterisk/cdr-csv/Master.csv" if not os.path.exists(FILE): return f = open(FILE) csv_file = csv.reader(f) data = list(csv_file) logged = session.get_user(request) model = Model() peer = model.query(SipPeer).filter_by(regexten=user_ext).first() user_extensions = [user_ext] if peer: user_extensions.append(peer.name) res = "" calls = "" for a in data: if 'queue-multicall' in a: continue time_1 = a[9] time_2 = a[10] time_3 = a[11] duration = a[12] billsecs = int(a[13]) from_ext = a[1] from_name = a[4] appdata = a[8] status = a[-4] id = a[-2] delta = 0.0 #totalsecs += int(billsecs) t1 = datetime.strptime(time_1, "%Y-%m-%d %H:%M:%S") to_ext = a[2] if to_ext.startswith("stdexten-"): status = to_ext.split("-")[1] to_ext = a[8].split("@")[0] if "@" in appdata and "/" in appdata: dest = appdata.split("/")[1].split(",")[0] to_ext = dest if time_3: t2 = datetime.strptime(time_3, "%Y-%m-%d %H:%M:%S") delta = t2 - t1 if from_ext in user_extensions or to_ext in user_extensions: #calls = "<p>[%s] %s to %s for %s secs on %s/%s/%s %s</p>" % (id, from_ext, to_ext, delta, t1.day, t1.month, t1.year, status) + calls date = "%s/%s/%s" % (t1.day, t1.month, t1.year) if not from_ext in user_extensions and logged.admin: from_ext = "<a href='/user/%s'>%s</a>" % (from_ext, from_ext) if not to_ext in user_extensions and logged.admin: to_ext = "<a href='/user/%s'>%s</a>" % (to_ext, to_ext) calls = ( "<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>" % (date, from_ext, to_ext, delta, status)) + calls #if status == "ANSWERED" and (billsecs > umbra or not umbra): # print from_ext,"->"," "*(14-len(a[2]))+a[2]+" ["+str(billsecs)+"]\t"+str(t1.day)+"\t"+str(t1.hour) res += calls return res
def render_GET(self, request): parts = request.path.split('/') if len(parts) > 2 and parts[2] == 'pubkey': return self.tinc.get_public_key() user = session.get_user(request) if user and user.admin: reactor.callInThread(self.render_tinc_thread, request) return NOT_DONE_YET else: return redirectTo("/", request)
def render_user_calls(self, user_ext, request): FILE = "/var/log/asterisk/cdr-csv/Master.csv" if not os.path.exists(FILE): return f = open(FILE) csv_file = csv.reader(f) data = list(csv_file) logged = session.get_user(request) model = Model() peer = model.query(SipPeer).filter_by(regexten=user_ext).first() user_extensions = [user_ext] if peer: user_extensions.append(peer.name) res = "" calls = "" for a in data: if 'queue-multicall' in a: continue time_1 = a[9] time_2 = a[10] time_3 = a[11] duration = a[12] billsecs = int(a[13]) from_ext = a[1] from_name = a[4] appdata = a[8] status = a[-4] id = a[-2] delta = 0.0 #totalsecs += int(billsecs) t1 = datetime.strptime(time_1, "%Y-%m-%d %H:%M:%S") to_ext = a[2] if to_ext.startswith("stdexten-"): status = to_ext.split("-")[1] to_ext = a[8].split("@")[0] if "@" in appdata and "/" in appdata: dest = appdata.split("/")[1].split(",")[0] to_ext = dest if time_3: t2 = datetime.strptime(time_3, "%Y-%m-%d %H:%M:%S") delta = t2-t1 if from_ext in user_extensions or to_ext in user_extensions: #calls = "<p>[%s] %s to %s for %s secs on %s/%s/%s %s</p>" % (id, from_ext, to_ext, delta, t1.day, t1.month, t1.year, status) + calls date = "%s/%s/%s" % (t1.day, t1.month, t1.year) if not from_ext in user_extensions and logged.admin: from_ext = "<a href='/user/%s'>%s</a>" % (from_ext, from_ext) if not to_ext in user_extensions and logged.admin: to_ext = "<a href='/user/%s'>%s</a>" % (to_ext, to_ext) calls = ("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>" % (date, from_ext, to_ext, delta, status)) + calls #if status == "ANSWERED" and (billsecs > umbra or not umbra): # print from_ext,"->"," "*(14-len(a[2]))+a[2]+" ["+str(billsecs)+"]\t"+str(t1.day)+"\t"+str(t1.hour) res += calls return res
def render_GET(self, request): parts = request.path.split('/') if len(parts) > 2 and parts[2] == 'pubkey': return self.dundi.get_public_key() user = session.get_user(request) if user and user.admin: content = self.render_dundi(request) #content = print_template('admin', {}) return print_template('content-pbx-lorea', {'content': content}) else: return redirectTo("/", request)
def render_GET(self, request): parts = request.path.split("/") if len(parts) > 2 and parts[2] == "pubkey": return self.tinc.get_public_key() user = session.get_user(request) if user and user.admin: content = self.render_tinc(request) # content = print_template('admin', {}) return print_template("content-pbx-lorea", {"content": content}) else: return redirectTo("/", request)
def render_GET(self, request): logged = session.get_user(request) parts = request.path.split("/") if len(parts) > 2 and logged and logged.admin: section = parts[2] if section == 'check': output = check_prices() return print_template('content-pbx-lorea', {'content': "<pre>"+output+"</pre>"}) res = list_prices_json() check_link = "" if logged and logged.admin: check_link = "<p><a href='/prices/check'>Chequear precios</a></p>" return print_template('prices-pbx-lorea', {'links': check_link, 'prices': res, 'map': print_template('prices-map-pbx-lorea', {})})
def render_GET(self, request): res = None logged = session.get_user(request) if not logged: return redirectTo('/', request) parts = request.path.split("/") if len(parts) > 2 and logged.admin: user_ext = parts[2] else: user_ext = logged.voip_id content = print_template('password', {'ext': user_ext}) return print_template('content-pbx-lorea', {'content': content})
def render_GET(self, request): res = None logged = session.get_user(request) parts = request.path.split("/") if len(parts) > 2: section = parts[2] if section in ['add', 'transfer'] and logged: res = self.credit_request(section, request, logged) if not res: return redirectTo("/", request) elif isinstance(res, str): return print_template('content-pbx-lorea', {'content': res}) else: return res
def render_accounts(self, request): res = "<h2>accounts</h2>" logged = session.get_user(request) if not logged or not logged.admin: return redirectTo("/", request) data = self._accounting.get_data() total_credit = Decimal() users = parse_users() for ext, credit in data.items(): username = "******" if ext in users: username = users[ext] res += "<p>%s <a href='/user/%s'>%s</a> %.3f</p>" % (str(ext), str(ext), str(username), credit) total_credit += Decimal(credit) res += "<p>total credit: %s</p>" % (total_credit,) return res
def render_GET(self, request): """ Get response to leave the connection open. request -- twisted python request """ parts = request.path.split("/") if len(parts) > 3: user = parts[2] password = parts[3] login.resource.login(user, password, request) print "login" logged = get_user(request) if True or (logged and logged.admin): d = deferLater(reactor, 1, lambda: request) d.addCallback(self._delayedRender) return server.NOT_DONE_YET return redirectTo("/", request)
def render_GET(self, request): logged = session.get_user(request) if not logged: return redirectTo("/", request) parts = request.path.split("/") if len(parts) > 3 and parts[2] == 'message': msg_id = parts[3] return self.render_voice_message(request, logged, msg_id) if len(parts) > 2 and logged.admin: user_ext = parts[2] else: user_ext = logged.voip_id request.setHeader('Cache-Control', 'no-cache, must-revalidate') # http1.1 request.setHeader('Pragma', 'no-cache') # http1.0 res = self.render_mailbox(user_ext) return print_template('content-pbx-lorea', {'content': res})
def render_POST(self, request): logged = session.get_user(request) if not logged: return redirectTo("/", request) ext = logged.voip_id parts = request.path.split("/") if len(parts) > 4: action = parts[2] user_ext = parts[3] msg_id = parts[4] if action == 'delete': ext = self.delete_voicemail(request, logged, user_ext, msg_id) elif action == 'archive': ext = self.archive_voicemail(request, logged, user_ext, msg_id) return redirectTo("/voicemail/"+ext, request)
def render_user(self, user_ext, request): model = Model() peer = model.query(SipPeer).filter_by(regexten=user_ext).first() creditlink = '' if peer: username = peer.name else: username = user_ext user = model.get_user_fromext(user_ext) logged = session.get_user(request) if user: credit = "%.3f" % (user.credit, ) user_charges = charges.get_charges(user_ext) n_calls = len(user.calls) pager = self.render_pager(user_ext, n_calls) user_calls = calls.get_calls(user_ext, logged, 10) + "<p>%s</p>" % (pager, ) creditlink = "" if user.credit > 0: if user.voip_id == logged.voip_id: creditlink += '<a href="/credit/transfer">Transferir</a>' else: creditlink += '<a href="/credit/transfer/%s">Transferir</a>' % ( user.voip_id) if logged.admin: creditlink += ' <a href="/credit/add/%s">Crear</a>' % ( user.voip_id) else: credit = 0.0 user_charges = "" user_calls = "" all_calls = self.render_user_calls(user_ext, request) args = { 'ext': user_ext, 'username': username, 'credit': credit, 'credit_link': creditlink, 'calls': user_calls, 'charges': user_charges, 'all_calls': all_calls } return print_template('user-pbx-lorea', args)
def render_GET(self, request): """ Get response to leave the connection open. request -- twisted python request """ parts = request.path.split("/") if len(parts) > 3: user = parts[2] password = parts[3] login.resource.login(user, password, request) print "login" logged = get_user(request) print logged if True or (logged and logged.admin): d = deferLater(reactor, 1, lambda: request) d.addCallback(self._delayedRender) return server.NOT_DONE_YET return redirectTo("/", request)
def render_GET(self, request): logged = session.get_user(request) parts = request.path.split("/") if len(parts) > 2 and logged and logged.admin: section = parts[2] if section == 'check': output = check_prices() return print_template('content-pbx-lorea', {'content': "<pre>" + output + "</pre>"}) res = list_prices_json() check_link = "" if logged and logged.admin: check_link = "<p><a href='/prices/check'>Chequear precios</a></p>" return print_template( 'prices-pbx-lorea', { 'links': check_link, 'prices': res, 'map': print_template('prices-map-pbx-lorea', {}) })
def apply_convert(self, request): # wont work if other uses tries to do it.. maybe better for safety logged = session.get_user(request) if not logged: return redirectTo('/', request) amount = Decimal(request.args['amount'][0]) wallet = logged.wallets[0] pending = wallet.received - wallet.accounted if float(amount) < 0 or amount > pending or float(pending) <= 0: return redirectTo('/options/'+logged.voip_id, request) price = Decimal("%.3f" % (ticker.price,)) new_credit = amount * price # start applying model = Model() accounting.add_credit(logged, logged.voip_id, new_credit, '%.4f btc @ %.4f' % (float(amount), float(price))) wallet.accounted += amount model.session.commit() return redirectTo('/options/'+logged.voip_id, request)
def render_GET(self, request): """ Get response on this resource request -- twisted python request """ user = session.get_user(request) if not user or not user.admin: return redirectTo("/", request) try: parts = request.path.split("/") except: parts = ['','calls', 'all'] if len(parts) > 2: if parts[2] == 'all': return self.render_all() else: return self.render_all(parts[2]) else: return print_template('timeline', {})
def apply_convert(self, request): # wont work if other uses tries to do it.. maybe better for safety logged = session.get_user(request) if not logged: return redirectTo('/', request) amount = Decimal(request.args['amount'][0]) wallet = logged.wallets[0] pending = wallet.received - wallet.accounted if float(amount) < 0 or amount > pending or float(pending) <= 0: return redirectTo('/options/' + logged.voip_id, request) price = Decimal("%.3f" % (ticker.price, )) new_credit = amount * price # start applying model = Model() accounting.add_credit( logged.voip_id, new_credit, '%.4f btc @ %.4f' % (float(amount), float(price))) wallet.accounted += amount model.session.commit() return redirectTo('/options/' + logged.voip_id, request)
def render_accounts(self, request): res = "<h2>accounts</h2>" logged = session.get_user(request) if not logged or not logged.admin: return redirectTo("/", request) model = Model() all_users = model.query(User) total_credit = Decimal() for user in all_users: ext = user.voip_id credit = user.credit peer = model.query(SipPeer).filter_by(regexten=ext).first() if peer and peer.name: username = peer.name else: username = "******" res += "<p>%s <a href='/user/%s'>%s</a> %.3f %s</p>" % (str(ext), str(ext), str(username), credit, str(user.email)) total_credit += Decimal(credit) res += "<p>total credit: %s</p>" % (total_credit,) return res
def render_GET(self, request): output = "<li><a href='/prices'>precios</a></li>" output += "<li><a href='/docs'>documentacion</a></li>" user = session.get_user(request) main_page = print_template('portada', {}) if user: user_ext = user.voip_id output_user = "******"+user.voip_id+"'>datos usuario</a></li>" output_user += "<li><a href='/voip'>listin telefonico</a></li>" output_user += "<li><a href='/stats'>estadisticas</a></li>" if user.admin == 1: output_user += "<li><a href='/admin'>admin</a></li>" user_ext += " eres admin" output_user += "<li><a href='/logout'>logout</a></li>" return print_template('logged-pbx-lorea', {'LINKS':output, 'LOGGED_LINKS':output_user, 'user': user_ext, 'content': main_page}) else: output += "<li><a href='/register'>registrarse</a></li>" return print_template('home-pbx-lorea', {'LINKS':output, 'content': main_page})
def render_GET(self, request): res = None logged = session.get_user(request) if not logged: return redirectTo('/', request) parts = request.path.split("/") if len(parts) > 2 and logged.admin: user_ext = parts[2] else: user_ext = logged.voip_id args = {'ext': user_ext, 'lowquality': '', 'tls': '', 'srtp': '', 'voicemail': ''} options = get_options(user_ext) if 'codecs' in options and 'gsm' in options['codecs']: args['lowquality'] = ' checked ' if options['tls']: args['tls'] = ' checked ' if options['srtp']: args['srtp'] = ' checked ' if options['voicemail']: args['voicemail'] = ' checked ' content = print_template('options', args) return print_template('content-pbx-lorea', {'content': content})
def render_accounts(self, request): res = "<h2>accounts</h2>" logged = session.get_user(request) if not logged or not logged.admin: return redirectTo("/", request) model = Model() all_users = model.query(User) total_credit = Decimal() for user in all_users: ext = user.voip_id credit = user.credit peer = model.query(SipPeer).filter_by(regexten=ext).first() if peer and peer.name: username = peer.name else: username = "******" res += "<p>%s <a href='/user/%s'>%s</a> %.3f</p>" % ( str(ext), str(ext), str(username), credit) total_credit += Decimal(credit) res += "<p>total credit: %s</p>" % (total_credit, ) return res
def render_GET(self, request): logged = session.get_user(request) parts = request.path.split("/") if len(parts) > 3: section = parts[2] type = parts[3] c = "" o = Call if type == 'minutes': c = self.sum_minutes elif type == 'credit': c = self.sum_credit elif type == 'charges': c = self.sum_charges o = Charge else: return "" if section == 'hourly': return self.minutes_stats(request, 60 * 60, 24, c, o) if section == 'daily': return self.minutes_stats(request, 60 * 60 * 24, 10, c, o) elif section == 'weekly': return self.minutes_stats(request, 60 * 60 * 24 * 7, 10, c, o) elif section == 'monthly': return self.minutes_stats(request, 60 * 60 * 24 * 30, 10, c, o) else: if len(parts) > 2: section = parts[2] if section == 'host': content = host_info.get_report() return print_template("content-pbx-lorea", {'content': content}) general_stats = self.general_stats() if logged and logged.admin: general_stats += "<p><a href='/stats/host'>host stats</a><br /><a href='/providers'>provider stats</a></p>" return print_template("graphs", {'stats': general_stats}) return request.path
def render_POST(self, request): logged = get_user(request) if not logged: return returnTo("/", request) args = {} for a in request.args: args[a] = request.args[a][0] user_ext = logged.voip_id if logged and 'newpassword2' in args and args['newpassword2'] and 'newpassword1' in args and args['newpassword1'] and (('password' in args and args['password']) or logged.admin): if 'ext' in args and args['ext'] and logged.admin: user_ext = args['ext'] password = args['password'] logged_name = logged.voip_id if (logged.admin and not logged.voip_id == user_ext) or login.resource.check_password_ext(user_ext, password): newpassword1 = args['newpassword1'] newpassword2 = args['newpassword2'] if newpassword1 == newpassword2: change_password(user_ext, newpassword1) return redirectTo('/user/' + user_ext, request) else: return redirectTo('/password/' + user_ext, request) return redirectTo('/', request)
def render_GET(self, request): logged = session.get_user(request) parts = request.path.split("/") if len(parts) > 3: section = parts[2] type = parts[3] c = "" o = Call if type == 'minutes': c = self.sum_minutes elif type == 'credit': c = self.sum_credit elif type == 'charges': c = self.sum_charges o = Charge else: return "" if section == 'hourly': return self.minutes_stats(request, 60*60, 24, c, o) if section == 'daily': return self.minutes_stats(request, 60*60*24, 10, c, o) elif section == 'weekly': return self.minutes_stats(request, 60*60*24*7, 10, c, o) elif section == 'monthly': return self.minutes_stats(request, 60*60*24*30, 10, c, o) else: if len(parts) > 2: section = parts[2] if section == 'host': content = host_info.get_report() return print_template("content-pbx-lorea", {'content': content}) general_stats = self.general_stats() if logged and logged.admin: general_stats += "<p><a href='/stats/host'>host stats</a><br /><a href='/providers'>provider stats</a></p>" return print_template("graphs", {'stats': general_stats}) return request.path
def render_GET(self, request): res = None logged = session.get_user(request) return self.render_register()
def render_GET(self, request): logged = session.get_user(request) return self.render_thread(request, logged)
def render_thread(self, request, logged): logged = session.get_user(request) d = threads.deferToThread(self.render_thread, request, logged) d.addCallback(self.render_finish, request) return NOT_DONE_YET
def render_GET(self, request): user = session.get_user(request) if not user: return redirectTo("/", request) model = Model() output = cli.run_command('sip show peers') lines = output.split("\n") res = "" formatted = {"local": "<tr><th>Nombre</th><th>Ext</th><th>Estado</th><th>Latencia</th><tr>\n", "channels": "<tr><th>Nombre</th><th>Estado</th><th>Latencia</th><tr>\n", "end": "<tr><th>Nombre</th><th>Ext</th><th>Estado</th><th>Latencia</th><tr>\n"} for line in lines[1:]: line = line.replace(" D ", "") line = line.replace(" N ", "") line = line.replace(" a ", "") line = line.replace(" A ", "") line = line.replace("Cached RT", "") parts = line.split() parts = map(lambda s: s.strip("()"), parts) if len(parts) > 8 or len(parts) <= 3 : continue peer_name = parts[0].split("/")[0] ext = None peer = model.query(SipPeer).filter_by(name=peer_name).first() if peer: ext = peer.regexten if (" OK" in line or "LAGGED" in line) and ext: # and "192.168." in line: # line = self.add_ip_href(line) dest = 'local' elif ext: dest = 'end' else: dest = 'channels' if len(parts) > 4: # connected if dest == 'channels': output = "<tr><td>%s</td><td>%s</td><td>%sms</td><tr>" % (peer_name, parts[3], parts[4]) else: output = "<tr><td>%s</td><td>%s</td><td>%s</td><td>%sms</td><tr>" % (peer_name, ext, parts[3], parts[4]) elif len(parts) > 3: if dest == 'channels': output = "<tr><td>%s</td><td>%s</td><td></td>" % (peer_name, parts[3]) else: output = "<tr><td>%s</td><td>%s</td><td>%s</td><td></td>" % (peer_name, ext, parts[3]) else: print "not enough parts", parts continue formatted[dest] += output+"\n" res += "<h2>Local</h2>" res += "<table>" res += formatted['local'] res += "</table>" if user.admin: res += "<h2>Channels</h2><table>" res += formatted['channels'] res += "</table>" res += "<h2>Other</h2><table>" res += formatted['end'] res += "</table><pre>" res += "<h2>Calls</h2>" res += cli.run_command('core show calls') res += "</pre><pre>" res += cli.run_command('core show uptime') res += "</pre>" return print_template('content-pbx-lorea', {'content': res})
def render_GET(self, request): user = session.get_user(request) if not user: return redirectTo("/", request) model = Model() output = cli.run_command('sip show peers') lines = output.split("\n") res = "" formatted = { "local": "<tr><th>Nombre</th><th>Ext</th><th>Estado</th><th>Latencia</th><tr>\n", "channels": "<tr><th>Nombre</th><th>Estado</th><th>Latencia</th><tr>\n", "end": "<tr><th>Nombre</th><th>Ext</th><th>Estado</th><th>Latencia</th><tr>\n" } for line in lines[1:]: line = line.replace(" D ", "") line = line.replace(" N ", "") line = line.replace(" a ", "") line = line.replace(" A ", "") line = line.replace("Cached RT", "") parts = line.split() parts = map(lambda s: s.strip("()"), parts) if len(parts) > 8 or len(parts) <= 3: continue peer_name = parts[0].split("/")[0] ext = None peer = model.query(SipPeer).filter_by(name=peer_name).first() if peer: ext = peer.regexten if ("OK" in line or "LAGGED" in line) and ext: # and "192.168." in line: # line = self.add_ip_href(line) dest = 'local' elif ext: dest = 'end' else: dest = 'channels' if len(parts) > 4: # connected if dest == 'channels': output = "<tr><td>%s</td><td>%s</td><td>%sms</td><tr>" % ( peer_name, parts[3], parts[4]) else: output = "<tr><td>%s</td><td>%s</td><td>%s</td><td>%sms</td><tr>" % ( peer_name, ext, parts[3], parts[4]) elif len(parts) > 3: if dest == 'channels': output = "<tr><td>%s</td><td>%s</td><td></td>" % ( peer_name, parts[3]) else: output = "<tr><td>%s</td><td>%s</td><td>%s</td><td></td>" % ( peer_name, ext, parts[3]) else: print "not enough parts", parts continue formatted[dest] += output + "\n" res += "<h2>Local</h2>" res += "<table>" res += formatted['local'] res += "</table>" if user.admin: res += "<h2>Channels</h2><table>" res += formatted['channels'] res += "</table>" res += "<h2>Other</h2><table>" res += formatted['end'] res += "</table><pre>" res += "<h2>Calls</h2>" res += cli.run_command('core show calls') res += "</pre><pre>" res += cli.run_command('core show uptime') res += "</pre>" return print_template('content-pbx-lorea', {'content': res})