int main(int argc, char **argv) { char *queryp; int bool_balance; sanitize_input(&argc, argv); if (argv[1][0] == 's') { print_summary(argv[2]); exit(0); } mysql_start(); bool_balance = check_balance(&argc, argv); queryp = forge_query(&argc, argv); mysql_insert(queryp); if (bool_balance) calculate_balance(&argc, argv); mysql_stop(); return 0; }
int print_summary(char *category) { printf("Printing Summary\n"); mysql_start(); if (category) { snprintf(query, BUFSIZE, "select id, day, upper(category), format(amount/100,2), description from acct where" " category = '%s'", category); mysql_select(query); printf("Total: $"); snprintf(query, BUFSIZE, "select sum(format(amount/100,2)) from acct where" " category = '%s'", category); mysql_select(query); } else { mysql_select("select id, day, upper(category), format(amount/100,2), description from acct"); printf("Balance: $"); mysql_select_last("select format(amount/100,2) from balance"); printf("\n"); } mysql_stop(); return 0; }
/****************************************************************************** mysql_restart() Restart the mysql servers. ******************************************************************************/ void mysql_restart() { log_info("Restarting the MySQL server(s): %u", ++restarts); mysql_stop(); mysql_start(); }
int log_attempt_mysql(struct connection *c, const char *username, const char* password){ // connect to the mysql server //open the mysql connection MYSQL *mysql_con; if (mysql_start(&mysql_con) != 0){ return 1; } // get the current time if (get_utc(c) <= 0) { fprintf(stderr, "Error getting time\n"); return -1; } // increment the number of attempts or commands c->number = c->number +1; // escape char *con_time_escaped; escape(c->con_time, &con_time_escaped, mysql_con); char *username_escaped; escape(username, &username_escaped, mysql_con); char *password_escaped; escape(password, &password_escaped, mysql_con); char *mysql_query_string; mysql_query_string = malloc(sizeof(char) * (300 + strlen(con_time_escaped) + strlen(username_escaped) + strlen(password_escaped))); sprintf(mysql_query_string, "INSERT INTO `honeyssh`.`login` (`session-id`, `number`, `time`, `user`, `password`, `action`, `id`) VALUES ('%llu', '%d', '%s', '%s', '%s', '0', NULL);", c->session_id, c->number, con_time_escaped, username_escaped, password_escaped); // execute the query if (mysql_query(mysql_con, mysql_query_string)) { fprintf(stderr, "%s\n", mysql_error(mysql_con)); } free(mysql_query_string); free(con_time_escaped); free(username_escaped); free(password_escaped); mysql_close(mysql_con); return 0; }
int log_con2_mysql(struct connection *c){ //open the mysql connection MYSQL *mysql_con; if (mysql_start(&mysql_con) != 0){ return 1; } // get banner, cipher-in, cipher-out c->banner = ssh_get_clientbanner(c->session); c->cipher_out = ssh_get_cipher_out(c->session); c->cipher_in = ssh_get_cipher_in(c->session); char *banner_escaped; escape(c->banner, &banner_escaped, mysql_con); char *cipher_in_escaped; escape(c->cipher_in, &cipher_in_escaped, mysql_con); char *cipher_out_escaped; escape(c->cipher_out, &cipher_out_escaped, mysql_con); // calculate the query string length char *mysql_query_string; mysql_query_string = malloc(sizeof(char) * (300 + strlen(banner_escaped) + strlen(cipher_in_escaped) + strlen(cipher_out_escaped))); sprintf(mysql_query_string, "UPDATE `honeyssh`.`connection` SET `banner` = '%s', `cipher-in` = '%s', `cipher-out` = '%s' WHERE `connection`.`session-id` = %llu;", banner_escaped, cipher_in_escaped, cipher_out_escaped, c->session_id); printf("%s\n", mysql_query_string); // execute the query if (mysql_query(mysql_con, mysql_query_string)) { fprintf(stderr, "%s\n", mysql_error(mysql_con)); } free(mysql_query_string); free(banner_escaped); free(cipher_in_escaped); free(cipher_out_escaped); mysql_close(mysql_con); return 0; }
int connection_finished_date(){ MYSQL *mysql_con; // öffne die MYSQL Verbindung if (mysql_start(&mysql_con) != 0){ return 1; } char *time_s; time_s = malloc(sizeof(char) * 100); get_query_time(time_s); // declare and reserve memory for the query string char mysql_query_string[500]; // build the query string sprintf(mysql_query_string, "UPDATE `honeyssh`.`connection` SET `action` = 0 WHERE `action` = -1 AND `start-time` < '%s';", time_s); free(time_s); // execute the query if (mysql_query(mysql_con, mysql_query_string)) { fprintf(stderr, "%s\n", mysql_error(mysql_con)); } mysql_close(mysql_con); return 0; }
int get_first_session_id_mysql(uint64_t *firstid) { //open the mysql connection MYSQL *mysql_con; if (mysql_start(&mysql_con) != 0){ return 1; } if (mysql_query(mysql_con, "SELECT MAX(`session-id`) AS `new-session-id` FROM honeyssh.connection;")) { fprintf(stderr, "Query failed: %s\n", mysql_error(mysql_con)); } else { MYSQL_RES *result = mysql_store_result(mysql_con); if (!result) { printf("Couldn't get results set: %s\n", mysql_error(mysql_con)); } else { MYSQL_ROW row; while ((row = mysql_fetch_row(result))) { char *endp; *firstid = strtoull(row[0], &endp, 0); } } mysql_free_result(result); } mysql_close(mysql_con); return 0; }
int log_con_end_mysql(struct connection *c) { //open the mysql connection MYSQL *mysql_con; if (mysql_start(&mysql_con) != 0){ return 1; } // get the current time if (get_utc(c) <= 0) { fprintf(stderr, "Error getting time\n"); return -1; } char *con_time_escaped; escape(c->con_time, &con_time_escaped, mysql_con); char *mysql_query_string; mysql_query_string = malloc(sizeof(char) * (300 + strlen(con_time_escaped))); sprintf(mysql_query_string, "UPDATE `honeyssh`.`connection` SET `end-time` = '%s', `action` = '0' WHERE `connection`.`session-id` = %llu;", con_time_escaped, c->session_id); // execute the query if (mysql_query(mysql_con, mysql_query_string)) { fprintf(stderr, "%s\n", mysql_error(mysql_con)); } free(mysql_query_string); free(con_time_escaped); mysql_close(mysql_con); return 0; }
/****************************************************************************** run_test() Run the given test case. ******************************************************************************/ void run_test(char *test) { char temp[PATH_MAX]; char *rstr; double elapsed = 0; int skip = FALSE, ignore=FALSE; int restart = FALSE; int flag = FALSE; struct stat info; // skip tests in the skip list snprintf(temp, PATH_MAX, " %s ", test); skip = (strindex(skip_test, temp) != NULL); if (skip == FALSE) ignore = (strindex(ignore_test, temp) != NULL); if (ignore) { // show test log_msg("%-46s ", test); // ignore rstr = TEST_IGNORE; ++total_ignore; } else if (!skip) // skip test? { char test_file[PATH_MAX]; char master_opt_file[PATH_MAX]; char slave_opt_file[PATH_MAX]; char slave_master_info_file[PATH_MAX]; char result_file[PATH_MAX]; char reject_file[PATH_MAX]; char out_file[PATH_MAX]; char err_file[PATH_MAX]; int err; arg_list_t al; NXTime_t start, stop; // skip slave? flag = skip_slave; skip_slave = (strncmp(test, "rpl", 3) != 0); if (flag != skip_slave) restart = TRUE; // create files snprintf(master_opt_file, PATH_MAX, "%s/%s-master.opt", test_dir, test); snprintf(slave_opt_file, PATH_MAX, "%s/%s-slave.opt", test_dir, test); snprintf(slave_master_info_file, PATH_MAX, "%s/%s.slave-mi", test_dir, test); snprintf(reject_file, PATH_MAX, "%s/%s%s", result_dir, test, REJECT_SUFFIX); snprintf(out_file, PATH_MAX, "%s/%s%s", result_dir, test, OUT_SUFFIX); snprintf(err_file, PATH_MAX, "%s/%s%s", result_dir, test, ERR_SUFFIX); // netware specific files snprintf(test_file, PATH_MAX, "%s/%s%s", test_dir, test, NW_TEST_SUFFIX); if (stat(test_file, &info)) { snprintf(test_file, PATH_MAX, "%s/%s%s", test_dir, test, TEST_SUFFIX); if (access(test_file,0)) { printf("Invalid test name %s, %s file not found\n",test,test_file); return; } } snprintf(result_file, PATH_MAX, "%s/%s%s", result_dir, test, NW_RESULT_SUFFIX); if (stat(result_file, &info)) { snprintf(result_file, PATH_MAX, "%s/%s%s", result_dir, test, RESULT_SUFFIX); } // init scripts snprintf(master_init_script, PATH_MAX, "%s/%s-master.sh", test_dir, test); if (stat(master_init_script, &info)) master_init_script[0] = NULL; else restart = TRUE; snprintf(slave_init_script, PATH_MAX, "%s/%s-slave.sh", test_dir, test); if (stat(slave_init_script, &info)) slave_init_script[0] = NULL; else restart = TRUE; // read options if (read_option(master_opt_file, master_opt)) restart = TRUE; if (read_option(slave_opt_file, slave_opt)) restart = TRUE; if (read_option(slave_master_info_file, slave_master_info)) restart = TRUE; // cleanup previous run remove(reject_file); remove(out_file); remove(err_file); // start or restart? if (!master_running) mysql_start(); else if (restart) mysql_restart(); // let the system stabalize sleep(1); // show test log_msg("%-46s ", test); // args init_args(&al); add_arg(&al, "%s", mysqltest_file); add_arg(&al, "--no-defaults"); add_arg(&al, "--port=%u", master_port); add_arg(&al, "--database=%s", db); add_arg(&al, "--user=%s", user); add_arg(&al, "--password=%s", password); add_arg(&al, "--silent"); add_arg(&al, "--basedir=%s/", mysql_test_dir); add_arg(&al, "--host=127.0.0.1"); add_arg(&al, "-v"); add_arg(&al, "-R"); add_arg(&al, "%s", result_file); if (use_openssl) { add_arg(&al, "--ssl-ca=%s", ca_cert); add_arg(&al, "--ssl-cert=%s", client_cert); add_arg(&al, "--ssl-key=%s", client_key); } // start timer NXGetTime(NX_SINCE_BOOT, NX_USECONDS, &start); // spawn err = spawn(mysqltest_file, &al, TRUE, test_file, out_file, err_file); // stop timer NXGetTime(NX_SINCE_BOOT, NX_USECONDS, &stop); // calculate elapsed = ((double)(stop - start)) / NX_USECONDS; total_time += elapsed; // free args free_args(&al); if (err == 0) { // pass rstr = TEST_PASS; ++total_pass; // increment total ++total_test; } else if (err == 62) { // skip rstr = TEST_SKIP; ++total_skip; } else if (err == 1) { // fail rstr = TEST_FAIL; ++total_fail; // increment total ++total_test; } else { rstr = TEST_BAD; } } else // early skips { // show test log_msg("%-46s ", test); // skip rstr = TEST_SKIP; ++total_skip; } // result log_msg("%10.06f %-14s\n", elapsed, rstr); }
// log_con_mysql int log_con1_mysql(struct connection *c){ // get the time if (get_utc(c) <= 0) { fprintf(stderr, "Error getting time\n"); return -1; } // get the client ip if (get_client_ip(c) < 0) { fprintf(stderr, "Error getting client ip\n"); return -1; } //open the mysql connection MYSQL *mysql_con; if (mysql_start(&mysql_con) != 0){ return 1; } char *con_time_escaped; escape(c->con_time, &con_time_escaped, mysql_con); char *client_ip_escaped; escape(c->client_ip, &client_ip_escaped, mysql_con); char *protocol_version_escaped; char protocol_version_string[10] = ""; sprintf(protocol_version_string, "%d", c->protocol_version); escape(protocol_version_string, &protocol_version_escaped, mysql_con); char *openssh_version_escaped; char openssh_version_string[10] =""; sprintf(openssh_version_string, "%d", c->openssh_version); escape(openssh_version_string, &openssh_version_escaped, mysql_con); // declare and reserve memory for the query string char *mysql_query_string; mysql_query_string = malloc(sizeof(char) * (400 + strlen(con_time_escaped) + strlen(client_ip_escaped) + strlen(protocol_version_escaped) + strlen(openssh_version_escaped))); // build the query string sprintf(mysql_query_string, "INSERT INTO `honeyssh`.`connection` (`session-id`, `ip`, `start-time`, `end-time`, `banner`, `cipher-in`, `cipher-out`, `protocol-version`, `openssh-version`, `action`, `potmode`, `id`, `sensor-id`) VALUES ('%llu', '%s', '%s', '1970-01-01 00:00:00', 'none', 'none', 'none', '%s', '%s', '-1', '%d', 'NULL', '%s');", c->session_id, client_ip_escaped, con_time_escaped, protocol_version_escaped, openssh_version_escaped, AUTHENTICATION, SENSOR_ID); // execute the query if (mysql_query(mysql_con, mysql_query_string)) { fprintf(stderr, "%s\n", mysql_error(mysql_con)); } free(mysql_query_string); free(con_time_escaped); free(protocol_version_escaped); free(openssh_version_escaped); free(client_ip_escaped); mysql_close(mysql_con); return 0; }
int main(int argc, char *argv[]) { if(argc < 2) { fprintf(stderr, "args: classes path, tokens path, size of training set, size of validation set\n\n"); exit(1); } struct mysql_visitor training_vis = { .nth_query = &nth_query_training, .row_count = atoi(argv[3]), .per_row = NULL, .arg = NULL }; struct build_params params = { .classes_filepath = argv[1], .tokens_filepath = argv[2] }; struct raw_resources res = build_raw_resources(params, training_vis, MULTINOM); //MULTINOM hardcoded float **param_vecs = get_param_vecs( res.classes->size, res.tokens->size, res.class_counts, res.occurrences_matrix, NULL, 0.4); free_raw_resources_arrays(res); int totals[MAX_DOC_LEN], rights[MAX_DOC_LEN]; memset(totals, 0, MAX_DOC_LEN*sizeof(*totals)); memset(rights, 0, MAX_DOC_LEN*sizeof(*rights)); struct validator v = { .param_vecs = param_vecs, .totals = totals, .rights = rights, .classes = res.classes, .tokens = res.tokens, .k = -1 }; struct mysql_visitor validate_vis = { .nth_query = &nth_query_validating, .row_count = atoi(argv[4]), .per_row = &per_row, .arg = &v }; MYSQL *connc = mysql_start(); mysql_visit_rows(connc, validate_vis); //printf("%f\n", aggregate_avg(totals, rights, MAX_DOC_LEN)); csv_over_doc_len(totals, rights, MAX_DOC_LEN); mysql_finish(connc); free_param_vecs(res.classes->size, param_vecs); rxmap_delete(res.classes); rxmap_delete(res.tokens); }
int connection(){ MYSQL *mysql_con; // öffne die MYSQL Verbindung if (mysql_start(&mysql_con) != 0){ return 1; } if (mysql_query(mysql_con, "SELECT `session-id`, `ip`, `start-time`, `end-time`, `banner`, `cipher-in`, `cipher-out`, `protocol-version`, `openssh-version`, `potmode`, `id`, UNIX_TIMESTAMP(`start-time`), UNIX_TIMESTAMP(`end-time`), `action`, `sensor-id` FROM honeyssh.connection WHERE `action` = 0 OR `action` = -1 ")) { fprintf(stderr, "Query failed: %s\n", mysql_error(mysql_con)); return 1; } else { MYSQL_RES *result = mysql_store_result(mysql_con); if (!result) { printf("Couldn't get results set: %s\n", mysql_error(mysql_con)); } else { MYSQL_ROW row; // braucht pro 50 Zeilen 1 sekunde zum setzen action=1 int i = 0; char *finish = malloc(sizeof(char)*(1500*90+500)); sprintf(finish, ""); CURL *curl = NULL; CURLcode res = CURLE_FAILED_INIT; char *errbuf; struct curl_slist *headers = NULL; errbuf = malloc(sizeof(char)* CURL_ERROR_SIZE); curl = curl_easy_init(); if(!curl) { fprintf(stderr, "Error: curl_easy_init failed.\n"); curl_slist_free_all(headers); curl_easy_cleanup(curl); return -1; } curl_easy_setopt(curl, CURLOPT_PASSWORD, CURL_SESSION_PASSWORD); curl_easy_setopt(curl, CURLOPT_USERNAME, CURL_SESSION_USERNAME); curl_easy_setopt(curl, CURLOPT_CAINFO, CURL_CAPATH); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, TRUE); curl_easy_setopt(curl, CURLOPT_USERAGENT, "honeyssh-jsond-1.0"); headers = curl_slist_append(headers, "Expect:"); headers = curl_slist_append(headers, "Content-Type: application/json"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); // Curl soll die Länge des String der übermittelt werden soll selber ermitteln(Das L hinter der 1 drückt nurd aus das es sich um einen long integer handelt) curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, -1L); curl_easy_setopt(curl, CURLOPT_URL, CURL_SESSION_HOST); curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf); while ((row = mysql_fetch_row(result))){ if (i > 1000){ db_set_finished(finish); sprintf(finish, ""); i=0; } struct connection con; char *endp; con.id = strtoull(row[10], &endp, 0); con.action = strtol(row[13], &endp, 0); connection_to_json(&con, row); char *tmp = json_dumps(con.json, 0); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, tmp); res = curl_easy_perform(curl); if(res != CURLE_OK) { size_t len = strlen(errbuf); fprintf(stderr, "\nlibcurl: (%d) ", res); if(len) // Der zweite String bedeutet: Wenn der errbuf an vorletzer Stelle nicht ein /n hat dann füge es hinzu wenn nicht dann tue nichts. fprintf(stderr, "%s%s", errbuf, ((errbuf[len - 1] != '\n') ? "\n" : "")); fprintf(stderr, "%s\n\n", curl_easy_strerror(res)); } printf("\n"); printf("%s\n", tmp); printf("\n"); free (tmp); if ((con.action == 0) && (res == 0)){ sprintf(finish, "%sUPDATE `honeyssh`.`%s` SET `action` = 1 WHERE `id` = %llu; ",finish, "connection", con.id); i++; } json_decref(con.json); } if (i != 0){ db_set_finished(finish); } free(finish); mysql_free_result(result); curl_finish(&curl, &headers, &errbuf); } } mysql_close(mysql_con); return 0; }