Ejemplo n.º 1
0
 /**
  * Handles Xml packets.
  *
  * @param receivedPacket
  *   The packet to handle.
  */
 private void XmlReceived(Data.PenguinPacket receivedPacket)
 {
     if (blnIsLogin || blnIsJoin)  // If it's not from the login, say "wtf."
     {
         HandleLoginXml(receivedPacket);
     }
 }
Ejemplo n.º 2
0
 /**
  * Handles login XML.
  *
  * @param receivedPacket
  *   The packet to handle.
  */
 private void HandleLoginXml(Data.PenguinPacket receivedPacket)
 {
     switch (receivedPacket.Xml.Name)
     {
     case "msg":
         HandleXmlMsg(receivedPacket);
         break;
     }
 }
Ejemplo n.º 3
0
 /**
  * Receive callback for the asynchronous socket.
  *
  * @param receivedPacket
  *   The packet that was received.
  */
 protected void ReceiveCallback(Data.PenguinPacket receivedPacket)
 {
     if (packetReceived != null)
     {
         packetReceived(receivedPacket);
     }
     if (receivedPacket.Type == Data.PenguinPacket.PacketType.Xt)
     {
         HandleXt(receivedPacket);
     }
     else if (receivedPacket.Type == Data.PenguinPacket.PacketType.Xml)
     {
         XmlReceived(receivedPacket);
     }
 }
Ejemplo n.º 4
0
        /**
         * Handles Xml with the tag name "msg".
         *
         * @param receivedPacket
         *   The packet to handle.
         */
        private void HandleXmlMsg(Data.PenguinPacket receivedPacket)
        {
            switch (receivedPacket.Xml.ChildNodes[0].Attributes["action"].Value)
            {
            case "apiOK":
                SendRndKRequest();
                break;

            case "apiKO":
                throw new Exceptions.InvalidAPIException("Invalid API version.");     // Only happens if the SFS API version is wrong. I've never known this to happen.

            case "rndK":
                string strHash;
                strRndK = receivedPacket.Xml.ChildNodes[0].InnerText;
                strHash = (blnIsLogin) ? Security.Crypt.HashPassword(penguinPass, strRndK) : Security.Crypt.RevMd5(loginKey + strRndK, true) + loginKey;
                SendLogin(penguinName, strHash);
                break;
            }
        }
Ejemplo n.º 5
0
 /**
  * Handle xt packets.
  *
  * @param receivedPacket
  *   The packet to handle.
  */
 private void HandleXt(Data.PenguinPacket receivedPacket)
 {
     penguinHandlers.Execute(receivedPacket.Xt.Command, receivedPacket);
 }