Exemple #1
0
 private void AddTo(TreeNodeCollection nodeList, WorkGroupStructureNode node)
 {
     WorkGroupControl.SimpleWorkGroupTreeNode simpleWorkGroupTreeNode = new WorkGroupControl.SimpleWorkGroupTreeNode(node.Name, node.Authority);
     nodeList.Add(simpleWorkGroupTreeNode);
     if (node.ChildNodes != null)
     {
         foreach (WorkGroupStructureNode node2 in node.ChildNodes)
         {
             this.AddTo(simpleWorkGroupTreeNode.Nodes, node2);
         }
     }
     if (node.Childs != null)
     {
         foreach (WorkGroupCondition condition in node.Childs)
         {
             simpleWorkGroupTreeNode.AddCondition(condition);
             this.IncreaseConditionCountWorkGroup(condition);
         }
     }
 }
 private void ProcessMessage(object rawMessage)
 {
     if (rawMessage is LoginReply)
     {
         LoginReply loginReply = rawMessage as LoginReply;
         if (loginReply.Authority == Authority.None)
         {
             if (this.LoginFail != null)
             {
                 this.LoginFail(this, new EventArgs <Exception>(new Exception("Fail to login")));
             }
             this.Stop();
             return;
         }
         if (this.LoginSuccess != null)
         {
             this.LoginSuccess(this, EventArgs.Empty);
             return;
         }
     }
     else
     {
         if (rawMessage is ClientInfoMessage)
         {
             ClientInfoMessage clientInfoMessage = rawMessage as ClientInfoMessage;
             this.workGroups = WorkGroupStructureNode.GetWorkGroup(clientInfoMessage.WorkGroup);
             using (IEnumerator <KeyValuePair <int, RCClient> > enumerator = clientInfoMessage.Clients.GetEnumerator())
             {
                 while (enumerator.MoveNext())
                 {
                     KeyValuePair <int, RCClient> keyValuePair = enumerator.Current;
                     RCClient rcclient = new RCClient(keyValuePair.Key, keyValuePair.Value.ClientIP);
                     rcclient.AssignFrom(keyValuePair.Value);
                     this.AddClient(rcclient);
                     this.CheckAndAddHeroesAdmin(rcclient);
                 }
                 return;
             }
         }
         if (rawMessage is ClientAddedMessage)
         {
             ClientAddedMessage clientAddedMessage = rawMessage as ClientAddedMessage;
             RCClient           rcclient2          = new RCClient(clientAddedMessage.ID, clientAddedMessage.Client.ClientIP);
             rcclient2.AssignFrom(clientAddedMessage.Client);
             this.AddClient(rcclient2);
             this.CheckAndAddHeroesAdmin(rcclient2);
             return;
         }
         if (rawMessage is ClientRemovedMessage)
         {
             ClientRemovedMessage clientRemovedMessage = rawMessage as ClientRemovedMessage;
             this.RemoveClient(clientRemovedMessage.ID);
             this.CheckAndRemoveHeroesAdmin(clientRemovedMessage.ID);
             return;
         }
         if (rawMessage is ControlReplyMessage)
         {
             ControlReplyMessage controlReplyMessage = rawMessage as ControlReplyMessage;
             if (this.clientList.ContainsKey(controlReplyMessage.ID))
             {
                 this.ProcessClientMessage(new Packet(controlReplyMessage.Packet), this.clientList[controlReplyMessage.ID]);
             }
         }
     }
 }
