Support the http_proxy environment variable

Overrides General.proxy setting if set
This commit is contained in:
miruka 2021-03-02 12:32:48 -04:00
parent f6f0a0c1ee
commit 6febaeeb1b
4 changed files with 10 additions and 2 deletions

View File

@ -61,6 +61,9 @@ and this project adheres to
- Add command-line arguments parsing and a `--start-in-tray` option, see - Add command-line arguments parsing and a `--start-in-tray` option, see
`mirage --help` `mirage --help`
- Support for HTTP and SOCKS5 proxies, can be set in config file or using the
`http_proxy` environment variable
- Hovering on stability percentages in the sign-in page's homeserver list - Hovering on stability percentages in the sign-in page's homeserver list
now shows more detailed tooltips about the server's recent downtimes now shows more detailed tooltips about the server's recent downtimes

View File

@ -7,6 +7,7 @@ import asyncio
import html import html
import io import io
import logging as log import logging as log
import os
import platform import platform
import re import re
import textwrap import textwrap
@ -167,7 +168,8 @@ class MatrixClient(nio.AsyncClient):
store = Path(backend.appdirs.user_data_dir) / "encryption" store = Path(backend.appdirs.user_data_dir) / "encryption"
store.mkdir(parents=True, exist_ok=True) store.mkdir(parents=True, exist_ok=True)
proxy = backend.settings.General.proxy proxy: Optional[str]
proxy = os.environ.get("http_proxy", backend.settings.General.proxy)
host = re.sub(r":\d+$", "", urlparse(homeserver).netloc) host = re.sub(r":\d+$", "", urlparse(homeserver).netloc)
if host in ("127.0.0.1", "localhost", "::1"): if host in ("127.0.0.1", "localhost", "::1"):

View File

@ -21,6 +21,7 @@ QtObject {
MIRAGE_CONFIG_DIR Override the default configuration folder MIRAGE_CONFIG_DIR Override the default configuration folder
MIRAGE_DATA_DIR Override the default application data folder MIRAGE_DATA_DIR Override the default application data folder
MIRAGE_CACHE_DIR Override the default cache and downloads folder MIRAGE_CACHE_DIR Override the default cache and downloads folder
http_proxy Override the General.proxy setting, see settings.py
` `
readonly property bool ready: { readonly property bool ready: {

View File

@ -12,7 +12,7 @@
#include <QObject> #include <QObject>
#include <QUuid> #include <QUuid>
#include <QNetworkProxy> #include <QNetworkProxy>
#include <QDebug> #include <QUrl>
#include <QDebug> #include <QDebug>
#ifdef Q_OS_LINUX #ifdef Q_OS_LINUX
@ -92,6 +92,8 @@ public slots:
} }
void setProxy(QUrl url) const { void setProxy(QUrl url) const {
const QUrl envProxy = QUrl(qEnvironmentVariable("http_proxy"));
if (! envProxy.isEmpty()) url = envProxy;
if (url.isEmpty()) return; if (url.isEmpty()) return;
const QString scheme = url.scheme(); const QString scheme = url.scheme();