コード例 #1
0
        private string BuildRegionManagerHTTPPage(UUID currentRegionID)
        {
            RegionInfo region = m_connector.GetRegionInfo(currentRegionID);
            string     html;
            string     path = Util.BasePathCombine(System.IO.Path.Combine("data", "RegionManager.html"));

            if (System.IO.File.Exists(path) && region != null)
            {
                html = System.IO.File.ReadAllText(path);
                Dictionary <string, string> vars = new Dictionary <string, string>();
                vars.Add("Region Name", region.RegionName);
                vars.Add("Region Location X", (region.RegionLocX / Constants.RegionSize).ToString());
                vars.Add("Region Location Y", (region.RegionLocY / Constants.RegionSize).ToString());
                vars.Add("Region Ports", string.Join(", ", region.UDPPorts.ConvertAll <string>(delegate(int i) { return(i.ToString()); }).ToArray()));
                vars.Add("Region Type", region.RegionType);
                vars.Add("Region Size X", region.RegionSizeX.ToString());
                vars.Add("Region Size Y", region.RegionSizeY.ToString());
                vars.Add("Maturity", region.AccessLevel.ToString());
                vars.Add("Disabled", region.Disabled ? "checked" : "");
                vars.Add("Startup Type", "");//Placeholder for the list later
                vars.Add("Normal", region.Startup == StartupType.Normal ? "selected" : "");
                vars.Add("Medium", region.Startup == StartupType.Medium ? "selected" : "");
                vars.Add("Infinite Region", region.InfiniteRegion ? "checked" : "");
                return(CSHTMLCreator.AddHTMLPage(html, "", "RegionManager", vars, RegionMangerHTMLChanged));
            }
            return("");
        }
コード例 #2
0
 public string AddOpenRegionSettingsHTMLPage(IScene scene)
 {
     Dictionary<string, object> vars = new Dictionary<string, object>();
     OpenRegionSettings settings = scene.RegionInfo.OpenRegionSettings;
     vars.Add("Default Draw Distance", settings.DefaultDrawDistance.ToString());
     vars.Add("Force Draw Distance", settings.ForceDrawDistance ? "checked" : "");
     vars.Add("Max Drag Distance", settings.MaxDragDistance.ToString());
     vars.Add("Max Prim Scale", settings.MaximumPrimScale.ToString());
     vars.Add("Min Prim Scale", settings.MinimumPrimScale.ToString());
     vars.Add("Max Physical Prim Scale", settings.MaximumPhysPrimScale.ToString());
     vars.Add("Max Hollow Size", settings.MaximumHollowSize.ToString());
     vars.Add("Min Hole Size", settings.MinimumHoleSize.ToString());
     vars.Add("Max Link Count", settings.MaximumLinkCount.ToString());
     vars.Add("Max Link Count Phys", settings.MaximumLinkCountPhys.ToString());
     vars.Add("Max Inventory Items To Transfer", settings.MaximumInventoryItemsTransfer.ToString());
     vars.Add("Terrain Scale", settings.TerrainDetailScale.ToString());
     vars.Add("Show Tags", settings.ShowTags.ToString());
     vars.Add("Render Water", settings.RenderWater ? "checked" : "");
     vars.Add("Allow Minimap", settings.DisplayMinimap ? "checked" : "");
     vars.Add("Allow Physical Prims", settings.AllowPhysicalPrims ? "checked" : "");
     vars.Add("Enable Teen Mode", settings.EnableTeenMode ? "checked" : "");
     vars.Add("Enforce Max Build Constraints", "checked");
     string HTMLPage = "";
     string path = Util.BasePathCombine(System.IO.Path.Combine("data", "OpenRegionSettingsPage.html"));
     if (System.IO.File.Exists(path))
         HTMLPage = System.IO.File.ReadAllText(path);
     return CSHTMLCreator.AddHTMLPage(HTMLPage, "", "OpenRegionSettings", vars, (newVars) =>
                                                                                    {
                                                                                        ParseUpdatedList(scene,
                                                                                                         newVars);
                                                                                        return
                                                                                            AddOpenRegionSettingsHTMLPage
                                                                                                (scene);
                                                                                    });
 }
