Сохранение изображения со страницы портала Captive закрывает всплывающее окно и WLAN.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Сохранение изображения со страницы портала Captive закрывает всплывающее окно и WLAN.

Сообщение Anonymous »

фон < /h2>
Я разрабатываю физическое приложение на основе Python на Raspberry Pi 4 с основным пользовательским интерфейсом, в конце которого я представляю пользователю с фотографией для загрузки. Для этого представлен QR -код, который привлечет пользователя на WLAN, что PI -хосты. На странице портала в неволе показывается изображение (когда на самом деле появляется портал птенца), которое затем можно сохранить с помощью дальнего пресса. Я делаю это таким образом вместо того, чтобы просто служить файлу непосредственно в качестве загрузки, потому что я хочу, чтобы фотография оказалась в сфотографии пользователя и - по крайней мере на iOS - когда вы обслуживаете изображение в качестве загрузки, она сохраняет файлы . /> На устройстве iOS (еще не тестировано на Android), когда отображается окно портала капитита, и пользователь длинных прессов и выбирает опцию для сохранения изображения: < /p>

Портальное окно портала исчезает < /li>
. Сохраняется < /li>
< /ol>
Если пользователь выбирает кнопку «Отмена» в правом верхнем углу пользовательского интерфейса портала «Капля», решит продолжать использовать сеть «без Интернета», а затем загружает страницу намеренно в браузер, желаемая функциональность полностью работает. Верхняя правая справа от пользовательского интерфейса меняется на что -то вроде «ОК» или «Готово». Но я также знаю, что страницы PAPLITE Portal поддерживают отправку и получение HTTP -запросов/ответов, а также направление на новые страницы и т. Д., До того, как устройство достигнет фактического Интернета, поэтому я не совсем уверен, почему это проблема. Тем не менее, я понятия не имею, что делаю. Я надеюсь, что кто -то здесь делает и может посоветовать мне, как достичь моей цели, либо почему это невозможно. Я получу исправление.#!/bin/bash

# Stop existing services
sudo systemctl stop hostapd.service
sudo systemctl stop dnsmasq.service

# Clear existing interface configuration
sudo ip addr flush dev wlan0
sudo ip link set wlan0 down

# Configure the interface
sudo ip addr add 192.168.4.1/24 dev wlan0
sudo ip link set wlan0 up

# Update dnsmasq configuration for captive portal
sudo tee /etc/dnsmasq.conf > /dev/null /dev/null

echo "WiFi hotspot configured with captive portal DNS interception"
echo "All DNS queries will be redirected to 192.168.4.1"
echo "HTTP and HTTPS traffic will be redirected to port 5000"

Вот как я определяю свои правила URL-адреса (у меня есть класс, который я определил, чтобы сделать это, чтобы я мог запустить его как вторичный поток. Следовательно, все самостоятельно s):
# Main content endpoints
self._app.add_url_rule('/', endpoint='index', view_func=self._image_delivery)
self._app.add_url_rule(
f'/{ENDPOINT_FINAL_PRODUCT_UPDATE}', methods=['POST'], view_func=self._update_deliverable
)

# Captive portal detection endpoints - ALL redirect to main page to show content
self._app.add_url_rule('/hotspot-detect.html', endpoint='hotspot_detect', view_func=self._redirect_to_main)
self._app.add_url_rule('/library/test/success.html', endpoint='library_test_success',
view_func=self._redirect_to_main)
self._app.add_url_rule('/canonical.html', endpoint='canonical', view_func=self._redirect_to_main)
self._app.add_url_rule('/kindle-wifi/wifistub.html', endpoint='kindle', view_func=self._redirect_to_main)

# Keep these as status responses since they're not typically used for initial captive portal detection
self._app.add_url_rule('/generate_204', endpoint='generate_204', view_func=self._generate_204)
self._app.add_url_rule('/gen_204', endpoint='gen_204', view_func=self._generate_204)
self._app.add_url_rule('/ncsi.txt', endpoint='ncsi', view_func=self._ncsi_response)
self._app.add_url_rule('/connecttest.txt', endpoint='connecttest', view_func=self._connecttest_response)
self._app.add_url_rule('/success.txt', endpoint='success_txt', view_func=self._success_txt)

# Catch-all route for any unhandled requests - redirect to main page
self._app.add_url_rule('/', endpoint='catch_all', view_func=self._catch_all_redirect)
< /code>
и соответствующие функции представления: < /p>
def _redirect_to_main(self):
"""Redirects captive portal detection requests to main page so users see content"""
self._logger.debug("Captive portal detection endpoint called - redirecting to main page")
# Return a redirect response to the main page
from flask import redirect, url_for
return redirect(url_for('index'))

def _image_delivery(self):
"""Serves the page where the final product can be downloaded"""
self._logger.debug(f"'image_delivery' endpoint called. deliverable_filename: {self.deliverable_filename}")
return render_template('index.html', filename=self.deliverable_filename)

def _catch_all_redirect(self, path):
"""Redirects any unhandled requests to the main captive portal page"""
self._logger.debug(f"Catch-all redirect called for path: {path}")
# For any unrecognized path, serve the main page
return self._image_delivery()


Подробнее здесь: https://stackoverflow.com/questions/797 ... nnection-w
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»