Add IDENT support

This commit is contained in:
Emil 2023-08-06 21:56:07 -06:00
parent 445f47bea4
commit 390e0ffb0a
5 changed files with 39 additions and 20 deletions

View File

@ -26,6 +26,11 @@ non-developmental deployments.
This'll require a few libraries: This'll require a few libraries:
libircclient-dev libsqlite3-dev build-essentials libircclient-dev libsqlite3-dev build-essentials
* Hosting
https://git.lain.church/emil/probotic
https://bis64wqhh3louusbd45iyj76kmn4rzw5ysawyan5bkxwyzihj67c5lid.onion/emil/probotic
* License * License
Copyright 2023 https://git.lain.church/anon , Copyright 2023 https://git.lain.church/anon ,

View File

@ -10,6 +10,8 @@ typedef struct
} creds_t; } creds_t;
VARDECL creds_t creds; VARDECL creds_t creds;
/* nickserv identify password */
VARDECL char * ident_password = NULL;
/* DECL char ** str_split(char const * s, char c); */ /* DECL char ** str_split(char const * s, char c); */
/* DECL void split_clean(char ** split); */ /* DECL void split_clean(char ** split); */

View File

@ -52,7 +52,7 @@ get_username(const char * origin)
} }
DECL void DECL void
ircmsg(const char* fmt, ircmsg(char const * reciever, char const * fmt,
...) ...)
{ {
va_list args; va_list args;
@ -72,7 +72,7 @@ ircmsg(const char* fmt,
do do
{ {
swp = irc_color_convert_to_mirc(data); swp = irc_color_convert_to_mirc(data);
IRCMSG(swp); irc_cmd_msg(session, reciever, swp);
free(swp); free(swp);
} while((data = strtok(NULL, delim), data)); } while((data = strtok(NULL, delim), data));
@ -80,11 +80,13 @@ ircmsg(const char* fmt,
va_end(args); va_end(args);
} }
DECL void DECL void
event_connect(irc_session_t * lsession, event_connect(irc_session_t * lsession,
const char * event, char const * event,
const char * origin, char const * origin,
const char ** params, char const ** params,
unsigned int count) unsigned int count)
{ {
(void) event; (void) event;
@ -93,13 +95,20 @@ event_connect(irc_session_t * lsession,
(void) count; (void) count;
/* msg ChanServ IDENTIFY? */ /* msg ChanServ IDENTIFY? */
irc_cmd_join(lsession, creds.channel, 0); irc_cmd_join(lsession, creds.channel, 0);
if (ident_password)
{
if (ircmsg("NickServ", "IDENTIFY %s" ident_password))
{ exit(1); }
memset(ident_password, '\0', strlen(indent_password));
}
#ifdef INITIAL_ASSIGNMENT_MESSAGE #ifdef INITIAL_ASSIGNMENT_MESSAGE
if(is_no_assignment(creds.channel)) if(is_no_assignment(creds.channel))
{ {
ircmsg(IRC_RED "No assignment for this channel. Finding a new..." IRC_STOP); ircmsg(creds.channel, IRC_RED "No assignment for this channel. Finding a new..." IRC_STOP);
random_assign(creds.channel); random_assign(creds.channel);
} }
ircmsg(remind(creds.channel)); ircmsg(creds.channel, remind(creds.channel));
#endif /* INITIAL_ASSIGNMENT_MESSAGE */ #endif /* INITIAL_ASSIGNMENT_MESSAGE */
} }

View File

@ -60,6 +60,9 @@ main (int argc,
/* { creds.port = atoi(argv[1]); } */ /* { creds.port = atoi(argv[1]); } */
else if (strcmp(arg, "channel") == 0) else if (strcmp(arg, "channel") == 0)
{ free(creds.channel); creds.channel = strdup(argv[1]); } { free(creds.channel); creds.channel = strdup(argv[1]); }
else if (strcmp(arg, "identify") == 0)
{ ident_password = argv[1]; }
/* else if (strcmp(arg, "username") == 0) */ /* else if (strcmp(arg, "username") == 0) */
/* { free(creds.username); creds.username = strdup(argv[1]); } */ /* { free(creds.username); creds.username = strdup(argv[1]); } */
/* else if (strcmp(arg, "password") == 0) */ /* else if (strcmp(arg, "password") == 0) */

View File

@ -117,28 +117,28 @@ parse_command(char const * cmd)
if (strcmp(cmd, "remind") == 0) if (strcmp(cmd, "remind") == 0)
{ {
msgswp = remind(current_username); msgswp = remind(current_username);
ircmsg("%s: %s", current_username, msgswp); ircmsg(creds.channel, "%s: %s", current_username, msgswp);
} }
else if (strcmp(cmd, "help") == 0) else if (strcmp(cmd, "help") == 0)
{ ircmsg(help_msg); } { ircmsg(creds.channel, help_msg); }
else if (strcmp(cmd, "magic") == 0) else if (strcmp(cmd, "magic") == 0)
{ ircmsg("%s: " IRC_YELLOW "%d" IRC_STOP, current_username, (rand() % 100) + 1); } { ircmsg(creds.channel, "%s: " IRC_YELLOW "%d" IRC_STOP, current_username, (rand() % 100) + 1); }
else if (strcmp(cmd, "dump") == 0) else if (strcmp(cmd, "dump") == 0)
{ {
#ifndef NO_VULN_COMMANDS #ifndef NO_VULN_COMMANDS
ircmsg("%s: All projects:", current_username); ircmsg(creds.channel, "%s: All projects:", current_username);
msgswp = dump(); msgswp = dump();
ircmsg(msgswp); ircmsg(creds.channel, msgswp);
#else #else
ircmsg("%s: dump disabled", current_username); ircmsg(creds.channel, "%s: dump disabled", current_username);
#endif /* !NO_VULN_COMMANDS */ #endif /* !NO_VULN_COMMANDS */
} }
else if (strcmp(cmd, "reroll") == 0) else if (strcmp(cmd, "reroll") == 0)
{ {
/* ircmsg("%s: Rerolling...", current_username); */ /* ircmsg(creds.channel, "%s: Rerolling...", current_username); */
purge_assignments(current_username); purge_assignments(current_username);
random_assign(current_username); random_assign(current_username);
ircmsg("%s: %s", current_username, remind(current_username)); ircmsg(creds.channel, "%s: %s", current_username, remind(current_username));
} }
} }
else else
@ -148,19 +148,19 @@ parse_command(char const * cmd)
if (strncmp(cmd, "raw", i) == 0) if (strncmp(cmd, "raw", i) == 0)
{ {
#ifndef NO_VULN_COMMANDS #ifndef NO_VULN_COMMANDS
/* ircmsg("%s: Executing SQL `%s'.", current_username, arg); */ /* ircmsg(creds.channel, "%s: Executing SQL `%s'.", current_username, arg); */
msgswp = raw(arg); msgswp = raw(arg);
ircmsg(msgswp); ircmsg(creds.channel, msgswp);
#else #else
ircmsg("%s: raw disabled", current_username); ircmsg(creds.channel, "%s: raw disabled", current_username);
#endif /* !NO_VULN_COMMANDS */ #endif /* !NO_VULN_COMMANDS */
} }
else if (strncmp(cmd, "repo", i) == 0) else if (strncmp(cmd, "repo", i) == 0)
{ {
/* ircmsg("%s: Setting project repository...", current_username); */ /* ircmsg(creds.channel, "%s: Setting project repository...", current_username); */
set_repo(creds.channel, arg); set_repo(creds.channel, arg);
msgswp = remind(creds.channel); msgswp = remind(creds.channel);
ircmsg("%s: %s", current_username, msgswp); ircmsg(creds.channel, "%s: %s", current_username, msgswp);
} }
} }
free(msgswp); free(msgswp);