コード例 #3
0
        public string AddOpenRegionSettingsHTMLPage(UUID regionID)
        {
            Dictionary <string, string>  vars = new Dictionary <string, string>();
            IOpenRegionSettingsConnector orsc = DataManager.DataManager.RequestPlugin <IOpenRegionSettingsConnector>();

            if (orsc != null)
            {
                OpenRegionSettings settings = orsc.GetSettings(regionID);
                vars.Add("Default Draw Distance", settings.DefaultDrawDistance.ToString());
                vars.Add("Force Draw Distance", settings.ForceDrawDistance ? "checked" : "");
                vars.Add("Max Drag Distance", settings.MaxDragDistance.ToString());
                vars.Add("Max Prim Scale", settings.MaximumPrimScale.ToString());
                vars.Add("Min Prim Scale", settings.MinimumPrimScale.ToString());
                vars.Add("Max Physical Prim Scale", settings.MaximumPhysPrimScale.ToString());
                vars.Add("Max Hollow Size", settings.MaximumHollowSize.ToString());
                vars.Add("Min Hole Size", settings.MinimumHoleSize.ToString());
                vars.Add("Max Link Count", settings.MaximumLinkCount.ToString());
                vars.Add("Max Link Count Phys", settings.MaximumLinkCountPhys.ToString());
                vars.Add("Max Inventory Items To Transfer", settings.MaximumInventoryItemsTransfer.ToString());
                vars.Add("Terrain Scale", settings.TerrainDetailScale.ToString());
                vars.Add("Show Tags", settings.ShowTags.ToString());
                vars.Add("Render Water", settings.RenderWater ? "checked" : "");
                vars.Add("Allow Minimap", settings.DisplayMinimap ? "checked" : "");
                vars.Add("Allow Physical Prims", settings.AllowPhysicalPrims ? "checked" : "");
                vars.Add("Enable Teen Mode", settings.EnableTeenMode ? "checked" : "");
                vars.Add("Enforce Max Build Constraints", settings.ClampPrimSizes ? "checked" : "");
                return(CSHTMLCreator.AddHTMLPage(HTMLPage, "", "OpenRegionSettings", vars, (newVars) =>
                {
                    ParseUpdatedList(regionID, newVars);
                    return AddOpenRegionSettingsHTMLPage(regionID);
                }));
            }
            return("");
        }
