This commit is contained in:
Arseniy Romenskiy 2025-12-27 06:29:14 +03:00
parent 96fedf1d3b
commit b200f61868
4 changed files with 303 additions and 4 deletions

View file

@ -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/<int:item_id>", 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():

View file

@ -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 -

9
wg_data/1.conf Normal file
View file

@ -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