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>
76 lines
2.6 KiB
Bash
Executable File
76 lines
2.6 KiB
Bash
Executable File
#!/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 "$@"
|