Nokia, puedes revisar las clases que tienen que ver con el manejo de los paquetes udp. Segun mi investigación la lista de canales, asi como la informacion de archivos de intercambio, se manejan a travez del protocolo udp.
Para ir al grano del asunto, en el codigo fuente del sb0t hay una carpeta llamada udp dentro de la carpeta core de la rama Master. En esta carpeta se encuentran las clases de manejo de paquetes udp, tanto de envio como recibimiento:
UdpPacketReader.cs
UdpPacketWriter.cs
Se encargan de leer y escribir datos en paquetes Udp.
UdpProcessor.cs
Se encarga de manejar y realizar diferentes acciones con los paquetes que recibe y mas espesificamente
private static void SendNodes(UdpItem item, UdpListener udp, ulong time)
{
var linq = from x in UserPool.AUsers
where x.NodePort > 0 && (x.Version.StartsWith("Ares 2.") || x.Version.StartsWith("Ares_2."))
select new IPEndPoint(x.ExternalIP, x.DataPort);
if (linq.Count() > 0)
{
List<IPEndPoint> nodes = linq.ToList();
nodes.Randomize();
if (nodes.Count > 20)
nodes = nodes.GetRange(0, 20);
udp.SendDatagram(new UdpItem
{
Data = UdpOutbound.AckNodes(nodes.ToArray()),
EndPoint = item.EndPoint,
Msg = UdpMsg.OP_SERVERLIST_ACKNODES
});
}
}
Podria ser la clave para enviar la informacion del servidor hacia los nodos . Este responde al objeto UdpItem
Que contiene información sobre el paquete UDP recibido. Este es manejado por el metodo Eval dentro de la clase UdpProcessor.cs, y realiza diferente acciones dependiendo del msg que contiene UdpItem.
public static void Eval(UdpItem item, UdpListener udp, ulong time)
{
switch (item.Msg)
{
case UdpMsg.OP_SERVERLIST_SENDINFO:
SendInfo(item, udp, time);
break;
case UdpMsg.OP_SERVERLIST_ADDIPS:
AddIps(item, udp, time);
break;
case UdpMsg.OP_SERVERLIST_ACKIPS:
AckIps(item, udp, time);
break;
case UdpMsg.OP_SERVERLIST_SENDNODES:
SendNodes(item, udp, time);
break;
case UdpMsg.OP_SERVERLIST_WANTCHECKFIREWALL:
WantCheckFirewall(item, udp, time);
break;
case UdpMsg.OP_SERVERLIST_READYTOCHECKFIREWALL:
ReadyToCheckFirewall(item, udp, time);
break;
case UdpMsg.OP_SERVERLIST_PROCEEDCHECKFIREWALL:
ProceedCheckFirewall(item, udp, time);
break;
case UdpMsg.OP_SERVERLIST_CHECKFIREWALLBUSY:
CheckFirewallBusy(item, udp, time);
break;
}
}
Espero que te ayude, estare esperado ese proyecto bro.
Podrias obtener una pista de esta información adicional. Es un poco extenso y dificil de leer demasiado hiperactivo. Pero es como agrega el ares la lista de canales.
Nokia, puedes revisar las clases que tienen que ver con el manejo de los paquetes udp. Segun mi investigación la lista de canales, asi como la informacion de archivos de intercambio, se manejan a travez del protocolo udp. Para ir al grano del asunto, en el codigo fuente del sb0t hay una carpeta llamada udp dentro de la carpeta core de la rama Master. En esta carpeta se encuentran las clases de manejo de paquetes udp, tanto de envio como recibimiento:
Se encargan de leer y escribir datos en paquetes Udp.
UdpProcessor.cs
Se encarga de manejar y realizar diferentes acciones con los paquetes que recibe y mas espesificamente
Podria ser la clave para enviar la informacion del servidor hacia los nodos . Este responde al objeto UdpItem Que contiene información sobre el paquete UDP recibido. Este es manejado por el metodo Eval dentro de la clase UdpProcessor.cs, y realiza diferente acciones dependiendo del msg que contiene UdpItem.
Espero que te ayude, estare esperado ese proyecto bro.