Example #1
0
 /// <summary>
 /// Removes multiple accounts from the 'logged in' list
 /// </summary>
 /// <param name="accNames">the account names to log out</param>
 public void SetMultipleAccountsLoggedOut(RealmEntry realm, string[] accNames)
 {
     for (var i = 0; i < accNames.Length; i++)
     {
         s_authServer.SetAccountLoggedOut(accNames[i], true);
     }
 }
Example #2
0
    public byte[] GetRealmEntryJSON(RealmHandle id, uint build)
    {
        byte[] compressed = new byte[0];
        Realm  realm      = GetRealm(id);

        if (realm != null)
        {
            if (!realm.Flags.HasAnyFlag(RealmFlags.Offline) && realm.Build == build)
            {
                var realmEntry = new RealmEntry();
                realmEntry.WowRealmAddress = (int)realm.Id.GetAddress();
                realmEntry.CfgTimezonesID  = 1;
                realmEntry.PopulationState = Math.Max((int)realm.PopulationLevel, 1);
                realmEntry.CfgCategoriesID = realm.Timezone;

                ClientVersion  version   = new ClientVersion();
                RealmBuildInfo buildInfo = GetBuildInfo(realm.Build);
                if (buildInfo != null)
                {
                    version.Major    = (int)buildInfo.MajorVersion;
                    version.Minor    = (int)buildInfo.MinorVersion;
                    version.Revision = (int)buildInfo.BugfixVersion;
                    version.Build    = (int)buildInfo.Build;
                }
                else
                {
                    version.Major    = 6;
                    version.Minor    = 2;
                    version.Revision = 4;
                    version.Build    = (int)realm.Build;
                }
                realmEntry.Version = version;

                realmEntry.CfgRealmsID    = (int)realm.Id.Realm;
                realmEntry.Flags          = (int)realm.Flags;
                realmEntry.Name           = realm.Name;
                realmEntry.CfgConfigsID   = (int)realm.GetConfigId();
                realmEntry.CfgLanguagesID = 1;

                compressed = Json.Deflate("JamJSONRealmEntry", realmEntry);
            }
        }

        return(compressed);
    }
Example #3
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);
        }
Example #4
0
 /// <summary>
 /// Sets an account as logged in
 /// </summary>
 /// <param name="accName">the account to log in</param>
 public void SetAccountLoggedIn(RealmEntry realm, string accName)
 {
     s_authServer.SetAccountLoggedIn(realm, accName);
 }
Example #5
0
 /// <summary>
 /// Removes multiple accounts from the 'logged in' list
 /// </summary>
 /// <param name="accNames">the account names to log out</param>
 public void SetMultipleAccountsLoggedOut(RealmEntry realm, string[] accNames)
 {
     for (var i = 0; i < accNames.Length; i++)
     {
         s_authServer.SetAccountLoggedOut(accNames[i], true);
     }
 }
Example #6
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);
        }
Example #7
0
 /// <summary>
 /// Sets an account as logged in
 /// </summary>
 /// <param name="accName">the account to log in</param>
 public void SetAccountLoggedIn(RealmEntry realm, string accName)
 {
     s_authServer.SetAccountLoggedIn(realm, accName);
 }