remove tcp stuff

This commit is contained in:
Polynomialdivision 2018-09-14 10:05:58 +02:00
parent c25f266cb3
commit e045ccafb3
3 changed files with 24 additions and 160 deletions

View file

@ -16,10 +16,6 @@ struct network_con_s {
int connected; int connected;
}; };
struct network_con_s network_array[ARRAY_NETWORK_LEN];
pthread_mutex_t tcp_array_mutex;
/** /**
* Add tcp connection. * Add tcp connection.
* @param ipv4 * @param ipv4
@ -35,20 +31,6 @@ int add_tcp_conncection(char *ipv4, int port);
*/ */
int run_server(int port); int run_server(int port);
/**
* Insert tcp connection to tcp array.
* @param entry
* @return
*/
int insert_to_tcp_array(struct network_con_s entry);
/**
* Checks if a tcp address is already contained in the database.
* @param entry
* @return
*/
int tcp_array_contains_address(struct sockaddr_in entry);
/** /**
* Send message via tcp to all other hosts. * Send message via tcp to all other hosts.
* @param msg * @param msg

View file

@ -30,7 +30,6 @@ void daemon_shutdown() {
pthread_mutex_destroy(&probe_array_mutex); pthread_mutex_destroy(&probe_array_mutex);
pthread_mutex_destroy(&client_array_mutex); pthread_mutex_destroy(&client_array_mutex);
pthread_mutex_destroy(&ap_array_mutex); pthread_mutex_destroy(&ap_array_mutex);
pthread_mutex_destroy(&tcp_array_mutex);
} }
void signal_handler(int sig) { void signal_handler(int sig) {
@ -67,11 +66,6 @@ int init_mutex() {
return 1; return 1;
} }
if (pthread_mutex_init(&tcp_array_mutex, NULL) != 0) {
fprintf(stderr, "Mutex init failed!\n");
return 1;
}
if (pthread_mutex_init(&denied_array_mutex, NULL) != 0) { if (pthread_mutex_init(&denied_array_mutex, NULL) != 0) {
fprintf(stderr, "Mutex init failed!\n"); fprintf(stderr, "Mutex init failed!\n");
return 1; return 1;

View file

@ -13,18 +13,8 @@
LIST_HEAD(tcp_sock_list); LIST_HEAD(tcp_sock_list);
int tcp_array_insert(struct network_con_s entry);
int tcp_array_delete(struct sockaddr_in entry);
int tcp_array_contains_address_help(struct sockaddr_in entry);
void print_tcp_entry(struct network_con_s entry);
int tcp_list_contains_address(struct sockaddr_in entry); int tcp_list_contains_address(struct sockaddr_in entry);
int tcp_entry_last = -1;
static struct uloop_fd server; static struct uloop_fd server;
struct client *next_client = NULL; struct client *next_client = NULL;
@ -37,7 +27,8 @@ struct client {
}; };
static void client_close(struct ustream *s) { static void client_close(struct ustream *s) {
struct client *cl = container_of(s, struct client, s.stream); struct client *cl = container_of(s,
struct client, s.stream);
fprintf(stderr, "Connection closed\n"); fprintf(stderr, "Connection closed\n");
ustream_free(s); ustream_free(s);
@ -58,14 +49,14 @@ static void client_notify_state(struct ustream *s) {
fprintf(stderr, "eof!, pending: %d, total: %d\n", s->w.data_bytes, cl->ctr); fprintf(stderr, "eof!, pending: %d, total: %d\n", s->w.data_bytes, cl->ctr);
// TODO: REMOVE CLIENT FROM LIST! OR NOT?
if (!s->w.data_bytes) if (!s->w.data_bytes)
return client_close(s); return client_close(s);
} }
static void client_to_server_close(struct ustream *s) { static void client_to_server_close(struct ustream *s) {
struct network_con_s *con = container_of(s, struct network_con_s , stream.stream); struct network_con_s *con = container_of(s,
struct network_con_s, stream.stream);
fprintf(stderr, "Connection to SERVER closed\n"); fprintf(stderr, "Connection to SERVER closed\n");
ustream_free(s); ustream_free(s);
@ -75,7 +66,8 @@ static void client_to_server_close(struct ustream *s) {
} }
static void client_to_server_state(struct ustream *s) { static void client_to_server_state(struct ustream *s) {
struct client *cl = container_of(s, struct client, s.stream); struct client *cl = container_of(s,
struct client, s.stream);
if (!s->eof) if (!s->eof)
return; return;
@ -96,14 +88,11 @@ static void client_read_cb(struct ustream *s, int bytes) {
if (!str) if (!str)
break; break;
//printf("RECEIVED String: %s\n", str);
if (network_config.use_symm_enc) { if (network_config.use_symm_enc) {
char *base64_dec_str = malloc(B64_DECODE_LEN(strlen(str))); char *base64_dec_str = malloc(B64_DECODE_LEN(strlen(str)));
int base64_dec_length = b64_decode(str, base64_dec_str, B64_DECODE_LEN(strlen(str))); int base64_dec_length = b64_decode(str, base64_dec_str, B64_DECODE_LEN(strlen(str)));
char *dec = gcrypt_decrypt_msg(base64_dec_str, base64_dec_length); char *dec = gcrypt_decrypt_msg(base64_dec_str, base64_dec_length);
printf("NETRWORK RECEIVED: %s\n", dec);
free(base64_dec_str); free(base64_dec_str);
handle_network_msg(dec); handle_network_msg(dec);
free(dec); free(dec);
@ -176,7 +165,8 @@ static void connect_cb(struct uloop_fd *f, unsigned int events) {
return; return;
} }
struct network_con_s *entry = container_of(f, struct network_con_s, fd); struct network_con_s *entry = container_of(f,
struct network_con_s, fd);
fprintf(stderr, "Connection established\n"); fprintf(stderr, "Connection established\n");
uloop_fd_delete(&entry->fd); uloop_fd_delete(&entry->fd);
@ -186,7 +176,6 @@ static void connect_cb(struct uloop_fd *f, unsigned int events) {
ustream_fd_init(&entry->stream, entry->fd.fd); ustream_fd_init(&entry->stream, entry->fd.fd);
entry->connected = 1; entry->connected = 1;
printf("NEW TCP CONNECTION!!!\n");
} }
int add_tcp_conncection(char *ipv4, int port) { int add_tcp_conncection(char *ipv4, int port) {
@ -212,32 +201,16 @@ int add_tcp_conncection(char *ipv4, int port) {
free(tcp_entry); free(tcp_entry);
return -1; return -1;
} }
printf("Trying to add tcp socket to ULOOP!\n");
tcp_entry->fd.cb = connect_cb; tcp_entry->fd.cb = connect_cb;
uloop_fd_add(&tcp_entry->fd, ULOOP_WRITE | ULOOP_EDGE_TRIGGER); uloop_fd_add(&tcp_entry->fd, ULOOP_WRITE | ULOOP_EDGE_TRIGGER);
printf("NEW TCP CONNECTION!!! to %s:%d\n", ipv4, port); printf("New TCP connection to %s:%d\n", ipv4, port);
list_add(&tcp_entry->list, &tcp_sock_list); list_add(&tcp_entry->list, &tcp_sock_list);
return 0; return 0;
} }
int insert_to_tcp_array(struct network_con_s entry) {
pthread_mutex_lock(&tcp_array_mutex);
int ret = tcp_array_insert(entry);
pthread_mutex_unlock(&tcp_array_mutex);
return ret;
}
void print_tcp_entry(struct network_con_s entry) {
printf("Conenctin to Port: %d\n", entry.sock_addr.sin_port);
}
void send_tcp(char *msg) { void send_tcp(char *msg) {
pthread_mutex_lock(&tcp_array_mutex);
if (network_config.use_symm_enc) { if (network_config.use_symm_enc) {
int length_enc; int length_enc;
size_t msglen = strlen(msg); size_t msglen = strlen(msg);
@ -249,10 +222,8 @@ void send_tcp(char *msg) {
list_for_each_entry(con, &tcp_sock_list, list) list_for_each_entry(con, &tcp_sock_list, list)
{ {
printf("TRYING TO SEND!\n"); if (con->connected) {
if(con->connected) { if (ustream_write(&con->stream.stream, base64_enc_str, base64_enc_length, 0) == 0) {
//if(ustream_printf(&con->stream.stream, "%s", base64_enc_str) == 0) {
if(ustream_write(&con->stream.stream, base64_enc_str, base64_enc_length, 0) == 0) {
//TODO: ERROR HANDLING! //TODO: ERROR HANDLING!
} }
} }
@ -262,95 +233,17 @@ void send_tcp(char *msg) {
free(base64_enc_str); free(base64_enc_str);
free(enc); free(enc);
} else { } else {
for (int i = 0; i <= tcp_entry_last; i++) { struct network_con_s *con;
//if (send(network_array[i].sockfd, msg, strlen(msg), 0) < 0) {
struct network_con_s *con;
list_for_each_entry(con, &tcp_sock_list, list) list_for_each_entry(con, &tcp_sock_list, list)
{ {
printf("TRYING TO SEND!\n"); if (con->connected) {
if(con->connected) if (ustream_printf(&con->stream.stream, "%s", msg) == 0) {
{ //TODO: ERROR HANDLING!
if(ustream_printf(&con->stream.stream, "%s", msg) == 0) {
//TODO: ERROR HANDLING!
}
} }
} }
} }
} }
pthread_mutex_unlock(&tcp_array_mutex);
}
void print_tcp_array() {
printf("--------Connections------\n");
for (int i = 0; i <= tcp_entry_last; i++) {
print_tcp_entry(network_array[i]);
}
printf("------------------\n");
}
int tcp_array_insert(struct network_con_s entry) {
if (tcp_entry_last == -1) {
network_array[0] = entry;
tcp_entry_last++;
return 1;
}
int i;
for (i = 0; i <= tcp_entry_last; i++) {
if (entry.sock_addr.sin_addr.s_addr < network_array[i].sock_addr.sin_addr.s_addr) {
break;
}
if (entry.sock_addr.sin_addr.s_addr == network_array[i].sock_addr.sin_addr.s_addr) {
return 0;
}
}
for (int j = tcp_entry_last; j >= i; j--) {
if (j + 1 <= ARRAY_NETWORK_LEN) {
network_array[j + 1] = network_array[j];
}
}
network_array[i] = entry;
if (tcp_entry_last < ARRAY_NETWORK_LEN) {
tcp_entry_last++;
}
return 1;
}
int tcp_array_delete(struct sockaddr_in entry) {
int i;
int found_in_array = 0;
if (tcp_entry_last == -1) {
return 0;
}
for (i = 0; i <= tcp_entry_last; i++) {
if (entry.sin_addr.s_addr == network_array[i].sock_addr.sin_addr.s_addr) {
found_in_array = 1;
break;
}
}
for (int j = i; j < tcp_entry_last; j++) {
network_array[j] = network_array[j + 1];
}
if (tcp_entry_last > -1 && found_in_array) {
tcp_entry_last--;
}
return 0;
}
int tcp_array_contains_address(struct sockaddr_in entry) {
pthread_mutex_lock(&tcp_array_mutex);
int ret = tcp_array_contains_address_help(entry);
pthread_mutex_unlock(&tcp_array_mutex);
return ret;
} }
int tcp_list_contains_address(struct sockaddr_in entry) { int tcp_list_contains_address(struct sockaddr_in entry) {
@ -360,24 +253,19 @@ int tcp_list_contains_address(struct sockaddr_in entry) {
{ {
if(entry.sin_addr.s_addr == con->sock_addr.sin_addr.s_addr) if(entry.sin_addr.s_addr == con->sock_addr.sin_addr.s_addr)
{ {
printf("FOUND TCP ENTRY!!!\n");
return 1; return 1;
} }
printf("NOT FOUND!!!\n");
} }
return 0; return 0;
} }
int tcp_array_contains_address_help(struct sockaddr_in entry) { void print_tcp_array() {
if (tcp_entry_last == -1) { struct network_con_s *con;
return 0;
}
int i; printf("--------Connections------\n");
for (i = 0; i <= tcp_entry_last; i++) { list_for_each_entry(con, &tcp_sock_list, list)
if (entry.sin_addr.s_addr == network_array[i].sock_addr.sin_addr.s_addr) { {
return 1; printf("Conenctin to Port: %d, Connected: %s\n", con->sock_addr.sin_port, con->connected ? "True" : "False");
}
} }
return 0; printf("------------------\n");
} }