Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Dc Mass - Connetti.cs

Connetti.cs

Caricato da:
Scarica il programma completo

  1. using System;
  2. using System.Drawing;
  3. using System.Collections;
  4. using System.ComponentModel;
  5. using System.Windows.Forms;
  6. using System.Data;
  7. using System.Net;
  8. using System.Threading;
  9. using System.Net.Sockets;
  10. using System.Text;
  11.  
  12. namespace SaTaNaDcMaSS
  13. {
  14.         /// <summary>
  15.         /// Summary description for Connetti.
  16.         /// </summary>
  17.         public class StateObject
  18.         {
  19.                 public Socket workSocket = null;
  20.                 public const int BufferSize = 1024*1024;
  21.                 public byte[] buffer = new byte[BufferSize];
  22.                 public string sb = "";
  23.         }
  24.         public class Connetti
  25.         {
  26.                 StateObject state = new StateObject();
  27.                 string nick = DcUser.GetNick();
  28.                 string conn = DcUser.GetConn();
  29.                 string share = DcUser.GetShare();
  30.                 string descr = DcUser.GetDescr();
  31.                 string tag = DcUser.GetTag();
  32.                 string mail = DcUser.GetEmail();
  33.                 RichTextBox txt;
  34.                 TextBox messaggio;
  35.                 ListBox userlist;
  36.                 Button connetti;
  37.                 Button disconnetti;
  38.                 Button manda;
  39.                 bool rotfl=true;
  40.                 bool invio = false;
  41.                 string hub;
  42.                 string porta;
  43.                 private IPHostEntry host;
  44.                 private Socket socket;
  45.                 private IPEndPoint indirizzoeporta;
  46.                 MenuItem menuItem1;
  47.                 MenuItem menuItem2;
  48.                 MenuItem menuItem15;
  49.                 StatusBarPanel nomehubz;
  50.                 StatusBarPanel n_user;
  51.                 int lol=0;
  52.                 byte[] buffers = new byte[1024*1024];
  53.                 string content="";
  54.                 ArrayList users = new ArrayList();
  55.                 ArrayList ops = new ArrayList();
  56.                 public Connetti(RichTextBox txt,TextBox messaggio,ListBox userlist,StatusBarPanel nomehubz,StatusBarPanel n_user,Button connetti,Button disconnetti,Button manda,string hub,string porta)
  57.                 {
  58.                         this.nomehubz=nomehubz;
  59.                         this.n_user=n_user;
  60.                     this.txt=txt;
  61.                         this.messaggio=messaggio;
  62.                         this.userlist=userlist;
  63.                         this.connetti=connetti;
  64.                         this.disconnetti=disconnetti;
  65.                         this.manda=manda;
  66.                         this.hub=hub;
  67.                         this.porta=porta;
  68.                         this.manda.Click += new System.EventHandler(this.manda_Click);
  69.                         this.disconnetti.Click += new System.EventHandler(this.disconnetti_Click);
  70.                        
  71.                         this.messaggio.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.messaggio_KeyPress);
  72.  
  73.                         Connettiti();
  74.                
  75.                 }
  76.                 public void ReadCallback(IAsyncResult ar)
  77.                 {
  78.                         try
  79.                         {
  80.                                 if(rotfl && socket.Connected)
  81.                                 {
  82.                                 StateObject state = (StateObject) ar.AsyncState;
  83.                        
  84.                                         Socket handler = socket;
  85.                                         int bytesRead = 0;
  86.                                         bytesRead = handler.EndReceive(ar);
  87.                                         string a = Encoding.Default.GetString(buffers);
  88.                                         content+=Encoding.Default.GetString(buffers);
  89.                                         while(StrFind(content,"|"))
  90.                                         {
  91.                                                 Command();
  92.                                         }                      
  93.                                         Receive();
  94.                                 }
  95.                         }
  96.                         catch(Exception)
  97.                         {
  98.                                 Disconnetti();
  99.                         }
  100.                 }
  101.                 public void Command()
  102.                 {
  103.                         string data = content.Substring(0,content.IndexOf("|")+1);
  104.                         content=content.Substring(data.Length);
  105.                         if(data!="")
  106.                         {
  107.                                 DataArrival(Encoding.Default.GetBytes(data));
  108.                         }
  109.                 }
  110.                 public void Receive()
  111.                 {
  112.                         try
  113.                         {
  114.                                 if(rotfl && socket.Connected)
  115.                                 {
  116.                                 StateObject state = new StateObject();
  117.                                 buffers=new byte[socket.Available];
  118.                                 socket.BeginReceive(buffers, 0, buffers.Length, 0,new AsyncCallback(ReadCallback), state);
  119.                                 }
  120.                         }
  121.                         catch (Exception e)
  122.                         {
  123.                                 Disconnetti();
  124.                         }
  125.                 }
  126.  
  127.                 public void Connettiti()
  128.                 {
  129.                         host = Dns.Resolve(hub);
  130.                         WriteToRichTextBox("Connessione a "+hub+":"+porta+"...");
  131.                         try
  132.                         {
  133.                                 foreach(IPAddress ip in host.AddressList)
  134.                                 {
  135.                                         indirizzoeporta = new IPEndPoint(ip, Convert.ToInt32(porta));
  136.                                         socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  137.                                         socket.Connect(indirizzoeporta);
  138.                                         WriteToRichTextBox("Connesso");
  139.                                         DcUser.SetSocket(socket);
  140.                                 }
  141.                         }
  142.                         catch(Exception)
  143.                         {
  144.                                 WriteToRichTextBox("Connessione in TimeOut");
  145.                                 Disconnetti();
  146.                         }
  147.                         Receive();
  148.                 }
  149.                 private void SendCallback(IAsyncResult ar)
  150.                 {
  151.                         try
  152.                         {
  153.                                 if(rotfl && socket.Connected)
  154.                                 {
  155.                                 Socket handler = (Socket) ar.AsyncState;
  156.                                 int bytesSent = handler.EndSend(ar);                           
  157.                                 }
  158.                         }
  159.                         catch(Exception)
  160.                         {
  161.                                 Disconnetti();
  162.                         }
  163.                 }
  164.                 public void Disconnetti()
  165.                 {
  166.                         if(rotfl)
  167.                         {
  168.                                 userlist.Items.Clear();
  169.                                 nomehubz.Text="";
  170.                                 n_user.Text="";
  171.                                 rotfl=false;
  172.                                 userlist.Items.Clear();
  173.                                 WriteToRichTextBox("Disconnesso..");
  174.                                 socket.Close();
  175.                         }
  176.                 }
  177.                 public void Send(string send)
  178.                 {
  179.                         if(rotfl && socket.Connected)
  180.                         {
  181.                                 try
  182.                                 {
  183.                                         byte[] msg = Encoding.Default.GetBytes(send+"|");
  184.                                         socket.BeginSend(msg,0,msg.Length,0,new AsyncCallback(SendCallback),socket);
  185.                                 }
  186.                                 catch(Exception)
  187.                                 {
  188.                                         Disconnetti();
  189.                                 }
  190.                         }
  191.                 }
  192.                 private void manda_Click(object sender, System.EventArgs e)
  193.                 {
  194.                         MandaMessMain();
  195.                 }
  196.                 private void disconnetti_Click(object sender, System.EventArgs e)
  197.                 {
  198.                         Disconnetti();
  199.                 }
  200.                 public void DataArrival(byte[] ricevi)
  201.                 {
  202.                         try
  203.                         {
  204.                                 if(rotfl && socket.Connected)
  205.                                 {
  206.                                         string stringric = Encoding.Default.GetString(ricevi);
  207.                                         char[] sep = Encoding.Default.GetChars(Encoding.Default.GetBytes("|"));
  208.                                         string[] data1 = stringric.Split(sep);
  209.                                         foreach(string data in data1)
  210.                                         {
  211.                                                 if (data!="")
  212.                                                 {
  213.                                                         if(data.StartsWith("$UserIP"))
  214.                                                         {
  215.                                                                 char[] s = " ".ToCharArray();
  216.                                                                 string[] ip = data.Split(s);
  217.                                                                 WriteToRichTextBox("Ip di "+ip[1]+": "+ip[2]);
  218.                                                         }
  219.                                                         if(data.StartsWith("$Lock"))
  220.                                                         {
  221.                                                                 string lockepk=data;
  222.                                                                 char[] sep3 = " ".ToCharArray();
  223.                                                                 string[] lock0 = lockepk.Split(sep3);
  224.                                                                 string lockz = lock0[1].ToString();
  225.                                                                 byte[] keyz = ConvertingLock.getKey(Encoding.Default.GetBytes(lockz));
  226.                                                                 string key = Encoding.Default.GetString(keyz);
  227.                                                                 Send("$Key "+key);
  228.                                                                 Send("$ValidateNick "+DcUser.GetNick());
  229.                                                                 Send("$Version 1,0091");
  230.                                                                 Send("$GetNickList");
  231.                                                                 Send("$MyINFO $ALL "+nick+" "+descr+" "+tag+"$ $"+conn+" $"+mail+"$"+Convert.ToDouble(share)*1024*1024*1024+"$");
  232.                                                         }
  233.                                                         if(data.StartsWith("<") || data.StartsWith("*"))
  234.                                                         {
  235.                                                                 WriteToRichTextBox(data);
  236.                                                         }
  237.                                                         if(data.StartsWith("$To:"))
  238.                                                         {
  239.                                                                 char[] s = " ".ToCharArray();
  240.                                                                 string[] pvt = data.Split(s);
  241.                                                                 string da=pvt[3];
  242.                                                                 string mess="";
  243.                                                                 for(int i = 5;i<pvt.Length;i++)
  244.                                                                 {
  245.                                                                         mess+=pvt[i]+" ";
  246.                                                                 }
  247.                                                                 if(DcUser.GetPvtUser()==da)
  248.                                                                 {
  249.                                                                         string ore = Convert.ToString(DateTime.Now.TimeOfDay);
  250.                                                                         ore=ore.Substring(0,5);
  251.                                                                         DcUser.GetRichTextBox().Text+="["+ore+"] <"+da+"> "+mess+"\n";
  252.                                                                 }
  253.                                                                 else
  254.                                                                 {
  255.                                                                         WriteToRichTextBox("Messaggio Privato da "+da+": "+mess+"\n");
  256.                                                                 }
  257.                                                         }
  258.                                                         if(data.StartsWith("$Hello"))
  259.                                                         {
  260.                                                                 string nick = data.Replace("$Hello ","");
  261.                                                                 if(DcUser.GetPvtUser()==nick)
  262.                                                                 {
  263.                                                                         DcUser.GetRichTextBox().Text+="** User "+nick+" riconnesso!\n";
  264.                                                                 }
  265.                                                                 userlist.Items.Add(nick);
  266.                                                                 users.Add(nick);
  267.                                                                 ops.Add(nick);
  268.                                                                 lol++;
  269.                                                                 n_user.Text=lol+"";
  270.                                                         }
  271.                                                         if(data.StartsWith("$Quit"))
  272.                                                         {
  273.                                                                 string nick = data.Replace("$Quit ","");
  274.                                                                 if(DcUser.GetPvtUser()==nick)
  275.                                                                 {
  276.                                                                         DcUser.GetRichTextBox().Text+="** User "+nick+" sconnesso!\n";
  277.                                                                 }
  278.                                                                 userlist.Items.Remove(nick);
  279.                                                                 users.Remove(nick);
  280.                                                                 ops.Remove(nick);
  281.                                                                 lol--;
  282.                                                                 n_user.Text=lol+"";                                                    
  283.                                                         }
  284.                                                         if(data.StartsWith("$HubName"))
  285.                                                         {
  286.                                                                 string hubname = data.Replace("$HubName ","");
  287.                                                                 nomehubz.Text = hubname;
  288.                                                         }
  289.                                                         if(data.StartsWith("$NickList"))
  290.                                                         {
  291.                                                                 string dataz=data.Replace("$NickList ","");
  292.                                                                 char[] sep2 = Encoding.Default.GetChars(Encoding.Default.GetBytes("$$"));
  293.                                                                 string[] us = dataz.Split(sep2);
  294.                                                                 for(int i = 0;i<us.Length;i++)
  295.                                                                 {
  296.                                                                         if(us[i]!="")
  297.                                                                         {
  298.                                                                                 if(!userlist.Items.Contains(us[i]))
  299.                                                                                 {
  300.                                                                                         users.Add(us[i]);
  301.                                                                                 }
  302.                                                                         }
  303.                                                                 }
  304.                                                         }
  305.                                                         if(data.StartsWith("$ValidateDenide"))
  306.                                                         {
  307.                                                                 WriteToRichTextBox("Nick già in uso");
  308.                                                                 Disconnetti();
  309.                                                         }
  310.                                                         if(data.StartsWith("$OpList"))
  311.                                                         {
  312.                                                                 string dataz=data.Replace("$OpList ","");
  313.                                                                 char[] sep2 = Encoding.Default.GetChars(Encoding.Default.GetBytes("$$"));
  314.                                                                 string[] us = dataz.Split(sep2);
  315.                                                                 for(int i = 0;i<us.Length;i++)
  316.                                                                 {
  317.                                                                         if(us[i]!="")
  318.                                                                         {
  319.                                                                                 if(!userlist.Items.Contains(us[i]))
  320.                                                                                 {
  321.                                                                                         lol++;
  322.                                                                                         ops.Add(us[i]);
  323.                                                                                         users.Remove(us[i]);
  324.                                                                                 }
  325.                                                                         }
  326.                                                                 }
  327.                                                                 UserList();
  328.                                                         }
  329.                                                 }
  330.                                         }
  331.                                 }
  332.                         }
  333.                         catch(Exception)
  334.                         {
  335.                                 Disconnetti();
  336.                         }
  337.                 }
  338.                 public void UserList()
  339.                 {
  340.                         if(rotfl && socket.Connected)
  341.                         {
  342.                                 userlist.Items.Clear();
  343.                                 lol=0;
  344.                                 foreach(string a in ops)
  345.                                 {
  346.                                         if(!userlist.Items.Contains(a))
  347.                                         {
  348.                                                 lol++;
  349.                                                 n_user.Text=lol+"";
  350.                                                 userlist.Items.Add(a);
  351.                                         }
  352.                                 }
  353.                                 foreach(string a in users)
  354.                                 {
  355.                                         if(!userlist.Items.Contains(a))
  356.                                         {
  357.                                                 lol++;
  358.                                                 n_user.Text=lol+"";
  359.                                                 userlist.Items.Add(a);
  360.                                         }
  361.                                 }
  362.                         }
  363.                 }
  364.                 private void menuItem1_Click(object sender, System.EventArgs e)
  365.                 {
  366.                         if(rotfl && socket.Connected)
  367.                         {
  368.                                 Pvt p = new Pvt(userlist,socket);
  369.                                 p.Show();
  370.                         }
  371.                 }
  372.                 private void menuItem2_Click(object sender, System.EventArgs e)
  373.                 {
  374.                         if(rotfl && socket.Connected)
  375.                         {
  376.                                 userlist.Items.Clear();
  377.                                 Send("$GetNickList");
  378.                         }
  379.                 }
  380.                 public bool StrFind(string s,string c)
  381.                 {
  382.                         s=s.ToLower();
  383.                         c=c.ToLower();
  384.                         bool sf=false;
  385.                         for (int i=0; i<s.Length; i++)
  386.                         {                      
  387.                                 if(s.Length>=c.Length && s.Length-i>=c.Length && s.Substring(i,c.Length)==c)
  388.                                 {
  389.                                         sf=true;
  390.                                 }
  391.                         }
  392.                         return sf;
  393.                 }
  394.                 private void messaggio_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
  395.                 {
  396.                         char ch=e.KeyChar;
  397.                         if(invio)
  398.                         {
  399.                                 messaggio.Text="";
  400.                                 invio=false;
  401.                         }
  402.                         if (ch==Convert.ToChar("\r"))
  403.                         {
  404.                                 MandaMessMain();
  405.                                 invio = true;
  406.                         }
  407.                 }
  408.                 public void MandaMessMain()
  409.                 {
  410.                         try
  411.                         {
  412.                                 if(rotfl && socket.Connected)
  413.                                 {
  414.                                         if(invio)
  415.                                         {
  416.                                                 messaggio.Text="";
  417.                                                 invio=false;
  418.                                         }
  419.                                         if(messaggio.Text!="")
  420.                                         {
  421.                                                 Send("<"+nick+"> "+messaggio.Text);
  422.                                         }
  423.                                         else
  424.                                         {
  425.                                                 MessageBox.Show("Inserisci un messaggio!","Errore",MessageBoxButtons.OK,MessageBoxIcon.Error);
  426.                                         }
  427.                                         messaggio.Text="";
  428.                                         return;
  429.                                 }
  430.                         }
  431.                         catch(Exception)
  432.                         {
  433.                                 Disconnetti();
  434.                         }
  435.                 }
  436.                 public void WriteToRichTextBox(string s)
  437.                 {
  438.                         string ore = Convert.ToString(DateTime.Now.TimeOfDay);
  439.                         ore=ore.Substring(0,5);
  440.                         txt.AppendText("["+ore+"] "+s+"\n");
  441.                 }
  442.                 private void menuItem15_Click(object sender, System.EventArgs e)
  443.                 {
  444.                         Send("$UserIP "+userlist.SelectedItem);
  445.                 }
  446.         }
  447. }