From 2efaebf59827c98b6a711aebcfdacc85c7126024 Mon Sep 17 00:00:00 2001 From: PolynomialDivision Date: Sat, 26 Aug 2017 19:43:46 +0200 Subject: [PATCH] Try fix bug --- src/include/datastorage.h | 4 ++++ src/storage/datastorage.c | 17 +++++++++++++++-- src/utils/ubus.c | 36 ++++++++++++++++++++---------------- 3 files changed, 39 insertions(+), 18 deletions(-) diff --git a/src/include/datastorage.h b/src/include/datastorage.h index 70088a0..e6230e5 100644 --- a/src/include/datastorage.h +++ b/src/include/datastorage.h @@ -119,6 +119,10 @@ probe_entry probe_array_get_entry(uint8_t bssid_addr[], uint8_t client_addr[]); void print_array(); +void print_probe_entry(probe_entry entry); + +void print_auth_entry(auth_entry entry); + void *remove_array_thread(void *arg); diff --git a/src/storage/datastorage.c b/src/storage/datastorage.c index 64a82c1..6b6cb04 100644 --- a/src/storage/datastorage.c +++ b/src/storage/datastorage.c @@ -10,8 +10,6 @@ int go_next_help(char sort_order[], int i, probe_entry entry, int go_next(char sort_order[], int i, probe_entry entry, probe_entry next_entry); -void print_probe_entry(probe_entry entry); - void remove_old_probe_entries(time_t current_time, long long int threshold); int client_array_go_next(char sort_order[], int i, client entry, @@ -733,6 +731,21 @@ void print_probe_entry(probe_entry entry) { mac_buf_ap, mac_buf_client, entry.signal, entry.freq, entry.counter); } +void print_auth_entry(auth_entry entry) { + char mac_buf_ap[20]; + char mac_buf_client[20]; + char mac_buf_target[20]; + + sprintf(mac_buf_ap, "%x:%x:%x:%x:%x:%x", MAC2STR(entry.bssid_addr)); + sprintf(mac_buf_client, "%x:%x:%x:%x:%x:%x", MAC2STR(entry.client_addr)); + sprintf(mac_buf_target, "%x:%x:%x:%x:%x:%x", MAC2STR(entry.target_addr)); + + printf( + "bssid_addr: %s, client_addr: %s, signal: %d, freq: " + "%d\n", + mac_buf_ap, mac_buf_client, entry.signal, entry.freq); +} + void print_client_entry(client entry) { char mac_buf_ap[20]; char mac_buf_client[20]; diff --git a/src/utils/ubus.c b/src/utils/ubus.c index 442cae8..e89358c 100644 --- a/src/utils/ubus.c +++ b/src/utils/ubus.c @@ -212,24 +212,31 @@ int parse_to_probe_req(struct blob_attr *msg, probe_entry *prob_req) { static int handle_auth_req(struct blob_attr *msg) { + print_array(); + printf("HANDLE AUTH!\n"); - return UBUS_STATUS_CONNECTION_FAILED; auth_entry auth_req; parse_to_auth_req(msg, &auth_req); - probe_entry tmp = probe_array_get_entry(auth_req.bssid_addr, auth_req.bssid_addr); + printf("AUTH Entry: "); + print_auth_entry(auth_req); + + probe_entry tmp = probe_array_get_entry(auth_req.bssid_addr, auth_req.client_addr); + + printf("Entry found\n"); + print_probe_entry(tmp); // block if entry was not already found in probe database if(!(mac_is_equal(tmp.bssid_addr, auth_req.bssid_addr) && mac_is_equal(tmp.client_addr, auth_req.client_addr))) { - return UBUS_STATUS_CONNECTION_FAILED; + printf("Entry not the bla\n"); + return UBUS_STATUS_UNKNOWN_ERROR; } if (!decide_function(&tmp)) { - return UBUS_STATUS_CONNECTION_FAILED; + printf("DECIDE FUNCTION: NOOOO\n"); + return UBUS_STATUS_UNKNOWN_ERROR; } - - printf("ALLOW AUTH!\n"); return 0; @@ -243,7 +250,7 @@ static int handle_assoc_req(struct blob_attr *msg) { } static int handle_probe_req(struct blob_attr *msg) { - printf("[WC] Parse Probe Request\n"); + //printf("[WC] Parse Probe Request\n"); probe_entry prob_req; parse_to_probe_req(msg, &prob_req); //insert_to_list(prob_req, 1); @@ -254,26 +261,23 @@ static int handle_probe_req(struct blob_attr *msg) { str = blobmsg_format_json(msg, true); send_string_enc(str); - printf("[WC] Hostapd-Probe: %s : %s\n", "probe", str); + //printf("[WC] Hostapd-Probe: %s : %s\n", "probe", str); - print_array(); + //print_array(); // deny access if (!decide_function(&tmp_probe)) { - printf("MAC WILL BE DECLINED!!!\n"); - return UBUS_STATUS_CONNECTION_FAILED; + //printf("MAC WILL BE DECLINED!!!\n"); + return UBUS_STATUS_UNKNOWN_ERROR; } - printf("MAC WILL BE ACCEPDTED!!!\n"); + //printf("MAC WILL BE ACCEPDTED!!!\n"); return 0; } static int hostapd_notify(struct ubus_context *ctx, struct ubus_object *obj, struct ubus_request_data *req, const char *method, struct blob_attr *msg) { - printf("METHOD: %s\n",method); - sleep(1); - printf("Rjection by Ubus handler: %d\n", UBUS_STATUS_CONNECTION_FAILED); - return UBUS_STATUS_CONNECTION_FAILED; + printf("METHOD new: %s\n",method); // TODO: Only handle probe request and NOT assoc, ...