Класс 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.