示例#1
0
        private void HandleMapServerChangeDefaultRegionFlags(HttpRequest req, Map jsondata)
        {
            UUID id;

            if (!jsondata.TryGetValue("id", out id))
            {
                m_WebIF.ErrorResponse(req, AdminWebIfErrorResult.InvalidRequest);
            }
            else
            {
                var setFlags    = RegionFlags.None;
                var removeFlags = RegionFlags.None;

                bool flag;
                if (jsondata.TryGetValue("fallback", out flag))
                {
                    if (flag)
                    {
                        setFlags |= RegionFlags.FallbackRegion;
                    }
                    else
                    {
                        removeFlags |= RegionFlags.FallbackRegion;
                    }
                }
                if (jsondata.TryGetValue("default", out flag))
                {
                    if (flag)
                    {
                        setFlags |= RegionFlags.DefaultRegion;
                    }
                    else
                    {
                        removeFlags |= RegionFlags.DefaultRegion;
                    }
                }
                if (jsondata.TryGetValue("defaultintergrid", out flag))
                {
                    if (flag)
                    {
                        setFlags |= RegionFlags.DefaultIntergridRegion;
                    }
                    else
                    {
                        removeFlags |= RegionFlags.DefaultIntergridRegion;
                    }
                }
                if (jsondata.TryGetValue("persistent", out flag))
                {
                    if (flag)
                    {
                        setFlags |= RegionFlags.Persistent;
                    }
                    else
                    {
                        removeFlags |= RegionFlags.Persistent;
                    }
                }

                try
                {
                    m_GridService.AddRegionFlags(id, setFlags);
                    m_GridService.RemoveRegionFlags(id, removeFlags);
                    m_RegionDefaultFlagsService.ChangeRegionDefaultFlags(id, setFlags, removeFlags);
                }
                catch
                {
                    m_WebIF.ErrorResponse(req, AdminWebIfErrorResult.NotPossible);
                    return;
                }
                m_WebIF.SuccessResponse(req, new Map());
            }
        }
示例#2
0
        private void ChangeRegionFlagDefaultsCmd(List <string> args, TTY io, UUID limitedToScene)
        {
            if (limitedToScene != UUID.Zero)
            {
                io.Write("Command not allowed on limited console");
            }
            else if (args[0] == "help" || args.Count < 4 || args.Count % 2 != 0)
            {
                io.Write("change regionflags id <uuid> flags..\n" +
                         "change regionflags name <name> flags..\n\nFlags:\n" +
                         "fallback true|false\ndefault true|false\ndefaulthg true|false\npersistent true|false");
            }
            else
            {
                UUID id;
                if (args[2] == "id")
                {
                    if (!UUID.TryParse(args[3], out id))
                    {
                        io.Write("uuid is not valid");
                        return;
                    }
                }
                else if (args[2] == "name")
                {
                    RegionInfo ri;
                    if (m_GridService.TryGetValue(args[3], out ri))
                    {
                        id = ri.ID;
                    }
                    else
                    {
                        io.WriteFormatted("unknown region {0}", args[3]);
                        return;
                    }
                }
                else
                {
                    io.Write("Invalid parameters");
                    return;
                }

                var setFlags    = RegionFlags.None;
                var removeFlags = RegionFlags.None;

                bool val;
                for (int argi = 4; argi < args.Count; argi += 2)
                {
                    switch (args[argi])
                    {
                    case "fallback":
                        if (!bool.TryParse(args[argi + 1], out val))
                        {
                            io.WriteFormatted("{0} is not a valid boolean", args[argi + 1]);
                            return;
                        }
                        if (val)
                        {
                            setFlags    |= RegionFlags.FallbackRegion;
                            removeFlags &= ~RegionFlags.FallbackRegion;
                        }
                        else
                        {
                            setFlags    &= ~RegionFlags.FallbackRegion;
                            removeFlags |= RegionFlags.FallbackRegion;
                        }
                        break;

                    case "default":
                        if (!bool.TryParse(args[argi + 1], out val))
                        {
                            io.WriteFormatted("{0} is not a valid boolean", args[argi + 1]);
                            return;
                        }
                        if (val)
                        {
                            setFlags    |= RegionFlags.DefaultRegion;
                            removeFlags &= ~RegionFlags.DefaultRegion;
                        }
                        else
                        {
                            setFlags    &= ~RegionFlags.DefaultRegion;
                            removeFlags |= RegionFlags.DefaultRegion;
                        }
                        break;

                    case "defaulthg":
                        if (!bool.TryParse(args[argi + 1], out val))
                        {
                            io.WriteFormatted("{0} is not a valid boolean", args[argi + 1]);
                            return;
                        }
                        if (val)
                        {
                            setFlags    |= RegionFlags.DefaultIntergridRegion;
                            removeFlags &= ~RegionFlags.DefaultIntergridRegion;
                        }
                        else
                        {
                            setFlags    &= ~RegionFlags.DefaultIntergridRegion;
                            removeFlags |= RegionFlags.DefaultIntergridRegion;
                        }
                        break;

                    case "persistent":
                        if (!bool.TryParse(args[argi + 1], out val))
                        {
                            io.WriteFormatted("{0} is not a valid boolean", args[argi + 1]);
                            return;
                        }
                        if (val)
                        {
                            setFlags    |= RegionFlags.Persistent;
                            removeFlags &= ~RegionFlags.Persistent;
                        }
                        else
                        {
                            setFlags    &= ~RegionFlags.Persistent;
                            removeFlags |= RegionFlags.Persistent;
                        }
                        break;

                    default:
                        io.WriteFormatted("{0} is not a known flag", args[argi]);
                        return;
                    }
                }

                try
                {
                    m_GridService.AddRegionFlags(id, setFlags);
                    m_GridService.RemoveRegionFlags(id, removeFlags);
                    m_RegionDefaultFlagsService.ChangeRegionDefaultFlags(id, setFlags, removeFlags);
                }
                catch
                {
                    io.Write("Failed to set new region flag defaults");
                }
            }
        }