예제 #1
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);
        }
예제 #2
0
        public bool ConnectToServer(string userName, string password, VaultServer server, bool windowsUser)
        {
            var app = new MFilesServerApplication();

            try
            {
                var authType = MFAuthType.MFAuthTypeSpecificMFilesUser;
                if (windowsUser)
                {
                    authType = MFAuthType.MFAuthTypeSpecificWindowsUser;
                }
                var status = app.Connect(authType, userName, password, "", "ncacn_ip_tcp",
                                         server.LocalIp, server.ServerPort);
                var ok = status == MFServerConnection.MFServerConnectionAuthenticated;
                try
                {
                    app.Disconnect();
                }
                catch
                {
                }
                return(ok);
            }
            catch (Exception ex)
            {
                Log.Error("登录服务器失败:" + ex.Message, ex);
            }
            return(false);
        }
예제 #3
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();
            }
        }
예제 #4
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 多线程时是否对其他会话有影响
            }
        }
예제 #5
0
 public void DeleteServer(VaultServer server)
 {
     if (server == null)
     {
         throw new ArgumentNullException("server");
     }
     _serverRepo.Delete(server);
 }
예제 #6
0
 public void AddServer(VaultServer server)
 {
     if (server == null)
     {
         throw new ArgumentNullException("server");
     }
     _serverRepo.Insert(server);
 }
예제 #7
0
 static void Main(string[] args)
 {
     AppDomain.CurrentDomain.ProcessExit += CurrentDomain_ProcessExit;
     vaultServer = new VaultServer();
     vaultServer.LoadToDisk();
     vaultServer.ListenAsync();
     Console.ReadLine();
 }
예제 #8
0
 public static VaultServerDto ToDto(this VaultServer server)
 {
     if (server == null)
     {
         return(null);
     }
     return(new VaultServerDto
     {
         Id = server.Id,
         Ip = server.Ip,
         LocalIp = server.LocalIp,
         Port = server.Port
     });
 }
예제 #9
0
        public void CreateMFilesLoginAccount(User user, VaultServer server)
        {
            var app = MFServerUtility.ConnectToServer(server.AdminName, server.AdminPwd, MFServerUtility.GetVaultServerLocalIp(server), server.ServerPort);

            try
            {
                var has = MfUserUtils.HasLoginAccount(app, GetAccountName(user));
                if (!has)
                {
                    var accType = MFLoginAccountType.MFLoginAccountTypeWindows;
                    if (string.IsNullOrEmpty(user.Domain))
                    {
                        accType = MFLoginAccountType.MFLoginAccountTypeMFiles;
                    }
                    CreateMFilesLoginAccount(user, app, accType, MFLicenseType.MFLicenseTypeConcurrentUserLicense);
                }
            }
            finally
            {
                app.Disconnect(); //todo 多线程时是否对其他会话有影响
            }
        }
예제 #10
0
        public IList <MfUser> GetMFilesLoginAccounts(VaultServer server)
        {
            var res = new List <MfUser>();
            var app = MFServerUtility.ConnectToServer(server.AdminName, server.AdminPwd, MFServerUtility.GetVaultServerLocalIp(server), server.ServerPort);

            try
            {
                var accs = MfUserUtils.GetLoginAccounts(app);
                res.AddRange(accs.Select(a => new MfUser
                {
                    AccountName = a.AccountName,
                    Domain      = a.DomainName,
                    UserName    = a.UserName,
                    Email       = a.EmailAddress,
                    FullName    = string.IsNullOrEmpty(a.FullName) ? a.UserName : a.FullName
                }));
            }
            finally
            {
                app.Disconnect(); //todo 多线程时是否对其他会话有影响
            }
            return(res);
        }
예제 #11
0
파일: utility.cs 프로젝트: weijx-xa/test
 public static MFilesServerApplication ConnectToServer(VaultServer server)
 {
     return(ConnectToServer(server.AdminName, server.AdminPwd, server.LocalIp, server.ServerPort));
 }
예제 #12
0
파일: utility.cs 프로젝트: weijx-xa/test
        public static MFilesServerApplication ConnetToMfApp(User user, string password, VaultServer server)
        {
            var accountName = user.GetAccountName();
            var app         = ConnectToServer(accountName, password, GetVaultServerLocalIp(server), server.ServerPort);

            return(app);
        }
예제 #13
0
파일: utility.cs 프로젝트: weijx-xa/test
 public static string GetVaultServerLocalIp(VaultServer vaultServer)
 {
     return(vaultServer.LocalIp);
 }
예제 #14
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);
        }
