Advertisement
Guest User

ircbot

a guest
Jul 18th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.09 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. #
  4. # SIMPLE CONFIG
  5. #
  6. SERV="irc.overthewire.org"
  7. PORT="6667"
  8. CHAN="#/dev/random"
  9. NICK="anonbot"
  10. USER="$NICK"
  11. OWNR="$NICK"
  12.  
  13. #
  14. # INITIALIZATION
  15. #
  16. #RAND=$(od -An -tx2 -N 2 /dev/random | cut -d' ' -f2);
  17. #NICK="$NICK$RAND"
  18. echo "Using NICK: $NICK"
  19.  
  20. exec 3<"/dev/tcp/$SERV/$PORT"
  21. sleep 2
  22. echo "NICK $NICK" >&3
  23. echo "USER $USER 8 * : $USER" >&3
  24. sleep 3
  25. echo "JOIN $CHAN" >&3
  26.  
  27. #
  28. # MAIN LOOP
  29. #
  30. while IFS="" read -r line <&3 ;
  31. do
  32. #
  33. # FOR DEBUG ONLY ( PRINT EVERY LINE FROM THE SERVER !)
  34. #
  35.  echo "INFO: $line"
  36.  
  37. #
  38. # DIVIDE $LINE INTO PARTS INTO PIECES OF INFORMATION
  39. # Here we extract the obviously important information from the message from the server into parts!
  40. #
  41.  line=$(echo "$line" | sed -e 's/[\r\n]$//')
  42.  
  43.  icmd=$(echo "$line" | cut -d' ' -f2)
  44.  ping=$(echo "$line" | cut -d' ' -f1)
  45.  pong=$(echo "$line" | cut -d' ' -f2-)
  46.  nick=$(echo "$line" | cut -d':' -f2 | cut -d'!' -f1)
  47.  user=$(echo "$line" | cut -d'!' -f2 | cut -d'@' -f1)
  48.  mess=$(echo "$line" | cut -d':' -f3-)
  49.  
  50. #
  51. # WHILE NO PING OR PRIVMSG IRC COMMANDS ARRIVE... DON'T DO SHIT
  52. #
  53.  if [ "$ping" == "PING" ] ; then
  54.   echo "$ping $pong" | tr 'PING' 'PONG' >&3
  55.   continue
  56.  fi
  57.  
  58.  if [ "$icmd" != "PRIVMSG" ] ; then
  59.   continue
  60.  fi
  61.  
  62. #
  63. # AUTO-AUTHORIZING (TODO: Better ways exist, and I'll implement them somethime!)
  64. #
  65. # "Parental system", which means that each parent controls it's sibling(s) !? ;D
  66. #
  67.  if [ "$nick" == "$OWNR" ] ; then priv="root"; else priv="nobody"; fi
  68.  
  69. #
  70. # PUBLIC/GUEST/CHANNEL COMMANDS
  71. #
  72.  if [ "$mess" == "!src" ] ; then
  73.   cat $0 | while read -r catline ; do
  74.    if [ "$(echo $catline | cut -d'#' -f1-)"  == "" ] ; then
  75.     echo "PRIVMSG $nick : N" | tr 'N' '\n' >&3
  76.    else
  77.     echo "PRIVMSG $nick :$catline" | tr '\t' ' ' >&3
  78.    fi
  79.   done
  80.  fi
  81.  
  82. # if [ $priv != "root" ] ; then
  83. #  continue
  84. # fi
  85.  
  86. #
  87. # OWNER COMMANDS
  88. #
  89.  if [ "$priv" == "root" ] ; then
  90.   if [ "$mess" == "!die" ] ; then
  91.    echo "PRIVMSG $nick :$nick: Killing myself on your command!" >&3
  92.    echo "QUIT" >&3
  93.    exit 0
  94.   fi
  95.  fi
  96.  
  97. done
  98.  
  99. echo "QUIT" >&3
  100. ./$0
  101.  
  102. #
  103. # END OF SOURCE, HAPPY (AU/E)DITING! ;D
  104. #
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement