From 2155e823caad06f2dd61aa45244c3edb34d9aee3 Mon Sep 17 00:00:00 2001 From: dijunkun Date: Mon, 8 Sep 2025 19:04:08 +0800 Subject: [PATCH] [feat] use argv to set database path --- src/main.cpp | 9 +++++++-- src/signal_negotiation.cpp | 5 +++-- src/signal_negotiation.h | 3 ++- src/signal_server.cpp | 9 ++++++--- src/signal_server.h | 3 ++- 5 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index e709517..64c0b19 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -16,6 +16,7 @@ int main(int argc, char* argv[]) { std::string port = "9090"; std::string log_dir = "./logs"; std::string certs_dir = "./cert"; + std::string db_path = "devices.db"; if (argc > 1) { port = argv[1]; @@ -26,13 +27,17 @@ int main(int argc, char* argv[]) { } if (argc > 3) { - log_dir = argv[3]; + db_path = argv[3]; + } + + if (argc > 4) { + log_dir = argv[4]; } InitLogger(log_dir); SignalServer s; - s.Run(std::stoi(port), certs_dir); + s.Run(std::stoi(port), certs_dir, db_path); return 0; } diff --git a/src/signal_negotiation.cpp b/src/signal_negotiation.cpp index 70e6923..5fe1eb2 100644 --- a/src/signal_negotiation.cpp +++ b/src/signal_negotiation.cpp @@ -3,9 +3,10 @@ #include "log.h" SignalNegotiation::SignalNegotiation( - std::shared_ptr transmission_manager) + std::shared_ptr transmission_manager, + std::string db_path) : transmission_manager_(transmission_manager) { - device_db_manager_ = std::make_unique("devices.db"); + device_db_manager_ = std::make_unique(db_path); } SignalNegotiation::~SignalNegotiation() {} diff --git a/src/signal_negotiation.h b/src/signal_negotiation.h index bd34c9c..7f4099d 100644 --- a/src/signal_negotiation.h +++ b/src/signal_negotiation.h @@ -16,7 +16,8 @@ using nlohmann::json; class SignalNegotiation { public: - SignalNegotiation(std::shared_ptr transmission_manager); + SignalNegotiation(std::shared_ptr transmission_manager, + std::string db_path); ~SignalNegotiation(); void SetSendMsgCallback( diff --git a/src/signal_server.cpp b/src/signal_server.cpp index 2e86e87..ea03b0c 100644 --- a/src/signal_server.cpp +++ b/src/signal_server.cpp @@ -31,7 +31,7 @@ SignalServer::SignalServer() { transmission_manager_ = std::make_shared(); signal_negotiation_ = - std::make_unique(transmission_manager_); + std::make_unique(transmission_manager_, db_path_); signal_negotiation_->SetSendMsgCallback(std::bind(&SignalServer::SendMsg, this, std::placeholders::_1, std::placeholders::_2)); @@ -73,7 +73,7 @@ context_ptr SignalServer::OnTlsInit(websocketpp::connection_hdl hdl) { asio::ssl::context::default_workarounds | asio::ssl::context::no_sslv2 | asio::ssl::context::no_sslv3 | asio::ssl::context::single_dh_use); - std::string cert_file = certs_dir_ + "/crossdesk.cn.crt"; + std::string cert_file = certs_dir_ + "crossdesk.cn_bundle.crt"; std::string key_file = certs_dir_ + "/crossdesk.cn.key"; ctx->use_certificate_chain_file(cert_file); ctx->use_private_key_file(key_file, asio::ssl::context::pem); @@ -98,8 +98,11 @@ bool SignalServer::OnPong(websocketpp::connection_hdl hdl, std::string s) { return true; } -void SignalServer::Run(uint16_t port, std::string certs_dir) { +void SignalServer::Run(uint16_t port, std::string certs_dir, + std::string db_path) { certs_dir_ = certs_dir; + db_path_ = db_path; + if (!std::filesystem::exists(certs_dir_)) { LOG_ERROR("Certs dir [{}] not exist", certs_dir_); return; diff --git a/src/signal_server.h b/src/signal_server.h index 60ec5eb..5991cf2 100644 --- a/src/signal_server.h +++ b/src/signal_server.h @@ -35,13 +35,14 @@ class SignalServer { bool OnPing(websocketpp::connection_hdl hdl, std::string s); bool OnPong(websocketpp::connection_hdl hdl, std::string s); - void Run(uint16_t port, std::string certs_dir); + void Run(uint16_t port, std::string certs_dir, std::string db_path); void SendMsg(websocketpp::connection_hdl hdl, json message); void OnMessage(websocketpp::connection_hdl hdl, server::message_ptr msg); private: server server_; std::string certs_dir_; + std::string db_path_; std::map> ws_connections_;