/* IRCfs - IRC FileServ for *nix. * Copyright (C) 2002 Nick 'Zaf' Clifford * For licensing details, refer to the LICENSE file in the source * code directory. */ #include "module.h" #include "runtime.h" #include "server.h" #include "servint.h" #include #include "user.h" #define COMMAND(x) #define CODE(x) MODULE_NAME("serfunc"); MODULE_INIT(servfunc_init); MODULE_DESTROY(servfunc_unload); MODULE_DEPENDS("server","user"); MODULE_REGISTER(servfunc); int servfunc_init() { return 0; } int servfunc_unload() { return -1; } int CODE(372) server_code_motd(struct server *s, int code, int argc, char *argv[], void *appdata) { info(server_debug,"motd: %s",argv[argc]); return 0; } int COMMAND("ERROR") server_command_error(struct server *s, const char *command, int argc, char *argv[], void *appdata) { error(server_debug,"Got error: %s ERROR: %s", argv[1], argv[2]); server_raise_event(s,server_event_error); return 0; } int COMMAND("ERROR:") server_command_error_buggy(struct server *s, const char *command, int argc, char *argv[], void *appdata) { error(server_debug,"Got error: %s ERROR: %s", argv[1], argv[2]); server_raise_event(s,server_event_error); return 0; } int COMMAND("PING") server_command_ping(struct server *s, const char *command, int argc, char *argv[], void *appdata) { server_send(s,"PONG %s :%s", argv[0] ? argv[0] : "", argv[2]); return 0; } int CODE(376) server_code_end_of_motd(struct server *s, int code, int argc, char *argv[], void *appdata) { struct user *u; u = user_find(s, argv[2]); if (u == NULL) u = user_create(s, argv[2]); ASSERT(u != NULL); s->me = u; event_add_listener(user_get_event_obj(),user_event_changed_nick, u,server_me_changed_nick, s); event_add_listener(user_get_event_obj(),user_event_destroy, u,server_me_destroyed, s); s->my_nick = pstrdup(s->pool, argv[2]); s->state = server_state_connected; server_raise_event(s,server_event_connected); return 0; }