Beispiel #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);
        }
Beispiel #2
0
        public static void DeserializeFtpSiteProperties(FtpSite ftpSite, PropertyBag bag)
        {
			foreach (int num in bag.ModifiedKeys)
			{
				switch (num)
				{
					case FtpSiteGlobals.Connections_UnauthenticatedTimeout:
						ftpSite.Connections.UnauthenticatedTimeout = (int)bag[num];
						break;
					case FtpSiteGlobals.Connections_ControlChannelTimeout:
						ftpSite.Connections.ControlChannelTimeout = (int)bag[num];
						break;
					case FtpSiteGlobals.Connections_DisableSocketPooling:
						ftpSite.Connections.DisableSocketPooling = (bool)bag[num];
						break;
					case FtpSiteGlobals.Connections_ServerListenBacklog:
						ftpSite.Connections.ServerListenBacklog = (int)bag[num];
						break;
					case FtpSiteGlobals.Connections_DataChannelTimeout:
						ftpSite.Connections.DataChannelTimeout = (int)bag[num];
						break;
					case FtpSiteGlobals.Connections_MinBytesPerSecond:
						ftpSite.Connections.MinBytesPerSecond = (int)bag[num];
						break;
					case FtpSiteGlobals.Connections_MaxConnections:
						ftpSite.Connections.MaxConnections = (long)bag[num];
						break;
					case FtpSiteGlobals.Connections_ResetOnMaxConnection:
						ftpSite.Connections.ResetOnMaxConnections = (bool)bag[num];
						break;
					case FtpSiteGlobals.Ssl_ServerCertHash:
						ftpSite.Security.Ssl.ServerCertHash = (string)bag[num];
						break;
					case FtpSiteGlobals.Ssl_ControlChannelPolicy:
						ftpSite.Security.Ssl.ControlChannelPolicy = (ControlChannelPolicy)bag[num];
						break;
					case FtpSiteGlobals.Ssl_DataChannelPolicy:
						ftpSite.Security.Ssl.DataChannelPolicy = (DataChannelPolicy)bag[num];
						break;
					case FtpSiteGlobals.Authentication_AnonymousEnabled:
						ftpSite.Security.Authentication.AnonymousAuthentication.Enabled = (bool)bag[num];
						break;
					case FtpSiteGlobals.Authentication_BasicEnabled:
						ftpSite.Security.Authentication.BasicAuthentication.Enabled = (bool)bag[num];
						break;
					case FtpSiteGlobals.FtpSite_AutoStart:
						ftpSite.ServerAutoStart = (bool)bag[num];
						break;
				}
			}
        }
Beispiel #3
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;
                // 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, "/");
        }
Beispiel #4
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.VirtualDirectory_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);
        }
Beispiel #5
0
        public static void SerializeFtpSiteProperties(FtpSite ftpSite, PropertyBag bag)
        {
			bag[FtpSiteGlobals.FtpSite_AutoStart] = ftpSite.ServerAutoStart;
			bag[FtpSiteGlobals.Connections_UnauthenticatedTimeout] = ftpSite.Connections.UnauthenticatedTimeout;
			bag[FtpSiteGlobals.Connections_ControlChannelTimeout] = ftpSite.Connections.ControlChannelTimeout;
			bag[FtpSiteGlobals.Connections_DisableSocketPooling] = ftpSite.Connections.DisableSocketPooling;
			bag[FtpSiteGlobals.Connections_ServerListenBacklog] = ftpSite.Connections.ServerListenBacklog;
			bag[FtpSiteGlobals.Connections_DataChannelTimeout] = ftpSite.Connections.DataChannelTimeout;
			bag[FtpSiteGlobals.Connections_MinBytesPerSecond] = ftpSite.Connections.MinBytesPerSecond;
			bag[FtpSiteGlobals.Connections_MaxConnections] = ftpSite.Connections.MaxConnections;
			bag[FtpSiteGlobals.Connections_ResetOnMaxConnection] = ftpSite.Connections.ResetOnMaxConnections;
			bag[FtpSiteGlobals.Ssl_ServerCertHash] = ftpSite.Security.Ssl.ServerCertHash;
			bag[FtpSiteGlobals.Ssl_ControlChannelPolicy] = (int)ftpSite.Security.Ssl.ControlChannelPolicy;
			bag[FtpSiteGlobals.Ssl_DataChannelPolicy] = (int)ftpSite.Security.Ssl.DataChannelPolicy;
			bag[FtpSiteGlobals.Ssl_Ssl128] = ftpSite.Security.Ssl.Ssl128;
			bag[FtpSiteGlobals.Authentication_AnonymousEnabled] = ftpSite.Security.Authentication.AnonymousAuthentication.Enabled;
			bag[FtpSiteGlobals.Authentication_BasicEnabled] = ftpSite.Security.Authentication.BasicAuthentication.Enabled;
        }