/*
 * getcloak.c — Adds GETCLOAK command
 */

#include "unrealircd.h"

#define MSG_GETCLOAK "GETCLOAK"

CMD_FUNC(cmd_getcloak);

ModuleHeader MOD_HEADER = {
    "third/getcloak",
    "1.0",
    "Adds GETCLOAK command",
    "third-party",
    "unrealircd-6",
};

MOD_INIT()
{
    CommandAdd(modinfo->handle, MSG_GETCLOAK, cmd_getcloak, 1, CMD_USER);
    return MOD_SUCCESS;
}

MOD_LOAD()
{
    return MOD_SUCCESS;
}

MOD_UNLOAD()
{
    return MOD_SUCCESS;
}

CMD_FUNC(cmd_getcloak)
{
    char output[HOSTLEN + 1];
    const char *input;

    if (!IsOper(client))
    {
        sendnumeric(client, ERR_NOPRIVILEGES);
        return;
    }

    if (parc < 2 || BadPtr(parv[1]))
    {
        sendnotice(client, "Syntax: GETCLOAK <hostname|ip>");
        return;
    }

    input = parv[1];

    if (!is_valid_ip(input) && !valid_host(input, 1))
    {
        sendnotice(client, "GETCLOAK: Invalid hostname or IP");
        return;
    }

    make_cloakedhost(client, input, output, sizeof(output));
    sendnotice(client, "GETCLOAK: %s", output);
}
