Пример #1
0
    public string SendCommand(string cmd)
    {
        int    num;
        string str;
        IntPtr ftpCommand = new IntPtr();

        if (((str = cmd) != null) && (str == "PASV"))
        {
            num = WININET.FtpCommand(this._hConnect, false, 1, cmd, IntPtr.Zero, ref ftpCommand);
        }
        else
        {
            num = WININET.FtpCommand(this._hConnect, false, 1, cmd, IntPtr.Zero, ref ftpCommand);
        }
        int capacity = 0x2000;

        if (num == 0)
        {
            this.Error();
        }
        else if (ftpCommand != IntPtr.Zero)
        {
            StringBuilder buffer    = new StringBuilder(capacity);
            int           bytesRead = 0;
            while ((WININET.InternetReadFile(ftpCommand, buffer, capacity, ref bytesRead) == 1) && (bytesRead > 1))
            {
            }
            return(buffer.ToString());
        }
        return("");
    }
Пример #2
0
 public void RemoveFile(string fileName)
 {
     if (WININET.FtpDeleteFile(this._hConnect, fileName) == 0)
     {
         this.Error();
     }
 }
Пример #3
0
 public void RenameFile(string existingFile, string newFile)
 {
     if (WININET.FtpRenameFile(this._hConnect, existingFile, newFile) == 0)
     {
         this.Error();
     }
 }
Пример #4
0
 public void GetFile(string remoteFile, string localFile, bool failIfExists)
 {
     if (WININET.FtpGetFile(this._hConnect, remoteFile, localFile, failIfExists, 0x80, 2, IntPtr.Zero) == 0)
     {
         this.Error();
     }
 }
Пример #5
0
 public void RemoveDirectory(string directory)
 {
     if (WININET.FtpRemoveDirectory(this._hConnect, directory) == 0)
     {
         this.Error();
     }
 }
Пример #6
0
    public long GetFileSize(string file)
    {
        IntPtr hConnect = new IntPtr(WININET.FtpOpenFile(this._hConnect, file, 0x80000000, 2, IntPtr.Zero));

        if (hConnect == IntPtr.Zero)
        {
            this.Error();
        }
        else
        {
            try
            {
                int dwFileSizeHigh = 0;
                int num2           = WININET.FtpGetFileSize(hConnect, ref dwFileSizeHigh);
                return((dwFileSizeHigh << 0x20) | num2);
            }
            catch (Exception)
            {
                this.Error();
            }
            finally
            {
                WININET.InternetCloseHandle(hConnect);
            }
        }
        return(0L);
    }
Пример #7
0
 public void CreateDirectory(string path)
 {
     if (WININET.FtpCreateDirectory(this._hConnect, path) == 0)
     {
         this.Error();
     }
 }
Пример #8
0
 public void SetCurrentDirectory(string directory)
 {
     if (WININET.FtpSetCurrentDirectory(this._hConnect, directory) == 0)
     {
         this.Error();
     }
 }
Пример #9
0
 public void PutFile(string localFile, string remoteFile)
 {
     if (WININET.FtpPutFile(this._hConnect, localFile, remoteFile, 2, IntPtr.Zero) == 0)
     {
         this.Error();
     }
 }
Пример #10
0
    private string InternetLastResponseInfo(ref int code)
    {
        int           capacity = 0x2000;
        StringBuilder buffer   = new StringBuilder(capacity);

        WININET.InternetGetLastResponseInfo(ref code, buffer, ref capacity);
        return(buffer.ToString());
    }
Пример #11
0
    public FtpFileInfo[] GetFiles(string mask)
    {
        FtpFileInfo[]          infoArray;
        WINAPI.WIN32_FIND_DATA findFileData = new WINAPI.WIN32_FIND_DATA();
        IntPtr hInternet = WININET.FtpFindFirstFile(this._hConnect, mask, ref findFileData, 0x4000000, IntPtr.Zero);

        try
        {
            List <FtpFileInfo> list = new List <FtpFileInfo>();
            if (hInternet == IntPtr.Zero)
            {
                if (Marshal.GetLastWin32Error() != 0x12)
                {
                    this.Error();
                }
                return(list.ToArray());
            }
            if ((findFileData.dfFileAttributes & 0x10) != 0x10)
            {
                FtpFileInfo item = new FtpFileInfo(this, new string(findFileData.fileName).TrimEnd(new char[1]))
                {
                    LastAccessTime = findFileData.ftLastAccessTime.ToDateTime(),
                    LastWriteTime  = findFileData.ftLastWriteTime.ToDateTime(),
                    CreationTime   = findFileData.ftCreationTime.ToDateTime(),
                    Attributes     = (FileAttributes)findFileData.dfFileAttributes
                };
                list.Add(item);
            }
            for (findFileData = new WINAPI.WIN32_FIND_DATA(); WININET.InternetFindNextFile(hInternet, ref findFileData) != 0; findFileData = new WINAPI.WIN32_FIND_DATA())
            {
                if ((findFileData.dfFileAttributes & 0x10) != 0x10)
                {
                    FtpFileInfo info2 = new FtpFileInfo(this, new string(findFileData.fileName).TrimEnd(new char[1]))
                    {
                        LastAccessTime = findFileData.ftLastAccessTime.ToDateTime(),
                        LastWriteTime  = findFileData.ftLastWriteTime.ToDateTime(),
                        CreationTime   = findFileData.ftCreationTime.ToDateTime(),
                        Attributes     = (FileAttributes)findFileData.dfFileAttributes
                    };
                    list.Add(info2);
                }
            }
            if (Marshal.GetLastWin32Error() != 0x12)
            {
                this.Error();
            }
            infoArray = list.ToArray();
        }
        finally
        {
            if (hInternet != IntPtr.Zero)
            {
                WININET.InternetCloseHandle(hInternet);
            }
        }
        return(infoArray);
    }
