public static void Delete(FtpServer server, string file = null, string directory = null) { string sname = VPath.RemoveInvalidPathChars(server.Config.ServerName); //string dir = Path.Combine(sname, "Config"); string dir = directory == null?Path.Combine(sname, "Config") : Path.Combine(VPath.RemoveInvalidPathChars(directory), sname, "Config"); if (!Directory.Exists(dir)) { return; } else { if (file != null) { File.Delete(Path.Combine(dir, file)); } else { File.Delete(Path.Combine(dir, "users.cfg")); File.Delete(Path.Combine(dir, "usergroups.cfg")); File.Delete(Path.Combine(dir, "config.cfg")); } } return; }
private static bool Save(FtpServer server, string file, string directory = null) { string sname = VPath.RemoveInvalidPathChars(server.Config.ServerName); string dir = directory == null?Path.Combine(sname, "Config") : Path.Combine(VPath.RemoveInvalidPathChars(directory), sname, "Config"); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } using (FileStream fs = new FileStream(Path.Combine(dir, file), FileMode.Create)) { switch (file) { case "users.cfg": serializer.Serialize(fs, server.Users); break; case "usergroups.cfg": serializer.Serialize(fs, server.UserGroups); break; case "config.cfg": serializer.Serialize(fs, server.Config); break; default: fs.Close(); return(false); } //serializer.Serialize(fs, server.Users); fs.Close(); } return(true); }
private static bool Load(FtpServer server, string file, string directory = null) { string sname = VPath.RemoveInvalidPathChars(server.Config.ServerName); string p = directory == null?Path.Combine(sname, "Config", file) : Path.Combine(VPath.RemoveInvalidPathChars(directory), sname, "Config", file); if (File.Exists(p)) { using (FileStream fs = new FileStream(p, FileMode.Open)) { try { switch (file) { case "users.cfg": server.Users = serializer.Deserialize(fs) as Dictionary <string, FtpUser> ?? server.Users; break; case "usergroups.cfg": server.UserGroups = serializer.Deserialize(fs) as Dictionary <string, FtpUserGroup> ?? server.UserGroups; break; case "config.cfg": server.Config = serializer.Deserialize(fs) as FtpConfig ?? server.Config; break; default: fs.Close(); return(false); } } catch (SerializationException) { } //server.Users = serializer.Deserialize(fs) as Dictionary<string, FtpUser> ?? server.Users; fs.Close(); return(true); } } return(false); }
public static FtpUser Validate(FtpServer server, string username, string password) { if (username == null) { username = "******"; } username = username.ToLower(); if (password == null) { password = ""; } if (server.Users.ContainsKey(username)) { var user = server.Users[username]; if (server.UserGroups.ContainsKey(user.GroupName)) { var group = server.UserGroups[user.GroupName]; user.UserGroup = group; if (group.UserGroupName == "anonymous") { user.IsAnonymous = true; if (!server.Config.AllowAnonymous) { return(null); //ADDED:禁用匿名 } } if ([email protected]) { switch (@group.Auth) { case AuthType.None: user.IsAnonymous = true; return(user); break; case AuthType.TwoFactor: case AuthType.SSL: case AuthType.Password: if (!String.IsNullOrEmpty(user.Password) && user.Password == password) { return(user); } return(null); break; case AuthType.MD5: if (!String.IsNullOrEmpty(user.PasswordMD5) && user.PasswordMD5 == password) { return(user); } return(null); break; } } } } else { if (server.Config.AllowAnonymous) { Anonymous.UserGroup = server.UserGroups["anonymous"]; return(Anonymous); } } return(null); }
public static void SaveConfig(FtpServer server, string dir = null) { Save(server, "config.cfg", dir); }
public static bool LoadConfig(FtpServer server, string dir = null) { return(Load(server, "config.cfg", dir)); }
public static void SaveUserGroups(FtpServer server, string dir = null) { Save(server, "usergroups.cfg", dir); }
public static bool LoadUserGroups(FtpServer server, string dir = null) { return(Load(server, "usergroups.cfg", dir)); }