From a16e89b087a1734bd86a9591349a52543c08e26a Mon Sep 17 00:00:00 2001 From: DanyLE Date: Wed, 29 Mar 2023 12:09:40 +0200 Subject: [PATCH] update to latest changes on tunnel plugin --- broadcast/broadcast | Bin 81872 -> 90096 bytes broadcast/broadcast.c | 4 +- runner.c | 1 + runner.ini | 34 ++++++++------ syslog/syslog.c | 2 +- tunnel.c | 107 +++++++++++++++++++++++++++++++++++++++++- tunnel.h | 6 +-- v4l2cam/v4l2cam.c | 2 +- vterm/vterm.c | 2 +- wfifo/wfifo.c | 5 +- 10 files changed, 138 insertions(+), 25 deletions(-) diff --git a/broadcast/broadcast b/broadcast/broadcast index 1837f529424402718cc20b1f8ffe5d851f16d993..ccc9036c622ef21e5a1341e2b06c24f0e29ab07b 100755 GIT binary patch literal 90096 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 #include #include +#include #include #include "tunnel.h" #define MODULE_NAME "api" +#ifdef MAX_PATH_LEN +#undef MAX_PATH_LEN +#endif +#define MAX_PATH_LEN 108 static int guard_read(int fd, void* buffer, size_t size) { @@ -126,7 +131,7 @@ static uint8_t* msg_read_payload(int fd, uint32_t* size) } -int open_unix_socket(char* path) +static int open_unix_socket(char* path) { struct sockaddr_un address; address.sun_family = AF_UNIX; @@ -147,6 +152,69 @@ int open_unix_socket(char* path) return fd; } +static int open_tcp_socket(char * address, int port) +{ + struct sockaddr_in servaddr; + int fd = socket(AF_INET, SOCK_STREAM, 0); + if (fd == -1) + { + M_ERROR(MODULE_NAME, "Cannot create TCP socket %s:%d: %s",address, port, strerror(errno)); + return -1; + } + + bzero(&servaddr, sizeof(servaddr)); + + // assign IP, PORT + servaddr.sin_family = AF_INET; + servaddr.sin_addr.s_addr = inet_addr(address); + servaddr.sin_port = htons(port); + + // connect the client socket to server socket + if (connect(fd, (struct sockaddr*)&servaddr, sizeof(servaddr))!= 0) { + M_ERROR(MODULE_NAME, "Unable to connect to socket '%s:%d': %s", address, port, strerror(errno)); + close(fd); + return -1; + } + M_LOG(MODULE_NAME, "Connected to server: %s:%d at [%d]", address, port, fd); + return fd; +} + +int open_socket( char *path) +{ + regmatch_t regex_matches[3]; + if(strncmp(path,"unix:", 5) == 0) + { + if(strlen(path + 5) > MAX_PATH_LEN - 1) + { + M_ERROR(MODULE_NAME, "socket configuration is too long: %s", path); + return -1; + } + M_LOG(MODULE_NAME, "Found Unix domain socket configuration: %s", path + 5); + return open_unix_socket(path + 5); + } + else if(regex_match("^([a-zA-Z0-9\\-_\\.]+):([0-9]+)$", path,3, regex_matches)) + { + if(regex_matches[1].rm_eo - regex_matches[1].rm_so > MAX_PATH_LEN - 1) + { + M_ERROR(MODULE_NAME, "socket configuration is too long: %s", path); + return -1; + } + char address[MAX_PATH_LEN]; + memcpy(address, path + regex_matches[2].rm_so, regex_matches[2].rm_eo - regex_matches[2].rm_so); + int port = atoi(address); + (void*) memset(address, 0, MAX_PATH_LEN); + memcpy(address, path + regex_matches[1].rm_so, regex_matches[1].rm_eo - regex_matches[1].rm_so); + M_LOG(MODULE_NAME, "Found TCP socket configuration: %s:%d", address, port); + return open_tcp_socket(address, port); + } + else + { + M_ERROR(MODULE_NAME, "Unknown socket configuration: %s", path); + return -1; + } + return 0; +} + int msg_read(int fd, tunnel_msg_t* msg) { @@ -248,4 +316,41 @@ int msg_write(int fd, tunnel_msg_t* msg) return -1; } return 0; +} + + +int regex_match(const char* expr,const char* search, int msize, regmatch_t* matches) +{ + regex_t regex; + int reti; + char msgbuf[100]; + int ret; + /* Compile regular expression */ + reti = regcomp(®ex, expr, REG_ICASE | REG_EXTENDED); + if( reti ){ + //ERROR("Could not compile regex: %s",expr); + regerror(reti, ®ex, msgbuf, sizeof(msgbuf)); + M_ERROR(MODULE_NAME, "Regex match failed: %s", msgbuf); + //return 0; + } + + /* Execute regular expression */ + reti = regexec(®ex, search, msize, matches, 0); + if( !reti ){ + //LOG("Match"); + ret = 1; + } + else if( reti == REG_NOMATCH ){ + //LOG("No match"); + ret = 0; + } + else{ + regerror(reti, ®ex, msgbuf, sizeof(msgbuf)); + //ERROR("Regex match failed: %s\n", msgbuf); + ret = 0; + } + + + regfree(®ex); + return ret; } \ No newline at end of file diff --git a/tunnel.h b/tunnel.h index 416ae86..ede31f1 100644 --- a/tunnel.h +++ b/tunnel.h @@ -2,6 +2,7 @@ #define TUNNEL_H #include #include +#include #include "log.h" #define MAX_CHANNEL_PATH 108 @@ -31,10 +32,9 @@ typedef struct{ uint8_t* data; } tunnel_msg_t; -int open_unix_socket(char* path); +int open_socket(char* path); int msg_write(int fd, tunnel_msg_t* msg); int msg_read(int fd, tunnel_msg_t* msg); - - +int regex_match(const char* expr,const char* search, int msize, regmatch_t* matches); #endif \ No newline at end of file diff --git a/v4l2cam/v4l2cam.c b/v4l2cam/v4l2cam.c index eda3f0d..c02e608 100644 --- a/v4l2cam/v4l2cam.c +++ b/v4l2cam/v4l2cam.c @@ -449,7 +449,7 @@ int main(const int argc, const char **argv) { exit(1); } - sock = open_unix_socket((char *)argv[1]); + sock = open_socket((char *)argv[1]); if (sock == -1) { M_ERROR(MODULE_NAME, "Unable to open the hotline: %s", argv[1]); diff --git a/vterm/vterm.c b/vterm/vterm.c index acda558..55c0c24 100644 --- a/vterm/vterm.c +++ b/vterm/vterm.c @@ -336,7 +336,7 @@ int main(int argc, char **argv) signal(SIGINT, int_handler); M_LOG(MODULE_NAME, "Hotline is: %s", argv[1]); // now try to request new channel from hotline - fd = open_unix_socket(argv[1]); + fd = open_socket(argv[1]); if (fd == -1) { M_ERROR(MODULE_NAME, "Unable to open the hotline: %s", argv[1]); diff --git a/wfifo/wfifo.c b/wfifo/wfifo.c index 0c9ed6b..3167fee 100644 --- a/wfifo/wfifo.c +++ b/wfifo/wfifo.c @@ -213,6 +213,7 @@ int main(int argc, char **argv) if (argc != 5) { + M_LOG(MODULE_NAME, "Usage: %s path/to/hotline/socket channel_name input_file r/w\n", argv[0]); printf("Usage: %s path/to/hotline/socket channel_name input_file r/w\n", argv[0]); return -1; } @@ -221,7 +222,7 @@ int main(int argc, char **argv) signal(SIGINT, int_handler); // now try to request new channel from hotline - fd = open_unix_socket(argv[1]); + fd = open_socket(argv[1]); if (fd == -1) { M_ERROR(MODULE_NAME, "Unable to open the hotline: %s", argv[1]); @@ -240,7 +241,7 @@ int main(int argc, char **argv) (void)close(fd); return -1; } - M_LOG(MODULE_NAME, "Wait for comfirm creation of %s", argv[2]); + M_LOG(MODULE_NAME, "Wait for confirm creation of %s", argv[2]); // now wait for message if (msg_read(fd, &msg) == -1) {