From 6cda6461ccccb273bb02105996761028d0c9db4e Mon Sep 17 00:00:00 2001 From: Charles Le Maux Date: Sat, 29 Jun 2024 17:13:24 +0100 Subject: [PATCH] [V2+] Secrets added. (For local testing purposes.) [+] Fixed SSL/TLS issues. Signed-off-by: Charles Le Maux --- .gitignore | 1 + api_sender.html | 2 +- app.py | 1 + firebase_manager.py | 4 ++-- generic_executor.py | 2 +- secrets/__init__.py | 0 secrets/fullchain.pem | 28 ++++++++++++++++++++++++++++ secrets/privkey.pem | 29 +++++++++++++++++++++++++++++ secrets/servii.json | 13 +++++++++++++ unit_test.py | 7 ------- 10 files changed, 76 insertions(+), 11 deletions(-) create mode 100644 secrets/__init__.py create mode 100644 secrets/fullchain.pem create mode 100644 secrets/privkey.pem create mode 100644 secrets/servii.json diff --git a/.gitignore b/.gitignore index bfb5700..530d5a7 100644 --- a/.gitignore +++ b/.gitignore @@ -164,6 +164,7 @@ cython_debug/ /__pycache__/ /servers/ /users/ +!/secrets/ unit_test.py logs.txt !*.py \ No newline at end of file diff --git a/api_sender.html b/api_sender.html index 296816d..e8cb9ad 100644 --- a/api_sender.html +++ b/api_sender.html @@ -50,7 +50,7 @@ document.addEventListener('DOMContentLoaded', () => { const form = event.target.closest('form'); const action = button.dataset.action; const token = "gqZN3eCHF3V2er3Py3rlgk8u2t83"; - const framework = "paper" + const framework = "paper"; const subdomain = document.getElementById('subdomain').value; const email = document.getElementById('accountEmail').value; const port = document.getElementById('accountPort').value; diff --git a/app.py b/app.py index 88e79a2..8885d5d 100644 --- a/app.py +++ b/app.py @@ -108,4 +108,5 @@ def dynamic_route_handler(path): if __name__ == '__main__': + ssl_context = ('/fullchain.pem', '/privkey.pem') app.run(host='0.0.0.0', port=3000, debug=False) diff --git a/firebase_manager.py b/firebase_manager.py index 016cc36..284ce77 100644 --- a/firebase_manager.py +++ b/firebase_manager.py @@ -5,7 +5,7 @@ import jwt from firebase_admin import auth, credentials, firestore from google.api_core.exceptions import Aborted, DataLoss, NotFound, OutOfRange, PermissionDenied, ResourceExhausted -cred = credentials.Certificate('servii.json') +cred = credentials.Certificate('secrets/servii.json') app = firebase_admin.initialize_app(cred) firestore_database = firestore.client() @@ -55,7 +55,7 @@ def user_field_exists(user_id: str, field: str) -> bool: def server_name_taken(user_id: str, server_name: str) -> bool: servers = firestore_database.collection('users').document(user_id).collection('servers') - query = servers.where('name', '==', server_name) + query = servers.where(field_path='name', op_string='==', value=server_name) for _ in query.stream(): return True return False diff --git a/generic_executor.py b/generic_executor.py index 41591f0..40199ef 100644 --- a/generic_executor.py +++ b/generic_executor.py @@ -13,7 +13,7 @@ def set_subdomain(user: UserRecord, subdomain: str) -> tuple[HTTPStatus, str or user_id: str = user.uid store = firebase_manager.firestore_database _users = store.collection("users") - query = _users.where("subdomain", "==", subdomain) + query = _users.where(field_path="subdomain", op_string="==", value=subdomain) for _ in query.stream(): return HTTPStatus.ALREADY_REPORTED, "Subdomain already associated." try: diff --git a/secrets/__init__.py b/secrets/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/secrets/fullchain.pem b/secrets/fullchain.pem new file mode 100644 index 0000000..e6fd740 --- /dev/null +++ b/secrets/fullchain.pem @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE----- +MIIEnjCCA4agAwIBAgIUKkKMHiO7mKTfBTCRwB+rxz3H0/8wDQYJKoZIhvcNAQEL +BQAwgYsxCzAJBgNVBAYTAlVTMRkwFwYDVQQKExBDbG91ZEZsYXJlLCBJbmMuMTQw +MgYDVQQLEytDbG91ZEZsYXJlIE9yaWdpbiBTU0wgQ2VydGlmaWNhdGUgQXV0aG9y +aXR5MRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlh +MB4XDTI0MDYyNzAyMzAwMFoXDTM5MDYyNDAyMzAwMFowYjEZMBcGA1UEChMQQ2xv +dWRGbGFyZSwgSW5jLjEdMBsGA1UECxMUQ2xvdWRGbGFyZSBPcmlnaW4gQ0ExJjAk +BgNVBAMTHUNsb3VkRmxhcmUgT3JpZ2luIENlcnRpZmljYXRlMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtTmSS45hluTCz7S53kiQ0NM0Yvi4XC2SX1o9 +auLIAauEJn1qtQIRis+302yzCCAUK5q8ZC9CRSMp75POgXHZC1ao9eYvxEyNeR+t +LUyxCoFaGpDnDVdtvXr68gf1Py+5N3RE4jaRC5PNFnatjioZ+ikcX2s1srGul+8I +TYekDt/qZ8eimwgWzkitjWBtOefmUtThU+fggnkAjj4W6N8+rVoMvG6Fzjc313B9 +vl92DeVG9PWwVTt4o27ghqp5z1xaUxzhBgG6cexGQWvERxBnnAQJBYTr1w+7JfBz +Dq9y2H/G0pgJ1dbr5KvxjO4xOpBhLXRkAHtWTnOgmKx74omJvwIDAQABo4IBIDCC +ARwwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD +ATAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTpSH2JfEk+AZZ+DJH4o9HMKzKVZDAf +BgNVHSMEGDAWgBQk6FNXXXw0QIep65TbuuEWePwppDBABggrBgEFBQcBAQQ0MDIw +MAYIKwYBBQUHMAGGJGh0dHA6Ly9vY3NwLmNsb3VkZmxhcmUuY29tL29yaWdpbl9j +YTAhBgNVHREEGjAYggsqLnNlcnZpaS5mcoIJc2VydmlpLmZyMDgGA1UdHwQxMC8w +LaAroCmGJ2h0dHA6Ly9jcmwuY2xvdWRmbGFyZS5jb20vb3JpZ2luX2NhLmNybDAN +BgkqhkiG9w0BAQsFAAOCAQEARNoc5us+gbKmyGzoGUmv76SdfqVmvPFrEswEt4vz +MIIxLqPvQQ3yw6FD/E/cV9AwEkX2ZXRQLCrW5I2qP56dWML6NqFvRBCP/QdBIGW/ +jzzaJqiPFpLcx//FuKnH+l/hRxdL3W/4Gkl1FcennvpEXooKurPjziYGYmvAiaTg +uYc+t2Hg7dlJLJm/a2b6g07DYQjDlaodlZ1pW/V7RtTgAjVzxhvkmxhaEQElLz9g +miIDfDzhGiYWRwK4kAomXCJPoWIN4EBomuBtVbSdd7a9jW+gFRvz0jrmdxGQCCMf +Q0GTQjkJ20Qj/wZw/3qvXGrNgKQvb5wYhXMlyCacwu0+zw== +-----END CERTIFICATE----- + diff --git a/secrets/privkey.pem b/secrets/privkey.pem new file mode 100644 index 0000000..0db7d73 --- /dev/null +++ b/secrets/privkey.pem @@ -0,0 +1,29 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC1OZJLjmGW5MLP +tLneSJDQ0zRi+LhcLZJfWj1q4sgBq4QmfWq1AhGKz7fTbLMIIBQrmrxkL0JFIynv +k86BcdkLVqj15i/ETI15H60tTLEKgVoakOcNV229evryB/U/L7k3dETiNpELk80W +dq2OKhn6KRxfazWysa6X7whNh6QO3+pnx6KbCBbOSK2NYG055+ZS1OFT5+CCeQCO +Phbo3z6tWgy8boXONzfXcH2+X3YN5Ub09bBVO3ijbuCGqnnPXFpTHOEGAbpx7EZB +a8RHEGecBAkFhOvXD7sl8HMOr3LYf8bSmAnV1uvkq/GM7jE6kGEtdGQAe1ZOc6CY +rHviiYm/AgMBAAECggEAG1FVWyxYS52qPBMbHYXExqW/tNeXOtXnxZXdwjnzOkU3 +g3HOXwCz0j/jjuxIxIXJZJVLprJ1A+T8ElAuhda6h/oFOCP9uVJs1QBQY4629UVw +ZqbHHXy7Xx+lqkxGzMKN4e0V4R+ml58tACDdopt4FPyTeVK44nnkPqTalI1IzrDy +gj8YkN8DNy5CdA6pjdCbHt97Y21GQ/4h8GoccFfwodl6BOlMOtQH36mYWXz7byPT ++BuEQqV0y9cxlcaxSfp1TeW8t24KkM2sSpBqJkfS5DBVEPAJGAZ73+f7oHWtMvWJ +rKkKp6098g0Y2mJ2PcsFltX4Z8D+g/mBHTa+BAeLEQKBgQD6Rg4dtjPuUH3T5URS +/4e70Zze2C9CZ9MrrvjYB1Qwjy8Aw/dTSmMH7mIL8bg+NQQeuuemxx9zd8BLEiXN +Y3nIKtD4zzqGVDj2XrHbQ5M7qxB5bTwV+HV/lDuAhaTWAnGy92LKxtt5PdfCwort +CT9woFabSYzqGj4Eb+7mVaTm5wKBgQC5XxKC2PikZ60B3cYUW/SZvT6wSbDZ+7+e +Bl9sD/8SHS48zryQcsVfUHB5pim4h93w5yuy5V4j3tk5+yhrabBeegA5Pcf0hzbY +x+MsCLLBpLvdt5yCbSNRZ3ivQJRM2bcy6+dXjduO3SsgDyd3s8IYH/rYqJc+FCC/ +TiM2EJjjaQKBgQCVS+sp0EJEXOHi4LaUaHjZEt7olMAEdhkjyvoJLL4NRaz9YOmO +VyaiWZNFmsmU2l1903NTKx/Y6svcPJQuZLQGM3x7oGtCLMXaOn0Q1svi4VYviXk5 +hgDZvVyNe6vsOoMHBsp5Oo08Uyb9uL3VTxn4Hr3rXsHf+Q2b6gXyg46eawKBgHe7 +s/42XSv8F2CcOeROnQhsl0BQ6N1z4YoVva7UCkJN/N6j/mIi79+n2m6I6Gvbvnxr +JOuxgYQT3iW4V5xBsPzlOp2+jRgh+kg9nDuGBshTOlF01q/cBLMA7Y/tW5zkB5Pp +kg0YgNeffcqAX1LPFjB0/5bQFpivcZN/yfiS8d35AoGAUO/bTx6aPqqyPUFl1QjP +rtlQFWey8J5kliOyrafmlI7Lf6uihUXSu/RFdK5yRTzhj9rat9hmDwUJ+b2bFtzd +95teLHHMmbhiN2ZcDAFfRwUWQqfrf3JEmOFrGSI7wXKtUouOt7IjDpx7a3YGcduB +ie71IHpZX8A+6yb3J79T6j4= +-----END PRIVATE KEY----- + diff --git a/secrets/servii.json b/secrets/servii.json new file mode 100644 index 0000000..da702e1 --- /dev/null +++ b/secrets/servii.json @@ -0,0 +1,13 @@ +{ + "type": "service_account", + "project_id": "servi-e6705", + "private_key_id": "f68b7cfdc507b94b8b55137d8f1810b34be52868", + "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCVcjYV3J0aAoaC\njJfni2hWTyvBtJVUCT5XF/xAkJ9SEgZM+RpJBYMac8wnh+37Y4yBQc76K+0ZEmRT\noXx8Eb0vmz0sTG3armchmbfC1UZCn0AI9vR8vPSBev/+sCWxWri+6vCpy3fnpJ4o\n4ZIhgr8TEkQ6yi3pKsRXBJYbZXoj+CVmYVAYjYBYFZQwwl/3OUAZr6TFltISqcII\nlxnm2PUV7mEe++S6K515kN69mLEV5S+ylQljzDOiZihz6ETt8HRa/SPArW7RpyJZ\n8rfO1IuncvF1m2IEFrVWWwGsYuwSNQapOae3ngqOkYbyVJ7HqSIj06YftA+0tNpW\nV1gOmYLlAgMBAAECggEAAU7kvRgJrd+SSTaffVsiy/95NFUOBW/Va4uJYhCWmHA2\nKvquPi/ks2+c2A/ilSqVheKP1l3+kYEm0VEFmVUla1eoAHbNzvF9z2eFmj0KexYH\nbO7zDCTpJgKUciidN9pT++OQYaywP54GvoqnO6M4LXcqyjsYxJJsFlkOiXc2sAfV\nFf5E9gpBut+580y64q0A4b4eLxZ2bwT4oyYzKQp4hDX92Ycd3/dPSbTDAH2eltD5\nrhMa6oQK6tEL+De631qoA+dLrU/exZ5rqNapltz+hMGOzWIEBLBOzburGrjiTcns\nbZn7E5bXe/NjX8e2yMiKrjCwqv31cX6wD5uIaIWCuQKBgQDKPKcFhRp9cgCwevpL\nXjFHx/0y5BDtUIvrIo+F0O3UXhxJd9IW+D0BXgSfKXzREra4b08Pk+pmjm6k2dbi\n/v5kM7nE2dkc6UMAouLRgTv3yky8F1fCC5pQFPb/uZt0OtvFox18DVDEeFd7XJCa\nBwDHQuEDDchRgK3vgO2+midJ/QKBgQC9LNorlVgdwimfYB435Jt5sw7NVS2PT43j\nVvAfx5urxObMuSvjG8BwFPWk6A9YOU65ecdsG5o1f3a1gsYyvM9g0SSblyt9uWLP\n68xXiq2Wejl7gKyZjWbFqFNs++JwMaSq+r1YHWe+ohXRf5LW3tMlj4zgkfveUlAj\n1j9HauNdCQKBgQCfLuiElsVIEnDqeJIEuuptRsRMx2lvcmP/u59exBo/e6gmR/MM\n824JYnie0ygU5Pb/61U+vL3W5au/hFv5Jp8UPgauJI8Zi52apZuFLoUGQKzvrCv+\nZ+WZvTbCCNWMwjt0sDSoDU8Spmqthimno3WAYmr8XV/cjz3ZdBEuYuYj/QKBgEhO\nEWFhJpnRMYl5+nLQjOBaIQk4Sj6hYJEJFKSA7a4chz6uc+jNHaN5T15lWCAXX1Cj\nDCb08d8KxfugbVLNOdI+feh+QiA+sFbaQHMhTTHbq4bZ6p6SHjrkGGbqa2UIhHDZ\nf29jZdjGKOK3CQ/ZgQi1MlpPUd5qxbi81djdMOPJAoGBAIBTqrCN2PC++TnmOdsx\nGKWfdw4LDwIRJYK0wcoxemmfJDdJ4zKUZbwfGDFGjLjl2h07NWl5CKo/gskb70JM\nKksCMImraA7ipZrl9B+++6x/ovp2QuaEwXRmBHJm0/Ys2BZlgB/Tknj0tuiPkqZ0\n8pK9DpR/a6vbW5KsHp9D+6Wc\n-----END PRIVATE KEY-----\n", + "client_email": "firebase-adminsdk-ijgb2@servi-e6705.iam.gserviceaccount.com", + "client_id": "107003409354710428353", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-ijgb2%40servi-e6705.iam.gserviceaccount.com", + "universe_domain": "googleapis.com" +} diff --git a/unit_test.py b/unit_test.py index 01f4f4b..e69de29 100644 --- a/unit_test.py +++ b/unit_test.py @@ -1,7 +0,0 @@ -from firebase_admin import functions - -import file_manager -import firebase_manager - - -file_manager.append_stream_config(3005, "antho") \ No newline at end of file