Add connection_parameters options.
GitOrigin-RevId: 68ad956881c53ea9ee7ca529947737b2d55b585a
This commit is contained in:
parent
58dd51916d
commit
5de81015ad
@ -51,6 +51,11 @@ Result<td_api::object_ptr<td_api::JsonValue>> get_json_value(MutableSlice json)
|
|||||||
return get_json_value_object(json_value);
|
return get_json_value_object(json_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Result<telegram_api::object_ptr<telegram_api::JSONValue>> get_input_json_value(MutableSlice json) {
|
||||||
|
TRY_RESULT(json_value, get_json_value(json));
|
||||||
|
return convert_json_value(std::move(json_value));
|
||||||
|
}
|
||||||
|
|
||||||
static td_api::object_ptr<td_api::jsonObjectMember> convert_json_value_member_object(
|
static td_api::object_ptr<td_api::jsonObjectMember> convert_json_value_member_object(
|
||||||
const telegram_api::object_ptr<telegram_api::jsonObjectValue> &json_object_value) {
|
const telegram_api::object_ptr<telegram_api::jsonObjectValue> &json_object_value) {
|
||||||
CHECK(json_object_value != nullptr);
|
CHECK(json_object_value != nullptr);
|
||||||
|
@ -17,6 +17,8 @@ namespace td {
|
|||||||
|
|
||||||
Result<td_api::object_ptr<td_api::JsonValue>> get_json_value(MutableSlice json);
|
Result<td_api::object_ptr<td_api::JsonValue>> get_json_value(MutableSlice json);
|
||||||
|
|
||||||
|
Result<telegram_api::object_ptr<telegram_api::JSONValue>> get_input_json_value(MutableSlice json);
|
||||||
|
|
||||||
td_api::object_ptr<td_api::JsonValue> convert_json_value_object(
|
td_api::object_ptr<td_api::JsonValue> convert_json_value_object(
|
||||||
const tl_object_ptr<telegram_api::JSONValue> &json_value);
|
const tl_object_ptr<telegram_api::JSONValue> &json_value);
|
||||||
|
|
||||||
|
@ -3666,6 +3666,10 @@ void Td::on_config_option_updated(const string &name) {
|
|||||||
} else if (name == "disable_top_chats") {
|
} else if (name == "disable_top_chats") {
|
||||||
send_closure(top_dialog_manager_, &TopDialogManager::update_is_enabled,
|
send_closure(top_dialog_manager_, &TopDialogManager::update_is_enabled,
|
||||||
!G()->shared_config().get_option_boolean(name));
|
!G()->shared_config().get_option_boolean(name));
|
||||||
|
} else if (name == "connection_parameters") {
|
||||||
|
if (G()->mtproto_header().set_parameters(G()->shared_config().get_option_string(name))) {
|
||||||
|
G()->net_query_dispatcher().update_mtproto_header();
|
||||||
|
}
|
||||||
} else if (name == "is_emulator") {
|
} else if (name == "is_emulator") {
|
||||||
if (G()->mtproto_header().set_is_emulator(G()->shared_config().get_option_boolean(name))) {
|
if (G()->mtproto_header().set_is_emulator(G()->shared_config().get_option_boolean(name))) {
|
||||||
G()->net_query_dispatcher().update_mtproto_header();
|
G()->net_query_dispatcher().update_mtproto_header();
|
||||||
@ -4126,6 +4130,7 @@ Status Td::init(DbKey key) {
|
|||||||
|
|
||||||
options_.language_pack = G()->shared_config().get_option_string("localization_target");
|
options_.language_pack = G()->shared_config().get_option_string("localization_target");
|
||||||
options_.language_code = G()->shared_config().get_option_string("language_pack_id");
|
options_.language_code = G()->shared_config().get_option_string("language_pack_id");
|
||||||
|
options_.parameters = G()->shared_config().get_option_string("connection_parameters");
|
||||||
options_.is_emulator = G()->shared_config().get_option_boolean("is_emulator");
|
options_.is_emulator = G()->shared_config().get_option_boolean("is_emulator");
|
||||||
// options_.proxy = Proxy();
|
// options_.proxy = Proxy();
|
||||||
G()->set_mtproto_header(make_unique<MtprotoHeader>(options_));
|
G()->set_mtproto_header(make_unique<MtprotoHeader>(options_));
|
||||||
@ -4694,6 +4699,7 @@ Status Td::set_parameters(td_api::object_ptr<td_api::tdlibParameters> parameters
|
|||||||
}
|
}
|
||||||
options_.language_pack = "";
|
options_.language_pack = "";
|
||||||
options_.language_code = "";
|
options_.language_code = "";
|
||||||
|
options_.parameters = "";
|
||||||
options_.is_emulator = false;
|
options_.is_emulator = false;
|
||||||
options_.proxy = Proxy();
|
options_.proxy = Proxy();
|
||||||
|
|
||||||
@ -6679,6 +6685,17 @@ void Td::on_request(uint64 id, td_api::setOption &request) {
|
|||||||
|
|
||||||
bool is_bot = auth_manager_ != nullptr && auth_manager_->is_authorized() && auth_manager_->is_bot();
|
bool is_bot = auth_manager_ != nullptr && auth_manager_->is_authorized() && auth_manager_->is_bot();
|
||||||
switch (request.name_[0]) {
|
switch (request.name_[0]) {
|
||||||
|
case 'c':
|
||||||
|
if (!is_bot && set_string_option("connection_parameters", [](Slice value) {
|
||||||
|
string value_copy = value.str();
|
||||||
|
auto r_json_value = get_json_value(value_copy);
|
||||||
|
if (r_json_value.is_error()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return r_json_value.ok()->get_id() == td_api::jsonValueObject::ID;
|
||||||
|
})) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
case 'd':
|
case 'd':
|
||||||
if (!is_bot && set_boolean_option("disable_contact_registered_notifications")) {
|
if (!is_bot && set_boolean_option("disable_contact_registered_notifications")) {
|
||||||
return;
|
return;
|
||||||
|
@ -7,6 +7,9 @@
|
|||||||
#include "td/telegram/net/MtprotoHeader.h"
|
#include "td/telegram/net/MtprotoHeader.h"
|
||||||
|
|
||||||
#include "td/telegram/LanguagePackManager.h"
|
#include "td/telegram/LanguagePackManager.h"
|
||||||
|
#include "td/telegram/JsonValue.h"
|
||||||
|
|
||||||
|
#include "td/tl/tl_object_store.h"
|
||||||
|
|
||||||
#include "td/utils/tl_helpers.h"
|
#include "td/utils/tl_helpers.h"
|
||||||
|
|
||||||
@ -35,6 +38,9 @@ class HeaderStorer {
|
|||||||
if (have_proxy) {
|
if (have_proxy) {
|
||||||
flags |= 1 << 0;
|
flags |= 1 << 0;
|
||||||
}
|
}
|
||||||
|
if (!options.parameters.empty()) {
|
||||||
|
flags |= 1 << 1;
|
||||||
|
}
|
||||||
if (options.is_emulator) {
|
if (options.is_emulator) {
|
||||||
flags |= 1 << 10;
|
flags |= 1 << 10;
|
||||||
}
|
}
|
||||||
@ -67,6 +73,12 @@ class HeaderStorer {
|
|||||||
store(Slice(options.proxy.server()), storer);
|
store(Slice(options.proxy.server()), storer);
|
||||||
store(options.proxy.port(), storer);
|
store(options.proxy.port(), storer);
|
||||||
}
|
}
|
||||||
|
if (!options.parameters.empty()) {
|
||||||
|
auto parameters_copy = options.parameters;
|
||||||
|
auto json_value = get_input_json_value(parameters_copy).move_as_ok();
|
||||||
|
CHECK(json_value != nullptr);
|
||||||
|
TlStoreBoxedUnknown<TlStoreObject>::store(json_value, storer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -23,6 +23,7 @@ class MtprotoHeader {
|
|||||||
string application_version;
|
string application_version;
|
||||||
string language_pack;
|
string language_pack;
|
||||||
string language_code;
|
string language_code;
|
||||||
|
string parameters;
|
||||||
bool is_emulator = false;
|
bool is_emulator = false;
|
||||||
Proxy proxy;
|
Proxy proxy;
|
||||||
};
|
};
|
||||||
@ -36,6 +37,16 @@ class MtprotoHeader {
|
|||||||
default_header_ = gen_header(options_, false);
|
default_header_ = gen_header(options_, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool set_parameters(string parameters) {
|
||||||
|
if (options_.parameters == parameters) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
options_.parameters = parameters;
|
||||||
|
default_header_ = gen_header(options_, false);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool set_is_emulator(bool is_emulator) {
|
bool set_is_emulator(bool is_emulator) {
|
||||||
if (options_.is_emulator == is_emulator) {
|
if (options_.is_emulator == is_emulator) {
|
||||||
return false;
|
return false;
|
||||||
|
Loading…
Reference in New Issue
Block a user