示例#1
0
        /// <summary>
        /// 在指定的MFiles服务器中添加登陆账户
        /// </summary>
        /// <param name="user">用户对象</param>
        /// <param name="server">MFiles Server对象 </param>
        internal void CreateMFilesLoginAccount(User user, VaultServer server,
                                               MFLoginAccountType accountType, MFLicenseType licenseType)
        {
            var app = MFServerUtility.ConnectToServer(server.AdminName, server.AdminPwd,
                                                      MFServerUtility.GetVaultServerLocalIp(server), server.ServerPort);

            try
            {
                var accountName = GetAccountName(user);
                var hasAccount  = MfUserUtils.HasLoginAccount(app, accountName);
                if (!hasAccount)
                {
                    var account  = new LoginAccount();
                    var fullName = user.FullName;
                    if (String.IsNullOrEmpty(fullName))
                    {
                        fullName = user.UserName;
                    }
                    account.Set(accountType, user.Domain, user.UserName,
                                MFLoginServerRole.MFLoginServerRoleLogIn, fullName, user.Email, licenseType);
                    app.LoginAccountOperations.AddLoginAccount(account);
                }
            }
            finally
            {
                app.Disconnect(); //todo 多线程时是否对其他会话有影响
            }
        }
示例#2
0
        public UserInfo GetUserInfo(VaultServer server, string userName)
        {
            var app = MFServerUtility.ConnectToServer(server);

            try
            {
                var la = MfUserUtils.GetLoginAccount(app, userName);
                if (la != null)
                {
                    if (String.IsNullOrEmpty(la.FullName))
                    {
                        la.FullName = userName;
                    }
                    return(new UserInfo {
                        UserName = userName, Email = la.EmailAddress, Fullname = la.FullName
                    });
                }
            }
            catch (Exception ex)
            {
                Log.Error(String.Format("获取登录账户({0})异常:" + ex.Message, userName), ex);
            }
            finally
            {
                app.Disconnect();
            }

            return(null);
        }
示例#3
0
        public ICollection <string> GetUsersInGroup(MFilesVault vault, int groupId)
        {
            var ovault = MFServerUtility.GetVault(vault);
            var users  = GetUsersFromGroup(ovault, groupId);

            return(users.Select(uid => ovault.UserOperations.GetUserAccount(uid)).Select(la => MfUserUtils.GetUserNameWithoutDomain(la.LoginName)).ToList());
        }
示例#4
0
        public ICollection <string> GetUsersInGroup(MFilesVault vault, string groupName)
        {
            var ovault = MFServerUtility.GetVault(vault);
            var group  = GetGroupByName(ovault, groupName, vault.Id);

            return(GetUsersInGroup(ovault, group.GroupId));
        }
示例#5
0
        public void ChangeVaultUserInfo(User user, VaultServer server)
        {
            var accountName = GetAccountName(user);
            var app         = MFServerUtility.ConnectToServer(server.AdminName, server.AdminPwd,
                                                              MFServerUtility.GetVaultServerLocalIp(server), server.ServerPort);

            try
            {
                var la = MfUserUtils.GetLoginAccount(app, accountName);
                if (la == null)
                {
                    return;
                }
                var needChange = false;
                if (la.FullName != user.FullName)
                {
                    needChange  = true;
                    la.FullName = user.FullName;
                }
                if (la.EmailAddress != user.Email)
                {
                    la.EmailAddress = user.Email;
                    needChange      = true;
                }
                if (needChange)
                {
                    app.LoginAccountOperations.ModifyLoginAccount(la);
                }
            }
            finally
            {
                app.Disconnect();
            }
        }
示例#6
0
        public ICollection <string> GetUsersInGroupByAlias(MFilesVault vault, string groupAlias)
        {
            var ovault  = MFServerUtility.GetVault(vault);
            var groupId = MfAlias.GetUsergroup(ovault, groupAlias);

            return(GetUsersInGroup(ovault, groupId));
        }
示例#7
0
        public void RenameGroupName(MFilesVault vault, int groupId, string newName)
        {
            var ovault = MFServerUtility.GetVault(vault);
            var uga    = ovault.UserGroupOperations.GetUserGroupAdmin(groupId);

            uga.UserGroup.Name = newName;
            ovault.UserGroupOperations.UpdateUserGroupAdmin(uga);
        }
