示例#1
0
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;
}
示例#3
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++;
}
示例#4
0
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;
}
示例#5
0
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);
}