Apply proxy settings in mtproto-key-destroyer.

This commit is contained in:
John Preston 2018-05-18 15:20:28 +03:00
parent 4478c0a143
commit 425e56b3ea
5 changed files with 35 additions and 33 deletions

View File

@ -1069,7 +1069,7 @@ void ProxiesBoxController::ShowApplyConfirmation(
if (ranges::find(proxies, proxy) == end(proxies)) {
proxies.push_back(proxy);
}
Messenger::Instance().mtp()->setCurrentProxy(proxy, true);
Messenger::Instance().setCurrentProxy(proxy, true);
Local::writeSettings();
if (const auto strong = box->data()) {
strong->closeBox();
@ -1230,7 +1230,7 @@ void ProxiesBoxController::applyItem(int id) {
auto j = findByProxy(Global::SelectedProxy());
Messenger::Instance().mtp()->setCurrentProxy(item->data, true);
Messenger::Instance().setCurrentProxy(item->data, true);
saveDelayed();
if (j != end(_list)) {
@ -1251,7 +1251,7 @@ void ProxiesBoxController::setDeleted(int id, bool deleted) {
_lastSelectedProxy = base::take(Global::RefSelectedProxy());
if (Global::UseProxy()) {
_lastSelectedProxyUsed = true;
Messenger::Instance().mtp()->setCurrentProxy(
Messenger::Instance().setCurrentProxy(
ProxyData(),
false);
saveDelayed();
@ -1276,7 +1276,7 @@ void ProxiesBoxController::setDeleted(int id, bool deleted) {
Assert(!Global::UseProxy());
if (base::take(_lastSelectedProxyUsed)) {
Messenger::Instance().mtp()->setCurrentProxy(
Messenger::Instance().setCurrentProxy(
base::take(_lastSelectedProxy),
true);
} else {
@ -1381,7 +1381,7 @@ bool ProxiesBoxController::setProxyEnabled(bool enabled) {
}
}
}
Messenger::Instance().mtp()->setCurrentProxy(
Messenger::Instance().setCurrentProxy(
Global::SelectedProxy(),
enabled);
saveDelayed();

View File

@ -278,13 +278,42 @@ bool Messenger::eventFilter(QObject *object, QEvent *e) {
return QObject::eventFilter(object, e);
}
void Messenger::setCurrentProxy(
const ProxyData &proxy,
bool enabled) {
const auto key = [&](const ProxyData &proxy) {
if (proxy.type == ProxyData::Type::Mtproto) {
return std::make_pair(proxy.host, proxy.port);
}
return std::make_pair(QString(), uint32(0));
};
const auto previousKey = key(Global::UseProxy()
? Global::SelectedProxy()
: ProxyData());
Global::SetSelectedProxy(proxy);
Global::SetUseProxy(enabled);
Sandbox::refreshGlobalProxy();
if (_mtproto) {
_mtproto->restart();
if (previousKey != key(proxy)) {
_mtproto->reInitConnection(_mtproto->mainDcId());
}
}
if (_mtprotoForKeysDestroy) {
_mtprotoForKeysDestroy->restart();
}
Global::RefConnectionTypeChanged().notify();
}
void Messenger::setMtpMainDcId(MTP::DcId mainDcId) {
Expects(!_mtproto);
_private->mtpConfig.mainDcId = mainDcId;
}
void Messenger::setMtpKey(MTP::DcId dcId, const MTP::AuthKey::Data &keyData) {
Expects(!_mtproto);
_private->mtpConfig.keys.push_back(std::make_shared<MTP::AuthKey>(MTP::AuthKey::Type::ReadFromFile, dcId, keyData));
}

View File

@ -98,6 +98,7 @@ public:
MTP::DcOptions *dcOptions() {
return _dcOptions.get();
}
void setCurrentProxy(const ProxyData &proxy, bool enabled);
// Set from legacy storage.
void setMtpMainDcId(MTP::DcId mainDcId);

View File

@ -38,7 +38,6 @@ public:
void start(Config &&config);
void setCurrentProxy(const ProxyData &proxy, bool enabled);
void resolveProxyDomain(const QString &host);
void setGoodProxyDomain(const QString &host, const QString &ip);
void suggestMainDcId(DcId mainDcId);
@ -274,28 +273,6 @@ void Instance::Private::start(Config &&config) {
requestConfig();
}
void Instance::Private::setCurrentProxy(
const ProxyData &proxy,
bool enabled) {
const auto key = [&](const ProxyData &proxy) {
if (proxy.type == ProxyData::Type::Mtproto) {
return std::make_pair(proxy.host, proxy.port);
}
return std::make_pair(QString(), uint32(0));
};
const auto previousKey = key(Global::UseProxy()
? Global::SelectedProxy()
: ProxyData());
Global::SetSelectedProxy(proxy);
Global::SetUseProxy(enabled);
Sandbox::refreshGlobalProxy();
restart();
if (previousKey != key(proxy)) {
reInitConnection(mainDcId());
}
Global::RefConnectionTypeChanged().notify();
}
void Instance::Private::resolveProxyDomain(const QString &host) {
if (!_domainResolver) {
_domainResolver = std::make_unique<DomainResolver>([=](
@ -1467,10 +1444,6 @@ Instance::Instance(not_null<DcOptions*> options, Mode mode, Config &&config)
_private->start(std::move(config));
}
void Instance::setCurrentProxy(const ProxyData &proxy, bool enabled) {
_private->setCurrentProxy(proxy, enabled);
}
void Instance::resolveProxyDomain(const QString &host) {
_private->resolveProxyDomain(host);
}

View File

@ -46,7 +46,6 @@ public:
Instance(const Instance &other) = delete;
Instance &operator=(const Instance &other) = delete;
void setCurrentProxy(const ProxyData &proxy, bool enabled);
void resolveProxyDomain(const QString &host);
void setGoodProxyDomain(const QString &host, const QString &ip);
void suggestMainDcId(DcId mainDcId);