mirror of
https://github.com/amnezia-vpn/amnezia-client.git
synced 2026-05-17 08:16:06 +03:00
fixed linux open link
This commit is contained in:
@@ -1,10 +1,9 @@
|
||||
#!/usr/bin/env xdg-open
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=AmneziaVPN
|
||||
Version=1.0
|
||||
Comment=Client of your self-hosted VPN
|
||||
Exec=AmneziaVPN %u
|
||||
Exec=/opt/AmneziaVPN/bin/AmneziaVPN %u
|
||||
Icon=/usr/share/pixmaps/AmneziaVPN.png
|
||||
Categories=Network;Qt;Security;
|
||||
MimeType=x-scheme-handler/vpn;
|
||||
|
||||
@@ -30,6 +30,13 @@ if sudo systemctl is-active --quiet $APP_NAME; then
|
||||
sudo rm -rf /etc/systemd/system/$APP_NAME.service >> $LOG_FILE
|
||||
fi
|
||||
|
||||
# Absolute Exec= in .desktop: Firefox/portal invoke handlers with a minimal PATH.
|
||||
DESKTOP_IN_APP="$APP_PATH/$APP_NAME.desktop"
|
||||
if [ -f "$DESKTOP_IN_APP" ]; then
|
||||
sudo sed -i "s|^Exec=.*|Exec=$APP_PATH/bin/$APP_NAME %u|" "$DESKTOP_IN_APP" >> $LOG_FILE 2>&1 || true
|
||||
sudo sed -i '1{/^#!\/usr\/bin\/env xdg-open$/d;}' "$DESKTOP_IN_APP" >> $LOG_FILE 2>&1 || true
|
||||
fi
|
||||
|
||||
sudo chmod -R a-w $APP_PATH/
|
||||
|
||||
sudo cp $APP_PATH/$APP_NAME.service /etc/systemd/system/ >> $LOG_FILE
|
||||
@@ -44,8 +51,33 @@ sudo cp $APP_PATH/$APP_NAME.desktop /usr/share/applications/ >> $LOG_FILE
|
||||
sudo cp $APP_PATH/$APP_NAME.png /usr/share/pixmaps/ >> $LOG_FILE
|
||||
sudo chmod 555 /usr/share/applications/$APP_NAME.desktop >> $LOG_FILE
|
||||
|
||||
if command -v xdg-mime &> /dev/null; then
|
||||
xdg-mime default $APP_NAME.desktop x-scheme-handler/vpn >> $LOG_FILE 2>&1 || true
|
||||
if command -v update-desktop-database &> /dev/null; then
|
||||
sudo update-desktop-database /usr/share/applications >> $LOG_FILE 2>&1 || true
|
||||
fi
|
||||
|
||||
register_vpn_scheme_for_user() {
|
||||
local user="$1"
|
||||
if [ -z "$user" ] || [ "$user" = "root" ]; then
|
||||
return
|
||||
fi
|
||||
if ! command -v xdg-mime &> /dev/null; then
|
||||
return
|
||||
fi
|
||||
local home
|
||||
home=$(getent passwd "$user" | cut -d: -f6)
|
||||
if [ -z "$home" ] || [ ! -d "$home" ]; then
|
||||
echo "skip xdg-mime for $user: no home" >> $LOG_FILE
|
||||
return
|
||||
fi
|
||||
echo "xdg-mime default for user $user" >> $LOG_FILE
|
||||
sudo -u "$user" env HOME="$home" \
|
||||
xdg-mime default "$APP_NAME.desktop" x-scheme-handler/vpn >> $LOG_FILE 2>&1 || true
|
||||
}
|
||||
|
||||
if [ -n "$SUDO_USER" ] && [ "$SUDO_USER" != "root" ]; then
|
||||
register_vpn_scheme_for_user "$SUDO_USER"
|
||||
elif [ -n "$USER" ] && [ "$USER" != "root" ]; then
|
||||
register_vpn_scheme_for_user "$USER"
|
||||
fi
|
||||
|
||||
echo "user desktop creation loop ended" >> $LOG_FILE
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
# Демо: `vpn://` из браузера (как `tg://`)
|
||||
|
||||
Браузер показывает диалог «разрешить сайту открывать ссылки **vpn** через приложение» только если:
|
||||
|
||||
1. Страница открыта по **HTTPS** (или `localhost` в части конфигураций; для надёжного сценария как у `tlgrm.ru` — **настоящий TLS**).
|
||||
2. В ОС зарегистрирован обработчик схемы **`vpn`** → AmneziaVPN (см. [AH-355-deep-link-approval-and-operations.md](../../docs/plans/AH-355-deep-link-approval-and-operations.md)).
|
||||
3. Переход на `vpn://` сделан **жестом пользователя** (клик по ссылке / кнопке), а не только автозапуск при загрузке страницы (политики браузера могут блокировать).
|
||||
|
||||
## Файлы
|
||||
|
||||
- [vpn-deeplink-demo.html](vpn-deeplink-demo.html) — поле для вставки/редактирования `vpn://…`, кнопки открытия и **лог на странице** (+ дублирование в консоль браузера). Открывайте **по HTTPS**.
|
||||
|
||||
## Windows: регистрация `vpn`
|
||||
|
||||
Один раз запустите установленный AmneziaVPN — при первом запуске клиент записывает обработчик в реестр пользователя (`HKCU\Software\Classes\vpn`). Без этого шага Браузер может не предложить Amnezia.
|
||||
|
||||
## Проверка конкурента за схему `vpn`
|
||||
|
||||
- **Windows:** «Параметры приложений по умолчанию» → протоколы / сопоставления URI, или `regedit` → `HKEY_CURRENT_USER\Software\Classes\vpn`.
|
||||
- **macOS:** при конфликте система откроет не то приложение; проверьте «Открыть с помощью» для тестового `vpn://` в Safari.
|
||||
Reference in New Issue
Block a user