From 19ac2a9c368bc910e54db3c32e4c598068fe2c84 Mon Sep 17 00:00:00 2001 From: JustinAJ Date: Tue, 2 Sep 2014 17:21:23 -0400 Subject: [PATCH] Added RenX.DNS v1 --- RenX.DNS/RenX.DNS.vcxproj | 85 +++++++++++++++++++++++++++++++ RenX.DNS/RenX.DNS.vcxproj.filters | 38 ++++++++++++++ RenX.DNS/RenX_DNS.cpp | 52 +++++++++++++++++++ RenX.DNS/RenX_DNS.h | 30 +++++++++++ 4 files changed, 205 insertions(+) create mode 100644 RenX.DNS/RenX.DNS.vcxproj create mode 100644 RenX.DNS/RenX.DNS.vcxproj.filters create mode 100644 RenX.DNS/RenX_DNS.cpp create mode 100644 RenX.DNS/RenX_DNS.h diff --git a/RenX.DNS/RenX.DNS.vcxproj b/RenX.DNS/RenX.DNS.vcxproj new file mode 100644 index 0000000..62dd4ea --- /dev/null +++ b/RenX.DNS/RenX.DNS.vcxproj @@ -0,0 +1,85 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {812E9781-A9CB-43C6-8C40-87908D50B363} + PluginExample + + + + Application + true + v120 + MultiByte + + + DynamicLibrary + false + v120 + true + Unicode + + + + + + + + + + + + + $(SolutionDir)$(Configuration)\Plugins\ + AllRules.ruleset + + + + Level3 + Disabled + true + + + true + + + + + Level3 + MaxSpeed + true + true + true + ../Bot;../Jupiter;../RenX.Core + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + true + true + true + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/RenX.DNS/RenX.DNS.vcxproj.filters b/RenX.DNS/RenX.DNS.vcxproj.filters new file mode 100644 index 0000000..f7a2e07 --- /dev/null +++ b/RenX.DNS/RenX.DNS.vcxproj.filters @@ -0,0 +1,38 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Resource Files + + + Resource Files + + + Resource Files + + + + + Header Files + + + + + Source Files + + + \ No newline at end of file diff --git a/RenX.DNS/RenX_DNS.cpp b/RenX.DNS/RenX_DNS.cpp new file mode 100644 index 0000000..0200506 --- /dev/null +++ b/RenX.DNS/RenX_DNS.cpp @@ -0,0 +1,52 @@ +/** + * This file is in the public domain, furnished "as is", without technical + * support, and with no warranty, express or implied, as to its usefulness for + * any purpose. + * + * Written by Justin James + */ + +#include +#include "Jupiter/Socket.h" +#include "Jupiter/CString.h" +#include "Jupiter/IRC_Client.h" +#include "RenX_PlayerInfo.h" +#include "RenX_Server.h" +#include "RenX_Functions.h" +#include "RenX_DNS.h" + +typedef void(RenX::Server::*logFuncType)(const char *fmt, ...) const; + +void RenX_DNSPlugin::RenX_OnJoin(RenX::Server *server, const RenX::PlayerInfo *player) +{ + Jupiter::ReferenceString host = Jupiter::ReferenceString(Jupiter::Socket::resolveHostname(Jupiter::CStringS(player->ip).c_str(), 0)); + const_cast(player)->varData.set(RenX_DNSPlugin::name, STRING_LITERAL_AS_REFERENCE("Host"), host); + + logFuncType func; + if (RenX_DNSPlugin::resolveAdmin) + { + if (RenX_DNSPlugin::resolvePublic) + func = &RenX::Server::sendLogChan; + else func = &RenX::Server::sendAdmChan; + } + else if (RenX_DNSPlugin::resolvePublic) + func = &RenX::Server::sendPubChan; + else return; + + Jupiter::ReadableString &name = RenX::getFormattedPlayerName(player); + (server->*func)(IRCCOLOR "03[DNS] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR "'s hostname resolved to: " IRCBOLD IRCCOLOR "10%.*s" IRCBOLD, name.size(), name.ptr(), host.size(), host.ptr()); +} + +RenX_DNSPlugin::RenX_DNSPlugin() +{ + RenX_DNSPlugin::resolveAdmin = Jupiter::IRC::Client::Config->getBool(RenX_DNSPlugin::name, STRING_LITERAL_AS_REFERENCE("ResolveAdmin"), true); + RenX_DNSPlugin::resolvePublic = Jupiter::IRC::Client::Config->getBool(RenX_DNSPlugin::name, STRING_LITERAL_AS_REFERENCE("ResolvePublic"), false); +} + +// Plugin instantiation and entry point. +RenX_DNSPlugin pluginInstance; + +extern "C" __declspec(dllexport) Jupiter::Plugin *getPlugin() +{ + return &pluginInstance; +} diff --git a/RenX.DNS/RenX_DNS.h b/RenX.DNS/RenX_DNS.h new file mode 100644 index 0000000..a6b4642 --- /dev/null +++ b/RenX.DNS/RenX_DNS.h @@ -0,0 +1,30 @@ +/** + * This file is in the public domain, furnished "as is", without technical + * support, and with no warranty, express or implied, as to its usefulness for + * any purpose. + * + * Written by Justin James + */ + +#if !defined _RENX_DNS_H_HEADER +#define _RENX_DNS_H_HEADER + +#include "Jupiter/Plugin.h" +#include "Jupiter/Reference_String.h" +#include "RenX_Plugin.h" + +class RenX_DNSPlugin : public RenX::Plugin +{ +public: // RenX::Plugin + void RenX_OnJoin(RenX::Server *server, const RenX::PlayerInfo *player); + +public: // Jupiter::Plugin + const Jupiter::ReadableString &getName() override { return name; } + RenX_DNSPlugin(); +private: + STRING_LITERAL_AS_NAMED_REFERENCE(name, "RenX.DNS"); + bool resolveAdmin; + bool resolvePublic; +}; + +#endif // _RENX_DNS_H_HEADER \ No newline at end of file