Класс NetProxy
(Sailfish::Mdm::NetProxy)
Класс NetProxy управляет используемыми прокси-серверами. Подробнее…
| Заголовочный файл: | #include <mdm-netproxy.h> |
Публичные типы
- enum ActiveType
- enum ProxyType
Свойства
- activeType : ActiveType
- automaticUrl : QUrl
- manualExclusions : QStringList
- manualProxies : QList<QUrl>
- type : ProxyType
- valid : const bool
Публичные методы
- NetProxy(QObject *parent = nullptr)
- virtual ~NetProxy()
- ActiveType activeType() const
- QUrl automaticUrl() const
- QString getIdentifier() const
- QStringList getIdentifiers(const QString &technology) const
- QString getName() const
- QStringList getTechnologies() const
- bool isValid() const
- QStringList manualExclusions() const
- QList<QUrl> manualProxies() const
- bool selectProxy(const QString &identifier)
- bool setActiveType(ActiveType type)
- bool setAutomaticUrl(const QUrl &url)
- bool setManualExclusions(const QStringList &exclusions)
- bool setManualProxies(const QList<QUrl> &proxies)
- bool setType(ProxyType type)
- ProxyType type() const
Сигналы
- void activeTypeChanged(ActiveType type)
- void automaticUrlChanged(const QUrl &url)
- void manualExclusionsChanged(const QStringList &exclusions)
- void manualProxiesChanged(const QList<QUrl> &proxies)
- void proxyConfigChanged()
- void typeChanged(ProxyType type)
- void validChanged(bool valid)
Подробное описание
Класс NetProxy управляет используемыми прокси-серверами.
Может использоваться прямое подключение (без прокси-сервера), ручная настройка (используются указанные прокси-серверы) или автоматическая настройка (конфигурация прокси-сервера определяется из передаваемого PAC-файла).
Тип прокси-сервера определяется протоколом. Например, указание префикса http в режиме ручной настройки определит прокси-сервер как веб-прокси.
Прокси-серверы могут использоваться как отдельными службами, так и глобально. Использование глобального прокси-сервера переопределит прокси-серверы, используемые для отдельных служб. Если того требует конфигурация глобального прокси-сервера, индивидуальные прокси-серверы могут быть отключены.
CONFIG += link_pkgconfig
PKGCONFIG += sailfishmdm
и затем #include <mdm-netproxy.h>.
Пример использования:
#include <mdm-netproxy.h>
void setGlobalProxy(const QUrl &server)
{
auto proxy = new Sailfish::Mdm::NetProxy(nullptr);
QObject::connect(proxy, &Sailfish::Mdm::NetProxy::validChanged, [proxy, server] {
QString identifier = "global";
bool found = proxy->selectProxy(identifier);
if (found) {
proxy->setType(Sailfish::Mdm::NetProxy::ProxyType::Manual);
proxy->setManualProxies(QList<QUrl>({server}));
proxy->setManualExclusions(QStringList());
}
});
}
В примере ниже подразумевается, что имеется приложение, работающее в цикле, так что можно получать сигналы. Например, следующим образом:
#include <QCoreApplication>
#include <QTimer>
#include <mdm-netproxy.h>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
// Устанавливается глобальный прокси-сервер
setGlobalProxy(QUrl("https://jolla.com"));
// Небольшое ожидание, затем выход
QTimer::singleShot(5000, [&app] {
app.quit();
});
return app.exec();
}
Описание типов класса
enum NetProxy::ActiveType
Указывает, работают ли прокси-серверы отдельных служб или глобальный прокси.
Работает либо одно, либо другое: это не может быть комбинация. Для более детального управления следует использовать прокси-серверы отдельных служб или глобальный файл PAC.
| Константа | Значение | Описание |
|---|---|---|
Sailfish::Mdm::NetProxy::Service |
0 |
Прокси-серверы отдельных сервисов работают |
Sailfish::Mdm::NetProxy::Global |
1 |
Глобальный прокси работает |
См. также activeType, setActiveType(), activeType() и activeTypeChanged().
enum NetProxy::ProxyType
Способ определения конфигурации прокси-сервера.
| Константа | Значение | Описание |
|---|---|---|
Sailfish::Mdm::NetProxy::Invalid |
0 |
Способ определения конфигурации прокси-сервера не задан |
Sailfish::Mdm::NetProxy::Direct |
1 |
Используется прямое подключение (без прокси-сервера) |
Sailfish::Mdm::NetProxy::Manual |
2 |
Выбор из списка предварительно сконфигурированных прокси-серверов |
Sailfish::Mdm::NetProxy::Automatic |
3 |
Прокси-сервер определяется с помощью PAC-файла (Proxy Auto-Configuration) |
См. также type, setType(), type() и typeChanged().
Описание свойств
activeType : ActiveType
Содержит активный режим использования прокси-сервера: индивидуальные прокси-серверы для служб или глобальный прокси-сервер.
В случае использования индивидуальных прокси-серверов их конфигурация записывается в настройках
соответствующих служб. Глобальный прокси-сервер переопределяет индивидуальные настройки. Свойство
activeType определяет, какой из режимов используется.
Методы доступа:
- ActiveType activeType() const
- bool setActiveType(ActiveType type)
Сигнал уведомления:
- void activeTypeChanged(ActiveType type)
См. также ActiveType, setActiveType() и activeTypeChanged().
automaticUrl : QUrl
Содержит путь (URL) к PAC-файлу для выбранной в настоящий момент службы.
Данная настройка применима только для автоматического способа определения конфигурации прокси-сервера (константа Automatic).
В этом случае используется PAC-файл, представляющий собой код на языке JavaScript, позволяющий выбрать нужный прокси-сервер в зависимости от деталей запроса. Данное свойство содержит путь к используемому PAC-файлу.
Методы доступа:
- QUrl automaticUrl() const
- bool setAutomaticUrl(const QUrl &url)
Сигнал уведомления:
- void automaticUrlChanged(const QUrl &url)
См. также automaticUrl, setAutomaticUrl() и automaticUrlChanged().
manualExclusions : QStringList
Содержит исключённые домены для выбранной в настоящий момент службы.
Данная настройка применима только для ручного способа определения конфигурации прокси-сервера (константа Manual).
В этом случае запросы отправляются через прокси сервер, выбранный из списка предварительно сконфигурированных прокси-серверов. Однако, если запрашивается домен из списка исключённых доменов, то будет использоваться прямое подключение в обход прокси-сервера.
Методы доступа:
- QStringList manualExclusions() const
- bool setManualExclusions(const QStringList &exclusions)
Сигнал уведомления:
- void manualExclusionsChanged(const QStringList &exclusions)
См. также setManualExclusions() и manualExclusionsChanged().
manualProxies : QList<QUrl>
Содержит список прокси-серверов, из которых выбран настроенный вручную прокси-сервер.
Данная настройка применима только для ручного способа определения конфигурации прокси-сервера (константа Manual).
В этом случае запросы отправляются через прокси сервер, выбранный из списка предварительно сконфигурированных прокси-серверов.
Методы доступа:
- QList<QUrl> manualProxies() const
- bool setManualProxies(const QList<QUrl> &proxies)
Сигнал уведомления:
- void manualProxiesChanged(const QList<QUrl> &proxies)
См. также setManualProxies() и manualProxiesChanged().
type : ProxyType
Содержит способ определения конфигурации прокси-сервера: прямое подключение, ручная или автоматическая настройки прокси-сервера.
Свойство применяется к активному режиму использования прокси-сервера: индивидуальные прокси-серверы для служб или глобальный прокси-сервер.
Может использоваться прямое подключение (без прокси-сервера, константа Direct), ручная настройка (используются указанные прокси-серверы, константа Manual) или автоматическая настройка (конфигурация прокси-сервера определяется из передаваемого PAC-файла, константа Automatic).
Методы доступа:
Сигнал уведомления:
- void typeChanged(ProxyType type)
См. также ProxyType, setType(), type() и typeChanged().
valid : const bool
Это свойство указывает, находится ли экземпляр NetProxy в допустимом состоянии.
Если состояние не установлено как допустимое, то основные функции (кроме тех, которые связаны с достоверностью экземпляра) ещё не должны использоваться.
При первоначальном создании экземпляра NetProxy он должен асинхронно собирать
различные фрагменты данных из другой части системы. Флаг valid будет установлен как false, пока
этот процесс не завершится.
Есть определённые события, которые могут привести к тому, что флаг снова изменится наfalse во
время существования экземпляра. Чтобы отслеживать эти изменения, можно подключиться к сигналу
validChanged().
Методы доступа:
- bool isValid() const
Сигнал уведомления:
- void validChanged(bool valid)
Описание методов класса
NetProxy::NetProxy(QObject *parent = nullptr)
Создаёт новый объект NetProxy с заданным parent.
[virtual] NetProxy::~NetProxy()
Деструктор для класса NetProxy. Деструктор является виртуальным.
[signal] void NetProxy::activeTypeChanged(ActiveType type)
Сигнал испускается при смене активного режима использования прокси-сервера type с использования индивидуальных прокси-серверов для служб на глобальный прокси-сервер и наоборот.
Примечание — Сигнал уведомления для свойства activeType.
См. также ActiveType, activeType, activeType() и setActiveType().
[signal] void NetProxy::automaticUrlChanged(const QUrl &url)
Изменился url автоматической конфигурации прокси-сервера, который используется выбранной в настоящей момент службой.
Сигнал испускается в случае, если используется автоматический способ конфигурации прокси-сервера и при этом изменяется url для PAC-файла с настройками.
Примечание — Сигнал уведомления для свойства automaticUrl.
См. также automaticUrl и setAutomaticUrl().
QString NetProxy::getIdentifier() const
Возвращает идентификатор выбранной в настоящий момент службы.
Этот идентификатор использовался изначально при выборе службы. Он также возвращается в числе прочих идентификаторов служб при вызове метода getIdentifiers().
Если выбран глобальный прокси-сервер, то в качестве идентификатора метод вернет значение global.
Если прокси-сервер не используется, возвращается пустая строка.
QStringList NetProxy::getIdentifiers(const QString &technology) const
Возвращает список уникальных идентификаторов для служб, которые поддерживают использование прокси-серверов.
Эти идентификаторы будут совпадать с идентификаторами, предоставляемыми демоном ConnMan. Обычно данный метод используется для извлечения нужного идентификатора с тем, чтобы впоследствии передать его в метод selectProxy().
Список идентификатором можно отфильтровать по используемой технологии, передав соответствующее значение в параметре technology. Если в параметре передана пустая строка, метод вернёт все идентификаторы вне зависимости от используемой технологии.
Помимо идентификаторов служб, в возвращаемом списке будет также присутствовать идентификатор
global с соответствующей технологией global, что означает использование глобального
прокси-сервера.
См. также getTechnologies() и selectProxy().
QString NetProxy::getName() const
Возвращает в удобочитаемом виде название выбранной в настоящий момент службы.
Для глобального прокси-сервера возвращается строка Global Proxy.
Если прокси-сервер не используется, возвращается пустая строка.
QStringList NetProxy::getTechnologies() const
Возвращает список сетевых технологий, которые поддерживают использование прокси-серверов.
Эти технологии будут совпадать с технологиями, предоставляемыми демоном ConnMan. Например, wifi или cellular. В возвращаемом списке будет также присутствовать технология global, что означает использование глобального прокси-сервера.
См. также getIdentifiers().
[signal] void NetProxy::manualExclusionsChanged(const QStringList &exclusions)
Изменился список исключённых доменов exclusions для ручной конфигурации прокси-сервера.
Сигнал испускается в случае, если используется ручной способ конфигурации прокси-сервера и при этом изменяется список исключенных доменов по ссылке в параметре exclusions.
Примечание — Сигнал уведомления для свойства manualExclusions.
См. также manualExclusions и setManualExclusions().
[signal] void NetProxy::manualProxiesChanged(const QList<QUrl> &proxies)
Изменился список прокси-серверов proxies для ручной конфигурации прокси-сервера.
Сигнал испускается в случае, если используется ручной способ конфигурации прокси-сервера и при этом изменяется список прокси серверов по ссылке в параметре proxies.
Примечание — Сигнал уведомления для свойства manualProxies.
См. также manualProxies и setManualProxies().
[signal] void NetProxy::proxyConfigChanged()
Сигнал испускается при изменении любого значения в конфигурации прокси-сервера для выбранной в настоящий момент службы.
Сюда входят способ определения конфигурации прокси-сервера, список серверов, список исключённых доменов и URL для PAC-файла. Сигнал также испускается в случае переключения с глобального прокси-сервера на индивидуальные прокси-серверы для служб и наоборот.
Для отслеживания изменений конкретного свойства удобнее подключиться к соответствующему сигналу.
bool NetProxy::selectProxy(const QString &identifier)
Выбирает прокси-сервер для дальнейшей работы.
На устройстве могут одновременно использоваться сразу несколько прокси-серверов. Для внесения изменения в конфигурацию конкретного прокси-сервера, относящегося к конкретной службе, прокси-сервер следует предварительно выбрать с помощью данного метода. После того, как прокси-сервер выбран, к нему можно применять другие методы класса NetProxy.
Типичный порядок действий таков: формируется список идентификаторов с помощью метода
getIdentifiers(), передать идентификатор из этого списка по
ссылке в параметр identifier метода selectProxy, выполнить дальнейшие операции над
прокси-сервером с помощью методов класса NetProxy.
Для выбора глобального прокси-сервера в параметр identifier следует передать значение global.
Значением параметра identifier может быть один из элементов списка, полученного путем вызова
метода getIdentifiers().
В случае успешного выбора прокси-сервера возвращает true, в противном случае возвращает false.
См. также getIdentifiers().
bool NetProxy::setActiveType(ActiveType type)
Задаёт режим работы с прокси-серверами: индивидуальные прокси-серверы для служб или глобальный прокси-сервер.
Для установки режима следует передать соответствующее значение в параметр type.
Активным может быть только один из режимов, но не оба сразу. Данный метод позволяет переключаться между ними.
Возвращает true, если режим работы с прокси-серверами был установлен. Если активный режим не был
изменён, возвращает false (например, при попытке установить режим в текущее значение).
В случае асинхронных ошибок метод завершается неудачей без дополнительного оповещения.
Примечание — Задающий метод для свойства activeType.
См. также ActiveType, activeType, activeType() и activeTypeChanged().
bool NetProxy::setAutomaticUrl(const QUrl &url)
Задаёт путь (URL) к PAC-файлу в значение url для выбранной в настоящий момент службы.
Данная настройка применима только для автоматического способа определения конфигурации прокси-сервера (константа Automatic).
В этом случае используется PAC-файл, представляющий собой код на языке JavaScript, позволяющий выбрать нужный прокси-сервер в зависимости от деталей запроса. Данное свойство содержит путь к используемому PAC-файлу.
В случае успешного изменения значения возвращает true, в противном случае возвращает false.
Значение false может быть возвращено при попытке изменить значение на уже используемое или в
случае, если в текущий момент не выбрано ни одной службы.
В случае асинхронных ошибок метод завершается неудачей без дополнительного оповещения.
Примечание — Задающий метод для свойства automaticUrl.
См. также automaticUrl и automaticUrlChanged().
bool NetProxy::setManualExclusions(const QStringList &exclusions)
Задаёт список исключенных доменов exclusions для выбранной в настоящий момент службы.
Данная настройка применима только для ручного способа определения конфигурации прокси-сервера (константа Manual).
В этом случае запросы отправляются через прокси сервер, выбранный из списка предварительно сконфигурированных прокси-серверов. Однако, если запрашивается домен из списка исключённых доменов, то будет использоваться прямое подключение в обход прокси-сервера.
В случае успешного изменения значения возвращает true, в противном случае возвращает false.
Значение false может быть возвращено при попытке изменить значение на уже используемое или в
случае, если в текущий момент не выбрано ни одной службы.
В случае асинхронных ошибок метод завершается неудачей без дополнительного оповещения.
Примечание — Задающий метод для свойства manualExclusions.
См. также manualExclusions и manualExclusionsChanged().
bool NetProxy::setManualProxies(const QList<QUrl> &proxies)
Задаёт список прокси-серверов proxies для дальнейшего выбора при использовании прокси-сервера, настроенного вручную.
Данная настройка применима только для ручного способа определения конфигурации прокси-сервера (константа Manual).
В этом случае запросы отправляются через прокси сервер, выбранный из списка предварительно сконфигурированных прокси-серверов proxies.
В случае успешного изменения значения возвращает true, в противном случае возвращает false.
Значение false может быть возвращено при попытке изменить значение на уже используемое или в
случае, если в текущий момент не выбрано ни одной службы.
В случае асинхронных ошибок метод завершается неудачей без дополнительного оповещения.
Примечание — Задающий метод для свойства manualProxies.
См. также manualProxies и manualProxiesChanged().
bool NetProxy::setType(ProxyType type)
Задаёт способ определения конфигурации прокси-сервера в значение type.
Может использоваться прямое подключение (без прокси-сервера, константа Direct), ручная настройка (используются указанные прокси-серверы, константа Manual) или автоматическая настройка (конфигурация прокси-сервера определяется из передаваемого PAC-файла, константа Automatic).
В случае успешного изменения значения возвращает true, в противном случае возвращает false.
Значение false может быть возвращено при попытке изменить значение на уже используемое или в
случае, если в текущий момент не выбрано ни одной службы.
В случае асинхронных ошибок метод завершается неудачей без дополнительного оповещения.
Примечание — Задающий метод для свойства type.
См. также ProxyType, type, type() и typeChanged().
ProxyType NetProxy::type() const
Возвращает используемый в настоящий момент способ определения конфигурации прокси-сервера.
Может использоваться прямое подключение (без прокси-сервера, константа Direct), ручная настройка (используются указанные прокси-серверы, константа Manual) или автоматическая настройка (конфигурация прокси-сервера определяется из передаваемого PAC-файла, константа Automatic).
Примечание — Задающий метод для свойства type.
См. также ProxyType и setType().
[signal] void NetProxy::typeChanged(ProxyType type)
Изменился способ определения конфигурации прокси-сервера type на прямое подключение, ручную или автоматическую настройку.
Сигнал испускается при смене способа определения конфигурации прокси-сервера type на прямое подключение, ручную или автоматическую настройку.
Примечание — Сигнал уведомления для свойства type.