예제 #15
0
        public IEnumerable <VaultKey> GetCurrentVaults(string userName, string password, bool isAdUser, VaultServer server)
        {
            var vaults = GetUserVaults(userName, password, isAdUser, server);

            LogOut();
            return(vaults);
        }
예제 #16
0
        public IEnumerable <ProjectHourInfo> GetHourInfo(IEnumerable <VaultKey> vaultKeys, VaultServer server, DateTime?beginDate = null, DateTime?deadline = null)
        {
            var serverApp = MFServerUtility.ConnectToServer(server.AdminName, server.AdminPwd, server.LocalIp,
                                                            server.ServerPort, false);
            var res = new List <ProjectHourInfo>();

            foreach (VaultKey v in vaultKeys)
            {
                Vault vault = null;
                try
                {
                    vault = serverApp.LogInToVault(v.Guid);
                }
                catch {}
                if (!IsValid(vault))
                {
                    continue;
                }
                var tBudget = GetTotalBudget(vault);
                if (beginDate == null)
                {
                    beginDate = tBudget.BeginDate;
                }
                if (deadline == null)
                {
                    deadline = tBudget.Deadline;
                }
                var hLogs   = GetHourLogs(vault, tBudget.BeginDate, tBudget.Deadline);
                var pBudget = GetPersonalBudgets(vault);
                res.Add(new ProjectHourInfo
                {
                    TotalBudget     = tBudget,
                    HourLogs        = hLogs,
                    PersonalBudgets = pBudget
                });
            }
            serverApp.Disconnect();
            return(res);
        }
예제 #17
0
 internal async Task <IEnumerable <ProjectHour> > GetTableDataAsync(IEnumerable <VaultKey> vaultGuids,
                                                                    VaultServer server,
                                                                    DateTime?beginDate = null, DateTime?deadline = null, int showingType = 1)
 {
     return(await Task.Run(() => GetTableData(vaultGuids, server, beginDate, deadline, showingType)));
 }
예제 #18
0
        private IEnumerable <ProjectHour> GetTableData(IEnumerable <VaultKey> vaultGuids, VaultServer server,
                                                       DateTime?beginDate = null, DateTime?deadline = null, int showingType = 1)
        {
            var vaultInfo    = _workHourService.GetHourInfo(vaultGuids, server, beginDate, deadline);
            var projHourList = new List <ProjectHour>();

            foreach (ProjectHourInfo pInfo in vaultInfo)
            {
                var dbTotalBudget     = pInfo.TotalBudget;
                var dbPersonalBudgets = pInfo.PersonalBudgets;
                var dbHourLogs        = pInfo.HourLogs;

                if (beginDate == null)
                {
                    beginDate = dbTotalBudget.BeginDate;
                }
                if (deadline == null)
                {
                    deadline = dbTotalBudget.Deadline;
                }
                var projHour = new ProjectHour()
                {
                    ProjName = dbTotalBudget.ProjectName
                               //,BudgetHours = dbTotalBudget.TotalHours
                    , TimeSpans = new List <string>()
                };
                double tHoursBuget  = 0.0;
                double tHoursActual = 0.0;
                var    userList     = new List <UserHour>();
                var    timeSpans    = DateTimeTool.GetTimespanList(beginDate.GetValueOrDefault(),
                                                                   deadline.GetValueOrDefault(), showingType).ToList();
                foreach (TimeArea span in timeSpans)
                {
                    projHour.TimeSpans.Add(span.Title);
                }

                foreach (PersonalBudget b in dbPersonalBudgets)
                {
                    var userHour = new UserHour
                    {
                        UserName = b.MemberName
                    };
                    var uLogs = GetUserLogs(b.VaultGuid, b.UserID, dbHourLogs);

                    var bHours   = new List <UnitHour>();
                    var aHours   = new List <UnitHour>();
                    var mBudgets = Convert2MonthBudgets(b.HoursDetail);
                    foreach (TimeArea t in timeSpans)
                    {
                        var bUnit = GetBudgetUnit(t, mBudgets);
                        var aUnit = GetActualUnit(t, uLogs);
                        bHours.Add(bUnit);
                        aHours.Add(aUnit);
                    }
                    userHour.BudgetHours = bHours;
                    userHour.ActualHours = aHours;

                    tHoursBuget  += userHour.BudgetTotal;
                    tHoursActual += userHour.ActualTotal;

                    userList.Add(userHour);
                }
                projHour.UserList    = userList;
                projHour.BudgetHours = tHoursBuget;
                projHour.ActualHours = tHoursActual;
                projHourList.Add(projHour);
            }
            return(projHourList);
        }