X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/blobdiff_plain/16739dbe741b18f928453637e73507a16c7c2091..8c684fca9c7dbb4a2601628c744be9236ee68641:/lua/luacommands.c diff --git a/lua/luacommands.c b/lua/luacommands.c index 0ad3267c..84b6e960 100644 --- a/lua/luacommands.c +++ b/lua/luacommands.c @@ -16,6 +16,7 @@ #include "../localuser/localuserchannel.h" #include "../lib/irc_string.h" #include "../lib/flags.h" +#include "../authext/authext.h" #include "lua.h" #include "luabot.h" @@ -38,8 +39,8 @@ struct lua_pusher nickpusher[MAX_PUSHER]; struct lua_pusher chanpusher[MAX_PUSHER]; int nickpushercount, chanpushercount; -INLINE void lua_setuppusher(struct lua_pusher *pusherlist, lua_State *l, int index, struct lua_pusher **lp, int max, int pcount); -INLINE int lua_usepusher(lua_State *l, struct lua_pusher **lp, void *np); +void lua_setuppusher(struct lua_pusher *pusherlist, lua_State *l, int index, struct lua_pusher **lp, int max, int pcount); +int lua_usepusher(lua_State *l, struct lua_pusher **lp, void *np); void lua_initnickpusher(void); void lua_initchanpusher(void); @@ -260,7 +261,7 @@ static int lua_gline(lua_State *ps) { snprintf(mask, sizeof(mask), "*@%s", IPtostr(target->p_ipaddr)); } - irc_send("%s GL * +%s %d :%s", mynumeric->content, mask, duration, reason); + irc_send("%s GL * +%s %d %jd :%s", mynumeric->content, mask, duration, (intmax_t)getnettime(), reason); LUA_RETURN(ps, lua_cmsg(LUA_PUKECHAN, "lua-GLINE: %s (%d users, %d seconds -- %s)", mask, usercount, duration, reason)); } @@ -370,24 +371,27 @@ static int lua_basepath(lua_State *ps) { return 1; } -/* O(n) */ +static int lua_botnick(lua_State *ps) { + lua_pushstring(ps, luabotnick->content); + + return 1; +} + static int lua_getuserbyauth(lua_State *l) { - const char *acc; nick *np; - int i, found = 0; + int found = 0; + authname *au; if(!lua_isstring(l, 1)) return 0; - acc = lua_tostring(l, 1); + au = getauthbyname(lua_tostring(l, 1)); + if(!au) + return 0; - for(i=0;inext) { - if(np && np->authname[0] && !ircd_strcmp(np->authname, acc)) { - lua_pushnumeric(l, np->numeric); - found++; - } - } + for(np=au->nicks;np;np=np->nextbyauthname) { + lua_pushnumeric(l, np->numeric); + found++; } return found; @@ -846,6 +850,7 @@ void lua_registercommands(lua_State *l) { lua_register(l, "chanmsg", lua_chanmsg); lua_register(l, "versioninfo", lua_versioninfo); lua_register(l, "basepath", lua_basepath); + lua_register(l, "botnick", lua_botnick); lua_register(l, "irc_report", lua_chanmsg); lua_register(l, "irc_ctcp", lua_ctcp); @@ -966,7 +971,7 @@ void lua_initnickpusher(void) { nickpusher[i].argtype = 0; } -INLINE void lua_setuppusher(struct lua_pusher *pusherlist, lua_State *l, int index, struct lua_pusher **lp, int max, int pcount) { +void lua_setuppusher(struct lua_pusher *pusherlist, lua_State *l, int index, struct lua_pusher **lp, int max, int pcount) { int current = 0; if(max > 0) @@ -995,7 +1000,7 @@ INLINE void lua_setuppusher(struct lua_pusher *pusherlist, lua_State *l, int ind lp[current] = NULL; } -INLINE int lua_usepusher(lua_State *l, struct lua_pusher **lp, void *np) { +int lua_usepusher(lua_State *l, struct lua_pusher **lp, void *np) { int i = 0; while(*lp) {