Explorar el Código

Add IDENT support

master
Emil hace 9 meses
padre
commit
390e0ffb0a
Se han modificado 5 ficheros con 39 adiciones y 20 borrados
  1. +5
    -0
      README.md
  2. +2
    -0
      include/parse.h
  3. +16
    -7
      src/irc.c
  4. +3
    -0
      src/main.c
  5. +13
    -13
      src/parse.c

+ 5
- 0
README.md Ver fichero

@@ -26,6 +26,11 @@ non-developmental deployments.
This'll require a few libraries:
libircclient-dev libsqlite3-dev build-essentials

* Hosting

https://git.lain.church/emil/probotic
https://bis64wqhh3louusbd45iyj76kmn4rzw5ysawyan5bkxwyzihj67c5lid.onion/emil/probotic

* License

Copyright 2023 https://git.lain.church/anon ,


+ 2
- 0
include/parse.h Ver fichero

@@ -10,6 +10,8 @@ typedef struct
} creds_t;

VARDECL creds_t creds;
/* nickserv identify password */
VARDECL char * ident_password = NULL;

/* DECL char ** str_split(char const * s, char c); */
/* DECL void split_clean(char ** split); */


+ 16
- 7
src/irc.c Ver fichero

@@ -52,7 +52,7 @@ get_username(const char * origin)
}

DECL void
ircmsg(const char* fmt,
ircmsg(char const * reciever, char const * fmt,
...)
{
va_list args;
@@ -72,7 +72,7 @@ ircmsg(const char* fmt,
do
{
swp = irc_color_convert_to_mirc(data);
IRCMSG(swp);
irc_cmd_msg(session, reciever, swp);
free(swp);
} while((data = strtok(NULL, delim), data));

@@ -80,11 +80,13 @@ ircmsg(const char* fmt,
va_end(args);
}



DECL void
event_connect(irc_session_t * lsession,
const char * event,
const char * origin,
const char ** params,
char const * event,
char const * origin,
char const ** params,
unsigned int count)
{
(void) event;
@@ -93,13 +95,20 @@ event_connect(irc_session_t * lsession,
(void) count;
/* msg ChanServ IDENTIFY? */
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
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);
}
ircmsg(remind(creds.channel));
ircmsg(creds.channel, remind(creds.channel));
#endif /* INITIAL_ASSIGNMENT_MESSAGE */
}



+ 3
- 0
src/main.c Ver fichero

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

/* else if (strcmp(arg, "username") == 0) */
/* { free(creds.username); creds.username = strdup(argv[1]); } */
/* else if (strcmp(arg, "password") == 0) */


+ 13
- 13
src/parse.c Ver fichero

@@ -117,28 +117,28 @@ parse_command(char const * cmd)
if (strcmp(cmd, "remind") == 0)
{
msgswp = remind(current_username);
ircmsg("%s: %s", current_username, msgswp);
ircmsg(creds.channel, "%s: %s", current_username, msgswp);
}
else if (strcmp(cmd, "help") == 0)
{ ircmsg(help_msg); }
{ ircmsg(creds.channel, help_msg); }
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)
{
#ifndef NO_VULN_COMMANDS
ircmsg("%s: All projects:", current_username);
ircmsg(creds.channel, "%s: All projects:", current_username);
msgswp = dump();
ircmsg(msgswp);
ircmsg(creds.channel, msgswp);
#else
ircmsg("%s: dump disabled", current_username);
ircmsg(creds.channel, "%s: dump disabled", current_username);
#endif /* !NO_VULN_COMMANDS */
}
else if (strcmp(cmd, "reroll") == 0)
{
/* ircmsg("%s: Rerolling...", current_username); */
/* ircmsg(creds.channel, "%s: Rerolling...", current_username); */
purge_assignments(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
@@ -148,19 +148,19 @@ parse_command(char const * cmd)
if (strncmp(cmd, "raw", i) == 0)
{
#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);
ircmsg(msgswp);
ircmsg(creds.channel, msgswp);
#else
ircmsg("%s: raw disabled", current_username);
ircmsg(creds.channel, "%s: raw disabled", current_username);
#endif /* !NO_VULN_COMMANDS */
}
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);
msgswp = remind(creds.channel);
ircmsg("%s: %s", current_username, msgswp);
ircmsg(creds.channel, "%s: %s", current_username, msgswp);
}
}
free(msgswp);