Skip to content
Snippets Groups Projects
Commit 64a2e242 authored by Recolic Keghart's avatar Recolic Keghart
Browse files

init

parent 861d9f01
No related branches found
No related tags found
No related merge requests found
.idea
.vscode
build/
cmake_minimum_required(VERSION 3.5)
project(UDPForwarder)
set(CMAKE_CXX_STANDARD 17)
find_package(rlib)
find_package(Threads)
set(CMAKE_CXX_FLAGS_DEBUG "-g -DMALLOC_CHECK_=2")
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
......@@ -28,12 +30,13 @@ if(APPLE)
endif()
include_directories(./src)
include_directories(./src/lib)
# TODO
set(SRC )
set(SRC src/main.cc)
add_executable(udp-forwarder ${SRC})
target_link_libraries(udp-forwarder r)
target_link_libraries(udp-forwarder Threads::Threads)
# target_link_libraries(udp-forwarder -static-libgcc -static-libstdc++)
#if(FOR_M32)
......
#ifndef UDP_FORWARDER_DYN_COMMON_HPP_
#define UDP_FORWARDER_DYN_COMMON_HPP_ 1
#include <rlib/log.hpp>
extern rlib::logger rlog;
#endif
# Maybe we don't need a config file.
# just use command line
# ./udp-forwarder -i "plain:0.0.0.0:9988" -o "misc:base.jp3.recolic.net:9989:P@ssw0rd" [--log=error/info/verbose/debug]
# Do you want conf or json?
[inbound]
protocol = plain
addr = 0.0.0.0
port = 9988
[outbound]
protocol = misc
addr = base.jp3.recolic.net
port = 9989
password = P@ssw0rd
[main]
log_level = info
#include <rlib/stdio.hpp>
#include <rlib/opt.hpp>
#include "common.hpp"
rlib::logger rlog(std::cerr);
using namespace rlib::literals;
int main(int argc, char **argv) {
rlib::opt_parser args(argc, argv);
if(args.getBoolArg("--help", "-h")) {
rlib::println("Usage: {} -i $InboundConfig -o $OutboundConfig [--log=error/info/verbose/debug]"_rs.format(args.getSelf()));
rlib::println(" InboundConfig and OutboundConfig are in this format: ");
rlib::println(" '$method:$params', available methods: ");
rlib::println(" 'plain:$addr:$port', 'misc:$addr:$portRange:$psk'");
return 0;
}
auto inboundConfig = args.getValueArg("-i");
auto outboundConfig = args.getValueArg("-o");
auto log_level = args.getValueArg("--log", false, "info");
if(log_level == "error")
rlog.set_log_level(rlib::log_level_t::ERROR);
else if(log_level == "info")
rlog.set_log_level(rlib::log_level_t::INFO);
else if(log_level == "verbose")
rlog.set_log_level(rlib::log_level_t::VERBOSE);
else if(log_level == "debug")
rlog.set_log_level(rlib::log_level_t::DEBUG);
else
throw std::runtime_error("Unknown log level: " + log_level);
// Forwarder(inboundConfig, outboundConfig).run_forever();
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment