protected void Application_Start() { GlobalConfiguration.Configure(WebApiConfig.Register); BannedUsers bu = new BannedUsers(); RegistredUsers ru = new RegistredUsers(); Dispatcher.banedUsers = bu; ClientComands.registredUsers = ru; ClientComands.banedUsers = bu; new Task(bu.AutomaticUnban).Start(); }
public override Task <ServerReply> VisitAccount(VisitAccountRequest request, ServerCallContext context) { if (!TokenAuthentification(context.RequestHeaders, out string clientTokenValue)) { return(Task.FromResult(new ServerReply { RequestState = false, RequestMessage = string.Empty })); } if (!_registredUsers.TryGetValue(clientTokenValue, out UserClient userDataInfo)) { Log.Info($"couldn't get user data info!"); return(Task.FromResult(new ServerReply { RequestState = false, RequestMessage = string.Empty })); } if (userDataInfo.ResponseStreamWriterTask.Status != TaskStatus.Running) { Log.Info($"User hasn't established a channel initialisation!"); return(Task.FromResult(new ServerReply { RequestState = false, RequestMessage = string.Empty })); } if (!request.Join && userDataInfo.VisitorClient != null) { Log.Info($"Not visiting anymore {userDataInfo.VisitorClient.AccountName}!"); userDataInfo.VisitorClient.Visitors.Remove(userDataInfo); userDataInfo.VisitorClient = null; return(Task.FromResult(new ServerReply { RequestState = true, RequestMessage = string.Empty })); } var accountToVisit = RegistredUsers.FirstOrDefault(p => p.AccountName == request.AccountName); if (accountToVisit == null) { Log.Info($"Account to visit doesn't exist!"); return(Task.FromResult(new ServerReply { RequestState = false, RequestMessage = string.Empty })); } if (accountToVisit.PlayerState != PlayerState.None) { Log.Info($"Account to visit is already occupied {accountToVisit.PlayerState}!"); return(Task.FromResult(new ServerReply { RequestState = false, RequestMessage = string.Empty })); } userDataInfo.VisitorClient = accountToVisit; accountToVisit.Visitors.Add(userDataInfo); Log.Info($"{userDataInfo.AccountName} just joined {userDataInfo.VisitorClient} as visitor[{userDataInfo.VisitorClient.Visitors.Count}]!"); return(Task.FromResult(new ServerReply { RequestState = true, RequestMessage = string.Empty })); }