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]); } } } }
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); }
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)); } } } }