Compare commits

...

2 Commits

Author SHA1 Message Date
dijunkun
5cc31e5ba3 [fix] fix self-hosted server configuration being reset when disabling self-hosted mode 2025-12-08 18:27:18 +08:00
dijunkun
74fe9bebf5 [fix] fix server settings window height 2025-12-08 17:42:02 +08:00
4 changed files with 133 additions and 54 deletions

View File

@@ -41,16 +41,43 @@ int ConfigCenter::Load() {
enable_turn_ = ini_.GetBoolValue(section_, "enable_turn", enable_turn_); enable_turn_ = ini_.GetBoolValue(section_, "enable_turn", enable_turn_);
enable_srtp_ = ini_.GetBoolValue(section_, "enable_srtp", enable_srtp_); enable_srtp_ = ini_.GetBoolValue(section_, "enable_srtp", enable_srtp_);
signal_server_host_ = ini_.GetValue(section_, "signal_server_host",
signal_server_host_.c_str());
signal_server_port_ = static_cast<int>(
ini_.GetLongValue(section_, "signal_server_port", signal_server_port_));
coturn_server_port_ = static_cast<int>(
ini_.GetLongValue(section_, "coturn_server_port", coturn_server_port_));
cert_file_path_ =
ini_.GetValue(section_, "cert_file_path", cert_file_path_.c_str());
enable_self_hosted_ = enable_self_hosted_ =
ini_.GetBoolValue(section_, "enable_self_hosted", enable_self_hosted_); ini_.GetBoolValue(section_, "enable_self_hosted", enable_self_hosted_);
const char* signal_server_host_value =
ini_.GetValue(section_, "signal_server_host", nullptr);
if (signal_server_host_value != nullptr &&
strlen(signal_server_host_value) > 0) {
signal_server_host_ = signal_server_host_value;
} else {
signal_server_host_ = "";
}
const char* signal_server_port_value =
ini_.GetValue(section_, "signal_server_port", nullptr);
if (signal_server_port_value != nullptr &&
strlen(signal_server_port_value) > 0) {
signal_server_port_ =
static_cast<int>(ini_.GetLongValue(section_, "signal_server_port", 0));
} else {
signal_server_port_ = 0;
}
const char* coturn_server_port_value =
ini_.GetValue(section_, "coturn_server_port", nullptr);
if (coturn_server_port_value != nullptr &&
strlen(coturn_server_port_value) > 0) {
coturn_server_port_ =
static_cast<int>(ini_.GetLongValue(section_, "coturn_server_port", 0));
} else {
coturn_server_port_ = 0;
}
const char* cert_file_path_value =
ini_.GetValue(section_, "cert_file_path", nullptr);
if (cert_file_path_value != nullptr && strlen(cert_file_path_value) > 0) {
cert_file_path_ = cert_file_path_value;
} else {
cert_file_path_ = "";
}
enable_autostart_ = enable_autostart_ =
ini_.GetBoolValue(section_, "enable_autostart", enable_autostart_); ini_.GetBoolValue(section_, "enable_autostart", enable_autostart_);
enable_daemon_ = ini_.GetBoolValue(section_, "enable_daemon", enable_daemon_); enable_daemon_ = ini_.GetBoolValue(section_, "enable_daemon", enable_daemon_);
@@ -71,11 +98,18 @@ int ConfigCenter::Save() {
ini_.SetBoolValue(section_, "hardware_video_codec", hardware_video_codec_); ini_.SetBoolValue(section_, "hardware_video_codec", hardware_video_codec_);
ini_.SetBoolValue(section_, "enable_turn", enable_turn_); ini_.SetBoolValue(section_, "enable_turn", enable_turn_);
ini_.SetBoolValue(section_, "enable_srtp", enable_srtp_); ini_.SetBoolValue(section_, "enable_srtp", enable_srtp_);
ini_.SetValue(section_, "signal_server_host", signal_server_host_.c_str());
ini_.SetLongValue(section_, "signal_server_port",
static_cast<long>(signal_server_port_));
ini_.SetValue(section_, "cert_file_path", cert_file_path_.c_str());
ini_.SetBoolValue(section_, "enable_self_hosted", enable_self_hosted_); ini_.SetBoolValue(section_, "enable_self_hosted", enable_self_hosted_);
// only save when self hosted
if (enable_self_hosted_) {
ini_.SetValue(section_, "signal_server_host", signal_server_host_.c_str());
ini_.SetLongValue(section_, "signal_server_port",
static_cast<long>(signal_server_port_));
ini_.SetLongValue(section_, "coturn_server_port",
static_cast<long>(coturn_server_port_));
ini_.SetValue(section_, "cert_file_path", cert_file_path_.c_str());
}
ini_.SetBoolValue(section_, "enable_autostart", enable_autostart_); ini_.SetBoolValue(section_, "enable_autostart", enable_autostart_);
ini_.SetBoolValue(section_, "enable_daemon", enable_daemon_); ini_.SetBoolValue(section_, "enable_daemon", enable_daemon_);
ini_.SetBoolValue(section_, "enable_minimize_to_tray", ini_.SetBoolValue(section_, "enable_minimize_to_tray",
@@ -210,6 +244,43 @@ int ConfigCenter::SetCertFilePath(const std::string& cert_file_path) {
int ConfigCenter::SetSelfHosted(bool enable_self_hosted) { int ConfigCenter::SetSelfHosted(bool enable_self_hosted) {
enable_self_hosted_ = enable_self_hosted; enable_self_hosted_ = enable_self_hosted;
ini_.SetBoolValue(section_, "enable_self_hosted", enable_self_hosted_); ini_.SetBoolValue(section_, "enable_self_hosted", enable_self_hosted_);
// load from config if self hosted is enabled
if (enable_self_hosted_) {
const char* signal_server_host_value =
ini_.GetValue(section_, "signal_server_host", nullptr);
if (signal_server_host_value != nullptr &&
strlen(signal_server_host_value) > 0) {
signal_server_host_ = signal_server_host_value;
}
const char* signal_server_port_value =
ini_.GetValue(section_, "signal_server_port", nullptr);
if (signal_server_port_value != nullptr &&
strlen(signal_server_port_value) > 0) {
signal_server_port_ = static_cast<int>(
ini_.GetLongValue(section_, "signal_server_port", 0));
}
const char* coturn_server_port_value =
ini_.GetValue(section_, "coturn_server_port", nullptr);
if (coturn_server_port_value != nullptr &&
strlen(coturn_server_port_value) > 0) {
coturn_server_port_ = static_cast<int>(
ini_.GetLongValue(section_, "coturn_server_port", 0));
}
const char* cert_file_path_value =
ini_.GetValue(section_, "cert_file_path", nullptr);
if (cert_file_path_value != nullptr && strlen(cert_file_path_value) > 0) {
cert_file_path_ = cert_file_path_value;
}
ini_.SetValue(section_, "signal_server_host", signal_server_host_.c_str());
ini_.SetLongValue(section_, "signal_server_port",
static_cast<long>(signal_server_port_));
ini_.SetLongValue(section_, "coturn_server_port",
static_cast<long>(coturn_server_port_));
ini_.SetValue(section_, "cert_file_path", cert_file_path_.c_str());
}
SI_Error rc = ini_.SaveFile(config_path_.c_str()); SI_Error rc = ini_.SaveFile(config_path_.c_str());
if (rc < 0) { if (rc < 0) {
return -1; return -1;

View File

@@ -70,7 +70,6 @@ class ConfigCenter {
private: private:
std::string config_path_; std::string config_path_;
std::string cert_file_path_;
CSimpleIniA ini_; CSimpleIniA ini_;
const char* section_ = "Settings"; const char* section_ = "Settings";
@@ -81,12 +80,13 @@ class ConfigCenter {
bool hardware_video_codec_ = false; bool hardware_video_codec_ = false;
bool enable_turn_ = true; bool enable_turn_ = true;
bool enable_srtp_ = false; bool enable_srtp_ = false;
std::string signal_server_host_ = "api.crossdesk.cn"; std::string signal_server_host_ = "";
std::string signal_server_host_default_ = "api.crossdesk.cn"; std::string signal_server_host_default_ = "api.crossdesk.cn";
int signal_server_port_ = 9099; int signal_server_port_ = 0;
int server_port_default_ = 9099; int server_port_default_ = 9099;
int coturn_server_port_ = 3478; int coturn_server_port_ = 0;
int coturn_server_port_default_ = 3478; int coturn_server_port_default_ = 3478;
std::string cert_file_path_ = "";
std::string cert_file_path_default_ = ""; std::string cert_file_path_default_ = "";
bool enable_self_hosted_ = false; bool enable_self_hosted_ = false;
bool enable_minimize_to_tray_ = false; bool enable_minimize_to_tray_ = false;

View File

@@ -491,14 +491,22 @@ int Render::CreateConnectionPeer() {
strncpy(signal_server_ip_self_, config_center_->GetSignalServerHost().c_str(), strncpy(signal_server_ip_self_, config_center_->GetSignalServerHost().c_str(),
sizeof(signal_server_ip_self_) - 1); sizeof(signal_server_ip_self_) - 1);
signal_server_ip_self_[sizeof(signal_server_ip_self_) - 1] = '\0'; signal_server_ip_self_[sizeof(signal_server_ip_self_) - 1] = '\0';
strncpy(signal_server_port_self_, int signal_port = config_center_->GetSignalServerPort();
std::to_string(config_center_->GetSignalServerPort()).c_str(), if (signal_port > 0) {
sizeof(signal_server_port_self_) - 1); strncpy(signal_server_port_self_, std::to_string(signal_port).c_str(),
signal_server_port_self_[sizeof(signal_server_port_self_) - 1] = '\0'; sizeof(signal_server_port_self_) - 1);
strncpy(coturn_server_port_self_, signal_server_port_self_[sizeof(signal_server_port_self_) - 1] = '\0';
std::to_string(config_center_->GetCoturnServerPort()).c_str(), } else {
sizeof(coturn_server_port_self_) - 1); signal_server_port_self_[0] = '\0';
coturn_server_port_self_[sizeof(coturn_server_port_self_) - 1] = '\0'; }
int coturn_port = config_center_->GetCoturnServerPort();
if (coturn_port > 0) {
strncpy(coturn_server_port_self_, std::to_string(coturn_port).c_str(),
sizeof(coturn_server_port_self_) - 1);
coturn_server_port_self_[sizeof(coturn_server_port_self_) - 1] = '\0';
} else {
coturn_server_port_self_[0] = '\0';
}
tls_cert_path_self_ = config_center_->GetCertFilePath(); tls_cert_path_self_ = config_center_->GetCertFilePath();
// peer config // peer config
@@ -1038,10 +1046,15 @@ int Render::Run() {
config_center_->GetSignalServerHost().c_str(), config_center_->GetSignalServerHost().c_str(),
sizeof(signal_server_ip_self_) - 1); sizeof(signal_server_ip_self_) - 1);
signal_server_ip_self_[sizeof(signal_server_ip_self_) - 1] = '\0'; signal_server_ip_self_[sizeof(signal_server_ip_self_) - 1] = '\0';
strncpy(signal_server_port_self_, int signal_port_init = config_center_->GetSignalServerPort();
std::to_string(config_center_->GetSignalServerPort()).c_str(), if (signal_port_init > 0) {
sizeof(signal_server_port_self_) - 1); strncpy(signal_server_port_self_,
signal_server_port_self_[sizeof(signal_server_port_self_) - 1] = '\0'; std::to_string(signal_port_init).c_str(),
sizeof(signal_server_port_self_) - 1);
signal_server_port_self_[sizeof(signal_server_port_self_) - 1] = '\0';
} else {
signal_server_port_self_[0] = '\0';
}
strncpy(cert_file_path_, cert_path_.c_str(), sizeof(cert_file_path_) - 1); strncpy(cert_file_path_, cert_path_.c_str(), sizeof(cert_file_path_) - 1);
cert_file_path_[sizeof(cert_file_path_) - 1] = '\0'; cert_file_path_[sizeof(cert_file_path_) - 1] = '\0';
} else { } else {

View File

@@ -141,9 +141,6 @@ int Render::SelfHostedServerWindow() {
// Settings // Settings
{ {
static int settings_items_padding = title_bar_button_width_;
int settings_items_offset = 0;
ImGui::SetWindowFontScale(0.5f); ImGui::SetWindowFontScale(0.5f);
ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(1.0f, 1.0f, 1.0f, 1.0f)); ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(1.0f, 1.0f, 1.0f, 1.0f));
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 5.0f); ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 5.0f);
@@ -159,8 +156,6 @@ int Render::SelfHostedServerWindow() {
ImGui::SetWindowFontScale(0.5f); ImGui::SetWindowFontScale(0.5f);
ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0f); ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0f);
{ {
settings_items_offset += settings_items_padding;
ImGui::SetCursorPosY(settings_items_offset);
ImGui::AlignTextToFramePadding(); ImGui::AlignTextToFramePadding();
ImGui::Text("%s", localization::self_hosted_server_address ImGui::Text("%s", localization::self_hosted_server_address
[localization_language_index_] [localization_language_index_]
@@ -171,7 +166,6 @@ int Render::SelfHostedServerWindow() {
} else { } else {
ImGui::SetCursorPosX(title_bar_button_width_ * 3.43f); ImGui::SetCursorPosX(title_bar_button_width_ * 3.43f);
} }
ImGui::SetCursorPosY(settings_items_offset);
ImGui::SetNextItemWidth(title_bar_button_width_ * 3.8f); ImGui::SetNextItemWidth(title_bar_button_width_ * 3.8f);
ImGui::InputText("##signal_server_ip_self_", signal_server_ip_self_, ImGui::InputText("##signal_server_ip_self_", signal_server_ip_self_,
@@ -182,8 +176,6 @@ int Render::SelfHostedServerWindow() {
ImGui::Separator(); ImGui::Separator();
{ {
settings_items_offset += settings_items_padding;
ImGui::SetCursorPosY(settings_items_offset);
ImGui::AlignTextToFramePadding(); ImGui::AlignTextToFramePadding();
ImGui::Text( ImGui::Text(
"%s", "%s",
@@ -195,7 +187,6 @@ int Render::SelfHostedServerWindow() {
} else { } else {
ImGui::SetCursorPosX(title_bar_button_width_ * 3.43f); ImGui::SetCursorPosX(title_bar_button_width_ * 3.43f);
} }
ImGui::SetCursorPosY(settings_items_offset);
ImGui::SetNextItemWidth(title_bar_button_width_ * 3.8f); ImGui::SetNextItemWidth(title_bar_button_width_ * 3.8f);
ImGui::InputText("##signal_server_port_self_", signal_server_port_self_, ImGui::InputText("##signal_server_port_self_", signal_server_port_self_,
@@ -205,8 +196,6 @@ int Render::SelfHostedServerWindow() {
ImGui::Separator(); ImGui::Separator();
{ {
settings_items_offset += settings_items_padding;
ImGui::SetCursorPosY(settings_items_offset);
ImGui::AlignTextToFramePadding(); ImGui::AlignTextToFramePadding();
ImGui::Text("%s", localization::self_hosted_server_coturn_server_port ImGui::Text("%s", localization::self_hosted_server_coturn_server_port
[localization_language_index_] [localization_language_index_]
@@ -217,7 +206,6 @@ int Render::SelfHostedServerWindow() {
} else { } else {
ImGui::SetCursorPosX(title_bar_button_width_ * 3.43f); ImGui::SetCursorPosX(title_bar_button_width_ * 3.43f);
} }
ImGui::SetCursorPosY(settings_items_offset);
ImGui::SetNextItemWidth(title_bar_button_width_ * 3.8f); ImGui::SetNextItemWidth(title_bar_button_width_ * 3.8f);
ImGui::InputText("##coturn_server_port_self_", coturn_server_port_self_, ImGui::InputText("##coturn_server_port_self_", coturn_server_port_self_,
@@ -227,8 +215,6 @@ int Render::SelfHostedServerWindow() {
ImGui::Separator(); ImGui::Separator();
{ {
settings_items_offset += settings_items_padding;
ImGui::SetCursorPosY(settings_items_offset);
ImGui::AlignTextToFramePadding(); ImGui::AlignTextToFramePadding();
ImGui::Text("%s", localization::self_hosted_server_certificate_path ImGui::Text("%s", localization::self_hosted_server_certificate_path
[localization_language_index_] [localization_language_index_]
@@ -239,7 +225,6 @@ int Render::SelfHostedServerWindow() {
} else { } else {
ImGui::SetCursorPosX(title_bar_button_width_ * 3.43f); ImGui::SetCursorPosX(title_bar_button_width_ * 3.43f);
} }
ImGui::SetCursorPosY(settings_items_offset);
ImGui::SetNextItemWidth(title_bar_button_width_ * 3.8f); ImGui::SetNextItemWidth(title_bar_button_width_ * 3.8f);
ShowSimpleFileBrowser(); ShowSimpleFileBrowser();
@@ -249,15 +234,14 @@ int Render::SelfHostedServerWindow() {
ImGui::EndDisabled(); ImGui::EndDisabled();
} }
ImGui::Dummy(ImVec2(0.0f, title_bar_button_width_ * 0.25f));
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
ImGui::SetCursorPosX(title_bar_button_width_ * 2.32f); ImGui::SetCursorPosX(title_bar_button_width_ * 2.32f);
} else { } else {
ImGui::SetCursorPosX(title_bar_button_width_ * 2.7f); ImGui::SetCursorPosX(title_bar_button_width_ * 2.7f);
} }
settings_items_offset +=
settings_items_padding + title_bar_button_width_ * 0.3f;
ImGui::SetCursorPosY(settings_items_offset);
ImGui::PopStyleVar(); ImGui::PopStyleVar();
// OK // OK
@@ -291,16 +275,27 @@ int Render::SelfHostedServerWindow() {
localization::cancel[localization_language_index_].c_str())) { localization::cancel[localization_language_index_].c_str())) {
show_self_hosted_server_config_window_ = false; show_self_hosted_server_config_window_ = false;
self_hosted_server_config_window_pos_reset_ = true; self_hosted_server_config_window_pos_reset_ = true;
strncpy(signal_server_ip_self_,
strncpy(signal_server_ip_self_, signal_server_ip_, config_center_->GetSignalServerHost().c_str(),
sizeof(signal_server_ip_self_) - 1); sizeof(signal_server_ip_self_) - 1);
signal_server_ip_self_[sizeof(signal_server_ip_self_) - 1] = '\0'; signal_server_ip_self_[sizeof(signal_server_ip_self_) - 1] = '\0';
strncpy(signal_server_port_self_, signal_server_port_, int signal_port = config_center_->GetSignalServerPort();
sizeof(signal_server_port_self_) - 1); if (signal_port > 0) {
signal_server_port_self_[sizeof(signal_server_port_self_) - 1] = '\0'; strncpy(signal_server_port_self_, std::to_string(signal_port).c_str(),
config_center_->SetServerHost(signal_server_ip_self_); sizeof(signal_server_port_self_) - 1);
config_center_->SetServerPort(atoi(signal_server_port_self_)); signal_server_port_self_[sizeof(signal_server_port_self_) - 1] = '\0';
tls_cert_path_self_.clear(); } else {
signal_server_port_self_[0] = '\0';
}
int coturn_port = config_center_->GetCoturnServerPort();
if (coturn_port > 0) {
strncpy(coturn_server_port_self_, std::to_string(coturn_port).c_str(),
sizeof(coturn_server_port_self_) - 1);
coturn_server_port_self_[sizeof(coturn_server_port_self_) - 1] = '\0';
} else {
coturn_server_port_self_[0] = '\0';
}
tls_cert_path_self_ = config_center_->GetCertFilePath();
} }
ImGui::SetWindowFontScale(1.0f); ImGui::SetWindowFontScale(1.0f);