コード例 #4
0
        protected string ConvertHTML(string originalFileName, string file, OSHttpRequest request,
                                     OSHttpResponse httpResponse, Dictionary <string, object> requestParameters,
                                     Dictionary <string, object> vars)
        {
            string html = CSHTMLCreator.BuildHTML(file, vars);

            string[]      lines = html.Split('\n');
            StringBuilder sb    = new StringBuilder();

            for (int pos = 0; pos < lines.Length; pos++)
            {
                string line      = lines[pos];
                string cleanLine = line.Trim();
                if (cleanLine.StartsWith("<!--#include file="))
                {
                    string[] split = line.Split(new string[2] {
                        "<!--#include file=\"", "\" -->"
                    },
                                                StringSplitOptions.RemoveEmptyEntries);
                    for (int i = 0; i < split.Length; i += 2)
                    {
                        string filename = GetFileNameFromHTMLPath(split[i], request.Query);
                        string response = null;
                        Dictionary <string, object> newVars = AddVarsForPage(filename, originalFileName,
                                                                             request, httpResponse, requestParameters,
                                                                             out response);
                        AddDefaultVarsForPage(ref newVars);
                        sb.AppendLine(ConvertHTML(filename, File.ReadAllText(filename),
                                                  request, httpResponse, requestParameters, newVars));
                    }
                }
                else if (cleanLine.StartsWith("<!--#include folder="))
                {
                    string[] split = line.Split(new string[2] {
                        "<!--#include folder=\"", "\" -->"
                    },
                                                StringSplitOptions.RemoveEmptyEntries);
                    for (int i = split.Length % 2 == 0 ? 0 : 1; i < split.Length; i += 2)
                    {
                        string filename = GetFileNameFromHTMLPath(split[i], request.Query).Replace("index.html", "");
                        if (Directory.Exists(filename))
                        {
                            string response = null;
                            Dictionary <string, object> newVars = AddVarsForPage(filename, filename, request,
                                                                                 httpResponse,
                                                                                 requestParameters, out response);
                            string[] files = Directory.GetFiles(filename);
                            foreach (string f in files)
                            {
                                if (!f.EndsWith(".html"))
                                {
                                    continue;
                                }
                                Dictionary <string, object> newVars2 =
                                    AddVarsForPage(f, filename, request, httpResponse, requestParameters, out response) ??
                                    new Dictionary <string, object>();
                                foreach (
                                    KeyValuePair <string, object> pair in
                                    newVars.Where(pair => !newVars2.ContainsKey(pair.Key)))
                                {
                                    newVars2.Add(pair.Key, pair.Value);
                                }
                                AddDefaultVarsForPage(ref newVars2);
                                sb.AppendLine(ConvertHTML(f, File.ReadAllText(f), request, httpResponse,
                                                          requestParameters, newVars2));
                            }
                        }
                    }
                }
                else if (cleanLine.StartsWith("{"))
                {
                    int indBegin, indEnd;
                    if ((indEnd = cleanLine.IndexOf("ArrayBegin}")) != -1)
                    {
                        string        keyToCheck = cleanLine.Substring(1, indEnd - 1);
                        int           posToCheckFrom;
                        List <string> repeatedLines = ExtractLines(lines, pos, keyToCheck, "ArrayEnd", out posToCheckFrom);
                        pos = posToCheckFrom;
                        if (vars.ContainsKey(keyToCheck))
                        {
                            List <Dictionary <string, object> > dicts =
                                vars[keyToCheck] as List <Dictionary <string, object> >;
                            if (dicts != null)
                            {
                                foreach (var dict in dicts)
                                {
                                    sb.AppendLine(ConvertHTML(originalFileName,
                                                              string.Join("\n", repeatedLines.ToArray()), request,
                                                              httpResponse, requestParameters, dict));
                                }
                            }
                        }
                    }
                    else if ((indEnd = cleanLine.IndexOf("AuthenticatedBegin}")) != -1)
                    {
                        string key            = cleanLine.Substring(1, indEnd - 1) + "AuthenticatedEnd";
                        int    posToCheckFrom = FindLines(lines, pos, "", key);
                        if (!CheckAuth(cleanLine, request))
                        {
                            pos = posToCheckFrom;
                        }
                    }
                    else if ((indBegin = cleanLine.IndexOf("{If")) != -1 &&
                             (indEnd = cleanLine.IndexOf("Begin}")) != -1)
                    {
                        string key            = cleanLine.Substring(indBegin + 3, indEnd - indBegin - 3);
                        int    posToCheckFrom = FindLines(lines, pos, "If" + key, "End");
                        if (!vars.ContainsKey(key) || ((bool)vars[key]) == false)
                        {
                            pos = posToCheckFrom;
                        }
                    }
                    else if ((indBegin = cleanLine.IndexOf("{If")) != -1 &&
                             (indEnd = cleanLine.IndexOf("End}")) != -1)
                    {
                        //end of an if statement, just ignore it
                    }
                    else if ((indBegin = cleanLine.IndexOf("{Is")) != -1 &&
                             (indEnd = cleanLine.IndexOf("End}")) != -1)
                    {
                        //end of an if statement, just ignore it
                    }
                    else
                    {
                        sb.AppendLine(line);
                    }
                }
                else
                {
                    sb.AppendLine(line);
                }
            }

            return(sb.ToString());
        }