Код, который вы предоставили, не является полностью функционирующим и не содержит подключения к серверу Flask. Однако, для настройки проброса порта и использования его для доступа к URL, вы можете внести следующие изменения:
1. Установите библиотеку `asyncssh`, выполнив команду `pip install asyncssh` в командной строке, чтобы убедиться, что она установлена.
2. Исправьте код функции `ssh_port_forwarding` следующим образом:
```python
import asyncssh
async def ssh_port_forwarding(hostname):
async with asyncssh.connect(
hostname,
username="root",
password="your_password",
known_hosts=None
) as conn:
listener = await conn.forward_local_port('0.0.0.0', 1212, '192.168.0.8', 8080)
return listener.get_port()
```
Замените `'your_password'` на фактический пароль для пользователя `root` на удаленном сервере.
3. Измените код маршрута `/connect` следующим образом:
```python
from flask import Flask, request, redirect
import asyncio
app = Flask(__name__)
@app.route("/connect")
def connect():
hostname = request.args.get("station")
loop = asyncio.get_event_loop()
port = loop.run_until_complete(ssh_port_forwarding(hostname))
return redirect(f"http://localhost:{port}/index.htm")
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
```
Здесь мы использовали `request.args.get("station")`, чтобы получить значение параметра `station` из URL-адреса.
4. Запустите ваш Flask-сервер при помощи команды `python your_app.py`, где `your_app.py` - имя вашего файла приложения.
Теперь, при переходе по адресу `/connect?station=10.16.0.49`, Flask-сервер устанавливает проброс порта для указанного хоста и перенаправляет на страницу `index.htm` на этом хосте. Убедитесь, что адрес и порт в функции `ssh_port_forwarding` правильные и соответствуют вашим требованиям, и что ваш сервер Flask имеет доступ к ресурсу, который вы пытаетесь отобразить.