コード例 #1
0
        private void BackwardsCompatible_Request_AddonUpdateInfo(VF.NetworkIncommingMessage msg)
        {
            Logger.ConsoleWriteLine("Received Request_AddonUpdateInfo from " + msg.SenderIP.ToString());
            WLN_RequestPacket_AddonUpdateInfo[]       addonUpdateInfoRequests = msg.ReadClass <WLN_RequestPacket_AddonUpdateInfo[]>();
            List <WLN_ResponsePacket_AddonUpdateInfo> result = new List <WLN_ResponsePacket_AddonUpdateInfo>();

            Random rand = new Random((int)DateTime.UtcNow.Ticks);

            foreach (var addon in addonUpdateInfoRequests)
            {
                WLN_ResponsePacket_AddonUpdateInfo addonUpdateInfo = AddonUpdates.GetAddonUpdate("", addon);
                if (addonUpdateInfo != null)
                {
                    result.Add(addonUpdateInfo);
                }
            }

            var response = msg.CreateResponseMessage(-1);//.SenderConnection.SendPacket_VF(WLN_PacketType.Response_AddonUpdateInfo, result);

            response.WriteByte((byte)WLN_PacketType.Response_AddonUpdateInfo);
            response.WriteClass(result);
            m_Server.SendMessage(response);
        }
コード例 #2
0
        private void ListenerThread()
        {
            VF.NetworkIncommingMessage msg;
            while (m_ListenerThread != null)
            {
                try
                {
                    while ((msg = m_Server.WaitMessage(TimeSpan.FromMilliseconds(1000))) != null)
                    {
                        switch (msg.MessageType)
                        {
                        case VF.NetworkMessageType.RawData:
                        {
                            // incoming message from a client
                            WLN_PacketType packetType = (WLN_PacketType)msg.ReadByte();
                            if (packetType == WLN_PacketType.Request_AddonUpdateInfo)
                            {
                                #region BACKWARDS_COMPATIBILITY_ONLY
                                BackwardsCompatible_Request_AddonUpdateInfo(msg);
                                #endregion BACKWARDS_COMPATIBILITY_ONLY
                            }
                            else if (packetType == WLN_PacketType.Request_AddonUpdateInfoNew)
                            {
                                WLN_RequestPacket_AddonUpdateInfoNew      addonUpdateInfoRequest = msg.ReadClass <WLN_RequestPacket_AddonUpdateInfoNew>();
                                List <WLN_ResponsePacket_AddonUpdateInfo> result = new List <WLN_ResponsePacket_AddonUpdateInfo>();
                                Logger.ConsoleWriteLine("Received Request_AddonUpdateInfoNew from IP=" + msg.SenderIP.ToString() + ", UserID=" + addonUpdateInfoRequest.UserID + ", LauncherVersion=" + addonUpdateInfoRequest.LauncherVersion);

                                Random rand = new Random((int)DateTime.UtcNow.Ticks);
                                foreach (var addon in addonUpdateInfoRequest.Addons)
                                {
                                    WLN_ResponsePacket_AddonUpdateInfo addonUpdateInfo = AddonUpdates.GetAddonUpdate(addonUpdateInfoRequest.UserID, addon);
                                    if (addonUpdateInfo != null)
                                    {
                                        result.Add(addonUpdateInfo);
                                    }
                                }
                                var response = msg.CreateResponseMessage(-1);        //.SenderConnection.SendPacket_VF(WLN_PacketType.Response_AddonUpdateInfo, result);
                                response.WriteByte((byte)WLN_PacketType.Response_AddonUpdateInfo);
                                response.WriteClass(result);
                                m_Server.SendMessage(response);
                            }
                            else if (packetType == WLN_PacketType.Request_AddonUpdateInfoPeek)
                            {
                                WLN_RequestPacket_AddonUpdateInfoPeek  addonUpdateInfoRequest = msg.ReadClass <WLN_RequestPacket_AddonUpdateInfoPeek>();
                                WLN_ResponsePacket_AddonUpdateInfoPeek result = new WLN_ResponsePacket_AddonUpdateInfoPeek();
                                if (AddonUpdates.g_LastAddonUpdateTimeUTC > DateTime.UtcNow.AddMinutes(-addonUpdateInfoRequest.MinutesSinceLastPeek))
                                {
                                    result.AddonUpdatesAvailable.Add("null");
                                }
                                var response = msg.CreateResponseMessage(-1);        //.SenderConnection.SendPacket_VF(WLN_PacketType.Response_AddonUpdateInfo, result);
                                response.WriteByte((byte)WLN_PacketType.Response_AddonUpdateInfoPeek);
                                response.WriteClass(result);
                                m_Server.SendMessage(response);
                            }
                            else if (packetType == WLN_PacketType.Upload_AddonData)
                            {
                                WLN_UploadPacket_AddonData uploadedAddonData = msg.ReadClass <WLN_UploadPacket_AddonData>();
                                Logger.ConsoleWriteLine("Received Upload_AddonData(" + uploadedAddonData.AddonName + ") from " + msg.SenderIP.ToString());
                                AddonDatabaseService.UploadData(msg.SenderIP, uploadedAddonData);
                                var successResponse = new WLN_UploadPacket_SuccessResponse();

                                var response = msg.CreateResponseMessage(-1);        //.SenderConnection.SendPacket_VF(WLN_PacketType.Response_AddonUpdateInfo, result);
                                response.WriteByte((byte)WLN_PacketType.Upload_SuccessResponse);
                                response.WriteClass(successResponse);
                                m_Server.SendMessage(response);
                            }
                            else if (packetType == WLN_PacketType.Request_RegisterNewUserID)
                            {
                                //WLN_Request_RegisterNewUserID registerPacket = msg.ReadClass<WLN_Request_RegisterNewUserID>();
                                //Logger.ConsoleWriteLine("Received Register New UserID Request from: \"" + registerPacket.UserID + "\" using password: \"" + registerPacket.RegisterPassword + "\" registering name: \"" + registerPacket.NewUsername + "\"", ConsoleColor.Yellow);

                                //var responseData = new WLN_Response_RegisterNewUserID();
                                //responseData.UserID = "";

                                //string userID = "";
                                //if (ContributorHandler.GenerateUserID(registerPacket.NewUsername, out userID) == true)
                                //{
                                //    ContributorHandler.AddVIPContributor(userID);
                                //    ContributorHandler.Save(Program.g_RPPDBFolder + "Database\\");
                                //    UpdateContributorsList();
                                //}

                                //var response = msg.CreateResponseMessage(-1);
                                //response.WriteByte((byte)WLN_PacketType.Response_RegisterNewUserID);
                                //response.WriteClass(responseData);
                                //m_Server.SendMessage(response);
                            }
                            else
                            {
                                Logger.ConsoleWriteLine("Some unknown data: type=" + (int)packetType + ", dataSize=" + msg.MessageSize, ConsoleColor.Red);
                            }
                        }
                        break;

                        default:
                            Logger.ConsoleWriteLine("Unknown Message Received" + "MessageType: " + msg.MessageType + " MessageSize: " + msg.MessageSize + " bytes", ConsoleColor.Red);
                            break;
                        }
                    }
                }
                catch (Exception ex)
                {
                    Logger.LogException(ex);
                }
            }
        }
