morry2341

easy_databankserver_wip

Nov 15th, 2022 (edited)
346
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.11 KB | None | 0 0
  1. namespace EasyDatabankServer
  2. {
  3.     class Program
  4.     {
  5.         Int32 Port = 8080;
  6.         string path = "/usr/local/mysql/data/sys/sys_config.ibd";
  7.         private SqlDataReader rdr;
  8.         private SqlConnection sqlConn;
  9.         private TcpListener listener;
  10.        
  11.         static void Main(string[] args)
  12.         {
  13.             Int32 Port = 8080;
  14.             string path = "/usr/local/mysql/data/sys/sys_config.ibd";
  15.         }
  16.  
  17.         public void Start()
  18.         {
  19.  
  20.  
  21.             listener = new TcpListener(IPAddress.Loopback, Port);
  22.             listener.Start();
  23.  
  24.             var requests = new Requests();
  25.  
  26.             while (true)
  27.             {
  28.                 var client = listener.AcceptTcpClient();
  29.                 requests.Add(client);
  30.  
  31.                 if (!listener.Pending())
  32.                 {
  33.                     Uri uriAddress = new Uri("http://localhost:8080");
  34.                     requests.Process(uriAddress.LocalPath);
  35.                 }
  36.  
  37.                
  38.             }
  39.         }
  40.  
  41.         private class Requests
  42.         {
  43.             Queue<TcpClient> q = new Queue<TcpClient>();
  44.             public void Add(TcpClient client)
  45.             {
  46.                 q.Enqueue(client);
  47.             }
  48.  
  49.             public void Process(string path)
  50.             {
  51.                 Console.WriteLine("Queue: " + q.Count);
  52.  
  53.                 while (q.Count > 0)
  54.                 {
  55.                     try
  56.                     {
  57.                         var req = new Request(q.Dequeue(), path);
  58.                         Console.WriteLine("  " + req.LocalUrl);
  59.                     }
  60.                     catch (Exception e)
  61.                     {
  62.                         Console.WriteLine("Error: " + e.Message);
  63.  
  64.                     }
  65.                 }
  66.             }
  67.         }
  68.  
  69.       public class Request
  70.     {
  71.         private TcpClient c;
  72.         private string localPath;
  73.         private SqlDataReader rdr;
  74.         private SqlConnection sqlConn;
  75.         private TcpListener listener;
  76.  
  77.         public string LocalUrl { get; private set; }
  78.         public string Verb { get; private set; }
  79.         public string HttpVersion { get; private set; }
  80.         public List<string> Header { get; private set; }
  81.  
  82.         public Request(TcpClient c, string localPath)
  83.         {
  84.             this.c = c;
  85.             this.localPath = localPath;
  86.  
  87.             Header = new List<string>();
  88.  
  89.             Process();
  90.         }
  91.  
  92.         private void Process()
  93.         {
  94.             var r = new StreamReader(c.GetStream());
  95.             var w = new StreamWriter(c.GetStream());
  96.  
  97.             try
  98.             {
  99.                 HandleRequest(r, w);
  100.             }
  101.             catch (Exception e)
  102.             {
  103.                 Failed(w);
  104.  
  105.             }
  106.             finally
  107.             {
  108.                 w.Close();
  109.                 r.Close();
  110.                 c.Close();
  111.             }
  112.         }
  113.  
  114.         private void HandleRequest(StreamReader r, StreamWriter w)
  115.         {
  116.             string request = r.ReadLine();
  117.            
  118.             string connectionString =
  119.                 "Data Source=sys;Initial Catalog=sys_config.ibd;Persist Security Info=True;User ID=root;Password=mypassword";
  120.  
  121.             using (SqlConnection conn = new SqlConnection(connectionString))
  122.             {
  123.                 SqlCommand cmd = new SqlCommand("SELECT * FROM sys.sys_config");
  124.                 cmd.CommandType = CommandType.Text;
  125.                 cmd.Connection = conn;
  126.  
  127.                 try
  128.                 {
  129.                     if (request != null)
  130.                     {
  131.                         string[] tokens = request.Split(' ');
  132.                         Verb = tokens[0].ToUpper();
  133.                         LocalUrl = tokens[1];
  134.                         HttpVersion = tokens[2];
  135.  
  136.                         ReadHeader(r);
  137.  
  138.                         string file = Path.Combine(
  139.                             Path.GetFullPath(localPath),
  140.                             LocalUrl.TrimStart('/'));
  141.  
  142.                         string text = File.ReadAllText(file);
  143.  
  144.                         Succeeded(w, Path.GetExtension(LocalUrl).TrimStart('.'));
  145.  
  146.                         w.Write(text);
  147.                        
  148.                         conn.Open();
  149.                     }
  150.                 }
  151.                 catch (IndexOutOfRangeException e)
  152.                 {
  153.                     Console.WriteLine($"Error Here! {e}");
  154.                 }
  155.  
  156.             }
  157.            
  158.         }
  159.  
  160.         private void Succeeded(StreamWriter stream, string extention)
  161.         {
  162.             stream.WriteLine("HTTP/1.0 200 OK");
  163.             stream.WriteLine("Content-Type: text/" + extention);
  164.             stream.WriteLine("Connection: close");
  165.             stream.WriteLine("");
  166.         }
  167.  
  168.         private void Failed(StreamWriter stream)
  169.         {
  170.             stream.WriteLine("HTTP/1.0 404 not found");
  171.             stream.WriteLine("Connection: close");
  172.             stream.WriteLine("");
  173.  
  174.         }
  175.  
  176.         private void ReadHeader(StreamReader r)
  177.         {
  178.             //DO SOMETHING
  179.         }
  180.     }
  181.  
  182.  
  183.     }
  184.        
  185.     }
Advertisement
Add Comment
Please, Sign In to add comment