Shellsec

Fuld version: [C++] IRC bot til overvågning af forum posts
Du ser lige nu en skrabet udgave af vores indhold. Se den fulde version med ordentlig formatering.
Så er mit værk færdigt!
Dette er en IRC bot, der placerer sig på vores IRC channel og holder fast i forbindelsen indtil den skal noget. Samtidig åbnes en socket, som er klar til at modtage data der skal skrives i chatten. Skide genialt, da dette kan bruges i samarbejde med en masse andre programmer, her bruger vi den så sammen med MyBB, så derfor har jeg kaldt den BB2IRC.

Det den gør er simpelt, når en besked bliver oprettet på forummet, sendes en besked til bottens åbne socket (INC_IP:INC_PORT).
Med PHP har jeg gjort dette med noget så simpelt som dette:
<?php
$msgtype = array("oprettet en tråd med titlen", "besvaret tråden");
$title = $_GET['title'];
$user = $_GET['user'];
$link = "http://shellsec.pw/showthread.php?tid=" . $_GET['tid'] . "&pid=" . $_GET['pid'] . "#pid" . $_GET['pid'];
$msg = $user . " har " . $msgtype[$_GET['type']] . " \"" . $title . "\"" . $INC_DELIM . $link;

$sockfd = fsockopen($INC_IP, $INC_PORT, $errno, $errstr, 120);
if(!$sockfd){
die();
}else{
fwrite($sockfd, $msg);
fclose($sockfd);
}
?>

Et eksempel på en besked oprettes således ved en query til serveren med denne querystring:
?user=Doctor%20Blue&type=0&title=[C++]%20IRC%20bot%20til%20overvågning%20af%20forum%20posts&tid=207&pid=
$INC_DELIM repræsenterer det tegn, der også sættes som konstanten INC_DELIM i botten, og er altså det tegn der indikerer en ny linje.
Output vil altså være:
Citer:Botnick: Doctor Blue har oprettet en tråd med titlen [C++] IRC bot til overvågning af forum posts
Botnick: http://shellsec.pw/showthread.php?tid=207&pid=#pid

og så har vi selve botten her:
Hele molevitten er cross-compatible, altså det funger på Linux og Windows, og i princippet burde det også virke på Mac, men jeg har ikke testet :)

Hyggehejsa, nyd mit arbejde når Morph får det op at køre :)
Lækkert stykke arbejde. Glæder mig til at se den i aktion og forhåbentligt være med til at udbygge den ;)
Nice, glæder mig til at se den implementeret....