Exemple #1
0
 /// <summary>
 /// Updates this Realm's status at the AuthServer.
 /// </summary>
 /// <param name="serverName"></param>
 /// <param name="serverType"></param>
 /// <param name="flags"></param>
 /// <param name="serverCategory"></param>
 /// <param name="serverStatus"></param>
 /// <returns></returns>
 public bool UpdateRealmServer(string serverName, int chrCount, int capacity, RealmServerType serverType,
                               RealmFlags flags, RealmCategory serverCategory, RealmStatus serverStatus)
 {
     try
     {
         return(Channel.UpdateRealmServer(serverName, chrCount, capacity, serverType, flags, serverCategory,
                                          serverStatus));
     }
     catch (Exception e) {
         OnError(e);
         return(false);
     }
 }
Exemple #2
0
        /// <summary>
        /// Updates a realm server's entry in the realm list
        /// </summary>
        /// <param name="serverName">the name of the server</param>
        /// <param name="serverType">the type of the server</param>
        /// <param name="flags">the up/down status of the serer (green/red)</param>
        /// <param name="serverCategory">the timezone the server is in</param>
        /// <param name="serverStatus">the status of the server (locked or not)</param>
        public bool UpdateRealmServer(string serverName, int chrCount, int capacity, RealmServerType serverType,
                                      RealmFlags flags, RealmCategory serverCategory, RealmStatus serverStatus)
        {
            var realm = GetCurrentRealm();

            if (realm == null)
            {
                return(false);
            }

            realm.Name         = serverName;
            realm.Flags        = flags;
            realm.Status       = serverStatus;
            realm.ServerType   = serverType;
            realm.Category     = serverCategory;
            realm.CharCount    = chrCount;
            realm.CharCapacity = capacity;
            realm.LastUpdate   = DateTime.Now;

            //log.Debug(Resources.RealmUpdated, realm.Name);
            return(true);
        }
Exemple #3
0
        /// <summary>
        /// Updates a realm server's entry in the realm list
        /// </summary>
        /// <param name="serverName">the name of the server</param>
        /// <param name="serverType">the type of the server</param>
        /// <param name="flags">the up/down status of the serer (green/red)</param>
        /// <param name="serverCategory">the timezone the server is in</param>
        /// <param name="serverStatus">the status of the server (locked or not)</param>
        public bool UpdateRealmServer(string serverName, int chrCount, int capacity, RealmServerType serverType,
                                      RealmFlags flags, RealmCategory serverCategory, RealmStatus serverStatus)
        {
            var realm = GetCurrentRealm();

			if (realm == null)
			{
				return false;
			}

            realm.Name = serverName;
            realm.Flags = flags;
            realm.Status = serverStatus;
            realm.ServerType = serverType;
            realm.Category = serverCategory;
            realm.CharCount = chrCount;
            realm.CharCapacity = capacity;
            realm.LastUpdate = DateTime.Now;

            //log.Debug(Resources.RealmUpdated, realm.Name);
        	return true;
        }
