Example #1
0
 public void NewUser(OnlineUserInfo user)
 {
     _mut.WaitOne();
     RefreshImage(user.UserName, user.ImageHash);
     AddOnlineUserData(user);
     _mut.ReleaseMutex();
 }
Example #2
0
        /// <summary>
        /// Cookie中没有用户ID或则存的的用户ID无效时在在线表中增加一个游客.
        /// </summary>
        public static OnlineUserInfo CreateGuestUser(int timeout)
        {
            OnlineUserInfo onlineuserinfo = new OnlineUserInfo();

            onlineuserinfo.Userid         = -1;
            onlineuserinfo.Username       = "******";
            onlineuserinfo.Nickname       = "游客";
            onlineuserinfo.Password       = "";
            onlineuserinfo.Groupid        = 7;
            onlineuserinfo.Olimg          = GetGroupImg(7);
            onlineuserinfo.Adminid        = 0;
            onlineuserinfo.Invisible      = 0;
            onlineuserinfo.Ip             = DNTRequest.GetIP();
            onlineuserinfo.Lastposttime   = "1900-1-1 00:00:00";
            onlineuserinfo.Lastpostpmtime = "1900-1-1 00:00:00";
            onlineuserinfo.Lastsearchtime = "1900-1-1 00:00:00";
            onlineuserinfo.Lastupdatetime = Utils.GetDateTime();
            onlineuserinfo.Action         = 0;
            onlineuserinfo.Lastactivity   = 0;
            onlineuserinfo.Verifycode     = ForumUtils.CreateAuthStr(5, false);

            int olid = Add(onlineuserinfo, timeout);

            onlineuserinfo.Olid = olid;

            return(onlineuserinfo);
        }
Example #3
0
        public static Discuz.Common.Generic.List <OnlineUserInfo> GetForumOnlineUserCollection(int forumid, out int totaluser, out int guest, out int user, out int invisibleuser)
        {
            Discuz.Common.Generic.List <OnlineUserInfo> coll = new Discuz.Common.Generic.List <OnlineUserInfo>();
#endif
            //在线游客
            guest = 0;
            //在线隐身用户
            invisibleuser = 0;
            //用户总数
            totaluser = 0;

            IDataReader reader = DatabaseProvider.GetInstance().GetForumOnlineUserList(forumid);

            while (reader.Read())
            {
                OnlineUserInfo info = LoadSingleOnlineUser(reader);
                //当前版块在线总用户数
                totaluser++;
                if (info.Userid == -1)
                {
                    guest++;
                }
                if (info.Invisible == 1)
                {
                    invisibleuser++;
                }
                coll.Add(info);
            }
            reader.Close();

            //统计用户
            user = totaluser - guest;
            //返回当前版块的在线用户表
            return(coll);
        }
Example #4
0
        private static OnlineUserInfo LoadSingleOnlineUser(DataRow dr)
        {
            OnlineUserInfo info = new OnlineUserInfo();

            info.Olid     = Int32.Parse(dr["olid"].ToString());
            info.Userid   = Int32.Parse(dr["userid"].ToString());
            info.Ip       = dr["ip"].ToString();
            info.Username = dr["username"].ToString();
            //info.Tickcount = Int32.Parse(reader["tickcount"].ToString());
            info.Nickname       = dr["nickname"].ToString();
            info.Password       = dr["password"].ToString();
            info.Groupid        = Int16.Parse(dr["groupid"].ToString());
            info.Olimg          = dr["olimg"].ToString();
            info.Adminid        = Int16.Parse(dr["adminid"].ToString());
            info.Invisible      = Int16.Parse(dr["invisible"].ToString());
            info.Action         = Int16.Parse(dr["action"].ToString());
            info.Lastactivity   = Int16.Parse(dr["lastactivity"].ToString());
            info.Lastposttime   = dr["lastposttime"].ToString();
            info.Lastpostpmtime = dr["lastpostpmtime"].ToString();
            info.Lastsearchtime = dr["lastsearchtime"].ToString();
            info.Lastupdatetime = dr["lastupdatetime"].ToString();
            info.Forumid        = Int32.Parse(dr["forumid"].ToString());
            if (dr["forumname"] != DBNull.Value)
            {
                info.Forumname = dr["forumname"].ToString();
            }
            info.Titleid = Int32.Parse(dr["titleid"].ToString());
            if (dr["title"] != DBNull.Value)
            {
                info.Title = dr["title"].ToString();
            }
            info.Verifycode = dr["verifycode"].ToString();
            return(info);
        }
