초기커밋
This commit is contained in:
351
ServerCommon/z.Backup/LoginStorage.cs
Normal file
351
ServerCommon/z.Backup/LoginStorage.cs
Normal file
@@ -0,0 +1,351 @@
|
||||
//using Newtonsoft.Json;
|
||||
//using OtpNet;
|
||||
//using ServerCore; using ServerBase;
|
||||
//using StackExchange.Redis;
|
||||
|
||||
|
||||
//namespace ServerCommon
|
||||
//{
|
||||
// public class LoginInfo
|
||||
// {
|
||||
// public string Name = string.Empty;
|
||||
// public string Guid = string.Empty;
|
||||
// public string Email = string.Empty;
|
||||
// public DateTime LoginTime;
|
||||
// public LanguageType Language = LanguageType.None;
|
||||
// public int State = 0;
|
||||
// public string CurrentServer = String.Empty;
|
||||
// public string PartyGuid = string.Empty;
|
||||
// public string InstanceRoomId = string.Empty;
|
||||
|
||||
// public class MoveInfo
|
||||
// {
|
||||
// public string OneTimeKey = string.Empty;
|
||||
// public string DestServer = string.Empty;
|
||||
// }
|
||||
|
||||
// public MoveInfo? Moving;
|
||||
|
||||
// public bool ReadFrom(AccountAttr? attr, string curServer)
|
||||
// {
|
||||
// if (attr == null)
|
||||
// {
|
||||
// Log.getLogger().error("attr is null");
|
||||
// return false;
|
||||
// }
|
||||
// Name = attr?.Id ?? string.Empty;
|
||||
// Guid = attr?.Aid ?? string.Empty;
|
||||
// Email = attr?.Email ?? string.Empty;
|
||||
// Language = attr?.Language ?? LanguageType.None;
|
||||
// LoginTime = attr?.LoginDate ?? DateTime.UtcNow;
|
||||
// CurrentServer = curServer;
|
||||
// return true;
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
// /// <summary>
|
||||
// /// 유저 로그인 정보
|
||||
// /// </summary>
|
||||
// public class LoginStorage : IInitializer
|
||||
// {
|
||||
// readonly int KEEP_LOGIN_TIME_OUT = (60 * 1000);
|
||||
// //readonly int KEEP_WAIT_QUEUE_TIME = (30 * 1000);
|
||||
|
||||
// //ConnectionMultiplexer _connection = default!;
|
||||
// IDatabase _database = default!;
|
||||
|
||||
// string _keyPrefix = string.Empty;
|
||||
|
||||
// public LoginStorage(IDatabase redisDb, string keyPrefix)
|
||||
// {
|
||||
// Init(redisDb, keyPrefix);
|
||||
// }
|
||||
|
||||
// public async Task<Result> onInit()
|
||||
// {
|
||||
// await Task.CompletedTask;
|
||||
// var result = new Result();
|
||||
|
||||
// return result;
|
||||
// }
|
||||
|
||||
|
||||
// public LoginStorage()
|
||||
// {
|
||||
// }
|
||||
|
||||
// public void Init(IDatabase redisDB, string keyPrefix)
|
||||
// {
|
||||
// //var connection = await ConnectionMultiplexer.ConnectAsync(configuration);
|
||||
// //_database = _connection.GetDatabase();
|
||||
// _database = redisDB;
|
||||
|
||||
// _keyPrefix = keyPrefix;
|
||||
// if (!_keyPrefix.EndsWith(":"))
|
||||
// _keyPrefix += ":";
|
||||
|
||||
// _keyPrefix += "login:";
|
||||
// }
|
||||
|
||||
// string KeyWithPrefix(string key) => _keyPrefix + key;
|
||||
|
||||
|
||||
// /*
|
||||
// * 로그인 서버 로그인
|
||||
// */
|
||||
// public async Task<(ServerErrorCode, string)> Login(LoginInfo? login)
|
||||
// {
|
||||
// if (login == null)
|
||||
// {
|
||||
// Log.getLogger().error("login is null ");
|
||||
// return (ServerErrorCode.DbError, string.Empty);
|
||||
// }
|
||||
// string key = KeyWithPrefix(login.Name);
|
||||
|
||||
// Log.getLogger().debug($"login Id:{login.Name} guid:{login.Guid} email:{login.Email} server:{login.CurrentServer} key:{key} loginTime:{login.LoginTime.ToString("s")}");
|
||||
|
||||
// var value = await _database.StringGetAsync(key, CommandFlags.PreferReplica);
|
||||
// if (value.HasValue)
|
||||
// {
|
||||
// login = JsonConvert.DeserializeObject<LoginInfo>(value.ToString());
|
||||
// if (login == null)
|
||||
// {
|
||||
// // TODO: 로그 출력 수정 필요.
|
||||
// Log.getLogger().error($"login is null !!!, login Id:{login?.Name} guid:{login?.Guid} email:{login?.Email} server:{login?.CurrentServer} key:{key} loginTime:{login?.LoginTime.ToString("s")}");
|
||||
// return (ServerErrorCode.DbError, string.Empty);
|
||||
// }
|
||||
|
||||
// if (login.Moving != null)
|
||||
// {
|
||||
// Log.getLogger().error($"Moving Error Id:{login.Name} guid:{login.Guid} email:{login.Email} server:{login.CurrentServer} loginTime:{login.LoginTime.ToString("s")} value:{value}");
|
||||
// return (ServerErrorCode.Moving, login.Moving.DestServer);
|
||||
// }
|
||||
// Log.getLogger().error($" DupLogin Id:{login.Name} guid:{login.Guid} email:{login.Email} server:{login.CurrentServer} loginTime:{login.LoginTime.ToString("s")} value:{value}");
|
||||
// return (ServerErrorCode.DupLogin, login.CurrentServer);
|
||||
// }
|
||||
|
||||
// login.LoginTime = DateTimeHelper.Current;
|
||||
// if (await _database.StringSetAsync(key, JsonConvert.SerializeObject(login), TimeSpan.FromMilliseconds(KEEP_LOGIN_TIME_OUT)) == false)
|
||||
// {
|
||||
// Log.getLogger().error($"Id:{login.Name} guid:{login.Guid} email:{login.Email} server:{login.CurrentServer} loginTime:{login.LoginTime.ToString("s")} value:{value}");
|
||||
// return (ServerErrorCode.DbError, string.Empty);
|
||||
// }
|
||||
|
||||
// Log.getLogger().info($"login Id:{login.Name} guid:{login.Guid} email:{login.Email} server:{login.CurrentServer} loginTime:{login.LoginTime.ToString("s")}");
|
||||
|
||||
// return (ServerErrorCode.Success, string.Empty);
|
||||
// }
|
||||
|
||||
// public async Task Logout(string name)
|
||||
// {
|
||||
// Log.getLogger().info($"{name} Logout");
|
||||
|
||||
// string key = KeyWithPrefix(name);
|
||||
|
||||
// await _database.KeyDeleteAsync(key);
|
||||
// }
|
||||
|
||||
// public async Task<bool> KeepLogin(string name, LoginInfo login)
|
||||
// {
|
||||
// try
|
||||
// {
|
||||
// //Log.getLogger().info($"KeepLogin Key:{name}");
|
||||
// string key = KeyWithPrefix(name);
|
||||
// var value = await _database.StringGetAsync(key, CommandFlags.PreferReplica);
|
||||
// if (value.HasValue == false)
|
||||
// {
|
||||
// if (login.Name == string.Empty)
|
||||
// {
|
||||
// Log.getLogger().error($"KeepLogin. value null Key:{key} id:{name}");
|
||||
// return false;
|
||||
// }
|
||||
// value = JsonConvert.SerializeObject(login);
|
||||
// Log.getLogger().warn($"KeepLogin. new value Key:{key} new value : {value} {login.Name}");
|
||||
// }
|
||||
|
||||
// // 레디스에 저장된 로그인 해있는 서버와 KeepLogin을 실행한 서버를 비교
|
||||
// // 다르면 중복 로그인으로 보고 로그아웃 처리한다
|
||||
|
||||
// //Log.getLogger().debug($"KeepLogin. Key:{key} id:{name}");
|
||||
// return await _database.StringSetAsync(key, value, TimeSpan.FromMilliseconds(KEEP_LOGIN_TIME_OUT));
|
||||
// }
|
||||
// catch (Exception e)
|
||||
// {
|
||||
// Log.getLogger().error($"KeepLogin Key:{name} {e}");
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// }
|
||||
|
||||
// public async Task<LoginInfo?> GetLoginInfo(string name)
|
||||
// {
|
||||
// string key = KeyWithPrefix(name);
|
||||
// var value = await _database.StringGetAsync(key, CommandFlags.PreferReplica);
|
||||
// if (value.HasValue == false)
|
||||
// {
|
||||
// Log.getLogger().error($"{name} GetLoginInfo Key:{key} value.HasValue==false");
|
||||
// return null;
|
||||
// }
|
||||
|
||||
// Log.getLogger().info($"{name} GetLoginInfo Key:{key} Value:{value.ToString()}");
|
||||
|
||||
// return JsonConvert.DeserializeObject<LoginInfo>(value.ToString());
|
||||
// }
|
||||
|
||||
// public async Task<bool> ChangeState(string name, int state)
|
||||
// {
|
||||
// string key = KeyWithPrefix(name);
|
||||
// var value = await _database.StringGetAsync(key, CommandFlags.PreferReplica);
|
||||
// if (value.HasValue == false)
|
||||
// {
|
||||
// Log.getLogger().error($"{name} GetLoginInfo Key:{key} value.HasValue==false");
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// LoginInfo? login = JsonConvert.DeserializeObject<LoginInfo>(value.ToString());
|
||||
// if (login == null)
|
||||
// {
|
||||
// Log.getLogger().error($"{name} Json parsing errer Key:{key} value:{value.ToString()}");
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// login.State = state;
|
||||
|
||||
// if (await _database.StringSetAsync(key, JsonConvert.SerializeObject(login), TimeSpan.FromMilliseconds(KEEP_LOGIN_TIME_OUT)) == false)
|
||||
// {
|
||||
// Log.getLogger().error($"{name} StringSetAsync fail Key:{key} value:{value.ToString()}");
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// return true;
|
||||
// }
|
||||
|
||||
// public async Task<bool> ChangePartyGuid(string name, string partyGuid)
|
||||
// {
|
||||
// string key = KeyWithPrefix(name);
|
||||
// var value = await _database.StringGetAsync(key, CommandFlags.PreferReplica);
|
||||
// if (value.HasValue == false)
|
||||
// {
|
||||
// Log.getLogger().error($"{name} GetLoginInfo Key:{key} value.HasValue==false");
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// LoginInfo? login = JsonConvert.DeserializeObject<LoginInfo>(value.ToString());
|
||||
// if (login == null)
|
||||
// {
|
||||
// Log.getLogger().error($"{name} Json parsing errer Key:{key} value:{value.ToString()}");
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// login.PartyGuid = partyGuid;
|
||||
|
||||
// if (await _database.StringSetAsync(key, JsonConvert.SerializeObject(login), TimeSpan.FromMilliseconds(KEEP_LOGIN_TIME_OUT)) == false)
|
||||
// {
|
||||
// Log.getLogger().error($"{name} StringSetAsync fail Key:{key} value:{value.ToString()}");
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// return true;
|
||||
// }
|
||||
|
||||
// public async Task<bool> ChangeInstanceRoomId(string name, string instanceRoomId)
|
||||
// {
|
||||
// string key = KeyWithPrefix(name);
|
||||
// var value = await _database.StringGetAsync(key, CommandFlags.PreferReplica);
|
||||
// if (value.HasValue == false)
|
||||
// {
|
||||
// Log.getLogger().error($"{name} GetLoginInfo Key:{key} value.HasValue==false");
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// LoginInfo? login = JsonConvert.DeserializeObject<LoginInfo>(value.ToString());
|
||||
// if (login == null)
|
||||
// {
|
||||
// Log.getLogger().error($"{name} Json parsing errer Key:{key} value:{value.ToString()}");
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// login.InstanceRoomId = instanceRoomId;
|
||||
|
||||
// if (await _database.StringSetAsync(key, JsonConvert.SerializeObject(login), TimeSpan.FromMilliseconds(KEEP_LOGIN_TIME_OUT)) == false)
|
||||
// {
|
||||
// Log.getLogger().error($"{name} StringSetAsync fail Key:{key} value:{value.ToString()}");
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// return true;
|
||||
// }
|
||||
|
||||
// public async Task<string> StartMoving(string name, string destServer)
|
||||
// {
|
||||
// string key = KeyWithPrefix(name);
|
||||
// var value = await _database.StringGetAsync(key, CommandFlags.PreferReplica);
|
||||
// if (value.HasValue == false)
|
||||
// {
|
||||
// Log.getLogger().error($"{name} Not found Key:{key}");
|
||||
// return string.Empty;
|
||||
// }
|
||||
|
||||
// LoginInfo? login = JsonConvert.DeserializeObject<LoginInfo>(value.ToString());
|
||||
// if (login == null)
|
||||
// {
|
||||
// Log.getLogger().error($"{name} Json parsing errer Key:{key} value:{value.ToString()}");
|
||||
// return string.Empty;
|
||||
// }
|
||||
|
||||
// var otp = KeyGeneration.GenerateRandomKey(20);
|
||||
// var base32otp = Base32Encoding.ToString(otp);
|
||||
|
||||
// login.Moving = new LoginInfo.MoveInfo();
|
||||
// login.Moving.OneTimeKey = base32otp;
|
||||
// login.Moving.DestServer = destServer;
|
||||
|
||||
// if (await _database.StringSetAsync(key, JsonConvert.SerializeObject(login), TimeSpan.FromMilliseconds(KEEP_LOGIN_TIME_OUT*5)) == false)
|
||||
// {
|
||||
// Log.getLogger().error($"{name} StringSetAsync fail Key:{key} value:{value.ToString()}");
|
||||
// return string.Empty;
|
||||
// }
|
||||
|
||||
// Log.getLogger().info($"{name} StartMoving To {destServer}");
|
||||
|
||||
// return base32otp;
|
||||
// }
|
||||
|
||||
// public async Task<bool> EndMoving(string name, DateTime loginTime)
|
||||
// {
|
||||
// string key = KeyWithPrefix(name);
|
||||
// var value = await _database.StringGetAsync(key, CommandFlags.PreferReplica);
|
||||
// if (value.HasValue == false)
|
||||
// {
|
||||
// Log.getLogger().error($"{name} Not found key:{key}");
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// LoginInfo? loginInfo = JsonConvert.DeserializeObject<LoginInfo>(value.ToString());
|
||||
// if (loginInfo == null || loginInfo.Moving == null)
|
||||
// {
|
||||
// Log.getLogger().error($"{name} Json parsing error key:{key}, LoginInfo:{value.ToString()}");
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// string departureServer = loginInfo.CurrentServer;
|
||||
|
||||
// loginInfo.LoginTime = loginTime;
|
||||
// loginInfo.CurrentServer = loginInfo.Moving.DestServer;
|
||||
// loginInfo.Moving = null;
|
||||
|
||||
// if (await _database.StringSetAsync(key, JsonConvert.SerializeObject(loginInfo), TimeSpan.FromMilliseconds(KEEP_LOGIN_TIME_OUT)) == false)
|
||||
// {
|
||||
// Log.getLogger().error($"{name} StringSetAsynct fail key:{key} value:{value.ToString()}");
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// Log.getLogger().info($"{name} EndMoving From {departureServer}");
|
||||
|
||||
// return true;
|
||||
// }
|
||||
|
||||
// }
|
||||
//}
|
||||
|
||||
Reference in New Issue
Block a user