diff options
author | FreeArtMan <dos21h@gmail.com> | 2017-05-08 00:29:19 +0100 |
---|---|---|
committer | FreeArtMan <dos21h@gmail.com> | 2017-05-08 00:29:19 +0100 |
commit | 0041b69fc5778d6be88d70e440cd8785b83d44dc (patch) | |
tree | 8a0e313146d8bedd025bb50222dbe31c6c53414b /agni.c | |
parent | d43cf6e4704da5414c80e32da06060ad06511f62 (diff) | |
download | agni-0041b69fc5778d6be88d70e440cd8785b83d44dc.tar.gz agni-0041b69fc5778d6be88d70e440cd8785b83d44dc.zip |
Allow to connect only to predefine channels
Diffstat (limited to 'agni.c')
-rw-r--r-- | agni.c | 37 |
1 files changed, 27 insertions, 10 deletions
@@ -443,7 +443,7 @@ int th_start_client(void *data) char *sep = strchr(uname,'!'); uname[sep-uname] = 0x0; - PRINT() + PNL() //if (token_cmp(itok,3,":join") == 1) if (strncmp(":join",msg,5)==0) { @@ -451,15 +451,32 @@ int th_start_client(void *data) //lets check if one more argument is there { - //PNL(); - char *sep_chan = strchr(msg,' '); - - //lets join channel - memset(cmd_buf, 0, TH_CONN_BUF_SZ); - int fret = snprintf(cmd_buf, TH_CONN_BUF_SZ, ":%s JOIN %s\r\n", dest_name, sep_chan); - PRINT("cmd_buf %s\n", cmd_buf); - write(conn, cmd_buf, fret); - + char *chan_name=NULL; + int iter=0; + char *sep_chan = strchr(msg,' ')+1; + + //check if channel in allowed list, if yes then continue + iter=0; + while (cfg->channels[iter]!=NULL) + { + chan_name = cfg->channels[iter]; + if ((strncmp(chan_name,sep_chan,strlen(chan_name))==0) + && (strlen(sep_chan)==strlen(chan_name))) + { + //lets join channel + memset(cmd_buf, 0, TH_CONN_BUF_SZ); + int fret = snprintf(cmd_buf, TH_CONN_BUF_SZ, ":%s JOIN %s\r\n", dest_name, sep_chan); + PRINT("cmd_buf %s\n", cmd_buf); + write(conn, cmd_buf, fret); + break; + } + PNL(); + iter++; + if (cfg->channels[iter]==NULL) + { + PRINT("Cant find this chan in da list\n"); + } + } } } else { |