Ejemplo n.º 1
0
        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());
            }
        }
Ejemplo n.º 2
0
        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());
            }
        }
Ejemplo n.º 3
0
        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());
            }
        }
Ejemplo n.º 4
0
        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();
            }
        }
Ejemplo n.º 5
0
        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());
            }
        }
Ejemplo n.º 6
0
        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());
            }
        }
Ejemplo n.º 7
0
        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());
            }
        }