diff options
Diffstat (limited to 'src/core/os_admin.c')
-rw-r--r-- | src/core/os_admin.c | 320 |
1 files changed, 160 insertions, 160 deletions
diff --git a/src/core/os_admin.c b/src/core/os_admin.c index d394b526c..d7e8c3c75 100644 --- a/src/core/os_admin.c +++ b/src/core/os_admin.c @@ -17,7 +17,7 @@ int do_admin(User * u); int admin_list_callback(SList * slist, int number, void *item, - va_list args); + va_list args); int admin_list(int number, NickCore * nc, User * u, int *sent_header); void myOperServHelp(User * u); @@ -49,7 +49,7 @@ class OSAdmin : public Module **/ void myOperServHelp(User * u) { - notice_lang(s_OperServ, u, OPER_HELP_CMD_ADMIN); + notice_lang(s_OperServ, u, OPER_HELP_CMD_ADMIN); } /** @@ -59,176 +59,176 @@ void myOperServHelp(User * u) **/ int do_admin(User * u) { - char *cmd = strtok(NULL, " "); - char *nick = strtok(NULL, " "); - NickAlias *na; - int res = 0; - - if (!cmd || (!nick && stricmp(cmd, "LIST") && stricmp(cmd, "CLEAR"))) { - syntax_error(s_OperServ, u, "ADMIN", OPER_ADMIN_SYNTAX); - } else if (!stricmp(cmd, "ADD")) { - if (!is_services_root(u)) { - notice_lang(s_OperServ, u, PERMISSION_DENIED); - return MOD_CONT; - } - - if (!(na = findnick(nick))) { - notice_lang(s_OperServ, u, NICK_X_NOT_REGISTERED, nick); - return MOD_CONT; - } - - if (na->status & NS_VERBOTEN) { - notice_lang(s_OperServ, u, NICK_X_FORBIDDEN, nick); - return MOD_CONT; - } - - if (na->nc->flags & NI_SERVICES_ADMIN - || slist_indexof(&servadmins, na->nc) != -1) { - notice_lang(s_OperServ, u, OPER_ADMIN_EXISTS, nick); - return MOD_CONT; - } - - res = slist_add(&servadmins, na->nc); - if (res == -2) { - notice_lang(s_OperServ, u, OPER_ADMIN_REACHED_LIMIT, nick); - return MOD_CONT; - } else { - if (na->nc->flags & NI_SERVICES_OPER - && (res = slist_indexof(&servopers, na->nc)) != -1) { - slist_delete(&servopers, res); - na->nc->flags |= NI_SERVICES_ADMIN; - notice_lang(s_OperServ, u, OPER_ADMIN_MOVED, nick); - } else { - na->nc->flags |= NI_SERVICES_ADMIN; - notice_lang(s_OperServ, u, OPER_ADMIN_ADDED, nick); - } - } - - if (readonly) - notice_lang(s_OperServ, u, READ_ONLY_MODE); - } else if (!stricmp(cmd, "DEL")) { - if (!is_services_root(u)) { - notice_lang(s_OperServ, u, PERMISSION_DENIED); - return MOD_CONT; - } - - if (servadmins.count == 0) { - notice_lang(s_OperServ, u, OPER_ADMIN_LIST_EMPTY); - return MOD_CONT; - } - - if (isdigit(*nick) && strspn(nick, "1234567890,-") == strlen(nick)) { - /* Deleting a range */ - res = slist_delete_range(&servadmins, nick, NULL); - if (res == 0) { - notice_lang(s_OperServ, u, OPER_ADMIN_NO_MATCH); - return MOD_CONT; - } else if (res == 1) { - notice_lang(s_OperServ, u, OPER_ADMIN_DELETED_ONE); - } else { - notice_lang(s_OperServ, u, OPER_ADMIN_DELETED_SEVERAL, - res); - } - } else { - if (!(na = findnick(nick))) { - notice_lang(s_OperServ, u, NICK_X_NOT_REGISTERED, nick); - return MOD_CONT; - } - - if (na->status & NS_VERBOTEN) { - notice_lang(s_OperServ, u, NICK_X_FORBIDDEN, nick); - return MOD_CONT; - } - - if (!(na->nc->flags & NI_SERVICES_ADMIN) - || (res = slist_indexof(&servadmins, na->nc)) == -1) { - notice_lang(s_OperServ, u, OPER_ADMIN_NOT_FOUND, nick); - return MOD_CONT; - } - - slist_delete(&servadmins, res); - notice_lang(s_OperServ, u, OPER_ADMIN_DELETED, nick); - } - - if (readonly) - notice_lang(s_OperServ, u, READ_ONLY_MODE); - } else if (!stricmp(cmd, "LIST")) { - int sent_header = 0; + char *cmd = strtok(NULL, " "); + char *nick = strtok(NULL, " "); + NickAlias *na; + int res = 0; + + if (!cmd || (!nick && stricmp(cmd, "LIST") && stricmp(cmd, "CLEAR"))) { + syntax_error(s_OperServ, u, "ADMIN", OPER_ADMIN_SYNTAX); + } else if (!stricmp(cmd, "ADD")) { + if (!is_services_root(u)) { + notice_lang(s_OperServ, u, PERMISSION_DENIED); + return MOD_CONT; + } + + if (!(na = findnick(nick))) { + notice_lang(s_OperServ, u, NICK_X_NOT_REGISTERED, nick); + return MOD_CONT; + } + + if (na->status & NS_VERBOTEN) { + notice_lang(s_OperServ, u, NICK_X_FORBIDDEN, nick); + return MOD_CONT; + } + + if (na->nc->flags & NI_SERVICES_ADMIN + || slist_indexof(&servadmins, na->nc) != -1) { + notice_lang(s_OperServ, u, OPER_ADMIN_EXISTS, nick); + return MOD_CONT; + } + + res = slist_add(&servadmins, na->nc); + if (res == -2) { + notice_lang(s_OperServ, u, OPER_ADMIN_REACHED_LIMIT, nick); + return MOD_CONT; + } else { + if (na->nc->flags & NI_SERVICES_OPER + && (res = slist_indexof(&servopers, na->nc)) != -1) { + slist_delete(&servopers, res); + na->nc->flags |= NI_SERVICES_ADMIN; + notice_lang(s_OperServ, u, OPER_ADMIN_MOVED, nick); + } else { + na->nc->flags |= NI_SERVICES_ADMIN; + notice_lang(s_OperServ, u, OPER_ADMIN_ADDED, nick); + } + } + + if (readonly) + notice_lang(s_OperServ, u, READ_ONLY_MODE); + } else if (!stricmp(cmd, "DEL")) { + if (!is_services_root(u)) { + notice_lang(s_OperServ, u, PERMISSION_DENIED); + return MOD_CONT; + } + + if (servadmins.count == 0) { + notice_lang(s_OperServ, u, OPER_ADMIN_LIST_EMPTY); + return MOD_CONT; + } + + if (isdigit(*nick) && strspn(nick, "1234567890,-") == strlen(nick)) { + /* Deleting a range */ + res = slist_delete_range(&servadmins, nick, NULL); + if (res == 0) { + notice_lang(s_OperServ, u, OPER_ADMIN_NO_MATCH); + return MOD_CONT; + } else if (res == 1) { + notice_lang(s_OperServ, u, OPER_ADMIN_DELETED_ONE); + } else { + notice_lang(s_OperServ, u, OPER_ADMIN_DELETED_SEVERAL, + res); + } + } else { + if (!(na = findnick(nick))) { + notice_lang(s_OperServ, u, NICK_X_NOT_REGISTERED, nick); + return MOD_CONT; + } + + if (na->status & NS_VERBOTEN) { + notice_lang(s_OperServ, u, NICK_X_FORBIDDEN, nick); + return MOD_CONT; + } + + if (!(na->nc->flags & NI_SERVICES_ADMIN) + || (res = slist_indexof(&servadmins, na->nc)) == -1) { + notice_lang(s_OperServ, u, OPER_ADMIN_NOT_FOUND, nick); + return MOD_CONT; + } + + slist_delete(&servadmins, res); + notice_lang(s_OperServ, u, OPER_ADMIN_DELETED, nick); + } + + if (readonly) + notice_lang(s_OperServ, u, READ_ONLY_MODE); + } else if (!stricmp(cmd, "LIST")) { + int sent_header = 0; - if (servadmins.count == 0) { - notice_lang(s_OperServ, u, OPER_ADMIN_LIST_EMPTY); - return MOD_CONT; - } - - if (!nick || (isdigit(*nick) - && strspn(nick, "1234567890,-") == strlen(nick))) { - res = - slist_enum(&servadmins, nick, &admin_list_callback, u, - &sent_header); - if (res == 0) { - notice_lang(s_OperServ, u, OPER_ADMIN_NO_MATCH); - return MOD_CONT; - } else { - notice_lang(s_OperServ, u, END_OF_ANY_LIST, "Admin"); - } - } else { - int i; - - for (i = 0; i < servadmins.count; i++) - if (!stricmp - (nick, ((NickCore *) servadmins.list[i])->display) - || match_wild_nocase(nick, - ((NickCore *) servadmins. - list[i])->display)) - admin_list(i + 1, (NickCore *)servadmins.list[i], u, &sent_header); - - if (!sent_header) - notice_lang(s_OperServ, u, OPER_ADMIN_NO_MATCH); - else { - notice_lang(s_OperServ, u, END_OF_ANY_LIST, "Admin"); - } - } - } else if (!stricmp(cmd, "CLEAR")) { - if (!is_services_root(u)) { - notice_lang(s_OperServ, u, PERMISSION_DENIED); - return MOD_CONT; - } - - if (servadmins.count == 0) { - notice_lang(s_OperServ, u, OPER_ADMIN_LIST_EMPTY); - return MOD_CONT; - } - - slist_clear(&servadmins, 1); - notice_lang(s_OperServ, u, OPER_ADMIN_CLEAR); - } else { - syntax_error(s_OperServ, u, "ADMIN", OPER_ADMIN_SYNTAX); - } - return MOD_CONT; + if (servadmins.count == 0) { + notice_lang(s_OperServ, u, OPER_ADMIN_LIST_EMPTY); + return MOD_CONT; + } + + if (!nick || (isdigit(*nick) + && strspn(nick, "1234567890,-") == strlen(nick))) { + res = + slist_enum(&servadmins, nick, &admin_list_callback, u, + &sent_header); + if (res == 0) { + notice_lang(s_OperServ, u, OPER_ADMIN_NO_MATCH); + return MOD_CONT; + } else { + notice_lang(s_OperServ, u, END_OF_ANY_LIST, "Admin"); + } + } else { + int i; + + for (i = 0; i < servadmins.count; i++) + if (!stricmp + (nick, ((NickCore *) servadmins.list[i])->display) + || match_wild_nocase(nick, + ((NickCore *) servadmins. + list[i])->display)) + admin_list(i + 1, (NickCore *)servadmins.list[i], u, &sent_header); + + if (!sent_header) + notice_lang(s_OperServ, u, OPER_ADMIN_NO_MATCH); + else { + notice_lang(s_OperServ, u, END_OF_ANY_LIST, "Admin"); + } + } + } else if (!stricmp(cmd, "CLEAR")) { + if (!is_services_root(u)) { + notice_lang(s_OperServ, u, PERMISSION_DENIED); + return MOD_CONT; + } + + if (servadmins.count == 0) { + notice_lang(s_OperServ, u, OPER_ADMIN_LIST_EMPTY); + return MOD_CONT; + } + + slist_clear(&servadmins, 1); + notice_lang(s_OperServ, u, OPER_ADMIN_CLEAR); + } else { + syntax_error(s_OperServ, u, "ADMIN", OPER_ADMIN_SYNTAX); + } + return MOD_CONT; } int admin_list_callback(SList * slist, int number, void *item, - va_list args) + va_list args) { - User *u = va_arg(args, User *); - int *sent_header = va_arg(args, int *); + User *u = va_arg(args, User *); + int *sent_header = va_arg(args, int *); - return admin_list(number, (NickCore *)item, u, sent_header); + return admin_list(number, (NickCore *)item, u, sent_header); } int admin_list(int number, NickCore * nc, User * u, int *sent_header) { - if (!nc) - return 0; + if (!nc) + return 0; - if (!*sent_header) { - notice_lang(s_OperServ, u, OPER_ADMIN_LIST_HEADER); - *sent_header = 1; - } + if (!*sent_header) { + notice_lang(s_OperServ, u, OPER_ADMIN_LIST_HEADER); + *sent_header = 1; + } - notice_lang(s_OperServ, u, OPER_ADMIN_LIST_FORMAT, number, - nc->display); - return 1; + notice_lang(s_OperServ, u, OPER_ADMIN_LIST_FORMAT, number, + nc->display); + return 1; } MODULE_INIT("os_admin", OSAdmin) |