示例#1
0
        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;
        }
示例#2
0
        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;
        }
示例#3
0
        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;
        }
示例#4
0
 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;
 }
示例#5
0
        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;
        }
示例#7
0
        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;
        }
示例#8
0
        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;
        }
示例#9
0
 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;
 }
示例#10
0
 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;
 }
示例#11
0
        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;
        }
示例#12
0
        /// <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;
        }
示例#13
0
        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;
        }
示例#14
0
        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;
        }
示例#16
0
        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;
        }
示例#17
0
        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;
 }
示例#21
0
        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;
        }
示例#22
0
        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;
        }
示例#23
0
        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;
        }
示例#25
0
        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);
        }
示例#26
0
        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);
        }
示例#27
0
        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>");
            }
        }
示例#28
0
文件: news.cs 项目: KSLcom/Aurora-Sim
        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;
        }
示例#29
0
        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];
        }
示例#31
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);
        }
示例#33
0
        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");
        }
示例#34
0
        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);
        }
示例#35
0
 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());
        }
示例#37
0
            /// <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);
            }
示例#38
0
        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);
                    }
                }
            }
        }
示例#40
0
 public bool AttemptFindPage(string filename, ref OSHttpResponse httpResponse, out string text)
 {
     text = "";
     return(false);
 }
示例#41
0
        /// <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()));
        }
示例#42
0
        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());
        }
示例#44
0
            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);
                };
            }
示例#45
0
        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);
        }
示例#46
0
            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}\">&lt; Previous Page</a> | ", httpRequest.RawUrl, page - 1);
                }
                html.AppendFormat("<a href=\"{0}?page={1}\">Next Page &gt;</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>&nbsp;</td><td>&nbsp;</td><td>{0}</td><td>{1}</td><td>&nbsp;</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);
            }
示例#47
0
        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());
        }
示例#49
0
        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));
        }
示例#50
0
 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");
     }
 }
示例#51
0
        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);
        }
示例#52
0
        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));
        }
示例#53
0
        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);
        }
示例#54
0
        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);
        }
示例#55
0
 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");
     }
 }
示例#56
0
        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);
        }
示例#57
0
        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
            });
        }
示例#59
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));
        }
示例#60
0
        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);
        }