예제 #1
0
        private void btnStartStop_Click(object sender, EventArgs e)
        {
            if (!State)
            {
                if (!int.TryParse(txtPort.Text, out Port))
                {
                    MessageBox.Show("Please input right port number!");
                    txtPort.Focus();
                    return;
                }
                ServerAddress = txtServer.Text;
                Username      = txtUsername.Text;
                Password      = txtPassword.Text;
                if (txtDir.Text == string.Empty)
                {
                    MessageBox.Show("Please choose a folder!"); return;
                }
                WatchedDir      = txtDir.Text;
                FilenamePattern = txtFNTemplate.Text;

                nc = new System.Net.NetworkCredential(Username, Password);
                FlagFtp.FtpClient testClient = new FlagFtp.FtpClient(nc);
                try
                {
                    testClient.GetDirectories(new Uri(string.Format(
                                                          @"ftp://{0}:{1}/",
                                                          ServerAddress,
                                                          Port)));
                }
                catch (Exception ex) { MessageBox.Show("Unable to connect to server!"); return; }
            }

            State                                 = !State;
            txtServer.Enabled                     =
                txtPort.Enabled                   =
                    txtUsername.Enabled           =
                        txtPassword.Enabled       =
                            txtFNTemplate.Enabled =
                                !State;
            fileWatcher.Path = WatchedDir;
            fileWatcher.EnableRaisingEvents = State;
            notifyIcon.Text = string.Format(@"AutoUpload{0}Current State:{1}",
                                            Environment.NewLine,
                                            State ? "Started" : "Stopped");

            this.Hide();
            notifyIcon.ShowBalloonTip(5000, "AutoUpload", "Successful Started!", ToolTipIcon.Info);
        }
예제 #2
0
        private void btnStartStop_Click(object sender, EventArgs e)
        {
            if (!State)
            {
                if (!int.TryParse(txtPort.Text, out Port))
                {
                    MessageBox.Show("Please input right port number!");
                    txtPort.Focus();
                    return;
                }
                ServerAddress = txtServer.Text;
                Username = txtUsername.Text;
                Password = txtPassword.Text;
                if (txtDir.Text == string.Empty) { MessageBox.Show("Please choose a folder!"); return; }
                WatchedDir = txtDir.Text;
                FilenamePattern = txtFNTemplate.Text;

                nc = new System.Net.NetworkCredential(Username, Password);
                FlagFtp.FtpClient testClient = new FlagFtp.FtpClient(nc);
                try
                {
                    testClient.GetDirectories(new Uri(string.Format(
                        @"ftp://{0}:{1}/",
                        ServerAddress,
                        Port)));
                }
                catch (Exception ex) { MessageBox.Show("Unable to connect to server!"); return; }
            }

            State = !State;
            txtServer.Enabled =
                txtPort.Enabled =
                txtUsername.Enabled =
                txtPassword.Enabled =
                txtFNTemplate.Enabled =
                !State;
            fileWatcher.Path = WatchedDir;
            fileWatcher.EnableRaisingEvents = State;
            notifyIcon.Text = string.Format(@"AutoUpload{0}Current State:{1}",
                Environment.NewLine,
                State ? "Started" : "Stopped");

            this.Hide();
            notifyIcon.ShowBalloonTip(5000, "AutoUpload", "Successful Started!", ToolTipIcon.Info);
        }
