src/cmd_neonserv_extscript.c \
src/cmd_neonspam_set.c \
src/cmd_neonserv_noregister.c \
+ src/cmd_global_staff.c \
src/cmd_funcmds.c \
src/lib/ini.c
return last->next;
}
+struct UserNode* getUsersWithAuth(const char *auth, struct UserNode *last) {
+ int cindex = (last ? get_nicklist_entry(last->nick[0]) : 0);
+ struct UserNode *cuser = last;
+ while(cindex <= VALID_NICK_CHARS_FIRST_LEN) {
+ for(cuser = (cuser ? cuser->next : userList[cindex]); cuser; cuser = cuser->next) {
+ if((cuser->flags & USERFLAG_ISAUTHED) && !strcmp(cuser->auth, auth))
+ return cuser;
+ }
+ cindex++;
+ cuser = NULL;
+ }
+ return NULL;
+}
+
int getUserCount() {
int i, count = 0;
struct UserNode *user;
char *getAuthFakehost(char *auth);
struct UserNode* searchUserByNick(const char *nick);
struct UserNode* getAllUsers(struct UserNode *last);
+struct UserNode* getUsersWithAuth(const char *auth, struct UserNode *last);
int getUserCount();
struct UserNode* addUser(const char *nick);
struct UserNode* addUserMask(const char *mask);
{"NS_DNR_USER", "Issuer"},
{"NS_DNR_EXPIRES", "Expires"},
{"NS_DNR_REASON", "Reason"},
-
+ {"NS_STAFF_LOGGEDIN", "Logged in as"},
{NULL, NULL}
};
CMD_BIND(global_cmd_reloadlang);
CMD_BIND(global_cmd_say);
CMD_BIND(global_cmd_setaccess);
+CMD_BIND(global_cmd_staff);
CMD_BIND(global_cmd_unbind);
CMD_BIND(global_cmd_unregister);
CMD_BIND(global_cmd_version);
--- /dev/null
+/* cmd_global_staff.c - NeonServ v5.2
+ * Copyright (C) 2011 Philipp Kreil (pk910)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "cmd_global.h"
+
+/*
+* no arguments
+*/
+
+CMD_BIND(global_cmd_staff) {
+ MYSQL_RES *res, *res2;
+ MYSQL_ROW row, row2;
+ printf_mysql_query("SELECT `rank_id`, `rank_name` FROM `support_ranks` ORDER BY `rank_order` ASC");
+ res = mysql_use();
+ while ((row = mysql_fetch_row(res)) != NULL) {
+ printf_mysql_query("SELECT `user_user`, `user_god` FROM `users` WHERE `user_rank` = '%s'", row[0]);
+ res2 = mysql_use();
+ if(mysql_num_rows(res2)) {
+ reply(getTextBot(), user, "\002%s\002", row[1]);
+ while ((row2 = mysql_fetch_row(res2)) != NULL) {
+ if(strcmp(row2[1], "0")) {
+ //god enabled - show nicks
+ char loggedinBuf[MAXLEN];
+ int loggedinPos = 0;
+ struct UserNode *cuser;
+ for(cuser = getUsersWithAuth(row2[0], NULL); cuser; cuser = getUsersWithAuth(row2[0], cuser)) {
+ loggedinPos += sprintf(loggedinBuf+loggedinPos, (loggedinPos ? ", %s" : "%s"), cuser->nick);
+ }
+ if(loggedinPos)
+ reply(getTextBot(), user, " %s (%s: %s)", row2[0], get_language_string(user, "NS_STAFF_LOGGEDIN"), loggedinBuf);
+ else
+ reply(getTextBot(), user, " %s", row2[0]);
+ } else
+ reply(getTextBot(), user, " %s", row2[0]);
+ }
+ }
+ }
+}
USER_COMMAND("netinfo", global_cmd_netinfo, 0, NULL, 0);
USER_COMMAND("commands", global_cmd_commands, 0, NULL, 0);
USER_COMMAND("command", global_cmd_command, 1, NULL, 0);
+ USER_COMMAND("staff", global_cmd_staff, 0, NULL, 0);
#undef USER_COMMAND
#define OPER_COMMAND(NAME,FUNCTION,PARAMCOUNT,GACCESS,FLAGS) register_command(0, NAME, FUNCTION, PARAMCOUNT, NULL, GACCESS, FLAGS)