Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Net;
- using System.Collections.Generic;
- using System.Collections.Specialized;
- using System.Linq;
- using System.Text;
- using System.Diagnostics;
- using System.Windows;
- using System.Web;
- using System.IO;
- using System.Xml;
- using System.Text.RegularExpressions;
- namespace testElite {
- class Program {
- static void Main(string[] args) {
- Dictionary<string, string> EliteKeys = new Dictionary<string, string>();
- string EliteBindings = Environment.ExpandEnvironmentVariables("%AppData%\\..\\Local\\Frontier Developments\\Elite Dangerous\\Options\\Bindings\\Custom.binds");
- if(!File.Exists(EliteBindings)) {
- Console.WriteLine(EliteBindings);
- Console.WriteLine("No Elite Bindings found");
- }
- else {
- XmlDocument doc = new XmlDocument();
- doc.Load(EliteBindings);
- foreach(XmlNode key in doc.DocumentElement.ChildNodes) {
- if(key.ChildNodes.Count == 0 || key.ChildNodes[0].NodeType.ToString() == "Text"){
- continue;
- }
- foreach(XmlNode binding in key.ChildNodes){
- if(binding.Attributes["Device"] != null && binding.Attributes["Device"].InnerText == "Keyboard") {
- string tmpKey = binding.Attributes["Key"].InnerText.Replace("Key_", "").ToLower();
- switch(tmpKey) {
- case "delete": tmpKey = "{del}"; break;
- case "pageup": tmpKey = "{PgUp}"; break;
- case "pagedown": tmpKey = "{PgDn}"; break;
- case "uparrow": tmpKey = "{Up}"; break;
- case "leftarrow": tmpKey = "{Left}"; break;
- case "rightarrow": tmpKey = "{Right}"; break;
- case "downarrow": tmpKey = "{Down}"; break;
- case "f1":
- case "f2":
- case "f3":
- case "f4":
- case "f5":
- case "f6":
- case "f7":
- case "f8":
- case "f9":
- case "f10":
- case "f11":
- case "f12":
- tmpKey = "{" + tmpKey.ToUpper() + "}";
- break;
- case "home": tmpKey = "{Home}"; break;
- case "end": tmpKey = "{End}"; break;
- case "leftshift": tmpKey = "{LShift}"; break;
- case "rightshift": tmpKey = "{RShift}"; break;
- case "key_enter": tmpKey = "{Enter}"; break;
- case "ampersand": tmpKey = "&"; break;
- case "apostrophe": tmpKey = "'"; break;
- case "doublequote": tmpKey = "\""; break;
- }
- EliteKeys.Add(key.Name, tmpKey);
- }
- }
- }
- }
- string AppPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase).Replace("file:\\", "");
- if(!HttpListener.IsSupported) {
- Console.WriteLine("No HTTP Listener found");
- return;
- }
- HttpListener listener = new HttpListener();
- Regex matchipv4 = new Regex(@"(\d+\.){3}\d+");
- foreach(IPAddress ip in Dns.GetHostEntry(Dns.GetHostName()).AddressList){
- if(matchipv4.IsMatch(ip.ToString()))
- listener.Prefixes.Add("http://" + ip.ToString() + ":9898/");
- }
- listener.Start();
- Console.WriteLine("Listening on : ");
- foreach(string prefixe in listener.Prefixes) {
- Console.WriteLine(" - " + prefixe);
- }
- while(true){
- HttpListenerContext context = listener.GetContext();
- HttpListenerRequest request = context.Request;
- HttpListenerResponse response = context.Response;
- string page = request.Url.LocalPath;
- NameValueCollection parameters = request.QueryString;
- Console.WriteLine("REQUEST :");
- Console.WriteLine(page);
- string responseString = "";
- string encoding = "UTF8";
- if(page == "/input" && parameters["key"] != null) {
- string keyToPress = "";
- if(EliteKeys[parameters["key"]] != null) {
- keyToPress = EliteKeys[parameters["key"]];
- }
- Console.WriteLine("Got Key : " + parameters["key"] + " => " + keyToPress);
- if(parameters["test"] == null) {
- string exePath = AppPath + "\\input.exe";
- Console.WriteLine("Sending to : " + exePath);
- Process.Start(@exePath, keyToPress);
- }
- response.StatusCode = (keyToPress != "") ? 200 : 500;
- response.OutputStream.Close();
- continue;
- }
- else {
- if(page == "/") {
- page = "/index.html";
- }
- string pageFile = AppPath + "\\client" + page.Replace("/","\\");
- Console.WriteLine(pageFile);
- if(System.IO.File.Exists(pageFile)) {
- System.IO.StreamReader myFile = new System.IO.StreamReader(pageFile);
- string ext = Path.GetExtension(pageFile).Replace(".", "");
- switch(ext) {
- case "html":
- case "css":
- case "json":
- response.ContentType = "text/" + ext;
- break;
- case "png":
- case "jpg":
- response.ContentType = "image/" + ext;
- encoding = "ASCII";
- break;
- case "js":
- response.ContentType = "text/javascript";
- break;
- default:
- response.ContentType = "text/plain";
- Console.WriteLine("Bad Extension : " + ext);
- response.StatusCode = 500;
- response.OutputStream.Close();
- continue;
- break;
- }
- var buffer = new byte[1024*512];
- using(var fs = File.OpenRead(pageFile)) {
- response.ContentLength64 = fs.Length;
- int read;
- while((read = fs.Read(buffer, 0, buffer.Length)) > 0)
- response.OutputStream.Write(buffer, 0, read);
- }
- response.StatusCode = 200;
- }
- else {
- response.StatusCode = 404;
- }
- // Sending response
- response.OutputStream.Close();
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement