mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-12-16 20:17:10 +08:00
Compare commits
3 Commits
e09243f1ec
...
b2654ea9db
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b2654ea9db | ||
|
|
8f8e415262 | ||
|
|
5ff624f7b2 |
16
README.md
16
README.md
@@ -229,21 +229,19 @@ sudo mkdir -p /var/lib/crossdesk /var/log/crossdesk
|
|||||||
sudo chown -R $(id -u):$(id -g) /var/lib/crossdesk /var/log/crossdesk
|
sudo chown -R $(id -u):$(id -g) /var/lib/crossdesk /var/log/crossdesk
|
||||||
```
|
```
|
||||||
|
|
||||||
## 证书文件
|
|
||||||
在宿主机的 `/var/lib/crossdesk/certs` 路径下可找到证书文件 `crossdesk.cn_root.crt`,下载到你的客户端主机,并在客户端的**自托管服务器设置**中选择相应的**证书文件路径**。
|
|
||||||
|
|
||||||
### 客户端
|
### 客户端
|
||||||
1. 点击右上角设置进入设置页面。<br>
|
1. 点击右上角设置进入设置页面。<br><br>
|
||||||
<img width="600" height="210" alt="image" src="https://github.com/user-attachments/assets/6431131d-b32a-4726-8783-6788f47baa3b" /><br><br>
|
<img width="600" height="210" alt="image" src="https://github.com/user-attachments/assets/6431131d-b32a-4726-8783-6788f47baa3b" /><br><br>
|
||||||
|
|
||||||
3. 点击点击**自托管服务器配置**。<br><br>
|
2. 点击点击`自托管服务器配置`按钮。<br><br>
|
||||||
<img width="600" height="160" alt="image" src="https://github.com/user-attachments/assets/24c761a3-1985-4d7e-84be-787383c2afb8" /><br><br>
|
<img width="600" height="140" alt="image" src="https://github.com/user-attachments/assets/24c761a3-1985-4d7e-84be-787383c2afb8" /><br><br>
|
||||||
|
|
||||||
5. 在**证书文件路径**选择框中找到 **crossdesk.cn_root.crt** 的存放路径,选中 **crossdesk.cn_root.crt**,点击确认。<br><br>
|
3. 输入`服务器地址`(**EXTERNAL_IP**)、`信令服务端口`(**CROSSDESK_SERVER_PORT**)、`中继服务端口`(**COTURN_PORT**)。<br><br>
|
||||||
<img width="600" height="220" alt="image" src="https://github.com/user-attachments/assets/4af7cd3a-c72e-44fb-b032-30e050019c2a" /><br><br>
|
<img width="600" height="200" alt="image" src="https://github.com/user-attachments/assets/9a32ddd5-37f8-4bee-9a51-eae295820f9a" /><br><br>
|
||||||
|
|
||||||
7. 勾选使用**自托管服务器配置**,点击确认配置生效。<br><br>
|
4. 后续如果自托管服务器被重置或因其他原因导致证书更换,可以点击`重置证书指纹`按钮重置客户端保存的证书指纹。<br><br>
|
||||||
<img width="600" height="160" alt="image" src="https://github.com/user-attachments/assets/1e455dc3-4087-4f37-a544-1ff9f8789383" /><br><br>
|
<img width="600" height="200" alt="image" src="https://github.com/user-attachments/assets/d9e423ab-0c2b-4fab-b132-4dc27462d704" /><br><br>
|
||||||
|
|
||||||
### Web 客户端
|
### Web 客户端
|
||||||
详情见项目 [CrossDesk Web Client](https://github.com/kunkundi/crossdesk-web-client)。
|
详情见项目 [CrossDesk Web Client](https://github.com/kunkundi/crossdesk-web-client)。
|
||||||
|
|||||||
16
README_EN.md
16
README_EN.md
@@ -238,25 +238,21 @@ sudo mkdir -p /var/lib/crossdesk /var/log/crossdesk
|
|||||||
sudo chown -R $(id -u):$(id -g) /var/lib/crossdesk /var/log/crossdesk
|
sudo chown -R $(id -u):$(id -g) /var/lib/crossdesk /var/log/crossdesk
|
||||||
```
|
```
|
||||||
|
|
||||||
### Certificate Files
|
|
||||||
You can find the certificate file `crossdesk.cn_root.crt` at `/var/lib/crossdesk/certs` on the host machine.
|
|
||||||
Download it to your client device and select it in the **Certificate File Path** field under the CrossDesk client’s **Self-Hosted Server Settings**.
|
|
||||||
|
|
||||||
### Server Side
|
### Server Side
|
||||||
Place **crossdesk.cn.key** and **crossdesk.cn_bundle.crt** into the **/path/to/your/certs** directory.
|
Place **crossdesk.cn.key** and **crossdesk.cn_bundle.crt** into the **/path/to/your/certs** directory.
|
||||||
|
|
||||||
### Client Side
|
### Client Side
|
||||||
1. Click the settings icon in the top-right corner to enter the settings page.<br>
|
1. Click the settings icon in the top-right corner to enter the settings page.<br><br>
|
||||||
<img width="600" height="210" alt="image" src="https://github.com/user-attachments/assets/6431131d-b32a-4726-8783-6788f47baa3b" /><br><br>
|
<img width="600" height="210" alt="image" src="https://github.com/user-attachments/assets/6431131d-b32a-4726-8783-6788f47baa3b" /><br><br>
|
||||||
|
|
||||||
2. Click **Self-Hosted Server Configuration**.<br><br>
|
2. Click `Self-Hosted Server Configuration` button.<br><br>
|
||||||
<img width="600" height="160" alt="image" src="https://github.com/user-attachments/assets/24c761a3-1985-4d7e-84be-787383c2afb8" /><br><br>
|
<img width="600" height="160" alt="image" src="https://github.com/user-attachments/assets/24c761a3-1985-4d7e-84be-787383c2afb8" /><br><br>
|
||||||
|
|
||||||
3. In the **Certificate File Path** selection, locate and select the **crossdesk.cn_root.crt** file.<br><br>
|
3. Enter the `Server Address` (**EXTERNAL_IP**), `Signaling Service Port` (**CROSSDESK_SERVER_PORT**), and `Relay Service Port` (**COTURN_PORT**).<br><br>
|
||||||
<img width="600" height="220" alt="image" src="https://github.com/user-attachments/assets/4af7cd3a-c72e-44fb-b032-30e050019c2a" /><br><br>
|
<img width="600" height="200" alt="image" src="https://github.com/user-attachments/assets/9a32ddd5-37f8-4bee-9a51-eae295820f9a" /><br><br>
|
||||||
|
|
||||||
4. Check the option to use **Self-Hosted Server Configuration**.<br><br>
|
4. If the self-hosted server is later reset or the certificate is replaced for any reason, you can click the `Reset Certificate Fingerprint` button to clear the certificate fingerprint saved on the client.<br><br>
|
||||||
<img width="600" height="160" alt="image" src="https://github.com/user-attachments/assets/1e455dc3-4087-4f37-a544-1ff9f8789383" /><br><br>
|
<img width="600" height="200" alt="image" src="https://github.com/user-attachments/assets/d9e423ab-0c2b-4fab-b132-4dc27462d704" /><br><br>
|
||||||
|
|
||||||
### Web Client
|
### Web Client
|
||||||
See [CrossDesk Web Client](https://github.com/kunkundi/crossdesk-web-client)。
|
See [CrossDesk Web Client](https://github.com/kunkundi/crossdesk-web-client)。
|
||||||
|
|||||||
@@ -77,6 +77,64 @@ int ConfigCenter::Load() {
|
|||||||
} else {
|
} else {
|
||||||
cert_file_path_ = "";
|
cert_file_path_ = "";
|
||||||
}
|
}
|
||||||
|
const char* cert_fingerprint_value =
|
||||||
|
ini_.GetValue(section_, "cert_fingerprint", nullptr);
|
||||||
|
if (cert_fingerprint_value != nullptr && strlen(cert_fingerprint_value) > 0) {
|
||||||
|
cert_fingerprint_ = cert_fingerprint_value;
|
||||||
|
} else {
|
||||||
|
cert_fingerprint_ = "";
|
||||||
|
}
|
||||||
|
const char* cert_fingerprint_server_host_value =
|
||||||
|
ini_.GetValue(section_, "cert_fingerprint_server_host", nullptr);
|
||||||
|
if (cert_fingerprint_server_host_value != nullptr &&
|
||||||
|
strlen(cert_fingerprint_server_host_value) > 0) {
|
||||||
|
cert_fingerprint_server_host_ = cert_fingerprint_server_host_value;
|
||||||
|
} else {
|
||||||
|
cert_fingerprint_server_host_ = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* default_cert_fingerprint_value =
|
||||||
|
ini_.GetValue(section_, "default_cert_fingerprint", nullptr);
|
||||||
|
if (default_cert_fingerprint_value != nullptr &&
|
||||||
|
strlen(default_cert_fingerprint_value) > 0) {
|
||||||
|
default_cert_fingerprint_ = default_cert_fingerprint_value;
|
||||||
|
} else {
|
||||||
|
default_cert_fingerprint_ = "";
|
||||||
|
}
|
||||||
|
const char* default_cert_fingerprint_server_host_value =
|
||||||
|
ini_.GetValue(section_, "default_cert_fingerprint_server_host", nullptr);
|
||||||
|
if (default_cert_fingerprint_server_host_value != nullptr &&
|
||||||
|
strlen(default_cert_fingerprint_server_host_value) > 0) {
|
||||||
|
default_cert_fingerprint_server_host_ =
|
||||||
|
default_cert_fingerprint_server_host_value;
|
||||||
|
} else {
|
||||||
|
default_cert_fingerprint_server_host_ = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (enable_self_hosted_ && !cert_fingerprint_.empty() &&
|
||||||
|
!cert_fingerprint_server_host_.empty() &&
|
||||||
|
signal_server_host_ != cert_fingerprint_server_host_) {
|
||||||
|
LOG_INFO("Server IP changed from {} to {}, clearing old fingerprint",
|
||||||
|
cert_fingerprint_server_host_, signal_server_host_);
|
||||||
|
cert_fingerprint_.clear();
|
||||||
|
cert_fingerprint_server_host_.clear();
|
||||||
|
ini_.Delete(section_, "cert_fingerprint", false);
|
||||||
|
ini_.Delete(section_, "cert_fingerprint_server_host", false);
|
||||||
|
ini_.SaveFile(config_path_.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!enable_self_hosted_ && !default_cert_fingerprint_.empty() &&
|
||||||
|
!default_cert_fingerprint_server_host_.empty() &&
|
||||||
|
signal_server_host_default_ != default_cert_fingerprint_server_host_) {
|
||||||
|
LOG_INFO(
|
||||||
|
"Default server IP changed from {} to {}, clearing old fingerprint",
|
||||||
|
default_cert_fingerprint_server_host_, signal_server_host_default_);
|
||||||
|
default_cert_fingerprint_.clear();
|
||||||
|
default_cert_fingerprint_server_host_.clear();
|
||||||
|
ini_.Delete(section_, "default_cert_fingerprint", false);
|
||||||
|
ini_.Delete(section_, "default_cert_fingerprint_server_host", false);
|
||||||
|
ini_.SaveFile(config_path_.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
enable_autostart_ =
|
enable_autostart_ =
|
||||||
ini_.GetBoolValue(section_, "enable_autostart", enable_autostart_);
|
ini_.GetBoolValue(section_, "enable_autostart", enable_autostart_);
|
||||||
@@ -108,6 +166,18 @@ int ConfigCenter::Save() {
|
|||||||
ini_.SetLongValue(section_, "coturn_server_port",
|
ini_.SetLongValue(section_, "coturn_server_port",
|
||||||
static_cast<long>(coturn_server_port_));
|
static_cast<long>(coturn_server_port_));
|
||||||
ini_.SetValue(section_, "cert_file_path", cert_file_path_.c_str());
|
ini_.SetValue(section_, "cert_file_path", cert_file_path_.c_str());
|
||||||
|
if (!cert_fingerprint_.empty()) {
|
||||||
|
ini_.SetValue(section_, "cert_fingerprint", cert_fingerprint_.c_str());
|
||||||
|
ini_.SetValue(section_, "cert_fingerprint_server_host",
|
||||||
|
cert_fingerprint_server_host_.c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!default_cert_fingerprint_.empty()) {
|
||||||
|
ini_.SetValue(section_, "default_cert_fingerprint",
|
||||||
|
default_cert_fingerprint_.c_str());
|
||||||
|
ini_.SetValue(section_, "default_cert_fingerprint_server_host",
|
||||||
|
default_cert_fingerprint_server_host_.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
ini_.SetBoolValue(section_, "enable_autostart", enable_autostart_);
|
ini_.SetBoolValue(section_, "enable_autostart", enable_autostart_);
|
||||||
@@ -200,6 +270,15 @@ int ConfigCenter::SetSrtp(bool enable_srtp) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int ConfigCenter::SetServerHost(const std::string& signal_server_host) {
|
int ConfigCenter::SetServerHost(const std::string& signal_server_host) {
|
||||||
|
if (enable_self_hosted_ && !cert_fingerprint_.empty() &&
|
||||||
|
signal_server_host != signal_server_host_) {
|
||||||
|
LOG_INFO("Server IP changed from {} to {}, clearing old fingerprint",
|
||||||
|
signal_server_host_, signal_server_host);
|
||||||
|
cert_fingerprint_.clear();
|
||||||
|
cert_fingerprint_server_host_.clear();
|
||||||
|
ini_.Delete(section_, "cert_fingerprint", false);
|
||||||
|
ini_.Delete(section_, "cert_fingerprint_server_host", false);
|
||||||
|
}
|
||||||
signal_server_host_ = signal_server_host;
|
signal_server_host_ = signal_server_host;
|
||||||
ini_.SetValue(section_, "signal_server_host", signal_server_host_.c_str());
|
ini_.SetValue(section_, "signal_server_host", signal_server_host_.c_str());
|
||||||
SI_Error rc = ini_.SaveFile(config_path_.c_str());
|
SI_Error rc = ini_.SaveFile(config_path_.c_str());
|
||||||
@@ -241,6 +320,57 @@ int ConfigCenter::SetCertFilePath(const std::string& cert_file_path) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ConfigCenter::SetCertFingerprint(const std::string& fingerprint) {
|
||||||
|
cert_fingerprint_ = fingerprint;
|
||||||
|
cert_fingerprint_server_host_ = signal_server_host_;
|
||||||
|
ini_.SetValue(section_, "cert_fingerprint", cert_fingerprint_.c_str());
|
||||||
|
ini_.SetValue(section_, "cert_fingerprint_server_host",
|
||||||
|
cert_fingerprint_server_host_.c_str());
|
||||||
|
SI_Error rc = ini_.SaveFile(config_path_.c_str());
|
||||||
|
if (rc < 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ConfigCenter::SetDefaultCertFingerprint(const std::string& fingerprint) {
|
||||||
|
default_cert_fingerprint_ = fingerprint;
|
||||||
|
default_cert_fingerprint_server_host_ = signal_server_host_default_;
|
||||||
|
ini_.SetValue(section_, "default_cert_fingerprint",
|
||||||
|
default_cert_fingerprint_.c_str());
|
||||||
|
ini_.SetValue(section_, "default_cert_fingerprint_server_host",
|
||||||
|
default_cert_fingerprint_server_host_.c_str());
|
||||||
|
SI_Error rc = ini_.SaveFile(config_path_.c_str());
|
||||||
|
if (rc < 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ConfigCenter::ClearCertFingerprint() {
|
||||||
|
cert_fingerprint_.clear();
|
||||||
|
cert_fingerprint_server_host_.clear();
|
||||||
|
ini_.Delete(section_, "cert_fingerprint", false);
|
||||||
|
ini_.Delete(section_, "cert_fingerprint_server_host", false);
|
||||||
|
SI_Error rc = ini_.SaveFile(config_path_.c_str());
|
||||||
|
if (rc < 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ConfigCenter::ClearDefaultCertFingerprint() {
|
||||||
|
default_cert_fingerprint_.clear();
|
||||||
|
default_cert_fingerprint_server_host_.clear();
|
||||||
|
ini_.Delete(section_, "default_cert_fingerprint", false);
|
||||||
|
ini_.Delete(section_, "default_cert_fingerprint_server_host", false);
|
||||||
|
SI_Error rc = ini_.SaveFile(config_path_.c_str());
|
||||||
|
if (rc < 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
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_);
|
||||||
@@ -272,6 +402,28 @@ int ConfigCenter::SetSelfHosted(bool enable_self_hosted) {
|
|||||||
if (cert_file_path_value != nullptr && strlen(cert_file_path_value) > 0) {
|
if (cert_file_path_value != nullptr && strlen(cert_file_path_value) > 0) {
|
||||||
cert_file_path_ = cert_file_path_value;
|
cert_file_path_ = cert_file_path_value;
|
||||||
}
|
}
|
||||||
|
const char* cert_fingerprint_value =
|
||||||
|
ini_.GetValue(section_, "cert_fingerprint", nullptr);
|
||||||
|
if (cert_fingerprint_value != nullptr &&
|
||||||
|
strlen(cert_fingerprint_value) > 0) {
|
||||||
|
cert_fingerprint_ = cert_fingerprint_value;
|
||||||
|
}
|
||||||
|
const char* cert_fingerprint_server_host_value =
|
||||||
|
ini_.GetValue(section_, "cert_fingerprint_server_host", nullptr);
|
||||||
|
if (cert_fingerprint_server_host_value != nullptr &&
|
||||||
|
strlen(cert_fingerprint_server_host_value) > 0) {
|
||||||
|
cert_fingerprint_server_host_ = cert_fingerprint_server_host_value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!cert_fingerprint_.empty() && !cert_fingerprint_server_host_.empty() &&
|
||||||
|
signal_server_host_ != cert_fingerprint_server_host_) {
|
||||||
|
LOG_INFO("Server IP changed from {} to {}, clearing old fingerprint",
|
||||||
|
cert_fingerprint_server_host_, signal_server_host_);
|
||||||
|
cert_fingerprint_.clear();
|
||||||
|
cert_fingerprint_server_host_.clear();
|
||||||
|
ini_.Delete(section_, "cert_fingerprint", false);
|
||||||
|
ini_.Delete(section_, "cert_fingerprint_server_host", false);
|
||||||
|
}
|
||||||
|
|
||||||
ini_.SetValue(section_, "signal_server_host", signal_server_host_.c_str());
|
ini_.SetValue(section_, "signal_server_host", signal_server_host_.c_str());
|
||||||
ini_.SetLongValue(section_, "signal_server_port",
|
ini_.SetLongValue(section_, "signal_server_port",
|
||||||
@@ -279,6 +431,11 @@ int ConfigCenter::SetSelfHosted(bool enable_self_hosted) {
|
|||||||
ini_.SetLongValue(section_, "coturn_server_port",
|
ini_.SetLongValue(section_, "coturn_server_port",
|
||||||
static_cast<long>(coturn_server_port_));
|
static_cast<long>(coturn_server_port_));
|
||||||
ini_.SetValue(section_, "cert_file_path", cert_file_path_.c_str());
|
ini_.SetValue(section_, "cert_file_path", cert_file_path_.c_str());
|
||||||
|
if (!cert_fingerprint_.empty()) {
|
||||||
|
ini_.SetValue(section_, "cert_fingerprint", cert_fingerprint_.c_str());
|
||||||
|
ini_.SetValue(section_, "cert_fingerprint_server_host",
|
||||||
|
cert_fingerprint_server_host_.c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SI_Error rc = ini_.SaveFile(config_path_.c_str());
|
SI_Error rc = ini_.SaveFile(config_path_.c_str());
|
||||||
@@ -368,6 +525,14 @@ int ConfigCenter::GetCoturnServerPort() const { return coturn_server_port_; }
|
|||||||
|
|
||||||
std::string ConfigCenter::GetCertFilePath() const { return cert_file_path_; }
|
std::string ConfigCenter::GetCertFilePath() const { return cert_file_path_; }
|
||||||
|
|
||||||
|
std::string ConfigCenter::GetCertFingerprint() const {
|
||||||
|
return cert_fingerprint_;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string ConfigCenter::GetDefaultCertFingerprint() const {
|
||||||
|
return default_cert_fingerprint_;
|
||||||
|
}
|
||||||
|
|
||||||
std::string ConfigCenter::GetDefaultServerHost() const {
|
std::string ConfigCenter::GetDefaultServerHost() const {
|
||||||
return signal_server_host_default_;
|
return signal_server_host_default_;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,6 +38,10 @@ class ConfigCenter {
|
|||||||
int SetServerPort(int signal_server_port);
|
int SetServerPort(int signal_server_port);
|
||||||
int SetCoturnServerPort(int coturn_server_port);
|
int SetCoturnServerPort(int coturn_server_port);
|
||||||
int SetCertFilePath(const std::string& cert_file_path);
|
int SetCertFilePath(const std::string& cert_file_path);
|
||||||
|
int SetCertFingerprint(const std::string& fingerprint);
|
||||||
|
int SetDefaultCertFingerprint(const std::string& fingerprint);
|
||||||
|
int ClearCertFingerprint();
|
||||||
|
int ClearDefaultCertFingerprint();
|
||||||
int SetSelfHosted(bool enable_self_hosted);
|
int SetSelfHosted(bool enable_self_hosted);
|
||||||
int SetMinimizeToTray(bool enable_minimize_to_tray);
|
int SetMinimizeToTray(bool enable_minimize_to_tray);
|
||||||
int SetAutostart(bool enable_autostart);
|
int SetAutostart(bool enable_autostart);
|
||||||
@@ -56,6 +60,8 @@ class ConfigCenter {
|
|||||||
int GetSignalServerPort() const;
|
int GetSignalServerPort() const;
|
||||||
int GetCoturnServerPort() const;
|
int GetCoturnServerPort() const;
|
||||||
std::string GetCertFilePath() const;
|
std::string GetCertFilePath() const;
|
||||||
|
std::string GetCertFingerprint() const;
|
||||||
|
std::string GetDefaultCertFingerprint() const;
|
||||||
std::string GetDefaultServerHost() const;
|
std::string GetDefaultServerHost() const;
|
||||||
int GetDefaultSignalServerPort() const;
|
int GetDefaultSignalServerPort() const;
|
||||||
int GetDefaultCoturnServerPort() const;
|
int GetDefaultCoturnServerPort() const;
|
||||||
@@ -88,6 +94,10 @@ class ConfigCenter {
|
|||||||
int coturn_server_port_default_ = 3478;
|
int coturn_server_port_default_ = 3478;
|
||||||
std::string cert_file_path_ = "";
|
std::string cert_file_path_ = "";
|
||||||
std::string cert_file_path_default_ = "";
|
std::string cert_file_path_default_ = "";
|
||||||
|
std::string cert_fingerprint_ = "";
|
||||||
|
std::string cert_fingerprint_server_host_ = "";
|
||||||
|
std::string default_cert_fingerprint_ = "";
|
||||||
|
std::string default_cert_fingerprint_server_host_ = "";
|
||||||
bool enable_self_hosted_ = false;
|
bool enable_self_hosted_ = false;
|
||||||
bool enable_minimize_to_tray_ = false;
|
bool enable_minimize_to_tray_ = false;
|
||||||
bool enable_autostart_ = false;
|
bool enable_autostart_ = false;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -116,6 +116,9 @@ static std::vector<std::string> self_hosted_server_certificate_path = {
|
|||||||
reinterpret_cast<const char*>(u8"证书文件路径:"), "Certificate File Path:"};
|
reinterpret_cast<const char*>(u8"证书文件路径:"), "Certificate File Path:"};
|
||||||
static std::vector<std::string> select_a_file = {
|
static std::vector<std::string> select_a_file = {
|
||||||
reinterpret_cast<const char*>(u8"请选择文件"), "Please select a file"};
|
reinterpret_cast<const char*>(u8"请选择文件"), "Please select a file"};
|
||||||
|
static std::vector<std::string> reset_cert_fingerprint = {
|
||||||
|
reinterpret_cast<const char*>(u8"重置证书指纹"),
|
||||||
|
"Reset Certificate Fingerprint"};
|
||||||
static std::vector<std::string> ok = {reinterpret_cast<const char*>(u8"确认"),
|
static std::vector<std::string> ok = {reinterpret_cast<const char*>(u8"确认"),
|
||||||
"OK"};
|
"OK"};
|
||||||
static std::vector<std::string> cancel = {
|
static std::vector<std::string> cancel = {
|
||||||
|
|||||||
@@ -537,13 +537,13 @@ int Render::CreateConnectionPeer() {
|
|||||||
std::string signal_server_ip;
|
std::string signal_server_ip;
|
||||||
int signal_server_port;
|
int signal_server_port;
|
||||||
int coturn_server_port;
|
int coturn_server_port;
|
||||||
std::string tls_cert_path;
|
std::string tls_cert_fingerprint;
|
||||||
|
|
||||||
if (config_center_->IsSelfHosted()) {
|
if (config_center_->IsSelfHosted()) {
|
||||||
signal_server_ip = config_center_->GetSignalServerHost();
|
signal_server_ip = config_center_->GetSignalServerHost();
|
||||||
signal_server_port = config_center_->GetSignalServerPort();
|
signal_server_port = config_center_->GetSignalServerPort();
|
||||||
coturn_server_port = config_center_->GetCoturnServerPort();
|
coturn_server_port = config_center_->GetCoturnServerPort();
|
||||||
tls_cert_path = config_center_->GetCertFilePath();
|
tls_cert_fingerprint = config_center_->GetCertFingerprint();
|
||||||
|
|
||||||
std::string current_self_hosted_ip = config_center_->GetSignalServerHost();
|
std::string current_self_hosted_ip = config_center_->GetSignalServerHost();
|
||||||
bool use_cached_id = false;
|
bool use_cached_id = false;
|
||||||
@@ -604,7 +604,7 @@ int Render::CreateConnectionPeer() {
|
|||||||
signal_server_ip = config_center_->GetDefaultServerHost();
|
signal_server_ip = config_center_->GetDefaultServerHost();
|
||||||
signal_server_port = config_center_->GetDefaultSignalServerPort();
|
signal_server_port = config_center_->GetDefaultSignalServerPort();
|
||||||
coturn_server_port = config_center_->GetDefaultCoturnServerPort();
|
coturn_server_port = config_center_->GetDefaultCoturnServerPort();
|
||||||
tls_cert_path = config_center_->GetDefaultCertFilePath();
|
tls_cert_fingerprint = config_center_->GetDefaultCertFingerprint();
|
||||||
params_.user_id = client_id_with_password_;
|
params_.user_id = client_id_with_password_;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -649,9 +649,30 @@ int Render::CreateConnectionPeer() {
|
|||||||
strncpy((char*)params_.turn_server_password, "crossdeskpw",
|
strncpy((char*)params_.turn_server_password, "crossdeskpw",
|
||||||
sizeof(params_.turn_server_password) - 1);
|
sizeof(params_.turn_server_password) - 1);
|
||||||
params_.turn_server_password[sizeof(params_.turn_server_password) - 1] = '\0';
|
params_.turn_server_password[sizeof(params_.turn_server_password) - 1] = '\0';
|
||||||
strncpy(params_.tls_cert_path, tls_cert_path.c_str(),
|
strncpy(params_.tls_cert_fingerprint, tls_cert_fingerprint.c_str(),
|
||||||
sizeof(params_.tls_cert_path) - 1);
|
sizeof(params_.tls_cert_fingerprint) - 1);
|
||||||
params_.tls_cert_path[sizeof(params_.tls_cert_path) - 1] = '\0';
|
params_.tls_cert_fingerprint[sizeof(params_.tls_cert_fingerprint) - 1] = '\0';
|
||||||
|
|
||||||
|
if (config_center_->IsSelfHosted()) {
|
||||||
|
params_.on_cert_fingerprint = [](const char* fingerprint, void* user_data) {
|
||||||
|
Render* render = static_cast<Render*>(user_data);
|
||||||
|
if (render && render->config_center_) {
|
||||||
|
render->config_center_->SetCertFingerprint(fingerprint);
|
||||||
|
LOG_INFO("Saved self-hosted certificate fingerprint: {}", fingerprint);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
params_.fingerprint_user_data = this;
|
||||||
|
} else {
|
||||||
|
params_.on_cert_fingerprint = [](const char* fingerprint, void* user_data) {
|
||||||
|
Render* render = static_cast<Render*>(user_data);
|
||||||
|
if (render && render->config_center_) {
|
||||||
|
render->config_center_->SetDefaultCertFingerprint(fingerprint);
|
||||||
|
LOG_INFO("Saved default server certificate fingerprint: {}",
|
||||||
|
fingerprint);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
params_.fingerprint_user_data = this;
|
||||||
|
}
|
||||||
|
|
||||||
strncpy(params_.log_path, dll_log_path_.c_str(),
|
strncpy(params_.log_path, dll_log_path_.c_str(),
|
||||||
sizeof(params_.log_path) - 1);
|
sizeof(params_.log_path) - 1);
|
||||||
|
|||||||
@@ -214,20 +214,30 @@ int Render::SelfHostedServerWindow() {
|
|||||||
|
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
|
|
||||||
|
// {
|
||||||
|
// ImGui::AlignTextToFramePadding();
|
||||||
|
// ImGui::Text(
|
||||||
|
// "%s",
|
||||||
|
// localization::reset_cert_fingerprint[localization_language_index_]
|
||||||
|
// .c_str());
|
||||||
|
// ImGui::SameLine();
|
||||||
|
// if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
|
||||||
|
// ImGui::SetCursorPosX(title_bar_button_width_ * 2.5f);
|
||||||
|
// } else {
|
||||||
|
// ImGui::SetCursorPosX(title_bar_button_width_ * 3.43f);
|
||||||
|
// }
|
||||||
|
// ImGui::SetNextItemWidth(title_bar_button_width_ * 3.8f);
|
||||||
|
|
||||||
|
// ShowSimpleFileBrowser();
|
||||||
|
// }
|
||||||
{
|
{
|
||||||
ImGui::AlignTextToFramePadding();
|
ImGui::AlignTextToFramePadding();
|
||||||
ImGui::Text("%s", localization::self_hosted_server_certificate_path
|
if (ImGui::Button(localization::reset_cert_fingerprint
|
||||||
[localization_language_index_]
|
[localization_language_index_]
|
||||||
.c_str());
|
.c_str())) {
|
||||||
ImGui::SameLine();
|
config_center_->ClearCertFingerprint();
|
||||||
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
|
LOG_INFO("Certificate fingerprint cleared by user");
|
||||||
ImGui::SetCursorPosX(title_bar_button_width_ * 2.5f);
|
|
||||||
} else {
|
|
||||||
ImGui::SetCursorPosX(title_bar_button_width_ * 3.43f);
|
|
||||||
}
|
}
|
||||||
ImGui::SetNextItemWidth(title_bar_button_width_ * 3.8f);
|
|
||||||
|
|
||||||
ShowSimpleFileBrowser();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (stream_window_inited_) {
|
if (stream_window_inited_) {
|
||||||
|
|||||||
Submodule submodules/minirtc updated: 9eebd7c4f3...f9810444ee
Reference in New Issue
Block a user