示例#8
0
        public void AddUserToGroup(MFilesVault vault, string userName, string groupName)
        {
            var ovault  = MFServerUtility.GetVault(vault);
            var groupId = GetGroupId(ovault, groupName);
            var userId  = GetUserId(ovault, userName);

            AddUserToGroup(ovault, userId, groupId);
        }
示例#9
0
        public void CreateForAllBackup(MFilesVault vault, string templateRootPath,
                                       string impersonationUserName, string impersonationPassword, MFSqlDatabase sqlDb = null, string vaultIndexRootPath = null)
        {
            var app = MFServerUtility.ConnectToMfApp(vault);

            CreateForAllBackup(app, vault, templateRootPath, impersonationUserName, impersonationPassword, sqlDb,
                               vaultIndexRootPath);
        }
示例#10
0
        public void Create(MFilesVault vault, string templateRootPath,
                           string impersonationUserName, string impersonationPassword, MFSqlDatabase sqlDb = null, string vaultIndexRootPath = null, bool fullBackupOrStructure = false)
        {
            var app = MFServerUtility.ConnectToMfApp(vault);

            Create(app, vault, templateRootPath, impersonationUserName, impersonationPassword, sqlDb,
                   vaultIndexRootPath, fullBackupOrStructure);
        }
示例#11
0
        public int GetObjectVersion(MFilesVault vault, int objType, int objId)
        {
            var mfVault = MFServerUtility.GetVault(vault);
            var objID   = new ObjID();

            objID.SetIDs(objType, objId);
            var objVer = mfVault.ObjectOperations.GetLatestObjVer(objID, false, false);

            return(objVer.Version);
        }
示例#12
0
        public void ChangeVaultName(MFilesVault vault)
        {
            var app   = MFServerUtility.ConnectToMfApp(vault);
            var props = app.VaultManagementOperations.GetVaultProperties(vault.Guid);

            props.DisplayName = vault.Name;
            var mfVault = app.LogInToVault(vault.Guid);

            mfVault.ManagementOperations.UpdateVaultProperties(props);
        }
示例#13
0
        public void AddUserToGroup(MFilesVault vault, string userName, params int[] groupIds)
        {
            var ovault = MFServerUtility.GetVault(vault);
            var userId = GetUserId(ovault, userName);

            foreach (var groupId in groupIds)
            {
                AddUserToGroup(ovault, userId, groupId);
            }
        }
示例#14
0
        public void DisableVaultUser(string userName, MFilesVault vault)
        {
            var mVault = MFServerUtility.GetVault(vault);

            if (!HasVaultUser(userName, vault))
            {
                Log.Error(string.Format("用户({0})不存在于vault({1}),vaultname={2},中!", userName, vault.Guid, mVault.Name));
                return;
            }
            MfUserUtils.DisableVaultUser(mVault, userName);
        }
示例#15
0
        public ICollection <MFilesUserGroup> GetUserGroups(MFilesVault vault, bool includeInternalGroup = false)
        {
            var mfVault = MFServerUtility.GetVault(vault);
            var groups  = mfVault.UserGroupOperations.GetUserGroupsAdmin();

            if (includeInternalGroup)
            {
                return((from UserGroupAdmin uga in groups select ConvertTo(uga, vault.Id)).ToList());
            }
            return((from UserGroupAdmin uga in groups where !uga.UserGroup.Predefined select ConvertTo(uga, vault.Id)).ToList());
        }
示例#16
0
        public ICollection <MFilesUserGroup> GetUserGroupsContainsString(MFilesVault vault, string groupStr)
        {
            var mfVault = MFServerUtility.GetVault(vault);
            var groups  = mfVault.UserGroupOperations.GetUserGroupsAdmin();
            var list    = (from UserGroupAdmin uga in groups
                           where !uga.UserGroup.Predefined && uga.UserGroup.Name.Contains(groupStr) && uga.UserGroup.Name != groupStr
                           select ConvertTo(uga, vault.Id)).ToList();

            list.Sort();
            return(list);
        }
示例#17
0
        public bool UninstallApps(MFilesVault vault)
        {
            var ovault = MFServerUtility.GetVault(vault);
            var apps   = ovault.CustomApplicationManagementOperations.GetCustomApplications();

            foreach (CustomApplication ca in apps)
            {
                ovault.CustomApplicationManagementOperations.UninstallCustomApplication(ca.ID);
            }
            return(true);
        }
