AnGelBot-Portal²

Normale Version: Ausgabe der User/Bans auf einer Website v1.03 by LukasHetzi
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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 Cool

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.
Hm, wäre schön wenn du dein Topic wie die anderen nennst, also
Scriptname Version Author
Dann behält man mehr die Übersicht. Sonst wird das hier genau sowas wie die anderen Foren und dafür wars net gedacht. THX
sry, ich hab es schon geändert
Irre ich mich, oder hast du den Webserver @Home laufen? Weil die Geschwindigkeit ist nicht grade berauschend. Ich habe irgendwo gelesen, dass der Sever nicht immer verfügbar ist. Wäre schön, wenn du die Scripts direkt hier im Forum mit der Code-Funktion posten könntest.
Am besten du editierst dazu deinen ersten Beitrag.

Vielen Dank Smile

sts
Hiho.. sowas hab ich gesucht..

leider scheint dein Server dauerdown zu sein, oder ich bin immer zu den falschen Uhrzeiten unterwegs..

Wenn du das Skript hier quoten könntest wäre das sau cool, bzw. ne Anleitung zur PHP, oder eben du schreibst wann der Server wieder tut..

Thnx und greetings...
Markus
Der Server ist leider immernoch down Confused

Hat jemand das script evtl. schon in die Finger bekommen?
ich wollte es mir grade downloaden und da kommt :

Code:
Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'localhost' (10061) in C:\apachefriends\xampp\htdocs\_borders\top.php on line 15
Datenbankserver nicht erreichbar

Kannst du das auch mal posten lukas_hetzki ?
Hallo Leute,

ich hab im Internet nen Server gefunden, der ihm wohl auch gehört, bzw. eine Webseite.. Hab ihm eine höfliche email getippelt, dass er sein Script und die PHP doch bitte hier posten möge (direktlink ins Portal war bei der email dabei)...

Ich bin ja echt am HOFFEN...


====> Lukas ist wirklich schnell.. 5 Minuten nach der email und der Code steht hier im Protal.. KLASSE !!!!

Grüßle,
Markus
Ich wäre auch sehr an soeinem Script interessiert.
Mein Problem ist aber, dass mein AnGeL-Bot auf einem Windows Server und meine Homepage auf einem Linux Server laufen.
Kennt einer von euch da ne möglichkeit ?
Danke im vorraus.
Hallo,

ich habe es noch nicht versucht, aber wenn du vom Linux-Server Zugriff auf die Dateien des Windows-Server hast dürfte es kein Problem sein.

Wenn du auch einen ftpd laufen hast könnte man versuchen die Dateien über FTP zum Linux-Server zu übertragen (aber ich weiss nicht wie weit dies mit den AngelBot-Scripts möglich ist).
Seiten: 1 2
Referenz-URLs