/// <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); } }
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); }
/// <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); }
/// <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); }