Example #5
0
        public SpaceBasePage()
        {
            OnlineUserInfo oluserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);

            olid     = oluserinfo.Olid;
            userid   = oluserinfo.Userid;
            username = oluserinfo.Username;

            if (DNTRequest.GetInt("postid", 0) > 0)
            {
                SpacePostInfo spacePostInfo = BlogProvider.GetSpacepostsInfo(Space.Data.DbProvider.GetInstance().GetSpacePost(DNTRequest.GetInt("postid", 0)));
                spaceuid = spacePostInfo != null? spacePostInfo.Uid:0;
            }

            if (spaceuid > 0)
            {
                spaceconfiginfo = BlogProvider.GetSpaceConfigInfo(spaceuid);
                spaceid         = spaceconfiginfo.SpaceID;
            }
            else
            {
                if (spaceid > 0)
                {
                    spaceuid        = BlogProvider.GetUidBySpaceid(spaceid.ToString());
                    spaceconfiginfo = BlogProvider.GetSpaceConfigInfo(spaceuid);
                }
            }

            if (spaceconfiginfo == null)
            {
                spaceconfiginfo        = new SpaceConfigInfo();
                spaceconfiginfo.Status = SpaceStatusType.AdminClose;
            }

            if (spaceconfiginfo.Status != SpaceStatusType.Natural)
            {
                Context.Response.Redirect("index.aspx");
            }

            spaceurl = Utils.GetRootUrl(BaseConfigs.GetForumPath) + "space/";

            if (SpaceActiveConfigs.GetConfig().Enablespacerewrite > 0 && spaceconfiginfo.Rewritename != string.Empty)
            {
                spaceurl += spaceconfiginfo.Rewritename;
            }
            else
            {
                spaceurl += "?uid=" + spaceconfiginfo.UserID;
            }

            //去掉http地址中的文件名称
            if (forumurl.ToLower().IndexOf("http://") == 0)
            {
                forumurlnopage = forumurl.Substring(0, forumurl.LastIndexOf('/')) + "/";
            }
            else
            {
                forumurl = "../" + config.Forumurl;
            }
        }
Example #6
0
        /// <summary>
        /// 初始化
        /// </summary>
        /// <param name="e"></param>
        override protected void OnInit(EventArgs e)
        {
            base.OnInit(e);

            GeneralConfigInfo config  = GeneralConfigs.GetConfig();
            string            bgcolor = DNTRequest.GetQueryString("bgcolor").Trim();
            int textcolor             = DNTRequest.GetQueryInt("textcolor", 1);

            string[] bgcolorArray = bgcolor.Split(',');

            Color bg = Color.White;

            if (bgcolorArray.Length == 1 && bgcolor != string.Empty)
            {
                bg = Utils.ToColor(bgcolor);
            }
            else if (bgcolorArray.Length == 3 && Utils.IsNumericArray(bgcolorArray))
            {
                bg = Color.FromArgb(Utils.StrToInt(bgcolorArray[0], 255), Utils.StrToInt(bgcolorArray[1], 255), Utils.StrToInt(bgcolorArray[2], 255));
            }

            CookiesHelper.FailNoDomainCoolie("CheckCode");

            OnlineUserInfo  oui       = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
            string          checkCode = oui.Verifycode;
            VerifyImageInfo verifyimg = VerifyImageProvider.GetInstance(config.VerifyImageAssemly).GenerateImage(checkCode, 120, 60, bg, textcolor);

            //用于验证
            CookiesHelper.AddNoDomainCoolie("CheckCode", checkCode, 1);
            Bitmap image = verifyimg.Image;

            System.Web.HttpContext.Current.Response.ContentType = verifyimg.ContentType;
            image.Save(this.Response.OutputStream, verifyimg.ImageFormat);
        }
Example #7
0
        public void Process(Socket workerSock)
        {
            LoginMsg login = new LoginMsg();

            login.ReceiveFrom(workerSock);
            string userName = login.UserName;
            string userPwd  = login.UserPwd;

            var  userService = new UserService(userName, userPwd);
            bool loginResult = userService.CheckLogin();

            if (loginResult)
            {
                OnlineUserInfo user = new OnlineUserInfo {
                    UserName = userName, IPEnd = workerSock.RemoteEndPoint as IPEndPoint
                };
                foreach (var s in Server.TheTcpHelper.AcceptedSockets)
                {
                    NewUserOnlineMsg newUserOnlineMsg = new NewUserOnlineMsg(user.UserName, user.IPEnd.Address.ToString());
                    newUserOnlineMsg.Send(s);
                }

                UserService.LoginUsers.Add(user);
                if (!UserService.DicUserSockets.ContainsKey(user.UserName))
                {
                    UserService.DicUserSockets.Add(user.UserName, workerSock);
                }
            }
            var r = loginResult ? LOGIN_RESULT.OK : LOGIN_RESULT.PWD_ERROR;

            Console.WriteLine("{0} login {1}", userName, r);
            LoginResultMsg loginResultMsg = new LoginResultMsg(r);

            loginResultMsg.Send(workerSock);
        }