Exemple #4
0
        /// <summary>
        /// Registers a realm server with the authentication server
        /// </summary>
        /// <param name="serverName">the name of the server</param>
        /// <param name="serverType">the type of the server</param>
        /// <param name="flags">the up/down status of the serer (green/red)</param>
        /// <param name="serverCategory">the timezone the server is in</param>
        /// <param name="serverStatus">the status of the server (locked or not)</param>
        public void RegisterRealmServer(string serverName, string addr, int port, int chrCount, int capacity, 
			RealmServerType serverType, RealmFlags flags, RealmCategory serverCategory, 
			RealmStatus serverStatus, ClientVersion clientVersion)
        {
        	var context = OperationContext.Current;
			if (context == null)
			{
				return;
			}

        	var channel = context.Channel;
			if (channel == null)
			{
				return;
			}

            var id = GetCurrentId();
            var realm = AuthenticationServer.GetRealmById(id);
            var ep = GetCurrentEndPoint();

            // find out whether this server is just re-registering (came back online)
            var isNew = realm == null;

            if (isNew)
            {
                realm = AuthenticationServer.GetRealmByName(serverName);
                if (isNew = (realm == null))
				{
					if (!AuthServerConfiguration.RealmIPs.Contains(ep.Address))
					{
						// Ignore unknown realms
						log.Warn("Unallowed Realm (\"{0}\") tried to register from: {1}", serverName, ep.Address);
						var chan = OperationContext.Current.Channel;
						if (chan != null)
						{
							try
							{
								chan.Close();
							}
							catch (Exception) {}
						}
						return;
					}
                    realm = new RealmEntry();
                }
                realm.ChannelId = id;
            }

            if (string.IsNullOrEmpty(addr))
            {
                // no host given
                addr = ep.Address;
            }

            realm.Name = serverName;
            realm.Address = addr;
            realm.Port = port;
            realm.Flags = flags;
            realm.Status = serverStatus;
            realm.ServerType = serverType;
            realm.Category = serverCategory;
            realm.CharCount = chrCount;
            realm.CharCapacity = capacity;
        	realm.ClientVersion = clientVersion;

        	realm.Channel = channel;
            realm.ChannelAddress = ep.Address;
            realm.ChannelPort = ep.Port;


            if (isNew)
            {
                // register after setting all infos
                lock (AuthenticationServer.Realms)
                {
                    realm.ChannelId = id;
                    AuthenticationServer.Realms.Add(id, realm);
                }
            }
			log.Info(Resources.RealmRegistered, realm); //realm.ChannelAddress);
        }
Exemple #5
0
		public static bool HasAnyFlag(this RealmServerType flags, RealmServerType otherFlags)
		{
			return (flags & otherFlags) != 0;
		}
Exemple #6
0
 public static bool HasAnyFlag(this RealmServerType flags, RealmServerType otherFlags)
 {
     return((flags & otherFlags) != RealmServerType.Normal);
 }
        /// <summary>
        /// Registers a realm server with the authentication server
        /// </summary>
        /// <param name="realmName">the name of the server</param>
        /// <param name="serverType">the type of the server</param>
        /// <param name="flags">the up/down status of the serer (green/red)</param>
        /// <param name="serverCategory">the timezone the server is in</param>
        /// <param name="serverStatus">the status of the server (locked or not)</param>
        public void RegisterRealmServer(string realmName, string addr, int port, int chrCount, int capacity, 
			RealmServerType serverType, RealmFlags flags, RealmCategory serverCategory, 
			RealmStatus serverStatus, ClientVersion clientVersion)
        {
        	var context = OperationContext.Current;
			if (context == null)
			{
				return;
			}

        	var channel = context.Channel;
			if (channel == null)
			{
				return;
			}

            var id = GetCurrentId();
            var realm = AuthenticationServer.GetRealmById(id);
            var ep = GetCurrentEndPoint();
            string epAddress = "";
            if(ep == null)
            {
            	epAddress = channel.RemoteAddress.Uri.Host;
            	log.Warn("IPC::RegisterRealmServer Endpoint is null, falling back to: {0}", channel.RemoteAddress.Uri.Host);
            }
            else
            {
            	epAddress = ep.Address;
            	log.Info("IPC::RegisterRealmServer Endpoint address is: {0}", ep.Address);
            }
			

            // find out whether this server is just re-registering (came back online)
            var isNew = realm == null;

            if (isNew)
            {
                realm = AuthenticationServer.GetRealmByName(realmName);
                if (realm == null)
				{
					if (!AuthServerConfiguration.RealmIPs.Contains(epAddress))
					{
						// Ignore unknown realms
						log.Warn("Unallowed Realm (\"{0}\") tried to register from: {1} (For more info, see the <RealmIPs> entry in your configuration)", 
							realmName, epAddress, AuthServerConfiguration.Instance.FilePath);
						var chan = OperationContext.Current.Channel;
						if (chan != null)
						{
							try
							{
								chan.Close();
							}
							catch (Exception) {}
						}
						return;
					}
					realm = new RealmEntry();
                }
				else
                {
                	lock (AuthenticationServer.Realms)
					{
						AuthenticationServer.RemoveRealmByName(realmName);
                	}
                }
            }

            if (string.IsNullOrEmpty(addr))
            {
                // no host given
                addr = epAddress;
            }

			realm.ChannelId = id;
            realm.Name = realmName;
            realm.Address = addr;
            realm.Port = port;
            realm.Flags = flags;
            realm.Status = serverStatus;
            realm.ServerType = serverType;
            realm.Category = serverCategory;
            realm.CharCount = chrCount;
            realm.CharCapacity = capacity;
        	realm.ClientVersion = clientVersion;

        	realm.Channel = channel;
            realm.ChannelAddress = epAddress;
            realm.ChannelPort = ep == null ? channel.RemoteAddress.Uri.Port : ep.Port;


            if (isNew)
            {
                // register after setting all infos
                lock (AuthenticationServer.Realms)
                {
                    AuthenticationServer.AddRealm(realm);
                }
            }
			log.Info(resources.RealmRegistered, realm); //realm.ChannelAddress);
        }
