Exemplo n.º 1
0
        protected virtual async Task <IRemoteService> CreateSessionServiceAsync(string socketID, ClientEnterServerRequest enter)
        {
            var cfg = new HashMap <string, string>();

            cfg["sessionID"]   = socketID;
            cfg["accountID"]   = enter.c2s_account;
            cfg["connectName"] = this.SelfAddress.ServiceName;
            cfg["channel"]     = enter.c2s_clientInfo.channel;
            cfg["passport"]    = enter.c2s_clientInfo.sdkName;
            var addr    = ServerNames.CreateSessionServiceAddress(enter.c2s_account, this.SelfAddress);
            var session = await this.Provider.GetOrCreateAsync(addr, cfg);

            if (session.Config["connectName"] != this.SelfAddress.ServiceName)
            {
                //如果Session在别的进程//
                this.log.WarnFormat("已存在相同Session在其他Connect:{0}", session.Address);
                this.log.WarnFormat("关闭老的Session:{0}", session.Address);
                var newAddress = ServerNames.CreateSessionServiceAddress(enter.c2s_account, this.SelfAddress);
                //log.Log(string.Format("Session Replace {0} -> {1}", session.Address, newAddress));
                try { await session.ShutdownAsync("new connect"); } catch (Exception err) { log.Error(err.Message, err); }
                session = await this.Provider.CreateAsync(newAddress, cfg);

                //throw new Exception("Session Alread Exist In Node : " + ret.Address.ServiceNode);
            }
            return(session);
        }
Exemplo n.º 2
0
		public Configuration( string configuration_path )
		{
			serviceController = new System.ServiceProcess.ServiceController("SMTPSVC");

			XmlTextReader reader = new XmlTextReader( configuration_path );
			XmlDocument doc = new XmlDocument();
			doc.Load( reader );

			// --

			XmlNode settings_node = doc.SelectSingleNode( "/configuration/settings" );
			Settings = new Settings( settings_node );

			// --

			XmlNodeList server_nodes = doc.SelectNodes( "/configuration/servers/server" );
			ArrayList servers = new ArrayList( server_nodes.Count );

			foreach( XmlNode server_node in server_nodes )
			{
				Server server = new Server( this, server_node );
				servers.Add( server );
				ServerNames.Add(server.Address);
				ServerTable.Add(server.Address,server);
			}

			Servers = (Server[])servers.ToArray( typeof(Server) );

			// --

			doc = null;
			reader = null;
		}
Exemplo n.º 3
0
 public void LoadServerNames()
 {
     ServerNames.Clear();
     foreach (var item in ServerList)
     {
         ServerNames.Add(item.Name);
     }
 }
Exemplo n.º 4
0
 public static string PlatformToString(string region)
 {
     region = region.ToUpper();
     if (ServerNames.ContainsKey(region))
     {
         return(ServerNames[region]);
     }
     return(region);
 }
Exemplo n.º 5
0
        protected virtual async Task <IRemoteService> CreateLogicServiceAsync(ClientEnterGameRequest enter_game)
        {
            var cfg = await InitConfig();

            var ret = await this.Provider.CreateAsync(
                ServerNames.GetLogicServiceAddress(enter_game.c2s_roleUUID, this.SelfAddress.ServiceNode), cfg);

            this.remote_logic_service = ret;
            return(ret);
        }
