static void mapinfowindow_load_cities(gint nStateID) { db_resultset_t* pResultSet = NULL; db_row_t aRow; // // Load up all cities for this state // gchar* pszSQL = g_strdup_printf("SELECT City.ID, City.Name FROM City WHERE StateID=%d ORDER BY Name ASC;", nStateID); db_query(pszSQL, &pResultSet); g_free(pszSQL); g_return_if_fail(pResultSet != NULL); // New menu if(g_MapInfoWindow.pCityMenu) { gtk_widget_destroy(GTK_WIDGET(g_MapInfoWindow.pCityMenu)); } g_MapInfoWindow.pCityMenu = GTK_MENU(gtk_menu_new()); // Fill menu while((aRow = db_fetch_row(pResultSet)) != NULL) { gint nCityID = atoi(aRow[0]); gchar* pszName = aRow[1]; // Add new menu item GtkMenuItem* pNewMenuItem = GTK_MENU_ITEM(gtk_menu_item_new_with_mnemonic(pszName)); g_signal_connect(G_OBJECT(pNewMenuItem), "activate", (GCallback)mapinfowindow_on_city_chosen, GINT_TO_POINTER(nCityID)); gtk_menu_shell_append(GTK_MENU_SHELL(g_MapInfoWindow.pCityMenu), GTK_WIDGET(pNewMenuItem)); } db_free_result(pResultSet); // Install new menu gtk_widget_show_all(GTK_WIDGET(g_MapInfoWindow.pCityMenu)); gtk_menu_tool_button_set_menu(g_MapInfoWindow.pCityButton, GTK_WIDGET(g_MapInfoWindow.pCityMenu)); }
bool DBPermObj::AddToWhitelist(std::string & dbuser, std::string & pattern) { char * q = new char [ pattern.length() + 1024 ]; db_struct db; snprintf(q, pattern.length() + 1024, "SELECT queryid FROM query WHERE " "proxyid = %d and db_name = '%s' and query = '%s'", proxy_id, db_name.c_str(), pattern.c_str()); /* read new queryid from the database */ if (! db_query(&db, q ,pattern.length() + 1024)) { /* Failed */ logevent(STORAGE,"DB config erorr: %s\n",db_error()); delete [] q; db_cleanup(&db); return false; } /* Download result from server */ if (db_fetch_row(&db)) { // nothing to do here, query is aready in whitelist delete [] q; db_cleanup(&db); return true; } // add pattern to the whitelist snprintf(q, pattern.length() + 1024, "INSERT into query " "(proxyid, perm, db_name, query) " "VALUES (%d,1,'%s','%s')", proxy_id, db_name.c_str(), pattern.c_str()); /* read new urls from the database */ if (! db_exec(q)) { /* Make query */ logevent(STORAGE,"DB config erorr: %s\n",db_error()); delete [] q; return false; } delete [] q; q = NULL; return true; }
bool DBPermObj::LoadWhitelist() { db_struct db; char q[1024]; std::map<std::string, int, std::less<std::string> > q_list; snprintf(q, 1024, "SELECT query, perm FROM query " "WHERE proxyid = %d AND db_name='%s'", proxy_id, db_name.c_str()); /* read new exceptions from the database */ if (! db_query(&db,q,1024)) { logevent(STORAGE,"DB config erorr: %s\n",db_error()); db_cleanup(&db); return false; } int perm = 0; std::string q_ex = ""; /* Get a row from the results */ while (db_fetch_row(&db)) { perm = db_col_int(&db,1); q_ex = (char *) db_col_text(&db,0); if (perm > 0 && q_ex.length() > 0) { //q_list[q_ex] = perm; q_list.insert(std::pair<std::string, int>(q_ex, perm)); } } /* Release memory used to store results. */ db_cleanup(&db); exceptions.clear(); exceptions = q_list; return true; }
void mgrSiteGroupList(int fd, short evfd, void *arg) { sp_conn_p c = (sp_conn_p)arg; spXmlParser p((char*)"/home/dev/cpp/docroot/sirius/modules.xsl"); std::string myxml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; char * presult; DBRES q,qCount,qTrouble; MYSQL_ROW r,rCount,rTrouble; sp_strmap M,P; if(c->data->get_vars) M = *c->data->get_vars; if(c->data->post_vars) M = *c->data->post_vars; fprintf(stderr,"%s line %d...\n",__func__,__LINE__); for(;;){ //this permits few cycles switch(c->hndstate) { case 0: if(M["act"]=="sitegroupdel") c->hndstate = 2; else c->hndstate = 1; break; case 1: //prepare output buf c->resp->status=200; fprintf(stderr,"%s line %d...\n",__func__,__LINE__); (*c->resp->h_out)["Content-Type"] = "text/html"; conn_compile_resp(c); q = db_query("SELECT i.groupId, i.groupName " "FROM site_groups i " "ORDER BY groupName" ); fprintf(stderr,"%s line %d...\n",__func__,__LINE__); myxml += "<doc mtime=\"45gvergv4rg\" binary=\"/mgr/\" theme=\"/sirius/\" " "fixpng=\"\" localdir=\"local/\" img=\"\" css=\"main.css\" logolink=\"/mgr/\" logo=\"logo-vdsmgr.png\" >" "<p_num>1</p_num>" "<p_cnt>30</p_cnt>" "<p_sort>''</p_sort>" "<p_order>''</p_order>" "<plid></plid>" "<func>sitegroups</func>" "<slave></slave>" "<tfilter></tfilter>" "<metadata type=\"list\" selficon=\"equipment\" key=\"gid\">" "<coldata type=\"list\" key=\"gid\">" "<col type=\"data\" name=\"gid\" wrap=\"no\" align=\"left\" />" "<col type=\"data\" name=\"gname\" wrap=\"no\" align=\"left\" />" "<col type=\"data\" name=\"sites\" wrap=\"no\" align=\"left\" />" "<col type=\"data\" name=\"problems\" wrap=\"no\" align=\"left\" />" "</coldata>" "<toolbar type=\"list\" key=\"sss\">" "<toolbtn type=\"func\" name=\"sitegroupcreate\" img=\"t-new\" default=\"no\" func=\"tb_op_new('sitegroupadd')\" />" "<toolbtn type=\"func\" name=\"sitegroupedit\" img=\"t-edit\" default=\"yes\" func=\"tb_op_new('sitegroupedit')\" />" "<toolbtn type=\"editlist\" name=\"sitegroupdelete\" img=\"t-delete\" func=\"sitegroupdel\" />" "</toolbar>" "</metadata>" ; fprintf(stderr,"%s line %d...\n",__func__,__LINE__); while(r = db_fetch_row(q)) { myxml += "<elem>"; myxml += "<gid>"+(std::string)r[0]+"</gid>"; myxml += "<gname>"+(std::string)r[1]+"</gname>"; qCount = db_query("SELECT count(siteId) FROM sites WHERE groupId="+(std::string)r[0]); if(rCount = db_fetch_row(qCount)) myxml += "<sites>"+(std::string)rCount[0]+"</sites>"; db_free_result(qCount); qTrouble = db_query("SELECT count(siteId) FROM sites WHERE siteStatus!='0' AND groupId="+(std::string)r[0]); if(rTrouble = db_fetch_row(qTrouble)) myxml += "<problems>"+(std::string)rTrouble[0]+"</problems>"; db_free_result(qTrouble); //myxml += "<assigned>"+(std::string)r[4]+"</assigned>"; myxml += "</elem>"; } db_free_result(q); myxml += "<messages>" "<msg name=\"title\">Группы сайтов</msg>" "<msg name=\"gid\">ID</msg>" "<msg name=\"gname\">Имя группы</msg>" "<msg name=\"sites\">Всего сайтов</msg>" "<msg name=\"problems\">Проблем</msg>" "<msg name=\"hint_ipcreate\">Добавить группу в список</msg>" "<msg name=\"hint_ipedit\">Изменить свойства группы</msg>" "<msg name=\"hint_ipdelete\">Удалить группу</msg>" "<msg name=\"msg_nosel\">Ничего не выделено</msg>" "</messages>" "</doc>"; fprintf(stderr,"%s line %d... %s\n",__func__,__LINE__,myxml.c_str()); presult = p.parse(myxml); if(presult != NULL){ conn_fillresp(c,presult); }else{ conn_fillresp(c,"Template parse error"); } c->handler = sp_finish_request; sp_next(c, c->handler); return; case 2: fprintf(stderr,"DELETE FROM site_groups WHERE groupId='%s'\n",addslashes(P["elid"]).c_str()); db_query("DELETE FROM site_groups WHERE groupId='"+addslashes(P["elid"])+"'"); c->hndstate = 1; sp_next(c, c->handler); return; case 10: //error 500 c->resp->status=500; c->handler = sp_finish_request; sp_next(c, c->handler); return; } } }