Пример #1
0
        public LoginResponse Logout(String reason, String token)
        {
            var node = DecodeToken(token, Setting.Current.TokenSecret);

            if (node != null)
            {
                var olt = GetOnline(node);
                if (olt != null)
                {
                    var msg = $"{reason} [{node}]]登录于{olt.CreateTime},最后活跃于{olt.UpdateTime}";
                    WriteHistory(node, "节点下线", true, msg);
                    olt.Delete();

                    var sid = $"{node.ID}@{UserHost}";
                    _cache.Remove($"NodeOnline:{sid}");

                    // 计算在线时长
                    if (olt.CreateTime.Year > 2000)
                    {
                        node.OnlineTime += (Int32)(DateTime.Now - olt.CreateTime).TotalSeconds;
                        node.SaveAsync();
                    }

                    NodeOnlineService.CheckOffline(node, "注销");
                }
            }

            return(new LoginResponse
            {
                Name = node?.Name,
                Token = null,
            });
        }
Пример #2
0
        private static void InitAsync()
        {
            // 配置
            var set = NewLife.Setting.Current;

            if (set.IsNew)
            {
                set.DataPath = "../Data";
                set.Save();
            }

            // 初始化数据库
            var n = App.Meta.Count;

            AppStat.Meta.Session.Dal.Db.ShowSQL = false;

            // 在线管理服务
            _online = new NodeOnlineService();
            _online.Init();
        }