예제 #3
0
        private bool uploadThread_Init()
        {
            try
            {
                FlagFtp.FtpClient client = new FlagFtp.FtpClient(nc);

                uploadThread = new System.Threading.Thread(() =>
                {
                    while (fileQueue.Count > 0)
                    {
#if !DEBUG
                        try
                        {
#endif
                        if (!System.IO.File.Exists(fileQueue.Peek().FullName))
                        {
                            fileQueue.Dequeue(); continue;
                        }
                        string ObjFile = string.Format(@"ftp://{0}:{1}{2}",
                                                       ServerAddress,
                                                       Port,
                                                       (FilenamePattern.StartsWith("/") ? "" : "/") + FilenamePattern);
                        ObjFile       = ObjFile.Replace("%file%", fileQueue.Peek().Name);
                        DateTime time = DateTime.Now;
                        ObjFile       = ObjFile.Replace("%year%", time.Year.ToString("0000"));
                        ObjFile       = ObjFile.Replace("%month%", time.Month.ToString("00"));
                        ObjFile       = ObjFile.Replace("%day%", time.Day.ToString("00"));
                        ObjFile       = ObjFile.Replace("%hour%", time.Hour.ToString("00"));
                        ObjFile       = ObjFile.Replace("%minute%", time.Minute.ToString("00"));
                        ObjFile       = ObjFile.Replace("%second%", time.Second.ToString("00"));
                        ObjFile       = ObjFile.Replace("%client_user%", Environment.UserName);
                        ObjFile       = ObjFile.Replace("%server_user%", Username);

                        System.Text.RegularExpressions.Regex regEx = new System.Text.RegularExpressions.Regex(
                            @"%random\((\d+)\)%");
                        System.Text.RegularExpressions.MatchCollection matches = regEx.Matches(ObjFile);
                        foreach (System.Text.RegularExpressions.Match match in matches)
                        {
                            int digit;
                            if (!int.TryParse(match.Groups[1].Value, out digit))
                            {
                                digit = 100;
                            }
                            Random rand = new Random();
                            ObjFile     = ObjFile.Replace(match.Groups[0].Value, rand.Next(digit).ToString());
                        }



                        System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
                        System.IO.StreamReader md5_streamReader = new System.IO.StreamReader(fileQueue.Peek().FullName);
                        StringBuilder sb  = new StringBuilder();
                        byte[] md5_result = md5.ComputeHash(md5_streamReader.BaseStream);
                        for (int i = 0; i < md5_result.Length; i++)
                        {
                            sb.AppendFormat("{0:x2}", md5_result[i]);
                        }
                        ObjFile = ObjFile.Replace("%md5%", sb.ToString());
                        md5_streamReader.Close();

                        try
                        {
                            if (client.FileExists(new Uri(ObjFile)))
                            {
                                if (!System.IO.Directory.Exists(WatchedDir + "\\Failed"))
                                {
                                    System.IO.Directory.CreateDirectory(WatchedDir + "\\Failed");
                                }
                                System.IO.File.Move(fileQueue.Peek().FullName, WatchedDir + "\\Failed");
                                throw new Exception(string.Format(@"File {0} exists in server!", ObjFile));
                            }
                        } catch {}

                        System.IO.Stream writer       = client.OpenWrite(new Uri(ObjFile));
                        System.IO.StreamReader reader = new System.IO.StreamReader(fileQueue.Peek().FullName);
                        const int buffer_readsize     = 1024 * 32;
                        byte[] buffer   = new byte[buffer_readsize];
                        int buffer_size = 0;
                        do
                        {
                            buffer_size = reader.BaseStream.Read(buffer, 0, buffer_readsize);
                            writer.Write(buffer, 0, buffer_size);
                        } while (buffer_size == buffer_readsize);
                        writer.Close();
                        reader.Close();

                        if (!System.IO.Directory.Exists(WatchedDir + "\\Complete"))
                        {
                            System.IO.Directory.CreateDirectory(WatchedDir + "\\Complete");
                        }
                        System.IO.File.Move(fileQueue.Peek().FullName, WatchedDir + "\\Complete\\" + fileQueue.Peek().Name);
                        fileQueue.Dequeue();

#if !DEBUG
                    }
                    catch (Exception ex)
                    {
                    }
#endif
                    }
                });
            }
            catch (Exception ex)
            {
                notifyIcon.BalloonTipIcon = ToolTipIcon.Error;
                notifyIcon.BalloonTipText = ex.ToString();
                notifyIcon.ShowBalloonTip(3000);
                return(false);
            }
            return(true);
        }
