[API] Anti-Spam v1.5.2b
#1
Anti-Spam v1.5.2b


[Imagen: regex.jpg]

Descripcion:
Es un simple plugin que mediante patrones de regex checkea si una string tiene una IP o direccion web, ya sea el nombre del jugador o lo que escribio por say. Alguien puede intentar spamear algo 5 veces y luego sera kickeado.

ChangeLog:
Código:
v1.0 - Realizacion del plugin
v1.1 - Mejoramiento en rendimiento y funcion del pattern de Regex
     - Nueva mejora en los patterns, ahora detecta paginas web de una forma mas eficiente (minimo de 2 letras despues del punto).
       Proxima actualizacion lo mejoraré aun más por futuros problemas con nombres raros como 'As.dd'
     - Nuevo tipo de deteccion de ip.
v1.1b - Arreglado algunas cosas del pattern de la web
v1.2a - Minusculos cambios.
v1.3 - Mejorado el regex de web. Ahora blockea a las que empiezan con http(s)://
v1.4 - Plugin mas modulizado
v1.5 - Agregado nuevo regex de ips. Arreglado el error del regex de ips: 192. 123 (...) |
192 .123 (...) | 123 . 123 (...)
v1.5.2b - Re-escrito el regex de la ip. Removido el regex de ip n°2.

Módulos: Regex

Creditos:
  • Mario AR. (ChatColor)
    Milashkasiya (Regex)

Ejemplo:
Código PHP:
#include <amxmodx>
#include <anti_spam>

#define PLUGIN    "Anti-Spam Chat"
#define VERSION    "1.1"
#define AUTHOR    "Kane"

new g_maxplayersg_msgSayText

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
as_set_max_spams(5)
    
as_set_spam_add(1)
    
    
// Add your code here...
    
register_clcmd("say""clcmd_say")
    
register_clcmd("say_team""clcmd_team_say")
    
    
g_maxplayers get_maxplayers()
    
g_msgSayText get_user_msgid("SayText")
}

// Creditos a RauliTop
public clcmd_say(id)
{
    static 
m_iMessage[100]
    
read_args(m_iMessagecharsmax(m_iMessage))
    
remove_quotes(m_iMessage)
    
replace_all(m_iMessagecharsmax(m_iMessage), "%"" ")
    
    if (!
m_iMessage[0]) return PLUGIN_CONTINUE;
    
    new 
spam[12]
    if (
as_check_string(m_iMessagespam))
    {
        
as_add_user_count(id)
        
chat_color(id"%s %s"szPrintspam)
        return 
PLUGIN_HANDLED;
    }
    
    static 
name[32]
    
get_user_name(idname31)
    
chat_color(0"!team%s !y: %s"namem_iMessage)
    
    return 
PLUGIN_HANDLED_MAIN;
}

public 
clcmd_team_say(id)
{
    static 
m_iMessage[100]
    
read_args(m_iMessagecharsmax(m_iMessage))
    
remove_quotes(m_iMessage)
    
replace_all(m_iMessagecharsmax(m_iMessage), "%"" ")
    
    if (!
m_iMessage[0]) return PLUGIN_CONTINUE;
    
    new 
spam[12]
    if (
as_check_string(m_iMessagespam))
    {
        
chat_color(id"%s %s"szPrintspam)
        
as_add_user_count(id)
        return 
PLUGIN_HANDLED;
    }
    
    
    static 
iTeamTagTeam[22], name[32], i
    iTeam 
get_user_team(id)
    
get_user_name(idname31)
    
    switch (
iTeam)
    {
        case 
1copy(TagTeam13"(Terrorist) ")
        case 
2copy(TagTeam21"(Counter-Terrorist) ")
        default: 
copy(TagTeam13"(Spectator) ")
    }
    
    for (
1<= g_maxplayersi++)
        if (
is_user_connected(i) && get_user_team(i) == iTeam)
            
chat_color(i"%s%s!team%s !y: %s"is_user_alive(id) ? "!y" "!y*DEAD*"TagTeamnamem_iMessage)
    
    return 
PLUGIN_HANDLED_MAIN;
}

