Ejemplo n.º 1
0
        /*const int MODE_FMT = 0170000;
         * const int MODE_DIR = 0040000;
         * const int MODE_CHR = 0020000;
         * const int MODE_BLK = 0060000;
         * const int MODE_REG = 0100000;
         * const int MODE_LNK = 0120000;
         * const int MODE_SOCK = 0140000;
         * const int MODE_FIFO = 0010000;*/

        #endregion Constants

        #region Methods

        public void Connect(IPAddress Address, int UserID, int GroupID, int ClientTimeout, System.Text.Encoding characterEncoding, bool useSecurePort, bool useCache)
        {
            if (ClientTimeout == 0)
            {
                ClientTimeout = 60000;
            }

            if (characterEncoding == null)
            {
                characterEncoding = System.Text.Encoding.ASCII;
            }

            _RootDirectoryHandleObject = null;
            _CurrentItemHandleObject   = null;

            _MountedDevice = String.Empty;
            _CurrentItem   = String.Empty;

            _GroupID = GroupID;
            _UserID  = UserID;

            _MountProtocolV2 = new NFSv2MountProtocolClient(Address, OncRpcProtocols.ONCRPC_UDP, useSecurePort);
            _ProtocolV2      = new NFSv2ProtocolClient(Address, OncRpcProtocols.ONCRPC_UDP, useSecurePort);

            OncRpcClientAuthUnix authUnix = new OncRpcClientAuthUnix(System.Environment.MachineName, UserID, GroupID);

            _MountProtocolV2.GetClient().setAuth(authUnix);
            _MountProtocolV2.GetClient().setTimeout(ClientTimeout);
            _MountProtocolV2.GetClient().setCharacterEncoding(characterEncoding.WebName);

            _ProtocolV2.GetClient().setAuth(authUnix);
            _ProtocolV2.GetClient().setTimeout(ClientTimeout);
            _ProtocolV2.GetClient().setCharacterEncoding(characterEncoding.WebName);
        }
Ejemplo n.º 2
0
        public void Connect(IPAddress Address, int UserID, int GroupID, int ClientTimeout, System.Text.Encoding characterEncoding, bool useSecurePort, bool useCache)
        {
            if (ClientTimeout == 0)
            {
                ClientTimeout = 60000;
            }

            if (characterEncoding == null)
            {
                characterEncoding = System.Text.Encoding.ASCII;
            }

            _CurrentItem = String.Empty;

            useFHCache = useCache;


            if (useFHCache)
            {
                cached_attrs = new Hashtable();//new Dictionary<string, NFSAttributes>();
            }
            _rootFH = null;

            //_cwd = null;

            _cwf = null;

            //_cwhTree = new List<nfs_fh4>();
            //treePosition = 0;

            _GroupID = GroupID;
            _UserID  = UserID;

            _ProtocolV4 = new NFSv4ProtocolClient(Address, OncRpcProtocols.ONCRPC_TCP, useSecurePort);

            OncRpcClientAuthUnix authUnix = new OncRpcClientAuthUnix(Address.ToString(), UserID, GroupID);

            _ProtocolV4.GetClient().setAuth(authUnix);
            _ProtocolV4.GetClient().setTimeout(ClientTimeout);
            _ProtocolV4.GetClient().setCharacterEncoding(characterEncoding.WebName);

            //send null dummy procedure to see if server is responding
            sendNullPRocedure();
        }
Ejemplo n.º 3
0
        /// <exception cref="org.acplt.oncrpc.OncRpcException"></exception>
        /// <exception cref="System.IO.IOException"></exception>
        public EchoClientTest()
        {
            //
            // Create a portmap client object, which can then be used to contact
            // the local ONC/RPC ServerTest test server.
            //
            OncRpcClient client = new OncRpcTcpClient(IPAddress.Loopback, unchecked ((int)(0x49679)), 1, 0);

            //
            // Ping the test server...
            //
            System.Console.Out.Write("pinging test server: ");
            try
            {
                client.call(0, XdrVoid.XDR_VOID, XdrVoid.XDR_VOID
                            );
            }
            catch (OncRpcException e)
            {
                System.Console.Out.WriteLine("method call failed unexpectedly:");
                System.Console.Out.WriteLine(e.StackTrace);
                System.Environment.Exit(1);
            }
            System.Console.Out.WriteLine("test server is alive.");
            //
            // Now check the echo RPC call...
            //
            string[] messages = new string[] { "Open Source", "is not yet", "another buzzword." };
            checkEcho(client, messages);
            //
            // Now test AUTH_UNIX authentication. First start with an
            // invalid credential...
            //
            OncRpcClientAuth auth = new OncRpcClientAuthUnix
                                        ("marvin", 0, 0, new int[0]);

            client.setAuth(auth);
            System.Console.Out.Write("checking AUTH_UNIX with invalid credential: ");
            try
            {
                client.call(0, XdrVoid.XDR_VOID, XdrVoid.XDR_VOID
                            );
            }
            catch (OncRpcAuthenticationException ae)
            {
                if (ae.getAuthStatus() != OncRpcAuthStatus.ONCRPC_AUTH_BADCRED)
                {
                    System.Console.Out.WriteLine("received wrong authentication exception with status of "
                                                 + ae.getAuthStatus());
                    System.Console.Out.WriteLine(ae.StackTrace);
                    System.Environment.Exit(1);
                }
            }
            catch (OncRpcException e)
            {
                System.Console.Out.WriteLine("method call failed unexpectedly:");
                System.Console.Out.WriteLine(e.StackTrace);
                System.Environment.Exit(1);
            }
            System.Console.Out.WriteLine("passed.");
            auth = new OncRpcClientAuthUnix("marvin", 42, 815, new int[0]);
            client.setAuth(auth);
            messages = new string[] { "AUTH_UNIX", "is like", "*NO* authentication", "--", "it"
                                      , "uses", "*NO CRYPTOGRAPHY*", "for securing", "ONC/RPC messages" };
            checkEcho(client, messages);
            client.setAuth(null);
            //
            // Release resources bound by ONC/RPC client object as soon as possible
            // so might help the garbage wo/man. Yeah, this is now a political
            // correct comment.
            //
            client.close();
            client = null;
        }