コード例 #1
0
        public SessionClientWrapper(Chanel2Server serverData, SessionClient sessionClient)
        {
            Chanel2Server  = serverData;
            _sessionClient = sessionClient;

            updateClientData();
        }
コード例 #2
0
ファイル: RegCommand.cs プロジェクト: creepyhauz/OnlineCity
        public string Execute(SocketCommandContext context, string ip, string token)
        {
            try
            {
                IPEndPoint serverAdr;
                var        message = CanExecute(context, ip, token, out serverAdr);
                if (!string.IsNullOrEmpty(message))
                {
                    return(message);
                }

                try
                {
                    new TcpClient(serverAdr.Address.ToString(), serverAdr.Port);
                }
                catch
                (Exception ex)
                {
                    return(Languages.Translator.ErrServerNotAvailable + "\n" + ex.Message);
                }

                var client = new SessionClient();
                if (!client.Connect(serverAdr.Address.ToString(), serverAdr.Port))
                {
                    return(Languages.Translator.ErrServerNotAvailable);
                }

                var pass = new CryptoProvider().GetHash(token);
                if (!client.Login(SessionClientWrapper.DiscrodLogin, pass, null))
                {
                    return(Languages.Translator.ErrInvalidToken);
                }

                var channelToServer = new Chanel2Server()
                {
                    Id                   = context.Channel.Id,
                    IP                   = serverAdr.Address.ToString(),
                    Port                 = serverAdr.Port,
                    LinkCreator          = context.Message.Author.Id,
                    LastOnlineTime       = DateTime.UtcNow.AddDays(-1),
                    Token                = token,
                    LastRecivedPostIndex = -1,
                };

                //


                _appContext.RegisterNewServer(channelToServer, new SessionClientWrapper(channelToServer, client));
                context.Message.DeleteAsync();

                return(string.Format(Languages.Translator.InfServerReg, serverAdr.ToString(), "#" + context.Channel.Name));
            }
            catch (Exception ex)
            {
                Loger.Log(ex.ToString());
                return("Internal error");
            }
        }
コード例 #3
0
        internal bool RegisterNewServer(Chanel2Server server, SessionClientWrapper sessionClient)
        {
            var apadr    = IPAddress.Parse(server.IP);
            var endPoint = new IPEndPoint(apadr, server.Port);
            var result   =
                OCServerToDiscrord.TryAdd(endPoint, server.Id) &&
                UserOnServers.TryAdd(server.Id, new ConcurrentDictionary <ulong, OCUser>());

            result &= DiscrordToOCServer.TryAdd(server.Id, sessionClient);

            // if sessionClient.IsLogined  then must be registred in DataBase
            if (sessionClient.IsLogined)
            {
                result &= _repositoryChanel2Server.AddNewItem(server);
            }
            else
            {
                result &= sessionClient.ConnectAndLogin();
            }

            return(result);
        }
コード例 #4
0
 //public event EventHandler DisconnectedEvent;
 public SessionClientWrapper(Chanel2Server serverData)
 {
     Chanel2Server  = serverData;
     _sessionClient = new SessionClient();
 }