protected void IndexResource(Net.NetContext context, String root, String key) { context.ContentType = "text/html"; using (System.IO.Stream stream = typeof(WebServlet).Assembly .GetManifestResourceStream(String.Format("UMC.Data.Resources.header.html"))) { context.Output.WriteLine(new System.IO.StreamReader(stream).ReadToEnd().Trim()); } if (String.IsNullOrEmpty(root)) { context.Output.WriteLine(" <script src=\"/js/UMC.js\"></script>"); } else if (root.EndsWith(".js")) { context.Output.WriteLine(" <script src=\"/js/{0}\"></script>", root); } else { context.Output.Write(" <script>WDK.POS.Config({posurl: ['"); context.Output.Write(root); context.Output.WriteLine("/', WDK.cookie('device') || WDK.cookie('device', WDK.uuid())].join('')});"); context.Output.WriteLine("</script>"); } using (System.IO.Stream stream = typeof(WebServlet).Assembly .GetManifestResourceStream(String.Format("UMC.Data.Resources.{0}.html", key))) { context.Output.WriteLine(new System.IO.StreamReader(stream).ReadToEnd()); } }
void IndexResource(Net.NetContext context, String key) { var ls = context.RawUrl.Split(new String[] { "/" }, StringSplitOptions.RemoveEmptyEntries); var root = ls.Length == 0 ? "UMC" : ls[0]; this.IndexResource(context, "/" + root, key); }
/// <summary> /// On net context receive handler. /// </summary> /// <param name="sender">The application sender.</param> /// <param name="context">The current net context.</param> private void ManagerClient_OnNetContext(object sender, Net.NetContext context) { try { // Call the handler. object callback = null; object state = null; if (_callback.TryGetValue("Transfer", out callback)) { _state.TryGetValue("Transfer", out state); if (callback != null) { Action <Nequeo.Net.NetContext, object> callbackAction = (Action <Nequeo.Net.NetContext, object>)callback; callbackAction(context, state); } } } catch (Exception ex) { try { // An internal client error. AnyError("Error", "500", ex.Message); } catch { } } }
void ResourceKey(Net.NetContext context, String path) { foreach (var key in ResourceKeys) { var initer = Reflection.CreateInstance(key.Type) as Data.Sql.Initializer; var node = Reflection.GetDataProvider("database", initer.ProviderName); if (node == null) { IndexResource(context, "index"); return; } if (initer.Resource(context, path)) { return; } } context.Redirect(Data.WebResource.Instance().WebDomain()); }
void Process(NameValueCollection nvs, Uri Url, Net.NetContext context, string model, string cmd, Action <Uri> redirec) { NameValueCollection QueryString = new NameValueCollection(); var SessionKey = String.Empty; var paths = new System.Collections.Generic.List <string>(Url.AbsolutePath.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries)); if (paths.Count > 0) { paths.RemoveAt(0); } if (paths.Count > 0) { SessionKey = paths[0]; paths.RemoveAt(0); } if (String.IsNullOrEmpty(model)) { if (Url.Segments.Length > 4) { if (paths.Count > 0) { if (paths[paths.Count - 1].IndexOf('.') > -1) { paths.RemoveAt(paths.Count - 1); } } if (paths.Count > 1) { model = paths[0]; cmd = paths[1]; } if (paths.Count > 2) { QueryString.Add(null, paths[2]); } } } string start = nvs.Get("_start"); for (var i = 0; i < nvs.Count; i++) { var key = System.Web.HttpUtility.UrlDecode(nvs.GetKey(i)); var value = nvs.Get(i); if (String.IsNullOrEmpty(key)) { if (String.IsNullOrEmpty(value) == false) { QueryString.Add(null, value); } } else if (!key.StartsWith("_")) { QueryString.Add(key, value); } } var jsonp = QueryString.Get("jsonp"); QueryString.Remove("jsonp"); WebSession session = null; var writer = new System.IO.StreamWriter(context.OutputStream); context.ContentType = "text/javascript;charset=utf-8"; if (String.IsNullOrEmpty(cmd) == false && cmd.EndsWith(".html")) { context.ContentType = "text/html"; } if (String.IsNullOrEmpty(SessionKey) == false) { context.Cookies[Membership.SessionCookieName] = SessionKey; } try { switch (model) { case "System": switch (cmd) { case "Icon": case "TimeSpan": case "Start": case "Setup": case "Log": case "Mapping": session = new SysSession(); break; default: Authorization(context); break; } break; default: Authorization(context); break; } } catch (Data.Sql.DbException exp) { if (exp.DbCommand == null) { session = new SysSession(); model = "System"; cmd = "Start"; } else { throw exp; } } var client = new WebClient(Url, context.UrlReferrer, context.UserHostAddress, context.UserAgent, session); client.InputStream = context.InputStream; if (String.IsNullOrEmpty(jsonp) == false && jsonp.StartsWith("app")) { client.IsApp = true; } client.XHRTime = Utility.IntParse(context.Headers["umc-request-time"], 0) + 1; if (String.IsNullOrEmpty(start) == false) { client.Start(start); } else if (String.IsNullOrEmpty(model)) { client.SendDialog(QueryString); } else if (String.IsNullOrEmpty(cmd)) { if (model.StartsWith("[") == false) { throw new Exception("Command is empty"); } } else { client.Command(model, cmd, QueryString); } if (String.IsNullOrEmpty(model) == false && model.StartsWith("[") && String.IsNullOrEmpty(cmd)) { client.JSONP(model, jsonp, writer); } else { if (String.IsNullOrEmpty(jsonp) == false) { writer.Write(jsonp); writer.Write('('); } client.WriteTo(writer, redirec); if (String.IsNullOrEmpty(jsonp) == false) { writer.Write(")"); } } writer.Flush(); }
/// <summary> /// On net context receive handler. /// </summary> /// <param name="sender">The application sender.</param> /// <param name="context">The current net context.</param> private void Client_OnNetContext(object sender, Net.NetContext context) { Net.NetRequest request = null; Net.NetResponse response = null; bool keepAlive = true; bool isError = true; try { string resource = ""; string executionMember = ""; string statusCode = ""; string statusDescription = ""; request = context.NetRequest; response = context.NetResponse; // Get the response headers, and set the response headers. List <NameValue> headers = base.ParseHeaders(response.Input, out resource, base.HeaderTimeout, base.MaximumReadLength); if (headers != null) { // Set the response headers. response.ReadNetResponseHeaders(headers, resource); // Should the connection be kept alive. keepAlive = response.KeepAlive; statusCode = response.StatusCode.ToString(); statusDescription = response.StatusDescription; // Get the execution member. if (!String.IsNullOrEmpty(response.Headers["Member"])) { // Get the execution member. executionMember = response.Headers["Member"].Trim(); switch (executionMember.ToUpper()) { case "OCSP_CS": // CertificateStatus isError = CertificateStatus(response); break; } } else { // Find the response type sent from the server. if (!String.IsNullOrEmpty(response.ContentType)) { // If the response is ocsp. if (response.ContentType.ToLower().Contains("ocsp-response")) { // CertificateStatus isError = CertificateStatus(response); } } } } else { // No headers have been found. keepAlive = false; throw new Exception("No headers have been found."); } // If error. if (isError) { // An internal client error. AnyError(executionMember, statusCode, statusDescription); } } catch (Exception ex) { try { // An internal client error. AnyError("Error", "500", ex.Message); } catch { } } // If keep alive. if (keepAlive) { // Look for a new response if this one has been completed. if (response != null) { try { // If the response stream is active. if (response.Input != null) { // If another response is pending // then start the process again. if (response.Input.Length > 0) { Client_OnNetContext(this, context); } } } catch { } } } }