public Stream SetMetadata(string name, Stream data) { try { if (_serverConfig == null || _serverConfig.Instances.Length == 0) { return(WriteException("ServiceType not initialized!")); } string input = (data != null ? new StreamReader(data).ReadToEnd() : String.Empty); MapServerConfig.ServerConfig.InstanceConfig config = _serverConfig.Instances[0]; InstanceConnection conn = new InstanceConnection("localhost:" + config.Port); string user, pwd; var request = Request(out user, out pwd); return(WriteValue( conn.UploadMetadata(name, input, user, pwd) )); } catch (UnauthorizedAccessException) { return(WriteUnauthorized()); } }
public System.IO.Stream AxlPost(System.IO.Stream data) { try { if (_serverConfig == null || _serverConfig.Instances.Length == 0) { return(WriteException("ServiceType not initialized!")); } string user, pwd; var request = Request(out user, out pwd); NameValueCollection queryString = KeysToLower(request.UriTemplateMatch.QueryParameters); //DateTime td = DateTime.Now; //Console.WriteLine("Start AXL Request " + td.ToLongTimeString() + "." + td.Millisecond + " (" + queryString["servicename"] + ")"); string input = (data != null ? new StreamReader(data).ReadToEnd() : String.Empty); OutgoingWebResponseContext context = WebOperationContext.Current.OutgoingResponse; if (queryString["cmd"] != null) { context.ContentType = "text/plain; charset=UTF-8"; switch (queryString["cmd"].ToLower()) { case "ping": //return new MemoryStream(Encoding.UTF8.GetBytes("IMS v4.0.1\n")); return(new MemoryStream(Encoding.UTF8.GetBytes("IMS v10.0.0\n"))); case "getversion": //return new MemoryStream(Encoding.UTF8.GetBytes("Version:4.0.1\nBuild_Number:630.1700\n")); return(new MemoryStream(Encoding.UTF8.GetBytes("Version=10.0.0\nBuild_Number=183.2159\n"))); } } if (queryString["servicename"] == null) { return(WriteException("Parameter SERVICENAME is requiered!")); } context.ContentType = "text/xml; charset=UTF-8"; int instanceNr = GetRandom(_serverConfig.Instances.Length /*MapServerConfig.ServerCount*/); MapServerConfig.ServerConfig.InstanceConfig config = _serverConfig.Instances[instanceNr]; InstanceConnection connection = new InstanceConnection("localhost:" + config.Port); string response = connection.Send( Functions.OgcOnlineResource(_serverConfig), queryString["servicename"], input, "BB294D9C-A184-4129-9555-398AA70284BC", user, pwd).Trim(); //Console.WriteLine("Finished AXL Request: " + (DateTime.Now - td).TotalMilliseconds + "ms (" + queryString["servicename"] + ")"); return(new MemoryStream(Encoding.UTF8.GetBytes(response))); } catch (UnauthorizedAccessException) { return(WriteUnauthorized()); } }
public Stream AddMap(string name, Stream data) { try { if (_serverConfig == null || _serverConfig.Instances.Length == 0) { return(WriteException("ServiceType not initialized!")); } string input = (data != null ? new StreamReader(data).ReadToEnd() : String.Empty); MapServerConfig.ServerConfig.InstanceConfig config = _serverConfig.Instances[0]; InstanceConnection conn = new InstanceConnection("localhost:" + config.Port); string user, pwd; var request = Request(out user, out pwd); object ret = conn.AddMap(name, input, user, pwd); for (int i = 1; i < _serverConfig.Instances.Length; i++) { MapServerConfig.ServerConfig.InstanceConfig config2 = _serverConfig.Instances[i]; InstanceConnection conn2 = new InstanceConnection("localhost:" + config2.Port); conn2.AddMap(name, String.Empty, user, pwd); // Refrsh } return(WriteValue(ret)); } catch (UnauthorizedAccessException) { return(WriteUnauthorized()); } }
protected void OnStart(string[] args) { try { KillProcesses(); for (int s = 0; s < MapServerConfig.ServerCount; s++) { MapServerConfig.ServerConfig serverConfig = MapServerConfig.Server(s); if (_startInstances) { _running = true; for (int i = 0; i < serverConfig.Instances.Length; i++) { MapServerConfig.ServerConfig.InstanceConfig instanceConfig = serverConfig.Instances[i]; if (instanceConfig == null || instanceConfig.Port <= 0) { continue; } Thread thread = new Thread(new ParameterizedThreadStart(ProcessMonitor)); thread.Start(instanceConfig.Port); } } TaskerServiceType serviceType = new TaskerServiceType(); serviceType.Init(serverConfig.Port); ServiceHost host = new ServiceHost(/*typeof(Service.TaskerServiceType)*/ serviceType, new Uri("http://localhost:" + serverConfig.Port)); try { if (host.Description.Endpoints.Count == 1 && host.Description.Endpoints[0].Binding is System.ServiceModel.WebHttpBinding) { System.ServiceModel.WebHttpBinding binding = (System.ServiceModel.WebHttpBinding)host.Description.Endpoints[0].Binding; binding.MaxReceivedMessageSize = int.MaxValue; } } catch { } host.Open(); Console.WriteLine("Tasker is listening on port " + serverConfig.Port); _hosts.Add(host); } DeleteImageThread del = new DeleteImageThread(); _delThread = new Thread(new ThreadStart(del.Run)); _delThread.Start(); } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Exception: " + ex.Message + "\n" + ex.StackTrace); Console.ResetColor(); } }
public Stream GetMetadata(string name) { try { if (_serverConfig == null || _serverConfig.Instances.Length == 0) { return(WriteException("ServiceType not initialized!")); } MapServerConfig.ServerConfig.InstanceConfig config = _serverConfig.Instances[0]; InstanceConnection conn = new InstanceConnection("localhost:" + config.Port); string user, pwd; var request = Request(out user, out pwd); return(WriteValue( conn.QueryMetadata(name, user, pwd) )); } catch (UnauthorizedAccessException) { return(WriteUnauthorized()); } }
public Stream TileWmts(string name, string cacheType, string origin, string epsg, string style, string level, string row, string col) { try { if (_serverConfig == null || _serverConfig.Instances.Length == 0) { return(WriteException("ServiceType not initialized!")); } if (IfMatch()) { OutgoingWebResponseContext context = WebOperationContext.Current.OutgoingResponse; context.StatusCode = HttpStatusCode.NotModified; return(null); } string user, pwd; var request = Request(out user, out pwd); int instanceNr = GetRandom(_serverConfig.Instances.Length /* MapServerConfig.ServerCount*/); MapServerConfig.ServerConfig.InstanceConfig config = _serverConfig.Instances[instanceNr]; InstanceConnection conn = new InstanceConnection("localhost:" + config.Port); IServiceRequestInterpreter requestInterpreter = GetInterpreter("wmts"); string ret = conn.Send(String.Empty, name, cacheType + "/" + origin + "/" + epsg + "/" + style + "/~" + level + "/" + row + "/" + col, PlugInManager.PlugInID(requestInterpreter).ToString(), user, pwd); if (ret.StartsWith("image:")) { OutgoingWebResponseContext context = WebOperationContext.Current.OutgoingResponse; context.ContentType = "image/png"; ret = ret.Substring(6, ret.Length - 6); return(WriteFile(ret)); } if (ret.StartsWith("{")) { try { var mapServerResponse = gView.Framework.system.MapServerResponse.FromString(ret); OutgoingWebResponseContext context = WebOperationContext.Current.OutgoingResponse; context.ContentType = mapServerResponse.ContentType; if (mapServerResponse.Expires != null) { AppendEtag((DateTime)mapServerResponse.Expires); } return(WriteBytes(mapServerResponse.Data)); } catch { } } return(WriteValue(ret)); } catch (UnauthorizedAccessException) { return(WriteUnauthorized()); } }
public Stream MapRequestPost(string interpreter, string name, Stream data) { try { if (_serverConfig == null || _serverConfig.Instances.Length == 0) { return(WriteException("ServiceType not initialized!")); } if (IfMatch()) { OutgoingWebResponseContext context = WebOperationContext.Current.OutgoingResponse; context.StatusCode = HttpStatusCode.NotModified; return(null); } //DateTime td = DateTime.Now; //Console.WriteLine("Start Map Request " + td.ToLongTimeString() + "." + td.Millisecond + " (" + name + ")"); //System.Threading.Thread.Sleep(10000); string user, pwd; var request = Request(out user, out pwd); NameValueCollection queryString = KeysToLower(request.UriTemplateMatch.QueryParameters); string input = (data != null ? new StreamReader(data).ReadToEnd() : String.Empty); if (String.IsNullOrEmpty(input)) { StringBuilder parameters = new StringBuilder(); foreach (string key in queryString.Keys) { if (parameters.Length > 0) { parameters.Append("&"); } parameters.Append(key.ToUpper() + "=" + queryString[key]); } input = parameters.ToString(); } int instanceNr = GetRandom(_serverConfig.Instances.Length /* MapServerConfig.ServerCount*/); MapServerConfig.ServerConfig.InstanceConfig config = _serverConfig.Instances[instanceNr]; InstanceConnection conn = new InstanceConnection("localhost:" + config.Port); string onlineResource = _serverConfig.OnlineResource + "/MapRequest/" + interpreter + "/" + name; IServiceRequestInterpreter requestInterpreter = GetInterpreter(interpreter); string ret = conn.Send(onlineResource, name, input, PlugInManager.PlugInID(requestInterpreter).ToString(), user, pwd, input.Contains("tile:render") ? 3600 : 0); //Console.WriteLine("Finished map Request: " + (DateTime.Now - td).TotalMilliseconds + "ms (" + name + ")"); if (ret.StartsWith("image:")) { OutgoingWebResponseContext context = WebOperationContext.Current.OutgoingResponse; context.ContentType = "image/png"; ret = ret.Substring(6, ret.Length - 6); return(WriteFile(ret)); } if (ret.StartsWith("{")) { try { var mapServerResponse = gView.Framework.system.MapServerResponse.FromString(ret); OutgoingWebResponseContext context = WebOperationContext.Current.OutgoingResponse; context.ContentType = mapServerResponse.ContentType; if (mapServerResponse.Expires != null) { AppendEtag((DateTime)mapServerResponse.Expires); } return(WriteBytes(mapServerResponse.Data)); } catch { } } return(WriteValue(ret)); } catch (UnauthorizedAccessException) { return(WriteUnauthorized()); } }