예제 #4
0
        private bool uploadThread_Init()
        {
            try
            {
                FlagFtp.FtpClient client = new FlagFtp.FtpClient(nc);

                uploadThread = new System.Threading.Thread(() =>
                {
                    while (fileQueue.Count > 0)
                    {
            #if !DEBUG
                        try
                        {
            #endif
                        if (!System.IO.File.Exists(fileQueue.Peek().FullName))
                        {
                            fileQueue.Dequeue(); continue;
                        }
                            string ObjFile = string.Format(@"ftp://{0}:{1}{2}",
                                ServerAddress,
                                Port,
                                (FilenamePattern.StartsWith("/") ? "" : "/") + FilenamePattern);
                            ObjFile = ObjFile.Replace("%file%", fileQueue.Peek().Name);
                            DateTime time = DateTime.Now;
                            ObjFile = ObjFile.Replace("%year%", time.Year.ToString("0000"));
                            ObjFile = ObjFile.Replace("%month%", time.Month.ToString("00"));
                            ObjFile = ObjFile.Replace("%day%", time.Day.ToString("00"));
                            ObjFile = ObjFile.Replace("%hour%", time.Hour.ToString("00"));
                            ObjFile = ObjFile.Replace("%minute%", time.Minute.ToString("00"));
                            ObjFile = ObjFile.Replace("%second%", time.Second.ToString("00"));
                            ObjFile = ObjFile.Replace("%client_user%", Environment.UserName);
                            ObjFile = ObjFile.Replace("%server_user%", Username);

                            System.Text.RegularExpressions.Regex regEx = new System.Text.RegularExpressions.Regex(
                                @"%random\((\d+)\)%");
                            System.Text.RegularExpressions.MatchCollection matches = regEx.Matches(ObjFile);
                            foreach (System.Text.RegularExpressions.Match match in matches)
                            {
                                int digit;
                                if (!int.TryParse(match.Groups[1].Value, out digit))
                                {
                                    digit = 100;
                                }
                                Random rand = new Random();
                                ObjFile = ObjFile.Replace(match.Groups[0].Value, rand.Next(digit).ToString());
                            }

                            System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
                            System.IO.StreamReader md5_streamReader = new System.IO.StreamReader(fileQueue.Peek().FullName);
                            StringBuilder sb = new StringBuilder();
                            byte[] md5_result = md5.ComputeHash(md5_streamReader.BaseStream);
                            for (int i = 0; i < md5_result.Length; i++)
                            {
                                sb.AppendFormat("{0:x2}", md5_result[i]);
                            }
                            ObjFile = ObjFile.Replace("%md5%", sb.ToString());
                            md5_streamReader.Close();

                            try
                            {
                                if (client.FileExists(new Uri(ObjFile)))
                                {
                                    if (!System.IO.Directory.Exists(WatchedDir + "\\Failed")) { System.IO.Directory.CreateDirectory(WatchedDir + "\\Failed"); }
                                    System.IO.File.Move(fileQueue.Peek().FullName, WatchedDir + "\\Failed");
                                    throw new Exception(string.Format(@"File {0} exists in server!", ObjFile));
                                }
                            } catch {}

                            System.IO.Stream writer = client.OpenWrite(new Uri(ObjFile));
                            System.IO.StreamReader reader = new System.IO.StreamReader(fileQueue.Peek().FullName);
                            const int buffer_readsize = 1024 * 32;
                            byte[] buffer = new byte[buffer_readsize];
                            int buffer_size = 0;
                            do {
                                buffer_size = reader.BaseStream.Read(buffer,  0, buffer_readsize);
                                writer.Write(buffer, 0, buffer_size);
                            } while (buffer_size == buffer_readsize);
                            writer.Close();
                            reader.Close();

                            if (!System.IO.Directory.Exists(WatchedDir + "\\Complete")) { System.IO.Directory.CreateDirectory(WatchedDir + "\\Complete"); }
                            System.IO.File.Move(fileQueue.Peek().FullName, WatchedDir + "\\Complete\\" + fileQueue.Peek().Name);
                            fileQueue.Dequeue();

            #if !DEBUG
                        }
                        catch (Exception ex)
                        {
                        }
            #endif
                    }

                });
            }
            catch (Exception ex)
            {
                notifyIcon.BalloonTipIcon = ToolTipIcon.Error;
                notifyIcon.BalloonTipText = ex.ToString();
                notifyIcon.ShowBalloonTip(3000);
                return false;
            }
            return true;
        }