Example #8
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                config = GeneralConfigs.GetConfig();

                // 如果IP访问列表有设置则进行判断
                if (config.Adminipaccess.Trim() != "")
                {
                    string[] regctrl = Utils.SplitString(config.Adminipaccess, "\n");
                    if (!Utils.InIPArray(DNTRequest.GetIP(), regctrl))
                    {
                        Context.Response.Redirect(BaseConfigs.GetForumPath + "admin/syslogin.aspx");
                        return;
                    }
                }

                //获取当前用户的在线信息
                OnlineUserInfo oluserinfo = new OnlineUserInfo();
                try
                {
                    oluserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
                }
                catch
                {
                    Thread.Sleep(2000);
                    oluserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
                }


                #region 进行权限判断

                UserGroupInfo usergroupinfo = AdminUserGroups.AdminGetUserGroupInfo(oluserinfo.Groupid);
                if (oluserinfo.Userid <= 0 || usergroupinfo.Radminid != 1)
                {
                    Context.Response.Redirect(BaseConfigs.GetForumPath + "admin/syslogin.aspx");
                    return;
                }

                string secques = Users.GetUserInfo(oluserinfo.Userid).Secques;
                // 管理员身份验证
                if (Context.Request.Cookies["dntadmin"] == null || Context.Request.Cookies["dntadmin"]["key"] == null || ForumUtils.GetCookiePassword(Context.Request.Cookies["dntadmin"]["key"].ToString(), config.Passwordkey) != (oluserinfo.Password + secques + oluserinfo.Userid.ToString()))
                {
                    Context.Response.Redirect(BaseConfigs.GetForumPath + "admin/syslogin.aspx");
                    return;
                }
                else
                {
                    Context.AddAdminCookie(config, oluserinfo, secques);
                    //HttpCookie cookie = HttpContext.Current.Request.Cookies["dntadmin"];
                    //cookie.Values["key"] = ForumUtils.SetCookiePassword(oluserinfo.Password + secques + oluserinfo.Userid.ToString(), config.Passwordkey);
                    //cookie.Expires = DateTime.Now.AddMinutes(30);
                    //HttpContext.Current.Response.AppendCookie(cookie);
                }

                #endregion
            }
        }
Example #9
0
    private void OnGetOnlineUser(DataModel model)
    {
        OnlineUserInfo list = OnlineUserInfo.Parser.ParseFrom(model.Message);

        print("online userList count:" + list.UserList.Count);
        ChatManager.Instance.OnlineUserList.Clear();
        ChatManager.Instance.OnlineUserList.AddRange(list.UserList);
        ChatManager.Instance.OnlineUserChanged();
        MainUIManager.Instance.UpdateUserList();
    }
Example #10
0
        protected string GetLastPageVisitedInfo(OnlineUserInfo oui)
        {
            string result = string.Empty;

            if (!String.IsNullOrEmpty(oui.LastPageVisited))
            {
                result = string.Format("<a href=\"{0}\" target=\"_blank\">{0}</a>", oui.LastPageVisited);
            }
            return(result);
        }
Example #11
0
        public static Discuz.Common.Generic.List <OnlineUserInfo> GetOnlineUserCollection(out int totaluser, out int guest, out int user, out int invisibleuser)
        {
            Discuz.Common.Generic.List <OnlineUserInfo> coll = new Discuz.Common.Generic.List <OnlineUserInfo>();
#endif
            //在线注册用户数
            user = 0;
            //在线隐身用户数
            invisibleuser = 0;
            //在线总用户数
            totaluser = 0;
            IDataReader reader = DatabaseProvider.GetInstance().GetOnlineUserList();

            while (reader.Read())
            {
                OnlineUserInfo info = LoadSingleOnlineUser(reader);
                //
                if (info.Userid > 0)
                {
                    user++;
                }
                if (info.Invisible == 1)
                {
                    invisibleuser++;
                }
                totaluser++;
                if (info.Userid > 0 || (info.Userid == -1 && GeneralConfigs.GetConfig().Whosonlinecontract == 0))
                {
                    info.Actionname = UserAction.GetActionDescriptionByID((int)(info.Action));
                    coll.Add(info);
                }
            }
            reader.Close();
            int highestonlineusercount = Utils.StrToInt(Statistics.GetStatisticsRowItem("highestonlineusercount"), 1);

            if (totaluser > highestonlineusercount)
            {
                if (Statistics.UpdateStatistics("highestonlineusercount", totaluser) > 0)
                {
                    Statistics.UpdateStatistics("highestonlineusertime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                    Statistics.ReSetStatisticsCache();
                }
            }

            //统计游客
            if (totaluser > user)
            {
                guest = totaluser - user;
            }
            else
            {
                guest = 0;
            }
            //返回当前版块的在线用户集合
            return(coll);
        }
Example #12
0
        public DiscuzSpaceUCBase()
        {
            OnlineUserInfo oluserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);

            olid      = oluserinfo.Olid;
            userid    = oluserinfo.Userid;
            username  = oluserinfo.Username;
            _userinfo = Users.GetUserInfo(userid);

            if (DNTRequest.GetInt("postid", 0) > 0)
            {
                SpacePostInfo __spacepostinfo = BlogProvider.GetSpacepostsInfo(Space.Data.DbProvider.GetInstance().GetSpacePost(DNTRequest.GetInt("postid", 0)));
                spaceuid = __spacepostinfo != null? __spacepostinfo.Uid:0;
            }

            if (spaceuid > 0)
            {
                spaceconfiginfo = BlogProvider.GetSpaceConfigInfo(spaceuid);
                spaceid         = spaceconfiginfo.SpaceID;
            }
            else
            {
                if (spaceid > 0)
                {
                    spaceuid        = BlogProvider.GetUidBySpaceid(spaceid.ToString());
                    spaceconfiginfo = BlogProvider.GetSpaceConfigInfo(spaceuid);
                }
            }

            if (spaceconfiginfo == null)
            {
                spaceconfiginfo = new SpaceConfigInfo();
            }

            pagesize = spaceconfiginfo.Bpp;
            //去掉http地址中的文件名称
            if (forumurl.ToLower().IndexOf("http://") == 0)
            {
                forumurlnopage = forumurl.Substring(0, forumurl.LastIndexOf('/')) + "/";
            }
            else
            {
                forumurl = "../" + forumurl;
            }

            if (configspaceurlnopage.ToLower().IndexOf("http://") < 0)
            {
                configspaceurlnopage = forumurlnopage;
            }
            else
            {
                configspaceurlnopage = configspaceurlnopage.ToLower().Substring(0, configspaceurlnopage.LastIndexOf('/')) + "/";
            }
        }
Example #13
0
        public static OnlineUserInfo GetOnlineUser(int olid)
        {
            IDataReader    reader         = DatabaseProvider.GetInstance().GetOnlineUser(olid);
            OnlineUserInfo onlineuserinfo = null;

            if (reader.Read())
            {
                onlineuserinfo = LoadSingleOnlineUser(reader);
            }
            reader.Close();
            return(onlineuserinfo);
        }
Example #14
0
        /// <summary>
        /// 获得指定用户的详细信息
        /// </summary>
        /// <returns>用户的详细信息</returns>
        private static OnlineUserInfo GetOnlineUserByIP(int userid, string ip)
        {
            DataTable dt = DatabaseProvider.GetInstance().GetOnlineUserByIP(userid, ip);

            if (dt.Rows.Count > 0)
            {
                OnlineUserInfo oluser = LoadSingleOnlineUser(dt.Rows[0]);
                dt.Dispose();
                return(oluser);
            }
            return(null);
        }
Example #15
0
        /// <summary>
        /// 获得指定用户的详细信息
        /// </summary>
        /// <param name="userid">在线用户ID</param>
        /// <param name="password">用户密码</param>
        /// <returns>用户的详细信息</returns>
        private static OnlineUserInfo GetOnlineUser(int userid, string password)
        {
            DataTable dt = DatabaseProvider.GetInstance().GetOnlineUser(userid, password);

            if (dt.Rows.Count > 0)
            {
                DataRow        dr             = dt.Rows[0];
                OnlineUserInfo onlineuserinfo = LoadSingleOnlineUser(dr);
                dt.Dispose();
                return(onlineuserinfo);
            }
            return(null);
        }
Example #16
0
        /// <summary>
        /// 创建在线游客
        /// </summary>
        /// <param name="sid">sessionId</param>
        /// <param name="updateTime">更新时间</param>
        /// <param name="ip">ip</param>
        /// <param name="regionId">区域id</param>
        /// <returns></returns>
        public static int CreateOnlineGuest(string sid, DateTime updateTime, string ip, int regionId)
        {
            OnlineUserInfo onlineUserInfo = new OnlineUserInfo();

            onlineUserInfo.Uid        = -1;
            onlineUserInfo.Sid        = sid;
            onlineUserInfo.NickName   = "游客";
            onlineUserInfo.IP         = ip;
            onlineUserInfo.RegionId   = regionId;
            onlineUserInfo.UpdateTime = updateTime;

            return(BrnMall.Data.OnlineUsers.CreateOnlineUser(onlineUserInfo));
        }
Example #17
0
        /// <summary>
        /// 获得在线用户
        /// </summary>
        /// <param name="sid">sessionId</param>
        /// <returns></returns>
        public static OnlineUserInfo GetOnlineUserBySid(string sid)
        {
            OnlineUserInfo onlineUserInfo = null;
            IDataReader    reader         = BrnMall.Core.BMAData.RDBS.GetOnlineUserBySid(sid);

            if (reader.Read())
            {
                onlineUserInfo = BuildOnlineUserFromReader(reader);
            }

            reader.Close();
            return(onlineUserInfo);
        }
Example #18
0
        private void AddOnlineUserData(OnlineUserInfo user)
        {
            OnlineUserData userData = new OnlineUserData();

            userData.UserName = user.UserName;
            if (user.NickName == null || user.NickName == string.Empty)
            {
                userData.NickName = user.UserName;
            }
            else
            {
                userData.NickName = user.NickName;
            }

            if (user.ImageHash != null)
            {
                try
                {
                    string path = _vm.ImagePath + HashHelper.ComputeStringMd5(user.UserName) + ".jpg";
                    if (File.Exists(path))
                    {
                        if (_vm.UserName == user.UserName)
                        {
                            userData.Image = new BitmapImage();
                            FileStream fs  = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
                            byte[]     buf = new byte[fs.Length];
                            fs.Read(buf, 0, (int)fs.Length);
                            fs.Close();
                            MemoryStream ms = new MemoryStream(buf);

                            userData.Image.BeginInit();
                            userData.Image.StreamSource     = ms;
                            userData.Image.DecodePixelWidth = 200;
                            userData.Image.CacheOption      = BitmapCacheOption.OnLoad;
                            userData.Image.EndInit();
                            userData.Image.Freeze();
                        }
                        else
                        {
                            userData.Image = new BitmapImage(new Uri(path));
                            userData.Image.Freeze();
                        }
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }
            Application.Current.Dispatcher.Invoke(() => _vm.OnlineUser.Add(userData));
        }
Example #19
0
        private static OnlineUserInfo LoadSingleOnlineUser(DataRow dr)
        {
            OnlineUserInfo info = new OnlineUserInfo();

            info.Olid           = TypeConverter.ObjectToInt(dr["olid"]);
            info.Userid         = TypeConverter.ObjectToInt(dr["userid"]);
            info.Ip             = dr["ip"].ToString();
            info.Username       = dr["username"].ToString();
            info.Nickname       = dr["nickname"].ToString();
            info.Password       = dr["password"].ToString();
            info.Groupid        = Int16.Parse(dr["groupid"].ToString());
            info.Olimg          = dr["olimg"].ToString();
            info.Adminid        = Int16.Parse(dr["adminid"].ToString());
            info.Invisible      = Int16.Parse(dr["invisible"].ToString());
            info.Action         = Int16.Parse(dr["action"].ToString());
            info.Actionname     = "";
            info.Lastactivity   = Int16.Parse(dr["lastactivity"].ToString());
            info.Lastposttime   = dr["lastposttime"].ToString();
            info.Lastpostpmtime = dr["lastpostpmtime"].ToString();
            info.Lastsearchtime = dr["lastsearchtime"].ToString();
            info.Lastupdatetime = dr["lastupdatetime"].ToString();
            info.Forumid        = TypeConverter.ObjectToInt(dr["forumid"]);
            if (dr["forumname"] != DBNull.Value)
            {
                info.Forumname = dr["forumname"].ToString();
            }

            info.Titleid = TypeConverter.ObjectToInt(dr["titleid"]);
            if (dr["title"] != DBNull.Value)
            {
                info.Title = dr["title"].ToString();
            }

            info.Verifycode = dr["verifycode"].ToString();
            if (dr["newpms"] != DBNull.Value)
            {
                info.Newpms = Int16.Parse(dr["newpms"].ToString());
            }

            if (dr["newnotices"] != DBNull.Value)
            {
                info.Newnotices = Int16.Parse(dr["newnotices"].ToString());
            }

            //if (dr["newfriendrequest"] != DBNull.Value)
            //    info.Newfriendrequest = Int16.Parse(dr["newfriendrequest"].ToString());
            //if (dr["newapprequest"] != DBNull.Value)
            //    info.Newapprequest = Int16.Parse(dr["newapprequest"].ToString());

            return(info);
        }
Example #20
0
        /// <summary>
        /// 从IDataReader创建OnlineUserInfo
        /// </summary>
        public static OnlineUserInfo BuildOnlineUserFromReader(IDataReader reader)
        {
            OnlineUserInfo onlineUserInfo = new OnlineUserInfo();

            onlineUserInfo.OlId       = TypeHelper.ObjectToInt(reader["olid"]);
            onlineUserInfo.Uid        = TypeHelper.ObjectToInt(reader["uid"]);
            onlineUserInfo.Sid        = reader["sid"].ToString();
            onlineUserInfo.NickName   = reader["nickname"].ToString();
            onlineUserInfo.IP         = reader["ip"].ToString();
            onlineUserInfo.RegionId   = TypeHelper.ObjectToInt(reader["regionid"]);
            onlineUserInfo.UpdateTime = TypeHelper.ObjectToDateTime(reader["updatetime"]);

            return(onlineUserInfo);
        }
Example #21
0
        /// <summary>
        /// 获得在线用户列表
        /// </summary>
        /// <param name="pageSize">每页数</param>
        /// <param name="pageNumber">当前页数</param>
        /// <param name="locationType">位置类型(0代表省,1代表市,2代表区或县)</param>
        /// <param name="locationId">位置id</param>
        /// <param name="sort">排序</param>
        /// <returns></returns>
        public static List <OnlineUserInfo> GetOnlineUserList(int pageSize, int pageNumber, int locationType, int locationId, string sort)
        {
            List <OnlineUserInfo> onlineUserList = new List <OnlineUserInfo>();
            IDataReader           reader         = BrnMall.Core.BMAData.RDBS.GetOnlineUserList(pageSize, pageNumber, locationType, locationId, sort);

            while (reader.Read())
            {
                OnlineUserInfo onlineUserInfo = BuildOnlineUserFromReader(reader);
                onlineUserList.Add(onlineUserInfo);
            }

            reader.Close();
            return(onlineUserList);
        }
Example #22
0
        //public override System.Threading.Tasks.Task OnConnected()
        //{
        //    string clientName = Context.QueryString["clientName"].ToString();
        //    string clientId = Context.QueryString["clientId"].ToString();
        //    OnLineUsers.AddOrUpdate(clientId, clientName, (key, value) => clientName);
        //    Clients.All.userChange(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), string.Format("{0} 加入了。", clientName), OnLineUsers.ToArray());
        //    return base.OnConnected();
        //}

        //public override System.Threading.Tasks.Task OnDisconnected(bool stopCalled)
        //{
        //    string clientName = Context.QueryString["clientName"].ToString();
        //    string clientId = Context.QueryString["clientId"].ToString();
        //    Clients.All.userChange(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), string.Format("{0} 离开了。", clientName), OnLineUsers.ToArray());
        //    OnLineUsers.TryRemove(clientId, out clientName);
        //    return base.OnDisconnected(stopCalled);
        //}

        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public override Task OnConnectedAsync()
        {
            var    orgNo      = "";
            var    bgNo       = "";
            var    result     = 0;
            var    user       = new SysUsrMstr();
            string clientId   = Context.GetHttpContext().Request.Query["clientId"].ToString();
            string clientName = Context.GetHttpContext().Request.Query["clientName"];

            if (string.IsNullOrEmpty(clientName))
            {
                user       = _chatHelper.GetUserInfo(clientId);
                clientName = user.USR_REAL_NAME;
            }

            _chatHelper.GetStoreNo(clientId, ref orgNo, ref bgNo);
            var log = new Log("Chat/Connect/" + bgNo + "");

            log.Write("connect:" + Context.ConnectionId + "");
            try
            {
                UserList = UserList.Where(c => c.BgNo == bgNo).ToList();
                var onlineUser = UserList.Where(p => p.ConnectionId == Context.ConnectionId && p.BgNo == bgNo).FirstOrDefault();
                log.Write("onlineUser:"******"");
                if (user != null)
                {
                    UserList.Remove(onlineUser);
                }
                // RemoveMessage(clientId);
                var newUser = new OnlineUserInfo();
                if (int.TryParse(clientId, out result))
                {
                    newUser.UserType = int.Parse(user.USR_TYPE);
                }
                newUser.UserId       = clientId;
                newUser.ConnectionId = Context.ConnectionId;
                newUser.UserNickName = clientName;
                newUser.Url          = _chatHelper.GetWxUrl(clientId);
                newUser.BgNo         = bgNo;
                UserList.Add(newUser);
                Clients.Clients(GetUserConnectionIds()).SendAsync("userChange", clientId, true);
            }
            catch (Exception ex)
            {
                log.Write(ex.Message);
            }

            return(base.OnConnectedAsync());
        }
Example #23
0
        public List <OnlineUserInfo> GetFriends()
        {
            List <OnlineUserInfo> list = new List <OnlineUserInfo>();
            var friends = Friends.FindAll(x => x.UserName == uName);

            foreach (Friends f in friends)
            {
                var u = new OnlineUserInfo();
                u.UserName = f.FriendName;
                var x = LoginUsers.Find(user => user.UserName == u.UserName);
                u.IPEnd = x == null ? null : x.IPEnd;
                list.Add(u);
            }
            return(list);
        }
Example #24
0
        protected string GetLocationInfo(OnlineUserInfo oui)
        {
            string result = string.Empty;

            try
            {
                string countryName = GeoCountryLookup.LookupCountryName(oui.IPAddress);
                result = Server.HtmlEncode(countryName);
            }
            catch (Exception exc)
            {
                Debug.WriteLine(exc.ToString());
            }
            return(result);
        }
Example #25
0
        private static OnlineUserInfo LoadSingleOnlineUser(DataRow dr)
        {
            OnlineUserInfo info = new OnlineUserInfo();

            info.olID         = Int32.Parse(dr["olID"].ToString());
            info.UserID       = Int32.Parse(dr["UserID"].ToString());
            info.oIP          = dr["oIP"].ToString();
            info.oUserName    = dr["oUserName"].ToString();
            info.UserGroupsID = Int32.Parse(dr["UserGroupsID"].ToString());
            info.UserSPID     = Int32.Parse(dr["UserSPID"].ToString());
            info.oAppendTime  = DateTime.Parse(dr["oAppendTime"].ToString());
            info.oLastTime    = DateTime.Parse(dr["oLastTime"].ToString());

            return(info);
        }
Example #26
0
 /// <summary>
 /// WEB权限认证
 /// </summary>
 /// <param name="creinfo">认证信息</param>
 /// <returns>是否通过验正</returns>
 private bool AuthenticateUser(CredentialInfo creinfo)
 {
     if (creinfo.UserID > 0)
     {
         int olid = Discuz.Forum.OnlineUsers.GetOlidByUid(creinfo.UserID);
         if (olid > 0)
         {
             OnlineUserInfo oluserinfo = Discuz.Forum.OnlineUsers.GetOnlineUser(olid);
             if (oluserinfo.Userid == creinfo.UserID && Utils.UrlEncode(Discuz.Forum.ForumUtils.SetCookiePassword(oluserinfo.Password.Trim(), GeneralConfigs.GetConfig().Passwordkey)) == creinfo.Password)//检测用户id和口令
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Example #27
0
        /// <summary>
        /// 创建在线会员
        /// </summary>
        /// <param name="uid">会员id</param>
        /// <param name="sid">sessionId</param>
        /// <param name="nickName">会员昵称</param>
        /// <param name="updateTime">更新时间</param>
        /// <param name="ip">ip</param>
        /// <param name="regionId">区域id</param>
        /// <returns></returns>
        public static int CreateOnlineMember(int uid, string sid, string nickName, DateTime updateTime, string ip, int regionId)
        {
            OnlineUserInfo onlineUserInfo = new OnlineUserInfo();

            onlineUserInfo.Uid        = uid;
            onlineUserInfo.Sid        = sid;
            onlineUserInfo.NickName   = nickName;
            onlineUserInfo.IP         = ip;
            onlineUserInfo.RegionId   = regionId;
            onlineUserInfo.UpdateTime = updateTime;

            int olid = BrnMall.Data.OnlineUsers.CreateOnlineUser(onlineUserInfo);

            //更新用户最后访问信息
            Users.UpdateUserLastVisit(uid, updateTime, ip, regionId);
            return(olid);
        }
Example #28
0
 /// <summary>
 /// WEB权限认证
 /// </summary>
 /// <param name="creinfo">认证信息</param>
 /// <returns>是否通过验正</returns>
 private bool AuthenticateUser(CredentialInfo creinfo)
 {
     if (creinfo.ForumID > 0)
     {
         int olid = Discuz.Forum.OnlineUsers.GetOlidByUid(creinfo.UserID);
         if (olid > 0)
         {
             OnlineUserInfo oluserinfo = Discuz.Forum.OnlineUsers.GetOnlineUser(olid);
             if (oluserinfo.Userid == creinfo.UserID && Utils.UrlEncode(Discuz.Forum.ForumUtils.SetCookiePassword(oluserinfo.Password.Trim(), GeneralConfigs.GetConfig().Passwordkey)) == creinfo.Password && //检测用户id和口令
                 creinfo.AuthToken == DES.Encode(string.Format("{0},{1}", oluserinfo.Olid.ToString(), oluserinfo.Username.ToString()), oluserinfo.Password.Substring(0, 10)).Replace("+", "["))               //检查认证信息
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Example #29
0
        /// <summary>
        /// 增加一个会员信息到在线列表中。用户login.aspx或在线用户信息超时,但用户仍在线的情况下重新生成用户在线列表
        /// </summary>
        /// <param name="uid"></param>
        private static OnlineUserInfo CreateUser(int UserID, int timeout)
        {
            OnlineUserInfo onlineuserinfo = new OnlineUserInfo();

            if (UserID > 0)
            {
                UserInfo ui = BLL.tbUserInfo.GetUserInfoModel(UserID);
                if (ui != null)
                {
                    onlineuserinfo.UserID    = UserID;
                    onlineuserinfo.oUserName = ui.uName.Trim();

                    onlineuserinfo.oIP         = HTTPRequest.GetIP();
                    onlineuserinfo.oAppendTime = DateTime.Parse(Utils.GetDateTime());
                    onlineuserinfo.oLastTime   = DateTime.Parse(Utils.GetDateTime());

                    int olid = Add(onlineuserinfo, timeout);
                    onlineuserinfo.olID = olid;

                    HttpCookie cookie = HttpContext.Current.Request.Cookies["Yannyo"];
                    if (cookie != null)
                    {
                        if (HttpContext.Current.Request.Cookies["Yannyo"]["expires"] != null)
                        {
                            int expires = Utils.StrToInt(HttpContext.Current.Request.Cookies["Yannyo"]["expires"].ToString(), 0);
                            if (expires > 0)
                            {
                                cookie.Expires = DateTime.Now.AddMinutes(Utils.StrToInt(HttpContext.Current.Request.Cookies["Yannyo"]["expires"].ToString(), 0));
                            }
                        }
                    }

                    string cookieDomain = GeneralConfigs.GetConfig().CookieDomain.Trim();
                    if (cookieDomain != string.Empty && HttpContext.Current.Request.Url.Host.IndexOf(cookieDomain) > -1 && UsersUtils.IsValidDomain(HttpContext.Current.Request.Url.Host))
                    {
                        cookie.Domain = cookieDomain;
                    }
                    HttpContext.Current.Response.AppendCookie(cookie);
                }
            }
            else
            {
                onlineuserinfo = CreateGuestUser(timeout);
            }
            return(onlineuserinfo);
        }
Example #30
0
        public override bool Run(CommandParameter commandParam, ref string result)
        {
            if (commandParam.AppInfo.ApplicationType == (int)ApplicationType.WEB)
            {
                result = Util.CreateErrorMessage(ErrorType.API_EC_PERMISSION_DENIED, commandParam.ParamList);
                return(false);
            }
            TokenInfo token = new TokenInfo();

            if (System.Web.HttpContext.Current.Request.Cookies["dnt"] == null || System.Web.HttpContext.Current.Request.Cookies["dnt"]["expires"] == null)
            {
                token.Token = "";
                result      = commandParam.Format == FormatType.JSON ? string.Empty : SerializationHelper.Serialize(token);
                return(true);
            }

            OnlineUserInfo oluserinfo = OnlineUsers.UpdateInfo(commandParam.GeneralConfig.Passwordkey, commandParam.GeneralConfig.Onlinetimeout);
            int            olid       = oluserinfo.Olid;

            string   expires = string.Empty;
            DateTime expireUTCTime;

            expires = System.Web.HttpContext.Current.Request.Cookies["dnt"]["expires"].ToString();
            ShortUserInfo userinfo = Discuz.Forum.Users.GetShortUserInfo(oluserinfo.Userid);

            expireUTCTime = DateTime.Parse(userinfo.Lastvisit).ToUniversalTime().AddSeconds(Convert.ToDouble(expires));
            expires       = Utils.ConvertToUnixTimestamp(expireUTCTime).ToString();

            string time = string.Empty;

            if (oluserinfo == null)
            {
                time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            }
            else
            {
                time = DateTime.Parse(oluserinfo.Lastupdatetime).ToString("yyyy-MM-dd HH:mm:ss");
            }

            string authToken = Common.DES.Encode(string.Format("{0},{1},{2}", olid.ToString(), time, expires), commandParam.AppInfo.Secret.Substring(0, 10)).Replace("+", "[");

            token.Token = authToken;
            result      = commandParam.Format == FormatType.JSON ? authToken : SerializationHelper.Serialize(token);
            return(true);
        }
Example #31
0
 public void AddUser(OnlineUserInfo userinfo)
 {
     throw new NotImplementedException();
 }