示例#1
0
文件: main.c 项目: rgonzale/cuenta
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;
}
示例#2
0
文件: functions.c 项目: k1132/cuenta
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;
}
示例#3
0
/******************************************************************************

  mysql_restart()

  Restart the mysql servers.

******************************************************************************/
void mysql_restart()
{
  log_info("Restarting the MySQL server(s): %u", ++restarts);

  mysql_stop();

  mysql_start();
}
示例#4
0
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;

}
示例#5
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;
}
示例#7
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;

}
示例#8
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;
}
示例#9
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);
}
示例#10
0
// 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;

}
示例#11
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;
}