コード例 #3
0
ファイル: AddonUpdates.cs プロジェクト: conan513/RealmPlayers
        public static WLN_ResponsePacket_AddonUpdateInfo GetAddonUpdate(string _UserID, WLN_RequestPacket_AddonUpdateInfo _Request)
        {
            string addonName = _Request.AddonName;
            string latestAddonPackageFilename = GetLatestAddonPackageFilename(addonName);

            if (latestAddonPackageFilename == "")
            {
                return(null);
            }

            if (IsAddonBeta(addonName) && _Request.CurrentVersion == "0.0")
            {
                if (IsBetaParticipant(addonName, _UserID) == false)
                {
                    return(null);
                }
            }
            try
            {
                DescriptionFileData addonDescription = GetDescriptionFileData(addonName, latestAddonPackageFilename);
                if (addonDescription == null)
                {
                    return(null);
                }

                WLN_ResponsePacket_AddonUpdateInfo addonUpdateInfo = new WLN_ResponsePacket_AddonUpdateInfo();
                addonUpdateInfo.AddonName      = addonName;
                addonUpdateInfo.CurrentVersion = _Request.CurrentVersion;

                addonUpdateInfo.UpdateVersion     = "";
                addonUpdateInfo.UpdateDescription = "";
                addonUpdateInfo.ClearAccountSavedVariablesRequired   = false;
                addonUpdateInfo.ClearCharacterSavedVariablesRequired = false;
                addonUpdateInfo.UpdateSubmitter  = "Unknown";
                addonUpdateInfo.UpdateImportance = ServerComm.UpdateImportance.Minor;


                addonUpdateInfo.UpdateVersion     = addonDescription.UpdateVersion;
                addonUpdateInfo.UpdateDescription = addonDescription.UpdateDescription;
                addonUpdateInfo.UpdateSubmitter   = addonDescription.UpdateSubmitter;
                if (addonUpdateInfo.UpdateSubmitter == "")
                {
                    addonUpdateInfo.UpdateSubmitter = "Unknown";
                }
                addonUpdateInfo.ClearAccountSavedVariablesRequired   = addonDescription.GetClearAccountSavedVariablesRequired(addonUpdateInfo.CurrentVersion);
                addonUpdateInfo.ClearCharacterSavedVariablesRequired = addonDescription.GetClearCharacterSavedVariablesRequired(addonUpdateInfo.CurrentVersion);
                addonUpdateInfo.UpdateImportance = addonDescription.GetUpdateImportance(addonUpdateInfo.CurrentVersion);
                if (_Request.CurrentVersion == "0.0")
                {
                    if (addonName == "VF_RealmPlayers")
                    {
                        addonUpdateInfo.UpdateDescription = "Latest addon version for gathering data and contribute to the armory at realmplayers.com";
                        addonUpdateInfo.UpdateSubmitter   = "Dilatazu";
                    }
                    else if (addonName == "VF_RaidDamage" || addonName == "VF_RaidStats")
                    {
                        addonUpdateInfo.UpdateDescription = "Latest addon version for automatically logging data in raids. Logged raids will automatically be uploaded to RaidStats";
                        addonUpdateInfo.UpdateSubmitter   = "Dilatazu";
                    }
                    else if (addonName == "VF_BGStats")
                    {
                        addonUpdateInfo.UpdateDescription = "Latest addon version for automatically logging data in battlegrounds. Logged bgs will automatically be uploaded to BGStats";
                        addonUpdateInfo.UpdateSubmitter   = "Dilatazu";
                    }
                    else if (addonName == "VF_RealmPlayersTBC")
                    {
                        addonUpdateInfo.UpdateDescription = "Latest addon version for gathering data and contribute to the armory at realmplayers.com";
                        addonUpdateInfo.UpdateSubmitter   = "Dilatazu";
                    }
                    else if (addonName == "VF_RaidStatsTBC")
                    {
                        addonUpdateInfo.UpdateDescription = "Latest addon version for automatically logging data in raids. Logged raids will automatically be uploaded to RaidStats";
                        addonUpdateInfo.UpdateSubmitter   = "Dilatazu";
                    }
                    else if (addonName == "VF_BGStatsTBC")
                    {
                        addonUpdateInfo.UpdateDescription = "Latest addon version for automatically logging data in battlegrounds. Logged bgs will automatically be uploaded to BGStats";
                        addonUpdateInfo.UpdateSubmitter   = "Dilatazu";
                    }
                    addonUpdateInfo.UpdateImportance = ServerComm.UpdateImportance.Good;
                }
                if (addonUpdateInfo.UpdateVersion == "")
                {
                    Logger.ConsoleWriteLine("AddonPackage \"" + latestAddonPackageFilename + "\" has invalid UpdateVersion, AddonPackage is not valid!");
                    return(null); //Invalid UpdateVersion, AddonPackage is not valid!
                }
                if (wyVersionChecker.Compare(addonDescription.UpdateVersion, addonUpdateInfo.CurrentVersion) > 0)
                {
                    addonUpdateInfo.AddonPackageDownloadFTP = AddonUpdateDownloadFTPAddress + latestAddonPackageFilename.Substring(AddonUpdateFolder.Length);
                    return(addonUpdateInfo);
                }
                else
                {
                    return(null);
                }
            }
            catch (Exception ex)
            {
                Logger.LogException(ex);
            }
            return(null);
        }