30.12.2005, 02:03 Uhr
Online-Users (Wer ist aktuell in einem Channel?)
Dieses AngelBot-Script erzeugt 1 Datei, in denen das Topic eines Channels, die aktuellen User und die aktuellen Bans gespeichert werden.
Ein PHP-Script greift auf die Datei zu und gibt sie aus.
Das schaut dann so aus: http://lukashetzi.no-ip.org/IRC/Stats/irc_users.php
Vorschau oder Vorschau
Download
mfg LukasHetzi
EDIT:
Da der Server öfters down ist poste ich hier den Inhalt dieser 2 (3) Dateien:
--- README.txt ---
--- online_user.asc ---
--- irc_users.php ---
Sry das der Code so lange geworden ist.
Dieses AngelBot-Script erzeugt 1 Datei, in denen das Topic eines Channels, die aktuellen User und die aktuellen Bans gespeichert werden.
Ein PHP-Script greift auf die Datei zu und gibt sie aus.
Das schaut dann so aus: http://lukashetzi.no-ip.org/IRC/Stats/irc_users.php
Vorschau oder Vorschau
Download
mfg LukasHetzi

EDIT:
Da der Server öfters down ist poste ich hier den Inhalt dieser 2 (3) Dateien:
--- README.txt ---
Zitat:ONLINE-USERS - AngelBot/PHP-Script |
Version 1.0.1 |
------------------------------------
Was ist das?
-------------
Das ist
1. ein AngelBot-Script das das aktuelle Topic, die aktuellen User und Bans eines Channels in einer Datei speichert.
2. ein PHP-Script das diese Datei liest und auf einer Webseite ausgibt.
Das heisst ihr könnt auf eurer Webseite die aktuellen Besucher eines IRC-Channels anzeigen lassen!
Was wird benötigt?
------------------
AngelBot ( Download unter http://www.angelbot-portal.de/modules.ph...load&cid=2 )
Webserver + PHP ( z.B. WAMPP - Download unter http://www.apachefriends.org/de/xampp-windows.html )
Achtung !!!
------------
Damit dieses Script richtig funktioniert muss ein Webserver mit PHP-Unterstützung auf den gleichen PC wie der AngelBot installiert sein
und das PHP-Script muss auf die vom AngelBot erzeugten Ini-Dateien zugreifen können.
Damit das Script einwandfrei funktioniert sollte der AngelBot 24 Stunden / Tag im Channel sein.
Installation
-------------
Angel-Bot
1. Datei online_user.asc ins AngelBot-Verzeichnis nach /FileArea/Scripts/ kopieren
2. Kopierte Datei öffnen
3. Pfade der Datei anpassen (ACHTUNG! Später muss ein PHP-Script auf diese Dateien zugreifen können!)
4. Channel ändern! (Es kann nur 1 Channel angegeben werden)
5. Speichern & Schließen
6. In der Partyline vom Angelbot folgendes eingeben: .+script online_user.asc
PHP
1. Die Datei irc_show.php in das Dokumenten-Verzeichnis eines Webservers kopieren, also dorthin wo du deine PHP-Scripts hast.
2. Kopiete Datei öffnen
3. Pfade der Datei anpassen ( z.B. C:\\AnGeL\\onlineusers_users.ini C:\\AnGeL\\onlineusers_bans.ini u.s.w.)
4. Es kann noch geändert werden ob Farben bei der letzten geposteten Zeile und im Topic angezeigt werden soll oder nicht ( $colours = true; oder $colours = false; )
5. Es kann die Farbe geändert werden, mit der User mit OP angezeigt werden ( $opcolor = "red"; oder die Farben blue, black u.s.w. )
4. Speichern & Schließen
5. Datei über den Browser aufrufen ( z.B. http://localhost/php/irc_show.php )
Lukas Hetzenecker
Lukas-Hetzenecker@gmx.at
http://lukashetzi.no-ip.org
--- online_user.asc ---
Zitat:Const ini_user = "onlineusers_users.ini"
Const ini_bans = "onlineusers_bans.ini"
Const ini_sonstig = "onlineusers_sonstiges.ini"
Const akt_chan = "#luki"
Sub Init()
Script "Online-Users"
SpreadFlagMessage 0, "+m", "Online-Users-Script 1.0 by LukasHetzi loaded..."
WriteINIString "Channel", "Chan", akt_chan, ini_sonstig
WriteINIString "Topic", "Topic", "n/a" & "=" & "n/a" & "=" & ChanTopic(ChanNum(akt_chan)), ini_sonstig
Hook "Chan_Msg"
Hook "Chan_Act"
Hook "Join"
Hook "Nick"
Hook "Kick"
Hook "Quit"
Hook "Part"
Hook "Op"
Hook "DeOp"
Hook "Ban"
Hook "UnBan"
Hook "Topic"
End Sub
Sub Chan_Msg(Chan, Nick, RegUser, Line)
If Not LCase(Chan) = akt_chan Then Exit Sub
Line = Replace (Line, "\", "\\")
Line = Replace (Line, "=", "\:gleich:")
Nick = Replace (Nick, "[", "\[")
Nick = Replace (Nick, "]", "\]")
If IsOp(Nick, akt_chan) Then
WriteINIString "Users", Nick, "o=" & Date & " " & Time & "=" & Line, ini_user
Else
WriteINIString "Users", Nick, "1=" & Date & " " & Time & "=" & Line, ini_user
End If
End Sub
Sub Chan_Act(Chan, Nick, RegUser, Line)
If Not LCase(Chan) = akt_chan Then Exit Sub
Line = Replace (Line, "\", "\\")
Line = Replace (Line, "=", "\:gleich:")
Nick = Replace (Nick, "[", "\[")
Nick = Replace (Nick, "]", "\]")
If IsOp(Nick, akt_chan) Then
WriteINIString "Users", Nick, "o=" & Date & " " & Time & "=" & Line, ini_user
Else
WriteINIString "Users", Nick, "1=" & Date & " " & Time & "=" & Line, ini_user
End If
End Sub
Sub Join(Chan, Nick, RegUser, Flags)
If Not LCase(Chan) = akt_chan Then Exit Sub
Nick = Replace (Nick, "[", "\[")
Nick = Replace (Nick, "]", "\]")
WriteINIString "Users", Nick, "1=" & Date & " " & Time & "=" & "<i>Channel betreten</i>", ini_user
End Sub
Sub Nick(Chan, OldNick, NewNick, RegUser, Flags, Count)
If Not LCase(Chan) = akt_chan Then Exit Sub
NewNick = Replace (NewNick, "[", "\[")
NewNick = Replace (NewNick, "]", "\]")
OldNick = Replace (OldNick, "[", "\[")
OldNick = Replace (OldNick, "]", "\]")
DeleteINIString "Users", OldNick, ini_user
If IsOp(NewNick, akt_chan) Then
WriteINIString "Users", NewNick, "o=" & Date & " " & Time & "=" & "<i>Nick von " & OldNick & " auf " & NewNick & " geändert</i>", ini_user
Else
WriteINIString "Users", NewNick, "1=" & Date & " " & Time & "=" & "<i>Nick von " & OldNick & " auf " & NewNick & " geändert</i>", ini_user
End If
End Sub
Sub Kick(Chan, Nick, User, Flags, KNick, KUser, KFlags, Message)
If Not LCase(Chan) = akt_chan Then Exit Sub
Nick = Replace (Nick, "[", "\[")
Nick = Replace (Nick, "]", "\]")
KNick = Replace (KNick, "[", "\[")
KNick = Replace (KNick, "]", "\]")
DeleteINIString "Users", KNick, ini_user
If IsOp(Nick, akt_chan) Then
WriteINIString "Users", Nick, "o=" & Date & " " & Time & "=" & "<i>" & KNick & " gekickt</i>", ini_user
Else
WriteINIString "Users", Nick, "1=" & Date & " " & Time & "=" & "<i>" & KNick & " gekickt</i>", ini_user
End If
End Sub
Sub Quit(Chan, Nick, RegUser, Flags, Message)
If Not LCase(Chan) = akt_chan Then Exit Sub
Nick = Replace (Nick, "[", "\[")
Nick = Replace (Nick, "]", "\]")
DeleteINIString "Users", Nick, ini_user
End Sub
Sub Part(Chan, Nick, RegUser, Flags)
If Not LCase(Chan) = akt_chan Then Exit Sub
Nick = Replace (Nick, "[", "\[")
Nick = Replace (Nick, "]", "\]")
DeleteINIString "Users", Nick, ini_user
End Sub
Sub Op(Chan, Nick, RegUser, Flags, ONick, OUser, OFlags, RemovedOp)
If Not LCase(Chan) = akt_chan Then Exit Sub
Nick = Replace (Nick, "[", "\[")
Nick = Replace (Nick, "]", "\]")
ONick = Replace (ONick, "[", "\[")
ONick = Replace (ONick, "]", "\]")
WriteINIString "Users", ONick, "o=" & Date & " " & Time & "=" & "<i>OP von " & Nick & " bekommen</i>", ini_user
If IsOp(Nick, akt_chan) Then
WriteINIString "Users", Nick, "o=" & Date & " " & Time & "=" & "<i>" & ONick & " OP gegeben</i>", ini_user
Else
WriteINIString "Users", Nick, "1=" & Date & " " & Time & "=" & "<i>" & ONick & " OP gegeben</i>", ini_user
End If
End Sub
Sub DeOp(Chan, Nick, RegUser, Flags, DNick, DUser, DFlags, RemovedOp)
If Not LCase(Chan) = akt_chan Then Exit Sub
Nick = Replace (Nick, "[", "\[")
Nick = Replace (Nick, "]", "\]")
DNick = Replace (DNick, "[", "\[")
DNick = Replace (DNick, "]", "\]")
WriteINIString "Users", DNick, "1=" & Date & " " & Time & "=" & "<i>wurde von " & Nick & " OP genommen</i>", ini_user
If IsOp(Nick, akt_chan) Then
WriteINIString "Users", Nick, "o=" & Date & " " & Time & "=" & "<i>hat " & DNick & " OP genommen</i>", ini_user
Else
WriteINIString "Users", Nick, "1=" & Date & " " & Time & "=" & "<i>hat " & DNick & " OP genommen</i>", ini_user
End If
End Sub
Sub Ban(Nick, RegUser, Chan, HMask)
If Not LCase(Chan) = akt_chan Then Exit Sub
WriteINIString "Ban", Hmask, Nick & "=" & Date & " " & Time, ini_bans
End Sub
Sub UnBan(Nick, RegUser, Chan, HMask)
If Not LCase(Chan) = akt_chan Then Exit Sub
DeleteINIString "Ban", Hmask, ini_bans
End Sub
Sub Topic(Chan, Nick, RegUser, Flags, Line)
If Not LCase(Chan) = akt_chan Then Exit Sub
WriteINIString "Topic", "Topic", Nick & "=" & Date & " " & Time & "=" & Line, ini_sonstig
End Sub
--- irc_users.php ---
Zitat:<?php
/* Bitte ändern */
$ini_user = "C:\\AnGeL\\onlineusers_users.ini";
$ini_bans = "C:\\AnGeL\\onlineusers_bans.ini";
$ini_sonstig = "C:\\AnGeL\\onlineusers_sonstiges.ini";
$colours = true;
$opcolor = "red";
/* Ab hier bitte nichts mehr ändern */
// Funktionen
function Onlineusers_colours($line) {
$line = ereg_replace("(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15),10", "<span style=\"background-color: #009999\">", $line);
$line = ereg_replace("(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15),11", "<span style=\"background-color: #00FFFF\">", $line);
$line = ereg_replace("(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15),12", "<span style=\"background-color: #3300cc\">", $line);
$line = ereg_replace("(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15),13", "<span style=\"background-color: #FF3399\">", $line);
$line = ereg_replace("(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15),14", "<span style=\"background-color: #666666\">", $line);
$line = ereg_replace("(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15),15", "<span style=\"background-color: #dddddd\">", $line);
$line = ereg_replace("(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15),0", "<span style=\"background-color: #FFFFFF\">", $line);
$line = ereg_replace("(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15),1", "<span style=\"background-color: #000000\">", $line);
$line = ereg_replace("(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15),2", "<span style=\"background-color: #000000\">", $line);
$line = ereg_replace("(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15),3", "<span style=\"background-color: #006600\">", $line);
$line = ereg_replace("(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15),4", "<span style=\"background-color: #FF0033\">", $line);
$line = ereg_replace("(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15),5", "<span style=\"background-color: #990000\">", $line);
$line = ereg_replace("(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15),6", "<span style=\"background-color: #660099\">", $line);
$line = ereg_replace("(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15),7", "<span style=\"background-color: #FF9900\">", $line);
$line = ereg_replace("(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15),8", "<span style=\"background-color: #FFFF00\">", $line);
$line = ereg_replace("(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15),9", "<span style=\"background-color: #33FF00\">", $line);
$line = ereg_replace("(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15),8", "<span style=\"background-color: #FFFF00\">", $line);
$line = str_replace("10", "<font color=\"#009999\">", $line);
$line = str_replace("11", "<font color=\"#00FFFF\">", $line);
$line = str_replace("12", "<font color=\"#3300cc\">", $line);
$line = str_replace("13", "<font color=\"#FF3399\">", $line);
$line = str_replace("14", "<font color=\"#666666\">", $line);
$line = str_replace("15", "<font color=\"#dddddd\">", $line);
$line = str_replace("0", "<font color=\"#FFFFFF\">", $line);
$line = str_replace("1", "<font color=\"#000000\">", $line);
$line = str_replace("2", "<font color=\"#000000\">", $line);
$line = str_replace("3", "<font color=\"#006600\">", $line);
$line = str_replace("4", "<font color=\"#FF0033\">", $line);
$line = str_replace("5", "<font color=\"#990000\">", $line);
$line = str_replace("6", "<font color=\"#660099\">", $line);
$line = str_replace("7", "<font color=\"#FF9900\">", $line);
$line = str_replace("8", "<font color=\"#FFFF00\">", $line);
$line = str_replace("9", "<font color=\"#33FF00\">", $line);
$line = str_replace("", "</font></span>", $line);
$line = str_replace("", "", $line);
$line = str_replace("", "", $line);
return($line);
}
// Sonstiges
if (!is_file($ini_sonstig)) {
echo "<font color=\"red\">Die Datei <i>\"" . $ini_sonstig . "</i>\" wurde nicht gefunden. Bitte überprüfen sie den Pfad.</font><br>\n";
} else {
$fo = fopen($ini_sonstig, "r");
while($sonstig = fgets($fo)) {
$sonstig = explode("=", $sonstig);
if (!isset($sonstig[1])) {
continue;
}
if ($sonstig[0] == "Chan") {
$chan = $sonstig[1];
}
if ($sonstig[0] == "Topic") {
$topic_nick = $sonstig[1];
$topic_time = $sonstig[2];
$topic_line = "";
$count = count($sonstig) -1;
for ($a=3;$a<=$count;$a++) {
if ($a != 3) {
$topic_line .= "=" . $sonstig[$a];
} else {
$topic_line .= $sonstig[$a];
}
}
}
}
fclose($fo);
if ($colours) {
$topic_line = Onlineusers_colours($topic_line);
echo "Channel: <b>" . $chan . "</b><br>\n";
echo "Topic: " . $topic_line . "<br>\n";
echo "</b></font><font color=\"black\">";
} else {
echo "Channel: <b>" . $chan . "</b><br>\n";
echo "Topic: " . $topic_line . "<br>\n";
}
if ($topic_nick != "n/a" && $topic_time != "n/a") {
echo "Topic gesetzt von <b>" . $topic_nick . "</b> am " . $topic_time . ".<br>\n";
}
}
// Online-Users
if (!is_file($ini_user)) {
echo "<font color=\"red\">Die Datei <i>\"" . $ini_user . "</i>\" wurde nicht gefunden. Bitte überprüfen sie den Pfad. Es kann sein das die Datei erst nach dem nächsten Join, Part, Quit oder Kick angelegt wird.</font><br>\n";
} else {
$ausgabe = "";
$opausgabe = "";
$fo = fopen($ini_user, "r");
while($user = fgets($fo)) {
$user = explode("=", $user);
$user[0] = str_replace("\\[", "[", $user[0]);
$user[0] = str_replace("\\]", "]", $user[0]);
$user[3] = str_replace("\\[", "[", $user[3]);
$user[3] = str_replace("\\]", "]", $user[3]);
if (!isset($user[1]) && !isset($user[2])) {
continue;
}
if (!isset($user[1])) {
$user[1] = "<i>Keine Daten verfügbar</i>";
}
if (!isset($user[2])) {
$user[2] = "<i>Keine Daten verfügbar</i>";
}
if ($user[1] == "1") {
$ausgabe[] = $user[0] . "=" . $user[2] . "=" . $user[3];
} elseif ($user[1] == "o") {
$opausgabe[] = $user[0] . "=" . $user[2] . "=" . $user[3];
}
}
fclose($fo);
if (empty($ausgabe)) {
$ausgabe = array();
}
if (empty($opausgabe)) {
$opausgabe = array();
}
natcasesort($ausgabe);
natcasesort($opausgabe);
echo "<p><font color=\"blue\"><b>User online</b></font></p>";
echo "<table border=\"1\">\n";
echo "<tr><th>Nick</th><th>Letzte Aktivität</th><th>Zuletzt geschrieben</th></tr>\n";
foreach($opausgabe as $key=>$value) {
$value = explode("=", $value);
$nick = $value[0];
$time = $value[1];
$time = str_replace(" ", "=", $time);
$time = str_replace(".", "=", $time);
$time = str_replace(":", "=", $time);
$time = explode("=", $time);
$time = mktime($time[3], $time[4], $time[5], $time[1], $time[0], $time[2]);
$time = time() - $time;
$time = date("i^s", $time);
$time = str_replace("^", " Minuten ", $time);
$time = $time . " Sekunden";
$line = $value[2];
$line = str_replace("\\\\", "\\", $line);
$line = str_replace("\\:gleich:", "=", $line);
if ($colours) {
$line = Onlineusers_colours($line);
}
echo "<tr><td><font color=\"" . $opcolor . "\">" . $nick . "</td><td>" . $value[1] . " (vor " . $time . ")</td><td>" . $line . "</td></tr>\n";
}
foreach($ausgabe as $key=>$value) {
$value = explode("=", $value);
$time = $value[1];
$time = str_replace(" ", "=", $time);
$time = str_replace(".", "=", $time);
$time = str_replace(":", "=", $time);
$time = explode("=", $time);
$time = mktime($time[3], $time[4], $time[5], $time[1], $time[0], $time[2]);
$time = time() - $time;
$time = date("i^s", $time);
$time = str_replace("^", " Minuten ", $time);
$time = $time . " Sekunden";
$line = $value[2];
$line = str_replace("\\\\", "\\", $line);
$line = str_replace("\\:gleich:", "=", $line);
if ($colours) {
$line = Onlineusers_colours($line);
}
echo "<tr><td>" . $value[0] . "</td><td>" . $value[1] . " (vor " . $time . ")</td><td>" . $line . "</td></tr>\n";
}
echo "</table>";
}
// Bans
if (!is_file($ini_bans)) {
echo "<font color=\"red\">Die Datei <i>\"" . $ini_bans . "</i>\" wurde nicht gefunden. Bitte überprüfen sie den Pfad. Es kann sein das die Datei erst nach dem nächsten Ban oder UnBan angelegt wird.</font><br>\n";
} else {
$banausgabe = "";
$fo = fopen($ini_bans, "r");
while($ban = fgets($fo)) {
$ban = explode("=", $ban);
if (!isset($ban[1])) {
continue;
}
$banausgabe .= "<tr><td>" . $ban[0] . "</td><td>" . $ban[1] . "</td><td>" . $ban[2] . "</td></tr>\n";
}
fclose($fo);
echo "<p><font color=\"blue\"><b>Bans</b></font></p>";
echo "<table border=\"1\">\n";
echo "<tr><th>Hostmask</th><th>gebanned von</th><th>gebanned um</th></tr>\n";
if (empty($banausgabe)) {
echo "<tr><td colspan=\"3\" align=\"center\"><i>Keine Bans</i></td></tr>\n";
} else {
echo $banausgabe;
}
echo "</table>";
}
?>
Sry das der Code so lange geworden ist.
