Example #1
0
 /// <summary>
 /// 如果目录不存在,创建目录
 /// </summary>
 /// <param name="dirName"></param>
 /// <param name="connection"></param>
 private void MakeSureDirExist(string dirName, FTPConnection connection)
 {
     if (!connection.DirectoryExists(dirName))
     {
         connection.CreateDirectory(dirName);
     }
 }
Example #2
0
 /// <summary>
 /// 连接FTP服务器
 /// </summary>
 /// <param name="ftpInfo"></param>
 /// <returns></returns>
 public static bool ConnectFtpServer(FtpConfigEntity ftpInfo)
 {
     try
     {
         using (FTPConnection ftpConn = new FTPConnection
         {
             ServerAddress = ftpInfo.ServerAddress,
             //ServerDirectory = ftpInfo.ServerDirectory,
             UserName = ftpInfo.UserName,
             Password = ftpInfo.UserPassword,
             CommandEncoding = Encoding.GetEncoding("GBK")
         })
         {
             ftpConn.Connect();
             if (!ftpConn.DirectoryExists(ftpInfo.ServerDirectory))
             {
                 throw new Exception($"FTP服务器连接成功,但FTP服务器不存在目录名[{ftpInfo.ServerDirectory}]");
             }
         }
         return(true);
     }
     catch (Exception ex)
     {
         string errMsg = $"FTP服务器连接失败,FTP信息[{JsonObj<FtpConfigEntity>.ToJson(ftpInfo)}],异常[{ ex.Message}]";
         LogUtil.WriteLog(errMsg);
         throw new Exception(errMsg);
     }
 }
Example #3
0
        public Boolean DeletePack(int v)
        {
            // 输出递交包,到本地集成环境处理,需要使用ftp连接
            FTPConnection ftp = MAConf.instance.Configs[ProductId].ftp;
            FtpConf       fc  = MAConf.instance.Configs[ProductId].fc;

            // 强制重新连接,防止时间长了就断掉了
            if (ftp.IsConnected == false)
            {
                try
                {
                    ftp.Connect();
                }
                catch (Exception e)
                {
                    log.WriteErrorLog("连接FTP服务器失败,错误信息:" + e.Message);
                }
            }

            if (ftp.DirectoryExists(RemoteDir) == false)
            {
                System.Windows.Forms.MessageBox.Show("FTP路径" + RemoteDir + "不存在!");
                return(false);
            }

            //ftp.ChangeWorkingDirectory(fc.ServerDir);
            ftp.DeleteFile(RemoteFile);

            return(true);
        }
Example #4
0
        static bool FtpOpen()
        {
            // create connection
            try
            {
                ftpcon                        = new FTPConnection();
                ftpcon.UserName               = Config.ftpsettings.FtpUserName;
                ftpcon.Password               = Config.ftpsettings.FtpPassword;
                ftpcon.ServerAddress          = Config.ftpsettings.FtpServerAddress;
                ftpcon.ServerPort             = int.Parse(Config.ftpsettings.FtpServerPort);
                ftpcon.TransferNotifyInterval = (long)4096;
                ftp = new FtpLib(ref ftpcon);
            }
            catch (Exception)
            {
                Console.WriteLine(Strings.Get("FtpBadConfig"));
                Console.ReadKey();
                return(false);
            }

            // try to connect
            try
            {
                ftp.LogIn();
            }
            catch (Exception)
            {
                Console.WriteLine(Strings.Get("FtpNoConnection"));
                Console.ReadKey();
                return(false);
            }

            // check if folder exists
            if (!Config.ftpsettings.FtpServerFolder.StartsWith("/"))
            {
                Config.ftpsettings.FtpServerFolder = "/" + Config.ftpsettings.FtpServerFolder;
            }
            if (!ftpcon.DirectoryExists(Config.ftpsettings.FtpServerFolder))
            {
                Console.WriteLine(Strings.Get("FtpBadFolder") + Config.ftpsettings.FtpServerFolder);
                Console.ReadKey();
                return(false);
            }
            return(true);
        }
