From 13064c5ad7830615dbe19bc0049c8bf44d5c92a7 Mon Sep 17 00:00:00 2001 From: Quentin Dufour Date: Mon, 11 Feb 2019 10:23:38 +0100 Subject: [PATCH] Rework files, add getopt --- CMakeLists.txt | 6 ++++- src/donar_client.c | 0 src/donar_client.h | 4 ++++ src/{donar-proxy.c => donar_proxy.c} | 36 ++++++++++++++++++++++------ src/donar_server.c | 33 +++++++++++++++++++++++++ src/donar_server.h | 7 ++++++ 6 files changed, 78 insertions(+), 8 deletions(-) create mode 100644 src/donar_client.c create mode 100644 src/donar_client.h rename src/{donar-proxy.c => donar_proxy.c} (71%) create mode 100644 src/donar_server.c create mode 100644 src/donar_server.h diff --git a/CMakeLists.txt b/CMakeLists.txt index cae8e9d..4108794 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,9 +11,13 @@ list(APPEND CSOURCES src/tor_os.c src/tor_ctl.h src/tor_ctl.c + src/donar_client.h + src/donar_client.c + src/donar_server.h + src/donar_server.c ) -add_executable(donar-proxy ${CSOURCES} src/donar-proxy.c) +add_executable(donar-proxy ${CSOURCES} src/donar_proxy.c) install(TARGETS donar-proxy RUNTIME DESTINATION bin diff --git a/src/donar_client.c b/src/donar_client.c new file mode 100644 index 0000000..e69de29 diff --git a/src/donar_client.h b/src/donar_client.h new file mode 100644 index 0000000..2a60bc1 --- /dev/null +++ b/src/donar_client.h @@ -0,0 +1,4 @@ +#include +#include + +void donar_client(); diff --git a/src/donar-proxy.c b/src/donar_proxy.c similarity index 71% rename from src/donar-proxy.c rename to src/donar_proxy.c index b5a5e14..e18f237 100644 --- a/src/donar-proxy.c +++ b/src/donar_proxy.c @@ -2,17 +2,38 @@ #include #include #include -#include -#include #include -#include -#include -#include "socks5.h" -#include "tor_os.h" -#include "tor_ctl.h" +#include "donar_client.h" +#include "donar_server.h" int main(int argc, char** argv) { printf("~ Donar ~\n"); + + int opt, is_server, is_client = 0; + while ((opt = getopt(argc, argv, "cs")) != -1) { + switch(opt) { + case 's': + is_server = 1; + break; + case 'c': + is_client = 1; + break; + default: + fprintf(stderr, "Usage: %s [-c | -s]\n", argv[0]); + exit(EXIT_FAILURE); + } + } + + if (!(is_server ^ is_client)) { + fprintf(stderr, "2Usage: %s [-c | -s]\n", argv[0]); + exit(EXIT_FAILURE); + } + + if (is_server) donar_server(); + else if (is_client) donar_client(); + + return 0; +/* int sock; struct tor_os_str tos; @@ -60,4 +81,5 @@ int main(int argc, char** argv) { close(sock); exit(EXIT_SUCCESS); + */ } diff --git a/src/donar_server.c b/src/donar_server.c new file mode 100644 index 0000000..911d6b2 --- /dev/null +++ b/src/donar_server.c @@ -0,0 +1,33 @@ +#include "donar_server.h" + +void create_onion_services(struct tor_os_str* tos, struct tor_ctl* tctl, int* ports, int ports_count) { + tor_os_create (tos, "onion_services.pub", "onion_services.txt", ports_count); + tor_os_read (tos); + + int err = 0; + err = tor_ctl_connect (tctl, "127.0.0.1", "9051"); + if (err < 0) { + fprintf(stderr, "Unable to open Tor Socket\n"); + exit(EXIT_FAILURE); + } + err = tor_ctl_add_onion (tctl, tos, ports); + if (err != 0) { + fprintf(stderr, "Unable to create Onion Services (error: %d)\n", err); + exit(EXIT_FAILURE); + } +} + +void destroy_resources(struct tor_os_str* tos, struct tor_ctl* tctl) { + tor_ctl_close (tctl); + tor_os_free (tos); +} + +void donar_server() { + struct tor_os_str tos; + struct tor_ctl tctl = {}; + int ports[10] = { 7500, 7501, 7502, 7503, 7504, 7505, 7506, 7507, 7508, 7509}; + create_onion_services (&tos, &tctl, ports, 10); + printf("Onion services created\n"); + + destroy_resources (&tos, &tctl); +} diff --git a/src/donar_server.h b/src/donar_server.h new file mode 100644 index 0000000..dd02172 --- /dev/null +++ b/src/donar_server.h @@ -0,0 +1,7 @@ +#include +#include +#include "socks5.h" +#include "tor_os.h" +#include "tor_ctl.h" + +void donar_server();