#include "s_conf.h"
#include "s_debug.h"
#include "s_user.h"
+#include "s_misc.h"
#include "send.h"
+#include "support.h"
#include <assert.h>
#include <stdlib.h>
* passwd may be NULL. Head it off at the pass...
*/
if (to_match && passwd) {
- char salt[3];
- const char* encr;
- salt[0] = passwd[0];
- salt[1] = passwd[1];
- salt[2] = '\0';
- encr = ircd_crypt(to_match, salt);
+ const char *encr = ircd_crypt(to_match, passwd);
return (0 == strcmp(encr, passwd));
}
return 0;
if (EmptyString(name) || EmptyString(password))
return need_more_params(sptr, "OPER");
- aconf = find_conf_exact(name, sptr->username, sptr->sockhost, CONF_OPS);
+ aconf = find_conf_exact(name, cli_username(sptr), cli_sockhost(sptr), CONF_OPS);
if (!aconf)
- aconf = find_conf_exact(name, sptr->username,
- ircd_ntoa((const char*) &cptr->ip), CONF_OPS);
+ aconf = find_conf_exact(name, cli_username(sptr),
+ ircd_ntoa((const char*) &(cli_ip(cptr))), CONF_OPS);
if (!aconf || IsIllegal(aconf)) {
- send_error_to_client(sptr, ERR_NOOPERHOST);
- sendto_realops("Failed OPER attempt by %s (%s@%s)",
- parv[0], sptr->user->username, sptr->sockhost);
+ send_reply(sptr, ERR_NOOPERHOST);
+ sendto_opmask_butone(0, SNO_OLDREALOP, "Failed OPER attempt by %s (%s@%s)",
+ parv[0], cli_user(sptr)->username, cli_sockhost(sptr));
return 0;
}
assert(0 != (aconf->status & CONF_OPS));
if (oper_password_match(password, aconf->passwd)) {
- unsigned int old_mode = (sptr->flags & ALL_UMODES);
+ unsigned int old_mode = (cli_flags(sptr) & ALL_UMODES);
if (ACR_OK != attach_conf(sptr, aconf)) {
- send_error_to_client(sptr, ERR_NOOPERHOST);
- sendto_realops("Failed OPER attempt by %s (%s@%s)",
- parv[0], sptr->user->username, sptr->sockhost);
+ send_reply(sptr, ERR_NOOPERHOST);
+ sendto_opmask_butone(0, SNO_OLDREALOP, "Failed OPER attempt by %s "
+ "(%s@%s)", parv[0], cli_user(sptr)->username,
+ cli_sockhost(sptr));
return 0;
}
if (CONF_LOCOP == aconf->status) {
SetOper(sptr);
++UserStats.opers;
}
- cptr->handler = OPER_HANDLER;
+ cli_handler(cptr) = OPER_HANDLER;
- sptr->flags |= (FLAGS_WALLOP | FLAGS_SERVNOTICE | FLAGS_DEBUG);
+ cli_flags(sptr) |= (FLAGS_WALLOP | FLAGS_SERVNOTICE | FLAGS_DEBUG);
set_snomask(sptr, SNO_OPERDEFAULT, SNO_ADD);
send_umode_out(cptr, sptr, old_mode);
- sendto_one(sptr, rpl_str(RPL_YOUREOPER), me.name, parv[0]);
+ send_reply(sptr, RPL_YOUREOPER);
- sendto_ops("%s (%s@%s) is now operator (%c)", parv[0],
- sptr->user->username, sptr->sockhost,
- IsOper(sptr) ? 'O' : 'o');
+ sendto_opmask_butone(0, SNO_OLDSNO, "%s (%s@%s) is now operator (%c)",
+ parv[0], cli_user(sptr)->username, cli_sockhost(sptr),
+ IsOper(sptr) ? 'O' : 'o');
- ircd_log(L_INFO, "OPER (%s) by (%s!%s@%s)",
- name, parv[0], sptr->user->username, sptr->sockhost);
-#ifdef FNAME_OPERLOG
- if (IsUser(sptr))
- write_log(FNAME_OPERLOG,
- "%s OPER (%s) by (%s!%s@%s)\n", myctime(CurrentTime),
- name, parv[0], sptr->user->username, sptr->sockhost);
-#endif
+ log_write(LS_OPER, L_INFO, 0, "OPER (%s) by (%#C)", name, sptr);
}
else {
- sendto_one(sptr, err_str(ERR_PASSWDMISMATCH), me.name, parv[0]);
- sendto_realops("Failed OPER attempt by %s (%s@%s)",
- parv[0], sptr->user->username, sptr->sockhost);
+ send_reply(sptr, ERR_PASSWDMISMATCH);
+ sendto_opmask_butone(0, SNO_OLDREALOP, "Failed OPER attempt by %s (%s@%s)",
+ parv[0], cli_user(sptr)->username, cli_sockhost(sptr));
}
return 0;
}
*/
if (!IsServer(sptr) && !IsOper(sptr)) {
++UserStats.opers;
- sptr->flags |= FLAGS_OPER;
- sendto_serv_butone(cptr, "%s%s " TOK_MODE " %s :+o", NumNick(sptr), parv[0]);
+ cli_flags(sptr) |= FLAGS_OPER;
+ sendcmdto_serv_butone(sptr, CMD_MODE, cptr, "%s :+o", parv[0]);
}
return 0;
}
{
assert(0 != cptr);
assert(cptr == sptr);
- sendto_one(sptr, rpl_str(RPL_YOUREOPER), me.name, parv[0]);
+ send_reply(sptr, RPL_YOUREOPER);
return 0;
}
if (IsServer(cptr) && !IsOper(sptr)) {
++UserStats.opers;
sptr->flags |= FLAGS_OPER;
- sendto_serv_butone(cptr, "%s%s " TOK_MODE " %s :+o", NumNick(sptr), parv[0]);
+ sendto_serv_butone(cptr, "%s%s " TOK_MODE " %s :+o", NumNick(sptr), parv[0]); /* XXX DEAD */
return 0;
}
else if (IsAnOper(sptr)) {
if (MyConnect(sptr))
- sendto_one(sptr, rpl_str(RPL_YOUREOPER), me.name, parv[0]);
+ sendto_one(sptr, rpl_str(RPL_YOUREOPER), me.name, parv[0]); /* XXX DEAD */
return 0;
}
assert(cptr == sptr);
ircd_ntoa((const char*) &cptr->ip), CONF_OPS);
if (!aconf || IsIllegal(aconf)) {
- sendto_one(sptr, err_str(ERR_NOOPERHOST), me.name, parv[0]);
- sendto_realops("Failed OPER attempt by %s (%s@%s)",
+ sendto_one(sptr, err_str(ERR_NOOPERHOST), me.name, parv[0]); /* XXX DEAD */
+ sendto_realops("Failed OPER attempt by %s (%s@%s)", /* XXX DEAD */
parv[0], sptr->user->username, sptr->sockhost);
return 0;
}
int old = (sptr->flags & ALL_UMODES);
if (ACR_OK != attach_conf(sptr, aconf)) {
- sendto_one(sptr, err_str(ERR_NOOPERHOST), me.name, parv[0]);
- sendto_realops("Failed OPER attempt by %s (%s@%s)",
+ sendto_one(sptr, err_str(ERR_NOOPERHOST), me.name, parv[0]); /* XXX DEAD */
+ sendto_realops("Failed OPER attempt by %s (%s@%s)", /* XXX DEAD */
parv[0], sptr->user->username, sptr->sockhost);
return 0;
}
++UserStats.opers;
}
cptr->handler = OPER_HANDLER;
- sendto_ops("%s (%s@%s) is now operator (%c)", parv[0],
+ sendto_ops("%s (%s@%s) is now operator (%c)", parv[0], /* XXX DEAD */
sptr->user->username, sptr->sockhost, IsOper(sptr) ? 'O' : 'o');
sptr->flags |= (FLAGS_WALLOP | FLAGS_SERVNOTICE | FLAGS_DEBUG);
set_snomask(sptr, SNO_OPERDEFAULT, SNO_ADD);
send_umode_out(cptr, sptr, old);
- sendto_one(sptr, rpl_str(RPL_YOUREOPER), me.name, parv[0]);
+ sendto_one(sptr, rpl_str(RPL_YOUREOPER), me.name, parv[0]); /* XXX DEAD */
- ircd_log(L_INFO, "OPER (%s) by (%s!%s@%s)",
+ ircd_log(L_INFO, "OPER (%s) by (%s!%s@%s)", /* XXX DEAD */
name, parv[0], sptr->user->username, sptr->sockhost);
#ifdef FNAME_OPERLOG
if (IsUser(sptr))
- write_log(FNAME_OPERLOG,
+ write_log(FNAME_OPERLOG, /* XXX DEAD */
"%s OPER (%s) by (%s!%s@%s)\n", myctime(CurrentTime),
name, parv[0], sptr->user->username, sptr->sockhost);
#endif
}
else {
- sendto_one(sptr, err_str(ERR_PASSWDMISMATCH), me.name, parv[0]);
- sendto_realops("Failed OPER attempt by %s (%s@%s)",
+ sendto_one(sptr, err_str(ERR_PASSWDMISMATCH), me.name, parv[0]); /* XXX DEAD */
+ sendto_realops("Failed OPER attempt by %s (%s@%s)", /* XXX DEAD */
parv[0], sptr->user->username, sptr->sockhost);
}
return 0;