Example #5
0
        public static void CreateDirectory(IEnumerable <string> folderList)
        {
            var ftpConnect = new FTPConnection();

            try
            {
                ftpConnect.ServerAddress =
                    System.Configuration.ConfigurationManager.AppSettings["HostGoDaddy"].ToString();
                ftpConnect.ServerPort =
                    Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["PortGoDaddy"].ToString());
                ftpConnect.UserName =
                    System.Configuration.ConfigurationManager.AppSettings["UsernameGoDaddy"].ToString();
                ftpConnect.Password =
                    System.Configuration.ConfigurationManager.AppSettings["PasswordGoDaddy"].ToString();

                ftpConnect.Connect();

                ftpConnect.ChangeWorkingDirectory("/public_html");

                foreach (var tmp in folderList)
                {
                    if (!ftpConnect.DirectoryExists(tmp))
                    {
                        ftpConnect.CreateDirectory(tmp);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Exception is " + ex.Message);
            }
            finally
            {
                ftpConnect.Close();
                //ftpConnect.Dispose();
            }
        }
Example #6
0
        // 获取FTP递交信息
        public Boolean QueryFTP()
        {
            log.WriteInfoLog("查询FTP目录信息...");
            // 输出递交包,到本地集成环境处理,需要使用ftp连接
            FTPConnection ftp = MAConf.instance.Configs[ProductId].ftp;
            FtpConf       fc  = MAConf.instance.Configs[ProductId].fc;
            string        s;

            // 强制重新连接,防止时间长了就断掉了
            if (ftp.IsConnected == false)
            {
                try
                {
                    ftp.Connect();
                }
                catch (Exception e)
                {
                    log.WriteErrorLog("连接FTP服务器失败,错误信息:" + e.Message);
                    return(false);
                }
            }

            // 取递交版本信息,确认要输出哪个版本的压缩包,确保只刷出最大的版本
            // 这个地方,应该是如果存在集成的文件夹,就刷出集成的文件夹,
            // 对于V1,是全部都需要集成,对于Vn(n>1),只集成变动的部分就可以了
            if (ftp.DirectoryExists(RemoteDir) == false)
            {
                System.Windows.Forms.MessageBox.Show("FTP路径" + RemoteDir + "不存在!");
                return(false);
            }
            ftp.ChangeWorkingDirectory(fc.ServerDir);

            // 不使用 true 列举不出目录,只显示文件,很奇怪
            //string[] files = ftp.GetFiles(fc.ServerDir + ap.CommitPath, true);
            string[] files = ftp.GetFiles(RemoteDir);

            log.WriteInfoLog("查询FTP目录信息...完成");

            #region 确定修改单基本属性
            // 检查是否存在集成*的文件夹
            // 获取当前的版本信息,先标定版本信息
            SubmitL.Clear();
            ScmL.Clear();
            ScmSrc.Clear();
            foreach (string f in files) //查找子目录
            {
                // 跳过 src-V*.rar 之类的东东
                if (f.IndexOf("集成-src-V") >= 0 || f.IndexOf("集成-Src-V") >= 0)
                {
                    ScmSrc.Add(f);
                }
                else if (f.IndexOf(MainNo) < 0)
                {
                    continue;
                }
                else if (f.IndexOf("集成") == 0)
                {
                    ScmL.Add(f);
                }
                else
                {
                    SubmitL.Add(f);
                }
            }

            string currVerFile = string.Empty;// 20111123054-国金短信-李景杰-20120117-V3.rar
            if (SubmitL.Count > 0)
            {
                SubmitL.Sort();
                s           = SubmitL[SubmitL.Count - 1].ToString();
                currVerFile = s;
                // 取递交版本号
                // 20111207012-委托管理-高虎-20120116-V13.rar --> 20111207012-委托管理-高虎-20120116-V13 -> 13
                s         = s.Substring(0, s.LastIndexOf('.'));
                SubmitVer = int.Parse(s.Substring(s.LastIndexOf('V') + 1));
            }
            else
            {
                SubmitVer = 0;
            }

            // 生成一些上次集成的变量,需要把上次的覆盖到本次来
            if (ScmL.Count > 1)  // 重复集成
            {
                ScmL.Sort();
                s = ScmL[ScmL.Count - 1].ToString();
                // 取递交版本号
                // 20111207012-委托管理-高虎-20120116-V13.rar --> 20111207012-委托管理-高虎-20120116-V13 -> 13
                s        = s.Substring(0, s.LastIndexOf('.'));
                ScmVer   = int.Parse(s.Substring(s.LastIndexOf('V') + 1));
                ScmedVer = ScmVer;
                // 如果存在对应的src文件夹,一并删除掉
                if (ScmVer == SubmitVer)
                {
                    ScmL.RemoveAt(ScmL.Count - 1);

                    if (ScmSrc.Count > 1)
                    {
                        ScmSrc.Sort();
                        if (ScmSrc.IndexOf("集成-src-V" + ScmVer + ".rar") >= 0 ||
                            ScmSrc.IndexOf("集成-Src-V" + ScmVer + ".rar") >= 0)
                        {
                            ScmSrc.RemoveAt(ScmSrc.Count - 1);
                        }
                    }
                }
            }


            string dir = Path.GetFileNameWithoutExtension(currVerFile);

            //AmendDir = LocalDir + "\\" + dir;
            SCMAmendDir = Path.Combine(LocalDir, "集成-" + dir);

            ScmVer     = SubmitVer;
            LocalFile  = Path.Combine(LocalDir, currVerFile);
            RemoteFile = LocalFile.Replace(LocalDir, RemoteDir);

            SCMLocalFile  = Path.Combine(SCMAmendDir, "集成-" + currVerFile);
            SCMRemoteFile = SCMLocalFile.Replace(SCMAmendDir, RemoteDir);

            SrcRar          = Path.Combine(SCMAmendDir, "src-V" + ScmVer.ToString() + ".rar");
            SCMSrcRar       = Path.Combine(SCMAmendDir, "集成-src-V" + ScmVer.ToString() + ".rar");
            SCMRemoteSrcRar = SCMSrcRar.Replace(SCMAmendDir, RemoteDir);

            if (ScmL.Count > 0)
            {
                ScmL.Sort();
                s   = ScmL[ScmL.Count - 1].ToString();
                dir = Path.GetFileNameWithoutExtension(s);
                // 上次数据
                SCMLastAmendDir   = Path.Combine(LocalDir, dir);
                SCMLastLocalFile  = Path.Combine(SCMLastAmendDir, s);
                ScmLastRemoteFile = Path.Combine(RemoteDir, s);

                // 取递交版本号
                // 20111207012-委托管理-高虎-20120116-V13.rar --> 20111207012-委托管理-高虎-20120116-V13 -> 13
                s                   = s.Substring(0, s.LastIndexOf('.'));
                SCMLastVer          = int.Parse(s.Substring(s.LastIndexOf('V') + 1));
                SCMLastLocalSrcRar  = Path.Combine(SCMLastAmendDir, "集成-src-V" + SCMLastVer.ToString() + ".rar");
                ScmLastRemoteSrcRar = Path.Combine(RemoteDir, "集成-src-V" + SCMLastVer.ToString() + ".rar");
            }
            else
            {
                SCMLastVer = 0;
            }

            if (ScmedVer == 0)
            {
                ScmedVer = SCMLastVer;
            }

            if (ScmSrc.Count > 0)
            {
                ScmSrc.Sort();
                s = ScmSrc[ScmSrc.Count - 1].ToString();
                SCMLastLocalSrcRar  = Path.Combine(SCMLastAmendDir, s);
                ScmLastRemoteSrcRar = Path.Combine(RemoteDir, s);
            }

            // 决定是新集成还是修复集成还是重新集成
            if (ScmVer == 0 || (ScmVer == 1 && SubmitVer == 1))  // 第一次集成
            {
                scmtype = ScmType.NewScm;
            }
            else if (SCMLastVer <= SubmitVer) // 重新集成也当成修复集成
            {
                scmtype = ScmType.BugScm;     // 修复集成
            }
            #endregion

            return(true);
        }
Example #7
0
 public bool CheckIfDirectoryExist(string path)
 {
     return(connection.DirectoryExists(path));
 }
Example #8
0
 /// <summary>
 /// 判断 FTP 服务器上指定的目录是否存在
 /// </summary>
 /// <param name="directoryName"></param>
 /// <returns></returns>
 public bool DirectoryExists(string directoryName)
 {
     return(m_pFtp.DirectoryExists("/" + directoryName.TrimStart('/')));
 }