/*
 * 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 (!IsUser(client))
		return;

	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);
}
