public static BnetProxy FindBnetProxyForRealm(string username) { Console.WriteLine("Finding for user " + username); if (string.IsNullOrEmpty(username)) { foreach (BnetProxy proxy in BnetProxies) { if (proxy.RealmAddress != null) { return(proxy); } } return(null); } BnetProxy result = null; foreach (BnetProxy proxy in BnetProxies) { if (proxy.Username == username) { result = proxy; break; } } return(result); }
void RealmProxy_OnRealmStartupRequest(RealmClient.RealmStartupRequest packet, ref PacketFlag flag) { bnetProxy = ProxyServer.FindBnetProxyForRealm(packet.Username); if (bnetProxy != null) { bnetProxy.Proxy.RealmProxy = this; this.Proxy = bnetProxy.Proxy; } }
public RealmProxy(TcpClient client) : base(client) { this.OnRealmStartupRequest += new OnRealmStartupRequestEventHandler(RealmProxy_OnRealmStartupRequest); this.OnCharacterLogonRequest += new OnCharacterLogonRequestEventHandler(RealmProxy_OnCharacterLogonRequest); this.OnJoinGameResponse += new OnJoinGameResponseEventHandler(RealmProxy_OnJoinGameResponse); this.OnJoinGameRequest += new OnJoinGameRequestEventHandler(RealmProxy_OnJoinGameRequest); BnetProxy bnetProxy = ProxyServer.FindBnetProxyForRealm(string.Empty); if (bnetProxy != null) { base.Connect(bnetProxy.RealmAddress, bnetProxy.RealmPort); base.Init(); } else { base.Disconnect(); } }
private void OnAcceptTcpClient(IAsyncResult ar) { TcpClient tcpClient = tcpListener.EndAcceptTcpClient(ar); BaseProxy proxyClient = null; try { tcpListener.BeginAcceptTcpClient(new AsyncCallback(OnAcceptTcpClient), null); } catch (Exception) { tcpListener = null; throw; } switch (proxyType) { case ProxyType.Bnet: proxyClient = new BnetProxy(tcpClient); proxyClient.ProxyServer = this; BnetProxies.Add((BnetProxy)proxyClient); break; case ProxyType.Realm: proxyClient = new RealmProxy(tcpClient); RealmProxies.Add((RealmProxy)proxyClient); break; case ProxyType.Game: proxyClient = new GameProxy(tcpClient); GameProxies.Add((GameProxy)proxyClient); break; } this.ClientConnected(proxyClient, new EventArgs()); }