diff options
| author | Michael <[email protected]> | 2017-01-08 09:57:10 -0500 |
|---|---|---|
| committer | Michael <[email protected]> | 2017-01-08 09:57:10 -0500 |
| commit | f30dcf5ef41d54c588d7b42c48be8d941abba72e (patch) | |
| tree | 7705f99b965673b1c034ac2b1c56e65072c827df /ShiftOS.Server/WebAdmin.cs | |
| parent | 69dfad54724d4176dfce238a8d7e73970e6eef24 (diff) | |
| download | shiftos_thereturn-f30dcf5ef41d54c588d7b42c48be8d941abba72e.tar.gz shiftos_thereturn-f30dcf5ef41d54c588d7b42c48be8d941abba72e.tar.bz2 shiftos_thereturn-f30dcf5ef41d54c588d7b42c48be8d941abba72e.zip | |
Initial upload
Diffstat (limited to 'ShiftOS.Server/WebAdmin.cs')
| -rw-r--r-- | ShiftOS.Server/WebAdmin.cs | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/ShiftOS.Server/WebAdmin.cs b/ShiftOS.Server/WebAdmin.cs new file mode 100644 index 0000000..cf21181 --- /dev/null +++ b/ShiftOS.Server/WebAdmin.cs @@ -0,0 +1,91 @@ +using Nancy; +using Nancy.Security; +using NetSockets; +using Newtonsoft.Json; +using ShiftOS.Objects; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace ShiftOS.Server +{ + public class WebAdmin : NancyModule + { + private Guid thisGuid { get; set; } + + public WebAdmin() + { + this.RequiresAuthentication(); + + + client = new NetObjectClient(); + + client.OnReceived += (o, a) => + { + var msg = a.Data.Object as ServerMessage; + if (msg.Name == "Welcome") + { + thisGuid = new Guid(msg.Contents); + } + }; + + client.Connect(Program.server.Address.MapToIPv4().ToString(), 13370); + + string template = Properties.Resources.Home; + + Get["/"] = _ => { return GetPage(template, "index.html"); }; + Get["/{page}"] = parameters => + { + return GetPage(template, parameters.page); + }; + } + + public NetObjectClient client = new NetObjectClient(); + + public string GetPage(string template, string page) + { + string pageContents = File.ReadAllText("adm/" + page); + + string page_text = template.Replace("{BODY}", pageContents); + + page_text = page_text.Replace("{IP_ADDR}", client.RemoteHost.ToString()); + page_text = page_text.Replace("{PORT}", client.RemotePort.ToString()); + + return page_text; + } + + public string GrabResource(string page) + { + var type = this.GetType(); + foreach(var property in type.GetProperties(BindingFlags.Public | BindingFlags.Instance)) + { + foreach(var attr in property.GetCustomAttributes(false)) + { + if(attr is PageAttribute) + { + if(page == (attr as PageAttribute).Name) + { + return property.GetGetMethod().Invoke(this, null) as string; + } + } + } + } + + return Properties.Resources.NotFound; + } + } + + public class PageAttribute :Attribute + { + public PageAttribute(string name) + { + Name = name; + } + + public string Name { get; set; } + } +} |
