diff options
author | Shauren <shauren.trinity@gmail.com> | 2025-04-09 21:02:31 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2025-04-09 21:02:31 +0200 |
commit | 71b681bbf0f5189cd87a6cea66ef51667223f54a (patch) | |
tree | f5da2eb9d76010efcf5abd875edd39c812b62bd7 /src/server/shared/IpLocation/IPLocation.h | |
parent | 6c374c56b2bd06923ae738b19ca6a4257e29d863 (diff) |
Core/Network: Move to separate project
Diffstat (limited to 'src/server/shared/IpLocation/IPLocation.h')
-rw-r--r-- | src/server/shared/IpLocation/IPLocation.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/server/shared/IpLocation/IPLocation.h b/src/server/shared/IpLocation/IPLocation.h new file mode 100644 index 00000000000..233404db241 --- /dev/null +++ b/src/server/shared/IpLocation/IPLocation.h @@ -0,0 +1,58 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef IPLOCATION_H +#define IPLOCATION_H + +#include "Define.h" +#include <array> +#include <string> +#include <vector> + +struct IpLocationRecord +{ + IpLocationRecord() : IpFrom(), IpTo() { } + IpLocationRecord(std::array<uint8, 16> ipFrom, std::array<uint8, 16> ipTo, std::string&& countryCode, std::string&& countryName) + : IpFrom(ipFrom), IpTo(ipTo), CountryCode(std::move(countryCode)), CountryName(std::move(countryName)) { } + + std::array<uint8, 16> IpFrom; + std::array<uint8, 16> IpTo; + std::string CountryCode; + std::string CountryName; +}; + +class TC_SHARED_API IpLocationStore +{ + public: + IpLocationStore(); + IpLocationStore(IpLocationStore const&) = delete; + IpLocationStore(IpLocationStore&&) = delete; + IpLocationStore& operator=(IpLocationStore const&) = delete; + IpLocationStore& operator=(IpLocationStore&&) = delete; + ~IpLocationStore(); + static IpLocationStore* Instance(); + + void Load(); + IpLocationRecord const* GetLocationRecord(std::string const& ipAddress) const; + + private: + std::vector<IpLocationRecord> _ipLocationStore; +}; + +#define sIPLocation IpLocationStore::Instance() + +#endif |