/*
* InspIRCd -- Internet Relay Chat Daemon
*
+ * Copyright (C) 2013, 2018-2020 Sadie Powell <sadie@witchery.services>
+ * Copyright (C) 2012-2015 Attila Molnar <attilamolnar@hush.com>
+ * Copyright (C) 2012-2013 Robby <robby@chatbelgie.be>
* Copyright (C) 2009-2010 Daniel De Graaf <danieldg@inspircd.org>
- * Copyright (C) 2007, 2009 John Brooks <john.brooks@dereferenced.net>
- * Copyright (C) 2006-2008 Robin Burchell <robin+git@viroteck.net>
- * Copyright (C) 2005-2008 Craig Edwards <craigedwards@brainbox.cc>
- * Copyright (C) 2008 Thomas Stagner <aquanight@inspircd.org>
+ * Copyright (C) 2008 Robin Burchell <robin+git@viroteck.net>
+ * Copyright (C) 2007, 2010 Craig Edwards <brain@inspircd.org>
+ * Copyright (C) 2007 John Brooks <special@inspircd.org>
* Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
*
* This file is part of InspIRCd. InspIRCd is free software: you can
* our ident lookup class that is outside of this module, or out-
* side of the control of the class. There are no timers, internal
* events, or such, which will cause the socket to be deleted,
- * queued for deletion, etc. In fact, theres not even any queueing!
+ * queued for deletion, etc. In fact, there's not even any queueing!
*
* Using this framework we have a much more stable module.
*
age = ServerInstance->Time();
SetFd(socket(user->server_sa.family(), SOCK_STREAM, 0));
-
- if (GetFd() == -1)
+ if (!HasFd())
throw ModuleException("Could not create socket");
done = false;
void Close()
{
- /* Remove ident socket from engine, and close it, but dont detatch it
+ /* Remove ident socket from engine, and close it, but dont detach it
* from its parent user class, or attempt to delete its memory.
*/
- if (GetFd() > -1)
+ if (HasFd())
{
ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, "Close ident socket %d", GetFd());
SocketEngine::Close(this);
// Check that they haven't been prefixed already.
if (user->ident[0] == '~')
return;
-
+
// All invalid usernames are prefixed with a tilde.
std::string newident(user->ident);
newident.insert(newident.begin(), '~');
Version GetVersion() CXX11_OVERRIDE
{
- return Version("Provides support for RFC1413 ident lookups", VF_VENDOR);
+ return Version("Allows the usernames (idents) of users to be looked up using the RFC 1413 Identification Protocol.", VF_VENDOR);
}
void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
return;
// We don't want to look this up once the user has connected.
- if (user->registered == REG_ALL)
+ if (user->registered == REG_ALL || user->quitting)
return;
ConfigTag* tag = user->MyClass->config;
ModResult OnSetConnectClass(LocalUser* user, ConnectClass* myclass) CXX11_OVERRIDE
{
if (myclass->config->getBool("requireident") && state.get(user) != IDENT_FOUND)
+ {
+ ServerInstance->Logs->Log("CONNECTCLASS", LOG_DEBUG, "The %s connect class is not suitable as it requires an identd response",
+ myclass->GetName().c_str());
return MOD_RES_DENY;
+ }
return MOD_RES_PASSTHRU;
}