public Dictionary<string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary<string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary<string, object>(); vars.Add("DisplayLG1", "display: none;"); vars.Add("DisplayLG2", "display: none;"); vars.Add("DisplayLG3", "display: none;"); vars.Add("DisplayLG4", "display: none;"); vars.Add("DisplayLG5", "display: none;"); if (translator.LanguageName == "en") vars["DisplayLG1"] = ""; if (translator.LanguageName == "fr") vars["DisplayLG2"] = ""; if (translator.LanguageName == "de") vars["DisplayLG3"] = ""; if (translator.LanguageName == "it") vars["DisplayLG4"] = ""; if (translator.LanguageName == "es") vars["DisplayLG5"] = ""; return vars; }
public Dictionary<string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary<string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary<string, object>(); if (requestParameters.ContainsKey("Submit")) { string title = requestParameters["NewsTitle"].ToString(); string text = requestParameters["NewsText"].ToString(); IGenericsConnector connector = Framework.Utilities.DataManager.RequestPlugin<IGenericsConnector>(); GridNewsItem item = new GridNewsItem {Text = text, Time = DateTime.Now, Title = title}; item.ID = connector.GetGenericCount(UUID.Zero, "WebGridNews") + 1; connector.AddGeneric(UUID.Zero, "WebGridNews", item.ID.ToString(), item.ToOSD()); response = "<h3>News item added successfully, redirecting to main page</h3>" + "<script language=\"javascript\">" + "setTimeout(function() {window.location.href = \"index.html?page=news_manager\";}, 0);" + "</script>"; return null; } vars.Add("NewsItemTitle", translator.GetTranslatedString("NewsItemTitle")); vars.Add("NewsItemText", translator.GetTranslatedString("NewsItemText")); vars.Add("AddNewsText", translator.GetTranslatedString("AddNewsText")); vars.Add("Submit", translator.GetTranslatedString("Submit")); return vars; }
public Dictionary<string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary<string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary<string, object>(); if (requestParameters.ContainsKey("ResetMenu")) { PagesMigrator.ResetToDefaults(); response = translator.GetTranslatedString("ChangesSavedSuccessfully"); return null; } if (requestParameters.ContainsKey("ResetSettings")) { SettingsMigrator.ResetToDefaults(); response = translator.GetTranslatedString("ChangesSavedSuccessfully"); return null; } vars.Add("FactoryReset", translator.GetTranslatedString("FactoryReset")); vars.Add("ResetMenuText", translator.GetTranslatedString("ResetMenuText")); vars.Add("ResetSettingsText", translator.GetTranslatedString("ResetSettingsText")); vars.Add("ResetMenuInfoText", translator.GetTranslatedString("ResetMenuText")); vars.Add("ResetSettingsInfoText", translator.GetTranslatedString("ResetSettingsInfoText")); vars.Add("Reset", translator.GetTranslatedString("Reset")); return vars; }
public Dictionary<string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary<string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary<string, object>(); IGenericsConnector connector = Framework.Utilities.DataManager.RequestPlugin<IGenericsConnector>(); if (httpRequest.Query.Contains("delete")) { string newsID = httpRequest.Query["delete"].ToString(); connector.RemoveGeneric(UUID.Zero, "WebGridNews", newsID); vars["Success"] = "Successfully deleted the news item"; } else vars["Success"] = ""; var newsItems = connector.GetGenerics<GridNewsItem>(UUID.Zero, "WebGridNews"); vars.Add("News", newsItems.ConvertAll<Dictionary<string, object>>(item => item.ToDictionary())); vars.Add("NewsManager", translator.GetTranslatedString("NewsManager")); vars.Add("EditNewsItem", translator.GetTranslatedString("EditNewsItem")); vars.Add("AddNewsItem", translator.GetTranslatedString("AddNewsItem")); vars.Add("DeleteNewsItem", translator.GetTranslatedString("DeleteNewsItem")); vars.Add("NewsTitleText", translator.GetTranslatedString("NewsTitleText")); vars.Add("NewsDateText", translator.GetTranslatedString("NewsDateText")); vars.Add("EditNewsText", translator.GetTranslatedString("EditNewsText")); vars.Add("DeleteNewsText", translator.GetTranslatedString("DeleteNewsText")); return vars; }
public Dictionary<string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary<string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary<string, object>(); // Style Switcher vars.Add("styles1", translator.GetTranslatedString("styles1")); vars.Add("styles2", translator.GetTranslatedString("styles2")); vars.Add("styles3", translator.GetTranslatedString("styles3")); vars.Add("styles4", translator.GetTranslatedString("styles4")); vars.Add("styles5", translator.GetTranslatedString("styles5")); vars.Add("StyleSwitcherStylesText", translator.GetTranslatedString("StyleSwitcherStylesText")); vars.Add("StyleSwitcherLanguagesText", translator.GetTranslatedString("StyleSwitcherLanguagesText")); vars.Add("StyleSwitcherChoiceText", translator.GetTranslatedString("StyleSwitcherChoiceText")); // Language Switcher vars.Add("en", translator.GetTranslatedString("en")); vars.Add("fr", translator.GetTranslatedString("fr")); vars.Add("de", translator.GetTranslatedString("de")); vars.Add("it", translator.GetTranslatedString("it")); vars.Add("es", translator.GetTranslatedString("es")); return vars; }
public Dictionary<string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary<string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary<string, object>(); var usersList = new List<Dictionary<string, object>>(); uint amountPerQuery = 10; int start = httpRequest.Query.ContainsKey("Start") ? int.Parse(httpRequest.Query["Start"].ToString()) : 0; uint count = Framework.Utilities.DataManager.RequestPlugin<IAgentInfoConnector>().RecentlyOnline(5*60, true); int maxPages = (int) (count/amountPerQuery) - 1; if (start == -1) start = (int) (maxPages < 0 ? 0 : maxPages); vars.Add("CurrentPage", start); vars.Add("NextOne", start + 1 > maxPages ? start : start + 1); vars.Add("BackOne", start - 1 < 0 ? 0 : start - 1); var users = Framework.Utilities.DataManager.RequestPlugin<IAgentInfoConnector>() .RecentlyOnline(5*60, true, new Dictionary<string, bool>(), (uint) start, amountPerQuery); IUserAccountService accountService = webInterface.Registry.RequestModuleInterface<IUserAccountService>(); IGridService gridService = webInterface.Registry.RequestModuleInterface<IGridService>(); foreach (var user in users) { var region = gridService.GetRegionByUUID(null, user.CurrentRegionID); var account = accountService.GetUserAccount(region.AllScopeIDs, UUID.Parse(user.UserID)); if (account != null && region != null) usersList.Add(new Dictionary<string, object> { {"UserName", account.Name}, {"UserRegion", region.RegionName}, {"UserID", user.UserID}, {"UserRegionID", region.RegionID} }); } if (requestParameters.ContainsKey("Order")) { if (requestParameters["Order"].ToString() == "RegionName") usersList.Sort((a, b) => a["UserRegion"].ToString().CompareTo(b["UserRegion"].ToString())); if (requestParameters["Order"].ToString() == "UserName") usersList.Sort((a, b) => a["UserName"].ToString().CompareTo(b["UserName"].ToString())); } vars.Add("UsersOnlineList", usersList); vars.Add("OnlineUsersText", translator.GetTranslatedString("OnlineUsersText")); vars.Add("UserNameText", translator.GetTranslatedString("UserNameText")); vars.Add("RegionNameText", translator.GetTranslatedString("RegionNameText")); vars.Add("MoreInfoText", translator.GetTranslatedString("MoreInfoText")); vars.Add("FirstText", translator.GetTranslatedString("FirstText")); vars.Add("BackText", translator.GetTranslatedString("BackText")); vars.Add("NextText", translator.GetTranslatedString("NextText")); vars.Add("LastText", translator.GetTranslatedString("LastText")); vars.Add("CurrentPageText", translator.GetTranslatedString("CurrentPageText")); return vars; }
public byte[] GroupMemberData(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { try { //MainConsole.Instance.Debug("[CAPS]: UploadBakedTexture Request in region: " + // m_regionName); OSDMap rm = (OSDMap) OSDParser.DeserializeLLSDXml(request); UUID groupID = rm["group_id"].AsUUID(); OSDMap defaults = new OSDMap(); ulong EveryonePowers = (ulong) (GroupPowers.AllowSetHome | GroupPowers.Accountable | GroupPowers.JoinChat | GroupPowers.AllowVoiceChat | GroupPowers.ReceiveNotices | GroupPowers.StartProposal | GroupPowers.VoteOnProposal); defaults["default_powers"] = EveryonePowers; List<string> titles = new List<string>(); OSDMap members = new OSDMap(); int count = 0; foreach (GroupMembersData gmd in m_groupService.GetGroupMembers(m_service.AgentID, groupID)) { OSDMap member = new OSDMap(); member["donated_square_meters"] = gmd.Contribution; member["owner"] = (gmd.IsOwner ? "Y" : "N"); member["last_login"] = gmd.OnlineStatus; if (titles.Contains(gmd.Title)) { member["title"] = titles.FindIndex((s) => s == gmd.Title); } else { titles.Add(gmd.Title); member["title"] = titles.Count-1; } member["powers"] = gmd.AgentPowers; count++; members[gmd.AgentID.ToString()] = member; } OSDMap map = new OSDMap(); map["member_count"] = count; map["group_id"] = groupID; map["defaults"] = defaults; map["titles"] = titles.ToOSDArray(); map["members"] = members; return OSDParser.SerializeLLSDXmlBytes(map); } catch (Exception e) { MainConsole.Instance.Error("[CAPS]: " + e); } return null; }
public Dictionary<string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary<string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary<string, object>(); IGenericsConnector connector = Framework.Utilities.DataManager.RequestPlugin<IGenericsConnector>(); var settings = connector.GetGeneric<GridSettings>(UUID.Zero, "WebSettings", "Settings"); if (requestParameters.ContainsKey("Submit")) { settings.MapCenter.X = int.Parse(requestParameters["GridCenterX"].ToString()); settings.MapCenter.Y = int.Parse(requestParameters["GridCenterY"].ToString()); settings.HideLanguageTranslatorBar = requestParameters["HideLanguageBar"].ToString() == "1"; settings.HideStyleBar = requestParameters["HideStyleBar"].ToString() == "1"; connector.AddGeneric(UUID.Zero, "WebSettings", "Settings", settings.ToOSD()); response = "Successfully updated settings."; return null; } else if (requestParameters.ContainsKey("IgnorePagesUpdates")) { settings.LastPagesVersionUpdateIgnored = PagesMigrator.CurrentVersion; connector.AddGeneric(UUID.Zero, "WebSettings", "Settings", settings.ToOSD()); } else if (requestParameters.ContainsKey("IgnoreSettingsUpdates")) { settings.LastSettingsVersionUpdateIgnored = PagesMigrator.CurrentVersion; connector.AddGeneric(UUID.Zero, "WebSettings", "Settings", settings.ToOSD()); } vars.Add("GridCenterX", settings.MapCenter.X); vars.Add("GridCenterY", settings.MapCenter.Y); vars.Add("HideLanguageBarNo", !settings.HideLanguageTranslatorBar ? "selected=\"selected\"" : ""); vars.Add("HideLanguageBarYes", settings.HideLanguageTranslatorBar ? "selected=\"selected\"" : ""); vars.Add("HideStyleBarNo", !settings.HideStyleBar ? "selected=\"selected\"" : ""); vars.Add("HideStyleBarYes", settings.HideStyleBar ? "selected=\"selected\"" : ""); vars.Add("IgnorePagesUpdates", PagesMigrator.CheckWhetherIgnoredVersionUpdate(settings.LastPagesVersionUpdateIgnored) ? "" : "checked"); vars.Add("IgnoreSettingsUpdates", settings.LastSettingsVersionUpdateIgnored != SettingsMigrator.CurrentVersion ? "" : "checked"); vars.Add("SettingsManager", translator.GetTranslatedString("SettingsManager")); vars.Add("IgnorePagesUpdatesText", translator.GetTranslatedString("IgnorePagesUpdatesText")); vars.Add("IgnoreSettingsUpdatesText", translator.GetTranslatedString("IgnoreSettingsUpdatesText")); vars.Add("GridCenterXText", translator.GetTranslatedString("GridCenterXText")); vars.Add("GridCenterYText", translator.GetTranslatedString("GridCenterYText")); vars.Add("HideLanguageBarText", translator.GetTranslatedString("HideLanguageBarText")); vars.Add("HideStyleBarText", translator.GetTranslatedString("HideStyleBarText")); vars.Add("Save", translator.GetTranslatedString("Save")); vars.Add("No", translator.GetTranslatedString("No")); vars.Add("Yes", translator.GetTranslatedString("Yes")); return vars; }
public Dictionary<string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary<string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary<string, object>(); vars.Add("ForgotPassword", translator.GetTranslatedString("ForgotPassword")); return vars; }
public Dictionary<string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary<string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary<string, object>(); vars.Add("Error505Text", translator.GetTranslatedString("Error505Text")); vars.Add("Error505InfoText", translator.GetTranslatedString("Error505InfoText")); vars.Add("HomePage505Text", translator.GetTranslatedString("HomePage505Text")); return vars; }
public Dictionary<string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary<string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary<string, object>(); IGenericsConnector connector = Framework.Utilities.DataManager.RequestPlugin<IGenericsConnector>(); if (requestParameters.ContainsKey("Submit")) { GridWelcomeScreen submittedInfo = new GridWelcomeScreen(); submittedInfo.SpecialWindowMessageTitle = requestParameters["SpecialWindowTitle"].ToString(); submittedInfo.SpecialWindowMessageText = requestParameters["SpecialWindowText"].ToString(); submittedInfo.SpecialWindowMessageColor = requestParameters["SpecialWindowColor"].ToString(); submittedInfo.SpecialWindowActive = requestParameters["SpecialWindowStatus"].ToString() == "1"; submittedInfo.GridStatus = requestParameters["GridStatus"].ToString() == "1"; connector.AddGeneric(UUID.Zero, "GridWelcomeScreen", "GridWelcomeScreen", submittedInfo.ToOSD()); response = "Successfully saved data"; return null; } GridWelcomeScreen welcomeInfo = connector.GetGeneric<GridWelcomeScreen>(UUID.Zero, "GridWelcomeScreen", "GridWelcomeScreen"); if (welcomeInfo == null) welcomeInfo = GridWelcomeScreen.Default; vars.Add("OpenNewsManager", translator.GetTranslatedString("OpenNewsManager")); vars.Add("SpecialWindowTitleText", translator.GetTranslatedString("SpecialWindowTitleText")); vars.Add("SpecialWindowTextText", translator.GetTranslatedString("SpecialWindowTextText")); vars.Add("SpecialWindowColorText", translator.GetTranslatedString("SpecialWindowColorText")); vars.Add("SpecialWindowStatusText", translator.GetTranslatedString("SpecialWindowStatusText")); vars.Add("WelcomeScreenManagerFor", translator.GetTranslatedString("WelcomeScreenManagerFor")); vars.Add("GridStatus", translator.GetTranslatedString("GridStatus")); vars.Add("Online", translator.GetTranslatedString("Online")); vars.Add("Offline", translator.GetTranslatedString("Offline")); vars.Add("Enabled", translator.GetTranslatedString("Enabled")); vars.Add("Disabled", translator.GetTranslatedString("Disabled")); vars.Add("SpecialWindowTitle", welcomeInfo.SpecialWindowMessageTitle); vars.Add("SpecialWindowMessage", welcomeInfo.SpecialWindowMessageText); vars.Add("SpecialWindowActive", welcomeInfo.SpecialWindowActive ? "selected" : ""); vars.Add("SpecialWindowInactive", welcomeInfo.SpecialWindowActive ? "" : "selected"); vars.Add("GridActive", welcomeInfo.GridStatus ? "selected" : ""); vars.Add("GridInactive", welcomeInfo.GridStatus ? "" : "selected"); vars.Add("SpecialWindowColorRed", welcomeInfo.SpecialWindowMessageColor == "red" ? "selected" : ""); vars.Add("SpecialWindowColorYellow", welcomeInfo.SpecialWindowMessageColor == "yellow" ? "selected" : ""); vars.Add("SpecialWindowColorGreen", welcomeInfo.SpecialWindowMessageColor == "green" ? "selected" : ""); vars.Add("SpecialWindowColorWhite", welcomeInfo.SpecialWindowMessageColor == "white" ? "selected" : ""); vars.Add("Submit", translator.GetTranslatedString("Submit")); return vars; }
/// <summary> /// Callback for a viewerstats cap /// </summary> /// <param name="request"></param> /// <param name="path"></param> /// <param name="httpRequest"></param> /// <param name="httpResponse"></param> /// <returns></returns> public byte[] ViewerStatsReport(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { IUserStatsDataConnector dataConnector = Framework.Utilities.DataManager.RequestPlugin<IUserStatsDataConnector>(); OpenMetaverse.Messages.Linden.ViewerStatsMessage vsm = new OpenMetaverse.Messages.Linden.ViewerStatsMessage(); vsm.Deserialize((OSDMap) OSDParser.DeserializeLLSDXml(request)); dataConnector.UpdateUserStats(vsm, m_service.AgentID, m_service.Region.RegionID); return MainServer.BlankResponse; }
public Dictionary<string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary<string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary<string, object>(); string error = ""; if (requestParameters.ContainsKey("username") && requestParameters.ContainsKey("password")) { string username = requestParameters["username"].ToString(); string password = requestParameters["password"].ToString(); ILoginService loginService = webInterface.Registry.RequestModuleInterface<ILoginService>(); if (loginService.VerifyClient(UUID.Zero, username, "UserAccount", password)) { UUID sessionID = UUID.Random(); UserAccount account = webInterface.Registry.RequestModuleInterface<IUserAccountService>() .GetUserAccount(null, username); Authenticator.AddAuthentication(sessionID, account); if (account.UserLevel > 0) Authenticator.AddAdminAuthentication(sessionID, account); httpResponse.AddCookie(new System.Web.HttpCookie("SessionID", sessionID.ToString()) { Expires = DateTime .MinValue, Path = "" }); response = "<h3>Successfully logged in, redirecting to main page</h3>" + "<script language=\"javascript\">" + "setTimeout(function() {window.location.href = \"index.html\";}, 0);" + "</script>"; } else response = "<h3>Failed to verify user name and password</h3>"; return null; } vars.Add("ErrorMessage", error); vars.Add("Login", translator.GetTranslatedString("Login")); vars.Add("UserNameText", translator.GetTranslatedString("UserName")); vars.Add("PasswordText", translator.GetTranslatedString("Password")); vars.Add("ForgotPassword", translator.GetTranslatedString("ForgotPassword")); vars.Add("Submit", translator.GetTranslatedString("Submit")); return vars; }
public Dictionary<string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary<string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary<string, object>(); vars.Add("Logout", translator.GetTranslatedString("Logout")); vars.Add("LoggedOutSuccessfullyText", translator.GetTranslatedString("LoggedOutSuccessfullyText")); Authenticator.RemoveAuthentication(httpRequest); return vars; }
public byte[] ChatSessionRequest(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { try { OSDMap rm = (OSDMap) OSDParser.DeserializeLLSDXml(request); return Encoding.UTF8.GetBytes(m_imService.ChatSessionRequest(m_service, rm)); } catch (Exception e) { MainConsole.Instance.Error("[IMCAPS]: " + e.ToString()); } return null; }
public Dictionary<string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary<string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary<string, object>(); IAgentInfoConnector users = Framework.Utilities.DataManager.RequestPlugin<IAgentInfoConnector>(); IGenericsConnector connector = Framework.Utilities.DataManager.RequestPlugin<IGenericsConnector>(); GridWelcomeScreen welcomeInfo = connector.GetGeneric<GridWelcomeScreen>(UUID.Zero, "GridWelcomeScreen", "GridWelcomeScreen"); if (welcomeInfo == null) welcomeInfo = GridWelcomeScreen.Default; IConfigSource config = webInterface.Registry.RequestModuleInterface<ISimulationBase>().ConfigSource; vars.Add("GridStatus", translator.GetTranslatedString("GridStatus")); vars.Add("GridOnline", welcomeInfo.GridStatus ? translator.GetTranslatedString("Online") : translator.GetTranslatedString("Offline")); vars.Add("TotalUserCount", translator.GetTranslatedString("TotalUserCount")); vars.Add("UserCount", webInterface.Registry.RequestModuleInterface<IUserAccountService>(). NumberOfUserAccounts(null, "").ToString()); vars.Add("TotalRegionCount", translator.GetTranslatedString("TotalRegionCount")); vars.Add("RegionCount", Framework.Utilities.DataManager.RequestPlugin<IRegionData>(). Count((RegionFlags) 0, (RegionFlags) 0).ToString()); vars.Add("UniqueVisitors", translator.GetTranslatedString("UniqueVisitors")); vars.Add("UniqueVisitorCount", users.RecentlyOnline((uint) TimeSpan.FromDays(30).TotalSeconds, false).ToString()); vars.Add("OnlineNow", translator.GetTranslatedString("OnlineNow")); vars.Add("OnlineNowCount", users.RecentlyOnline(5*60, true).ToString()); vars.Add("HGActiveText", translator.GetTranslatedString("HyperGrid")); string disabled = translator.GetTranslatedString("Disabled"), enabled = translator.GetTranslatedString("Enabled"); vars.Add("HGActive", disabled + "(TODO: FIX)"); vars.Add("VoiceActiveLabel", translator.GetTranslatedString("Voice")); vars.Add("VoiceActive", config.Configs["Voice"] != null && config.Configs["Voice"].GetString("Module", "GenericVoice") != "GenericVoice" ? enabled : disabled); vars.Add("CurrencyActiveLabel", translator.GetTranslatedString("Currency")); vars.Add("CurrencyActive", webInterface.Registry.RequestModuleInterface<IMoneyModule>() != null ? enabled : disabled); return vars; }
public Dictionary<string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary<string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary<string, object>(); IGridServerInfoService infoService = webInterface.Registry.RequestModuleInterface<IGridServerInfoService>(); string mapService = infoService.GetGridURI("MapService"); string mapAPIService = infoService.GetGridURI("MapAPIService"); vars.Add("WorldMapServiceURL", mapService.Remove(mapService.Length - 1)); vars.Add("WorldMapAPIServiceURL", mapAPIService.Remove(mapAPIService.Length - 1)); return vars; }
public Dictionary<string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary<string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary<string, object>(); vars.Add("WorldMap", translator.GetTranslatedString("WorldMap")); IGenericsConnector connector = Framework.Utilities.DataManager.RequestPlugin<IGenericsConnector>(); var settings = connector.GetGeneric<GridSettings>(UUID.Zero, "WebSettings", "Settings"); vars.Add("GridCenterX", settings.MapCenter.X); vars.Add("GridCenterY", settings.MapCenter.Y); return vars; }
public Dictionary<string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary<string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary<string, object>(); vars.Add("ColorBoxImageText", translator.GetTranslatedString("ColorBoxImageText")); vars.Add("ColorBoxOfText", translator.GetTranslatedString("ColorBoxOfText")); vars.Add("ColorBoxPreviousText", translator.GetTranslatedString("ColorBoxPreviousText")); vars.Add("ColorBoxNextText", translator.GetTranslatedString("ColorBoxNextText")); vars.Add("ColorBoxCloseText", translator.GetTranslatedString("ColorBoxCloseText")); vars.Add("ColorBoxStartSlideshowText", translator.GetTranslatedString("ColorBoxStartSlideshowText")); vars.Add("ColorBoxStopSlideshowText", translator.GetTranslatedString("ColorBoxStopSlideshowText")); return vars; }
public Dictionary<string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary<string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary<string, object>(); vars.Add("Sun", translator.GetTranslatedString("Sun")); vars.Add("Mon", translator.GetTranslatedString("Mon")); vars.Add("Tue", translator.GetTranslatedString("Tue")); vars.Add("Wed", translator.GetTranslatedString("Wed")); vars.Add("Thu", translator.GetTranslatedString("Thu")); vars.Add("Fri", translator.GetTranslatedString("Fri")); vars.Add("Sat", translator.GetTranslatedString("Sat")); vars.Add("Sunday", translator.GetTranslatedString("Sunday")); vars.Add("Monday", translator.GetTranslatedString("Monday")); vars.Add("Tuesday", translator.GetTranslatedString("Tuesday")); vars.Add("Wednesday", translator.GetTranslatedString("Wednesday")); vars.Add("Thursday", translator.GetTranslatedString("Thursday")); vars.Add("Friday", translator.GetTranslatedString("Friday")); vars.Add("Saturday", translator.GetTranslatedString("Saturday")); vars.Add("Jan", translator.GetTranslatedString("Jan")); vars.Add("Feb", translator.GetTranslatedString("Feb")); vars.Add("Mar", translator.GetTranslatedString("Mar")); vars.Add("Apr", translator.GetTranslatedString("Apr")); vars.Add("May", translator.GetTranslatedString("May")); vars.Add("Jun", translator.GetTranslatedString("Jun")); vars.Add("Jul", translator.GetTranslatedString("Jul")); vars.Add("Aug", translator.GetTranslatedString("Aug")); vars.Add("Sep", translator.GetTranslatedString("Sep")); vars.Add("Oct", translator.GetTranslatedString("Oct")); vars.Add("Nov", translator.GetTranslatedString("Nov")); vars.Add("Dec", translator.GetTranslatedString("Dec")); vars.Add("January", translator.GetTranslatedString("January")); vars.Add("February", translator.GetTranslatedString("February")); vars.Add("March", translator.GetTranslatedString("March")); vars.Add("April", translator.GetTranslatedString("April")); vars.Add("June", translator.GetTranslatedString("June")); vars.Add("July", translator.GetTranslatedString("July")); vars.Add("August", translator.GetTranslatedString("August")); vars.Add("September", translator.GetTranslatedString("September")); vars.Add("October", translator.GetTranslatedString("October")); vars.Add("November", translator.GetTranslatedString("November")); vars.Add("December", translator.GetTranslatedString("December")); return vars; }
public Dictionary<string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary<string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary<string, object>(); vars.Add("HelpText", translator.GetTranslatedString("HelpText")); vars.Add("HelpViewersConfigText", translator.GetTranslatedString("HelpViewersConfigText")); vars.Add("AngstormViewer", translator.GetTranslatedString("AngstormViewer")); vars.Add("VoodooViewer", translator.GetTranslatedString("VoodooViewer")); vars.Add("AstraViewer", translator.GetTranslatedString("AstraViewer")); vars.Add("ImprudenceViewer", translator.GetTranslatedString("ImprudenceViewer")); vars.Add("PhoenixViewer", translator.GetTranslatedString("PhoenixViewer")); vars.Add("SingularityViewer", translator.GetTranslatedString("SingularityViewer")); vars.Add("ZenViewer", translator.GetTranslatedString("ZenViewer")); return vars; }
public Dictionary<string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary<string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary<string, object>(); IGenericsConnector connector = Framework.Utilities.DataManager.RequestPlugin<IGenericsConnector>(); GridWelcomeScreen welcomeInfo = connector.GetGeneric<GridWelcomeScreen>(UUID.Zero, "GridWelcomeScreen", "GridWelcomeScreen"); if (welcomeInfo == null) welcomeInfo = GridWelcomeScreen.Default; vars.Add("Title", welcomeInfo.SpecialWindowMessageTitle); vars.Add("Text", welcomeInfo.SpecialWindowMessageText); vars.Add("Color", welcomeInfo.SpecialWindowMessageColor); vars.Add("Active", welcomeInfo.SpecialWindowActive); return vars; }
public byte[] OnHTTPGetTextureImage(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { byte[] jpeg = new byte[0]; IAssetService m_AssetService = _registry.RequestModuleInterface<IAssetService>(); using (MemoryStream imgstream = new MemoryStream()) { // Taking our jpeg2000 data, decoding it, then saving it to a byte array with regular jpeg data // non-async because we know we have the asset immediately. byte[] mapasset = m_AssetService.GetData(httpRequest.QueryString["uuid"]); if (mapasset != null) { // Decode image to System.Drawing.Image Image image = null; ManagedImage managedImage; if (OpenJPEG.DecodeToImage(mapasset, out managedImage, out image)) { // Save to bitmap using (Bitmap texture = ResizeBitmap(image, 256, 256)) { EncoderParameters myEncoderParameters = new EncoderParameters(); myEncoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 75L); // Save bitmap to stream texture.Save(imgstream, GetEncoderInfo("image/jpeg"), myEncoderParameters); // Write the stream to a byte array for output jpeg = imgstream.ToArray(); } image.Dispose(); } } } httpResponse.ContentType = "image/jpeg"; return jpeg; }
public byte[] GetBakedTexture(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { string[] req = path.Split('/'); UUID avID = UUID.Parse(req[2]); string type = req[3]; UUID textureID = UUID.Parse(req[4]); //IAvatarService avService = m_registry.RequestModuleInterface<IAvatarService>(); //Aurora.Framework.ClientInterfaces.AvatarAppearance appearance = avService.GetAppearance(avID); //AvatarTextureIndex textureIndex = AppearanceManager.BakeTypeToAgentTextureIndex((BakeType)Enum.Parse(typeof(BakeType), type, true)); //AssetBase texture = m_assetService.Get(appearance.Texture.FaceTextures[(int)textureIndex].TextureID.ToString()); AssetBase texture = m_assetService.Get(textureID.ToString()); if (texture == null) { return new byte[0]; } // Full content request httpResponse.StatusCode = (int)System.Net.HttpStatusCode.OK; httpResponse.ContentType = texture.TypeString; return texture.Data; }
private byte[] MeshUploadFlagCAP(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { OSDMap data = new OSDMap(); IUserProfileInfo info = m_profileConnector.GetUserProfile(m_service.AgentID); data["id"] = m_service.AgentID; data["username"] = m_service.ClientCaps.AccountInfo.Name; data["display_name"] = info.DisplayName; data["display_name_next_update"] = Utils.UnixTimeToDateTime(0); data["legacy_first_name"] = m_service.ClientCaps.AccountInfo.FirstName; data["legacy_last_name"] = m_service.ClientCaps.AccountInfo.LastName; data["mesh_upload_status"] = "valid"; // add if account has ability to upload mesh? bool isDisplayNameNDefault = (info.DisplayName == m_service.ClientCaps.AccountInfo.Name) || (info.DisplayName == m_service.ClientCaps.AccountInfo.FirstName + "." + m_service.ClientCaps.AccountInfo.LastName); data["is_display_name_default"] = isDisplayNameNDefault; //Send back data return OSDParser.SerializeLLSDXmlBytes(data); }
private static byte[] HandleResponse(OSHttpRequest httpRequest, OSHttpResponse response, Stream stream, string urlToAppend, Dictionary<string, object> variables, HTTPReturned eventHandler) { Uri myUri = new Uri("http://localhost/index.php?" + stream.ReadUntilEnd()); Dictionary<string, string> newVars = new Dictionary<string, string>(); foreach (string key in variables.Keys) { newVars[key] = HttpUtility.ParseQueryString(myUri.Query).Get(key); } string url = eventHandler(newVars); string html = "<html>" + (url == "" ? "" : ("<head>" + "<meta http-equiv=\"REFRESH\" content=\"0;url=" + url + "\"></HEAD>")) + "</HTML>"; response.ContentType = "text/html"; return Encoding.UTF8.GetBytes(html); }
public byte[] ParcelVoiceInfoRequest(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { // - check whether we have a region channel in our cache // - if not: // create it and cache it // - send it to the client // - send channel_uri: as "sip:regionID@m_sipDomain" try { string channel_uri; int localID; m_voiceModule.ParcelVoiceRequest(m_service, out channel_uri, out localID); // fill in our response to the client OSDMap map = new OSDMap(); map["region_name"] = m_service.Region.RegionName; map["parcel_local_id"] = localID; map["voice_credentials"] = new OSDMap(); ((OSDMap) map["voice_credentials"])["channel_uri"] = channel_uri; MainConsole.Instance.DebugFormat( "[VivoxVoice][PARCELVOICE]: region \"{0}\": Parcel ({1}): avatar \"{2}\"", m_service.Region.RegionName, localID, m_service.ClientCaps.AccountInfo.Name); return OSDParser.SerializeLLSDXmlBytes(map); } catch (Exception e) { MainConsole.Instance.ErrorFormat( "[VivoxVoice][PARCELVOICE]: region \"{0}\": avatar \"{1}\": {2}, retry later", m_service.Region.RegionName, m_service.ClientCaps.AccountInfo.Name, e.Message); MainConsole.Instance.DebugFormat( "[VivoxVoice][PARCELVOICE]: region \"{0}\": avatar \"{1}\": {2} failed", m_service.Region.RegionName, m_service.ClientCaps.AccountInfo.Name, e.ToString()); return Encoding.UTF8.GetBytes("<llsd><undef /></llsd>"); } }
public Dictionary<string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary<string, object> requestParameters, ITranslator translator, out string response) { response = null; IGenericsConnector connector = Framework.Utilities.DataManager.RequestPlugin<IGenericsConnector>(); var vars = new Dictionary<string, object>(); vars.Add("News", translator.GetTranslatedString("News")); vars.Add("NewsDateText", translator.GetTranslatedString("NewsDateText")); vars.Add("NewsTitleText", translator.GetTranslatedString("NewsTitleText")); vars.Add("CurrentPageText", translator.GetTranslatedString("CurrentPageText")); vars.Add("FirstText", translator.GetTranslatedString("FirstText")); vars.Add("BackText", translator.GetTranslatedString("BackText")); vars.Add("NextText", translator.GetTranslatedString("NextText")); vars.Add("LastText", translator.GetTranslatedString("LastText")); uint amountPerQuery = 10; int start = httpRequest.Query.ContainsKey("Start") ? int.Parse(httpRequest.Query["Start"].ToString()) : 0; uint count = (uint) connector.GetGenericCount(UUID.Zero, "WebGridNews"); int maxPages = (int) (count/amountPerQuery) - 1; if (start == -1) start = (int) (maxPages < 0 ? 0 : maxPages); vars.Add("CurrentPage", start); vars.Add("NextOne", start + 1 > maxPages ? start : start + 1); vars.Add("BackOne", start - 1 < 0 ? 0 : start - 1); var newsItems = connector.GetGenerics<GridNewsItem>(UUID.Zero, "WebGridNews"); if (newsItems.Count == 0) newsItems.Add(GridNewsItem.NoNewsItem); vars.Add("NewsList", newsItems.ConvertAll<Dictionary<string, object>>(item => item.ToDictionary())); return vars; }
private byte[] SimulatorFeaturesCAP(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { OSDMap data = new OSDMap(); data["MeshRezEnabled"] = true; data["MeshUploadEnabled"] = true; data["MeshXferEnabled"] = true; data["PhysicsMaterialsEnabled"] = true; OSDMap typesMap = new OSDMap(); typesMap["convex"] = true; typesMap["none"] = true; typesMap["prim"] = true; data["PhysicsShapeTypes"] = typesMap; //Data URLS need sent as well //Not yet... //data["DataUrls"] = m_service.Registry.RequestModuleInterface<IGridRegistrationService> ().GetUrlForRegisteringClient (m_service.AgentID + "|" + m_service.RegionHandle); //Send back data return OSDParser.SerializeLLSDXmlBytes(data); }
public override byte[] Handle(string path, Stream requestData, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { httpResponse.ContentType = "image/jpeg"; try { lock (m_RequestLock) { Dictionary<string, object> request = new Dictionary<string, object>(); foreach (string name in httpRequest.QueryString) request[name] = httpRequest.QueryString[name]; return SendWorldView(request); } } catch (Exception e) { MainConsole.Instance.Debug("[WORLDVIEW]: Exception: " + e.ToString()); } return new Byte[0]; }
protected string GetObjectPhysicsDataHandler(string request, string path, string param, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { // m_log.DebugFormat("[ASSETCAPS] Got a GetObjectPhysicsData Packet {0}.", request); OSDMap resp = new OSDMap(); OSDMap requestmap = (OSDMap)OSDParser.DeserializeLLSDXml(Utils.StringToBytes(request)); OSDArray itemsRequested = (OSDArray)requestmap["object_ids"]; foreach (OSDUUID osdItemId in itemsRequested) { UUID itemId = osdItemId.AsUUID(); SceneObjectPart item = m_Scene.GetSceneObjectPart(itemId); if ((item != null) && (item.PhysActor != null)) { Physics.Manager.IMaterial material = item.PhysActor.Properties.Material; OSDMap object_data = new OSDMap(); object_data["PhysicsShapeType"] = (byte)item.Shape.PreferredPhysicsShape; // obj.PhysicsShapeType; object_data["Density"] = material.Density; // obj.Density; object_data["Friction"] = material.StaticFriction; // obj.Friction; object_data["Restitution"] = material.Restitution; // obj.Restitution; object_data["GravityMultiplier"] = 1.0f; // material.obj.GravityModifier; resp[itemId.ToString()] = object_data; } } string response = OSDParser.SerializeLLSDXmlString(resp); // m_log.DebugFormat("[ASSETCAPS] Sending a GetObjectPhysicsData Response {0}.", response); return(response); }
/// <summary> /// Try all the registered xmlrpc handlers when an xmlrpc request is received. /// Sends back an XMLRPC unknown request response if no handler is registered for the requested method. /// </summary> /// <param name="request"></param> /// <param name="response"></param> byte [] HandleXmlRpcRequests(OSHttpRequest request, OSHttpResponse response) { string requestBody = HttpServerHandlerHelpers.ReadString(request.InputStream); requestBody = requestBody.Replace("<base64></base64>", ""); string responseString = string.Empty; XmlRpcRequest xmlRprcRequest = null; try { xmlRprcRequest = (XmlRpcRequest)(new XmlRpcRequestDeserializer()).Deserialize(requestBody); } catch (XmlException e) { MainConsole.Instance.WarnFormat( "[Base HTTP server]: Got XMLRPC request with invalid XML from {0}. XML was '{1}'. Sending blank response. Exception: {2}", request.RemoteIPEndPoint, requestBody, e.ToString()); } if (xmlRprcRequest != null) { string methodName = xmlRprcRequest.MethodName; if (methodName != null) { xmlRprcRequest.Params.Add(request.RemoteIPEndPoint); // Param[1] XmlRpcResponse xmlRpcResponse; XmlRpcMethod method; bool methodWasFound; lock (m_rpcHandlers) methodWasFound = m_rpcHandlers.TryGetValue(methodName, out method); if (methodWasFound) { xmlRprcRequest.Params.Add(request.Url); // Param[2] string xff = "X-Forwarded-For"; string xfflower = xff.ToLower(); foreach (string s in request.Headers.AllKeys) { if (s != null && s.Equals(xfflower)) { xff = xfflower; break; } } xmlRprcRequest.Params.Add(request.Headers.Get(xff)); // Param[3] try { xmlRpcResponse = method(xmlRprcRequest, request.RemoteIPEndPoint); } catch (Exception e) { string errorMessage = string.Format( "Requested method [{0}] from {1} threw exception: {2} {3}", methodName, request.RemoteIPEndPoint.Address, e.Message, e.StackTrace); MainConsole.Instance.ErrorFormat("[Base HTTP server]: {0}", errorMessage); // if the registered XmlRpc method threw an exception, we pass a fault-code along xmlRpcResponse = new XmlRpcResponse(); // Code probably set in accordance with http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php xmlRpcResponse.SetFault(-32603, errorMessage); } } else { xmlRpcResponse = new XmlRpcResponse(); // Code set in accordance with http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php xmlRpcResponse.SetFault( XmlRpcErrorCodes.SERVER_ERROR_METHOD, string.Format("Requested method [{0}] not found", methodName)); } response.ContentType = "text/xml"; responseString = XmlRpcResponseSerializer.Singleton.Serialize(xmlRpcResponse); } else { //HandleLLSDRequests(request, response); response.ContentType = "text/plain"; response.StatusCode = 404; response.StatusDescription = "Not Found"; responseString = "Not found"; MainConsole.Instance.ErrorFormat( "[Base HTTP server]: Handler not found for http request {0} {1}", request.HttpMethod, request.Url.PathAndQuery); } } byte [] buffer = Encoding.UTF8.GetBytes(responseString); response.SendChunked = false; response.ContentEncoding = Encoding.UTF8; return(buffer); }
public string owsHandler(string request, string path, string param, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { switch (httpRequest.QueryString["SERVICE"]) { case "WMS": if (httpRequest.QueryString["REQUEST"] == "GetMap") { //parse query string string[] layers = httpRequest.QueryString["LAYERS"].Split(','); BBox bbox = new BBox(httpRequest.QueryString["BBOX"]); int height = Int32.Parse(httpRequest.QueryString["HEIGHT"]); int width = Int32.Parse(httpRequest.QueryString["WIDTH"]); int elevation = Int32.Parse(httpRequest.QueryString["ELEVATION"]); string regionID = httpRequest.QueryString["REGIONID"]; foreach (MapRegion region in m_regions) { if (region.ID == regionID) { lock (region) { region.Elevation = elevation; region.MapRegionBBox = bbox; region.MapRegionImg = new MapRegionImage(width, height); region.initialize(layers); Bitmap queryImg = region.generateMapRegionImg(); System.IO.MemoryStream stream = new System.IO.MemoryStream(); queryImg.Save(stream, System.Drawing.Imaging.ImageFormat.Png); queryImg.Dispose(); byte[] byteImage = stream.ToArray(); stream.Close(); stream.Dispose(); httpResponse.ContentType = "image/png"; return(Convert.ToBase64String(byteImage)); } } } httpResponse.ContentType = "text/plain"; return("Something unexpected occurs!"); } else if (httpRequest.QueryString["REQUEST"] == "GetCapabilities") { httpResponse.ContentType = "text/xml"; string capDes = ""; TextReader textReader = new StreamReader("Capability.xml"); capDes = textReader.ReadToEnd(); textReader.Close(); return(capDes); } else { return("Sorry, the request method is not supported by this service."); } //case "WFS": // if (httpRequest.QueryString["REQUEST"] == "GetFeature") // { // if ((httpRequest.QueryString["TypeName"] == "agent")) // { // switch (httpRequest.QueryString["FORMAT"]) // { // case "text": // return m_agentLayer.GetFeaturesByText(); // case "xml": // return m_agentLayer.GetFeaturesByXML(); // } // } // else // return "Query String is not supported"; // } // break; //default: // return "Unsupport Service"; } return("Unsupported Service"); }
public Dictionary <string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary <string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary <string, object> (); var estateConnector = Framework.Utilities.DataManager.RequestPlugin <IEstateConnector> (); var user = Authenticator.GetAuthentication(httpRequest); string estate; if (httpRequest.Query.ContainsKey("EstateID")) { estate = httpRequest.Query ["EstateID"].ToString(); } else { if (requestParameters.ContainsKey("EstateID")) { estate = requestParameters ["EstateID"].ToString(); } else { response = "<h3>Estate details not supplied, redirecting to main page</h3>" + "<script>" + "setTimeout(function() {window.location.href = \"/?page=user_estatemanager\";}, 5000);" + "</script>"; return(null); } } var estateid = -1; int.TryParse(estate, out estateid); if (requestParameters.ContainsKey("Delete")) { response = "<h3>This estate would have been deleted... but not yet</h3>"; return(null); } var estateSettings = estateConnector.GetEstateIDSettings(estateid); if (estateSettings != null) { if (requestParameters.ContainsKey("Submit")) { var estateOwner = requestParameters ["EstateOwner"].ToString(); estateSettings.EstateName = requestParameters ["EstateName"].ToString(); estateSettings.EstateOwner = UUID.Parse(estateOwner); estateSettings.PricePerMeter = int.Parse(requestParameters ["PricePerMeter"].ToString()); estateSettings.PublicAccess = requestParameters ["PublicAccess"].ToString() == "1"; estateSettings.TaxFree = requestParameters ["TaxFree"].ToString() == "1"; estateSettings.AllowVoice = requestParameters ["AllowVoice"].ToString() == "1"; estateSettings.AllowDirectTeleport = requestParameters ["AllowDirectTeleport"].ToString() == "1"; estateConnector.SaveEstateSettings(estateSettings); response = "Estate details have been updated." + "<script>" + "setTimeout(function() {window.location.href = \"/?page=user_estatemanager\";}, 5000);" + "</script>"; return(null); } // get selected estate details if (estateSettings != null) { vars.Add("EstateID", estateSettings.EstateID.ToString()); vars.Add("EstateName", estateSettings.EstateName); vars.Add("PricePerMeter", estateSettings.PricePerMeter.ToString()); vars.Add("PublicAccess", WebHelpers.YesNoSelection(translator, estateSettings.PublicAccess)); vars.Add("AllowVoice", WebHelpers.YesNoSelection(translator, estateSettings.AllowVoice)); vars.Add("TaxFree", WebHelpers.YesNoSelection(translator, estateSettings.TaxFree)); vars.Add("AllowDirectTeleport", WebHelpers.YesNoSelection(translator, estateSettings.AllowDirectTeleport)); vars.Add("Submit", translator.GetTranslatedString("SaveUpdates")); } } // labels vars.Add("UserName", user.Name); vars.Add("EstateManagerText", translator.GetTranslatedString("MenuEstateManager")); vars.Add("EstateNameText", translator.GetTranslatedString("EstateText")); vars.Add("EstateOwnerText", translator.GetTranslatedString("MenuOwnerTitle")); vars.Add("PricePerMeterText", translator.GetTranslatedString("PricePerMeterText")); vars.Add("PublicAccessText", translator.GetTranslatedString("PublicAccessText")); vars.Add("AllowVoiceText", translator.GetTranslatedString("AllowVoiceText")); vars.Add("TaxFreeText", translator.GetTranslatedString("TaxFreeText")); vars.Add("AllowDirectTeleportText", translator.GetTranslatedString("AllowDirectTeleportText")); vars.Add("Cancel", translator.GetTranslatedString("Cancel")); vars.Add("InfoMessage", ""); return(vars); }
public bool AttemptFindPage(string filename, ref OSHttpResponse httpResponse, out string text) { httpResponse.ContentType = "text/html"; text = File.ReadAllText("html/regionprofile/index.html"); return(true); }
public override byte[] Handle(string path, Stream requestData, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { StreamReader sr = new StreamReader(requestData); string body = sr.ReadToEnd(); sr.Close(); body = body.Trim(); //m_log.DebugFormat("[XXX]: query String: {0}", body); try { Dictionary <string, object> request = WebUtils.ParseQueryString(body); if (!request.ContainsKey("METHOD")) { return(FailureResult()); } string method = request["METHOD"].ToString(); IGridRegistrationService urlModule = m_registry.RequestModuleInterface <IGridRegistrationService>(); switch (method) { case "getavatar": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.Low)) { return(FailureResult()); } } return(GetAvatar(request)); case "setavatar": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.High)) { return(FailureResult()); } } return(SetAvatar(request)); case "resetavatar": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.High)) { return(FailureResult()); } } return(ResetAvatar(request)); case "setitems": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(SetItems(request)); case "removeitems": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(RemoveItems(request)); case "cachewearabledata": if (urlModule != null) { if (!urlModule.CheckThreatLevel("", m_regionHandle, method, ThreatLevel.Medium)) { return(FailureResult()); } } return(CacheWearableData(request)); } m_log.DebugFormat("[AVATAR HANDLER]: unknown method request: {0}", method); } catch (Exception e) { m_log.Debug("[AVATAR HANDLER]: Exception {0}" + e); } return(FailureResult()); }
/// <summary> /// Handle a request from the client for a Uri to upload a baked texture. /// </summary> /// <param name="request"></param> /// <param name="path"></param> /// <param name="param"></param> /// <param name="httpRequest"></param> /// <param name="httpResponse"></param> /// <returns>The upload response if the request is successful, null otherwise.</returns> public string UploadBakedTexture( string request, string path, string param, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { try { IAssetCache assetCache = m_Scene.CommsManager.AssetCache; IJ2KDecoder layerDecoder = m_Scene.RequestModuleInterface <IJ2KDecoder>(); String uploaderPath = m_Caps.CapsBase + "/" + UUID.Random(); BakedTextureUploader uploader = new BakedTextureUploader(m_Caps, uploaderPath, assetCache, layerDecoder); m_Caps.HttpListener.AddStreamHandler(new BinaryStreamHandler("POST", uploaderPath, uploader.BakedTextureUploaded)); string uploaderURL = m_Caps.HttpListener.ServerURI + uploaderPath; LLSDAssetUploadResponse uploadResponse = new LLSDAssetUploadResponse(); uploadResponse.uploader = uploaderURL; uploadResponse.state = "upload"; return(LLSDHelpers.SerializeLLSDReply(uploadResponse)); } catch (Exception e) { m_log.ErrorFormat("[UPLOAD BAKED TEXTURE HANDLER]: {0}{1}", e.Message, e.StackTrace); } return(null); }
protected string GetObjectCostHandler(string request, string path, string param, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { // m_log.DebugFormat("[ASSETCAPS] Got a GetObjectCost Packet {0}.", request); OSDMap resp = new OSDMap(); OSDMap requestmap = (OSDMap)OSDParser.DeserializeLLSDXml(Utils.StringToBytes(request)); OSDArray itemsRequested = (OSDArray)requestmap["object_ids"]; foreach (OSDUUID osdItemId in itemsRequested) { UUID itemId = osdItemId.AsUUID(); SceneObjectPart item = m_Scene.GetSceneObjectPart(itemId); PhysicsActor physActor; if (item != null) { SceneObjectGroup parent = item.ParentGroup; OSDMap object_data = new OSDMap(); object_data["linked_set_resource_cost"] = parent.LandImpact; object_data["resource_cost"] = item.ServerWeight; physActor = item.PhysActor; if (physActor != null) { object_data["physics_cost"] = (float)physActor.TotalComplexity; } else { object_data["physics_cost"] = 0.0; } physActor = parent.RootPart.PhysActor; if (physActor != null) { object_data["linked_set_physics_cost"] = (float)physActor.TotalComplexity; } else { object_data["linked_set_physics_cost"] = 0.0; } resp[itemId.ToString()] = object_data; } } string response = OSDParser.SerializeLLSDXmlString(resp); // m_log.DebugFormat("[ASSETCAPS] Sending a GetObjectCost Response {0}.", response); return(response); }
/// <summary> /// This methods is the start of incoming HTTP request handling. /// </summary> /// <param name="context"></param> public virtual void HandleRequest(HttpListenerContext context) { HttpListenerRequest request = context.Request; using (HttpListenerResponse response = context.Response) { OSHttpRequest req = new OSHttpRequest(context); OSHttpResponse resp = new OSHttpResponse(context); if (request.HttpMethod == string.Empty) // Can't handle empty requests, not wasting a thread { byte [] buffer = GetHTML500(response); response.ContentLength64 = buffer.LongLength; response.Close(buffer, true); return; } response.KeepAlive = false; response.AddHeader("X-Powered-By", "WhiteCore Services"); string requestMethod = request.HttpMethod; string uriString = request.RawUrl; int requestStartTick = Environment.TickCount; // Will be adjusted later on. int requestEndTick = requestStartTick; IStreamedRequestHandler requestHandler = null; try { System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US", true); string path = request.RawUrl; string handlerKey = GetHandlerKey(request.HttpMethod, path); byte [] buffer = null; if ((request.ContentType == "application/xml" || request.ContentType == "text/xml") && GetXmlRPCHandler(request.RawUrl) != null) { buffer = HandleXmlRpcRequests(req, resp); } else if (TryGetStreamHandler(handlerKey, out requestHandler)) { response.ContentType = requestHandler.ContentType; // Lets do this defaulting before in case handler has varying content type. buffer = requestHandler.Handle(path, request.InputStream, req, resp); } request.InputStream.Close(); try { if (buffer != null) { if (request.ProtocolVersion.Minor == 0) { //HTTP 1.0... no chunking response.ContentLength64 = buffer.Length; using (Stream stream = response.OutputStream) { HttpServerHandlerHelpers.WriteNonChunked(stream, buffer); } } else { response.SendChunked = true; using (Stream stream = response.OutputStream) { HttpServerHandlerHelpers.WriteChunked(stream, buffer); } } //response.ContentLength64 = buffer.LongLength; response.Close(); } else { response.Close(new byte [0], true); } } catch (Exception ex) { if (!(ex is HttpListenerException) || !HttpListenerManager.IGNORE_ERROR_CODES.Contains(((HttpListenerException)ex).ErrorCode)) { MainConsole.Instance.WarnFormat( "[Base HTTP server]: HandleRequest failed to write all data to the stream: {0}", ex.ToString()); } response.Abort(); } requestEndTick = Environment.TickCount; } catch (Exception e) { MainConsole.Instance.ErrorFormat("[Base HTTP server]: HandleRequest() threw {0} ", e.ToString()); response.Abort(); } finally { // Every month or so this will wrap and give bad numbers, not really a problem // since its just for reporting int tickdiff = requestEndTick - requestStartTick; if (tickdiff > 3000 && requestHandler != null) { MainConsole.Instance.DebugFormat( "[Base HTTP server]: Slow handling of {0} {1} took {2}ms", requestMethod, uriString, tickdiff); } else if (MainConsole.Instance.IsTraceEnabled) { MainConsole.Instance.TraceFormat( "[Base HTTP server]: Handling {0} {1} took {2}ms", requestMethod, uriString, tickdiff); } } } }
public bool AttemptFindPage(string filename, ref OSHttpResponse httpResponse, out string text) { text = ""; return(false); }
/// <summary> /// Received from the viewer if a user has changed the url of a media texture. /// </summary> /// <param name="request"></param> /// <param name="path"></param> /// <param name="param"></param> /// <param name="httpRequest">/param> /// <param name="httpResponse">/param> /// <returns></returns> protected string HandleObjectMediaNavigateMessage( string request, string path, string param, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { // m_log.DebugFormat("[MOAP]: Got ObjectMediaNavigate request [{0}]", request); OSDMap osd = (OSDMap)OSDParser.DeserializeLLSDXml(request); ObjectMediaNavigateMessage omn = new ObjectMediaNavigateMessage(); omn.Deserialize(osd); UUID primId = omn.PrimID; SceneObjectPart part = m_scene.GetSceneObjectPart(primId); if (null == part) { m_log.WarnFormat( "[MOAP]: Received an ObjectMediaNavigateMessage for prim {0} but this doesn't exist in region {1}", primId, m_scene.RegionInfo.RegionName); return(string.Empty); } UUID agentId = default(UUID); lock (m_omuCapUsers) agentId = m_omuCapUsers[path]; if (!m_scene.Permissions.CanInteractWithPrimMedia(agentId, part.UUID, omn.Face)) { return(string.Empty); } // m_log.DebugFormat( // "[MOAP]: Received request to update media entry for face {0} on prim {1} {2} to {3}", // omn.Face, part.Name, part.UUID, omn.URL); // If media has never been set for this prim, then just return. if (null == part.Shape.Media) { return(string.Empty); } MediaEntry me = null; lock (part.Shape.Media) me = part.Shape.Media[omn.Face]; // Do the same if media has not been set up for a specific face if (null == me) { return(string.Empty); } if (me.EnableWhiteList) { if (!CheckUrlAgainstWhitelist(omn.URL, me.WhiteList)) { // m_log.DebugFormat( // "[MOAP]: Blocking change of face {0} on prim {1} {2} to {3} since it's not on the enabled whitelist", // omn.Face, part.Name, part.UUID, omn.URL); return(string.Empty); } } me.CurrentURL = omn.URL; UpdateMediaUrl(part, agentId); part.ScheduleFullUpdate(); part.TriggerScriptChangedEvent(Changed.MEDIA); return(OSDParser.SerializeLLSDXmlString(new OSD())); }
public Dictionary <string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary <string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary <string, object> (); // homescreen login string error = ""; if (requestParameters.ContainsKey("username") && requestParameters.ContainsKey("password")) { string username = requestParameters ["username"].ToString(); string password = requestParameters ["password"].ToString(); ILoginService loginService = webInterface.Registry.RequestModuleInterface <ILoginService> (); if (loginService.VerifyClient(UUID.Zero, username, "UserAccount", password)) { UUID sessionID = UUID.Random(); UserAccount account = webInterface.Registry.RequestModuleInterface <IUserAccountService> () .GetUserAccount(null, username); Authenticator.AddAuthentication(sessionID, account); if (account.UserLevel > 0) { Authenticator.AddAdminAuthentication(sessionID, account); } httpResponse.AddCookie(new System.Web.HttpCookie("SessionID", sessionID.ToString()) { Expires = DateTime.MinValue, Path = "" }); response = "<h3>Successfully logged in</h3>" + "<script language=\"javascript\">" + "setTimeout(function() {window.location.href = \"index.html\";}, 0);" + "</script>"; } else { response = "<h3>Failed to verify user name and password</h3>"; } return(null); } // Tooltips Urls vars.Add("TooltipsWelcomeScreen", translator.GetTranslatedString("TooltipsWelcomeScreen")); vars.Add("TooltipsWorldMap", translator.GetTranslatedString("TooltipsWorldMap")); // Index Page vars.Add("HomeText", translator.GetTranslatedString("HomeText")); vars.Add("HomeTextWelcome", translator.GetTranslatedString("HomeTextWelcome")); vars.Add("HomeTextTips", translator.GetTranslatedString("HomeTextTips")); vars.Add("WelcomeScreen", translator.GetTranslatedString("WelcomeScreen")); vars.Add("WelcomeToText", translator.GetTranslatedString("WelcomeToText")); // login vars.Add("UserLogin", !Authenticator.CheckAuthentication(httpRequest)); vars.Add("ErrorMessage", error); vars.Add("Login", translator.GetTranslatedString("Login")); vars.Add("UserNameText", translator.GetTranslatedString("UserName")); vars.Add("PasswordText", translator.GetTranslatedString("Password")); vars.Add("ForgotPassword", translator.GetTranslatedString("ForgotPassword")); vars.Add("Submit", translator.GetTranslatedString("Login")); var settings = webInterface.GetWebUISettings(); if (PagesMigrator.RequiresUpdate() && PagesMigrator.CheckWhetherIgnoredVersionUpdate(settings.LastPagesVersionUpdateIgnored)) { vars.Add("PagesUpdateRequired", translator.GetTranslatedString("Pages") + " " + translator.GetTranslatedString("DefaultsUpdated")); } else { vars.Add("PagesUpdateRequired", ""); } if (SettingsMigrator.RequiresUpdate() && SettingsMigrator.CheckWhetherIgnoredVersionUpdate(settings.LastSettingsVersionUpdateIgnored)) { vars.Add("SettingsUpdateRequired", translator.GetTranslatedString("Settings") + " " + translator.GetTranslatedString("DefaultsUpdated")); } else { vars.Add("SettingsUpdateRequired", ""); } vars.Add("ShowSlideshowBar", !settings.HideSlideshowBar); // user setup news inclusion if (settings.LocalFrontPage == "") { vars.Add("LocalPage", false); vars.Add("LocalFrontPage", ""); } else { vars.Add("LocalPage", true); vars.Add("LocalFrontPage", settings.LocalFrontPage); } return(vars); }
public override byte[] Handle(string path, Stream requestData, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { StreamReader sr = new StreamReader(requestData); string body = sr.ReadToEnd(); sr.Close(); body = body.Trim(); //MainConsole.Instance.DebugFormat("[XXX]: query String: {0}", body); try { Dictionary <string, object> request = WebUtils.ParseQueryString(body); if (!request.ContainsKey("METHOD")) { return(FailureResult()); } IGridRegistrationService urlModule = m_registry.RequestModuleInterface <IGridRegistrationService>(); string method = request["METHOD"].ToString(); switch (method) { case "AddAbuseReport": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.Low)) { return(FailureResult()); } } return(AddAbuseReport(request)); case "GetAbuseReport": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(GetAbuseReport(request)); case "UpdateAbuseReport": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(UpdateAbuseReport(request)); case "UpdateAbuseReports": if (urlModule != null) { if (!urlModule.CheckThreatLevel(m_SessionID, method, ThreatLevel.High)) { return(FailureResult()); } } return(GetAbuseReports(request)); } MainConsole.Instance.DebugFormat("[ABUSEREPORT HANDLER]: unknown method {0} request {1}", method.Length, method); } catch (Exception e) { MainConsole.Instance.DebugFormat("[ABUSEREPORT HANDLER]: Exception {0}", e); } return(FailureResult()); }
public PollServiceAssetEventArgs(string uri, UUID pId, Scene scene, string HGAssetSVC) : base(null, uri, null, null, null, null, pId, int.MaxValue) { m_scene = scene; m_hgassets = HGAssetSVC; HasEvents = (requestID, agentID) => { lock (responses) { return(responses.ContainsKey(requestID)); } }; Drop = (requestID, y) => { lock (responses) { responses.Remove(requestID); lock (dropedResponses) dropedResponses.Add(requestID); } }; GetEvents = (requestID, y) => { lock (responses) { try { OSHttpResponse response = responses[requestID].osresponse; if (response.Priority < 0) { response.Priority = 0; } Hashtable lixo = new Hashtable(1); lixo["h"] = response; return(lixo); } finally { responses.Remove(requestID); } } }; // x is request id, y is request data hashtable Request = (requestID, request) => { APollRequest reqinfo = new APollRequest(); reqinfo.thepoll = this; reqinfo.reqID = requestID; reqinfo.request = request; m_workerpool.Enqueue(reqinfo); return(null); }; // this should never happen except possible on shutdown NoEvents = (x, y) => { /* * lock (requests) * { * Hashtable request = requests.Find(id => id["RequestID"].ToString() == x.ToString()); * requests.Remove(request); * } */ Hashtable response = new Hashtable(); response["int_response_code"] = 500; response["str_response_string"] = "timeout"; response["content_type"] = "text/plain"; response["keepalive"] = false; return(response); }; }
public Dictionary <string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary <string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary <string, object>(); if (httpRequest.Query.ContainsKey("regionid")) { GridRegion region = webInterface.Registry.RequestModuleInterface <IGridService>().GetRegionByUUID(null, UUID .Parse (httpRequest .Query [ "regionid" ] .ToString ())); IEstateConnector estateConnector = Framework.Utilities.DataManager.RequestPlugin <IEstateConnector>(); EstateSettings estate = estateConnector.GetEstateSettings(region.RegionID); vars.Add("RegionName", region.RegionName); vars.Add("OwnerUUID", estate.EstateOwner); var estateOwnerAccount = webInterface.Registry.RequestModuleInterface <IUserAccountService>(). GetUserAccount(null, estate.EstateOwner); vars.Add("OwnerName", estateOwnerAccount == null ? "No account found" : estateOwnerAccount.Name); vars.Add("RegionLocX", region.RegionLocX / Constants.RegionSize); vars.Add("RegionLocY", region.RegionLocY / Constants.RegionSize); vars.Add("RegionSizeX", region.RegionSizeX); vars.Add("RegionSizeY", region.RegionSizeY); vars.Add("RegionType", region.RegionType); vars.Add("RegionOnline", (region.Flags & (int)RegionFlags.RegionOnline) == (int)RegionFlags.RegionOnline ? translator.GetTranslatedString("Online") : translator.GetTranslatedString("Offline")); IAgentInfoService agentInfoService = webInterface.Registry.RequestModuleInterface <IAgentInfoService>(); IUserAccountService userService = webInterface.Registry.RequestModuleInterface <IUserAccountService>(); if (agentInfoService != null) { List <UserInfo> usersInRegion = agentInfoService.GetUserInfos(region.RegionID); vars.Add("NumberOfUsersInRegion", usersInRegion.Count); List <Dictionary <string, object> > users = new List <Dictionary <string, object> >(); foreach (var client in usersInRegion) { UserAccount account = userService.GetUserAccount(null, client.UserID); if (account == null) { continue; } Dictionary <string, object> user = new Dictionary <string, object>(); user.Add("UserNameText", translator.GetTranslatedString("UserNameText")); user.Add("UserUUID", client.UserID); user.Add("UserName", account.Name); users.Add(user); } vars.Add("UsersInRegion", users); } else { vars.Add("NumberOfUsersInRegion", 0); vars.Add("UsersInRegion", new List <Dictionary <string, object> >()); } IDirectoryServiceConnector directoryConnector = Framework.Utilities.DataManager.RequestPlugin <IDirectoryServiceConnector>(); if (directoryConnector != null) { List <LandData> data = directoryConnector.GetParcelsByRegion(0, 10, region.RegionID, UUID.Zero, ParcelFlags.None, ParcelCategory.Any); List <Dictionary <string, object> > parcels = new List <Dictionary <string, object> >(); foreach (var p in data) { Dictionary <string, object> parcel = new Dictionary <string, object>(); parcel.Add("ParcelNameText", translator.GetTranslatedString("ParcelNameText")); parcel.Add("ParcelOwnerText", translator.GetTranslatedString("ParcelOwnerText")); parcel.Add("ParcelUUID", p.GlobalID); parcel.Add("ParcelName", p.Name); parcel.Add("ParcelOwnerUUID", p.OwnerID); IUserAccountService accountService = webInterface.Registry.RequestModuleInterface <IUserAccountService>(); if (accountService != null) { var account = accountService.GetUserAccount(null, p.OwnerID); if (account == null) { parcel.Add("ParcelOwnerName", translator.GetTranslatedString("NoAccountFound")); } else { parcel.Add("ParcelOwnerName", account.Name); } } parcels.Add(parcel); } vars.Add("ParcelInRegion", parcels); vars.Add("NumberOfParcelsInRegion", parcels.Count); } IWebHttpTextureService webTextureService = webInterface.Registry. RequestModuleInterface <IWebHttpTextureService>(); if (webTextureService != null && region.TerrainMapImage != UUID.Zero) { vars.Add("RegionImageURL", webTextureService.GetTextureURL(region.TerrainMapImage)); } else { vars.Add("RegionImageURL", "images/icons/no_picture.jpg"); } // Menu Region vars.Add("MenuRegionTitle", translator.GetTranslatedString("MenuRegionTitle")); vars.Add("MenuParcelTitle", translator.GetTranslatedString("MenuParcelTitle")); vars.Add("MenuOwnerTitle", translator.GetTranslatedString("MenuOwnerTitle")); vars.Add("RegionInformationText", translator.GetTranslatedString("RegionInformationText")); vars.Add("OwnerNameText", translator.GetTranslatedString("OwnerNameText")); vars.Add("RegionLocationText", translator.GetTranslatedString("RegionLocationText")); vars.Add("RegionSizeText", translator.GetTranslatedString("RegionSizeText")); vars.Add("RegionNameText", translator.GetTranslatedString("RegionNameText")); vars.Add("RegionTypeText", translator.GetTranslatedString("RegionTypeText")); vars.Add("RegionInfoText", translator.GetTranslatedString("RegionInfoText")); vars.Add("RegionOnlineText", translator.GetTranslatedString("RegionOnlineText")); vars.Add("NumberOfUsersInRegionText", translator.GetTranslatedString("NumberOfUsersInRegionText")); vars.Add("ParcelsInRegionText", translator.GetTranslatedString("ParcelsInRegionText")); // Style Switcher vars.Add("styles1", translator.GetTranslatedString("styles1")); vars.Add("styles2", translator.GetTranslatedString("styles2")); vars.Add("styles3", translator.GetTranslatedString("styles3")); vars.Add("styles4", translator.GetTranslatedString("styles4")); vars.Add("styles5", translator.GetTranslatedString("styles5")); vars.Add("StyleSwitcherStylesText", translator.GetTranslatedString("StyleSwitcherStylesText")); vars.Add("StyleSwitcherLanguagesText", translator.GetTranslatedString("StyleSwitcherLanguagesText")); vars.Add("StyleSwitcherChoiceText", translator.GetTranslatedString("StyleSwitcherChoiceText")); // Language Switcher vars.Add("en", translator.GetTranslatedString("en")); vars.Add("fr", translator.GetTranslatedString("fr")); vars.Add("de", translator.GetTranslatedString("de")); vars.Add("it", translator.GetTranslatedString("it")); vars.Add("es", translator.GetTranslatedString("es")); } return(vars); }
public override byte[] Handle(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { const int ASSETS_PER_PAGE = 25; const string HEADER = "<html><head><title>Asset Server</title></head><body>"; const string TABLE_HEADER = "<table><tr><th>Name</th><th>Description</th><th>Type</th><th>ID</th><th>Temporary</th><th>SHA-1</th></tr>"; const string TABLE_FOOTER = "</table>"; const string FOOTER = "</body></html>"; UUID authToken = Utils.GetAuthToken(httpRequest); StringBuilder html = new StringBuilder(); int start = 0; uint page = 0; if (!String.IsNullOrEmpty(httpRequest.Url.Query)) { NameValueCollection query = HttpUtility.ParseQueryString(httpRequest.Url.Query); if (!String.IsNullOrEmpty(query["page"]) && UInt32.TryParse(query["page"], out page)) { start = (int)page * ASSETS_PER_PAGE; } } html.AppendLine(HEADER); html.AppendLine("<p>"); if (page > 0) { html.AppendFormat("<a href=\"{0}?page={1}\">< Previous Page</a> | ", httpRequest.RawUrl, page - 1); } html.AppendFormat("<a href=\"{0}?page={1}\">Next Page ></a>", httpRequest.RawUrl, page + 1); html.AppendLine("</p>"); html.AppendLine(TABLE_HEADER); m_server.StorageProvider.ForEach( delegate(AssetMetadata data) { if (m_server.AuthorizationProvider.IsMetadataAuthorized(authToken, data.FullID)) { html.AppendLine(String.Format( "<tr><td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td><td>{4}</td><td>{5}</td></tr>", data.Name, data.Description, data.ContentType, data.ID, data.Temporary, BitConverter.ToString(data.SHA1).Replace("-", String.Empty))); } else { html.AppendLine(String.Format( "<tr><td>[Protected Asset]</td><td> </td><td> </td><td>{0}</td><td>{1}</td><td> </td></tr>", data.ID, data.Temporary)); } }, start, ASSETS_PER_PAGE ); html.AppendLine(TABLE_FOOTER); html.AppendLine(FOOTER); byte[] responseData = System.Text.Encoding.UTF8.GetBytes(html.ToString()); httpResponse.StatusCode = (int)HttpStatusCode.OK; //httpResponse.Body.Write(responseData, 0, responseData.Length); //httpResponse.Body.Flush(); return(responseData); }
public byte[] MapRequest(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { //Remove the /MapService/ string uri = httpRequest.RawUrl.Remove(0, 12); if (!uri.StartsWith("map")) { if (uri == "") { string resp = "<ListBucketResult xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\">" + "<Name>map.secondlife.com</Name>" + "<Prefix/>" + "<Marker/>" + "<MaxKeys>1000</MaxKeys>" + "<IsTruncated>true</IsTruncated>"; List <GridRegion> regions = m_gridService.GetRegionRange(null, (1000 * Constants.RegionSize) - (8 * Constants.RegionSize), (1000 * Constants.RegionSize) + (8 * Constants.RegionSize), (1000 * Constants.RegionSize) - (8 * Constants.RegionSize), (1000 * Constants.RegionSize) + (8 * Constants.RegionSize)); foreach (var region in regions) { resp += "<Contents><Key>map-1-" + region.RegionLocX / 256 + "-" + region.RegionLocY / 256 + "-objects.jpg</Key>" + "<LastModified>2012-07-09T21:26:32.000Z</LastModified></Contents>"; } resp += "</ListBucketResult>"; httpResponse.ContentType = "application/xml"; return(System.Text.Encoding.UTF8.GetBytes(resp)); } using (MemoryStream imgstream = new MemoryStream()) { GridRegion region = m_registry.RequestModuleInterface <IGridService>().GetRegionByName(null, uri.Remove (4)); if (region == null) { region = m_registry.RequestModuleInterface <IGridService>().GetRegionByUUID(null, OpenMetaverse.UUID.Parse(uri.Remove(uri.Length - 4))); } // non-async because we know we have the asset immediately. byte[] mapasset = m_assetService.GetData(region.TerrainMapImage.ToString()); if (mapasset != null) { try { Image image = m_j2kDecoder.DecodeToImage(mapasset); if (image == null) { return(new byte[0]); } // Decode image to System.Drawing.Image EncoderParameters myEncoderParameters = new EncoderParameters(); myEncoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 95L); // Save bitmap to stream image.Save(imgstream, GetEncoderInfo("image/jpeg"), myEncoderParameters); image.Dispose(); // Write the stream to a byte array for output return(imgstream.ToArray()); } catch { } } } return(new byte[0]); } string[] splitUri = uri.Split('-'); byte[] jpeg = FindCachedImage(uri); if (jpeg.Length != 0) { httpResponse.ContentType = "image/jpeg"; return(jpeg); } try { int mapLayer = int.Parse(uri.Substring(4, 1)); int mapView = (int)Math.Pow(2, (mapLayer - 1)); int regionX = int.Parse(splitUri[2]); int regionY = int.Parse(splitUri[3]); int distance = (int)Math.Pow(2, mapLayer); int maxRegionSize = m_gridService.GetMaxRegionSize(); if (maxRegionSize == 0) { maxRegionSize = 8192; } List <GridRegion> regions = m_gridService.GetRegionRange(null, ((regionX) * Constants.RegionSize) - maxRegionSize, ((regionX + distance) * Constants.RegionSize) + maxRegionSize, ((regionY) * Constants.RegionSize) - maxRegionSize, ((regionY + distance) * Constants.RegionSize) + maxRegionSize); Bitmap mapTexture = BuildMapTile(mapLayer, regionX, regionY, regions); jpeg = CacheMapTexture(mapLayer, regionX, regionY, mapTexture); DisposeTexture(mapTexture); } catch { } httpResponse.ContentType = "image/jpeg"; return(jpeg); }
public string GetRegionInfoHandlerRegions(OSHttpResponse httpResponse) { RestXmlWriter rxw = new RestXmlWriter(new StringWriter()); // regions info rxw.WriteStartElement(String.Empty, "regions", String.Empty); { // regions info: number of regions rxw.WriteStartAttribute(String.Empty, "number", String.Empty); rxw.WriteValue(App.SceneManager.Scenes.Count); rxw.WriteEndAttribute(); // regions info: max number of regions rxw.WriteStartAttribute(String.Empty, "max", String.Empty); if (App.ConfigSource.Source.Configs["RemoteAdmin"] != null) { rxw.WriteValue(App.ConfigSource.Source.Configs["RemoteAdmin"].GetInt("region_limit", -1)); } else { rxw.WriteValue(-1); } rxw.WriteEndAttribute(); // regions info: region foreach (Scene s in App.SceneManager.Scenes) { rxw.WriteStartElement(String.Empty, "region", String.Empty); rxw.WriteStartAttribute(String.Empty, "uuid", String.Empty); rxw.WriteString(s.RegionInfo.RegionID.ToString()); rxw.WriteEndAttribute(); rxw.WriteStartAttribute(String.Empty, "name", String.Empty); rxw.WriteString(s.RegionInfo.RegionName); rxw.WriteEndAttribute(); rxw.WriteStartAttribute(String.Empty, "x", String.Empty); rxw.WriteValue(s.RegionInfo.RegionLocX); rxw.WriteEndAttribute(); rxw.WriteStartAttribute(String.Empty, "y", String.Empty); rxw.WriteValue(s.RegionInfo.RegionLocY); rxw.WriteEndAttribute(); rxw.WriteStartAttribute(String.Empty, "external_hostname", String.Empty); rxw.WriteString(s.RegionInfo.ExternalHostName); rxw.WriteEndAttribute(); rxw.WriteStartAttribute(String.Empty, "master_name", String.Empty); rxw.WriteString(String.Format("{0} {1}", s.RegionInfo.MasterAvatarFirstName, s.RegionInfo.MasterAvatarLastName)); rxw.WriteEndAttribute(); rxw.WriteStartAttribute(String.Empty, "master_uuid", String.Empty); rxw.WriteString(s.RegionInfo.MasterAvatarAssignedUUID.ToString()); rxw.WriteEndAttribute(); rxw.WriteStartAttribute(String.Empty, "ip", String.Empty); rxw.WriteString(s.RegionInfo.InternalEndPoint.ToString()); rxw.WriteEndAttribute(); int users = s.GetAvatars().Count; rxw.WriteStartAttribute(String.Empty, "avatars", String.Empty); rxw.WriteValue(users); rxw.WriteEndAttribute(); rxw.WriteStartAttribute(String.Empty, "objects", String.Empty); rxw.WriteValue(s.Entities.Count - users); rxw.WriteEndAttribute(); rxw.WriteEndElement(); } } return(rxw.ToString()); }
byte[] MeshUploadFlagCAP(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { OSDMap data = new OSDMap(); IUserProfileInfo info = m_profileConnector.GetUserProfile(m_service.AgentID); data ["id"] = m_service.AgentID; data ["username"] = m_service.ClientCaps.AccountInfo.Name; data ["display_name"] = info.DisplayName; data ["display_name_next_update"] = Utils.UnixTimeToDateTime(0); data ["legacy_first_name"] = m_service.ClientCaps.AccountInfo.FirstName; data ["legacy_last_name"] = m_service.ClientCaps.AccountInfo.LastName; data ["mesh_upload_status"] = "valid"; // add if account has ability to upload mesh? bool isDisplayNameNDefault = (info.DisplayName == m_service.ClientCaps.AccountInfo.Name) || (info.DisplayName == m_service.ClientCaps.AccountInfo.FirstName + "." + m_service.ClientCaps.AccountInfo.LastName); data ["is_display_name_default"] = isDisplayNameNDefault; //Send back data return(OSDParser.SerializeLLSDXmlBytes(data)); }
private string OnNeighborRegionDown(Stream request, string path, string param, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { if (CheckAuthorization(httpRequest, httpResponse)) { return(UnpackMessageAndCallHandler(request, httpResponse, this.HandleNeighborDown)); } else { return("Unauthorized"); } }
public byte[] MapAPIRequest(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { byte[] response = MainServer.BlankResponse; string var = httpRequest.Query["var"].ToString(); if (path == "/MapAPI/get-region-coords-by-name") { string resp = "var {0} = {\"x\":{1},\"y\":{2}};"; string sim_name = httpRequest.Query["sim_name"].ToString(); var region = m_registry.RequestModuleInterface <IGridService>().GetRegionByName(null, sim_name); if (region == null) { resp = "var " + var + " = {error: true};"; } else { resp = "var " + var + " = {\"x\":" + region.RegionLocX + ",\"y\":" + region.RegionLocY + "};"; } response = System.Text.Encoding.UTF8.GetBytes(resp); httpResponse.ContentType = "text/javascript"; } else if (path == "/MapAPI/get-region-name-by-coords") { string resp = "var {0} = \"{1}\";"; int grid_x = int.Parse(httpRequest.Query["grid_x"].ToString()); int grid_y = int.Parse(httpRequest.Query["grid_y"].ToString()); var region = m_registry.RequestModuleInterface <IGridService>().GetRegionByPosition(null, grid_x * Constants.RegionSize, grid_y * Constants.RegionSize); if (region == null) { List <GridRegion> regions = m_gridService.GetRegionRange(null, (grid_x * Constants.RegionSize) - (m_gridService.GetMaxRegionSize()), (grid_x * Constants.RegionSize), (grid_y * Constants.RegionSize) - (m_gridService.GetMaxRegionSize()), (grid_y * Constants.RegionSize)); bool found = false; foreach (var r in regions) { if (r.PointIsInRegion(grid_x * Constants.RegionSize, grid_y * Constants.RegionSize)) { resp = string.Format(resp, var, r.RegionName); found = true; break; } } if (!found) { resp = "var " + var + " = {error: true};"; } } else { resp = string.Format(resp, var, region.RegionName); } response = System.Text.Encoding.UTF8.GetBytes(resp); httpResponse.ContentType = "text/javascript"; } return(response); }
public override byte [] Handle(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { string [] req = path.Split('/'); //Remove the /API/ //string method = httpRequest.RawUrl.Remove (0, 5); string method = req [2]; var httpMethod = httpRequest.HttpMethod; var parms = SplitParams(path); var body = HttpServerHandlerHelpers.ReadString(request); var response = new OSDMap(); var requestData = new OSDMap(); //string method = ""; if (body != "") { requestData = (OSDMap)OSDParser.DeserializeLLSDXml(body); if (requestData != "") { method = requestData ["Method"].AsString(); } } string authKey = httpRequest.Headers ["authentication"]; string reqKey = httpRequest.Query.ContainsKey("key") ? httpRequest.Query ["key"].ToString() : string.Empty; try { //Make sure that the person who is calling can access the api service if (requestData.ContainsKey("key")) { reqKey = requestData ["key"]; } verified = VerifyAuthentication(reqKey, authKey); response ["Verified"] = OSD.FromBoolean(verified); if (verified) { MainConsole.Instance.Debug("[API]: Request authorised"); if (httpMethod == "POST") { if (APIPostMethods.ContainsKey(method)) { var args = new object [] { requestData }; response = (OSDMap)APIPostMethods [method].Invoke(this, args); } } else if (method == "Image") { httpResponse.ContentType = "image/jpeg"; return(GetImages(parms)); // This will return a byte [] of the image data } else if (APIRestMethods.ContainsKey(method)) { var args = new object [] { parms }; response = (OSDMap)APIRestMethods [method].Invoke(this, args); } else { var error = string.Format("[API] Unsupported method called ({0})", method); MainConsole.Instance.Trace(error); response.Add("success", false); response.Add("response", OSD.FromString(error)); } } } catch (Exception e) { MainConsole.Instance.TraceFormat("[API] Exception calling method ({0})", method); response.Add("success", false); response.Add("response", OSD.FromString("Exception calling method : " + e)); } if (response.Count == 0) { response.Add("success", false); response.Add("response", OSD.FromString("No content")); } else if (!response.ContainsKey("success")) { response.Add("success", true); } string xmlString = OSDParser.SerializeLLSDXmlString(response); var encoding = new UTF8Encoding(); return(encoding.GetBytes(xmlString)); }
public Dictionary <string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary <string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary <string, object>(); var settings = webInterface.GetWebUISettings(); bool adminUser = Authenticator.CheckAdminAuthentication(httpRequest, Constants.USER_GOD_CUSTOMER_SERVICE); bool allowRegistration = settings.WebRegistration; bool anonymousLogins; // allow configuration to override the web settings var simBase = webInterface.Registry.RequestModuleInterface <ISimulationBase>(); IConfig loginServerConfig = simBase.ConfigSource.Configs["LoginService"]; if (loginServerConfig != null) { anonymousLogins = loginServerConfig.GetBoolean("AllowAnonymousLogin", allowRegistration); allowRegistration = (allowRegistration || anonymousLogins); } if (!adminUser && !allowRegistration) { vars.Add("ErrorMessage", ""); vars.Add("RegistrationText", translator.GetTranslatedString("RegistrationText")); vars.Add("RegistrationsDisabled", translator.GetTranslatedString("RegistrationsDisabled")); vars.Add("Registrations", false); vars.Add("NoRegistrations", true); return(vars); } if (requestParameters.ContainsKey("Submit")) { string AvatarName = requestParameters["AvatarName"].ToString(); string AvatarPassword = requestParameters["AvatarPassword"].ToString(); string AvatarPasswordCheck = requestParameters["AvatarPassword2"].ToString(); string FirstName = requestParameters["FirstName"].ToString(); string LastName = requestParameters["LastName"].ToString(); //removed - greythane - deemed not used //string UserAddress = requestParameters["UserAddress"].ToString(); //string UserZip = requestParameters["UserZip"].ToString(); string UserCity = requestParameters["UserCity"].ToString(); string UserEmail = requestParameters["UserEmail"].ToString(); string UserHomeRegion = requestParameters["UserHomeRegion"].ToString(); string UserDOBMonth = requestParameters["UserDOBMonth"].ToString(); string UserDOBDay = requestParameters["UserDOBDay"].ToString(); string UserDOBYear = requestParameters["UserDOBYear"].ToString(); string AvatarArchive = requestParameters.ContainsKey("AvatarArchive") ? requestParameters["AvatarArchive"].ToString() : ""; bool ToSAccept = requestParameters.ContainsKey("ToSAccept") && requestParameters["ToSAccept"].ToString() == "Accepted"; string UserType = requestParameters.ContainsKey("UserType") // only admins can set membership ? requestParameters ["UserType"].ToString() : "Resident"; // revise UserDOBMonth to a number UserDOBMonth = ShortMonthToNumber(UserDOBMonth); // revise Type flags int UserFlags = WebHelpers.UserTypeToUserFlags(UserType); // a bit of idiot proofing if (AvatarName == "") { response = "<h3>" + translator.GetTranslatedString("AvatarNameError") + "</h3>"; return(null); } if ((AvatarPassword == "") || (AvatarPassword != AvatarPasswordCheck)) { response = "<h3>" + translator.GetTranslatedString("AvatarPasswordError") + "</h3>"; return(null); } if (UserEmail == "") { response = "<h3>" + translator.GetTranslatedString("AvatarEmailError") + "</h3>"; return(null); } // Only one space is allowed in the name to seperate First and Last of the avatar name if (AvatarName.Split(' ').Length != 2) { response = "<h3>" + translator.GetTranslatedString("AvatarNameSpacingError") + "</h3>"; return(null); } // so far so good... if (ToSAccept) { AvatarPassword = Util.Md5Hash(AvatarPassword); IUserAccountService accountService = webInterface.Registry.RequestModuleInterface <IUserAccountService>(); UUID userID = UUID.Random(); string error = accountService.CreateUser(userID, settings.DefaultScopeID, AvatarName, AvatarPassword, UserEmail); if (error == "") { // set the user account type UserAccount account = accountService.GetUserAccount(null, userID); account.UserFlags = UserFlags; accountService.StoreUserAccount(account); // create and save agent info IAgentConnector con = Framework.Utilities.DataManager.RequestPlugin <IAgentConnector> (); con.CreateNewAgent(userID); IAgentInfo agent = con.GetAgent(userID); agent.OtherAgentInformation ["RLFirstName"] = FirstName; agent.OtherAgentInformation ["RLLastName"] = LastName; //agent.OtherAgentInformation ["RLAddress"] = UserAddress; agent.OtherAgentInformation ["RLCity"] = UserCity; //agent.OtherAgentInformation ["RLZip"] = UserZip; agent.OtherAgentInformation ["UserDOBMonth"] = UserDOBMonth; agent.OtherAgentInformation ["UserDOBDay"] = UserDOBDay; agent.OtherAgentInformation ["UserDOBYear"] = UserDOBYear; agent.OtherAgentInformation ["UserFlags"] = UserFlags; con.UpdateAgent(agent); // create user profile details IProfileConnector profileData = Framework.Utilities.DataManager.RequestPlugin <IProfileConnector> (); if (profileData != null) { IUserProfileInfo profile = profileData.GetUserProfile(userID); if (profile == null) { profileData.CreateNewProfile(userID); profile = profileData.GetUserProfile(userID); } if (AvatarArchive != "") { profile.AArchiveName = AvatarArchive; List <AvatarArchive> avarchives = webInterface.Registry.RequestModuleInterface <IAvatarAppearanceArchiver>().GetAvatarArchives(); UUID snapshotUUID = UUID.Zero; foreach (var archive in avarchives) { if (archive.FolderName == AvatarArchive) { snapshotUUID = archive.Snapshot; } } if (snapshotUUID != UUID.Zero) { profile.Image = snapshotUUID; } } profile.MembershipGroup = WebHelpers.UserFlagToType(UserFlags, webInterface.EnglishTranslator); // membership is english profile.IsNewUser = true; profileData.UpdateUserProfile(profile); } IAgentInfoService agentInfoService = webInterface.Registry.RequestModuleInterface <IAgentInfoService> (); Vector3 position = new Vector3(128, 128, 25); Vector3 lookAt = new Vector3(0, 0, 22); if (agentInfoService != null) { agentInfoService.SetHomePosition(userID.ToString(), (UUID)UserHomeRegion, position, lookAt); } vars.Add("ErrorMessage", "Successfully created account, redirecting to main page"); response = "<h3>Successfully created account, redirecting to main page</h3>" + "<script language=\"javascript\">" + "setTimeout(function() {window.location.href = \"index.html\";}, 3000);" + "</script>"; } else { vars.Add("ErrorMessage", "<h3>" + error + "</h3>"); response = "<h3>" + error + "</h3>"; } } else { response = "<h3>You did not accept the Terms of Service agreement.</h3>"; } return(null); } List <Dictionary <string, object> > daysArgs = new List <Dictionary <string, object> >(); for (int i = 1; i <= 31; i++) { daysArgs.Add(new Dictionary <string, object> { { "Value", i } }); } List <Dictionary <string, object> > yearsArgs = new List <Dictionary <string, object> >(); for (int i = 1950; i <= 2013; i++) { yearsArgs.Add(new Dictionary <string, object> { { "Value", i } }); } vars.Add("Days", daysArgs); vars.Add("Months", WebHelpers.ShortMonthSelections(translator)); //.monthsArgs); vars.Add("Years", yearsArgs); var sortBy = new Dictionary <string, bool>(); sortBy.Add("RegionName", true); var RegionListVars = new List <Dictionary <string, object> >(); var regions = Framework.Utilities.DataManager.RequestPlugin <IRegionData>().Get((RegionFlags)0, RegionFlags.Hyperlink | RegionFlags.Foreign | RegionFlags.Hidden, null, null, sortBy); foreach (var region in regions) { RegionListVars.Add(new Dictionary <string, object> { { "RegionName", region.RegionName }, { "RegionUUID", region.RegionID } }); } vars.Add("RegionList", RegionListVars); vars.Add("UserHomeRegionText", translator.GetTranslatedString("UserHomeRegionText")); vars.Add("UserTypeText", translator.GetTranslatedString("UserTypeText")); vars.Add("UserType", WebHelpers.UserTypeArgs(translator)); vars.Add("AvatarArchive", WebHelpers.AvatarSelections(webInterface.Registry)); string tosLocation = ""; if (loginServerConfig != null && loginServerConfig.GetBoolean("UseTermsOfServiceOnFirstLogin", false)) { tosLocation = loginServerConfig.GetString("FileNameOfTOS", ""); tosLocation = PathHelpers.VerifyReadFile(tosLocation, ".txt", simBase.DefaultDataPath); } string ToS = "There are no Terms of Service currently. This may be changed at any point in the future."; if (tosLocation != "") { StreamReader reader = new StreamReader(Path.Combine(Environment.CurrentDirectory, tosLocation)); try { ToS = reader.ReadToEnd(); } finally { reader.Close(); } } // check for user name seed string[] m_userNameSeed = null; if (loginServerConfig != null) { string userNameSeed = loginServerConfig.GetString("UserNameSeed", ""); if (userNameSeed != "") { m_userNameSeed = userNameSeed.Split(','); } } Utilities.MarkovNameGenerator ufNames = new Utilities.MarkovNameGenerator(); Utilities.MarkovNameGenerator ulNames = new Utilities.MarkovNameGenerator(); string[] nameSeed = m_userNameSeed == null ? Utilities.UserNames : m_userNameSeed; string firstName = ufNames.FirstName(nameSeed, 3, 4); string lastName = ulNames.FirstName(nameSeed, 5, 6); string enteredName = firstName + " " + lastName; vars.Add("AvatarName", enteredName); vars.Add("ToSMessage", ToS); vars.Add("TermsOfServiceAccept", translator.GetTranslatedString("TermsOfServiceAccept")); vars.Add("TermsOfServiceText", translator.GetTranslatedString("TermsOfServiceText")); vars.Add("RegistrationsDisabled", ""); vars.Add("RegistrationText", translator.GetTranslatedString("RegistrationText")); vars.Add("AvatarNameText", translator.GetTranslatedString("AvatarNameText")); vars.Add("AvatarPasswordText", translator.GetTranslatedString("Password")); vars.Add("AvatarPasswordConfirmationText", translator.GetTranslatedString("PasswordConfirmation")); vars.Add("AvatarScopeText", translator.GetTranslatedString("AvatarScopeText")); vars.Add("FirstNameText", translator.GetTranslatedString("FirstNameText")); vars.Add("LastNameText", translator.GetTranslatedString("LastNameText")); vars.Add("UserAddressText", translator.GetTranslatedString("UserAddressText")); vars.Add("UserZipText", translator.GetTranslatedString("UserZipText")); vars.Add("UserCityText", translator.GetTranslatedString("UserCityText")); vars.Add("UserCountryText", translator.GetTranslatedString("UserCountryText")); vars.Add("UserDOBText", translator.GetTranslatedString("UserDOBText")); vars.Add("UserEmailText", translator.GetTranslatedString("UserEmailText")); vars.Add("Accept", translator.GetTranslatedString("Accept")); vars.Add("Submit", translator.GetTranslatedString("Submit")); vars.Add("SubmitURL", "register.html"); vars.Add("ErrorMessage", ""); vars.Add("Registrations", true); vars.Add("NoRegistrations", false); return(vars); }
public Dictionary <string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary <string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary <string, object>(); UserAccount account = null; if (httpRequest.Query.ContainsKey("regionid")) { var regionService = webInterface.Registry.RequestModuleInterface <IGridService> (); var region = regionService.GetRegionByUUID(null, UUID.Parse(httpRequest.Query ["regionid"].ToString())); UUID userid = region.EstateOwner; account = webInterface.Registry.RequestModuleInterface <IUserAccountService>(). GetUserAccount(null, userid); //IEstateConnector estateConnector = Framework.Utilities.DataManager.RequestPlugin<IEstateConnector> (); //EstateSettings estate = estateConnector.GetEstateSettings (region.RegionID); } if (account == null) { return(vars); } // There is no harm in showing the system users here, actually it is required //if ( Utilities.IsSytemUser(account.PrincipalID)) // return vars; vars.Add("UserName", account.Name); // TODO: User Profile inworld shows this as the standard mm/dd/yyyy // Do we want this to be localised into the users Localisation or keep it as standard ? // // greythane, Oct 2014 - Not sure why we need to keep the US format here? A lot of us don't live there :) // vars.Add("UserBorn", Culture.LocaleDate(Util.ToDateTime(account.Created))); vars.Add("UserBorn", Util.ToDateTime(account.Created).ToShortDateString()); IUserProfileInfo profile = Framework.Utilities.DataManager.RequestPlugin <IProfileConnector>(). GetUserProfile(account.PrincipalID); if (profile != null) { vars.Add("UserType", profile.MembershipGroup == "" ? "Resident" : profile.MembershipGroup); if (profile != null) { if (profile.Partner != UUID.Zero) { account = webInterface.Registry.RequestModuleInterface <IUserAccountService> (). GetUserAccount(null, profile.Partner); vars.Add("UserPartner", account.Name); } else { vars.Add("UserPartner", "No partner"); } vars.Add("UserAboutMe", profile.AboutText == "" ? "Nothing here" : profile.AboutText); string url = "../images/icons/no_avatar.jpg"; IWebHttpTextureService webhttpService = webInterface.Registry.RequestModuleInterface <IWebHttpTextureService> (); if (webhttpService != null && profile.Image != UUID.Zero) { url = webhttpService.GetTextureURL(profile.Image); } vars.Add("UserPictureURL", url); } } else { // no profile yet for this user vars.Add("UserType", "Unknown"); vars.Add("UserPartner", "Unknown"); vars.Add("UserPictureURL", "../images/icons/no_avatar.jpg"); } UserAccount ourAccount = Authenticator.GetAuthentication(httpRequest); if (ourAccount != null) { IFriendsService friendsService = webInterface.Registry.RequestModuleInterface <IFriendsService>(); var friends = friendsService.GetFriends(account.PrincipalID); UUID friendID = UUID.Zero; if (friends.Any(f => UUID.TryParse(f.Friend, out friendID) && friendID == ourAccount.PrincipalID)) { IAgentInfoService agentInfoService = webInterface.Registry.RequestModuleInterface <IAgentInfoService>(); IGridService gridService = webInterface.Registry.RequestModuleInterface <IGridService>(); UserInfo ourInfo = agentInfoService.GetUserInfo(account.PrincipalID.ToString()); if (ourInfo != null && ourInfo.IsOnline) { vars.Add("OnlineLocation", gridService.GetRegionByUUID(null, ourInfo.CurrentRegionID).RegionName); } vars.Add("UserIsOnline", ourInfo != null && ourInfo.IsOnline); vars.Add("IsOnline", ourInfo != null && ourInfo.IsOnline ? translator.GetTranslatedString("Online") : translator.GetTranslatedString("Offline")); } else { vars.Add("OnlineLocation", ""); vars.Add("UserIsOnline", false); vars.Add("IsOnline", translator.GetTranslatedString("Offline")); } } else { vars.Add("OnlineLocation", ""); vars.Add("UserIsOnline", false); vars.Add("IsOnline", translator.GetTranslatedString("Offline")); } vars.Add("UserProfileFor", translator.GetTranslatedString("UserProfileFor")); vars.Add("ResidentSince", translator.GetTranslatedString("ResidentSince")); vars.Add("AccountType", translator.GetTranslatedString("AccountType")); vars.Add("PartnersName", translator.GetTranslatedString("PartnersName")); vars.Add("AboutMe", translator.GetTranslatedString("AboutMe")); vars.Add("IsOnlineText", translator.GetTranslatedString("IsOnlineText")); vars.Add("OnlineLocationText", translator.GetTranslatedString("OnlineLocationText")); return(vars); }
private string OnHeartbeatReceived(Stream request, string path, string param, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { if (CheckAuthorization(httpRequest, httpResponse)) { return(UnpackMessageAndCallHandler(request, httpResponse, this.HandleNeighborPing)); } else { return("Unauthorized"); } }
public Dictionary <string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary <string, object> requestParameters, ITranslator translator, out string response) { response = null; IConfig gridInfo = webInterface.Registry.RequestModuleInterface <ISimulationBase> ().ConfigSource.Configs ["GridInfoService"]; var InWorldCurrency = gridInfo.GetString("CurrencySymbol", string.Empty) + " "; var RealCurrency = gridInfo.GetString("RealCurrencySymbol", string.Empty) + " "; var vars = new Dictionary <string, object> (); var purchasesList = new List <Dictionary <string, object> > (); var today = DateTime.Now; var thirtyDays = today.AddDays(-30); string DateStart = thirtyDays.ToShortDateString(); string DateEnd = today.ToShortDateString(); string UserName = ""; UUID UserID = UUID.Zero; IMoneyModule moneyModule = webInterface.Registry.RequestModuleInterface <IMoneyModule> (); string noDetails = translator.GetTranslatedString("NoPurchasesText"); if (moneyModule != null) { // Check if we're looking at the standard page or the submitted one if (requestParameters.ContainsKey("Submit")) { if (requestParameters.ContainsKey("date_start")) { DateStart = requestParameters ["date_start"].ToString(); } if (requestParameters.ContainsKey("date_end")) { DateEnd = requestParameters ["date_end"].ToString(); } if (requestParameters.ContainsKey("user_name")) { UserName = requestParameters ["user_name"].ToString(); } IUserAccountService accountService = webInterface.Registry.RequestModuleInterface <IUserAccountService> (); if (UserName != "") { UserID = (UUID)Constants.LibraryOwner; // This user should hopefully never have transactions if (UserName.Split(' ').Length == 2) { var userAccount = accountService.GetUserAccount(null, UserName); if (userAccount != null) { UserID = userAccount.PrincipalID; } } } // Purchases Logs var timeNow = DateTime.Now.ToString("HH:mm:ss"); var dateFrom = DateTime.Parse(DateStart + " " + timeNow); var dateTo = DateTime.Parse(DateEnd + " " + timeNow); var purchases = new List <AgentPurchase> (); if (UserID != UUID.Zero) { purchases = moneyModule.GetPurchaseHistory(UserID, dateFrom, dateTo, null, null); } else { purchases = moneyModule.GetPurchaseHistory(dateFrom, dateTo, null, null); } // data if (purchases != null && purchases.Count > 0) { noDetails = ""; foreach (var purchase in purchases) { var account = accountService.GetUserAccount(null, purchase.AgentID); string AgentName = ""; if (account != null) { AgentName = account.Name; } purchasesList.Add(new Dictionary <string, object> { { "ID", purchase.ID }, { "AgentID", purchase.AgentID }, { "AgentName", AgentName }, { "LoggedIP", purchase.IP }, { "Description", "Purchase" }, { "Amount", purchase.Amount }, { "RealAmount", ((float)purchase.RealAmount / 100).ToString("0.00") }, { "PurchaseDate", Culture.LocaleDate(purchase.PurchaseDate.ToLocalTime(), "MMM dd, hh:mm:ss tt") }, { "UpdateDate", Culture.LocaleDate(purchase.UpdateDate.ToLocalTime(), "MMM dd, hh:mm:ss tt") } }); } } } if (purchasesList.Count == 0) { purchasesList.Add(new Dictionary <string, object> { { "ID", "" }, { "AgentID", "" }, { "AgentName", "" }, { "LoggedIP", "" }, { "Description", translator.GetTranslatedString("NoPurchasesText") }, { "Amount", "" }, { "RealAmount", "" }, { "PurchaseDate", "" }, { "UpdateDate", "" } }); } } // always required data vars.Add("DateStart", DateStart); vars.Add("DateEnd", DateEnd); vars.Add("SearchUser", UserName); vars.Add("PurchasesList", purchasesList); vars.Add("NoPurchasesText", noDetails); // labels vars.Add("PurchasesText", translator.GetTranslatedString("PurchasesText")); vars.Add("DateInfoText", translator.GetTranslatedString("DateInfoText")); vars.Add("DateStartText", translator.GetTranslatedString("DateStartText")); vars.Add("DateEndText", translator.GetTranslatedString("DateEndText")); vars.Add("SearchUserText", translator.GetTranslatedString("AvatarNameText")); vars.Add("PurchaseAgentText", translator.GetTranslatedString("TransactionToAgentText")); vars.Add("PurchaseDateText", translator.GetTranslatedString("TransactionDateText")); vars.Add("PurchaseUpdateDateText", translator.GetTranslatedString("TransactionDateText")); //vars.Add("PurchaseTimeText", translator.GetTranslatedString("Time")); vars.Add("PurchaseDetailText", translator.GetTranslatedString("TransactionDetailText")); vars.Add("LoggedIPText", translator.GetTranslatedString("LoggedIPText")); vars.Add("PurchaseAmountText", InWorldCurrency + translator.GetTranslatedString("TransactionAmountText")); vars.Add("PurchaseRealAmountText", RealCurrency + translator.GetTranslatedString("PurchaseCostText")); vars.Add("FirstText", translator.GetTranslatedString("FirstText")); vars.Add("BackText", translator.GetTranslatedString("BackText")); vars.Add("NextText", translator.GetTranslatedString("NextText")); vars.Add("LastText", translator.GetTranslatedString("LastText")); vars.Add("CurrentPageText", translator.GetTranslatedString("CurrentPageText")); return(vars); }
public Dictionary <string, object> Fill(WebInterface webInterface, string filename, OSHttpRequest httpRequest, OSHttpResponse httpResponse, Dictionary <string, object> requestParameters, ITranslator translator, out string response) { response = null; var vars = new Dictionary <string, object>(); string error = ""; UUID userID = httpRequest.Query.ContainsKey("userid") ? UUID.Parse(httpRequest.Query["userid"].ToString()) : UUID.Parse(requestParameters["userid"].ToString()); IUserAccountService userService = webInterface.Registry.RequestModuleInterface <IUserAccountService>(); var agentService = Framework.Utilities.DataManager.RequestPlugin <IAgentConnector>(); UserAccount account = userService.GetUserAccount(null, userID); IAgentInfo agent = agentService.GetAgent(userID); if (agent == null) { error = "No agent information is available"; } // Set user type if (requestParameters.ContainsKey("Submit") && requestParameters["Submit"].ToString() == "SubmitSetUserType") { string UserType = requestParameters ["UserType"].ToString(); int UserFlags = webInterface.UserTypeToUserFlags(UserType); // set the user account type account.UserFlags = UserFlags; userService.StoreUserAccount(account); if (agent != null) { agent.OtherAgentInformation ["UserFlags"] = UserFlags; agentService.UpdateAgent(agent); response = "User has been updated."; } else { response = "Agent information is not available! Has the user logged in yet?"; } IProfileConnector profileData = Framework.Utilities.DataManager.RequestPlugin <IProfileConnector>(); if (profileData != null) { IUserProfileInfo profile = profileData.GetUserProfile(userID); if (profile == null) { profileData.CreateNewProfile(userID); profile = profileData.GetUserProfile(userID); } profile.MembershipGroup = webInterface.UserFlagToType(UserFlags, webInterface.EnglishTranslator); // membership is english profileData.UpdateUserProfile(profile); } response = "User has been updated."; return(null); } // Password change if (requestParameters.ContainsKey("Submit") && requestParameters["Submit"].ToString() == "SubmitPasswordChange") { string password = requestParameters["password"].ToString(); string passwordconf = requestParameters["passwordconf"].ToString(); if (password != passwordconf) { response = "Passwords do not match"; } else { IAuthenticationService authService = webInterface.Registry.RequestModuleInterface <IAuthenticationService>(); if (authService != null) { response = authService.SetPassword(userID, "UserAccount", password) ? "Successfully set password" : "Failed to set your password, try again later"; } else { response = "No authentication service was available to change your password"; } } return(null); } // Email change if (requestParameters.ContainsKey("Submit") && requestParameters["Submit"].ToString() == "SubmitEmailChange") { string email = requestParameters["email"].ToString(); if (userService != null) { account.Email = email; userService.StoreUserAccount(account); response = "Successfully updated email"; } else { response = "No authentication service was available to change your password"; } return(null); } // Delete user if (requestParameters.ContainsKey("Submit") && requestParameters["Submit"].ToString() == "SubmitDeleteUser") { string username = requestParameters["username"].ToString(); response = "Deleted user successfully"; if (username == account.Name) { userService.DeleteUser(account.PrincipalID, account.Name, "", false, false); } else { response = "The user name did not match"; } return(null); } // Temp Ban user if (requestParameters.ContainsKey("Submit") && requestParameters["Submit"].ToString() == "SubmitTempBanUser") { int timeDays = int.Parse(requestParameters["TimeDays"].ToString()); int timeHours = int.Parse(requestParameters["TimeHours"].ToString()); int timeMinutes = int.Parse(requestParameters["TimeMinutes"].ToString()); if (agent != null) { agent.Flags |= IAgentFlags.TempBan; DateTime until = DateTime.Now.AddDays(timeDays).AddHours(timeHours).AddMinutes(timeMinutes); agent.OtherAgentInformation ["TemperaryBanInfo"] = until; agentService.UpdateAgent(agent); response = "User has been banned."; } else { response = "Agent information is not available! Has the user logged in yet?"; } return(null); } // Ban user if (requestParameters.ContainsKey("Submit") && requestParameters["Submit"].ToString() == "SubmitBanUser") { if (agent != null) { agent.Flags |= IAgentFlags.PermBan; agentService.UpdateAgent(agent); response = "User has been banned."; } else { response = "Agent information is not available! Has the user logged in yet?"; } return(null); } //UnBan user if (requestParameters.ContainsKey("Submit") && requestParameters["Submit"].ToString() == "SubmitUnbanUser") { if (agent != null) { agent.Flags &= ~IAgentFlags.TempBan; agent.Flags &= ~IAgentFlags.PermBan; agent.OtherAgentInformation.Remove("TemperaryBanInfo"); agentService.UpdateAgent(agent); response = "User has been unbanned."; } else { response = "Agent information is not available! Has the user logged in yet?"; } return(null); } // Login as user if (requestParameters.ContainsKey("Submit") && requestParameters["Submit"].ToString() == "SubmitLoginAsUser") { Authenticator.ChangeAuthentication(httpRequest, account); webInterface.Redirect(httpResponse, "/"); return(vars); } // Kick user if (requestParameters.ContainsKey("Submit") && requestParameters["Submit"].ToString() == "SubmitKickUser") { string message = requestParameters["KickMessage"].ToString(); IGridWideMessageModule messageModule = webInterface.Registry.RequestModuleInterface <IGridWideMessageModule>(); if (messageModule != null) { messageModule.KickUser(account.PrincipalID, message); } response = "User has been kicked."; return(null); } // Message user if (requestParameters.ContainsKey("Submit") && requestParameters["Submit"].ToString() == "SubmitMessageUser") { string message = requestParameters["Message"].ToString(); IGridWideMessageModule messageModule = webInterface.Registry.RequestModuleInterface <IGridWideMessageModule>(); if (messageModule != null) { messageModule.MessageUser(account.PrincipalID, message); } response = "User has been sent the message."; return(null); } // page variables string bannedUntil = ""; bool userBanned = agent == null ? false : ((agent.Flags & IAgentFlags.PermBan) == IAgentFlags.PermBan || (agent.Flags & IAgentFlags.TempBan) == IAgentFlags.TempBan); bool TempUserBanned = false; if (userBanned) { if ((agent.Flags & IAgentFlags.TempBan) == IAgentFlags.TempBan && agent.OtherAgentInformation["TemperaryBanInfo"].AsDate() < DateTime.Now.ToUniversalTime()) { userBanned = false; agent.Flags &= ~IAgentFlags.TempBan; agent.Flags &= ~IAgentFlags.PermBan; agent.OtherAgentInformation.Remove("TemperaryBanInfo"); agentService.UpdateAgent(agent); } else { DateTime bannedTime = agent.OtherAgentInformation["TemperaryBanInfo"].AsDate(); TempUserBanned = bannedTime != Util.UnixEpoch; bannedUntil = string.Format("{0} {1}", bannedTime.ToShortDateString(), bannedTime.ToLongTimeString()); } } bool userOnline = false; IAgentInfoService agentInfoService = webInterface.Registry.RequestModuleInterface <IAgentInfoService>(); if (agentInfoService != null) { UserInfo info = agentInfoService.GetUserInfo(account.PrincipalID.ToString()); userOnline = info != null ? info.IsOnline : false; } vars.Add("UserOnline", userOnline); vars.Add("NotUserBanned", !userBanned); vars.Add("UserBanned", userBanned); vars.Add("TempUserBanned", TempUserBanned); vars.Add("BannedUntil", bannedUntil); vars.Add("EmailValue", account.Email); vars.Add("UserID", account.PrincipalID); vars.Add("UserName", account.Name); vars.Add("ErrorMessage", error); vars.Add("ChangeUserInformationText", translator.GetTranslatedString("ChangeUserInformationText")); vars.Add("ChangePasswordText", translator.GetTranslatedString("ChangePasswordText")); vars.Add("NewPasswordText", translator.GetTranslatedString("NewPasswordText")); vars.Add("NewPasswordConfirmationText", translator.GetTranslatedString("NewPasswordConfirmationText")); vars.Add("ChangeEmailText", translator.GetTranslatedString("ChangeEmailText")); vars.Add("NewEmailText", translator.GetTranslatedString("NewEmailText")); vars.Add("UserNameText", translator.GetTranslatedString("UserNameText")); vars.Add("PasswordText", translator.GetTranslatedString("PasswordText")); vars.Add("DeleteUserText", translator.GetTranslatedString("DeleteUserText")); vars.Add("DeleteText", translator.GetTranslatedString("DeleteText")); vars.Add("DeleteUserInfoText", translator.GetTranslatedString("DeleteUserInfoText")); vars.Add("Submit", translator.GetTranslatedString("Submit")); vars.Add("Login", translator.GetTranslatedString("Login")); vars.Add("TypeUserNameToConfirm", translator.GetTranslatedString("TypeUserNameToConfirm")); vars.Add("AdminUserTypeInfoText", translator.GetTranslatedString("AdminUserTypeInfoText")); vars.Add("AdminSetUserTypeText", translator.GetTranslatedString("UserTypeText")); vars.Add("AdminLoginInAsUserText", translator.GetTranslatedString("AdminLoginInAsUserText")); vars.Add("AdminLoginInAsUserInfoText", translator.GetTranslatedString("AdminLoginInAsUserInfoText")); vars.Add("AdminDeleteUserText", translator.GetTranslatedString("AdminDeleteUserText")); vars.Add("AdminDeleteUserInfoText", translator.GetTranslatedString("AdminDeleteUserInfoText")); vars.Add("AdminUnbanUserText", translator.GetTranslatedString("AdminUnbanUserText")); vars.Add("AdminTempBanUserText", translator.GetTranslatedString("AdminTempBanUserText")); vars.Add("AdminTempBanUserInfoText", translator.GetTranslatedString("AdminTempBanUserInfoText")); vars.Add("AdminBanUserText", translator.GetTranslatedString("AdminBanUserText")); vars.Add("AdminBanUserInfoText", translator.GetTranslatedString("AdminBanUserInfoText")); vars.Add("BanText", translator.GetTranslatedString("BanText")); vars.Add("UnbanText", translator.GetTranslatedString("UnbanText")); vars.Add("TimeUntilUnbannedText", translator.GetTranslatedString("TimeUntilUnbannedText")); vars.Add("EdittingText", translator.GetTranslatedString("EdittingText")); vars.Add("BannedUntilText", translator.GetTranslatedString("BannedUntilText")); vars.Add("KickAUserInfoText", translator.GetTranslatedString("KickAUserInfoText")); vars.Add("KickAUserText", translator.GetTranslatedString("KickAUserText")); vars.Add("KickMessageText", translator.GetTranslatedString("KickMessageText")); vars.Add("KickUserText", translator.GetTranslatedString("KickUserText")); vars.Add("MessageAUserText", translator.GetTranslatedString("MessageAUserText")); vars.Add("MessageAUserInfoText", translator.GetTranslatedString("MessageAUserInfoText")); vars.Add("MessageUserText", translator.GetTranslatedString("MessageUserText")); List <Dictionary <string, object> > daysArgs = new List <Dictionary <string, object> >(); for (int i = 0; i <= 100; i++) { daysArgs.Add(new Dictionary <string, object> { { "Value", i } }); } List <Dictionary <string, object> > hoursArgs = new List <Dictionary <string, object> >(); for (int i = 0; i <= 23; i++) { hoursArgs.Add(new Dictionary <string, object> { { "Value", i } }); } List <Dictionary <string, object> > minutesArgs = new List <Dictionary <string, object> >(); for (int i = 0; i <= 59; i++) { minutesArgs.Add(new Dictionary <string, object> { { "Value", i } }); } vars.Add("Days", daysArgs); vars.Add("Hours", hoursArgs); vars.Add("Minutes", minutesArgs); vars.Add("DaysText", translator.GetTranslatedString("DaysText")); vars.Add("HoursText", translator.GetTranslatedString("HoursText")); vars.Add("MinutesText", translator.GetTranslatedString("MinutesText")); vars.Add("UserType", webInterface.UserTypeArgs(translator)); return(vars); }
protected virtual byte[] processGridInstantMessage(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { GridInstantMessage gim = ProtoBuf.Serializer.Deserialize <GridInstantMessage>(request); // Trigger the Instant message in the scene. IScenePresence user; bool successful = false; foreach (IScene scene in m_scenes) { if (scene.TryGetScenePresence(gim.ToAgentID, out user)) { if (!user.IsChildAgent) { scene.EventManager.TriggerIncomingInstantMessage(gim); successful = true; break; } } } //Send response back to region calling if it was successful // calling region uses this to know when to look up a user's location again. return(new byte[1] { successful ? (byte)1 : (byte)0 }); }
public byte[] RenderMaterialsPostCap(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { MainConsole.Instance.Debug("[Materials]: POST cap handler"); OSDMap req = (OSDMap)OSDParser.DeserializeLLSDXml(request); OSDMap resp = new OSDMap(); OSDMap materialsFromViewer = null; OSDArray respArr = new OSDArray(); if (req.ContainsKey("Zipped")) { OSD osd; byte[] inBytes = req ["Zipped"].AsBinary(); try { osd = ZDecompressBytesToOsd(inBytes); if (osd != null) { if (osd is OSDArray) // assume array of MaterialIDs designating requested material entries { foreach (OSD elem in (OSDArray)osd) { AssetBase materialAsset = null; try { UUID id = new UUID(elem.AsBinary(), 0); if (m_knownMaterials.ContainsKey(id)) { MainConsole.Instance.Info("[Materials]: request for known material ID: " + id); OSDMap matMap = new OSDMap(); matMap ["ID"] = elem.AsBinary(); matMap ["Material"] = m_knownMaterials [id]; respArr.Add(matMap); } else if ((materialAsset = m_scene.AssetService.Get(id.ToString())) != null) { MainConsole.Instance.Info("[Materials]: request for stored material ID: " + id); OSDMap matMap = new OSDMap(); matMap ["ID"] = elem.AsBinary(); matMap ["Material"] = OSDParser.DeserializeJson(Encoding.UTF8.GetString(materialAsset.Data)); respArr.Add(matMap); } else { MainConsole.Instance.Info("[Materials]: request for UNKNOWN material ID: " + id); } if (materialAsset != null) { materialAsset.Dispose(); } } catch (Exception) { // report something here? if (materialAsset != null) { materialAsset.Dispose(); } continue; } } } else if (osd is OSDMap) // request to assign a material { materialsFromViewer = osd as OSDMap; if (materialsFromViewer.ContainsKey("FullMaterialsPerFace")) { OSD matsOsd = materialsFromViewer ["FullMaterialsPerFace"]; if (matsOsd is OSDArray) { OSDArray matsArr = matsOsd as OSDArray; try { foreach (OSDMap matsMap in matsArr) { // MainConsole.Instance.Debug("[Materials]: processing matsMap: " + OSDParser.SerializeJsonString(matsMap)); uint matLocalID = 0; try { matLocalID = matsMap ["ID"].AsUInteger(); } catch (Exception e) { MainConsole.Instance.Warn("[Materials]: cannot decode \"ID\" from matsMap: " + e.Message); } // MainConsole.Instance.Debug("[Materials]: matLocalId: " + matLocalID); OSDMap mat = null; if (matsMap.ContainsKey("Material")) { try { mat = matsMap ["Material"] as OSDMap; } catch (Exception e) { MainConsole.Instance.Warn("[MaterialsDemoModule]: cannot decode \"Material\" from matsMap: " + e.Message); continue; } } if (mat == null) { continue; } // MainConsole.Instance.Debug("[Materials]: mat: " + OSDParser.SerializeJsonString(mat)); UUID id = HashOsd(mat); m_knownMaterials [id] = mat; var sop = m_scene.GetSceneObjectPart(matLocalID); if (sop == null) { MainConsole.Instance.Debug("[Materials]: null SOP for localId: " + matLocalID); } else { //var te = sop.Shape.Textures; var te = new Primitive.TextureEntry(sop.Shape.TextureEntry, 0, sop.Shape.TextureEntry.Length); if (te == null) { MainConsole.Instance.Debug("[Materials]: null TextureEntry for localId: " + matLocalID); } else { int face = -1; if (matsMap.ContainsKey("Face")) { face = matsMap ["Face"].AsInteger(); if (te.FaceTextures == null) // && face == 0) { if (te.DefaultTexture == null) { MainConsole.Instance.Debug("[Materials]: te.DefaultTexture is null"); } else { //## FixMe ## // comparison always results in 'False' if (te.DefaultTexture.MaterialID == null) // MainConsole.Instance.Debug("[MaterialsDemoModule]: te.DefaultTexture.MaterialID is null"); // else // { te.DefaultTexture.MaterialID = id; // } } } else { if (te.FaceTextures.Length >= face - 1) { if (te.FaceTextures [face] == null) { te.DefaultTexture.MaterialID = id; } else { te.FaceTextures [face].MaterialID = id; } } } } else { if (te.DefaultTexture != null) { te.DefaultTexture.MaterialID = id; } } MainConsole.Instance.Debug("[Materials]: setting material ID for face " + face + " to " + id); //we cant use sop.UpdateTextureEntry(te); because it filters so do it manually if (sop.ParentEntity != null) { sop.Shape.TextureEntry = te.GetBytes(); sop.TriggerScriptChangedEvent(Changed.TEXTURE); sop.ParentEntity.HasGroupChanged = true; sop.ScheduleUpdate(PrimUpdateFlags.FullUpdate); AssetBase asset = new AssetBase(id, "RenderMaterial", AssetType.Texture, sop.OwnerID) { Data = Encoding.UTF8.GetBytes( OSDParser.SerializeJsonString(mat)) }; m_scene.AssetService.Store(asset); StoreMaterialsForPart(sop); } } } } } catch (Exception e) { MainConsole.Instance.Warn("[Materials]: exception processing received material: " + e); } } } } } } catch (Exception e) { MainConsole.Instance.Warn("[Materials]: exception decoding zipped CAP payload: " + e); //return ""; } MainConsole.Instance.Debug("[Materials]: knownMaterials.Count: " + m_knownMaterials.Count); } resp ["Zipped"] = ZCompressOSD(respArr, false); string response = OSDParser.SerializeLLSDXmlString(resp); //MainConsole.Instance.Debug("[Materials]: cap request: " + request); MainConsole.Instance.Debug("[Materials]: cap request (zipped portion): " + ZippedOsdBytesToString(req ["Zipped"].AsBinary())); MainConsole.Instance.Debug("[Materials]: cap response: " + response); return(OSDParser.SerializeLLSDBinary(resp)); }
protected string ResourceCostsSelected(string request, string path, string param, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { //m_log.DebugFormat("[ASSETCAPS] Got a ResourceCostsSelected Packet {0}.", request); OSDMap resp = new OSDMap(); OSDMap requestmap = (OSDMap)OSDParser.DeserializeLLSDXml(Utils.StringToBytes(request)); float streaming_cost = 0.0f; float simulation_cost = 0.0f; float physics_cost = 0.0f; // I dont see selected_prims ever sent but we cover our ass just in case string[] tags = { "selected_roots", "selected_prims" }; foreach (string value in tags) { if (requestmap.ContainsKey(value) == false) { continue; } OSDArray itemsRequested = (OSDArray)requestmap[value]; foreach (OSDUUID osdItemId in itemsRequested) { UUID itemId = osdItemId.AsUUID(); SceneObjectPart item = m_Scene.GetSceneObjectPart(itemId); PhysicsActor physActor; if (item != null) { SceneObjectGroup parent = item.ParentGroup; physActor = parent.RootPart.PhysActor; if (physActor != null) { physics_cost += (float)physActor.TotalComplexity; } streaming_cost += parent.StreamingCost; simulation_cost += parent.ServerWeight; } } } OSDMap object_data = new OSDMap(); object_data["physics"] = physics_cost; object_data["streaming"] = streaming_cost; object_data["simulation"] = simulation_cost; resp["selected"] = object_data; string response = OSDParser.SerializeLLSDXmlString(resp); //m_log.DebugFormat("[ASSETCAPS] Sending a ResourceCostsSelected Response {0}.", response); return(response); }