Example #1
0
        /// <summary>
        /// Fills iis configuration with information from ftp site.
        /// </summary>
        /// <param name="ftpSite">Ftp site that holds information.</param>
        private void FillIisFromFtpSite(FtpSite ftpSite)
        {
            IisFtpSite iisFtpSite       = this.ftpSitesService.GetIisFtpSite(ftpSite.SiteId);
            string     logExtFileFields = ftpSite[FtpSite.MSFTP7_LOG_EXT_FILE_FIELDS];

            if (iisFtpSite != null)
            {
                // Security settings.
                iisFtpSite.Security.Authentication.AnonymousAuthentication.Enabled  = ftpSite.AllowAnonymous;
                iisFtpSite.Security.Authentication.AnonymousAuthentication.UserName = ftpSite.AnonymousUsername;
                iisFtpSite.Security.Authentication.AnonymousAuthentication.Password = ftpSite.AnonymousUserPassword;
                // enable logging
                iisFtpSite.LogFile.Enabled = true;
                // set logging fields
                if (!String.IsNullOrEmpty(logExtFileFields))
                {
                    iisFtpSite.LogFile.LogExtFileFlags = (FtpLogExtFileFlags)Enum.Parse(typeof(FtpLogExtFileFlags), logExtFileFields);
                }
                // set log files directory
                if (!String.IsNullOrEmpty(ftpSite.LogFileDirectory))
                {
                    iisFtpSite.LogFile.Directory = ftpSite.LogFileDirectory;
                }
            }
            // Set new bindings.
            this.CheckFtpServerBindings(ftpSite);
            this.ftpSitesService.SetSiteBindings(ftpSite.Name, ftpSite.Bindings);
            // Physical path
            this.ftpSitesService.SetSitePhysicalPath(ftpSite.SiteId, "/", ftpSite.ContentPath);
        }
Example #2
0
        /// <summary>
        /// Fills ftp site with data from iis ftp site.
        /// </summary>
        /// <param name="ftpSite">Ftp site to fill.</param>
        private void FillFtpSiteFromIis(FtpSite ftpSite)
        {
            IisFtpSite iisFtpSite = this.ftpSitesService.GetIisFtpSite(ftpSite.SiteId);

            if (iisFtpSite != null)
            {
                // Security settings.
                ftpSite.AllowAnonymous        = iisFtpSite.Security.Authentication.AnonymousAuthentication.Enabled;
                ftpSite.AnonymousUsername     = iisFtpSite.Security.Authentication.AnonymousAuthentication.UserName;
                ftpSite.AnonymousUserPassword = iisFtpSite.Security.Authentication.AnonymousAuthentication.Password;
                ftpSite["UserIsolationMode"]  = iisFtpSite.UserIsolation.Mode.ToString();
                // Logging settings.
                ftpSite[FtpSite.MSFTP7_SITE_ID] = iisFtpSite.SiteServiceId;
                if (iisFtpSite.LogFile.Enabled)
                {
                    ftpSite.LogFileDirectory = iisFtpSite.LogFile.Directory;
                    ftpSite[FtpSite.MSFTP7_LOG_EXT_FILE_FIELDS] = iisFtpSite.LogFile.LogExtFileFlags.ToString();
                }
            }
            // Bindings
            ftpSite.Bindings = this.ftpSitesService.GetSiteBindings(ftpSite.SiteId);
            // Physical path
            ftpSite.ContentPath = this.ftpSitesService.GetSitePhysicalPath(ftpSite.SiteId, "/");
        }
Example #3
0
        /// <summary>
        /// Creates ftp site.
        /// </summary>
        /// <param name="site">Ftp site to be created.</param>
        /// <returns>Created site id.</returns>
        /// <exception cref="ArgumentNullException">Is thrown in case supplied argument is null.</exception>
        /// <exception cref="ArgumentException">
        /// Is thrown in case site id or its name is null or empty or if site id is not equal to default ftp site name.
        /// </exception>
        public string CreateSite(FtpSite site)
        {
            if (site == null)
            {
                throw new ArgumentNullException("site");
            }

            if (String.IsNullOrEmpty(site.SiteId) || String.IsNullOrEmpty(site.Name))
            {
                throw new ArgumentException("Site id or name is null or empty.");
            }

            this.CheckFtpServerBindings(site);

            PropertyBag siteBag = this.ftpSitesService.GetSiteDefaults();

            // Set site name
            siteBag[FtpSiteGlobals.Site_Name] = site.Name;
            // Set site physical path
            siteBag[FtpSiteGlobals.AppVirtualDirectory_PhysicalPath] = site.ContentPath;
            PropertyBag ftpBinding = new PropertyBag();

            // Set site binding protocol
            ftpBinding[FtpSiteGlobals.BindingProtocol] = "ftp";
            // fill binding summary info
            ftpBinding[FtpSiteGlobals.BindingInformation] = site.Bindings[0].ToString();

            // Set site binding
            siteBag[FtpSiteGlobals.Site_SingleBinding] = ftpBinding;

            // Auto-start
            siteBag[FtpSiteGlobals.FtpSite_AutoStart] = true;

            // Set anonumous authentication
            siteBag[FtpSiteGlobals.Authentication_AnonymousEnabled] = true;
            siteBag[FtpSiteGlobals.Authentication_BasicEnabled]     = true;

            this.ftpSitesService.AddSite(siteBag);

            AuthorizationRuleCollection rules = this.ftpSitesService.GetAuthorizationRuleCollection(site.Name);

            rules.Add(AuthorizationRuleAccessType.Allow, "*", String.Empty, PermissionsFlags.Read);

            IisFtpSite iisFtpSite = this.ftpSitesService.GetIisFtpSite(site.Name);

            iisFtpSite.UserIsolation.Mode = Mode.StartInUsersDirectory;
            iisFtpSite.Security.Ssl.ControlChannelPolicy = ControlChannelPolicy.SslAllow;
            iisFtpSite.Security.Ssl.DataChannelPolicy    = DataChannelPolicy.SslAllow;

            this.FillIisFromFtpSite(site);

            this.ftpSitesService.CommitChanges();

            // Do not start the site because it is started during creation.
            try
            {
                this.ChangeSiteState(site.Name, ServerState.Started);
            }
            catch
            {
                // Ignore the error if happened.
            }
            return(site.Name);
        }