Exemple #3
0
        public RemoteControlSystemManager(RCUserHandler _userClient, ICollection <RCClient> _clientList, IWorkGroupStructureNode[] workGroupStructure, IWorkGroupStructureNode[] serverGroupStructure, IEnumerable <RCProcess> _processTemplateInfo)
        {
            this.InitializeComponent();
            this.tabPageRCCControl.Text       = LocalizeText.Get(345);
            this.tabPageWorkGroupControl.Text = LocalizeText.Get(346);
            this.tabPageProcessTemplate.Text  = LocalizeText.Get(347);
            this.buttonOK.Text     = LocalizeText.Get(348);
            this.buttonCancel.Text = LocalizeText.Get(349);
            this.tabPageServerGroupControl.Text = LocalizeText.Get(515);
            this.Text = LocalizeText.Get(350);
            if (_userClient.Authority < Authority.Supervisor)
            {
                this.tabPageWorkGroupControl.Enabled = false;
                this.tabPageProcessTemplate.Enabled  = false;
                this.tabControl.Controls.Remove(this.tabPageWorkGroupControl);
                this.tabControl.Controls.Remove(this.tabPageServerGroupControl);
                this.tabControl.Controls.Remove(this.tabPageProcessTemplate);
            }
            this.userClient               = _userClient;
            this.clientList               = new SortedList();
            this.userClient.ClientAdd    += this.RC_ClientAdd;
            this.userClient.ClientRemove += this.RC_ClientRemove;
            Dictionary <int, RCClient> dictionary = new Dictionary <int, RCClient>();

            foreach (RCClient rcclient in _clientList)
            {
                this.clientList.Add(rcclient.ID, rcclient);
                RCClient rcclient2 = rcclient.Clone();
                foreach (RCProcess rcprocess in rcclient.ProcessList)
                {
                    WorkGroupStructureNode workGroupStructureNode = null;
                    if (workGroupStructure != null)
                    {
                        foreach (WorkGroupStructureNode workGroupStructureNode2 in workGroupStructure)
                        {
                            workGroupStructureNode = workGroupStructureNode2.GetParent(new WorkGroupCondition(rcclient.Name, rcprocess.Name));
                            if (workGroupStructureNode != null)
                            {
                                break;
                            }
                        }
                    }
                    if (workGroupStructureNode != null)
                    {
                        if (workGroupStructureNode.Authority > this.userClient.Authority)
                        {
                            ((RCProcessCollection)rcclient2.ProcessList).Remove(rcprocess.Name);
                        }
                    }
                    else if (this.userClient.Authority < Authority.Supervisor)
                    {
                        ((RCProcessCollection)rcclient2.ProcessList).Remove(rcprocess.Name);
                    }
                }
                if (rcclient.ProcessList.Count == 0 | rcclient2.ProcessList.Count > 0)
                {
                    dictionary.Add(rcclient2.ID, rcclient2);
                }
            }
            RCProcessCollection rcprocessCollection = new RCProcessCollection();

            foreach (RCProcess item in _processTemplateInfo)
            {
                rcprocessCollection.Add(item);
            }
            this.rcClientControl.AddClients(dictionary.Values);
            this.rcClientControl.SetTemplateList(rcprocessCollection);
            this.workGroupControl.AddWorkGroup(workGroupStructure);
            this.workGroupControl.AddClients(dictionary.Values);
            this.serverGroupControl.AddServerGroup(serverGroupStructure);
            this.serverGroupControl.AddClients(dictionary.Values);
            this.processTemplateControl.SetTemplateList(rcprocessCollection);
        }
