Minor stuff on the uhub-admin tool based on the changes in the ADC client code.
This commit is contained in:
		
							parent
							
								
									ff2e2a3d4c
								
							
						
					
					
						commit
						5b4467acd5
					
				@ -19,52 +19,122 @@
 | 
			
		||||
 | 
			
		||||
#include "adcclient.h"
 | 
			
		||||
 | 
			
		||||
static struct ADC_user g_usermap[SID_MAX];
 | 
			
		||||
 | 
			
		||||
static void user_add(const struct ADC_user* user)
 | 
			
		||||
{
 | 
			
		||||
	printf(" >> JOIN: %s (%s)\n", user->name, user->address);
 | 
			
		||||
	memcpy(&g_usermap[user->sid], user, sizeof(struct ADC_user));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static struct ADC_user* user_get(sid_t sid)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
	struct ADC_user* user = &g_usermap[sid];
 | 
			
		||||
	uhub_assert(user->sid != 0);
 | 
			
		||||
	return user;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void user_remove(const struct ADC_client_quit_reason* quit)
 | 
			
		||||
{
 | 
			
		||||
	struct ADC_user* user = user_get(quit->sid);
 | 
			
		||||
	printf(" << QUIT: %s (%s)\n", user->name, quit->message);
 | 
			
		||||
	memset(&g_usermap[quit->sid], 0, sizeof(struct ADC_user));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void on_message(struct ADC_chat_message* chat)
 | 
			
		||||
{
 | 
			
		||||
	struct ADC_user* user;
 | 
			
		||||
	const char* pm = (chat->flags & chat_flags_private) ? "PM" : "  ";
 | 
			
		||||
	const char* brack1 = (chat->flags & chat_flags_action) ? "*" : "<";
 | 
			
		||||
	const char* brack2 = (chat->flags & chat_flags_action) ? "" : ">";
 | 
			
		||||
	struct linked_list* lines;
 | 
			
		||||
	int ret;
 | 
			
		||||
	char* line;
 | 
			
		||||
 | 
			
		||||
	if (!chat->from_sid)
 | 
			
		||||
	{
 | 
			
		||||
		printf("HUB ");
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		user = user_get(chat->from_sid);
 | 
			
		||||
		printf(" %s %s%s%s ", pm, brack1, user->name, brack2);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	lines = list_create();
 | 
			
		||||
	ret = split_string(chat->message, "\n", lines, 1);
 | 
			
		||||
 | 
			
		||||
	line = (char*) list_get_first(lines);
 | 
			
		||||
 | 
			
		||||
	ret = 0;
 | 
			
		||||
	while (line)
 | 
			
		||||
	{
 | 
			
		||||
		if (ret > 0)
 | 
			
		||||
			printf("    ");
 | 
			
		||||
		printf("%s\n", line);
 | 
			
		||||
		ret++;
 | 
			
		||||
		line = (char*) list_get_next(lines);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	list_clear(lines, &hub_free);
 | 
			
		||||
	list_destroy(lines);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void status(const char* msg)
 | 
			
		||||
{
 | 
			
		||||
	printf("*** %s\n", msg);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int handle(struct ADC_client* client, enum ADC_client_callback_type type, struct ADC_client_callback_data* data)
 | 
			
		||||
{
 | 
			
		||||
	switch (type)
 | 
			
		||||
	{
 | 
			
		||||
		case ADC_CLIENT_CONNECTING:
 | 
			
		||||
			puts("*** Connecting...");
 | 
			
		||||
			status("Connecting...");
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		case ADC_CLIENT_CONNECTED:
 | 
			
		||||
			puts("*** Connected.");
 | 
			
		||||
			status("Connected.");
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		case ADC_CLIENT_DISCONNECTED:
 | 
			
		||||
			puts("*** Disconnected.");
 | 
			
		||||
			status("Disconnected.");
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		case ADC_CLIENT_SSL_HANDSHAKE:
 | 
			
		||||
			puts("*** SSL handshake.");
 | 
			
		||||
			status("SSL handshake.");
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		case ADC_CLIENT_LOGGING_IN:
 | 
			
		||||
			puts("*** Logging in...");
 | 
			
		||||
			status("Logging in...");
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		case ADC_CLIENT_PASSWORD_REQ:
 | 
			
		||||
			puts("*** Requesting password.");
 | 
			
		||||
			status("Requesting password.");
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		case ADC_CLIENT_LOGGED_IN:
 | 
			
		||||
			puts("*** Logged in.");
 | 
			
		||||
			status("Logged in.");
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		case ADC_CLIENT_LOGIN_ERROR:
 | 
			
		||||
			puts("*** Login error");
 | 
			
		||||
			status("Login error");
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		case ADC_CLIENT_MESSAGE:
 | 
			
		||||
			printf("    <%s> %s\n", sid_to_string(data->chat->from_sid), data->chat->message);
 | 
			
		||||
			on_message(data->chat);
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		case ADC_CLIENT_USER_JOIN:
 | 
			
		||||
			printf("    JOIN: %s %s\n", sid_to_string(data->user->sid), data->user->name);
 | 
			
		||||
			
 | 
			
		||||
			user_add(data->user);
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		case ADC_CLIENT_USER_QUIT:
 | 
			
		||||
			printf("    QUIT\n");
 | 
			
		||||
			user_remove(data->quit);
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		case ADC_CLIENT_SEARCH_REQ:
 | 
			
		||||
@ -96,6 +166,8 @@ int main(int argc, char** argv)
 | 
			
		||||
	struct ADC_client client;
 | 
			
		||||
	net_initialize();
 | 
			
		||||
 | 
			
		||||
	memset(g_usermap, 0, sizeof(g_usermap));
 | 
			
		||||
 | 
			
		||||
	ADC_client_create(&client, "uhub-admin", "stresstester");
 | 
			
		||||
	ADC_client_set_callback(&client, handle);
 | 
			
		||||
	ADC_client_connect(&client, argv[1]);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user