mirror of
https://github.com/kunkundi/crossdesk-server.git
synced 2026-10-26 01:34:33 +08:00
67 lines
1.3 KiB
C++
67 lines
1.3 KiB
C++
/*
|
|
* @Author: DI JUNKUN
|
|
* @Date: 2025-09-08
|
|
* Copyright (c) 2025 by DI JUNKUN, All Rights Reserved.
|
|
*/
|
|
|
|
#ifndef _MAIN_H_
|
|
#define _MAIN_H_
|
|
|
|
#include <cstdint>
|
|
#include <iostream>
|
|
#include <stdexcept>
|
|
#include <string>
|
|
|
|
#include "log/log.h"
|
|
#include "signal_server.h"
|
|
|
|
namespace {
|
|
|
|
uint16_t ParsePort(const std::string& port) {
|
|
size_t parsed_len = 0;
|
|
int value = 0;
|
|
|
|
try {
|
|
value = std::stoi(port, &parsed_len);
|
|
} catch (const std::exception&) {
|
|
throw std::invalid_argument("Invalid port: " + port);
|
|
}
|
|
|
|
if (parsed_len != port.size() || value < 1 || value > 65535) {
|
|
throw std::out_of_range("Port must be an integer in range 1-65535: " +
|
|
port);
|
|
}
|
|
|
|
return static_cast<uint16_t>(value);
|
|
}
|
|
|
|
} // namespace
|
|
|
|
int main(int argc, char* argv[]) {
|
|
std::string port = "9090";
|
|
std::string log_dir = "/var/log/crossdesk";
|
|
std::string certs_dir = "/var/lib/crossdesk/certs";
|
|
std::string db_path = "/var/lib/crossdesk/db/crossdesk-server.db";
|
|
|
|
if (argc > 1) {
|
|
port = argv[1];
|
|
}
|
|
|
|
InitLogger(log_dir);
|
|
|
|
try {
|
|
SignalServer s(ParsePort(port), certs_dir, db_path);
|
|
s.Run();
|
|
} catch (std::exception& e) {
|
|
LOG_ERROR("Fatal error: {}", e.what());
|
|
return 1;
|
|
} catch (...) {
|
|
LOG_ERROR("Unknown fatal error occurred");
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
#endif
|