From b200f61868435511cc0c2a7227c7c95a64394aac Mon Sep 17 00:00:00 2001 From: Arseniy Romenskiy Date: Sat, 27 Dec 2025 06:29:14 +0300 Subject: [PATCH] fix --- Start.py | 34 +++- server.log | 264 +++++++++++++++++++++++++++++ uset/admin/tesla.conf => wg_data/1 | 0 wg_data/1.conf | 9 + 4 files changed, 303 insertions(+), 4 deletions(-) rename uset/admin/tesla.conf => wg_data/1 (100%) create mode 100644 wg_data/1.conf diff --git a/Start.py b/Start.py index ee11eaf..f50ad20 100644 --- a/Start.py +++ b/Start.py @@ -48,7 +48,7 @@ def mi_ip(request): -UPLOAD_FOLDER = put + 'png/' +UPLOAD_FOLDER = put + 'wg_data/' app = Flask(__name__) app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER print(UPLOAD_FOLDER) @@ -57,7 +57,22 @@ print("SAS") if not os.path.isdir(UPLOAD_FOLDER): os.mkdir(UPLOAD_FOLDER) +def get_short_token(req): + # 1) стандартный вариант + auth = req.headers.get("Authorization", "") + if auth: + parts = auth.split(None, 1) # разделить по пробелам 1 раз + if len(parts) == 2 and parts[0].lower() == "bearer": + tok = parts[1].strip() + if tok: + return tok + # 2) совместимость со старым заголовком + tok = req.headers.get("short_token") + if tok: + return tok.strip() + + return None @app.route('/login/', methods=['GET', 'POST']) def login(): @@ -91,9 +106,9 @@ def login(): @app.route('/ls/', methods=['GET', 'POST']) def ls(): print("ls") - print(request.headers) - print(request.headers['short_token']) - uid = authentication(request.headers['short_token']) + token = get_short_token(request) + print(token) + uid = authentication(token) print(uid) if uid == None: print("/ls/' - 403") @@ -451,6 +466,17 @@ def ls_item_icon(): return "Нет изображения", 404 return "Нет такого предмета", 404 +@app.route("/download_conf/", methods=["GET", "POST"]) +def download_conf(item_id): + directory = app.config["UPLOAD_FOLDER"] + download_filename = f"conf_{item_id}.conf" # как будет называться при скачивании + + return send_from_directory( + directory=directory, + path=str(item_id), + as_attachment=True, + download_name=download_filename + ) @app.route('/ls_avatar_icon/', methods=['GET', 'POST']) def ls_avatar_icon(): diff --git a/server.log b/server.log index f095203..e8df1e0 100644 --- a/server.log +++ b/server.log @@ -1200,3 +1200,267 @@ Traceback (most recent call last): ~~~~~~~~~~~~^^^^^^^^^^^^^^^ KeyError: 'HTTP_SHORT_TOKEN' INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:09:57] "GET /ls/ HTTP/1.0" 500 - +INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.0.1.10:5000 +INFO:werkzeug:Press CTRL+C to quit +ERROR:Start:Exception on /ls/ [GET] +Traceback (most recent call last): + File "/usr/lib/python3/site-packages/flask/app.py", line 1511, in wsgi_app + response = self.full_dispatch_request() + File "/usr/lib/python3/site-packages/flask/app.py", line 919, in full_dispatch_request + rv = self.handle_user_exception(e) + File "/usr/lib/python3/site-packages/flask/app.py", line 917, in full_dispatch_request + rv = self.dispatch_request() + File "/usr/lib/python3/site-packages/flask/app.py", line 902, in dispatch_request + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ + File "/home/romenskiy2012/Документы/web/wg_2/Start.py", line 95, in ls + print(request.headers['short_token']) + ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "/usr/lib/python3/site-packages/werkzeug/datastructures/headers.py", line 628, in __getitem__ + return self._get_key(key) + ~~~~~~~~~~~~~^^^^^ + File "/usr/lib/python3/site-packages/werkzeug/datastructures/headers.py", line 639, in _get_key + return self.environ[f"HTTP_{key}"] # type: ignore[no-any-return] + ~~~~~~~~~~~~^^^^^^^^^^^^^^^ +KeyError: 'HTTP_SHORT_TOKEN' +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:28:09] "GET /ls/ HTTP/1.0" 500 - +INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.0.1.10:5000 +INFO:werkzeug:Press CTRL+C to quit +ERROR:Start:Exception on /ls/ [GET] +Traceback (most recent call last): + File "/usr/lib/python3/site-packages/flask/app.py", line 1511, in wsgi_app + response = self.full_dispatch_request() + File "/usr/lib/python3/site-packages/flask/app.py", line 919, in full_dispatch_request + rv = self.handle_user_exception(e) + File "/usr/lib/python3/site-packages/flask/app.py", line 917, in full_dispatch_request + rv = self.dispatch_request() + File "/usr/lib/python3/site-packages/flask/app.py", line 902, in dispatch_request + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ + File "/home/romenskiy2012/Документы/web/wg_2/Start.py", line 96, in ls + print(request.headers['short_token']) + ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "/usr/lib/python3/site-packages/werkzeug/datastructures/headers.py", line 628, in __getitem__ + return self._get_key(key) + ~~~~~~~~~~~~~^^^^^ + File "/usr/lib/python3/site-packages/werkzeug/datastructures/headers.py", line 639, in _get_key + return self.environ[f"HTTP_{key}"] # type: ignore[no-any-return] + ~~~~~~~~~~~~^^^^^^^^^^^^^^^ +KeyError: 'HTTP_SHORT_TOKEN' +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:29:31] "GET /ls/ HTTP/1.0" 500 - +INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.0.1.10:5000 +INFO:werkzeug:Press CTRL+C to quit +ERROR:Start:Exception on /ls/ [GET] +Traceback (most recent call last): + File "/usr/lib/python3/site-packages/flask/app.py", line 1511, in wsgi_app + response = self.full_dispatch_request() + File "/usr/lib/python3/site-packages/flask/app.py", line 919, in full_dispatch_request + rv = self.handle_user_exception(e) + File "/usr/lib/python3/site-packages/flask/app.py", line 917, in full_dispatch_request + rv = self.dispatch_request() + File "/usr/lib/python3/site-packages/flask/app.py", line 902, in dispatch_request + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ + File "/home/romenskiy2012/Документы/web/wg_2/Start.py", line 96, in ls + print(request.headers['short_token']) + ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "/usr/lib/python3/site-packages/werkzeug/datastructures/headers.py", line 628, in __getitem__ + return self._get_key(key) + ~~~~~~~~~~~~~^^^^^ + File "/usr/lib/python3/site-packages/werkzeug/datastructures/headers.py", line 639, in _get_key + return self.environ[f"HTTP_{key}"] # type: ignore[no-any-return] + ~~~~~~~~~~~~^^^^^^^^^^^^^^^ +KeyError: 'HTTP_SHORT_TOKEN' +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:30:00] "GET /ls/ HTTP/1.0" 500 - +INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.0.1.10:5000 +INFO:werkzeug:Press CTRL+C to quit +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:33:13] "GET /ls/ HTTP/1.0" 426 - +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:33:13] "GET /renew/ HTTP/1.0" 200 - +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:33:13] "GET /ls/ HTTP/1.0" 200 - +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:33:23] "GET /download_conf/1 HTTP/1.0" 404 - +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:38:22] "GET /download_conf/1 HTTP/1.0" 404 - +INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.0.1.10:5000 +INFO:werkzeug:Press CTRL+C to quit +ERROR:Start:Exception on /download_conf/1 [GET] +Traceback (most recent call last): + File "/usr/lib/python3/site-packages/flask/app.py", line 1511, in wsgi_app + response = self.full_dispatch_request() + File "/usr/lib/python3/site-packages/flask/app.py", line 919, in full_dispatch_request + rv = self.handle_user_exception(e) + File "/usr/lib/python3/site-packages/flask/app.py", line 917, in full_dispatch_request + rv = self.dispatch_request() + File "/usr/lib/python3/site-packages/flask/app.py", line 902, in dispatch_request + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ + File "/home/romenskiy2012/Документы/web/wg_2/Start.py", line 471, in download_conf + return send_from_directory(directory=directory+"wg_data", path=str(item_id)) + ^^^^^^^^^ +NameError: name 'directory' is not defined +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:40:30] "GET /download_conf/1 HTTP/1.0" 500 - +INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.0.1.10:5000 +INFO:werkzeug:Press CTRL+C to quit +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:41:26] "GET /download_conf/1 HTTP/1.0" 404 - +INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.0.1.10:5000 +INFO:werkzeug:Press CTRL+C to quit +ERROR:Start:Exception on /download_conf/1 [GET] +Traceback (most recent call last): + File "/usr/lib/python3/site-packages/flask/app.py", line 1511, in wsgi_app + response = self.full_dispatch_request() + File "/usr/lib/python3/site-packages/flask/app.py", line 919, in full_dispatch_request + rv = self.handle_user_exception(e) + File "/usr/lib/python3/site-packages/flask/app.py", line 917, in full_dispatch_request + rv = self.dispatch_request() + File "/usr/lib/python3/site-packages/flask/app.py", line 902, in dispatch_request + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ + File "/home/romenskiy2012/Документы/web/wg_2/Start.py", line 472, in download_conf + return send_from_directory(directory=directory+"wg_data", path=str(item_id+".conf")) + ~~~~~~~^~~~~~~~ +TypeError: unsupported operand type(s) for +: 'int' and 'str' +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:41:56] "GET /download_conf/1 HTTP/1.0" 500 - +INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.0.1.10:5000 +INFO:werkzeug:Press CTRL+C to quit +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:42:25] "GET /download_conf/1 HTTP/1.0" 404 - +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:42:26] "GET /download_conf/1 HTTP/1.0" 404 - +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:42:26] "GET /download_conf/1 HTTP/1.0" 404 - +INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.0.1.10:5000 +INFO:werkzeug:Press CTRL+C to quit +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:45:22] "GET /download_conf/1 HTTP/1.0" 200 - +INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.0.1.10:5000 +INFO:werkzeug:Press CTRL+C to quit +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:49:06] "GET /ls/ HTTP/1.0" 200 - +ERROR:Start:Exception on /download_conf/1 [GET] +Traceback (most recent call last): + File "/usr/lib/python3/site-packages/flask/app.py", line 1511, in wsgi_app + response = self.full_dispatch_request() + File "/usr/lib/python3/site-packages/flask/app.py", line 919, in full_dispatch_request + rv = self.handle_user_exception(e) + File "/usr/lib/python3/site-packages/flask/app.py", line 917, in full_dispatch_request + rv = self.dispatch_request() + File "/usr/lib/python3/site-packages/flask/app.py", line 902, in dispatch_request + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ + File "/home/romenskiy2012/Документы/web/wg_2/Start.py", line 474, in download_conf + return send_from_directory( + directory=directory, + ...<2 lines>... + download_name=download_filename, + ) + File "/usr/lib/python3/site-packages/flask/helpers.py", line 572, in send_from_directory + return werkzeug.utils.send_from_directory( # type: ignore[return-value] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + directory, path, **_prepare_send_file_kwargs(**kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "/usr/lib/python3/site-packages/werkzeug/utils.py", line 557, in send_from_directory + path_str = safe_join(os.fspath(directory), os.fspath(path)) + ~~~~~~~~~^^^^^^ +TypeError: expected str, bytes or os.PathLike object, not int +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:49:09] "GET /download_conf/1 HTTP/1.0" 500 - +ERROR:Start:Exception on /download_conf/1 [GET] +Traceback (most recent call last): + File "/usr/lib/python3/site-packages/flask/app.py", line 1511, in wsgi_app + response = self.full_dispatch_request() + File "/usr/lib/python3/site-packages/flask/app.py", line 919, in full_dispatch_request + rv = self.handle_user_exception(e) + File "/usr/lib/python3/site-packages/flask/app.py", line 917, in full_dispatch_request + rv = self.dispatch_request() + File "/usr/lib/python3/site-packages/flask/app.py", line 902, in dispatch_request + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ + File "/home/romenskiy2012/Документы/web/wg_2/Start.py", line 474, in download_conf + return send_from_directory( + directory=directory, + ...<2 lines>... + download_name=download_filename, + ) + File "/usr/lib/python3/site-packages/flask/helpers.py", line 572, in send_from_directory + return werkzeug.utils.send_from_directory( # type: ignore[return-value] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + directory, path, **_prepare_send_file_kwargs(**kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "/usr/lib/python3/site-packages/werkzeug/utils.py", line 557, in send_from_directory + path_str = safe_join(os.fspath(directory), os.fspath(path)) + ~~~~~~~~~^^^^^^ +TypeError: expected str, bytes or os.PathLike object, not int +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:49:19] "GET /download_conf/1 HTTP/1.0" 500 - +INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.0.1.10:5000 +INFO:werkzeug:Press CTRL+C to quit +ERROR:Start:Exception on /download_conf/1 [GET] +Traceback (most recent call last): + File "/usr/lib/python3/site-packages/flask/app.py", line 1511, in wsgi_app + response = self.full_dispatch_request() + File "/usr/lib/python3/site-packages/flask/app.py", line 919, in full_dispatch_request + rv = self.handle_user_exception(e) + File "/usr/lib/python3/site-packages/flask/app.py", line 917, in full_dispatch_request + rv = self.dispatch_request() + File "/usr/lib/python3/site-packages/flask/app.py", line 902, in dispatch_request + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ + File "/home/romenskiy2012/Документы/web/wg_2/Start.py", line 474, in download_conf + return send_from_directory( + directory=directory, + ...<2 lines>... + download_name=download_filename + ) + File "/usr/lib/python3/site-packages/flask/helpers.py", line 572, in send_from_directory + return werkzeug.utils.send_from_directory( # type: ignore[return-value] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + directory, path, **_prepare_send_file_kwargs(**kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "/usr/lib/python3/site-packages/werkzeug/utils.py", line 557, in send_from_directory + path_str = safe_join(os.fspath(directory), os.fspath(path)) + ~~~~~~~~~^^^^^^ +TypeError: expected str, bytes or os.PathLike object, not int +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:50:19] "GET /download_conf/1 HTTP/1.0" 500 - +INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5000 + * Running on http://10.0.1.10:5000 +INFO:werkzeug:Press CTRL+C to quit +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:51:48] "GET /download_conf/1 HTTP/1.0" 200 - +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:51:52] "GET /ls/ HTTP/1.0" 200 - +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:51:53] "GET /download_conf/1 HTTP/1.0" 200 - +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:52:00] "GET /ls/ HTTP/1.0" 200 - +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:52:51] "GET /ls/ HTTP/1.0" 426 - +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:52:51] "GET /renew/ HTTP/1.0" 200 - +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:52:52] "GET /ls/ HTTP/1.0" 200 - +INFO:werkzeug:127.0.0.1 - - [27/Dec/2025 05:54:02] "GET /download_conf/1 HTTP/1.0" 200 - diff --git a/uset/admin/tesla.conf b/wg_data/1 similarity index 100% rename from uset/admin/tesla.conf rename to wg_data/1 diff --git a/wg_data/1.conf b/wg_data/1.conf new file mode 100644 index 0000000..6ef5905 --- /dev/null +++ b/wg_data/1.conf @@ -0,0 +1,9 @@ +[Interface] +PrivateKey = gAmqfD4pbhJio9j5Ubr0bgHxtBkDSGBJtVQ/TPXtCEU= +Address = 10.0.21.10/32 + +[Peer] +PublicKey = C2HmaZ4h3aQicjEZpDljtXyeq1DKVdiCmv11ZZiTUDw= +AllowedIPs = 10.0.20.0/24, 10.0.21.1/32 +Endpoint = 95.31.187.233:51821 +PersistentKeepalive = 15