Exemple #4
0
        private static void LoadConfig(string fileName)
        {
            if (!File.Exists(fileName))
            {
                Log <RCServerService> .Logger.Warn("Cannot find configuration file!");
            }
            else
            {
                XmlTextReader xmlTextReader = null;
                try
                {
                    try
                    {
                        xmlTextReader = new XmlTextReader(fileName)
                        {
                            WhitespaceHandling = WhitespaceHandling.None
                        };
                        xmlTextReader.MoveToContent();
                        bool flag = true;
                        while (true)
                        {
                            if (!flag)
                            {
                                flag = true;
                            }
                            else if (!xmlTextReader.Read())
                            {
                                if (Base.WorkGroupString == null)
                                {
                                    Base.WorkGroupString = "<WorkGroups/>";
                                }
                                if (Base.ServerGroupString == null)
                                {
                                    Base.ServerGroupString = "<ServerGroups/>";
                                }
                                return;
                            }
                            if (xmlTextReader.NodeType == XmlNodeType.Element)
                            {
                                string name = xmlTextReader.Name;
                                string str  = name;
                                if (name != null)
                                {
                                    if (str == "Server")
                                    {
                                        Base.ReadServerInfo(xmlTextReader);
                                    }
                                    else if (str == "ProcessTemplates")
                                    {
                                        if (!xmlTextReader.IsEmptyElement)
                                        {
                                            Base.ReadProcessTemplateInfo(xmlTextReader);
                                        }
                                    }
                                    else if (str == "WorkGroups")
                                    {
                                        if (Base.WorkGroupString != null)
                                        {
                                            throw new FormatException("<WorkGroups> tag cannot be appeared before");
                                        }
                                        Base.WorkGroupString = xmlTextReader.ReadOuterXml();
                                        flag = false;
                                        WorkGroupStructureNode.GetWorkGroup(Base.WorkGroupString);
                                    }
                                    else if (str == "ServerGroups")
                                    {
                                        if (Base.ServerGroupString != null)
                                        {
                                            break;
                                        }
                                        Base.ServerGroupString = xmlTextReader.ReadOuterXml();
                                        flag = false;
                                        ServerGroupStructureNode.GetServerGroup(Base.ServerGroupString);
                                    }
                                    else if (str == "Authority")
                                    {
                                        Base.Security.LoadSecurity(xmlTextReader);
                                        flag = false;
                                    }
                                    else if (str == "EmergencyCall")
                                    {
                                        Base.Emergency.LoadEmergencyInfo(xmlTextReader);
                                        flag = false;
                                    }
                                }
                            }
                        }
                        throw new FormatException("<ServerGroups> tag cannot be appeared before");
                    }
                    catch (Exception exception)
                    {
                        Log <RCServerService> .Logger.Error("Exception occured while loading configuration", exception);

                        throw new ApplicationException("Cannot start service because configuration is invalid!");
                    }
                }
                finally
                {
                    if (xmlTextReader != null)
                    {
                        xmlTextReader.Close();
                    }
                }
            }
        }
 private void ProcessMessage(object rawMessage)
 {
     if (rawMessage is LoginReply)
     {
         this.clientList.Clear();
         LoginReply loginReply = rawMessage as LoginReply;
         if (BaseConfiguration.ServerVersion != loginReply.ServerVersion)
         {
             if (this.ConnectionResulted != null)
             {
                 this.ConnectionResulted(this, new EventArgs <RCUserHandler.ConnectionResult>(RCUserHandler.ConnectionResult.VersionMismatch));
             }
             this.Stop();
             return;
         }
         this.Authority = loginReply.Authority;
         if (this.ConnectionResulted != null)
         {
             this.ConnectionResulted(this, new EventArgs <RCUserHandler.ConnectionResult>(RCUserHandler.ConnectionResult.Success));
             return;
         }
     }
     else
     {
         if (rawMessage is EmergencyCallMessage)
         {
             EmergencyCallMessage emergencyCallMessage = rawMessage as EmergencyCallMessage;
             List <string>        value = new List <string>(emergencyCallMessage.Emergencies);
             this.EmergencyCallInfo(this, new EventArgs <List <string> >(value));
             return;
         }
         if (rawMessage is ClientInfoMessage)
         {
             ClientInfoMessage clientInfoMessage = rawMessage as ClientInfoMessage;
             if (this.WorkGroupStructureChange != null)
             {
                 this.WorkGroupStructureChange(this, new RCUserHandler.WorkGroupStructureEventArgs(WorkGroupStructureNode.GetWorkGroup(clientInfoMessage.WorkGroup)));
             }
             if (this.ServerGroupStructureChange != null)
             {
                 this.ServerGroupStructureChange(this, new RCUserHandler.WorkGroupStructureEventArgs(ServerGroupStructureNode.GetServerGroup(clientInfoMessage.ServerGroup)));
             }
             foreach (KeyValuePair <int, RCClient> keyValuePair in clientInfoMessage.Clients)
             {
                 RCClient rcclient = new RCClient(keyValuePair.Key, keyValuePair.Value.ClientIP);
                 rcclient.AssignFrom(keyValuePair.Value);
                 this.clientList.Add(keyValuePair.Key, rcclient);
                 if (this.ClientAdd != null)
                 {
                     this.ClientAdd(this, new EventArgs <RCClient>(rcclient));
                 }
             }
             foreach (NotifyMessage value2 in clientInfoMessage.Logs)
             {
                 this.Notify(this, new EventArgs <NotifyMessage>(value2));
             }
             this.firstUpdated = true;
             return;
         }
         if (rawMessage is GetUserListReply)
         {
             GetUserListReply getUserListReply = rawMessage as GetUserListReply;
             List <Member>    list             = new List <Member>();
             foreach (KeyValuePair <string, Authority> keyValuePair2 in getUserListReply.Users)
             {
                 list.Add(new Member(keyValuePair2.Key, keyValuePair2.Value));
             }
             this.ReceivedUserListReply(this, new EventArgs <IEnumerable <Member> >(list));
             return;
         }
         if (rawMessage is WorkGroupChangeMessage)
         {
             if (this.WorkGroupStructureChange != null)
             {
                 WorkGroupChangeMessage workGroupChangeMessage = rawMessage as WorkGroupChangeMessage;
                 this.WorkGroupStructureChange(this, new RCUserHandler.WorkGroupStructureEventArgs(WorkGroupStructureNode.GetWorkGroup(workGroupChangeMessage.WorkGroup)));
                 return;
             }
         }
         else if (rawMessage is ServerGroupChangeMessage)
         {
             if (this.ServerGroupStructureChange != null)
             {
                 ServerGroupChangeMessage serverGroupChangeMessage = rawMessage as ServerGroupChangeMessage;
                 this.ServerGroupStructureChange(this, new RCUserHandler.WorkGroupStructureEventArgs(ServerGroupStructureNode.GetServerGroup(serverGroupChangeMessage.ServerGroup)));
                 return;
             }
         }
         else if (rawMessage is ClientAddedMessage)
         {
             ClientAddedMessage clientAddedMessage = rawMessage as ClientAddedMessage;
             RCClient           rcclient2          = new RCClient(clientAddedMessage.ID, clientAddedMessage.Client.ClientIP);
             rcclient2.AssignFrom(clientAddedMessage.Client);
             if (this.clientList.ContainsKey(clientAddedMessage.ID))
             {
                 Utility.ShowErrorMessage(LocalizeText.Get(217) + clientAddedMessage.ID);
                 return;
             }
             this.clientList.Add(rcclient2.ID, rcclient2);
             this.ClientAdd(this, new EventArgs <RCClient>(rcclient2));
             return;
         }
         else if (rawMessage is ClientRemovedMessage)
         {
             ClientRemovedMessage clientRemovedMessage = rawMessage as ClientRemovedMessage;
             if (!this.clientList.ContainsKey(clientRemovedMessage.ID))
             {
                 return;
             }
             RCClient value3 = this.clientList[clientRemovedMessage.ID];
             this.clientList.Remove(clientRemovedMessage.ID);
             if (this.ClientRemove != null)
             {
                 this.ClientRemove(this, new EventArgs <RCClient>(value3));
                 return;
             }
         }
         else if (rawMessage is ControlEnterReply)
         {
             if (this.ControlReply != null)
             {
                 ControlEnterReply value4 = rawMessage as ControlEnterReply;
                 this.ControlReply(this, new EventArgs <ControlEnterReply>(value4));
                 return;
             }
         }
         else if (rawMessage is ControlReplyMessage)
         {
             ControlReplyMessage controlReplyMessage = rawMessage as ControlReplyMessage;
             if (this.firstUpdated)
             {
                 if (this.clientList.Count == 0 || (this.clientList.Count > 0 && !this.clientList.ContainsKey(controlReplyMessage.ID)))
                 {
                     Type type = this.MF.GetType(new Packet(controlReplyMessage.Packet));
                     Utility.ShowErrorMessage(string.Concat(new object[]
                     {
                         LocalizeText.Get(220),
                         controlReplyMessage.ID,
                         ":",
                         type.ToString()
                     }));
                     return;
                 }
                 this.ProcessRCClientMessage(this.clientList[controlReplyMessage.ID], controlReplyMessage.Packet);
                 return;
             }
         }
         else if (rawMessage is NotifyMessage)
         {
             if (this.Notify != null)
             {
                 NotifyMessage value5 = rawMessage as NotifyMessage;
                 this.Notify(this, new EventArgs <NotifyMessage>(value5));
                 return;
             }
         }
         else if (rawMessage is ChildProcessLogListReplyMessage)
         {
             if (this.ChildProcessListed != null)
             {
                 ChildProcessLogListReplyMessage childProcessLogListReplyMessage = rawMessage as ChildProcessLogListReplyMessage;
                 if (this.clientList.ContainsKey(childProcessLogListReplyMessage.ClientID))
                 {
                     RCClient sender = this.clientList[childProcessLogListReplyMessage.ClientID];
                     this.ChildProcessListed(sender, new EventArgs <ChildProcessLogListReplyMessage>(childProcessLogListReplyMessage));
                     return;
                 }
             }
         }
         else if (rawMessage is ChildProcessLogReplyMessage)
         {
             if (this.ChildProcessLogOpened != null)
             {
                 ChildProcessLogReplyMessage value6 = rawMessage as ChildProcessLogReplyMessage;
                 this.ChildProcessLogOpened(this, new EventArgs <ChildProcessLogReplyMessage>(value6));
                 return;
             }
         }
         else if (rawMessage is ChildProcessLogMessage)
         {
             if (this.ChildProcessLogged != null)
             {
                 ChildProcessLogMessage value7 = rawMessage as ChildProcessLogMessage;
                 this.ChildProcessLogged(this, new EventArgs <ChildProcessLogMessage>(value7));
                 return;
             }
         }
         else if (rawMessage is ExeInfoReplyMessage && this.ChildProcessListed != null)
         {
             ExeInfoReplyMessage exeInfoReplyMessage = rawMessage as ExeInfoReplyMessage;
             if (this.clientList.ContainsKey(exeInfoReplyMessage.ClientID))
             {
                 RCClient sender2 = this.clientList[exeInfoReplyMessage.ClientID];
                 this.ExeInfo(sender2, new EventArgs <ExeInfoReplyMessage>(exeInfoReplyMessage));
             }
         }
     }
 }