]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/extra/m_geo_maxmind.cpp
Implement support for setting TLSv1.3 ciphersuites in ssl_openssl.
[user/henk/code/inspircd.git] / src / modules / extra / m_geo_maxmind.cpp
index 6f84f31a3ffc95fe2d82f164f238352a1041092f..86bb7bfca1ed5e96f67e11c912a85a94e0c58491 100644 (file)
@@ -1,7 +1,8 @@
 /*
  * InspIRCd -- Internet Relay Chat Daemon
  *
- *   Copyright (C) 2019 Peter Powell <petpow@saberuk.com>
+ *   Copyright (C) 2019-2021 Sadie Powell <sadie@witchery.services>
+ *   Copyright (C) 2019 Matt Schatz <genius3000@g3k.solutions>
  *
  * This file is part of InspIRCd.  InspIRCd is free software: you can
  * redistribute it and/or modify it under the terms of the GNU General Public
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+/// $CompilerFlags: require_version("libmaxminddb" "0" "1.2.1") warning("The version of libmaxminddb you are using may cause a segmentation fault if given a corrupt database file!")
 /// $CompilerFlags: find_compiler_flags("libmaxminddb" "")
+
 /// $LinkerFlags: find_linker_flags("libmaxminddb" "-lmaxminddb")
 
+/// $PackageInfo: require_system("arch") libmaxminddb pkgconf
 /// $PackageInfo: require_system("darwin") libmaxminddb pkg-config
 /// $PackageInfo: require_system("debian" "9.0") libmaxminddb-dev pkg-config
 /// $PackageInfo: require_system("ubuntu" "16.04") libmaxminddb-dev pkg-config
 #include "modules/geolocation.h"
 #include <maxminddb.h>
 
-class GeolocationExtItem : public LocalExtItem
+class GeolocationExtItem : public ExtensionItem
 {
  public:
        GeolocationExtItem(Module* parent)
-               : LocalExtItem("geolocation", ExtensionItem::EXT_USER, parent)
+               : ExtensionItem("geolocation", ExtensionItem::EXT_USER, parent)
+       {
+       }
+
+       std::string ToHuman(const Extensible* container, void* item) const CXX11_OVERRIDE
        {
+               Geolocation::Location* location = static_cast<Geolocation::Location*>(item);
+               return location->GetName() + " [" + location->GetCode() + "]";
        }
 
        void free(Extensible* container, void* item) CXX11_OVERRIDE
@@ -152,13 +162,13 @@ class ModuleGeoMaxMind : public Module
 
        Version GetVersion() CXX11_OVERRIDE
        {
-               return Version("Provides Geolocation lookups using the libMaxMindDB library", VF_VENDOR);
+               return Version("Allows the server to perform geolocation lookups on both IP addresses and users.", VF_VENDOR);
        }
 
        void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
                ConfigTag* tag = ServerInstance->Config->ConfValue("maxmind");
-               const std::string file = ServerInstance->Config->Paths.PrependConfig(tag->getString("file", "GeoLite2-Country.mmdb"));
+               const std::string file = ServerInstance->Config->Paths.PrependConfig(tag->getString("file", "GeoLite2-Country.mmdb", 1));
 
                // Try to read the new database.
                MMDB_s mmdb;
@@ -177,7 +187,7 @@ class ModuleGeoMaxMind : public Module
        void OnGarbageCollect() CXX11_OVERRIDE
        {
                for (LocationMap::iterator iter = geoapi.locations.begin(); iter != geoapi.locations.end(); )
-               {       
+               {
                        Geolocation::Location* location = iter->second;
                        if (location->GetUseCount())
                        {