remove: signal support

This commit is contained in:
2026-02-28 23:14:23 +01:00
parent 4e4f53b330
commit f08f6a2953

View File

@@ -50,15 +50,13 @@ class UserSettings(db.Model):
__tablename__ = "user_settings" __tablename__ = "user_settings"
username = Column(String, primary_key=True) username = Column(String, primary_key=True)
signal_priority = Column(Integer) signal_priority = Column(Integer) # legacy, no longer used
email_priority = Column(Integer) email_priority = Column(Integer)
ntfy_priority = Column(Integer) ntfy_priority = Column(Integer)
def get_highest_prio_method(self): def get_highest_prio_method(self):
if self.signal_priority >= max(self.email_priority, self.ntfy_priority): if self.email_priority >= self.ntfy_priority:
return "signal"
elif self.email_priority >= max(self.signal_priority, self.ntfy_priority):
return "email" return "email"
else: else:
return "ntfy" return "ntfy"
@@ -66,7 +64,6 @@ class UserSettings(db.Model):
def serizalize(self): def serizalize(self):
return { return {
"username" : self.username, "username" : self.username,
"signal_priority" : self.signal_priority,
"email_priority" : self.email_priority, "email_priority" : self.email_priority,
"ntfy_priority" : self.ntfy_priority, "ntfy_priority" : self.ntfy_priority,
} }
@@ -114,9 +111,7 @@ class DispatchObject(db.Model):
user_settings = db.session.query(UserSettings).filter( user_settings = db.session.query(UserSettings).filter(
UserSettings.username == ret["username"]).first() UserSettings.username == ret["username"]).first()
if not user_settings and self.phone: if not user_settings and self.email:
ret["method"] = "signal"
elif not user_settings and self.email:
ret["method"] = "email" ret["method"] = "email"
elif user_settings: elif user_settings:
ret["method"] = user_settings.get_highest_prio_method() ret["method"] = user_settings.get_highest_prio_method()
@@ -210,7 +205,7 @@ def settings():
if flask.request.method == "POST": if flask.request.method == "POST":
posted = UserSettings(username=user, posted = UserSettings(username=user,
signal_priority=flask.request.json.get("signal_priority") or 0, signal_priority=-1,
email_priority=flask.request.json.get("email_priority") or 0, email_priority=flask.request.json.get("email_priority") or 0,
ntfy_priority=flask.request.json.get("ntfy_priority") or 0) ntfy_priority=flask.request.json.get("ntfy_priority") or 0)
db.session.merge(posted) db.session.merge(posted)
@@ -220,7 +215,7 @@ def settings():
if flask.request.method == "GET": if flask.request.method == "GET":
user_settings = db.session.query(UserSettings).filter(UserSettings.username==user).first() user_settings = db.session.query(UserSettings).filter(UserSettings.username==user).first()
if not user_settings: if not user_settings:
posted = UserSettings(username=user, signal_priority=5, email_priority=7, ntfy_priority=3) posted = UserSettings(username=user, signal_priority=-1, email_priority=7, ntfy_priority=3)
db.session.merge(posted) db.session.merge(posted)
db.session.commit() db.session.commit()
user_settings = posted user_settings = posted
@@ -240,7 +235,7 @@ def get_dispatch():
return (BAD_DISPATCH_ACCESS_TOKEN, 401) return (BAD_DISPATCH_ACCESS_TOKEN, 401)
if not method: if not method:
return (500, "Missing Dispatch Target (signal|email|phone|ntfy|all|any)") return (500, "Missing Dispatch Target (email|phone|ntfy|all|any)")
# prevent message floods # # prevent message floods #
timeout_cutoff = datetime.datetime.now() - datetime.timedelta(seconds=timeout) timeout_cutoff = datetime.datetime.now() - datetime.timedelta(seconds=timeout)
@@ -262,45 +257,7 @@ def get_dispatch():
else: else:
dispatch_objects = lines_timeout.all() dispatch_objects = lines_timeout.all()
# TODO THIS IS THE NEW MASTER PART return flask.jsonify([ d.serialize() for d in dispatch_objects])
if method and method != "signal":
debug = [ d.serialize() for d in dispatch_objects]
if debug:
print(debug)
return flask.jsonify([ d.serialize() for d in dispatch_objects])
else:
# TODO THIS PART WILL BE REMOVED ##
# accumulate messages by person #
dispatch_by_person = dict()
dispatch_secrets = []
for dobj in dispatch_objects:
if dobj.username not in dispatch_by_person:
dispatch_by_person.update({ dobj.username : dobj.message })
dispatch_secrets.append(dobj.dispatch_secret)
else:
dispatch_by_person[dobj.username] += "\n{}".format(dobj.message)
dispatch_secrets.append(dobj.dispatch_secret)
# legacy hack #
if method == "any":
method = "signal"
response = [ { "person" : tupel[0].decode("utf-8"),
"message" : tupel[1],
"method" : method,
"uids" : dispatch_secrets
} for tupel in dispatch_by_person.items() ]
# add phone numbers and emails #
for obj in response:
for person in dispatch_objects:
if obj["person"] == person.username.decode("utf-8"):
if person.email:
obj.update({ "email" : person.email.decode("utf-8") })
if person.phone:
obj.update({ "phone" : person.phone.decode("utf-8") })
return flask.jsonify(response)
@app.route('/report-dispatch-failed', methods=["POST"]) @app.route('/report-dispatch-failed', methods=["POST"])
def reject_dispatch(): def reject_dispatch():
@@ -497,8 +454,6 @@ if __name__ == "__main__":
parser.add_argument('--interface', default="localhost", help='Interface on which to listen') parser.add_argument('--interface', default="localhost", help='Interface on which to listen')
parser.add_argument('--port', default="5000", help='Port on which to listen') parser.add_argument('--port', default="5000", help='Port on which to listen')
parser.add_argument("--signal-cli-bin", default=None, type=str,
help="Path to signal-cli binary if no in $PATH")
parser.add_argument('--ldap-server') parser.add_argument('--ldap-server')
parser.add_argument('--ldap-base-dn') parser.add_argument('--ldap-base-dn')