mirror of
https://github.com/anope/anope.git
synced 2026-06-30 23:46:39 +02:00
458be36a32
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2636 5417fbe8-f217-4b02-8779-1006273d7864
156 lines
3.6 KiB
C
156 lines
3.6 KiB
C
/* ns_noop.c - Allows users to optionaly set autoop to off
|
|
*
|
|
* (C) 2003-2009 Anope Team
|
|
* Contact us at team@anope.org
|
|
*
|
|
* Based on the original module by Rob <rob@anope.org>
|
|
* Included in the Anope module pack since Anope 1.7.9
|
|
* Anope Coder: DrStein <drstein@anope.org>
|
|
*
|
|
* Please read COPYING and README for further details.
|
|
*
|
|
* Send bug reports to the Anope Coder instead of the module
|
|
* author, because any changes since the inclusion into anope
|
|
* are not supported by the original author.
|
|
*
|
|
*/
|
|
/*************************************************************************/
|
|
|
|
#include "module.h"
|
|
|
|
#define AUTHOR "Rob"
|
|
#define VERSION "$Id$"
|
|
|
|
/* The name of the default database to save info to */
|
|
#define DEFAULT_DB_NAME "autoop.db"
|
|
|
|
/* Multi-language stuff */
|
|
#define LANG_NUM_STRINGS 8
|
|
|
|
#define AUTOOP_SYNTAX 0
|
|
#define AUTOOP_STATUS_ON 1
|
|
#define AUTOOP_STATUS_OFF 2
|
|
#define AUTOOP_NO_NICK 3
|
|
#define AUTOOP_ON 4
|
|
#define AUTOOP_OFF 5
|
|
#define AUTOOP_DESC 6
|
|
#define AUTOOP_HELP 7
|
|
|
|
/*************************************************************************/
|
|
|
|
User *currentUser;
|
|
int m_isIRCop = 0;
|
|
|
|
char *NSAutoOPDBName;
|
|
|
|
int noop(User * u);
|
|
int mEventJoin(int argc, char **argv);
|
|
int setAutoOp(User * u);
|
|
int UnsetAutoOp(User * u);
|
|
|
|
int mLoadData();
|
|
int mSaveData(int argc, char **argv);
|
|
int mLoadConfig(int argc, char **argv);
|
|
|
|
void m_AddLanguages();
|
|
|
|
/*************************************************************************/
|
|
|
|
class NSNOOPConvert : public Module
|
|
{
|
|
public:
|
|
NSNOOPConvert(const std::string &modname, const std::string &creator) : Module(modname, creator)
|
|
{
|
|
NSAutoOPDBName = NULL;
|
|
|
|
this->SetAuthor(AUTHOR);
|
|
this->SetVersion(VERSION);
|
|
this->SetType(SUPPORTED);
|
|
|
|
if (mLoadConfig(0, NULL))
|
|
throw ModuleException("Couldn't load config?");
|
|
|
|
mLoadData();
|
|
|
|
alog("ns_noop_convert: Your auto-op database has been converted and this module will now");
|
|
alog("ns_noop_convert: unload itself. You can now remove this module from your config");
|
|
}
|
|
|
|
~NSNOOPConvert()
|
|
{
|
|
if (NSAutoOPDBName)
|
|
delete [] NSAutoOPDBName;
|
|
}
|
|
};
|
|
|
|
/*************************************************************************/
|
|
|
|
/**
|
|
* Load data from the db file, and populate the autoop setting
|
|
* @return 0 for success
|
|
**/
|
|
int mLoadData()
|
|
{
|
|
int ret = 0;
|
|
int len = 0;
|
|
|
|
char *name = NULL;
|
|
|
|
NickAlias *na = NULL;
|
|
FILE *in;
|
|
|
|
/* will _never_ be this big thanks to the 512 limit of a message */
|
|
char buffer[2000];
|
|
if ((in = fopen(NSAutoOPDBName, "r")) == NULL) {
|
|
alog("ns_noop: WARNING: Can not open database file! (it might not exist, this is not fatal)");
|
|
ret = 1;
|
|
} else {
|
|
while (fgets(buffer, 1500, in)) {
|
|
name = myStrGetToken(buffer, ' ', 0);
|
|
if (name) {
|
|
len = strlen(name);
|
|
/* Take the \n from the end of the line */
|
|
name[len - 1] = '\0';
|
|
if ((na = findnick(name))) {
|
|
na->nc->SetFlag(NI_AUTOOP);
|
|
}
|
|
delete [] name;
|
|
}
|
|
}
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
/*************************************************************************/
|
|
|
|
/**
|
|
* Load the configuration directives from Services configuration file.
|
|
* @return 0 for success
|
|
**/
|
|
int mLoadConfig(int argc, char **argv)
|
|
{
|
|
ConfigReader config;
|
|
std::string tmp = config.ReadValue("ns_noop_convert", "database", DEFAULT_DB_NAME, 0);
|
|
|
|
if (NSAutoOPDBName)
|
|
delete [] NSAutoOPDBName;
|
|
|
|
NSAutoOPDBName = sstrdup(tmp.c_str());
|
|
|
|
if (tmp.empty()) {
|
|
alog("ns_noop: FATAL: Can't read required configuration directives!");
|
|
return MOD_STOP;
|
|
} else {
|
|
alog("ns_noop: Directive NSAutoOPDBName loaded (%s)...",
|
|
NSAutoOPDBName);
|
|
}
|
|
|
|
return MOD_CONT;
|
|
}
|
|
|
|
/*************************************************************************/
|
|
|
|
/* EOF */
|
|
|
|
MODULE_INIT(NSNOOPConvert)
|