mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-10-26 20:25:34 +08:00
[feat] Use server to generate transmission id and client id
This commit is contained in:
@@ -15,7 +15,7 @@
|
|||||||
#define REMOTE_WINDOW_HEIGHT_CN 280
|
#define REMOTE_WINDOW_HEIGHT_CN 280
|
||||||
#define MENU_WINDOW_WIDTH_EN 190
|
#define MENU_WINDOW_WIDTH_EN 190
|
||||||
#define MENU_WINDOW_HEIGHT_EN 245
|
#define MENU_WINDOW_HEIGHT_EN 245
|
||||||
#define IPUT_WINDOW_WIDTH 190
|
#define IPUT_WINDOW_WIDTH 160
|
||||||
#define INPUT_WINDOW_PADDING_CN 66
|
#define INPUT_WINDOW_PADDING_CN 66
|
||||||
#define INPUT_WINDOW_PADDING_EN 96
|
#define INPUT_WINDOW_PADDING_EN 96
|
||||||
#define SETTINGS_WINDOW_WIDTH_CN 181
|
#define SETTINGS_WINDOW_WIDTH_CN 181
|
||||||
|
|||||||
@@ -47,9 +47,17 @@ int Render::LocalWindow() {
|
|||||||
ImGui::SetNextItemWidth(IPUT_WINDOW_WIDTH);
|
ImGui::SetNextItemWidth(IPUT_WINDOW_WIDTH);
|
||||||
ImGui::SetWindowFontScale(1.0f);
|
ImGui::SetWindowFontScale(1.0f);
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0f);
|
ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0f);
|
||||||
|
|
||||||
|
std::string client_id_show = "";
|
||||||
|
for (int i = 0; i < sizeof(client_id_); i++) {
|
||||||
|
client_id_show += client_id_[i];
|
||||||
|
if (i == 2 || i == 5) {
|
||||||
|
client_id_show += " ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::InputText(
|
ImGui::InputText(
|
||||||
"##local_id", (char *)mac_addr_str_.c_str(),
|
"##local_id", (char *)client_id_show.c_str(), sizeof(client_id_show),
|
||||||
mac_addr_str_.length() + 1,
|
|
||||||
ImGuiInputTextFlags_CharsUppercase | ImGuiInputTextFlags_ReadOnly);
|
ImGuiInputTextFlags_CharsUppercase | ImGuiInputTextFlags_ReadOnly);
|
||||||
ImGui::PopStyleVar();
|
ImGui::PopStyleVar();
|
||||||
|
|
||||||
@@ -61,7 +69,7 @@ int Render::LocalWindow() {
|
|||||||
|
|
||||||
if (ImGui::Button(ICON_FA_COPY, ImVec2(35, 38))) {
|
if (ImGui::Button(ICON_FA_COPY, ImVec2(35, 38))) {
|
||||||
local_id_copied_ = true;
|
local_id_copied_ = true;
|
||||||
ImGui::SetClipboardText(mac_addr_str_.c_str());
|
ImGui::SetClipboardText(client_id_);
|
||||||
copy_start_time_ = ImGui::GetTime();
|
copy_start_time_ = ImGui::GetTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -61,8 +61,7 @@ int Render::RemoteWindow() {
|
|||||||
peer_reserved_ = CreatePeer(¶ms_);
|
peer_reserved_ = CreatePeer(¶ms_);
|
||||||
if (peer_reserved_) {
|
if (peer_reserved_) {
|
||||||
LOG_INFO("Create peer[reserved] instance successful");
|
LOG_INFO("Create peer[reserved] instance successful");
|
||||||
std::string local_id = "C-" + mac_addr_str_;
|
Init(peer_reserved_, "");
|
||||||
Init(peer_reserved_, local_id.c_str());
|
|
||||||
LOG_INFO("Peer[reserved] init finish");
|
LOG_INFO("Peer[reserved] init finish");
|
||||||
} else {
|
} else {
|
||||||
LOG_INFO("Create peer[reserved] instance failed");
|
LOG_INFO("Create peer[reserved] instance failed");
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ int Render::SaveSettingsIntoCacheFile() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fseek(cd_cache_file_, 0, SEEK_SET);
|
fseek(cd_cache_file_, 0, SEEK_SET);
|
||||||
|
strncpy(cd_cache_.client_id, client_id_, sizeof(client_id_));
|
||||||
strncpy(cd_cache_.password, password_saved_.c_str(),
|
strncpy(cd_cache_.password, password_saved_.c_str(),
|
||||||
password_saved_.length());
|
password_saved_.length());
|
||||||
memcpy(&cd_cache_.language, &language_button_value_,
|
memcpy(&cd_cache_.language, &language_button_value_,
|
||||||
@@ -98,6 +99,8 @@ int Render::LoadSettingsIntoCacheFile() {
|
|||||||
fseek(cd_cache_file_, 0, SEEK_SET);
|
fseek(cd_cache_file_, 0, SEEK_SET);
|
||||||
fread(&cd_cache_, sizeof(cd_cache_), 1, cd_cache_file_);
|
fread(&cd_cache_, sizeof(cd_cache_), 1, cd_cache_file_);
|
||||||
fclose(cd_cache_file_);
|
fclose(cd_cache_file_);
|
||||||
|
|
||||||
|
strncpy(client_id_, cd_cache_.client_id, sizeof(client_id_));
|
||||||
password_saved_ = cd_cache_.password;
|
password_saved_ = cd_cache_.password;
|
||||||
language_button_value_ = cd_cache_.language;
|
language_button_value_ = cd_cache_.language;
|
||||||
video_quality_button_value_ = cd_cache_.video_quality;
|
video_quality_button_value_ = cd_cache_.video_quality;
|
||||||
@@ -241,10 +244,9 @@ int Render::CreateConnectionPeer() {
|
|||||||
|
|
||||||
peer_ = CreatePeer(¶ms_);
|
peer_ = CreatePeer(¶ms_);
|
||||||
if (peer_) {
|
if (peer_) {
|
||||||
LOG_INFO("Create peer instance successful");
|
LOG_INFO("[{}] Create peer instance successful", client_id_);
|
||||||
local_id_ = mac_addr_str_;
|
Init(peer_, client_id_);
|
||||||
Init(peer_, local_id_.c_str());
|
LOG_INFO("[{}] Peer init finish", client_id_);
|
||||||
LOG_INFO("Peer init finish");
|
|
||||||
} else {
|
} else {
|
||||||
LOG_INFO("Create peer instance failed");
|
LOG_INFO("Create peer instance failed");
|
||||||
}
|
}
|
||||||
@@ -396,9 +398,8 @@ int Render::Run() {
|
|||||||
while (!exit_) {
|
while (!exit_) {
|
||||||
if (SignalStatus::SignalConnected == signal_status_ &&
|
if (SignalStatus::SignalConnected == signal_status_ &&
|
||||||
!is_create_connection_) {
|
!is_create_connection_) {
|
||||||
is_create_connection_ = CreateConnection(peer_, mac_addr_str_.c_str(),
|
is_create_connection_ =
|
||||||
password_saved_.c_str())
|
CreateConnection(peer_, client_id_, password_saved_.c_str()) ? false
|
||||||
? false
|
|
||||||
: true;
|
: true;
|
||||||
LOG_INFO("Connected with signal server, create p2p connection");
|
LOG_INFO("Connected with signal server, create p2p connection");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,8 +60,9 @@ class Render {
|
|||||||
|
|
||||||
static void OnConnectionStatusCb(ConnectionStatus status, void *user_data);
|
static void OnConnectionStatusCb(ConnectionStatus status, void *user_data);
|
||||||
|
|
||||||
static void NetStatusReport(TraversalMode mode, const unsigned short send,
|
static void NetStatusReport(int TransmissionId, TraversalMode mode,
|
||||||
const unsigned short receive, void *user_ptr);
|
const unsigned short send,
|
||||||
|
const unsigned short receive, void *user_data);
|
||||||
|
|
||||||
static SDL_HitTestResult HitTestCallback(SDL_Window *window,
|
static SDL_HitTestResult HitTestCallback(SDL_Window *window,
|
||||||
const SDL_Point *area, void *data);
|
const SDL_Point *area, void *data);
|
||||||
@@ -89,6 +90,7 @@ class Render {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
char client_id[10];
|
||||||
char password[7];
|
char password[7];
|
||||||
int language;
|
int language;
|
||||||
int video_quality;
|
int video_quality;
|
||||||
@@ -118,7 +120,6 @@ class Render {
|
|||||||
char input_password_tmp_[7] = "";
|
char input_password_tmp_[7] = "";
|
||||||
char input_password_[7] = "";
|
char input_password_[7] = "";
|
||||||
std::string random_password_ = "";
|
std::string random_password_ = "";
|
||||||
std::string password_saved_ = "";
|
|
||||||
std::string remote_password_ = "";
|
std::string remote_password_ = "";
|
||||||
std::string local_id_ = "";
|
std::string local_id_ = "";
|
||||||
char remote_id_[20] = "";
|
char remote_id_[20] = "";
|
||||||
@@ -251,6 +252,8 @@ class Render {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
char client_id_[10] = "";
|
||||||
|
std::string password_saved_ = "";
|
||||||
int language_button_value_ = 0;
|
int language_button_value_ = 0;
|
||||||
int video_quality_button_value_ = 0;
|
int video_quality_button_value_ = 0;
|
||||||
int video_encode_format_button_value_ = 0;
|
int video_encode_format_button_value_ = 0;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#include "device_controller.h"
|
#include "device_controller.h"
|
||||||
#include "localization.h"
|
#include "localization.h"
|
||||||
|
#include "rd_log.h"
|
||||||
#include "render.h"
|
#include "render.h"
|
||||||
|
|
||||||
// Refresh Event
|
// Refresh Event
|
||||||
@@ -230,7 +231,17 @@ void Render::OnConnectionStatusCb(ConnectionStatus status, void *user_data) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Render::NetStatusReport(TraversalMode mode, const unsigned short send,
|
void Render::NetStatusReport(int TransmissionId, TraversalMode mode,
|
||||||
const unsigned short receive, void *user_ptr) {
|
const unsigned short send,
|
||||||
printf("Net mode: [%d]\n", mode);
|
const unsigned short receive, void *user_data) {
|
||||||
|
Render *render = (Render *)user_data;
|
||||||
|
if (TransmissionId != 0) {
|
||||||
|
std::string client_id = std::to_string(TransmissionId);
|
||||||
|
strncpy(render->client_id_, client_id.c_str(), sizeof(client_id));
|
||||||
|
render->SaveSettingsIntoCacheFile();
|
||||||
|
LOG_INFO("Transmission id: [{}]", TransmissionId);
|
||||||
|
}
|
||||||
|
if (mode != TraversalMode::UnknownMode) {
|
||||||
|
LOG_INFO("Net mode: [{}]", int(mode));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
2
thirdparty/projectx
vendored
2
thirdparty/projectx
vendored
Submodule thirdparty/projectx updated: 0edeec3d16...3453d4e0c4
Reference in New Issue
Block a user