Advertisement
Guest User

Untitled

a guest
Jul 5th, 2015
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.70 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5. #include <libircclient.h>
  6. #include <libirc_rfcnumeric.h>
  7.  
  8. typedef struct
  9. {
  10.     char    *   channel;
  11.     char    *   nick;
  12.  
  13. } irc_ctx_t;
  14.  
  15. void nickGen(char str[8])
  16. {
  17.     int genick;
  18.     srand(time(NULL));
  19.     genick = rand() % (99999 - 10000 +1) + 10000;
  20.     sprintf(str, "%d", genick);
  21.     int n;
  22.     int nm;
  23.     int i = 0;
  24.     for (; i <= 4; i++)
  25.     {
  26.         n = (int)str[i] - 48;
  27.         nm = n + 97;
  28.         str[i] = (char)nm;
  29.        
  30.     }
  31.    
  32. }
  33.  
  34. void cmd(char * args)
  35. {
  36.     char argsa[2][20];
  37.     int i = 0;
  38.     char splitargn[100];
  39.     char *splitarg = splitargn;
  40.    
  41.    
  42.     splitarg = strtok(args, " ");
  43.     while ( splitarg != NULL )
  44.     {
  45.         strcpy(argsa[i],splitarg);
  46.         splitarg = strtok(NULL, " ");
  47.         printf(splitarg);
  48.         i++;
  49.     }
  50. }
  51. void dump_event (irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
  52. {
  53.     return;
  54. }
  55.  
  56. void event_connect (irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
  57. {
  58.     irc_ctx_t * ctx = (irc_ctx_t *) irc_get_ctx (session);
  59.     irc_cmd_join (session, ctx->channel, 0);
  60. }
  61.  
  62. void event_channel (irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
  63. {
  64.     char nickbuf[128];
  65.     irc_ctx_t * ctx = (irc_ctx_t *) irc_get_ctx (session);
  66.  
  67.     if ( count != 2 )
  68.         return;
  69.  
  70.     printf ("'%s' said in channel %s: %s\n",
  71.         origin ? origin : "someone",
  72.         params[0], params[1] );
  73.  
  74.     if ( !origin )
  75.         return;
  76.  
  77.     irc_target_get_nick (origin, nickbuf, sizeof(nickbuf));
  78.    
  79.     char isme[10];
  80.     char isnick[15];
  81.     char * args = '\0';
  82.    
  83.     strcpy(args, params[1] + 10);
  84.    
  85.     strncpy (isme, params[1], 4);
  86.     strncpy (isnick, params[1] + 4, 5 );
  87.     strcat(isnick, "\0");
  88.    
  89.     if ( !strcmp(isme, "!me ") )
  90.     {
  91.         if ( !strcmp (isnick, ctx->nick) )
  92.         {
  93.             if ( !strncmp(args, "quit", sizeof("quit") - 1) )
  94.             {
  95.                 irc_cmd_quit (session, " Bye");
  96.             }
  97.  
  98.             else if ( !strncmp(args, "help", sizeof("help") - 1) )
  99.             {
  100.                 irc_cmd_msg (session, params[0], "quit, help");
  101.             }
  102.  
  103.             else if ( strstr(args, "topic ") == args )
  104.             {
  105.                 irc_cmd_topic (session, params[0], args + sizeof("topic ") -1);
  106.             }
  107.  
  108.             else if ( strstr(args, "mode ") == args )
  109.             {
  110.                 irc_cmd_channel_mode (session, params[0], args + sizeof("mode ") -1);
  111.             }
  112.             else if ( strstr(args, "nick ") == args )
  113.             {
  114.                 irc_cmd_nick (session, args + sizeof("nick ") -1);
  115.             }
  116.  
  117.             else if ( strstr(args, "cmd ") == args )
  118.             {
  119.                 cmd(args);
  120.             }
  121.             else
  122.             {
  123.                 irc_cmd_msg (session, params[0], "quit, help");
  124.             }
  125.         }
  126.     }
  127. }
  128.  
  129. void event_join (irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
  130. {
  131.     return;
  132. }
  133.  
  134. void event_numeric (irc_session_t * session, unsigned int event, const char * origin, const char ** params, unsigned int count)
  135. {
  136.     return;
  137. }
  138.  
  139. void event_privmsg (irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
  140. {
  141.     printf ("'%s' said to me (%s): %s\n",
  142.     origin ? origin : "someone",
  143.     params[0], params[1] );
  144. }
  145.  
  146. int conn ()
  147. {
  148.     char serv[]     =   "irc.freenode.net";
  149.     char chan[]     =   "#toma678";
  150.     char nickn[8];
  151.     nickGen(nickn);
  152.     int  port       =   6667;
  153.    
  154.    
  155.     irc_callbacks_t callbacks;
  156.     irc_ctx_t ctx;
  157.     ctx.channel = chan;
  158.     ctx.nick = nickn;
  159.     irc_session_t * s;
  160.     memset(&callbacks, 0, sizeof(callbacks));
  161.    
  162.     callbacks.event_connect     =   event_connect;
  163.     callbacks.event_join        =   event_join;
  164.     callbacks.event_nick        =   dump_event;
  165.     callbacks.event_quit        =   dump_event;
  166.     callbacks.event_part        =   dump_event;
  167.     callbacks.event_mode        =   dump_event;
  168.     callbacks.event_topic       =   dump_event;
  169.     callbacks.event_kick        =   dump_event;
  170.     callbacks.event_channel     =   event_channel;
  171.     callbacks.event_privmsg     =   event_privmsg;
  172.     callbacks.event_notice      =   dump_event;
  173.     callbacks.event_invite      =   dump_event;
  174.     callbacks.event_umode       =   dump_event;
  175.     callbacks.event_ctcp_rep    =   dump_event;
  176.     callbacks.event_ctcp_action =   dump_event;
  177.     callbacks.event_unknown     =   dump_event;
  178.     callbacks.event_numeric     =   event_numeric;
  179.  
  180.    
  181.     s = irc_create_session(&callbacks);
  182.     if (!s)
  183.     {
  184.         printf("Couldn't create session.\n");
  185.         return 1;
  186.     }
  187.    
  188.     if ( irc_connect (s, serv, port, 0, nickn, nickn, nickn) )
  189.     {
  190.         printf ("Could not connect: %s\n", irc_strerror (irc_errno(s)));
  191.         return 1;
  192.     }
  193.    
  194.     irc_set_ctx (s, &ctx);
  195.    
  196.     if ( irc_run (s) )
  197.     {
  198.         printf ("Could not connect or I/O error: %s\n", irc_strerror (irc_errno(s)));
  199.         return 1;
  200.     }
  201.    
  202.     if ( irc_cmd_join(s, chan,"\0") )
  203.     {
  204.         printf("Could not join channel or I/O error: %s\n", irc_strerror (irc_errno(s)));
  205.         return 1;
  206.     }
  207.     return 1;
  208. }
  209.  
  210. int main()
  211. {
  212.     conn();
  213.     return 1;
  214. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement