Advertisement
Guest User

Untitled

a guest
Jan 19th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.10 KB | None | 0 0
  1. using System;
  2. using System.Threading;
  3. using System.Net;
  4. using System.Net.Sockets;
  5. using System.Text;
  6. using System.IO;
  7.  
  8. namespace ServerFTP_IO
  9. {
  10.     public class server
  11.     {
  12.         ManualResetEvent tcpClientConnected = new ManualResetEvent(false);
  13.  
  14.         void ProcessIncomingData(object obj)
  15.         {
  16.             TcpClient client = (TcpClient)obj;
  17.             StringBuilder sb = new StringBuilder();
  18.             bool userauth = false;
  19.             bool accessgranted = false;
  20.             using (NetworkStream stream = client.GetStream())
  21.             {
  22.                 int i;
  23.                 string[] tab = new string[2];
  24.  
  25.                 while ((i = stream.ReadByte()) != 0)
  26.                 {
  27.                     sb.Append((char)i);
  28.                 }
  29.                 tab = sb.ToString().Split(' ');
  30.                 switch (tab[0].ToUpper())
  31.                 {
  32.                     case "USER":
  33.                         {
  34.                             accessgranted = true;
  35.                             userauth = true;
  36.                             Byte[] bytess = new Byte[256];
  37.                             string username = tab[1];
  38.                             if (username.Equals("anonymous"))
  39.                             {
  40.                                 string rep = "331: Password is required to get access." + '\0';
  41.                                 stream.Write(Encoding.ASCII.GetBytes(rep), 0, rep.Length);
  42.  
  43.                                 userauth = true;
  44.  
  45.  
  46.                             }
  47.                             else
  48.                             {
  49.                                 string rep = "530: Access denied" + '\0';
  50.                                 stream.Write(Encoding.ASCII.GetBytes(rep), 0, rep.Length);
  51.                             }
  52.                             break;
  53.                         }
  54.                     case "PASS":
  55.                         {
  56.  
  57.                             if (userauth)
  58.                             {
  59.                                 string userpass = tab[1];
  60.                                 if (userpass.Contains("@") && !(userpass.StartsWith("@")) && !(userpass.EndsWith("@")) && (userpass.EndsWith(".com") || userpass.EndsWith(".pl")))
  61.                                 {
  62.                                     string rep = " 230: Access granted. " + '\0';
  63.                                     stream.Write(Encoding.ASCII.GetBytes(rep), 0, rep.Length);
  64.                                     accessgranted = true;
  65.                                 }
  66.                                 else
  67.                                 {
  68.                                     string rep = " 530: Access denied. " + '\0';
  69.                                     stream.Write(Encoding.ASCII.GetBytes(rep), 0, rep.Length);
  70.  
  71.                                 }
  72.                             }
  73.                             else
  74.                             {
  75.                                 string rep = " User has not been specified yet. " + '\0';
  76.                                 stream.Write(Encoding.ASCII.GetBytes(rep), 0, rep.Length);
  77.  
  78.                             }
  79.                             userauth = false;
  80.                             break;
  81.                         }
  82.  
  83.                     case "RETR":
  84.                         {
  85.                             if (accessgranted)
  86.                             {
  87.                                 string path = @"C:\Users\Klaudia\Documents\hello.txt";
  88.                                 byte[] fileData = GetFileData(path);
  89.                                 stream.Write(fileData, 0, fileData.Length);
  90.  
  91.                             }
  92.  
  93.                             Console.WriteLine(sb.ToString());
  94.  
  95.  
  96.  
  97.                             //  string reply = "ack: " + sb.ToString() + '\0';
  98.                             //    stream.Write(Encoding.ASCII.GetBytes(reply), 0, reply.Length);
  99.                             break;
  100.                         }
  101.                 }
  102.             }
  103.         }
  104.  
  105.  
  106.         byte[] GetFileData(String path)
  107.         {
  108.             using (var sr = new StreamReader(path))
  109.             {
  110.                 return ASCIIEncoding.ASCII.GetBytes(sr.ReadToEnd());
  111.             }
  112.  
  113.         }
  114.         void ProcessIncomingConnection(IAsyncResult ar)
  115.         {
  116.             TcpListener listener = (TcpListener)ar.AsyncState;
  117.             TcpClient client = listener.EndAcceptTcpClient(ar);
  118.  
  119.             ThreadPool.QueueUserWorkItem(ProcessIncomingData, client);
  120.             tcpClientConnected.Set();
  121.         }
  122.  
  123.         public void start()
  124.         {
  125.             IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5000);
  126.             TcpListener listener = new TcpListener(endpoint);
  127.             listener.Start();
  128.  
  129.             while (true)
  130.             {
  131.                 tcpClientConnected.Reset();
  132.                 listener.BeginAcceptTcpClient(new AsyncCallback(ProcessIncomingConnection), listener);
  133.                 tcpClientConnected.WaitOne();
  134.             }
  135.         }
  136.     }
  137.  
  138.     class Program
  139.     {
  140.         static void Main(string[] args)
  141.         {
  142.             server s = new server();
  143.             s.start();
  144.         }
  145.     }
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement