Exemplo n.º 1
0
        private void HandleUpdateMuteListEntry(AgentCircuit circuit, Message m)
        {
            ViewerAgent agent = circuit.Agent;
            MuteListServiceInterface muteListService = agent.MuteListService;
            var req = (UpdateMuteListEntry)m;

            if (req.AgentID != req.CircuitAgentID ||
                req.SessionID != req.CircuitSessionID)
            {
                return;
            }

            if (muteListService == null)
            {
                return;
            }

            muteListService.Store(agent.ID, new MuteListEntry
            {
                Flags    = req.MuteFlags,
                MuteID   = req.MuteID,
                MuteName = req.MuteName,
                Type     = req.MuteType
            });
        }
Exemplo n.º 2
0
        private void HandleRemoveMuteListEntry(AgentCircuit circuit, Message m)
        {
            ViewerAgent agent = circuit.Agent;
            MuteListServiceInterface muteListService = agent.MuteListService;
            var req = (RemoveMuteListEntry)m;

            if (req.AgentID != req.CircuitAgentID ||
                req.SessionID != req.CircuitSessionID)
            {
                return;
            }

            if (muteListService == null)
            {
                return;
            }

            muteListService.Remove(agent.ID, req.MuteID, req.MuteName);
        }
Exemplo n.º 3
0
        private void HandleMuteListRequest(AgentCircuit circuit, Message m)
        {
            var req = (MuteListRequest)m;

            if (req.CircuitAgentID != req.AgentID ||
                req.CircuitSessionID != req.SessionID)
            {
                return;
            }
            ViewerAgent agent = circuit.Agent;
            MuteListServiceInterface muteListService = agent.MuteListService;
            bool useCached = false;
            bool useEmpty  = true;

            if (muteListService == null)
            {
                circuit.SendMessage(new UseCachedMuteList {
                    AgentID = agent.ID
                });
                return;
            }

            string filename = $"mutes{agent.ID}";

            using (var ms = new MemoryStream())
            {
                try
                {
                    List <MuteListEntry> list = muteListService.GetList(agent.ID, req.MuteCRC);
                    byte[] data;
                    if (list.Count != 0)
                    {
                        useEmpty = false;
                        data     = list.ToBinaryData();
                    }
                    else
                    {
                        data = new byte[0];
                    }
                    if (new Crc32().Compute(data) == req.MuteCRC)
                    {
                        useCached = true;
                    }
                    else if (!useEmpty)
                    {
                        agent.AddNewFile(filename, data);
                    }
                }
                catch (UseCachedMuteListException)
                {
                    useCached = true;
                }
            }

            if (useCached)
            {
                circuit.SendMessage(new UseCachedMuteList {
                    AgentID = agent.ID
                });
            }
            else if (useEmpty)
            {
                circuit.SendMessage(new GenericMessage {
                    Method = "emptymutelist"
                });
            }
            else
            {
                circuit.SendMessage(new MuteListUpdate {
                    AgentID = agent.ID, Filename = filename
                });
            }
        }
Exemplo n.º 4
0
        public void Startup(ConfigurationLoader loader)
        {
            IConfig config = loader.Config.Configs[GetType().FullName];

            m_MuteListService = loader.GetService <MuteListServiceInterface>(config.GetString("MuteListService", "MuteListService"));
        }