Exemple #8
0
 public void RegisterRealmServer(string realmName, string addr, int port, int chrCount, int capacity, RealmServerType serverType,
                                 RealmFlags flags, RealmCategory serverCategory, RealmStatus serverStatus, ClientVersion version)
 {
     try
     {
         Channel.RegisterRealmServer(realmName, addr, port, chrCount, capacity, serverType, flags, serverCategory,
                                     serverStatus, version);
     }
     catch (Exception e)
     {
         OnError(e);
     }
 }
Exemple #9
0
        /// <summary>
        /// Registers a realm server with the authentication server
        /// </summary>
        /// <param name="realmName">the name of the server</param>
        /// <param name="serverType">the type of the server</param>
        /// <param name="flags">the up/down status of the serer (green/red)</param>
        /// <param name="serverCategory">the timezone the server is in</param>
        /// <param name="serverStatus">the status of the server (locked or not)</param>
        public void RegisterRealmServer(string realmName, string addr, int port, int chrCount, int capacity,
                                        RealmServerType serverType, RealmFlags flags, RealmCategory serverCategory,
                                        RealmStatus serverStatus, ClientVersion clientVersion)
        {
            var context = OperationContext.Current;

            if (context == null)
            {
                return;
            }

            var channel = context.Channel;

            if (channel == null)
            {
                return;
            }

            var id    = GetCurrentId();
            var realm = AuthenticationServer.GetRealmById(id);
            var ep    = GetCurrentEndPoint();

            // find out whether this server is just re-registering (came back online)
            var isNew = realm == null;

            if (isNew)
            {
                realm = AuthenticationServer.GetRealmByName(realmName);
                if (realm == null)
                {
                    if (!AuthServerConfiguration.RealmIPs.Contains(ep.Address))
                    {
                        // Ignore unknown realms
                        log.Warn("Unallowed Realm (\"{0}\") tried to register from: {1} (For more info, see the <RealmIPs> entry in your configuration)",
                                 realmName, ep.Address, AuthServerConfiguration.Instance.FilePath);
                        var chan = OperationContext.Current.Channel;
                        if (chan != null)
                        {
                            try
                            {
                                chan.Close();
                            }
                            catch (Exception) {}
                        }
                        return;
                    }
                    realm = new RealmEntry();
                }
                else
                {
                    lock (AuthenticationServer.Realms)
                    {
                        AuthenticationServer.RemoveRealmByName(realmName);
                    }
                }
            }

            if (string.IsNullOrEmpty(addr))
            {
                // no host given
                addr = ep.Address;
            }

            realm.ChannelId     = id;
            realm.Name          = realmName;
            realm.Address       = addr;
            realm.Port          = port;
            realm.Flags         = flags;
            realm.Status        = serverStatus;
            realm.ServerType    = serverType;
            realm.Category      = serverCategory;
            realm.CharCount     = chrCount;
            realm.CharCapacity  = capacity;
            realm.ClientVersion = clientVersion;

            realm.Channel        = channel;
            realm.ChannelAddress = ep.Address;
            realm.ChannelPort    = ep.Port;


            if (isNew)
            {
                // register after setting all infos
                lock (AuthenticationServer.Realms)
                {
                    AuthenticationServer.AddRealm(realm);
                }
            }
            log.Info(resources.RealmRegistered, realm);             //realm.ChannelAddress);
        }