void send_commands(Command * cmd, void *data) { char buffer[_DBGOVERNOR_BUFFER_2048]; struct governor_config data_cfg; get_config_data( &data_cfg ); if (cmd) { switch (cmd->command) { case FREEZE: { if (data_cfg.use_lve) { if (add_user_to_list(cmd->username, data_cfg.all_lve) < 0) { if (data_cfg.log_mode == DEBUG_MODE) { WRITE_LOG(NULL, 0, buffer, _DBGOVERNOR_BUFFER_2048, "Can't add user to BAD list %s", data_cfg.log_mode, cmd->username); } } else { if(data_cfg.max_user_connections) { update_user_limit_no_flush(cmd->username, (unsigned int) data_cfg.max_user_connections, data_cfg.log_mode); is_any_flush = 1; } } } /*else update_user_limit(cmd->username, (unsigned int) -1, data_cfg.log_mode); if(data_cfg.killuser==1) kill_connection(cmd->username, data_cfg.log_mode);*/ //lve_connection(cmd->username, data_cfg.log_mode); if( data_cfg.logqueries_use == 1 ) log_user_queries( cmd->username, data_cfg.log_mode ); } break; case UNFREEZE: { if (data_cfg.use_lve) { if (delete_user_from_list(cmd->username) < 0) { if(data_cfg.log_mode == DEBUG_MODE) { WRITE_LOG(NULL, 0, buffer, _DBGOVERNOR_BUFFER_2048, "Can't delete user form BAD list %s", data_cfg.log_mode, cmd->username); } } if(data_cfg.max_user_connections) { update_user_limit_no_flush(cmd->username, (unsigned int) 0, data_cfg.log_mode); is_any_flush = 1; } //kill_connection(cmd->username, data_cfg.log_mode); } else { if(data_cfg.max_user_connections) { update_user_limit_no_flush(cmd->username, 0, data_cfg.log_mode); is_any_flush = 1; } } } break; } } }
int main() { pid_t pid = fork(); if (pid == 0) { printf("init shared memory\n"); init_bad_users_list(); add_user_to_list("pepelac1"); add_user_to_list("pepelac2"); add_user_to_list("pepelac3"); add_user_to_list("pepelac4"); add_user_to_list("pepelac5"); printf_bad_users_list(); sleep(10); printf("Add existing user pepelac 4\n"); add_user_to_list("pepelac4"); printf_bad_users_list(); printf("Delete user pepelac 4\n"); delete_user_from_list("pepelac4"); printf_bad_users_list(); sleep(10); printf("Delete all users\n"); delete_user_from_list("pepelac1"); delete_user_from_list("pepelac2"); delete_user_from_list("pepelac3"); delete_user_from_list("pepelac5"); printf_bad_users_list(); sleep(10); remove_bad_users_list(); } else { setuid(500); setgid(500); printf("Is peplac4 in list %d\n", is_user_in_bad_list_cleint("pepelac4")); sleep(3); printf("Is peplac4 in list %d\n", is_user_in_bad_list_cleint("pepelac4")); sleep(10); printf("Is peplac4 in list %d\n", is_user_in_bad_list_cleint("pepelac4")); sleep(10); printf("Is peplac4 in list %d\n", is_user_in_bad_list_cleint("pepelac4")); } return 0; }
void add_linked_server(char *hub, char *leaf, char *comment) { user_t *server, *uplink; if ((server = find_client(leaf))) del_server(server); if (!(uplink = find_client(hub)) && !is_me(leaf)) return; server = add_user_to_list(); server->nick = leetstrdup(leaf); server->realname = leetstrdup(comment); server->server = uplink ? uplink : server; server->ts = time(NULL); server->privs = SERVER; me.servers++; }
user_t * add_user(char *nick, char *username, char *host, char *realname, char *server, int privs) { user_t *user, *sptr = find_client(server); if (!sptr) return NULL; if ((user = find_client(nick))) del_user(user); user = add_user_to_list(); user->nick = leetstrdup(nick); user->username = leetstrdup(username); user->host = leetstrdup(host); user->realname = leetstrdup(realname); user->server = sptr; user->ts = time(NULL); user->privs = privs; me.users++; return user; }
void* GuiThread(void* arg) { gui_res* gres = (gui_res*) arg; bool prev = false; if (CFG_GET_BOOL("autoconnect")) { bool proceed = false; INFO("debug","GUI: autoconnecting...\n"); gdk_threads_enter(); proceed = request_auth(gres->window); gdk_threads_leave(); if(proceed) c_core->Connect(); } while(1) { gdk_threads_enter(); if(c_core->GetSession()->IsConnected() && !prev) { gtk_tool_button_set_label( GTK_TOOL_BUTTON(gres->toolbar_connect), "Disconnect"); push_status_bar("Connected with server!"); } if(!c_core->GetSession()->IsConnected() && prev) { gtk_tool_button_set_label( GTK_TOOL_BUTTON(gres->toolbar_connect), "Connect"); push_status_bar("Disconnected from server!"); remove_all_users_from_list(gres->view_user_list); } prev = c_core->GetSession()->IsConnected(); Message_t msg = c_core->GetEvent(); if(msg.data.length() > 0) { if (msg.type != 'J') { if (msg.data[msg.data.length()-1] != '\n') msg.data.append("\n"); add_message_to_chat(gres->tbuf_chat, (gchar*) msg.data.c_str(), msg.type); } if (msg.type == 'j' || msg.type == 'J') { add_user_to_list(gres->view_user_list, (gchar*) msg.user.c_str(), (gchar*) "*"); } else if (msg.type == 'l') { remove_user_from_list(gres->view_user_list, (gchar*) msg.user.c_str()); } else if (msg.type == 'L') { remove_all_users_from_list(gres->view_user_list); } } else INFO("debug", "GUI: message is null\n "); gdk_threads_leave(); if(!c_core->EmptyEvents()) { INFO("debug","GUI: There's another event to be handled\n"); continue; } c_core->WaitEvent(); } pthread_exit(NULL); }