예제 #1
0
        bool AcceptClient(PipeStream client, out ServerConnection conn)
        {
            PipeTransport transport = new PipeTransport ();
            //client.Client.Blocking = true;
            //transport.SocketHandle = (long)client.Client.Handle;
            transport.Stream = client;
            conn = new ServerConnection (transport);
            conn.Server = this;
            conn.Id = Id;

            if (conn.Transport.Stream.ReadByte () != 0)
                return false;

            conn.isConnected = true;

            SaslPeer remote = new SaslPeer ();
            remote.stream = transport.Stream;
            SaslServer local = new SaslServer ();
            local.stream = transport.Stream;
            local.Guid = Id;

            local.Peer = remote;
            remote.Peer = local;

            bool success = local.Authenticate ();
            //bool success = true;

            Console.WriteLine ("Success? " + success);

            if (!success)
                return false;

            conn.UserId = ((SaslServer)local).uid;

            conn.isAuthenticated = true;

            return true;
        }
예제 #2
0
        bool AcceptClient(UnixSocket csock, out ServerConnection conn)
        {
            //TODO: use the right abstraction here, probably using the Server class
            UnixNativeTransport transport = new UnixNativeTransport ();
            //client.Client.Blocking = true;
            transport.socket = csock;
            transport.SocketHandle = (long)csock.Handle;
            transport.Stream = new UnixStream (csock);
            //Connection conn = new Connection (transport);
            //Connection conn = new ServerConnection (transport);
            //ServerConnection conn = new ServerConnection (transport);
            conn = new ServerConnection (transport);
            conn.Server = this;
            conn.Id = Id;

            if (conn.Transport.Stream.ReadByte () != 0)
                return false;

            conn.isConnected = true;

            SaslPeer remote = new SaslPeer ();
            remote.stream = transport.Stream;
            SaslServer local = new SaslServer ();
            local.stream = transport.Stream;
            local.Guid = Id;

            local.Peer = remote;
            remote.Peer = local;

            bool success = local.Authenticate ();

            Console.WriteLine ("Success? " + success);

            if (!success)
                return false;

            conn.UserId = ((SaslServer)local).uid;

            conn.isAuthenticated = true;

            return true;
        }