Files
local_machine/scripts/games/fix-gog-auth.sh
ahauimix 1938b7c743 Expand local_machine docs and automation for connectivity, games, and ops.
Add proxy/VPN/telegram launchd and emergency runbooks; reorganize apps docs;
document JA3 CrossOver runbook and Wine troubleshooting; add GOG/HoMM game
scripts, disk cleanup guides, and gitea push-via-proxy helper. Ignore temp/.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-01 08:12:19 +03:00

76 lines
2.6 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# GOG Galaxy в Wine: логин в CEF ок, но auth.gog.com/token таймаут → сброс на пароль.
# Фиксы: IPv6 в Wine, сеть Poco/OpenSSL, CEF-флаги GOG.
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
# shellcheck source=config.sh
source "${SCRIPT_DIR}/config.sh"
cmd_wine_check() {
if [[ ! -x "${WINE64}" ]]; then
echo "Нет WhiskyWine: bash ${SCRIPT_DIR}/install-whiskywine-manual.sh"
exit 1
fi
}
cmd_wine_network_registry() {
export WINEPREFIX="${BOTTLE_DIR}"
echo "Wine: отключаю IPv6 DNS (частая причина зависания WinHTTP/Poco)…"
"${WINE64}" reg add 'HKCU\Software\Wine\Network' /v DnsIPv6Enabled /t REG_DWORD /d 0 /f >/dev/null 2>&1 || true
"${WINE64}" reg add 'HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings' \
/v DisableIPv6 /t REG_DWORD /d 1 /f >/dev/null 2>&1 || true
echo "Wine: ProxyEnable=0 (без системного прокси в bottle)…"
"${WINE64}" reg add 'HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings' \
/v ProxyEnable /t REG_DWORD /d 0 /f >/dev/null 2>&1 || true
}
cmd_dll_overrides() {
export WINEPREFIX="${BOTTLE_DIR}"
local key='HKCU\Software\Wine\DllOverrides'
echo "Wine: DllOverrides для OpenSSL/Poco (native)…"
for dll in libssl-1_1 libcrypto-1_1 libssl-3 libcrypto-3; do
"${WINE64}" reg add "${key}" /v "${dll}" /t REG_SZ /d native,builtin /f >/dev/null 2>&1 || true
done
}
cmd_clear_gog_webcache() {
local cache="${BOTTLE_DIR}/drive_c/ProgramData/GOG.com/Galaxy/webcache"
if [[ -d "${cache}" ]]; then
rm -rf "${cache:?}"/*
echo "Очищен webcache: ${cache}"
fi
}
cmd_update_plist() {
local ps="${BOTTLE_DIR}/Program Settings/GalaxyClient.exe.plist"
local args
args="$(homm_gog_cef_args_line)"
if [[ -f "${ps}" ]]; then
/usr/bin/plutil -replace arguments -string "${args}" "${ps}" 2>/dev/null \
|| echo " (plist вручную: ${args})"
echo "Обновлён ${ps}"
fi
}
main() {
cmd_wine_check
if ! homm_gog_exe >/dev/null; then
echo "GOG не установлен: bash ${SCRIPT_DIR}/start.sh gog-install"
exit 1
fi
cmd_wine_network_registry
cmd_dll_overrides
cmd_clear_gog_webcache
cmd_update_plist
echo ""
echo "OK. Перезапуск GOG:"
echo " bash ${SCRIPT_DIR}/start.sh gog-restart"
echo ""
echo "Если снова сброс на пароль — соберите логи:"
echo " bash ${SCRIPT_DIR}/diagnose-gog-auth.sh"
echo ""
echo "Проверка в логе после входа: НЕ должно быть «timeout … auth.gog.com/token»."
}
main "$@"