Exemplo n.º 6
0
        private void GetDbServers()
        {
            if (!chkScanNetwork.Checked)
            {
                //RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL");
                //string[] array = (string[])registryKey.GetValueNames();
                //if (array.Length > 0)

                RegistryKey baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
                RegistryKey key     = baseKey.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL");

                foreach (string sqlInstance in key.GetValueNames())
                {
                    if (sqlInstance == "MSSQLSERVER")
                    {
                        ServerNames.Add(Environment.MachineName);
                    }
                    else
                    {
                        ServerNames.Add(Environment.MachineName + "\\" + sqlInstance);
                    }
                }
            }
            else
            {
                SqlDataSourceEnumerator instance = SqlDataSourceEnumerator.Instance;
                DataTable dataSources            = instance.GetDataSources();
                DataRow[] array3 = dataSources.Select("");
                DataRow[] array4 = array3;
                for (int j = 0; j < array4.Length; j++)
                {
                    DataRow dataRow = array4[j];
                    if (dataRow["InstanceName"] is string)
                    {
                        ServerNames.Add(dataRow["ServerName"] + "\\" + dataRow["InstanceName"]);
                    }
                    else
                    {
                        ServerNames.Add(dataRow["ServerName"]);
                    }
                }
            }
            ServerNames.Sort();
        }
Exemplo n.º 7
0
        /// <summary>
        /// Handles the specified input.
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public Result Handle(Input input)
        {
            var Result    = new Result();
            var tableName = input.TableName;

            if (tableName.IsNullOrEmpty())
            {
                Result.ErrorMessage = "Herhangi bir tablo ismi seçilmelidir";
                return(Result);
            }

            var connectionInfo = FindProcedureContainerDatabaseConnectionInfo(input.TableName);

            if (connectionInfo == null)
            {
                return(Result);
            }

            var info = DbItemNameInfoParser.Parse(tableName);

            var writerContext = new WriterContext
            {
                Config = new TableConfig
                {
                    TableName        = info.Name,
                    SchemaName       = info.SchemaName,
                    DatabaseName     = info.DatabaseName ?? DatabaseNames.BOA,
                    DatabaseEnumName = connectionInfo.DatabaseName,
                    ServerNameForTakeTableInformation = ServerNames.GetServerNameOfConnectionString(connectionInfo.ConnectionStringDev)
                }
            };

            new NamingConvention {
                Context = writerContext
            }.InitializeNames();

            var generator = new SelectByKeySql(writerContext);

            Result.GeneratedSQLCode = generator.Generate();

            return(Result);
        }
Exemplo n.º 8
0
        /// <summary>
        /// 处理角色封停
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        private async Task <string> OnHandleServerBan(JObject obj)
        {
            var type          = (BanType)obj["type"].ToObject <short>();
            var rolename_list = obj["role"].ToString().Split(',');
            var reason        = obj["reason"].ToString();
            var final_date    = DateTime.UtcNow;

            switch (type)
            {
            case BanType.Ban_Seven:
                final_date = final_date.AddDays(7);
                break;

            case BanType.Ban_Month:
                final_date = final_date.AddMonths(1);
                break;

            case BanType.Ban_Year:
                final_date = final_date.AddYears(1);
                break;

            case BanType.Ban_Forever:
                final_date = final_date.AddYears(99);
                break;

            case BanType.Ban_Cancel:
                final_date.AddDays(-1);
                break;
            }
            //TODO 接口不支持多用户暂时写死
            var    roleDataWriter = new TLRoleDataStatusSnapWriter(this);
            string roleUUID       = null;
            var    result         = await roleDataWriter.SuspendRoleData(rolename_list[0], final_date, reason, string.Empty);


            //KICK Logic.
            if (type != BanType.Ban_Cancel && !string.IsNullOrEmpty(result.Item3))
            {
                roleUUID = result.Item3;
                var logic = await this.Provider.GetAsync(ServerNames.GetLogicServiceAddress(roleUUID));

                if (logic != null && logic.Config.TryGetValue("sessionName", out var sessionName))
                {
                    var session = await this.Provider.GetAsync(new RemoteAddress(sessionName));

                    if (session != null)
                    {
                        var notify = new KickPlayerNotify();
                        notify.reason = reason;
                        session.Invoke(notify);
                    }
                }
            }

            if (result.Item1)
            {
                return(ResponseResult(true));
            }
            else
            {
                return(ResponseResult(false, result.Item2));
            }
        }