int Mariadb_nodes::check_galera() { int res1 = 0; char str[1024]; int cluster_size; MYSQL *conn; printf("Checking Galera\n"); fflush(stdout); for (int i = 0; i < N; i++) { conn = open_conn(port[i], IP[i], user_name, password, ssl); if (mysql_errno(conn) != 0) { printf("Error connectiong node %d\n", i); res1 = 1; } else { if (find_field(conn, (char *) "SHOW STATUS WHERE Variable_name='wsrep_cluster_size';", (char *) "Value", str) != 0) { printf("wsrep_cluster_size is not found in SHOW STATUS LIKE 'wsrep%%' results\n"); fflush(stdout); res1 = 1; } else { sscanf(str, "%d", &cluster_size); if (cluster_size != N ) { printf("wsrep_cluster_size is not %d\n", N); fflush(stdout); res1 = 1; } } } mysql_close(conn); } return(res1); }
void do_modhelp(CHAR_DATA *ch, char *argument) { MYSQL *conn; MYSQL_RES *res_set; MYSQL_ROW row; char query[MSL*2]; int id; if(!str_cmp(argument,"") || !is_number(argument)) return send_to_char("Syntax: modhelp <id>\n\r",ch); conn = open_conn(); if(!conn) return send_to_char("Error opening help database.\n\r",ch); id = atoi(argument); sprintf(query, "SELECT * from helpfiles where id=%d", id); mysql_query(conn,query); res_set = mysql_store_result (conn); if (res_set == NULL) send_to_char("Error accessing that id number.\n\r",ch); else { row = mysql_fetch_row (res_set); ch->pcdata->helpid = id; ch->pcdata->entered_text = palloc_string(row[4]); enter_text(ch, modhelp_end_fun); mysql_free_result(res_set); } do_disc(conn); }
int main(int argc, char *argv[]) { MYSQL *conn_rwsplit; int i; int global_result = 0; char ip[15]; char maxscaleIP[15]; char ip1[15]; int IP_end; int NodesNum; if (argc != 3) { printf("Usage: ./rw_select_insert Last_digits_of_IP number_of_VM\n"); exit(2); } sscanf(argv[1], "%d", &IP_end); if ( (IP_end < 0) || (IP_end > 255) ) { printf("Wrong last digits of IP\n"); exit(2); } sprintf(ip, "192.168.122.%d", IP_end); sprintf(maxscaleIP, "192.168.122.%s", getenv("maxscaleIP")); sscanf(argv[2], "%d", &NodesNum); if ( (NodesNum < 3) || (NodesNum > 255) ) { printf("Wrong number of nodes\n"); exit(2); } NodesNum--; tolerance=0; // Connecting to all nodes if (connect_all_nodes(nodes, IP_end, NodesNum) != 0) {exit(2);} // connect to the MaxScale server (rwsplit) conn_rwsplit = open_conn(4006, maxscaleIP); if (conn_rwsplit == NULL ) { printf("Can't connect to MaxScale\n"); exit(1); } else { global_result += execute_query(conn_rwsplit, "DROP TABLE IF EXISTS t1;"); global_result += execute_query(conn_rwsplit, "create table t1 (x1 int);"); get_global_status_allnodes(&selects[0], &inserts[0], nodes, NodesNum, silent); global_result += execute_query(conn_rwsplit, "select * from t1;"); get_global_status_allnodes(&new_selects[0], &new_inserts[0], nodes, NodesNum, silent); print_delta(&new_selects[0], &new_inserts[0], &selects[0], &inserts[0], NodesNum); global_result += execute_query(conn_rwsplit, "insert into t1 values(1);"); get_global_status_allnodes(&new_selects[0], &new_inserts[0], nodes, NodesNum, silent); print_delta(&new_selects[0], &new_inserts[0], &selects[0], &inserts[0], NodesNum); // close connections mysql_close(conn_rwsplit); } for (i=0; i<NodesNum; i++) { mysql_close(nodes[i]); } exit(global_result); }
int Mariadb_nodes::check_replication(int master) { int res1 = 0; char str[1024]; MYSQL *conn; MYSQL_RES *res; printf("Checking Master/Slave setup\n"); fflush(stdout); for (int i = 0; i < N; i++) { conn = open_conn(port[i], IP[i], user_name, password, ssl); if (mysql_errno(conn) != 0) { printf("Error connectiong node %d\n", i); fflush(stdout); res1 = 1; } else { if ( i == master ) { // checking master if (conn != NULL ) { if(mysql_query(conn, (char *) "SHOW SLAVE HOSTS;") != 0) { printf("%s\n", mysql_error(conn)); res1 = 1; } else { res = mysql_store_result(conn); if(res == NULL) { printf("Error: can't get the result description\n"); fflush(stdout); res1 = 1; } else { if (mysql_num_rows(res) != N-1) { printf("Number if slaves is not equal to N-1\n"); fflush(stdout); res1 = 1; } } mysql_free_result(res); do { res = mysql_store_result(conn); mysql_free_result(res); } while ( mysql_next_result(conn) == 0 ); } } } else { // checking slave if (find_field(conn, (char *) "SHOW SLAVE STATUS;", (char *) "Slave_IO_Running", str) != 0) { printf("Slave_IO_Running is not found in SHOW SLAVE STATUS results\n"); fflush(stdout); res1 = 1; } else { if (strcmp(str, "Yes") !=0 ) { printf("Slave_IO_Running is not Yes\n"); fflush(stdout); res1 = 1; } } } } mysql_close(conn); } return(res1); }
void modhelp_end_fun(CHAR_DATA *ch, char *argument) { MYSQL *conn; char query[MSL*3], results[MSL]; conn = open_conn(); sprintf(query,"UPDATE helpfiles SET helpdata=\"%s\" WHERE id=%d", argument, ch->pcdata->helpid); mysql_query(conn, query); sprintf(results,"%i helpfiles updated.\n\r", (int)mysql_affected_rows(conn)); send_to_char(results, ch); do_disc(conn); }
std::auto_ptr<BackupProtocolCallable> connect_to_bbstored(TLSContext& rContext) { // Make a protocol std::auto_ptr<BackupProtocolCallable> protocol(new BackupProtocolClient(open_conn("localhost", rContext))); // Check the version std::auto_ptr<BackupProtocolVersion> serverVersion( protocol->QueryVersion(BACKUP_STORE_SERVER_VERSION)); TEST_THAT(serverVersion->GetVersion() == BACKUP_STORE_SERVER_VERSION); return protocol; }
int CNetComm::safe_net_out (const char *sndbuf, int sndlen) { DEBUG_LOG("enter the safe_net_out ...."); int len = net_out(sndbuf, sndlen); if (len == -1) { DEBUG_LOG("reconnect the server ..."); if (open_conn() == -1) { close_conn(); DEBUG_LOG("reconnect the server fail !"); return -1; } return net_out(sndbuf, sndlen); //send the data second time } return len; }
void do_listhelp(CHAR_DATA *ch, char *argument) { MYSQL *conn; MYSQL_FIELD *field; MYSQL_ROW row; MYSQL_RES *res_set; char buf[MSL], query[MSL], arg1[MSL]; if(!str_cmp(argument,"")) { send_to_char("Syntax: listhelp all\n\r",ch); send_to_char(" listhelp <field> <value>\n\r",ch); send_to_char(" Valid fields are: id, title, skill, minlevel, helpdata\n\r",ch); send_to_char(" You can search for substrings by entering them normally.\n\r",ch); return; } argument = one_argument(argument,arg1); if(!str_cmp(arg1,"ALL")) sprintf(query, "select * from helpfiles"); else sprintf(query, "select * from helpfiles where %s RLIKE '%s'", arg1, argument); conn = open_conn(); if(!conn) return send_to_char("Error opening help database.\n\r",ch); mysql_query (conn, query); res_set = mysql_store_result (conn); if (res_set == NULL || mysql_field_count(conn)<1) send_to_char("Error accessing results.\n\r",ch); else { while((row = mysql_fetch_row (res_set)) != NULL) { mysql_field_seek (res_set, 0); field = mysql_fetch_field (res_set); sprintf(buf, "Help ID: %s\n\rHelp Title: %s\n\rRequired Skill: %s\n\rMinimum Level: %s\n\r", row[0], row[1], row[2], row[3]); send_to_char(buf,ch); sprintf(buf,"Help Text:\n\r%s\n\r", row[4]); send_to_char(buf,ch); } mysql_free_result(res_set); } do_disc (conn); }
int main(int argc, char *argv[]) { TestConnections * Test = new TestConnections(argc, argv); Test->set_timeout(20); int i, j; MYSQL * conn; int N_cmd = 2; char * fail_cmd[N_cmd - 1]; int N_ports = 3; int ports[N_ports]; fail_cmd[0] = (char *) "fail backendfd"; fail_cmd[1] = (char *) "fail clientfd"; ports[0] = Test->rwsplit_port; ports[1] = Test->readconn_master_port; ports[2] = Test->readconn_slave_port; for (i = 0; i < N_cmd; i++) { for (j = 0; j < N_ports; j++) { Test->tprintf("Executing MaxAdmin command '%s'\n", fail_cmd[i]); if (execute_maxadmin_command(Test->maxscale_IP, (char *) "admin", Test->maxadmin_password, fail_cmd[i]) != 0) { Test->add_result(1, "MaxAdmin command failed\n"); } else { printf("Trying query against %d\n", ports[j]); conn = open_conn(ports[j], Test->maxscale_IP, Test->maxscale_user, Test->maxscale_user, Test->ssl); Test->try_query(conn, (char *) "show processlist;"); } } } Test->check_maxscale_alive(); int rval = Test->global_result; delete Test; return rval; }
void do_addhelp(CHAR_DATA *ch, char *argument) { MYSQL *conn; char buf[MSL*3], title[MSL], skill[MSL], arg[MSL], *ttitle; char *escape, *escape2; int minlevel; if(!str_cmp(argument,"")) { send_to_char("Syntax: addhelp edit\n\r",ch); send_to_char("Syntax: addhelp 'help title' 'skill required' minimumlevel\n\r",ch); send_to_char("Example: addhelp 'HELP NEW FORMAT' 'none' 0\n\r",ch); send_to_char("Any words in the title will be keywords, case insensitive, that the help command searches for.\n\r",ch); send_to_char("The skill required is the name of a skill you must have at 1% or greater to view the help.\n\r",ch); send_to_char("It should only be used for cabal power helpfiles and other semi-secret helpfiles and should be 'none' otherwise.\n\r",ch); send_to_char("Minimum level is the minimum level required to view this helpfile, and should have a 0 if it's not\n\r",ch); send_to_char("an immortal or level dependant helpfile.\n\r",ch); send_to_char("Addhelp edit will allow you to change and add the actual text of your helpfile, and must be done first.\n\r",ch); return; } if(!str_cmp(argument, "edit")) return enter_text(ch, addhelp_end_fun); if(!ch->pcdata->entered_text || ch->pcdata->entered_text[0] == '\0' || !str_cmp(ch->pcdata->entered_text, "")) return send_to_char("You haven't specified the contents of your helpfile.\n\r",ch); conn = open_conn(); if(!conn) return send_to_char("Error opening help database.\n\r",ch); argument = one_argument(argument,title); argument = one_argument(argument,skill); argument = one_argument(argument,arg); ttitle = palloc_string(upstring(title)); minlevel = atoi(arg); escape = (char *)escape_string(ttitle); escape2 = (char *)escape_string(ch->pcdata->entered_text); sprintf(buf,"INSERT INTO helpfiles VALUES(NULL, \"%s\", \"%s\", %d, \"%s\")", escape, skill, minlevel, escape2); mysql_query(conn, buf); sprintf(buf,"Help file added:\n\rTitle: %s\n\rSkill Required: %s\n\rMinimum Level: %d\n\rHelp Text: %s\n\r", ttitle, skill, minlevel, ch->pcdata->entered_text); send_to_char(buf,ch); do_disc(conn); }
void do_delhelp(CHAR_DATA *ch, char *argument) { MYSQL *conn; char buf[MSL]; int id; if(!str_cmp(argument,"")) { send_to_char("Syntax: delhelp <id #>\n\r",ch); send_to_char(" Deletes the helpfile with the given ID number.\n\r",ch); return; } conn = open_conn(); if(!conn) return send_to_char("Error opening help database.\n\r",ch); if(!is_number(argument)) return send_to_char("Argument must be a number.\n\r",ch); id = atoi(argument); sprintf(buf,"DELETE FROM helpfiles WHERE id=%d", id); mysql_query(conn, buf); sprintf(buf,"%i helpfiles deleted.\n\r", (int)mysql_affected_rows(conn)); send_to_char(buf,ch); do_disc(conn); }
void do_help(CHAR_DATA *ch, char *argument) { int numresults=0; MYSQL *conn; MYSQL_RES *res_set = NULL, *res_set2 = NULL; MYSQL_ROW row; char query[MSL*2], buf[MSL]; if(!str_cmp(argument,"")) return do_help(ch, "topics"); else { if((!is_alphanum(argument) && !have_space(argument)) || have_schar(argument)) return do_help(ch, "topics"); } conn = open_conn(); if(!conn) return send_to_char("Error opening help database.\n\r",ch); if(is_number(argument)) sprintf(query,"select * from helpfiles where id=%d", atoi(argument)); else if(!is_number(argument)) sprintf(query,"select * from helpfiles where title RLIKE '%s' ORDER BY id ASC", argument); mysql_query(conn,query); res_set = mysql_store_result(conn); numresults = mysql_affected_rows(conn); if(!numresults || (res_set == NULL && mysql_field_count(conn)>0)) send_to_char("No matching helpfiles found.\n\r",ch); else if(numresults == 1) { row = mysql_fetch_row (res_set); if(!can_see_help(ch, row, TRUE)) send_to_char("No matching helpfiles found.\n\r",ch); else show_helpfile(ch, row); } else { sprintf(query,"select * from helpfiles where title RLIKE '\\'%s\\'' OR title = '%s'", argument, argument); mysql_query(conn,query); res_set2 = mysql_store_result(conn); numresults = mysql_affected_rows(conn); if(numresults > 0) { row = mysql_fetch_row(res_set2); if(!can_see_help(ch, row, FALSE)) send_to_char("No matching helpfiles found.\n\r", ch); else { show_helpfile(ch, row); mysql_free_result(res_set2); } } else { send_to_char("Multiple helpfiles matched your request:\n\r",ch); while((row = mysql_fetch_row (res_set)) != NULL) { if(!can_see_help(ch,row, FALSE)) continue; sprintf(buf,"%-5s %s\n\r", row[0], row[1]); send_to_char(buf,ch); } } } mysql_free_result (res_set); do_disc(conn); }
int Mariadb_nodes::connect() { for (int i = 0; i < N; i++) { nodes[i] = open_conn(port[i], IP[i], user_name, password, ssl); } }
CNetComm::CNetComm (const char *i, u_short p) : port (p) , sockfd (-1) { strcpy (this->ip, i); open_conn (); }
void test_binlog(TestConnections* Test) { int i; MYSQL* binlog; Test->repl->connect(); Test->set_timeout(100); Test->try_query(Test->repl->nodes[0], (char *) "SET NAMES utf8mb4"); Test->try_query(Test->repl->nodes[0], (char *) "set autocommit=1"); Test->try_query(Test->repl->nodes[0], (char *) "select USER()"); Test->set_timeout(100); create_t1(Test->repl->nodes[0]); Test->add_result(insert_into_t1(Test->repl->nodes[0], 4), "Data inserting to t1 failed\n"); Test->stop_timeout(); Test->tprintf("Sleeping to let replication happen\n"); sleep(60); for (i = 0; i < Test->repl->N; i++) { Test->tprintf("Checking data from node %d (%s)\n", i, Test->repl->IP[i]); Test->set_timeout(100); Test->add_result(select_from_t1(Test->repl->nodes[i], 4), "Selecting from t1 failed\n"); Test->stop_timeout(); } Test->set_timeout(10); Test->tprintf("First transaction test (with ROLLBACK)\n"); start_transaction(Test); Test->set_timeout(50); Test->tprintf("SELECT * FROM t1 WHERE fl=10, checking inserted values\n"); Test->add_result(execute_query_check_one(Test->repl->nodes[0], (char *) "SELECT * FROM t1 WHERE fl=10", "111"), "SELECT check failed\n"); //Test->add_result(check_sha1(Test), "sha1 check failed\n"); Test->tprintf("ROLLBACK\n"); Test->try_query(Test->repl->nodes[0], (char *) "ROLLBACK"); Test->tprintf("INSERT INTO t1 VALUES(112, 10)\n"); Test->try_query(Test->repl->nodes[0], (char *) "INSERT INTO t1 VALUES(112, 10)"); Test->try_query(Test->repl->nodes[0], (char *) "COMMIT"); Test->stop_timeout(); sleep(20); Test->set_timeout(20); Test->tprintf("SELECT * FROM t1 WHERE fl=10, checking inserted values\n"); Test->add_result(execute_query_check_one(Test->repl->nodes[0], (char *) "SELECT * FROM t1 WHERE fl=10", "112"), "SELECT check failed\n"); Test->tprintf("SELECT * FROM t1 WHERE fl=10, checking inserted values from slave\n"); Test->add_result(execute_query_check_one(Test->repl->nodes[2], (char *) "SELECT * FROM t1 WHERE fl=10", "112"), "SELECT check failed\n"); Test->tprintf("DELETE FROM t1 WHERE fl=10\n"); Test->try_query(Test->repl->nodes[0], (char *) "DELETE FROM t1 WHERE fl=10"); Test->tprintf("Checking t1\n"); Test->add_result(select_from_t1(Test->repl->nodes[0], 4), "SELECT from t1 failed\n"); Test->tprintf("Second transaction test (with COMMIT)\n"); start_transaction(Test); Test->tprintf("COMMIT\n"); Test->try_query(Test->repl->nodes[0], (char *) "COMMIT"); Test->tprintf("SELECT, checking inserted values\n"); Test->add_result(execute_query_check_one(Test->repl->nodes[0], (char *) "SELECT * FROM t1 WHERE fl=10", "111"), "SELECT check failed\n"); Test->tprintf("SELECT, checking inserted values from slave\n"); Test->add_result(execute_query_check_one(Test->repl->nodes[2], (char *) "SELECT * FROM t1 WHERE fl=10", "111"), "SELECT check failed\n"); Test->tprintf("DELETE FROM t1 WHERE fl=10\n"); Test->try_query(Test->repl->nodes[0], (char *) "DELETE FROM t1 WHERE fl=10"); Test->stop_timeout(); Test->set_timeout(50); Test->add_result(check_sha1(Test), "sha1 check failed\n"); Test->repl->close_connections(); Test->stop_timeout(); // test SLAVE STOP/START for (int j = 0; j < 3; j++) { Test->set_timeout(100); Test->repl->connect(); Test->tprintf("Dropping and re-creating t1\n"); Test->try_query(Test->repl->nodes[0], (char *) "DROP TABLE IF EXISTS t1"); create_t1(Test->repl->nodes[0]); Test->tprintf("Connecting to MaxScale binlog router\n"); binlog = open_conn(Test->binlog_port, Test->maxscale_IP, Test->repl->user_name, Test->repl->password, Test->ssl); Test->tprintf("STOP SLAVE against Maxscale binlog\n"); execute_query(binlog, (char *) "STOP SLAVE"); if (j == 1) { Test->tprintf("FLUSH LOGS on master\n"); execute_query(Test->repl->nodes[0], (char *) "FLUSH LOGS"); } Test->add_result(insert_into_t1(Test->repl->nodes[0], 4), "INSERT into t1 failed\n"); Test->tprintf("START SLAVE against Maxscale binlog\n"); Test->try_query(binlog, (char *) "START SLAVE"); Test->tprintf("Sleeping to let replication happen\n"); Test->stop_timeout(); sleep(30); for (i = 0; i < Test->repl->N; i++) { Test->set_timeout(50); Test->tprintf("Checking data from node %d (%s)\n", i, Test->repl->IP[i]); Test->add_result(select_from_t1(Test->repl->nodes[i], 4), "SELECT from t1 failed\n"); } Test->set_timeout(100); Test->add_result(check_sha1(Test), "sha1 check failed\n"); Test->repl->close_connections(); Test->stop_timeout(); } }
spocp_result_t ldapproxy_test(cmd_param_t * cpp, octet_t * blob) { spocp_result_t r = SPOCP_DENIED; LDAP *ld = 0; becon_t *bc = 0; octarr_t *argv; octet_t *oct, *domain; pdyn_t *dyn = cpp->pd; char ***ava = 0, *tmp, *filter, *fqdn; char *attr = 0, *val, *dn, **attrs = 0; char *xml; srvrec_t *sr, *nsr; int i, j; if (cpp->arg == 0 || cpp->arg->len == 0) return SPOCP_MISSING_ARG; if ((oct = element_atom_sub(cpp->arg, cpp->x)) == 0) return SPOCP_SYNTAXERROR; argv = oct_split( oct, ':', '\\', 0,0 ); traceLog( LOG_DEBUG,"argc: %d", argv->n); domain = argv->arr[0]; tmp = oct2strdup( domain, 0); fqdn = normalize(tmp); free(tmp); traceLog( LOG_DEBUG,"domain: %s", fqdn); if (dyn == 0 || (bc = becon_get(domain, dyn->bcp)) == 0) { /* find the server/-s */ if(( sr = dnssrv_lookup( fqdn, "ldap")) == 0 ) { traceLog(LOG_DEBUG,"SRV record lookup failed"); sr = ( srvrec_t * ) calloc( 1, sizeof( srvrec_t )); sr->srv = ( char * ) calloc( domain->len+7, sizeof( char )); tmp = oct2strdup( domain, 0 ); snprintf(sr->srv, domain->len+6,"ldap.%s", tmp ); free( tmp ); } for( nsr = sr ; nsr ; nsr = nsr->next ) { /* should pick the one with the lowest priority first */ LOG(SPOCP_DEBUG) traceLog(LOG_DEBUG, "Trying %s:%d", nsr->srv, nsr->port); ld = open_conn(nsr->srv, nsr->port, &r); if (ld) break ; } srvrec_free( sr ); if (ld == 0) r = SPOCP_UNAVAILABLE; else if (dyn && dyn->size) { if (!dyn->bcp) dyn->bcp = becpool_new(dyn->size); bc = becon_push(domain, &P_ldapclose, (void *) ld, dyn->bcp); } } else ld = (LDAP *) bc->con; if (r != SPOCP_UNAVAILABLE) { /* get the baseDN */ dn = fqdn2dn( fqdn ); free( fqdn ); /* create the filter */ val = oct2strdup( argv->arr[1], 0 ); if( argv->n == 3 ) attr = oct2strdup( argv->arr[2], 0 ); else attr = "uid"; filter = (char *)malloc( strlen(attr) + strlen(val) +4); sprintf( filter, "(%s=%s)", attr, val ); traceLog(LOG_DEBUG, "Filter: %s, DN: %s", filter, dn); if( cpp->conf ) attrs = match_base( (ainfo_t *) cpp->conf, dn ); if (attrs == 0) attrs = defattrs; /* do the stuff */ ava = do_ldap_query( ld, dn, filter, attrs, &r); if (bc) becon_return(bc); else ldap_unbind_s(ld); free(val); free(filter); free(dn); if( argv->n == 3) free(attr); } /* create the blob */ if (ava) { xml = do_xml( ava ); oct_assign( blob, xml ); blob->size = blob->len; traceLog(LOG_DEBUG, "%s", xml); for( i = 0; ava[i] ; i++) { for( j = 0; ava[i][j] ; j++) free( ava[i][j] ); free( ava[i] ); } free(ava); } if (oct != cpp->arg) oct_free(oct); return r; }