/// <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); }
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; } } }
/// <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, "/"); }
/// <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); }
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; }