71 lines
2.0 KiB
C
71 lines
2.0 KiB
C
#define MODULE_NAME "rfish"
|
|
|
|
#include <common.h>
|
|
#include <core/levels.h>
|
|
#include <core/signals.h>
|
|
#include <irc/core/irc.h>
|
|
#include <irc/core/irc-servers.h>
|
|
#include <fe-common/core/printtext.h>
|
|
|
|
#include "rfish.h"
|
|
|
|
void cmd_crypt_action(const char *data, SERVER_REC *server, WI_ITEM_REC *item) {
|
|
const char *target;
|
|
int target_type = SEND_TARGET_NICK;
|
|
|
|
if (data == NULL || (strlen(data) < 2))
|
|
goto action_error;
|
|
|
|
if (item != NULL)
|
|
target = window_item_get_target(item);
|
|
else
|
|
goto action_error;
|
|
|
|
target_type = server_ischannel(server, target) ?
|
|
SEND_TARGET_CHANNEL : SEND_TARGET_NICK;
|
|
|
|
const uint8_t key[] = "chaveULTRAgulosa";
|
|
uintptr_t key_len = sizeof(key) - 1;
|
|
|
|
uintptr_t input_len = strlen(data);
|
|
const uint8_t *input_buffer = (const uint8_t *)malloc(input_len);
|
|
if (!input_buffer) {
|
|
printtext(server, target, MSGLEVEL_CRAP, "Memory allocation failed!");
|
|
return;
|
|
}
|
|
memcpy((void *)input_buffer, (const void *)data, input_len);
|
|
|
|
char *encrypted = encrypt_cbc(key, key_len, input_buffer, input_len);
|
|
if (encrypted) {
|
|
signal_emit("server sendmsg", 4, server, target, encrypted);
|
|
signal_emit(target_type == SEND_TARGET_CHANNEL ?
|
|
"message own_public" :
|
|
"message own_private", 4, server, encrypted,
|
|
target, target);
|
|
free(encrypted);
|
|
} else {
|
|
printtext(server, target, MSGLEVEL_CRAP, "Encryption failed!");
|
|
}
|
|
free((void *)input_buffer);
|
|
return;
|
|
|
|
action_error:
|
|
printtext(server, item != NULL ? window_item_get_target(item) : NULL,
|
|
MSGLEVEL_CRAP, "\002rFiSH:\002 Usage: /rf <message>");
|
|
}
|
|
|
|
void rfish_init(void) {
|
|
command_bind("rf", NULL, (SIGNAL_FUNC) cmd_crypt_action);
|
|
module_register("rfish", "core");
|
|
}
|
|
|
|
void rfish_deinit(void) {
|
|
command_unbind("rf", (SIGNAL_FUNC) cmd_crypt_action);
|
|
}
|
|
|
|
#ifdef IRSSI_ABI_VERSION
|
|
void rfish_abicheck(int *version)
|
|
{
|
|
*version = IRSSI_ABI_VERSION;
|
|
}
|
|
#endif |