add:添加一个直连参数。

This commit is contained in:
taynpg 2025-04-07 11:49:13 +08:00
parent c4632bcfad
commit 48b85abe1d
2 changed files with 39 additions and 21 deletions

View File

@ -16,6 +16,7 @@ struct TransmSet {
struct CmdParam {
std::string removeValue;
std::string appendValue;
std::string connectValue;
bool showValue{false};
long use_config{-1};
bool parsed{false};

View File

@ -30,6 +30,7 @@ int parse_cmd(int argc, char** argv, CmdParam& param)
app.add_flag("-d, --direct", param.direct_use, "添加服务器时直接使用此服务器。");
app.add_flag("-l, --last", param.last_use, "直接使用之前最后一次使用的服务器。");
app.add_flag("-n, --null", param.null_use, "先运行在选择服务器。");
app.add_option("-c, --connect", param.connectValue, "直连服务器((地址格式:127.0.0.1:9898)。");
if (argc == 1) {
std::cout << app.help() << std::endl;
@ -179,17 +180,32 @@ int main(int argc, char* argv[])
if (!param.parsed) {
return 0;
}
if (!exec_cmd(param, run)) {
TLOGW("exec_cmd failed!");
return -1;
}
if (!run && !param.direct_use && !param.last_use && !param.null_use) {
return 0;
}
std::string ip;
long port{};
if (!param.connectValue.empty()) {
std::regex pattern(R"((\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d+))");
std::smatch matches;
if (std::regex_match(param.connectValue, matches, pattern) && matches.size() == 3) {
ip = matches[1].str();
port = std::stol(matches[2].str());
run = true;
} else {
TLOGE("Invalid connect value [{}]", param.connectValue);
return -1;
}
} else if (!exec_cmd(param, run)) {
TLOGW("exec_cmd failed!");
return -1;
}
if (!run && !param.direct_use && !param.last_use && !param.null_use) {
return 0;
}
if (ip.empty()) {
std::vector<TransmSet> sets;
if (!g_Config->read_ini(sets)) {
return -1;
@ -215,6 +231,7 @@ int main(int argc, char* argv[])
}
}
g_Config->save_last_use(ip, port);
}
TLOGI("Build At {} {} under {} on {}", __DATE__, __TIME__, VERSION_GIT_COMMIT, VERSION_GIT_BRANCH);
TLOGI("use ip => [{}], port => [{}]", ip, port);
CClient client;