コード例 #1
0
ファイル: SROServiceContext.cs プロジェクト: Dentrax/EasySSA
        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");
            }
        }
コード例 #2
0
ファイル: SROClientContext.cs プロジェクト: Dentrax/EasySSA
 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);
 }
コード例 #3
0
ファイル: TCPServer.cs プロジェクト: Dentrax/EasySSA
 public TCPServer(SROServiceComponent serviceComponent)
 {
     this.m_serviceComponent = serviceComponent;
     this.IsActive           = false;
 }
コード例 #4
0
        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);
                }
            });
        }