From 0107ed6e8466dc08213983599b2543a8ed028e7c Mon Sep 17 00:00:00 2001 From: anons-voip Date: Mon, 10 Jun 2024 21:08:03 -0400 Subject: [PATCH 01/10] wrote out some logic using voipms to get sms messages and configure did numbers to use sms --- app/sms.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 app/sms.py diff --git a/app/sms.py b/app/sms.py new file mode 100644 index 0000000..7f36fe8 --- /dev/null +++ b/app/sms.py @@ -0,0 +1,16 @@ +from voipms.api import Client + +def get_sms(client, did): + params = { + "did":did, + "type":1, + "all_messages":1 + } + return client.dids.sms.fetch(params=params) + +def enable_sms(client, did): + params = { + "did":did, + "enable":1, + } + return client.dids.sms.set(params=params) \ No newline at end of file From 8d73e7e779341599b6254e4d1a0517074f402118 Mon Sep 17 00:00:00 2001 From: anons-voip Date: Mon, 10 Jun 2024 21:08:39 -0400 Subject: [PATCH 02/10] wrote out some logic to get information about numbers --- app/did.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 app/did.py diff --git a/app/did.py b/app/did.py new file mode 100644 index 0000000..795503d --- /dev/null +++ b/app/did.py @@ -0,0 +1,14 @@ +from voipms.api import Client + +def get_numbers(client): + params = { + } + did_info = client.dids.fetch(params=params) + info = [] + for did in did_info["dids"]: + desired_did_info = {"mms_available":None,"sms_available":None,"did":None} + for key in did: + if key in desired_did_info: + desired_did_info[key] = did[key] + info.append(desired_did_info) + return info \ No newline at end of file From 5fc948a617a919fcffc7441b07b1fc8d0db92716 Mon Sep 17 00:00:00 2001 From: anons-voip Date: Mon, 10 Jun 2024 21:09:22 -0400 Subject: [PATCH 03/10] added basic flask server --- app/server.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 app/server.py diff --git a/app/server.py b/app/server.py new file mode 100644 index 0000000..63c9b3a --- /dev/null +++ b/app/server.py @@ -0,0 +1,30 @@ +from flask import Flask, request, abort +from voipms.api import Client +import did, sms +import json + +app = Flask(__name__) +with open("config.json",'r') as conf_file: + conf = json.load(conf_file) +client = Client(conf["username"],conf["password"]) + + +@app.route("/", methods=['GET']) +def hello_world(): + return "

Hello, World!

