hay algo fascinante que no puedo descifrar porque siempre me pierdo en esto. Sea porque llame metodos de otro proyecto, clase o que hay muchas referncias. Pero alguien sabe como hace Sb0t para detectar proxys?
En el proyecto core hay una clase llamada Events.cs con este metodo:
Código:
public static bool ProxyDetected(IClient client)
{
bool result = true;
if (DefaultCommands)
result = cmds.ProxyDetected(client != null ? client.IUser : null);
js.ProxyDetected(client != null ? client.IUser : null);
if (result)
ExtensionManager.Plugins.ForEach(x =>
{
try
{
result = x.Plugin.ProxyDetected(client != null ? client.IUser : null);
if (!result)
return;
}
catch { }
});
return result;
}
Y en el proyecto scripting hay una clase llamada ServerEvents.cs con este metodo:
Código:
public bool ProxyDetected(IUser client)
{
if (this.CanScript)
{
JSScript[] scripts = ScriptManager.Scripts.ToArray();
foreach (JSScript s in scripts)
{
Objects.JSUser u = s.GetUser(client);
if (u != null)
try
{
bool result = s.JS.CallGlobalFunction<bool>("onProxyDetected", u);
if (!result)
return false;
}
catch (Jurassic.JavaScriptException e)
{
ErrorDispatcher.SendError(s.ScriptName, e.Message, e.LineNumber);
}
catch { }
}
}
return true;
}
Todo el codigo fuente de Sb0t se puede descargar desde aqui:
https://github.com/AresChat/sb0t/releases/tag/v5.38
Yo tuve muchos problemas. Ya empezo con esto:
if (DefaultCommands)
Yo crei que deberia de haber un falso o verdadero.
Ustedes saben como hace Sb0t para detectar proxys?
Gracias y saludos