Example #1
0
        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;
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
 public static void SaveConfig(FtpServer server, string dir = null)
 {
     Save(server, "config.cfg", dir);
 }
Example #6
0
 public static bool LoadConfig(FtpServer server, string dir = null)
 {
     return(Load(server, "config.cfg", dir));
 }
Example #7
0
 public static void SaveUserGroups(FtpServer server, string dir = null)
 {
     Save(server, "usergroups.cfg", dir);
 }
Example #8
0
 public static bool LoadUserGroups(FtpServer server, string dir = null)
 {
     return(Load(server, "usergroups.cfg", dir));
 }