public SROServiceContext(SROClient client, SROServiceComponent serviceComponent) { if (client == null || serviceComponent == null) { Logger.SERVICE.Print(LogLevel.Allocation, "SROServiceContext or client null"); this.IsRunning = false; return; } this.ServiceComponent = serviceComponent; this.Client = client; this.m_clientSocket = this.Client.Socket; this.m_serviceSecurity = new Security(); this.m_clientSecurity = client.Security; // //this.m_serviceSecurity.ChangeIdentity(serviceComponent.Fingerprint); this.IsRunning = false; if (ServiceComponent.IsDebugMode) { Logger.SERVICE.Print(LogLevel.Allocation, "SROServiceContext created from Client"); } }
private void SetupComponents() { this.m_gatewayComponent = new SROServiceComponent(ServerServiceType.GATEWAY, 1) .SetFingerprint(new Fingerprint("GatewayServer", 0, SecurityFlags.Handshake & SecurityFlags.Blowfish & SecurityFlags.SecurityBytes, "")) .SetLocalEndPoint(this.ClientComponent.LocalGatewayEndPoint) .SetLocalBindTimeout(10) .SetServiceEndPoint(this.ClientComponent.ServiceEndPoint) .SetServiceBindTimeout(100) .SetMaxClientCount(500) .SetDebugMode(false); this.m_agentComponent = new SROServiceComponent(ServerServiceType.AGENT, 1) .SetFingerprint(new Fingerprint("AgentServer", 0, SecurityFlags.Handshake & SecurityFlags.Blowfish & SecurityFlags.SecurityBytes, "")) .SetLocalEndPoint(this.ClientComponent.LocalAgentEndPoint) .SetLocalBindTimeout(10) .SetServiceBindTimeout(100) .SetMaxClientCount(500) .SetDebugMode(false); }
public TCPServer(SROServiceComponent serviceComponent) { this.m_serviceComponent = serviceComponent; this.IsActive = false; }
private static void StartGateway() { //Burak 145.239.106.209 IPEndPoint service = new IPEndPoint(IPAddress.Parse("145.239.106.209"), 15779); SROServiceComponent gateway = new SROServiceComponent(ServerServiceType.GATEWAY, 1) .SetFingerprint(new Fingerprint("SR_Client", 0, SecurityFlags.Handshake & SecurityFlags.Blowfish & SecurityFlags.SecurityBytes, "")) .SetLocalEndPoint(new IPEndPoint(IPAddress.Parse("145.239.106.209"), 25779)) .SetLocalBindTimeout(10) .SetServiceEndPoint(service) .SetServiceBindTimeout(100) .SetMaxClientCount(500) .SetDebugMode(true); gateway.OnLocalSocketStatusChanged += new Action <SocketError>(delegate(SocketError error) { if (error == SocketError.Success) { Console.WriteLine("LOCAL socket bind SUCCESS! : " + gateway.LocalEndPoint.ToString()); } else { Console.WriteLine("LOCAL socket bind FAILED! : " + error); } }); gateway.OnServiceSocketStatusChanged += new Action <SROClient, SocketError>(delegate(SROClient client, SocketError error) { if (error == SocketError.Success) { Console.WriteLine("SERVICE socket connect SUCCESS! : " + gateway.ServiceEndPoint.ToString()); } else { Console.WriteLine("SERVICE socket connect FAILED! : " + error); } }); gateway.OnClientConnected += new Func <SROClient, bool>(delegate(SROClient client) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Client connection established : " + client.Socket.RemoteEndPoint); Console.ResetColor(); //if (string.IsNullOrEmpty(client.IPAddress)) { //Example // return false; //Decline client //} else { // //Accept client //} return(true); }); gateway.OnClientDisconnected += new Action <SROClient, ClientDisconnectType>(delegate(SROClient client, ClientDisconnectType disconnectType) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Client disconnected : " + client.IPAddress + " -- Reason : " + disconnectType); Console.ResetColor(); }); gateway.OnPacketReceived += new Func <SROClient, SROPacket, PacketSocketType, PacketResult>(delegate(SROClient client, SROPacket packet, PacketSocketType socketType) { DumpPacket(packet); //switch (packet.Opcode) { // case 0x1111: // return new PacketResult(PacketOperationType.DISCONNECT, new PacketResult.PacketDisconnectResultInfo("DC Reason : 0x5555 received")); // case 0x2222: // return new PacketResult(PacketOperationType.IGNORE); // case 0x3333: // return new PacketResult(PacketOperationType.INJECT, new PacketResult.PacketInjectResultInfo(packet, new List<Packet> { new Packet(0x3334), new Packet(0x3335) }, true)); // case 0x4444: // return new PacketResult(PacketOperationType.REPLACE, new PacketResult.PacketReplaceResultInfo(packet, new List<Packet> { new Packet(0x4445) })); // case 0x5555: // return new PacketResult(PacketOperationType.RESPONSE, new PacketResult.PacketResponseResultInfo(new Packet(0x5556))); // default: // return new PacketResult(PacketOperationType.NOTHING); //} return(new PacketResult(PacketOperationType.NOTHING)); }); gateway.DOBind(delegate(bool success, BindErrorType error) { if (success) { Console.WriteLine("EasySSA bind SUCCESS"); Console.WriteLine("Waiting client connection on : " + service.ToString()); } else { Console.WriteLine("EasySSA bind FAILED -- Reason : " + error); } }); }