1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-07-07 04:13:13 +02:00

Fixed a problem with config loading and module errors

This commit is contained in:
codemastr
2004-02-11 03:44:31 +00:00
parent 3f4eb6ab46
commit e4dddbe7c0
3 changed files with 138 additions and 58 deletions
+1
View File
@@ -2842,3 +2842,4 @@ seen. gmtime warning still there
what you can do about it in a (hopefully) simple and understandable language ;).
- Fixed a snomask bug reported by Cat / HERZ (#0001531).
- Started using the umode->allowed stuff a bit ourselves, just to be sure.
- Fixed a problem with module reloading (#0001533) reported by penna.
+9 -4
View File
@@ -6353,6 +6353,7 @@ int _conf_loadmodule(ConfigFile *conf, ConfigEntry *ce)
config_status("%s:%i: loadmodule %s: failed to load: %s",
ce->ce_fileptr->cf_filename, ce->ce_varlinenum,
files.gl_pathv[i], ret);
return -1;
}
}
globfree(&files);
@@ -6366,15 +6367,19 @@ int _conf_loadmodule(ConfigFile *conf, ConfigEntry *ce)
return -1;
}
if ((ret = Module_Create(FindData.cFileName))) {
config_status("%s:%i: loadmodule %s: failed to load: %s",
ce->ce_fileptr->cf_filename, ce->ce_varlinenum,
FindData.cFileName, ret);
config_status("%s:%i: loadmodule %s: failed to load: %s",
ce->ce_fileptr->cf_filename, ce->ce_varlinenum,
FindData.cFileName, ret);
return -1;
}
while (FindNextFile(hFind, &FindData) != 0) {
if (((ret = Module_Create(FindData.cFileName))))
if ((ret = Module_Create(FindData.cFileName)))
{
config_status("%s:%i: loadmodule %s: failed to load: %s",
ce->ce_fileptr->cf_filename, ce->ce_varlinenum,
FindData.cFileName, ret);
return -1;
}
}
FindClose(hFind);
#else
+128 -54
View File
@@ -3035,73 +3035,147 @@ CMD_FUNC(m_rehash)
*/
CMD_FUNC(m_restart)
{
int x;
if (MyClient(sptr) && !OPCanRestart(sptr))
{
sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
return 0;
}
if (!MyClient(sptr) && !IsNetAdmin(sptr)
&& !IsULine(sptr))
{
sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
return 0;
}
if (parc > 3)
{
/* Remote restart. */
if (MyClient(sptr) && !IsNetAdmin(sptr))
{
sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name,
parv[0]);
return 0;
}
char *reason = NULL;
/* Check permissions */
if (MyClient(sptr) && !OPCanRestart(sptr))
{
sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
return 0;
}
if (!MyClient(sptr) && !IsNetAdmin(sptr)
&& !IsULine(sptr))
{
sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
return 0;
}
if ((x =
hunt_server_token(cptr, sptr, MSG_RESTART, TOK_RESTART, "%s %s :%s", 2, parc,
parv)) != HUNTED_ISME)
return 0;
}
if (conf_drpass)
/* Syntax: /restart */
if (parc == 1)
{
if (parc < 2)
if (conf_drpass)
{
sendto_one(sptr, err_str(ERR_NEEDMOREPARAMS), me.name,
parv[0], "RESTART");
return 0;
parv[0], "RESTART");
return 0;
}
x = Auth_Check(cptr, conf_drpass->restartauth, parv[1]);
if (x == -1)
{
sendto_one(sptr, err_str(ERR_PASSWDMISMATCH), me.name,
parv[0]);
return 0;
}
if (x < 1)
{
return 0;
}
/* Hack to make the code after this if { } easier: we assign the comment to the
* first param, as if we had not had an X:line. We do not need the password
* now anyways. Accordingly we decrement parc ;) -- NikB
*/
parv[1] = parv[2];
parc--;
}
else if (parc == 2)
{
int ret;
ret = hunt_server_token_quiet(cptr, sptr, MSG_RESTART, TOK_RESTART,
"%s", 1, parc, parv);
/* Syntax: /rehash <server> */
if (ret == HUNTED_PASS)
return 0;
else if (ret == HUNTED_ISME)
{
if (conf_drpass)
{
sendto_one(sptr, err_str(ERR_NEEDMOREPARAMS), me.name,
parv[0], "RESTART");
return 0;
}
}
/* Syntax: /restart <pass> */
else if (conf_drpass)
{
int ret;
ret = Auth_Check(cptr, conf_drpass->restartauth, parv[1]);
if (ret == -1)
{
sendto_one(sptr, err_str(ERR_PASSWDMISMATCH), me.name,
parv[0]);
return 0;
}
if (ret < 1)
return 0;
}
/* Syntax: /rehash <reason> */
else
reason = parv[1];
}
else if (parc == 3)
{
int ret;
/* Syntax: /restart <server> <pass> & /restart <server> <reason> */
ret = hunt_server_token_quiet(cptr, sptr, MSG_RESTART, TOK_RESTART,
"%s :%s", 1, parc, parv);
if (ret == HUNTED_PASS)
return 0;
else if (ret == HUNTED_ISME)
{
if (conf_drpass)
{
int ret;
ret = Auth_Check(cptr, conf_drpass->restartauth, parv[2]);
if (ret == -1)
{
sendto_one(sptr, err_str(ERR_PASSWDMISMATCH), me.name,
parv[0]);
return 0;
}
if (ret < 1)
return 0;
}
else
reason = parv[2];
}
/* Syntax: /restart <pass> <reason> */
else
{
if (conf_drpass)
{
int ret;
ret = Auth_Check(cptr, conf_drpass->restartauth, parv[1]);
if (ret == -1)
{
sendto_one(sptr, err_str(ERR_PASSWDMISMATCH), me.name,
parv[0]);
return 0;
}
if (ret < 1)
return 0;
}
reason = parv[2];
}
}
else
{
if (hunt_server_token(cptr, sptr, MSG_RESTART, TOK_RESTART, "%s %s :%s", 1,
parc, parv) != HUNTED_ISME)
return 0;
else
{
if (conf_drpass)
{
int ret;
ret = Auth_Check(cptr, conf_drpass->restartauth, parv[2]);
if (ret == -1)
{
sendto_one(sptr, err_str(ERR_PASSWDMISMATCH), me.name,
parv[0]);
return 0;
}
if (ret < 1)
return 0;
}
reason = parv[3];
}
}
if (cptr != sptr)
{
sendto_serv_butone(&me,
":%s GLOBOPS :%s is remotely restarting server (%s)",
me.name, sptr->name, parv[3]);
me.name, sptr->name, reason ? reason : "No reason");
sendto_ops("%s is remotely restarting IRCd (%s)", parv[0],
parv[3]);
reason ? reason : "No reason");
}
sendto_ops("Server is Restarting by request of %s", parv[0]);
server_reboot((!MyClient(sptr) ? (parc > 2 ? parv[3] : "No reason")
: (parc > 1 ? parv[2] : "No reason")));
else
sendto_ops("Server is Restarting by request of %s", parv[0]);
sendto_ops("REASON: %s", reason ? reason : "No reason");
// server_reboot(reason ? reason : "No reason");
return 0;
}