" + +@app.route("/numbers", methods=['GET']) +def get_numbers(): + return did.get_numbers(client) + +@app.route("/sms",methods=['GET', 'POST']) +def get_sms(): + did = request.args.get('did') + return sms.get_sms(client, did) + + +@app.route("/enablesms",methods=['GET', 'POST']) +def set_sms(): + abort(403) + did = request.args.get('did') + return sms.get_sms(client, did) From ca4b92a6bffb819d83617b636914ae1c997762ab Mon Sep 17 00:00:00 2001 From: anons-voip Date: Mon, 10 Jun 2024 21:17:02 -0400 Subject: [PATCH 04/10] updating README --- README.md | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5c12047..e78c2b1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,38 @@ # voipsms -Python flask app that uses voip.ms to manage a number of DID numbers for SMS. Can be used to get mostly anonymous texts and sms verification. \ No newline at end of file +Python flask app that uses voip.ms to manage a number of DID numbers for SMS. Can be used to get mostly anonymous texts and sms verification. + +## How to use + +1. Clone the repo + +`git clone http://git.community.i2p/anons-voip/voipsms.git && cd voipsms` + +2. Create and activate a python venv + +`python3 -m venv venv && source ./venv/bin/activate` + +3. Install requirements + +`pip install -r requirements.txt` + +4. Set your config + +`vim config.json` +[Read about how to set up your config here!](./README.md#Config) + +5. Start up the server + +`./run` + +## Config + +The config used in this project uses the JSON format and expects a `username` and `password` + + Ex: + ``` + { + "username":"voipms-email", + "password":"voipms-api-password" + } + ``` \ No newline at end of file From f2ccc092f829074a7d89ba8a44ed1ea6d06e4fb9 Mon Sep 17 00:00:00 2001 From: anons-voip Date: Mon, 10 Jun 2024 21:19:12 -0400 Subject: [PATCH 05/10] minor formatting changes --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e78c2b1..8f94717 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# voipsms +# voipSMS Python flask app that uses voip.ms to manage a number of DID numbers for SMS. Can be used to get mostly anonymous texts and sms verification. @@ -19,6 +19,7 @@ Python flask app that uses voip.ms to manage a number of DID numbers for SMS. Ca 4. Set your config `vim config.json` + [Read about how to set up your config here!](./README.md#Config) 5. Start up the server @@ -30,9 +31,9 @@ Python flask app that uses voip.ms to manage a number of DID numbers for SMS. Ca The config used in this project uses the JSON format and expects a `username` and `password` Ex: - ``` +``` { "username":"voipms-email", "password":"voipms-api-password" } - ``` \ No newline at end of file +``` \ No newline at end of file From e71a8101e9972f7eac9eaf5d367d7741430d22a9 Mon Sep 17 00:00:00 2001 From: anons-voip Date: Mon, 10 Jun 2024 21:20:57 -0400 Subject: [PATCH 06/10] final format change --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8f94717..c98b40c 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ Python flask app that uses voip.ms to manage a number of DID numbers for SMS. Ca The config used in this project uses the JSON format and expects a `username` and `password` - Ex: +Ex: ``` { "username":"voipms-email", From f794d5de2ce8eff9777acbc3819282774c15b43a Mon Sep 17 00:00:00 2001 From: anons-voip Date: Mon, 10 Jun 2024 21:25:52 -0400 Subject: [PATCH 07/10] updating to use waitress --- app/server.py | 6 ++++++ requirements.txt | 1 + 2 files changed, 7 insertions(+) mode change 100644 => 100755 app/server.py diff --git a/app/server.py b/app/server.py old mode 100644 new mode 100755 index 63c9b3a..e96937b --- a/app/server.py +++ b/app/server.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 from flask import Flask, request, abort from voipms.api import Client import did, sms @@ -28,3 +29,8 @@ def set_sms(): abort(403) did = request.args.get('did') return sms.get_sms(client, did) + + +if __name__ == "__main__": + from waitress import serve + serve(app, host="0.0.0.0", port=8080) diff --git a/requirements.txt b/requirements.txt index ec88332..265f5ea 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ voipms-python flask +waitress requests \ No newline at end of file From 9f800b4f99be03d23b2c47d08b198de480a5936e Mon Sep 17 00:00:00 2001 From: anons-voip Date: Mon, 10 Jun 2024 21:35:24 -0400 Subject: [PATCH 08/10] added information about what the server serves --- README.md | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c98b40c..cd8c3c7 100644 --- a/README.md +++ b/README.md @@ -36,4 +36,33 @@ Ex: "username":"voipms-email", "password":"voipms-api-password" } -``` \ No newline at end of file +``` + + +## Endpoints + +### /numbers + +*Returns a list of numbers in use* + +Supports: GET + + Returns a list of javascript objects with keys: did (int as string), sms_available (boolean as int), mms_available (boolean as int) + +### /sms + +*Returns sms/mms messages for a given number* + +Supports: GET,POST +Expects: string `did` + + Returns a list of javascript objects with keys: message (string), did (int as string), contact (string as int), date (date as string), media (list) + +### /enablesms + +*[DISABLED] Enables sms feature for a given number* + +Supports: GET,POST +Expects: string `did` + + Returns a boolean as int \ No newline at end of file From e51fd5f5911edce03270eb91888c39e8971ee65c Mon Sep 17 00:00:00 2001 From: anons-voip Date: Mon, 10 Jun 2024 21:35:48 -0400 Subject: [PATCH 09/10] changed default site --- app/server.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/server.py b/app/server.py index e96937b..c8779a0 100755 --- a/app/server.py +++ b/app/server.py @@ -11,8 +11,8 @@ client = Client(conf["username"],conf["password"]) @app.route("/", methods=['GET']) -def hello_world(): - return "

Hello, World!

" +def default(): + return 'Check out the project' @app.route("/numbers", methods=['GET']) def get_numbers(): From 9f17500dcdfcbdce5a74df4331e66a3790a23a58 Mon Sep 17 00:00:00 2001 From: anons-voip Date: Mon, 10 Jun 2024 21:36:41 -0400 Subject: [PATCH 10/10] change up the run script to use waitress --- run | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/run b/run index 79c83e2..b7a2624 100755 --- a/run +++ b/run @@ -1,2 +1,3 @@ #!/bin/bash -flask --app app/server run --host=0.0.0.0 --port 8080 +#flask --app app/server run --host=0.0.0.0 --port 8080 +python3 app/server.py