126 lines
3.3 KiB
Python
126 lines
3.3 KiB
Python
from flask import Flask, jsonify, render_template, request, json, redirect, url_for
|
|
#from libsmscast import LibSMSCast
|
|
from mocksmscast import LibSMSCast
|
|
from libaddrbook import LibAddrBook
|
|
from flask.ext.login import login_user, logout_user, current_user, login_required, LoginManager
|
|
import user
|
|
import dbmsgs
|
|
|
|
app = Flask(__name__)
|
|
app.secret_key = 'abcdgfkfdhgslkjh' # lol
|
|
|
|
login_manager = LoginManager()
|
|
login_manager.init_app(app)
|
|
login_manager.login_view = "login"
|
|
|
|
@app.route('/send')
|
|
@login_required
|
|
def send():
|
|
client = LibSMSCast()
|
|
addr = LibAddrBook()
|
|
|
|
msg = request.args.get('msg')
|
|
tostr = request.args.get('to')
|
|
to = [int(x) for x in json.loads(tostr)]
|
|
print to
|
|
|
|
dbmsgs.logmsg(msg, to, current_user.uid)
|
|
|
|
dest = addr.get_nums_with_ids(to)
|
|
print dest
|
|
howmany = len(dest)
|
|
client.send(dest, msg)
|
|
return jsonify(result="sent {} to {} numbers(s)".format(msg, howmany))
|
|
|
|
@app.route('/_get_updates')
|
|
@login_required
|
|
def get_updates():
|
|
lastOut = request.args.get('lastOut')
|
|
if not lastOut: lastOut = 0
|
|
lastIn = request.args.get('lastIn')
|
|
if not lastIn: lastIn = 0
|
|
return jsonify(msgs=dbmsgs.getloggedmsgs(lastOut), inbound=dbmsgs.getinboundmsgs(lastIn))
|
|
|
|
@app.route('/_get_people_in_groups')
|
|
@login_required
|
|
def get_people_in_groups():
|
|
addr = LibAddrBook()
|
|
groupliststr = request.args.get('grouplist')
|
|
grouplist = [int(x) for x in json.loads(groupliststr)]
|
|
ppl = addr.get_people_in_groups(grouplist)
|
|
return jsonify(result=ppl)
|
|
|
|
@app.route('/_get_people')
|
|
@login_required
|
|
def get_people():
|
|
addr = LibAddrBook()
|
|
people = addr.get_everyone()
|
|
return jsonify(people=people)
|
|
|
|
@app.route('/_get_groups')
|
|
@login_required
|
|
def get_groups():
|
|
addr = LibAddrBook()
|
|
groups = addr.get_groups()
|
|
return jsonify(groups=groups)
|
|
|
|
@app.route('/addperson', methods=["GET","POST"])
|
|
@login_required
|
|
def add_person():
|
|
statustext = ""
|
|
if request.method == "POST":
|
|
addr = LibAddrBook()
|
|
name = request.form['name']
|
|
num = request.form['num']
|
|
state = addr.add_person(name, num)
|
|
if not state: # failure
|
|
statustext = "Failed to add person {}".format(name)
|
|
else: # success
|
|
statustext = "Successfully added person {}".format(name)
|
|
return render_template('addperson.html', statustext=statustext)
|
|
|
|
|
|
@app.route('/')
|
|
@login_required
|
|
def index():
|
|
return render_template('index.html')
|
|
|
|
@app.route("/_twilio_new_sms", methods=["POST"])
|
|
def twilio_new_sms():
|
|
if request.method == "POST":
|
|
dbmsgs.loginboundmsg(request.form)
|
|
return "(y)"
|
|
#print request.form;
|
|
return "(n)"
|
|
|
|
|
|
@app.route("/login", methods=["GET", "POST"])
|
|
def login():
|
|
if current_user.is_authenticated() and current_user.is_active():
|
|
return redirect(url_for('index'))
|
|
|
|
if request.method == "POST":
|
|
username = request.form['username']
|
|
password = request.form['password']
|
|
if(username and password):
|
|
# do login because username and password have been specified
|
|
uid = user.authenticate(username, password)
|
|
if uid != None:
|
|
login_user(user.get(uid), remember=True)
|
|
return redirect(url_for('index'))
|
|
return render_template('login.html')
|
|
|
|
@app.route("/logout")
|
|
def logout():
|
|
logout_user()
|
|
return redirect(url_for('login'))
|
|
|
|
@login_manager.user_loader
|
|
def load_user(userid):
|
|
return user.get(userid)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app.run(host='0.0.0.0', port=42069, debug=True)
|
|
#app.run(host='10.9.8.1', port=42069, debug=True)
|