Пример #12
0
 public void Open()
 {
     if (string.IsNullOrEmpty(this._host))
     {
         throw new ArgumentNullException("Host");
     }
     this._hInternet = WININET.InternetOpen(Environment.UserName, 0, null, null, 4);
     if (this._hInternet == IntPtr.Zero)
     {
         this.Error();
     }
 }
Пример #13
0
    public string GetCurrentDirectory()
    {
        int           capacity         = 0x105;
        StringBuilder currentDirectory = new StringBuilder(capacity);

        if (WININET.FtpGetCurrentDirectory(this._hConnect, currentDirectory, ref capacity) == 0)
        {
            this.Error();
            return(null);
        }
        return(currentDirectory.ToString());
    }
Пример #14
0
    private List <string> List(string mask, bool onlyDirectories)
    {
        List <string> list2;

        WINAPI.WIN32_FIND_DATA findFileData = new WINAPI.WIN32_FIND_DATA();
        IntPtr hInternet = WININET.FtpFindFirstFile(this._hConnect, mask, ref findFileData, 0x4000000, IntPtr.Zero);

        try
        {
            List <string> list = new List <string>();
            if (hInternet == IntPtr.Zero)
            {
                if (Marshal.GetLastWin32Error() != 0x12)
                {
                    this.Error();
                }
                return(list);
            }
            if (onlyDirectories && ((findFileData.dfFileAttributes & 0x10) == 0x10))
            {
                list.Add(new string(findFileData.fileName).TrimEnd(new char[1]));
            }
            else if (!onlyDirectories)
            {
                list.Add(new string(findFileData.fileName).TrimEnd(new char[1]));
            }
            for (findFileData = new WINAPI.WIN32_FIND_DATA(); WININET.InternetFindNextFile(hInternet, ref findFileData) != 0; findFileData = new WINAPI.WIN32_FIND_DATA())
            {
                if (onlyDirectories && ((findFileData.dfFileAttributes & 0x10) == 0x10))
                {
                    list.Add(new string(findFileData.fileName).TrimEnd(new char[1]));
                }
                else if (!onlyDirectories)
                {
                    list.Add(new string(findFileData.fileName).TrimEnd(new char[1]));
                }
            }
            if (Marshal.GetLastWin32Error() != 0x12)
            {
                this.Error();
            }
            list2 = list;
        }
        finally
        {
            if (hInternet != IntPtr.Zero)
            {
                WININET.InternetCloseHandle(hInternet);
            }
        }
        return(list2);
    }
Пример #15
0
 public void Login(string username, string password)
 {
     if (username == null)
     {
         throw new ArgumentNullException("username");
     }
     if (password == null)
     {
         throw new ArgumentNullException("password");
     }
     this._hConnect = WININET.InternetConnect(this._hInternet, this._host, this._port, username, password, 1, 0x8000000, IntPtr.Zero);
     if (this._hConnect == IntPtr.Zero)
     {
         this.Error();
     }
 }
Пример #16
0
 public void Dispose()
 {
     if (!this._disposed)
     {
         if (this._hConnect != IntPtr.Zero)
         {
             WININET.InternetCloseHandle(this._hConnect);
         }
         if (this._hInternet != IntPtr.Zero)
         {
             WININET.InternetCloseHandle(this._hInternet);
         }
         this._hInternet = IntPtr.Zero;
         this._hConnect  = IntPtr.Zero;
         this._disposed  = true;
         GC.SuppressFinalize(this);
     }
 }
        protected override void ProcessRecord()
        {
            switch (method)
            {
            case LookupMethod.API:
                int returnValue = 0;
                WININET.InternetGetConnectedState(out returnValue, 0);
                WriteObject(Convert.ToBoolean(returnValue));
                break;

            case LookupMethod.DNS:
                Resolver    dnsResolver = new Resolver(dnsServer);
                IPHostEntry dnsResult   = dnsResolver.Resolve(hostName);
                WriteObject(dnsResult.AddressList.Length != 0);
                break;

            case LookupMethod.WEB:
                Resolver    httpResolver = new Resolver(dnsServer);
                IPHostEntry httpResult   = httpResolver.Resolve(hostName);

                if (httpResult.AddressList.Length == 0)
                {
                    WriteObject(false);
                }
                else
                {
                    try
                    {
                        HttpWebRequest  httpWebRequest  = (HttpWebRequest)WebRequest.Create("http://www.google.com");
                        HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                    }
                    catch
                    {
                        WriteObject(false);
                    }
                    WriteObject(true);
                }

                break;
            }
        }
Пример #18
0
    public bool DirectoryExists(string path)
    {
        bool flag;

        WINAPI.WIN32_FIND_DATA findFileData = new WINAPI.WIN32_FIND_DATA();
        IntPtr hInternet = WININET.FtpFindFirstFile(this._hConnect, path, ref findFileData, 0x4000000, IntPtr.Zero);

        try
        {
            if (hInternet == IntPtr.Zero)
            {
                return(false);
            }
            flag = true;
        }
        finally
        {
            if (hInternet != IntPtr.Zero)
            {
                WININET.InternetCloseHandle(hInternet);
            }
        }
        return(flag);
    }