示例#18
0
        public void EnableVaultUser(string userName, MFilesVault vault)
        {
            var mVault = MFServerUtility.GetVault(vault);

            if (!HasVaultUser(userName, vault))
            {
                var err = string.Format("用户{0}不存在于vault{1},vaultname={2},中!", userName, vault.Guid, mVault.Name);
                Log.Error(err);
                throw new Exception(err);
            }
            MfUserUtils.EnableVaultUser(mVault, userName);
        }
示例#19
0
        public MfContact GetContact(MFilesVault vault, MetadataAliases aliases, string userName)
        {
            var mfVault = MFServerUtility.GetVault(vault);
            var userId  = MfUserUtils.GetUserAccount(mfVault, userName);

            if (userId == null)
            {
                return(null);
            }
            var uid = userId.Value; //userid

            return(GetContactByUserId(mfVault, aliases, uid));
        }
示例#20
0
        internal void Create(MFilesVault vault, MFObject obj)
        {
            var mfVault = MFServerUtility.GetVault(vault);

            try
            {
                Create(mfVault, obj);
            }
            catch (Exception ex)
            {
                throw new Exception(obj.ToString(), ex);
            }
        }
示例#21
0
 public bool HasUser(User user, string password, MFilesVault vault)
 {
     try
     {
         var serverApp = MFServerUtility.ConnetToMfApp(user, password, vault.Server);
         var mfvault   = serverApp.LogInToVault(vault.Guid);
         return(mfvault != null);
     }
     catch
     {
         return(false);
     }
 }
示例#22
0
        public bool ImportApp(string zipPath, MFilesVault vault)
        {
            var zipDirectory = new DirectoryInfo(zipPath);
            var ovault       = MFServerUtility.GetVault(vault);

            foreach (var di in zipDirectory.GetDirectories())
            {
                var targetPath = Path.Combine(Path.GetTempPath(), di.Name + ".zip");
                var zip        = new ZipFile();
                zip.AddSelectedFiles("name!=*.zip and name!=*.pdb and name!=*.log", di.FullName, di.Name, true);
                zip.Save(targetPath);
                ImportApp(targetPath, ovault);
            }
            return(true);
        }
示例#23
0
 public MFObject GetMFObject <T>(MFilesVault vault, MetadataAliases aliases, T entity) where T : InternalEntity
 {
     if (entity is Project)
     {
         //var config = VaultConfig.GetConfigFromString(vault.Template.MetadataJson);
         var projObj = aliases.GetMfProject(entity as Project);// config.GetMfProjectObject(entity as Project);
         return(projObj);
     }
     if (entity is MfContact)
     {
         var mfVault    = MFServerUtility.GetVault(vault);
         var contactObj = aliases.GetMfContact(mfVault, entity as MfContact);
         return(contactObj);
     }
     return(null);
 }
示例#24
0
        /// <summary>
        /// 在指定的Vault中添加用户
        /// </summary>
        /// <param name="user">用户对象</param>
        /// <param name="vault">库对象</param>
        public int CreateVaultUser(User user, MFilesVault vault)
        {
            var server = vault.Server;
            var app    = MFServerUtility.ConnectToServer(server.AdminName, server.AdminPwd,
                                                         MFServerUtility.GetVaultServerLocalIp(vault.Server), server.ServerPort);

            try
            {
                var mVault = app.LogInToVault(vault.Guid);

                return(CreateVaultUser(mVault, user));
            }
            finally
            {
                app.Disconnect();
            }
        }
示例#25
0
        public bool Backup(MFilesVault vault)
        {
            var path   = Path.Combine(Path.GetTempPath(), vault.Guid + ".mfb");
            var ovault = MFServerUtility.GetVault(vault);
            var backup = new BackupJob
            {
                BackupType             = MFBackupType.MFBackupTypeFull,
                TargetFile             = path,
                VaultGUID              = ovault.GetGUID(),
                OverwriteExistingFiles = true
            };

            var app = MFServerUtility.ConnectToMfApp(vault);

            app.VaultManagementOperations.BackupVault(backup);
            return(true);
        }
