Advertisement
Guest User

Untitled

a guest
Dec 21st, 2014
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.94 KB | None | 0 0
  1. using System;
  2. using System.Net;
  3. using System.Collections.Generic;
  4. using System.Collections.Specialized;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Diagnostics;
  8. using System.Windows;
  9. using System.Web;
  10. using System.IO;
  11. using System.Xml;
  12. using System.Text.RegularExpressions;
  13.  
  14.  
  15.  
  16. namespace testElite {
  17.     class Program {
  18.         static void Main(string[] args) {
  19.  
  20.             Dictionary<string, string> EliteKeys = new Dictionary<string, string>();
  21.             string EliteBindings = Environment.ExpandEnvironmentVariables("%AppData%\\..\\Local\\Frontier Developments\\Elite Dangerous\\Options\\Bindings\\Custom.binds");
  22.  
  23.             if(!File.Exists(EliteBindings)) {
  24.                 Console.WriteLine(EliteBindings);
  25.                 Console.WriteLine("No Elite Bindings found");
  26.             }
  27.             else {
  28.                 XmlDocument doc = new XmlDocument();
  29.                 doc.Load(EliteBindings);
  30.                 foreach(XmlNode key in doc.DocumentElement.ChildNodes) {
  31.                     if(key.ChildNodes.Count == 0 || key.ChildNodes[0].NodeType.ToString() == "Text"){
  32.                         continue;
  33.                     }
  34.  
  35.                     foreach(XmlNode binding in key.ChildNodes){
  36.                         if(binding.Attributes["Device"] != null && binding.Attributes["Device"].InnerText == "Keyboard") {
  37.                             string tmpKey = binding.Attributes["Key"].InnerText.Replace("Key_", "").ToLower();
  38.  
  39.                             switch(tmpKey) {
  40.                                 case "delete":  tmpKey = "{del}";   break;
  41.                                 case "pageup": tmpKey = "{PgUp}"; break;
  42.                                 case "pagedown": tmpKey = "{PgDn}"; break;
  43.                                 case "uparrow": tmpKey = "{Up}"; break;
  44.                                 case "leftarrow": tmpKey = "{Left}"; break;
  45.                                 case "rightarrow": tmpKey = "{Right}"; break;
  46.                                 case "downarrow": tmpKey = "{Down}"; break;
  47.                                 case "f1":
  48.                                 case "f2":
  49.                                 case "f3":
  50.                                 case "f4":
  51.                                 case "f5":
  52.                                 case "f6":
  53.                                 case "f7":
  54.                                 case "f8":
  55.                                 case "f9":
  56.                                 case "f10":
  57.                                 case "f11":
  58.                                 case "f12":
  59.                                     tmpKey = "{" + tmpKey.ToUpper() + "}";
  60.                                     break;
  61.                                 case "home": tmpKey = "{Home}"; break;
  62.                                 case "end": tmpKey = "{End}"; break;
  63.                                 case "leftshift": tmpKey = "{LShift}"; break;
  64.                                 case "rightshift": tmpKey = "{RShift}"; break;
  65.                                 case "key_enter": tmpKey = "{Enter}"; break;
  66.                                 case "ampersand": tmpKey = "&"; break;
  67.                                 case "apostrophe": tmpKey = "'"; break;
  68.                                 case "doublequote": tmpKey = "\""; break;
  69.                             }
  70.  
  71.                             EliteKeys.Add(key.Name, tmpKey);
  72.                         }
  73.                     }
  74.                 }
  75.  
  76.             }
  77.  
  78.             string AppPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase).Replace("file:\\", "");
  79.  
  80.             if(!HttpListener.IsSupported) {
  81.                 Console.WriteLine("No HTTP Listener found");
  82.                 return;
  83.             }
  84.  
  85.             HttpListener listener = new HttpListener();
  86.             Regex matchipv4 = new Regex(@"(\d+\.){3}\d+");
  87.             foreach(IPAddress ip in Dns.GetHostEntry(Dns.GetHostName()).AddressList){
  88.                 if(matchipv4.IsMatch(ip.ToString()))
  89.                     listener.Prefixes.Add("http://" + ip.ToString() + ":9898/");
  90.             }
  91.  
  92.  
  93.             listener.Start();
  94.            
  95.             Console.WriteLine("Listening on : ");
  96.             foreach(string prefixe in listener.Prefixes) {
  97.                 Console.WriteLine("  - " + prefixe);
  98.             }
  99.  
  100.             while(true){
  101.                 HttpListenerContext context = listener.GetContext();
  102.                 HttpListenerRequest request = context.Request;
  103.                 HttpListenerResponse response = context.Response;
  104.  
  105.                 string page = request.Url.LocalPath;
  106.                 NameValueCollection parameters = request.QueryString;
  107.  
  108.                 Console.WriteLine("REQUEST :");
  109.                 Console.WriteLine(page);
  110.                 string responseString = "";
  111.                 string encoding = "UTF8";
  112.  
  113.                 if(page == "/input" && parameters["key"] != null) {
  114.                     string keyToPress = "";
  115.                     if(EliteKeys[parameters["key"]] != null) {
  116.                         keyToPress = EliteKeys[parameters["key"]];
  117.                     }
  118.                     Console.WriteLine("Got Key : " + parameters["key"] + " => " + keyToPress);
  119.  
  120.                     if(parameters["test"] == null) {
  121.                         string exePath = AppPath + "\\input.exe";
  122.                         Console.WriteLine("Sending to : " + exePath);
  123.                         Process.Start(@exePath, keyToPress);
  124.                     }
  125.  
  126.                     response.StatusCode = (keyToPress != "") ? 200 : 500;
  127.                     response.OutputStream.Close();
  128.                     continue;
  129.                 }
  130.                 else {
  131.  
  132.                     if(page == "/") {
  133.                         page = "/index.html";
  134.                     }
  135.  
  136.                     string pageFile = AppPath + "\\client" +  page.Replace("/","\\");
  137.                     Console.WriteLine(pageFile);
  138.                     if(System.IO.File.Exists(pageFile)) {
  139.  
  140.                         System.IO.StreamReader myFile = new System.IO.StreamReader(pageFile);
  141.  
  142.                         string ext = Path.GetExtension(pageFile).Replace(".", "");
  143.                         switch(ext) {
  144.                             case "html":
  145.                             case "css":
  146.                             case "json":
  147.                                 response.ContentType = "text/" + ext;
  148.                                 break;
  149.                             case "png":
  150.                             case "jpg":
  151.                                 response.ContentType = "image/" + ext;
  152.                                 encoding = "ASCII";
  153.                                 break;
  154.                             case "js":
  155.                                 response.ContentType = "text/javascript";
  156.                                 break;
  157.                             default:
  158.                                 response.ContentType = "text/plain";
  159.                                 Console.WriteLine("Bad Extension : " + ext);
  160.                                 response.StatusCode = 500;
  161.                                 response.OutputStream.Close();
  162.                                 continue;
  163.                                 break;
  164.                         }
  165.  
  166.                         var buffer = new byte[1024*512];
  167.                         using(var fs = File.OpenRead(pageFile)) {
  168.                             response.ContentLength64 = fs.Length;
  169.                             int read;
  170.                             while((read = fs.Read(buffer, 0, buffer.Length)) > 0)
  171.                                 response.OutputStream.Write(buffer, 0, read);
  172.                         }
  173.                         response.StatusCode = 200;
  174.                     }
  175.                     else {
  176.                         response.StatusCode = 404;
  177.                     }
  178.  
  179.                     // Sending response
  180.                     response.OutputStream.Close();
  181.                 }
  182.             }          
  183.         }      
  184.     }
  185. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement