private void SaveSessionToDatabase(SessionId sessionId, User user, ConnectionTicket ticket) { lock (_lockObj) { try { using (ServerDataContext context = new ServerDataContext()) { ActiveSession session = new ActiveSession { Id = ObjectId.NewId(), SessionId = sessionId.ToString(), UserId = user.Id, ClientComputer = ticket.ClientComputer, Port = ticket.Port }; context.ActiveSessions.Add(session); context.SaveChanges(); } } catch (Exception e) { ApplicationContext.Log.Error(GetType(), e); throw; } } }
public UserData GetRelatedUserInfo(SessionId sessionId) { using (ServerDataContext context = new ServerDataContext()) { ActiveSession session = context.GetSession(sessionId); return(context.CreateUserData(session.User)); } }
public string GetRelatedUserId(SessionId sessionId) { using (ServerDataContext context = new ServerDataContext()) { ActiveSession session = context.GetSession(sessionId); return(session.User.Id.ToString().ToUpper()); } }
public string GetRelatedUserName(SessionId sessionId) { using (ServerDataContext context = new ServerDataContext()) { ActiveSession session = context.GetSession(sessionId); return(session.User.Name); } }
private string DoWork(string sessionId, string encryptData) { if (string.IsNullOrWhiteSpace(encryptData)) { return(ErrorResources.SYSTEM_WARNING_0x0001); } //初始化服务器(插件、配置) string decrypString = ConfigurationLoader.Instance.DataParser.DecryptData(encryptData); string methodText = ConfigurationLoader.Instance.RequestSpliter.GetMethodText(decrypString); string attatchmentText = ConfigurationLoader.Instance.RequestSpliter.GetAttachmentText(decrypString); var request = new RequestSchema(sessionId, methodText, attatchmentText); request.ResolveRequest(ConfigurationLoader.Instance.MethodResolver, ConfigurationLoader.Instance.SessionResolver, ConfigurationLoader.Instance.AttachmentResolver); var dataContext = new ServerDataContext { Request = request }; PluginManager.Instance.UpdateDataContext(dataContext); //定义授权方法 ISecurityAuthorize security = ConfigurationLoader.Instance.SecurityAuthorize; //Session bool sessionPass = ConfigurationLoader.Instance.Business.SessionAccess(request.Session); try { //获取授权信息 if (!security.Authorized(dataContext)) { return(security.Error.SimpleErrorDescription); } if (!sessionPass) { return(ErrorResources.SYSTEM_FATAL_ERROR_0x0001); } //获取请求响应 //TODO:此处的异常应统一处理 if (request.RequestMethod == null) { return(ErrorResources.SYSTEM_WARNING_0x0002); } object obj = MethodRoute.Invoke(request.RequestMethod); string json = JSONConvert.ConvertToString(obj); //压缩发送 return(CompressProvider.Compress(json)); } catch (Exception) { return(ErrorResources.SYSTEM_INFO_0x0001); } }
public void EnsureAuthorizedSession(SessionId sessionId) { using (ServerDataContext context = new ServerDataContext()) { if (!context.CheckSession(sessionId)) { throw new NotAuthorizedRequestException(GetType(), sessionId); } } }
public bool HasPostBeenAnalyzed(Post post) { if (Config.I.CurrentRunMode == BotRunMode.Simulated) { return(false); } using (var context = new ServerDataContext(Config.I.ServerConnectionString)) { return(context.AnalyzedPosts.Any(t => t.PostID == post.Id)); } }
private string DoWork(string encryptData) { if (string.IsNullOrWhiteSpace(encryptData)) { return(ErrorResources.SYSTEM_WARNING_0x0001); } //初始化服务器(插件、配置) string decrypString = ConfigurationLoader.Instance.DataParser.DecryptData(encryptData); string methodText = ConfigurationLoader.Instance.RequestSpliter.GetMethodText(decrypString); string attatchmentText = ConfigurationLoader.Instance.RequestSpliter.GetAttachmentText(decrypString); var request = new RequestSchema(methodText, attatchmentText); request.ResolveRequestWithoutSession(ConfigurationLoader.Instance.MethodResolver, ConfigurationLoader.Instance.AttachmentResolver); var dataContext = new ServerDataContext { Request = request }; PluginManager.Instance.UpdateDataContext(dataContext); //定义授权方法 ISecurityAuthorize security = ConfigurationLoader.Instance.SecurityAuthorize; try { //获取授权信息 if (!security.Authorized(dataContext)) { return(security.Error.SimpleErrorDescription); } //获取允许的方法 MethodsName = MethodsName ?? (MethodsName = AvailableInvokeMethod(typeof(ILoginEntry))); //获取请求响应 //TODO:此处的异常应统一处理 if (request.RequestMethod == null) { return(ErrorResources.SYSTEM_WARNING_0x0002); } object obj = MethodRoute.Invoke(request.RequestMethod, MethodsName); string json = JSONConvert.ConvertToString(obj); //压缩发送 return(CompressProvider.Compress(json)); } catch (Exception ex) { return(ex.InnerException != null?ex.InnerException.ToString() : ex.ToString()); //return ErrorResources.SYSTEM_INFO_0x0001; } }
public UserData CreateUser(string username) { lock (_lockObj) { using (ServerDataContext context = new ServerDataContext()) { User user = context.Users.Create(); user.Id = ObjectId.NewId(); user.Name = username; user.SecurityToken = ObjectId.NewId().ToString(); context.Users.Add(user); context.SaveChanges(); return(context.CreateUserData(user)); } } }
public bool ChangeUserName(Guid userId, string newName) { lock (_lockObj) { using (ServerDataContext context = new ServerDataContext()) { User user = context.Users.Find(userId); if (user == null) { return(false); } user.Name = newName; context.SaveChanges(); return(true); } } }
public bool RemoveUser(Guid userId) { lock (_lockObj) { using (ServerDataContext context = new ServerDataContext()) { User user = context.Users.Find(userId); if (user == null) { return(false); } context.Users.Remove(user); context.SaveChanges(); return(true); } } }
private void RemoveSessionFromDatabase(SessionId sessionId) { lock (_lockObj) { try { using (ServerDataContext context = new ServerDataContext()) { context.RemoveSession(sessionId); context.SaveChanges(); } } catch (Exception e) { ApplicationContext.Log.Error(GetType(), e); throw; } } }
private bool CheckUser(string username, string token, out User user) { lock (_lockObj) { using (ServerDataContext context = new ServerDataContext()) { User result = context.GetUser(username); if (result != null) { if (result.SecurityToken == token) { user = result; return(true); } } } } user = null; return(false); }
public AnalyzedPost SubmitPostAnalysis(Post post, BotAction action) { if (Config.I.CurrentRunMode == BotRunMode.Simulated) { return(new AnalyzedPost() { }); } using (var context = new ServerDataContext(Config.I.ServerConnectionString)) { var analyzedPost = new AnalyzedPost { PostID = post.Id, AnalysisTimeUTC = DateTime.UtcNow, BotAction = (int)action }; context.AnalyzedPosts.InsertOnSubmit(analyzedPost); context.SubmitChanges(); return(analyzedPost); } }
public void ReconnectSessions() { using (ServerDataContext context = new ServerDataContext()) { List <SessionId> toRemove = new List <SessionId>(); foreach (ActiveSession session in context.ActiveSessions) { SessionId sessionId = new SessionId(session.SessionId); SessionData data = new SessionData(sessionId, context.CreateFakeTicket(session)); _sessions.TryAdd(sessionId, data); try { using (ClientProxy proxy = CreateClientProxy(data.Ticket)) { proxy.ConnectionRestarted(); Logger.Info("Restarted session to computer {0}.", data.Ticket.ClientComputer); } } catch (Exception e) { toRemove.Add(sessionId); ApplicationContext.Log.Error(GetType(), e); ApplicationContext.Log.Info(GetType(), "Removed session to: {0}", data.Ticket.ClientComputer); } } if (toRemove.Count > 0) { foreach (SessionId sessionId in toRemove) { SessionData tmpData; context.RemoveSession(sessionId); _sessions.TryRemove(sessionId, out tmpData); } context.SaveChanges(); } } }