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(""); }
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); }); }
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(""); }
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()); }