示例#26
0
        public ICollection <MFilesUserGroup> GetGroupsByUser(MFilesVault vault, string userName)
        {
            var ret        = new List <MFilesUserGroup>();
            var ovault     = MFServerUtility.GetVault(vault);
            var userid     = GetUserId(ovault, userName);
            var usergroups = ovault.UserGroupOperations.GetUserGroupsAdmin();

            foreach (UserGroupAdmin uga in usergroups)
            {
                foreach (int id in uga.UserGroup.Members)
                {
                    if (id < 0)
                    {
                        ret.AddRange(GetUserGroupsOfUserEx(userid, -id, uga, ovault));
                    }
                    else
                    {
                        if (id == userid && !uga.UserGroup.Predefined)
                        {
                            ret.Add(ConvertTo(uga, vault.Id));
                        }
                    }
                }
            }
            var newret = new List <MFilesUserGroup>();

            foreach (var a in ret)
            {
                var found = false;
                foreach (var b in newret)
                {
                    if (b.Id == a.Id)
                    {
                        found = true;
                        break;
                    }
                }
                if (!found)
                {
                    newret.Add(a);
                }
            }
            return(newret);
        }
示例#27
0
        private IEnumerable <VaultKey> GetUserVaults(string userName, string password, bool isAdUser, VaultServer server)
        {
            var vaults = new List <VaultKey>();

            try
            {
                var serverApp = MFServerUtility.ConnectToServer(userName, password, server.LocalIp,
                                                                server.ServerPort, isAdUser);
                var keys = serverApp.GetOnlineVaults();
                vaults.AddRange(from VaultOnServer key in keys
                                select new VaultKey {
                    Name = key.Name, Guid = key.GUID
                });
                _serverApp = serverApp;
            }
            catch (Exception)
            {
            }
            return(vaults);
        }
示例#28
0
        public void AddUserGroupToVault(MFilesVault vault, MFilesUserGroup userGroup)
        {
            var ovault = MFServerUtility.GetVault(vault);
            var newuga = new UserGroupAdmin
            {
                UserGroup = new UserGroup {
                    Name = userGroup.Name
                }
            };

            if (!String.IsNullOrEmpty(userGroup.Alias))
            {
                newuga.SemanticAliases = new SemanticAliases {
                    Value = userGroup.Alias
                };
            }
            var ug = ovault.UserGroupOperations.AddUserGroupAdmin(newuga);

            userGroup.Id = ug.UserGroup.ID;
        }
示例#29
0
        public void RemoveUserFromGroup(MFilesVault vault, string userName, params int[] groupIds)
        {
            var ovault = MFServerUtility.GetVault(vault);
            var userid = -1;
            var users  = ovault.UserOperations.GetUserAccounts();
            var un     = MfUserUtils.GetUserNameWithoutDomain(userName).ToUpper();

            foreach (UserAccount ua in users)
            {
                var un0 = MfUserUtils.GetUserNameWithoutDomain(ua.LoginName);
                if (un0.ToUpper() == un)
                {
                    userid = ua.ID;
                    break;
                }
            }
            foreach (var groupId in groupIds)
            {
                RemoveUserFromGroupById(ovault, userid, groupId);
            }
        }
示例#30
0
        public MFDownloadFile DownloadFile(MFilesVault vault, int objType, int objId, int fileId)
        {
            var mfVault = MFServerUtility.GetVault(vault);
            var objID   = new ObjID();

            objID.SetIDs(objType, objId);
            var objVer     = mfVault.ObjectOperations.GetLatestObjVer(objID, false, false);
            var objVersion = mfVault.ObjectOperations.GetObjectInfo(objVer, true, false);

            if (objVersion.FilesCount == 0)
            {
                return(null);
            }
            if (fileId > 0)
            {
                ObjectFile fv = null;
                foreach (ObjectFile file in objVersion.Files)
                {
                    if (file.FileVer.ID == fileId)
                    {
                        fv = file;
                        break;
                    }
                }
                if (fv == null)
                {
                    fv = objVersion.Files[1];
                }
                var session = mfVault.ObjectFileOperations.DownloadFileInBlocks_Begin(fv.FileVer.ID, fv.FileVer.Version);
                var content = mfVault.ObjectFileOperations.DownloadFileInBlocks_ReadBlock(session.DownloadID, session.FileSize32, 0);
                return(new MFDownloadFile
                {
                    Content = content,
                    Name = fv.Title,
                    Extension = fv.Extension,
                    Version = objVer.Version
                });
            }
            return(null);
        }