stock chat_color(const id, const input[], any:...)
{
    new 
count 1players[32]
    
    static 
msg[191]
    
vformat(msg190input3)   
    
    
replace_all(msg190"!g""^4"// Green Color
    
replace_all(msg190"!y""^1"// Default Color
    
replace_all(msg190"!team""^3"// Team Color
    
replace_all(msg190"!team2""^0"// Team2 Color
    
    
if (id)
        
players[0] = id;
    else
        
get_players(playerscount"ch")
    
    for (new 
0counti++)
    {
        if (
is_user_connected(players[i]))
        {
            
message_begin(MSG_ONE_UNRELIABLEg_msgSayText_players[i])
            
write_byte(players[i])
            
write_string(msg)
            
message_end()
        }
    }



Archivos adjuntos
.inc   anti_spam.inc (Tamaño: 1.51 KB / Descargas: 446)
.sma   Descargar AMXX / anti_spam.sma (Tamaño: 4.83 KB / Descargas: 1,088)
(19/06/2014, 11:08 PM)01011001 escribió: No tiene niveles infinitos, llega hasta 2147483648 (Y despues hace un integer overflow)

(19/06/2014, 11:08 PM)[R]ak escribió: Mis conocimientos aumentaron un 500% con este post
Responder
#2
Puedes explicarme esto

Código PHP:
regex_match(string"\b(?:\d{1,3}(\.|-| |/)){1}\d{1,3}\b"g_regex_returnerrorcharsmax(error), "i"
todo
Responder
#3
(14/09/2014, 06:37 PM)UnrealT escribió: Puedes explicarme esto

Código PHP:
regex_match(string"\b(?:\d{1,3}(\.|-| |/)){1}\d{1,3}\b"g_regex_returnerrorcharsmax(error), "i"
todo

https://forums.alliedmods.net/showthread.php?t=187308

Ni te molestes en enviarme un mensaje privado para pedirme ayuda porque NO lo voy a contestar.
Gracias por su atención.
Responder
#4
(14/09/2014, 06:37 PM)UnrealT escribió: Puedes explicarme esto

Código PHP:
regex_match(string"\b(?:\d{1,3}(\.|-| |/)){1}\d{1,3}\b"g_regex_returnerrorcharsmax(error), "i"
todo


Código:
\b(?:\d{1,3}(\.|-| |/)){1}\d{1,3}\b

Descomponemos en:
\b = Delimitador: marca espacios en blanco, puntuación o el inicio/final de una cadena. (no me acordaba como explicarlo xd)
() = sabes para que sirve un parentesis..
(?:x) = busca un numero que coincida con 'x'(lo que le sigue), y despues de ser llamado de nuevo busca otro sin importa si coindice con el 'x' anterior
\d = numeros entre 0 y 9 = [0-9]
{1,3} = indica que la accion ejectudad se realiza: min(x, y)=(1, 3)= se realize + de una vez pero menos de 3
(\.|-| |/) = la barra '|' es 'o', es decir (tiene un '.' o tiene espacio o tiene /)=(\.|-| |/)
{1} = indica que la accion ejecutada anteriormente se repita 1 vez

En castellano:
\b = empieza la cadena
(buscamos un numero que (?Sonrisa sea entre 0-9 (\d) tres veces seguido por (\.|-| |/)=(tiene un '.' o tiene espacio o tiene /))Repetimos esto:{1} veces
buscamos otro numero entre 0 y 9 (\d) y lo repetimos {1,3} veces
\b = termina la cadena

Las cosas que pude te las explica, hubo otras que son dificiles de explicar y las tuve que buscar.

Espero haber aclarado las dudas
(19/06/2014, 11:08 PM)01011001 escribió: No tiene niveles infinitos, llega hasta 2147483648 (Y despues hace un integer overflow)

(19/06/2014, 11:08 PM)[R]ak escribió: Mis conocimientos aumentaron un 500% con este post
Responder
#5
No entendia xD ya me quedo claro!
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

Estudia siempre; el tiempo es oro, lo material se puede recuperar pero el tiempo no se puede recuperar.
(02/10/2016, 05:05 PM)meTaLiCroSS escribió: Siempre me gusta ayudar cuando alguien esta interesado realmente en ver que esta programando.
(08/08/2019, 05:32 PM)meTaLiCroSS escribió: grax x el dato cr4ck


Mis aportes

PLUGINS
MAPAS
Menú LANG [SF] Sistema de Frags
Say System (Admin Prefix)
Responder
#6
Podrias agregarle quiza un .ini para bloquear ciertas palabras..
Responder
#7
(15/09/2014, 04:22 PM)Crash!! escribió: Podrias agregarle quiza un .ini para bloquear ciertas palabras..

ya hay plugin para bloquear palabras e.e así como esta, esta perfecto Rainbow
[Imagen: bvpq9q-6.png]

NO DOY AYUDA VIA MENSAJE PRIVADO

* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook
Responder
#8
Podrías darle soporte para una cantidad ilimitada de espacios entre los números o puntos con " *"
[Imagen: paypalqr.png]
Responder
#9
(15/09/2014, 04:26 PM)kikizon2 escribió:
(15/09/2014, 04:22 PM)Crash!! escribió: Podrias agregarle quiza un .ini para bloquear ciertas palabras..

ya hay plugin para bloquear palabras e.e así como esta, esta perfecto Rainbow

Podrias pasarme el link ?
Responder
#10
como puedo hacer para que cuando mande la ip o la web salgan "***SPAM***" ?
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

Estudia siempre; el tiempo es oro, lo material se puede recuperar pero el tiempo no se puede recuperar.
(02/10/2016, 05:05 PM)meTaLiCroSS escribió: Siempre me gusta ayudar cuando alguien esta interesado realmente en ver que esta programando.
(08/08/2019, 05:32 PM)meTaLiCroSS escribió: grax x el dato cr4ck


Mis aportes

PLUGINS
MAPAS
Menú LANG [SF] Sistema de Frags
Say System (Admin Prefix)
Responder
#11
Cambia los EngFunc_SetClientKeyValue + client_cmd por set_user_info y deberias usar regex_compile + regex_match_c

(15/09/2014, 07:54 PM)totopizza escribió: como puedo hacer para que cuando mande la ip o la web salgan "***SPAM***" ?

Cambia esto por tu print
Código PHP:
chatcolor(id"%s ^1Te quedan ^3%d ^1de ^3%d ^1para no ser kickeado por ^4Spammer"szPrefixg_count_spam{id}, iMax
Hi [R]ak CrabCrab
Responder
#12
(15/09/2014, 10:53 PM)Milashkasiya escribió: Cambia los EngFunc_SetClientKeyValue + client_cmd por set_user_info y deberias usar regex_compile + regex_match_c
Maniana si tengo tiempo cambio lo del keyvalue. No hace falta usar regex_compile y después regex_match_c si ya con regex_match anda y encima es mas editable.
(19/06/2014, 11:08 PM)01011001 escribió: No tiene niveles infinitos, llega hasta 2147483648 (Y despues hace un integer overflow)

(19/06/2014, 11:08 PM)[R]ak escribió: Mis conocimientos aumentaron un 500% con este post
Responder
#13
(15/09/2014, 11:18 PM)Kane escribió:
(15/09/2014, 10:53 PM)Milashkasiya escribió: Cambia los EngFunc_SetClientKeyValue + client_cmd por set_user_info y deberias usar regex_compile + regex_match_c
No hace falta usar regex_compile y después regex_match_c si ya con regex_match anda y encima es mas editable.
¿? - dale una mirada al inc
Código:
* Precompile a regular expression.  Use this if you intend on using the
* same expression multiple times.  Pass the regex handle returned here to
* regex_match_c to check for matches.
Hi [R]ak CrabCrab
Responder
#14
(15/09/2014, 11:18 PM)Kane escribió: No hace falta usar regex_compile y después regex_match_c si ya con regex_match anda

Entonces, si anda, el resto da igual? Roflmao

Cuando barajas opciones en la mesa, saca la que mas convenga, pero siempre y cuando haga lo mismo. Utilizando regex_compile con regex_match_c hace lo mismo en teoria que regex_match. Pero, el primero mencionado alivia un poco el trabajo del proceso que esta por dentro.

Entonces, una persona con sentido comun, y que más encima programa, será lo suficiente como para decir "sabes, por minimo que sea, esto es mejor" y pensar?

Nothingdohere
Responder
#15
(16/09/2014, 12:21 AM)meTaLiCroSS escribió:
(15/09/2014, 11:18 PM)Kane escribió: No hace falta usar regex_compile y después regex_match_c si ya con regex_match anda

Entonces, si anda, el resto da igual? Roflmao

Cuando barajas opciones en la mesa, saca la que mas convenga, pero siempre y cuando haga lo mismo. Utilizando regex_compile con regex_match_c hace lo mismo en teoria que regex_match. Pero, el primero mencionado alivia un poco el trabajo del proceso que esta por dentro.

Entonces, una persona con sentido comun, y que más encima programa, será lo suficiente como para decir "sabes, por minimo que sea, esto es mejor" y pensar?

Nothingdohere
Lo había echo para hacer otra cosa que al final decidí no hacerla. No es que no me doy cuenta Whatever

Update a v1.1
(19/06/2014, 11:08 PM)01011001 escribió: No tiene niveles infinitos, llega hasta 2147483648 (Y despues hace un integer overflow)

(19/06/2014, 11:08 PM)[R]ak escribió: Mis conocimientos aumentaron un 500% con este post
Responder
#16
Parece que no hay manera ya de bloquear el spam... prefiero poner un plugin que me cambié los números por un "*" (Sin comillas) así funciona mejor. Hacen de todo para spamear.
Responder
#17
(17/09/2014, 12:28 AM)DominicanCrazy escribió: Parece que no hay manera ya de bloquear el spam... prefiero poner un plugin que me cambié los números por un "*" (Sin comillas) así funciona mejor. Hacen de todo para spamear.

Solo por micrófono el spam es imposible bloquearlo.
Todos los MODS VHL totalmente gratuitos  Descarga Aqui

Mis plugins:
STEAM: https://steamcommunity.com/id/Metrikcz/
FB: fb.com/rwoong
Venta plugins a pedido en México mándame MP
Responder
#18
(17/09/2014, 03:58 PM)Metrikcz escribió: Solo por micrófono el spam es imposible bloquearlo.

De poder, se puede, que tenga sus contras es otra cosa.
Responder
#19
Speed tiene un plugin que bloquea los insultos del mic o.O
no kiske ?

Responder
#20
(17/09/2014, 05:50 PM)Destro escribió: Speed tiene un plugin que bloquea los insultos del mic o.O
no kiske ?


si, yo tengo un plugin que te cambia la voz.
Ingeniero agrónomo y desarrollador de Software.

tutoriales-allied
buscas un zp?

"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"

Merci Alliedmodders pour m'introduire dans la programmation.
Responder
#21
Probé el plugin, no importa el tag/name/nick que ponga no me deja entrar me aparecía un cartel "Su nombre tiene SPAM por favor cambielo"
probé con numeros, y sin numeros.. raro. Terminé sacandolo porque .. lo de arriba

Probé el plugin, no importa el tag/name/nick que ponga no me deja entrar me aparecía un cartel "Su nombre tiene SPAM por favor cambielo"
probé con numeros, y sin numeros.. raro. Terminé sacandolo porque .. lo de arriba
Responder
#22
(21/09/2014, 02:32 AM)DominicanCrazy escribió: Probé el plugin, no importa el tag/name/nick que ponga no me deja entrar me aparecía un cartel "Su nombre tiene SPAM por favor cambielo"
probé con numeros, y sin numeros.. raro. Terminé sacandolo porque .. lo de arriba
Fiajte que lo actualize recien
(19/06/2014, 11:08 PM)01011001 escribió: No tiene niveles infinitos, llega hasta 2147483648 (Y despues hace un integer overflow)

(19/06/2014, 11:08 PM)[R]ak escribió: Mis conocimientos aumentaron un 500% con este post
Responder
#23
[Imagen: F70.jpg]


Con el update también mismo problema.


Ragestart
Responder
#24
te desconecta si el tag tiene algun simbolo tambien si escribo en say una ip no la bloquea y podes spamear tranquilo :S
me di cuenta que lleva el modulo regex como lo instalo y de donde lo bajo capas por eso tengo el problem ? :S
hasta donde llegamos hoy?
Responder
#25
(16/10/2014, 11:53 AM)11naracus escribió: te desconecta si el tag tiene algun simbolo tambien si escribo en say una ip no la bloquea y podes spamear tranquilo :S
me di cuenta que lleva el modulo regex como lo instalo y de donde lo bajo capas por eso tengo el problem ? :S
Ahi actualize, me descargue el archivo que habia subido porque habia formateado la PC y lo testie, funciona perfecto. Le saque la opcion de '-' en las paginas web porque kickeaba a muchos bots por supuesto spam, ya que hay varios nombres con '-'. Bueno proba y si no anda dejame que error te sale, porque ami me anda perfecto. (tenes regex puesto sin ';' en modules.ini?)
(19/06/2014, 11:08 PM)01011001 escribió: No tiene niveles infinitos, llega hasta 2147483648 (Y despues hace un integer overflow)

(19/06/2014, 11:08 PM)[R]ak escribió: Mis conocimientos aumentaron un 500% con este post
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)