]> jfr.im git - irc/quakenet/newserv.git/blobdiff - lua/luacommands.c
Export the mask matching function to lua (to match bans, ignores, etc.).
[irc/quakenet/newserv.git] / lua / luacommands.c
index 2599f135628268e151b866b4918031fef5b1f3eb..222396ad14be7025acf26e12b11d3a177c373028 100644 (file)
@@ -221,7 +221,6 @@ static int lua_gline(lua_State *ps) {
   nick *target;
   char mask[512];
   int duration, usercount = 0;
-  host *hp;
   
   if(!lua_isstring(ps, 1) || !lua_isint(ps, 2) || !lua_isstring(ps, 3))
     LUA_RETURN(ps, LUA_FAIL);
@@ -238,10 +237,10 @@ static int lua_gline(lua_State *ps) {
   if(!target || (IsOper(target) || IsXOper(target) || IsService(target)))
     LUA_RETURN(ps, LUA_FAIL);
 
-  if(glinebynick(target, duration, reason, GLINE_SIMULATE) > 50)
+  if(glinebynick(target, duration, reason, GLINE_SIMULATE, "lua") > 50)
     LUA_RETURN(ps, LUA_FAIL);
 
-  usercount = glinebynick(target, duration, reason, 0);
+  usercount = glinebynick(target, duration, reason, 0, "lua");
   LUA_RETURN(ps, lua_cmsg(LUA_PUKECHAN, "lua-GLINE: %s (%d users, %d seconds -- %s)", mask, usercount, duration, reason));
 }
 
@@ -365,6 +364,21 @@ static int lua_numerictobase64(lua_State *ps) {
   return 1;
 }
 
+static int lua_match(lua_State *ps) {
+  const char *mask, *string;
+
+  if(!lua_isstring(ps, 1) || !lua_isstring(ps, 2))
+    return 0;
+
+  mask = lua_tostring(ps, 1);
+  string = lua_tostring(ps, 2);
+
+  if (!mask || !mask[0] || !string || !string[0])
+    return 0;
+
+  LUA_RETURN(ps, match2strings(mask, string));
+}
+
 static int lua_getuserbyauth(lua_State *l) {
   nick *np;
   int found = 0;
@@ -888,6 +902,7 @@ void lua_registercommands(lua_State *l) {
   lua_register(l, "irc_sethost", lua_sethost);
 
   lua_register(l, "irc_numerictobase64", lua_numerictobase64);
+  lua_register(l, "irc_match", lua_match);
 }
 
 /* --- */