archilles scriptworld Forum

» Startseite
  » Support-Foren
      » Häufig gestellte Fragen (FAQ)
          · FAQ: Talkboard Forum 2 (19.08.2008)

Seite: 1

FAQ: Talkboard Forum 2 (19.08.2008) Archilles
tbf_graphic_sdk.zip (68.7 KiB)
tbf_coredoc_210.zip (291.4 KiB)
Version 27 - 19. August 2008 14:30:00 CEST

Diese FAQ richtet sich hauptsächlich an Webmaster, die das TBF2 auf ihrer Seite einsetzen. Ergänzungen, Fehler oder anderes wie gewohnt bitte per Mail, PN oder als Beitrag hier im Forum :-)

Wer sie herunterladen möchte, kann dies im Forum machen, indem er die Druckansicht nutzt. Das eignet sich dann gut zum Druck oder PDF-Export.

Solltest du diese Übersicht auf der scriptworld sehen und nicht im Forum, führen dich die folgenden Links nicht zum gewünschten Eintrag. Bitte in der rechten Leiste auf "FAQ" klicken. Danke!

Letzte Änderung
- Auf letzten Stand für 2.1.4 gebracht

1. Allgemeine Fragen zum TBF2

2. Installation, Update und Konvertierung

3. Erste Schritte

4. TBF für Fortgeschrittene

5. Erste Hilfe bei häufigen Fehlern

6. Sonstiges und eigene Erweiterungen


next_index: 48

Fortsetzung TBF2 FAQ p1 Archilles
Der Installer erkennt mein Betriebssystem nicht korrekt und ich sollte hier in der FAQ nachschauen...

Naja, dann bist du ein seltener Fall. Öffne die tbf_core.inc.php in einem Editor und suche nach der Zeichenkette "OS"=>"AUTO". Setze diesen nun entsprechend auf den Wert, der im Kommentar dahinter erklärt wird. "PATH_SPLIT", sofern vorhanden, darunter auch.

Nach einem Update ist das zu wiederholen. Ich denke aber, daß dies selten geworden ist, da diese Erkennung mittlerweile (2.1.x) recht zuverlässig funktioniert.

Was wird alles von 1.x konvertiert?

  • Anfragen (Requests) 50%
    Dateiformat ist für neue Automatik nicht kompatibel. Müssen über die Adminoberfläche manuell abgearbeitet werden.

  • Beiträge 95%
    Alle Beiträge inkl. Anhänge werden 100% übernommen. Kleinere Fehler durch den neuen Parser (Verarbeitung der Texte) möglich. Dies betrifft vor allem sehr alte Beiträge aus der TBF-1.3/1.4-Zeit.

  • Benutzer 95%
    Die Benutzereinstellungen werden fast vollständig übernommen. Die wenigen Ausnahmen wird niemand merken und einfach neu einstellen. Muß er ja sowieso, da einige Optionen dazugekommen sind.

  • Bookmarks 100%
    Diese werden vollständig in das neue Format eingewoben.

  • Favoriten 100%
    Favoriten werden komplett übernommen, nur die Abo-Zeit wird auf die aktuelle Zeit bei der Konvertierung gestellt. Das bedeutet, daß die Benachrichtiung per E-Mail erst nach einem Login wieder korrekt arbeitet.

  • Foren 95%
    Jedes Forum wird mit allen Einstellungen übernommen. Die Pro-Thread Rechte der Benutzer gehen jedoch verloren. Einstellung für "Gast" wird übernommen.

  • Gruppen 100%
    Die maximal vorhandenen neun Gruppen werden komplett übertragen; mit allen vorherigen Rechten.

  • Hilfe 80%
    Fast vollständig übertragbar. Hier und da ein paar Probleme mit den Texten.

  • Kategorien 100%
    Die Kategorien sind vollständig übertragbar.

  • Konfiguration 0%
    Diese wird verworfen. Sollte aber kein Problem sein, da man es nach der Konvertierung eh nochmal prüfen sollte.

  • Priv. Nachrichten 90%
    Alle Nachrichten werden umformatiert und im Posteingang platziert. Das Format wird so gut es geht auf das neue umgestellt. Kleinere Text-Fehler sind möglich.

  • Ränge 100%
    Die Rang-Einstellungen können vollständig konvertiert werden.

  • Sessions 0%
    Bisherige Sessions werden ebenfalls verworfen, da das neue Format deutlich anders ist. Ich halte das für relativ verschmerzbar.

  • Smilies 100%
    Smilies werden komplett übertragen, solange man die Bilddateien (nach /usr/gfx/smilies) kopiert.

  • Template 0%
    Die Templates (ansich) sind inkompatibel und die Einstellungen derer werden verworfen. Seit Version 2.0.2 kannst Du das Template "ice" nutzen, was das alte Standardaussehen weitesgehend übernimmt.

  • Umfragen 100%
    Umfragen werden komplett übernommen; mit allen Eigenschaften.

  • Umfrage-Logs 100%
    Auch die bisherigen Logs davon können weiterbenutzt werden. Die IP-Timestamps werden in das neue Floodsystem ("Votelog")integriert.

  • Virt. Verknüpfungen 100%
    Vollständig übertragbar.

  • Wortfilter 100%
    Auch dieses Feature ist komplett transferierbar.

  • Alte Exportdateien 0%
    Diese sind leider nicht mit dem neuen Format kompatibel. Version 2 verwendet nun XML, was prinzipiell jedes andere Board auch lesen kann.

  • Alte Logdateien 0%
    Für die neue Version nicht relevant. Können aber selbstverständlich archiviert werden ;)

  • Banning-Listen 0%
    Banning-Einstellungen sind nicht übertragbar. Schreibe Sie diese also bitte vorher auf.

  • AFS-MIME-Liste 0%
    Zwar ist die alte Liste nicht mehr nutzbar, aber es gibt eine neue. Deine alten Einstellungen kannst du hinzufügen.

  • Avatare 100%
    Die Avatare können auf Wunsch komplett übernommen werden.

Folgende Zeichen sind systemintern und geschützt

Diese werden für die interne Datenformatierung genutzt und sollten nicht in Benutzernamen oder anderen Einträgen benutzt werden, wo sie nicht vorgesehen sind. Zu diesen Zeichen zählen: @ | , : - _ # *

Ab Version 2.1.0 ist dies durch Verbesserungen der Parser etwas aufgelockert. Im Registrierungsformular werden die neuen Regeln angezeigt. Prinzipiell sind alle Zeichen in ISO-8859-1 möglich bis auf die genannten Ausnahmen und alle Steuerzeichen am Anfang (x00-x1f).

Einige Sachen, die noch nicht dokumentiert sind oder ein paar Kniffe gegen kleinere Fehler...

  • Die gd-Routinen, die das Bild der "Erweiterten Registrierung" erzeugen, können auch mit einer TrueType-Schrift gefüttert werden. Ab Version 2.0.3 übernimmt das die mitgelieferte Datei /usr/captcha.ttf. Bei deinem Betriebssystem sind welche dabei und eine davon ist nach /usr zu kopieren. Diese wird automatisch erkannt und benutzt. Unter Windows findet sich dies im Windows-Ordner im Verzeichnis "fonts" und haben die Dateiendung "ttf". Bei Linux ist das unterschiedlich. In der Regel wird man in den Konfigurationsdateien unter "/etc/X11/xorg.conf" fündig, wo die Pfade für die TTFs liegen.

  • Mit "HTTP_GET" in den Administration\Cronjobs (ab 2.0.0 RC2) läßt sich das Wartungssystem (ext_socket.php) auch anstossen. Dies ermöglicht regelmäßige Wartungen und benötigt nicht mehr Unterstützung des Betriebssystems. Dazu trägt man hinter dem "HTTP_GET#" folgendes ein (ohne die folgenden Zeilenumbrüche, ab 2.1.0 , statt #):
    Quelltext:
    ============================================================
    http://www.deinedomain.de/
    pfadzumforum/ext_socket.php?
    user=[Wartungsbenutzername]&pwd=[Das Passwort als MD5-Hash]&trigger=[Modulname]

    Den Passwort-Hash kannst du aus der Datenbank fischen, indem du in Administration\Datenbankverwaltung das Feld "SELECT * FROM tbf2_config" anklickst. Im Feld "board_maintenance" findet sich UID und Passwort. Welches Modul du nehmen mußt, erfährst du, wenn du oberhalb auf "Wartung durchführen" klickst und sich ein neues Fenster öffnet (im übrigen steht das Passwort dann auch in der Browser-URL). Für "trigger" ist dann das passende Modul einzutragen, wie "THREAD_DATA" oder "LONELY_POSTINGS".

  • Eine Datei mit dem Namen /usr/index_head_text.txt wird, falls vorhanden, eingelesen und am Anfang der Forum-Startseite gezeigt.

  • Eigene Absenderadressen können ab Version 2.1.0 unter Administration\E-Mail System eingesetzt werden. Dafür wird die /usr/mail_system_sender.txt angelegt. Das Format für eigene Absender lautet "Name,E-Mail". Mehrere werden mit einem Zeilenumbruch getrennt.

  • Neben den eigenen Formatierungen, die man mit dem Style-Tag in einem Text angeben kann, werden seit 2.1.1 "globale" CSS-Klassen verarbeitet. Dazu speicherst du die Datei /usr/user.css, wo du deine CSS-Klassen mit dem Präfix "tbf_globalclass__" ablegst. Mittels (style=globald::NAME) kannst du diese dann ansprechen. Die FAQ hier wird zum Beispiel so formatiert. Kannst es gerne im Seitenquellcode anschauen und hier ist die CSS: http://forum.kh-webcenter.de/usr/user.css

Wie aktiviere ich den Debug-Modus?

In älteren Versionen (2.0.0 Beta bis RC1) wird dafür eine Konstante in der tbf_core.inc.php auf "true" gestellt. Diese findet sich ganz oben und heißt "USE_DEBUG_PORT". Ab 2.0.0 RC2 ist dies unter Administration\Konfiguration zu finden. Es handelt sich nun um einen Wert in $RAW - der "Roh-Konfiguration". Ab 2.0.0 RC3 befindet sich der Wert nun endgültig in der Haupt-Kondiguration mit dem Feldnamen "TBF_CONFIG_MAIN". Der entsprechende XML-Eintrag lautet "SECURITY/ENABLE_DEBUGGING_PORT".

Benutzen kann man diesen Debug-Modus auf jeder Seite, indem man ein "&DEBUG=1" an die URL im Adressfeld anhängt; zum Beispiel "board.php?action=forum&fid=1&DEBUG=1". Ist dort nur ein Dateiname, muß man den GET-Querystring selber mit einem ? beginnen. So zum Beispiel: "index.php?DEBUG=1". Hier klappt "index.php&DEBUG=1" nicht. Es gibt noch einen zweiten Debugmodus, den "Verbose Mode". Dort zeigt das Forum, was es genau erledigt. Für die meisten Anzeigen benötigt man jedoch Administrations-Rechte. Das funktioniert analog zum Debug-Mode, nur heißt es hier "VERBOSE=1". Ab 2.0.0 RC2 kann man den in der Konfiguration für Testzwecke auch dauerhaft aktivieren. Beide lassen sich kombinieren, indem man "DEBUG=1&VERBOSE=1" schreibt.

Seit Version 2.1.1 ersatzlos gestrichen. Es existiert nur noch die Konstante __TBF_DEVELOPER_MODE in tbf_core.inc.php. Im Debugmode (DEBUG=1 per URL, siehe oben) werden jene Infos in einen Puffer geschrieben und können ggf. angezeigt werden.

Was sind Cron-Jobs?

Cron-Jobs stammen aus der UNIX-Welt und führen bestimmte Aktionen (Skripte) regelmäßig zu festen Zeiten aus. Dies ist ähnlich unter Windows den "Geplanten Tasks". Normalerweise kümmert sich ein Daemon (ein Programm im Hintergrund) darum, daß solche ausgeführt werden. Die meisten Hoster erlauben dies aus guten Gründen nicht, sodaß eine kleine Ersatzlösung für das Forum her muß. Das "kleine" Cronsystem speichert den Zeitpunkt der letzten Ausführung und eine Zeitspanne, wann es das nächstemal so weit ist. Dies reduizert die Systemlast und funktioniert auch. Man kann eigene Aufträge definieren wie Skripte ausführen, HTTP-GET Anfragen senden und einiges mehr. Es ist auch möglich eigene Crondateien zu erstellen und einzubinden. So lassen sich die verschiedensten Aufgaben erledigen; ggf. auch solche, die nichts mit dem Forum zu tun haben :-)

Ich finde hier viele Features von anderen Foren...

Ich treibe mich auch in Foren herum; meist nur lesend. Und da kommt mir die eine oder andere Idee, was ich besser finden würde. Die baue ich dann in mein Forum ein. Manchmal kommen auch Bitten von anderen, was sie gerne hätten. Sofern ich das realisieren kann, baue ich das genauso ein. Viele Dinge sind einfach selbstverständlich für jedes Forum und gehört einfach dazu, wie Benchrichtigungen, Profile oder Smilies.

Das ein oder andere erinnert natürlich an Lösungen aus anderen Foren. Viele schaue ich mir auch an - die bekannten wie auch relativ unbekannte. Manches, was mir gefällt, übernehme ich. In der Regel nur die Idee, keine Zeile Quellcode. Ein paar Ideen habe ich weitergedacht und später entdeckt, daß andere das bereits in der Zwischenzeit realisiert haben. Das sorgt dann immer für Überraschung meinerseits. Dazu zählt zum Beispiel das Cronsystem oder die Mail-Warteschlange. Anderes lasse ich bewußt weg, weil ich es schlicht für überflüssig oder überladen halte. Das TBF ist ja "mein" Forum und wenn ich ein anderes 1:1 kopieren wollte, dann würde ich deren Source nehmen, einen anderen Namen verpassen und fertig ;-)

Ich kann nur meinen Projekttext zitieren: "Das Talkboard Forum versucht die guten Eigenschaften von den besten Foren mit neuen Ideen zu verschmelzen."

Das Forum ist fett und langsam geworden!

Es ist zumindest umfangreicher als die alte 1.x-Version und benötigt im Verhältnis zu seinen Funktionen weniger Quellcode. Desweiteren brauchen viele Zusammenstellungen nun weniger Speicher. Funktionen werden nur bei Bedarf nachgeladen. Diese Flexibilität erkauft man jedoch mit etwas längeren Ausführzeiten und höheren I/O für die Festplatte - wobei letzteres meist doch noch aus dem Systemcache kommt. Im Laufe der Zeit werden sich noch ein paar Optimierungen finden lassen. Wenn du mit der Geschwindigkeit nicht zufrieden bist, lege selber Hand an (wäre dir dann dankbar, wenn du mir deine Verbesserungen schicken würdest, damit alle etwas davon haben) oder benutze ein anderes Forumsystem :-)

Der Quellcode ist chaotisch!

Das mag sein. Jeder hat da seine andere Meinung. Fakt ist: Programmieren habe ich weitesgehend selber gelernt, also auch meinen eigenen Stil gefunden. Jaja, gestandene Programmierer "richtiger" Sprachen lächeln über Skriptsprachen und sagen, daß sei kein Programmieren. Bitte, deren Meinung (probiert mal Brainfuck :fies:). Was mir bei anderen gefällt, habe ich übernommen. Wenn ich mir heute meine älteren Projekte anschaue, merke ich doch den Fortschritt. Zum Beispiel hasse ich Einrückungen mit Tabulator. Macht man das drei- oder viermal hat man am Besten eine Grafikkarte mit zwei Ausgängen samt zweitem Monitor. Oder manche schreiben keinen Kommentar. Pures Gift für Einsteiger oder Programme, die veröffentlicht werden. Die paar Mikrosekunden, die man da beim Parsen spart. Funktionen werden tausendfach verschaltelt, damit sie nicht ja über eine Bildschirmseite gehen. Kurze, nichts sagende Variablennamen. Ich gebe zu manches, was seltsam für mich aussieht, hat vielleicht seinen Sinn. Häufig programmiert man ja im Team, womit ich keine Erfahrung habe.

Was bedeutet "Zeiten sind +1 GMT"?

"GMT" steht für "Greenwich Means Time" und stellt den "Nullpunkt" der Uhrzeit auf der Erde dar. Er verläuft durch den Längengrad 0° in Greenwich/England. Da es ja nicht überall zur selben Zeit Tag und Nacht ist, gibt es rund um den Globus Zeitkorrekturen, die "Zeitzonen". Das Forum speichert alle Uhrzeiten, die du sehen kannst, auf GMT umgerechnet ab. +1 bedeutet, daß eine Stunde addiert wird. Würdest du hier aus Deutschland kommend einen Beitrag lesen, den jemand in Australien zu "seiner" Zeit geschrieben hätte, dann käme er für dich ohne die Korrektur durch das Forum quasi aus der Zukunft. In deinem Profil kannst du deine Zeitzone einstellen. Für die Interessierten: Intern wird das mit einem "Unix-Timestamp" gemacht. Das ist eine 32-bit Integerzahl mit Vorzeichen, die jede Sekunde um eins erhöht wird. Gemessen wird seit dem 1. Januar 1970 und der Zahlenraum reicht noch bis zum frühen Morgen des 19. Januar 2038. Danach benötigt man eine größere Zahl, um weiter zu zählen. Mit einer 64-bit Zahl genügt das dann für 290 Mrd. Jahre - lange genug :-D

Was ist der "Wiki-Modus" für Themen?

Wenn sich ein Thema im Wiki-Modus befindet, dann darf der Inhalt nach dem Senden von jedem geändert werden. Neue Beiträge von anderen werden mit einem Vermerk an den bisherigen Text angehangen. Ein Moderator kann dann die Texte bei Bedarf zusammenfügen. Das ganze ist an die Wikis im Internet angelehnt, die ähnlich funktionieren. Beispielsweise gibt es Lexika oder der Support läuft über solche Wikis, wo jeder beisteuern kann.

Nach der Konvertierung kann ich nicht nach den letzten Antworten in der Forenübersicht sortieren!

Bitte führe eine Synchronisation deiner Datenbank aus. Dies kannst du über deine Administrationskonsole im Bereich Konfiguration/Datenbank-Verwaltung tun. Dort gibt es ein Formular für die Wartung. Dort wählst du die Option "THREAD_DATA". Danach sollte es dann klappen.

Nach der Konvertierung sehe ich auf der Startseite keine Beiträge, obwohl welche da sind!

Das ist kein Fehler. Ab 2.0.0 RC3 wird die Anzahl der Beiträge pro Forum und die ID des letzten Beitrages direkt in der Datenbank abgelegt. Einer der Cron-Jobs kümmert sich um die Aktualisierung. Standardmäßig läuft dieser alle drei Stunden. Nach dieser Zeit sollten dann die korrekten Werte auftauchen oder du gehst in die Administration und führst ihn direkt aus.

embedded image

Was ist eine "Virtuelle Verknüpfung"?

Damit lassen sich mehrere Themen zum ähnlichen Thema von Moderatoren verknüpfen. Diese erscheinen dann als Links über einem Beitrag, wo man weiterlesen kann. Das benötigt natürlich die Pflege der Moderatoren. Ein automatisches System, was andere Foren anbieten, geht mir zu sehr auf den Server. Außerdem sind solche Automatismen nicht immer treffsicher. Lieber Klasse statt Masse.

Was sollen die verschiedenen Themen-Ansichten "flat" und "threaded"?

Mit diesen zwei Optionen kann man bestimmen in welchem Format man die Themen lesen möchte. Das Forum merkt sich die Einstellung auch für das nächste Thema und läßt sich jederzeit ändern. Am einfachsten ist "flat". Dort werden alle Beiträge hintereinander gehängt, so wie sie eingetragen wurden. Das ist zwar sehr übersichtlich, aber bei längeren Themen, wenn verschiedene Leute diskutieren, könnte es unübersichtlich werden, wenn man dem "roten Faden" nicht folgen kann. Dagegen hilft die Einstellung "threaded". Hier werden die Beiträge, die man auf jemandem antwortet, zugeordnet. Dies macht man mit der Option "Antwort mit Zitat". So werden verschiedene "rote Fäden" aneinander gehangen und man sieht, wer mit wem diskutiert. Der Nachteil ist, daß man immer nur einen Beitrag sieht und es bei längeren Themen die Klickerei ziemlich müßig wird.

Beides zu vereinen versucht die Ansichtsweise "nested" (in späteren TBF 2.0.x-Versionen wegen diverser Schwierigkeiten entfernt). Dort werden alle Beiträge wie bei "flat" aufgelistet, nur ihr "roter Faden" wird durch Extra-Einrückungen der Beiträge honoriert. So dürfte man auch bei langen Diskussionen die Übersicht nicht verlieren.

Fortsetzung TBF2 FAQ p2 Archilles
Was bedeutet "Gast-Recht" oder "Benutzer-Recht"?

Jedes Forum-Mitglied erhält eine Gruppe zugewiesen. Von denen gibt es bereits bei der Installation fünf und jede hat unterschiedliche Rechte auf dem Forum. Das Mitglied "erbt" automatisch die Rechte der Gruppe und natürlich auch alle anderen Mitglieder. Es gibt es fünf Haupt-Rechte: Gast, Benutzer, Moderator, Super-Moderator und Administrator. Jedes Recht, ich nenne es Gruppen-Recht, deckt nur einen Teilbereich des gesamt verfügbaren ab. So darf ein Gast nur sehr begrenzt im Forum agieren, während ein Administrator volle Rechte erhält. Die Gruppen-Rechte sind aber nicht kumulativ, das heißt ein höheres Recht schließt nicht automatisch alle niedrigen ein. Die einzige Ausnahme ist der Super-Moderator. Dies erlaubt auch ohne Moderator-Rechte der Gruppe (und seine Mitglieder) jedes Forum zu moderieren. So läßt sich zum Beispiel den Administratoren die Moderator-Rechte entziehen und sie können "nur" noch administrieren, aber nicht mehr moderieren. Ich lasse dir noch ein paar Ratschläge zukommen:
  • Verteile niemals mehr Rechte als die Gruppe benötigt.

  • Nur weil jemand Administrator angehört bedeutet das nicht, daß er keine Benutzer-Rechte braucht. Wie ich sagte, sind sie nicht kumulativ, sondern isoliert und füllen nur ihren Wirkungsbereich aus.

  • Erstelle ruhig neue Gruppen, wenn du feinere Rechte brauchst.

  • Ich rate dir nur der Gruppe Gast die Gast-Rechte einzuräumen. Alle anderen benötigen das nicht.


Ich verstehe die "Zugriffsverwaltung" nicht!

In dem Moment, wo du diesen Beitrag liest, führst du eine Aktion im Forum aus. Werfe einen Blick in deine Browser-Addresszeile. Dort siehst du einen Teil, der so aussehen dürfte: "board.php?action=topic". Dies enthält gleich zwei Informationen für das Zugriffssystem des Forums, das mit definierten Regeln arbeitet. Dazu später mehr.

Jeder Regelsatz ist eine Access Control List, wobei jeder Eintrag darin ein Access Control Entry darstellt - mit Komma getrennt. Der einzelne ACE hat einen sogenannten Property und ein Value (Name-Wert-Paar). Beide sind mit einem Doppelpunkt getrennt. Das erste ist eine der gleich folgenden Angaben und die zweite sind dann die zugeteilten Rechte. Im Endeffekt können vom Zugriffssystem nur zwei Stadien ausgegeben werden. Entweder wird der Zugriff erlaubt (ACCEPT) oder er wird verweigert (DENY/DROP). Grundsätzlich ist der Zugriff erstmal verboten. Dabei werden die Regeln so abgearbeitet wie sie erscheinen. Lediglich die ACE selber werden automatisch sortiert, daß Gruppenrechte Priorität gegenüber den exklusiven Benutzerrechten haben. Selbst wenn ein User mit seiner Gruppe Zugriff hat, kann er immernoch explizit verboten werden. Die beiden genannten Teilinformationen aus der Browser-Adresszeile spielen da eine große Rolle.

Die eine stellt den Skriptnamen dar und ist der Dateiname mit der Endung "php"; in diesem Fall "board.php". Somit weiß das System, daß es nur Regeln dieser Datei betreffend bearbeiten soll. Nun kann diese PHP-Datei mehrere Forumaktionen beinhalten. "board.php" sorgt zum Beispiel auch für das Schreiben von Beiträgen. Jedesmal kommt dafür jedoch eine andere Aktion zum Einsatz. Das ist der Part, den Du hinter "action" finden kannst; hier "topic". Mit beiden Angaben kann das System nun nachschauen, ob du für diese Aktion Zugriff besitzt oder nicht. Somit erlaubt das System eine sehr feine Rechtevergabe, was jemand darf und was nicht.
  • @GID = Diese Regel gilt für die geforderte Gruppe. Hier kann man die numerische GID, aber auch deren Name (ab 2.1.0 nicht mehr) angeben.

  • _xxx = Man benötigt für den Zugriff bestimmte Gruppen-Rechte. Dazu zählen Gast (_GUEST), Benutzer (_USER), Moderator (_MOD), Super-Moderator (_SMOD) oder Administrator (_ADMIN). Eine Ausnahme ist hier _ROOT, der root-Administrator, den ich später noch erkläre.

  • (-)UID = Regel nur für diesen Benutzer, wobei man dessen UID angibt. Ein Minus davor schließt den Benutzer aus. Das ist eine "Negativ-Liste" und zählt die auf, welche nicht zugreifen dürfen. Das andere listet Benutzer, die zugreifen dürfen.

  • ALL = Allen wird Zugriff gewährt.

  • NONE = Niemand erhält Zugriff.

Beispiel:
board.php topic ALL (Alle dürfen Themen lesen)
gateway.php login _GUEST (Gäste dürfen einloggen)
admin_main.php * @5 (Gruppe 5 darf admin_main aufrufen)
guestcp.php contact @4,-foo (Gruppe 4 darf, aber "foo" nicht, auch dann nicht, wenn er zur Gruppe 4 gehört)

Ab 2.1.0 ist das System dahingehend geändert, daß für jede Aktion nur noch eine Regel gilt. Das macht das Verständnis sehr einfach und minimiert die Fehler bei der Bearbeitung (auch meinerseits). Jede Gruppe und Gruppenrechte (_USER etc.) lassen sich nun per Checkbox erlauben oder nicht. Ein direkter Kontakt mit dem ACL-Syntax findet nicht mehr statt, aber das vorher erklärte gilt natürlich noch.

Einige Aktionen im Forum werden standardmäßig (d.h. bei einer Standardinstallation) gezielt gesperrt. So ist es zum Beispiel nur Mitgliedern in einer Gruppe mit Gastrechten möglich sich zu registrieren. Eingeloggte Benutzer werden abgewiesen - die sind ja schon registriert. Dementsprechendes gilt auch für große Teile der gateway.php, welche für Login/Logout und Konto-/Passwortaktivierungen zuständig ist.


Wofür sind die verschiedene Rechte in den Foren?

Dies knüpft an der Zugriffsverwaltung an, ist aber doch ein wenig anders. Auf den Foren gibt es nur noch zwei Zugriffsklassen, anstatt drei. Einmal die Gruppen und die Benutzernamen. Jede Gruppe kann auf dem Forum unterschiedliche Rechte besitzen. Dabei läßt sich das für jedes einzelnes Forum steuern. Die Forum-Rechte können nur erteilt, aber nicht entzogen werden! Das bedeutet, wenn du einen Benutzer einschränken möchtest, mußt du seine expliziten Rechte neu angeben. Es geht nicht, daß ihm die per Gruppe zugeteilten Rechte abgespeckt werden. Nun gibt es einen ganzen Batzen an Forum-Rechten, die ich nun aufzählen möchte.
  • Ansehen (v) = Dieses steht erst ab 2.0.0 RC-2 zur Verfügung. Es teilt das kommende Lesen weiter auf. Mit erteiltem Anseh-Recht darf die Forumübersicht und deren Themen sowie letzte Antworten angesehen werden. Ohne dem ist der Zugriff auf das Forum nicht erlaubt.

  • Lesen (r) = Das Lese-Recht erlaubt es die eigentlichen Themen zu lesen. Es erteilt außerdem automatisch auch "Anseh-Recht". Generell wird dieses Recht für alle Zugriffe auf ein Forum benötigt, was nicht durch das Anseh-Recht abgedeckt wird.

  • Themen schreiben (t) = Hier wird das Schreiben von neuen Themen im Forum erlaubt.

  • Antwort schreiben (a) = Möchte man, daß geantwortet werden darf, dann benötigt man dieses Recht.

  • Editieren (e) = Mit diesem Recht wird es erlaubt, Beiträge zu ändern. Der eigene Beitrag bleibt immer eine bestimmte Zeit änderbar (ab 2.0.0 RC-2 und sofern in der Konfiguration definiert). Danach wird dieses Recht benötigt. Auch Moderatoren brauchen dies, um "fremde" Beiträge editieren zu dürfen.

  • Löschen (d) = Das Recht "fremde" Beiträge zu löschen.

  • Bewegen (m) = Beiträge in anderen Themen oder Foren zu verschieben. Auch Archivieren und Beitrag teilen benötigen dieses Recht.

  • Umfrage (p) = Eine Umfrage erstellen oder bearbeiten sowie daran teilnehmen. Um das Ergebnis anzuschauen, benötigt man das Recht indes nicht.

  • Sticky (s) = Manche Beiträge sind wichtig und sollten immer ganz oben stehen. Diese erhalten das Sticky-Attribut ("Wichtig"). Um dieses erteilen oder wegzunehmen, wird dieses Recht benötigt.

  • Ankündigungen (n) = Das zweite Attribut für Beiträge ist die Ankündigung. Diese steht auch immer ganz oben und wird ebenfalls auf der Startseite angezeigt. Um dieses erteilen oder wegzunehmen, wird dieses Recht benötigt.

  • Upload (f) = Sollen Dateien an die Beiträge angehangen werden dürfen, benötigt man dieses Recht. Dies setzt vorraus, daß dieses System (Anhang-Datei-System, AFS) auch aktiviert und konfiguriert ist.

  • Download (g) = Das Gegenstück. Hiermit wird erlaubt, daß Dateien heruntergeladen werden dürfen.

Für einige häufige Zugriffsregeln gibt es bereits vorgefertigte Presets, die ausgewählt werden können. Diese beinhalten die gerade genannten Teilrechte als Vorlage. Bei den Zugriffsrechten, also das mit den Skriptaktionen, existieren diese nicht, weil man da keine Teil-Rechte, sondern nur Zugriff "ja/nein" zuteilen kann.
  • NONE = Es werden keine Rechte erteilt.

  • MIN = Minimal-Rechte: Hier ist nur Ansehen und Lesen erlaubt (vr). Ab 2.1.0 ist auch "g" dabei, damit Dateien heruntergeladen werden können.

  • EXT = Erweitere Rechte: Es erweitert MIN um Schreibrechte und ist ab 2.0.0 RC2 verfügbar (vrta). Ab 2.1.0 ist auch "g" dabei, damit Dateien heruntergeladen werden können.

  • USER = Standard: Diesen ist der "normale" Umgang im Forum erlaubt mit Ansehen, Lesen, Schreiben, Umfragen und Datei-Verwaltung (vrtapfg).

  • MOD = Moderator-Rechte: Diese haben die USER plus die nötigen Moderator-Rechte. Insgesamt haben sie alle außer den Ankündigungen (vrtaedmpsfg).

  • ALL = Hier werden logischerweise alle Rechte erteilt (vrtaedmpsnfg).

Beispiel:
@1:MIN,@2:USER,@3:MOD,@4:MOD,@5:ALL
@Administrator:ALL,foo:vr,bar:vrta
@1:NONE,@2:MINta (MIN wird zu vr -> vr+ta = vrta)

Die Reihenfolge der Rechte in der ACE spielt keine Rolle, da intern neu sortiert wird. Sobald ein Recht erkannt wird, ist es erteilt. Wichtig ist nur: Rechte (r, t, a etc.) in Kleinbuchstaben und die Presets (MIN, EXT etc.) immer groß, wenn du die ACL manuell definierst. Ab 2.1.0 sind nur noch numerische Gruppen-IDs möglich.


Was ist der "root-Administrator"?

Dies stammt aus der UNIX-Welt und stellt den höchsten Administrator dar. In der Konfiguration stellst du diesen mit Benutzernamen (evtl. deinen) ein und einer E-Mail Adresse. root darf fast alles auf dem Forum und sollte dementsprechend geschützt werden - ein "gutes" Passwort aufweisen. Auch wenn das Forum abgeschaltet ist, hat dieser immer noch Zugriff, solange sein Login gültig ist.

embedded image
Stimmt der dort eingetragene Benutzername mit deinem überein, wird das Textfeld grün hinterlegt.

Im Gegensatz zu UNIX, kann man im Forum root sehr wohl auch aussperren! Sei vorsichtig, wenn du hier die Zugriffslisten (ACL) bearbeitest.

Bis 2.1.0 findest du in der Zugriffsverwaltung einige Regeln, welche mit "_ROOT" gekennzeichnet und abgeschaltet sind. Sofern du diese aktivierst, wird der Administrations-Bereich weiter abgeschottet und nur root darf dann zum Beispiel Datenbank-Optionen durchführen, aber keine anderen Administratoren. In späteren Versionen ist dies Standard.


Was bedeuten die ganzen Konfigurationseinstellungen?

In der Regel versucht das Formular alle Einstellungen zu erläutern. Nicht sichere oder "gefährliche" sind mit rot markiert und erläutert, warum das so ist. Falls du mal doch etwas nicht verstehst, hast du zwei Möglichkeiten.

1) Du fragst mich oder hier im Forum.

2) Du probierst es aus.

Im Falle eines Fehlers, kannst du eine Standard-Konfiguration laden, indem du die /contrib/tbf_config.default.php in das Forum-Hauptverzeichnis kopierst. Danach solltest du dich einloggen können und die Konfiguration ändern (nur bis 2.0.0 RC2).

Seit 2.0.0 RC3 ist dafür die Datei /usr/tmp/force_default_config zuständig. Die Standardkonfiguration findet sich im include-Ordner, welche auch geladen wird, wenn die Konfiguration in der Datenbank beschädigt sein sollte.

Wie funktioniert das "Dynamische Lastsystem"?

Gut besuchte Foren erzeugen viel Last auf dem Server, was man in erhöhten Antwortzeiten merkt. Die eine Antwort wäre, den Rechner besser auszustatten, was manchmal sogar helfen kann. Schnellere CPU, mehr Arbeitsspeicher oder bessere Internet-Anbindung. Aber irgendwann wird das zu teuer oder man hat gar nicht die Möglichkeit dazu. In diesem Fall kann man dann bestimmte Aktionen im Forum abschalten, wenn eine Lastgrenze erreicht wird. Aktiviert man das DLES, dann wird bei jedem Seitenaufruf die Zeit gemessen und als Last der bisherigen Zeit hinzugefügt. In einem festzulegenden Intervall wird es dann wieder auf null gesetzt und neu begonnen. Der aktuelle Lastwert stellt also die Zeit in Sekunden dar, die alle Besucher seit der letzten Rücksetzung für die Seiten veranschlagt haben. Dazu definiert man die Datei und die Forum-Aktion (siehe auch unter Zugriffsverwaltung in dieser FAQ) zu einem DLES-Modul. Dieses Modul bekommt einen Lastwert zugewiesen ab dem es deaktiviert werden soll. Vordefiniert sind drei Module. Einmal die Mitglieder-Übersicht, dann das Anhangs-Dateisystem und die Suche. Jede wird ab einer anderen Last abgeschaltet und nach dem Interval wieder aktiviert. Dies verhindert zwar nicht die Anfragen an den Server (das läßt sich auch so nicht machen), aber man kann die Bearbeitungszeit und SQL-Anweisungen stark verkürzen, indem man nur die Abschalt-Meldung sendet.

Das DLES wurde seit Version 2.1.0 ersatzlos gestrichen. Heutige Serverkapazitäten sind so stark gewachsen, daß "normale" Shared-Host-Kunden keine Probleme mehr haben sollten. Andere mit eigenem Server können Lastkontrolle auf OS-Ebene einbauen ;-)

Wie nutze ich das "externe System"?

[link]Die externe Bibliothek hat einen eigenen Beitrag im FAQ-Forum[/link]

Wofür sind die Dateien im contrib-Ordner?

Ein Teil der Dateien wird vom Setup bei der Installation oder Konvertierung benötigt. Dort werden die SQL-Befehle sowie die Konverter selber ausgelagert. Im Prinzip werden diese später nicht mehr gebraucht, weswegen der Ordner komplett gelöscht werden kann.

Einen weiteren Anteil beanspruchen die XML-Exporte. Bei gerade installierten Foren kann man die mitgelieferten Smilies importieren oder die Dateiklassen für das AFS (Anhang-Datei-System). Für ältere Entwicklungsversionen ab 2.0.0 RC1 ist noch ein Update für die Hilfeeinträge zu finden sowie aktualisiertes CSS (definiert das Aussehen) für das Standard-Template "tbfV2". Verwalten lassen sich diese unter Administration\Datenbankverwaltung\Im-/Exporte.

Im letzten Teil finden sich Diagnose- und andere Anwendungen für die CLI. Diese lassen sich auf einer Eingabekonsole (bsp. per SSH oder "MS-DOS Eingabeaufforderung") bedienen. Das hat den Grund, weil die Laufzeit generell für eine Anwendung per Browser zu lange wäre. Alternativ könnt ihr auch euren Hoster bitten die auszuführen.

Es kann sein, daß nicht alle hier gelisteten Dateien vorhanden sind. Manche sind erst später dazugestoßen.
  • cmdline_test.php - Erlaubt es Kommandos auf einer Shell über den Webserver auszuführen. Somit kann man direkt auf das Beitrebssystem zugreifen. Unter anderem kann man damit den korrekten Befehl für den Virenscan des AFS erarbeiten. Ist ab 2.1.0 dabei.

  • file_test.php - Überprüft anhand der tbf_filelist.txt, ob alle notwendigen Dateien für den Betrieb vorhanden sind. Funktioniert auch im Browser.

  • mysql_test.php - Kann benutzt werden, um verschiedene Wege zum MySQL-Server zu finden. Neben den "normalen" Verbindungen per mysql_connect() lassen sich hier noch direkte TCP- oder Unix-Socket Verbindungen ausprobieren. Funktioniert nur im Browser.

  • rebuild_afs_thumbnail.php - Erzeugt ab 2.1.0 die kleinen Vorschaubilder im AFS neu.

  • rebuild_intdb.php - Erzeugt ab 2.1.2 die "Integritätsdatenbank" (/include/setup/tbf_integrity.ini) für das Forum. Diese enthält Prüfsummen der Dateien und benötigte Felder in den Tabellen der Datenbank. Unter anderem /contrib/setup_repair.php greifen auf diese Daten zurück.

  • render_forum_static.php - Wandelt alle Beiträge eines oder aller Foren in einfache HTML-Daten bsp. zur Archivierung um. Funktioniert nur als CLI.

  • setup_repair.php - Hilft bei häufigen Problemen mit dem Forum. Dies ist oft einen Versuch wert, wenn es sich sonst nicht mehr bedienen läßt. Funktioniert nur im Browser.

  • smtp_test.php - Wer Probleme beim Mailversand hat, kann mit diesem Formular das austesten. Dabei läßt sich der "normale" Versand wie auch das Nutzen eines SMTP-Servers probieren. Funktioniert nur im Browser.

  • tbforum_benchmark.php - Prüft die Ausführungsgeschwindigkeit des PHP-Interpreters und in kleinem Rahmen auch von MySQL. Für einen groben Vergleich genügt es, wenn man glaubt, daß es zu langsam sei. Funktioniert auch im Browser.

  • update_1x_tree.php - Ein Updater für die Datenbankstruktur der Version 1.3 bis 1.7.6. So kann eine ältere TBF-Datenbank fit für die Konvertierung gemacht werden, ohne ein 1.x-Paket herunterladen zu müssen. Ab 2.1.0 dabei.

  • upgrade_custom_usercp.php - Dies aktualisiert das alte, starre Format mit den Profilfeldern der Mitglieder auf ein dynamisches Format, welches auf XML basiert. Dies wurde mit der Version 2.0.3 eingeführt.

  • upgrade_tbcode.php - Aktualisiert den "alten tbcode" in die neue Variante mit (style). Zusätzlich lassen sich verknüpfte Dateien mit (url) oder (img) auf Gültigkeit prüfen. Funktioniert nur als CLI.

  • upload_test.php - Hier läßt sich testen, ob man Dateien per HTTP-POST hochladen darf und dies fehlerfrei läuft. Ab 2.1.0 dabei.

Fortsetzung TBF2 FAQ p3 Archilles
Welche Foren lassen sich nach TBF2 konvertieren?

Zur Zeit nur von meinem älteren Talkboard Forum 1.7.x. Wer gerne von einem anderen wechseln möchte, was mich freut, möge sich bei mir melden. Ich werde dann versuchen einen Konverter zu schreiben. Geplant waren phpBB2 und vBB3. Jedoch, wenn keiner fragt, mache ich mir auch nicht die Mühe. Die Zeit stecke ich lieber ins TBF2 :-)

Wird PHP5 oder MySQL4/5 unterstützt?

Im Prinzip ja. Seit Herbst 2005 probiere ich oft mit PHP5 sowie MySQL 4/5 und behebe auftretende Probleme. Falls PHP5 bei euch die register_long_arrays deaktiviert hat, dürfte es keine Probleme geben. Das Forum erkennt, welche dieser Arrays verfügbar sind. PHP6 ist ungetestet.

Ich erhalte häufig Fehler wie "Security Bot has detected possibly serious content"?

Das TBF filtert die Benutzereingaben gegen bestimmte Regeln, sofern man dies in der Konfiguration nicht deaktiviert. Das kostet zwar ein bißchen Rechenzeit, stellt aber in vielen Fällen sicher, daß nur gewollte Daten eintreffen. So sollten viele SQL-Injections und XSS-Probleme im Keim erstickt werden. Garantieren tue ich das natürlich nicht :-D

Wie administriere ich mein Forum?

Logge dich mit einem Konto ein, welches Administrator-Rechte besitzt. Oberhalb der Navigation findest du einen roten Link "Administrations-Verwaltung". Links befindet sich dann die Navigation, darunter ein Fenster mit anstehenden Aufgaben. Daneben eine kurze Übersicht des aktuellen Betriebes.

Gibt es weitere Templates für ein anderes Aussehen?

Ja, die gibt es. Du findest sie auf der Projektseite des Forums. Dort befinden sich zu jedem auch ein Bild für den ersten Eindruck. Desweiteren kannst du dort in der Online-Demo jedes Template live anschauen.

Welche Features sind in der letzten stabilen Version noch experimentell?

Ab 2.1.4 ein Chat, der asynchrone Verbindungen (AJAX) nutzt. Dadurch werden die Serverlast und Datenverkehr minimiert. Idealerweise wird als Datenbasis gemeinsamer Speicher (shmem) oder Textdateien in einem RAM-Laufwerk benutzt.

Ich habe einiges am Code geändert und möchte es beim Update nicht verlieren?

[link]FAQ: Wie pflege ich eigene Änderungen beim Update des Quellcodes ein?[/link]

Prinzipiell läßt sich das vermeiden, indem man eine Plugin-Schnittstelle schafft. Dies wird von einigen Projekten gemacht und ein paar Foren (IBF und phpBB3 meine ich) können Modifikationen "per Mausklick" installieren. Das halte ich im TBF für Overkill. Es müßte einiges geändert werden und dürfte wenig genutzt werden. Es müßte erstmal populärer werden und von einigen gefordert :-D

Wie erstelle ich ein eigenes Layout?

Dies geschieht in Administration/Templateverwaltung. Das Aussehen des Forums wird durch die Templatedateien bestimmt. Sie befinden sich im Unterordner "template". Diese Dateien werden eingelesen und die Platzhalter gegen die eigentlichen Daten ausgetauscht. Das Ergebnis landet im Browser. "tbfV2" ist der Standardsatz. Ich empfehle den beizubehalten, denn sonst mußt du bei einem Forumupdate diese selbstständig aktualisieren.

Recht gut beeinflussen kannst du es, indem du das Stylesheet (CSS) änderst und eigene Grafiken einsetzt. Dafür gibt es derzeit keinen bequemen Editor, sondern es muß von Hand gemacht werden. Als hilfreiche Lektüre dient SelfHTML . Mit ein wenig Übung läßt sich so das eigene Aussehen einstellen, welches auch ein Update übersteht. Wenn du eigene Bilder einbinden möchtest, kannst du deren Verknüpfung ab 2.0.2 in einem "Imageset" ablegen. Lade dir am Besten mal das Template "desert" vom sf.net-Server herunter und schaue dir dort an wie die Bilder abgelegt sind und beachte das Format der "imageset-desert.xml.php" im Template-Ordner. Alle verfügbaren Aliase für die Bilder sind relativ nahe am Anfang der tbf_core.inc.php. Es sollte sich weitesgehend selbsterklären :-)

Tipp: Für das CSS kannst du entweder einen dafür vorgesehenen Editor nutzen (kenne leider kenne, mache alles per Hand). Oder, was ich selber nutze, ein Plugin für den Firefox-Browser. Wenn du den verwendest, gibt es das Plugin "EditCSS". Nach der Installation wird dies wird per Rechtsklick auf der Webseite im Kontextmenü ausgewählt. Links erscheint dann ein Fenster mit dem CSS, welche live angepasst werden kann und auch auf der danebenstehenden Webseite aktualisiert wird. Ziemlich praktisch. Um die passende CSS-Deklaration zu finden empfiehlt sich noch das Plugin "CSSViewer".

Gibt es regelmäßige Releases?

Nein. Es gibt keinen festen Plan, wonach zum Beispiel an jedem ersten Montag des Monats eine neue Version erscheint. Du kannst dir aber sicher sein, daß dieses Projekt aktiv ist. Nur halt nicht so im Licht der Öffentlichkeit wie ein phpBB oder vBulletin.

Im Prinzip gibt es beim TBF2 (bei meinen anderen Skripten weniger) drei Arten. Einmal stable mit den stabilen Versionen, welche meist Fehler bereinigen. Sie erscheinen unregelmäßig und nur dann, wenn eine größere Anzahl an Änderungen das rechtfertigen. Als zweites gibt es devel. Das sind Testversionen der nächsten, stabilen Fassung, die meist neues mitbringen. Als letztes gibt es noch snapshot. Solche liegen vor dem Release des nächsten "stable" und erscheinen nur, wenn es wichtige Fehler behebt. Heute sind das "Patchlevel" (z.B. 2.1.0-pl1).

Auf neue Versionen kannst du in der Administrations-Übersicht prüfen. Dabei wird vom Server eine XML-Datei geladen und verglichen. Dabei werden keine Daten von deiner Installation übertragen. Seit 2.1.2 ist auch ein Cronjob verfügbar, der automatisch dort nach neuen Versionen sucht und dich ggf. informiert.

Ist das TBF2 sicherer als andere?

Nein. Im Quellcode sind eine Menge Probleme versteckt und es gibt unzählige PHP/MySQL-Kombinationen. Durch seine relativ geringe Aufmerksamkeit wurde es nicht intensiv getestet, sodaß viele Fehler unbemerkt schlummern können. Ich bin aber bemüht bei Problemen das TBF dahingegend zu prüfen. Wichtig ist eine genaue Fehlermeldung, damit ich das (hoffentlich) lokal reproduzieren kann. Ernste Probleme veröffentliche ich sofort und versuche sie schnell zu beheben, wenn meine Zeit es zuläßt.

Wie sieht es mit weiteren Sprachen aus?

Gerne. Da ich jedoch nur Deutsch und (Schul-)Englisch kann, wirst du es wohl übersetzen müssen oder jemanden finden. In /usr/lang finden sich die Dateien. (Technische) Hilfestellung gewähre ich natürlich gerne...

Gibt es "Grunddateien" der Grafiken, um eigene zu erstellen?

Ja, für Version 2.x gibt es ein Archiv, welches alle zu übersetzenden Grafikdateien ohne Schrift enthält. Das Truetype-Font ist aus lizenzrechtlichen Gründen nicht enthalten und heißt "Opal", falls du selber suchen möchtest. Sie liegen im PNG-Format vor und sind am ersten Beitrag dieses Themas angehangen. Wenn du nicht selber übersetzen magst, kannst du mir gerne die entsprechenden Texte schicken, die eingefügt werden müssen.

Fortsetzung TBF2 FAQ p4 Archilles
Ich erhalte häufig Fehler wie "Call-time pass-by-reference has been deprecated"?

[link]Ich verweise mal auf diesen Beitrag...[/link]

Welche Erfahrung benötigt ein Webmaster für den Betrieb dieses Forums?

Eine gute Frage. Vieles läßt sich recht simpel über Formulare einstellen und es gibt umfangreiche Hilfetexte. Optionen, die man nicht benutzt oder versteht, kann man in der Regel ohne Probleme auslassen. So oft es geht versuche ich fehlerhaften Eingaben zuvorzukommen und Korrekturen anzubieten, aber das gelingt (noch) nicht überall. Im großen und ganzen halte ich es für alle Gruppen geeignet. Ein paar Funktionen sind jedoch so mächtig, daß es schwer ist dafür eine Oberfläche zu entwickeln. Hier ist noch "Low-Level" angesagt und das Auseinandersetzen mit der Textkonfiguration, welche aber erklärt wird. Ein bißchen Neugier und Geduld muß natürlich jeder mitbringen. Das gilt für das TBF wie für alles im Leben auch :-)

Wieso gibt es nach der Installation so viele Aufgaben in der Adminoberfläche?

Das liegt daran, daß ein Forum aufsetzen keine Sache von wenigen Klicks ist. Gerade wenn du neu in dem Bereich bist, wirst du wohl vor dem Berg stehen und dich fragen, was du als erstes tun sollst. Diese ausstehenden Aufgaben (Anklicken zeigt meist einen Hilfetext) sollen dir bei den ersten Schritten helfen und ermöglichen so eine kleine Kennenlern-Tour. Hinterher wirst du dich besser zurechtfinden und mit ein wenig stolz auf deine Arbeit sehen. Das halte ich für besser als "Klick-und-Fertig" :-D

Manchmal sehe ich "Piping Query Output" in der Ausgabe?

Vermutlich habe ich beim Debuggen vergessen, diese SQL-Anweisung wieder zu aktivieren. Diese ist aktuell deaktiviert und gibt ihren Befehl aus, anstatt ihn auszuführen. Bei der Ausgabe siehst du auch einen Dateinamen und eine Zeilenangabe. Wenn du diese Datei in einem Editor öffnest, siehst du in dieser Zeile etwa sowas:

echo $SQL->sql_query(...,false);

Nimm das "echo", falls vorhanden, weg und auch das letzte "false", sodaß nur "__LINE__);" am Ende steht. Ab 2.1.0 kann es auch eine Zahl sein wie 1, 2 oder -1. Ändert aber im Prinzip nichts daran.

Ich habe das Forum extern eingebaut und jetzt funktioniert meine Site nicht mehr?

Wenn du dafür nicht die tbf_ext.inc.php nutzt, sondern die tbf_core.inc.php, dann achte darauf, daß der Kern nicht geladen wird. __TBF_CORE_LOADING sollte "false" sein. Sofern dieser geladen und das "Cleaning der Globals" erlaubt wird, werden alle Variablen bis auf jene in einer lokalen Whitelist gelöscht. Binde meine Funktionen daher so früh wie möglich ein, um Wechselwirkungen mit deinen Variablen zu vermeiden oder verbiete das Löschen im Kern. Die passenden Konstanten sind am Anfang der tbf_core.inc.php. Bequemerweise setzt du die Konstanten in deinem Skript *bevor* du meins einbindest. Dann mußt du die nicht nach jedem Forumupdate wieder ändern ;-)

Ich kann keine andere Sprache auswählen!

Für die endgültige Wahl der Sprache sind verschiedene Faktoren zuständig. Einmal gibt es in der Adminkonfiguration die Grundeinstellung, welche Sprache generell benutzt werden soll. Sie entspricht der Einstellung "Standard/Keine" unter "Mein Profil" eines jeden Benutzers. Jeder kann hier seine eigene Wahl treffen, sofern die Sprache nicht per Konfiguration erzwungen wird.

Zusätzlich versucht das Forum die Sprache automatisch zu erkennen. Browser lassen sich (an verschiedenen Stellen) auf bevorzugte Sprachen konfigurieren. Das Forum testet alle angeforderten durch und benutzt die erste verfügbare. Fordert ein Browser Englisch an, schaltet das Forum auch darauf, auch wenn es üblicherweise auf Deutsch erscheint. "Sprache erzwingen" hebt diese Automatik auf.

Was hat es mit dem Salt in Passwörtern ab Version 2.1.0 auf sich?

Ab Version 2.1.0 sind die Abbilder (Hashes) der Passwörter in der Datenbank nicht mehr nur auf MD5 beschränkt. Das eigentliche Passwort wird einer weiteren Zufall-Zeichenkette verknüpft und neu "gehasht". Dafür wird SHA1 genutzt, welcher moderner ist. Dieser Zufallstring wird "Salt" genannt und ist bei jeder TBF-Installation anders. Warum macht man das?

Nun, auf Passwörter können sogenannte Wörterbuch-Attacken durchgeführt werden. Das heißt viele der bekannten Wörter werden ausprobiert und übliche Kombinationen. Diese lassen sich ebenfalls "hashen" und mit einem "MD5-Passwort" vergleichen. Die "Verschlüsselung" mit MD5 hilft daher nur bedingt. Jedoch sind diese Tabellen mit den Hashes riesig ("Rainbow-Tables") und benötigen viel Speicherplatz.

Deshalb wird ein Zufallstring angehangen, was solche Attacken sehr erschwert. Der Nachteil ist natürlich, daß mit Verlust des Salt, alle Passwörter unbrauchbar werden. Passe also gut darauf auf! Du könntest ihn beispielsweise ausgedruckt in einen Schrank legen. Der Salt findet sich in der tbf_200.cfg.php.

In /usr/tmp lassen sich einige Optionen einstellen

Wenn du folgende Dateien in diesem Ordner erstellst, lassen sich ein paar Optionen temporär einstellen. Die folgende Liste gilt ab 2.1.0:
  • enable_cuid: "Change-UID" nutzen, siehe Administration\Konfiguration.

  • force_default_config: Laden der Standardkonfiguration (/include/tbf_200-default.cfg.xml) erzwingen. Gut, wenn die eigentliche fehlerhaft ist.

  • use_no_salt_on_210_update: Benutzt einen Einheitssalt beim Update "__COMPATIBILITY". Nicht empfohlen!

  • force_old_style_captcha: Es kommt ein neues "erweitertes" Captcha zum Einsatz. Dies baut ein Bild aus verschiedenen Hintergründen und vorgefertigten Buchstaben zusammen. Dies kann deaktiviert werden, falls es Probleme macht.

Wie richte ich die Virenprüfung beim Dateiupload im AFS ein?

Ab 2.1.0 lassen sich Dateien, die in das Dateianhangssystem (AFS) hochgeladen werden, auf Viren überprüfen. Das Skript übergibt den Dateinamen über eine Kommandozeile/Shellkonsole - der Virenscanner muß sich also per "CLI" bedienen lassen. Ein AV-Programm nur mit Mausbedienung eignet sich nicht. Die Rückgabe des Programms wird dann auf einen Fund hin untersucht. Du kannst die "cmdline_test.php" im contrib-Ordner benutzen, um die Einrichtung zu erleichtern. Im folgenden Beispiel wird das AV-Programm "F-Prot" unter Linux benutzt. Es geht aber analog mit anderen Programmen und/oder Betriebssystemen :-)

In TBF-Versionen vor 2.1.2 kann es zu Problemen bei Anwendung unter Windows kommen. Der AV-Befehl wird "gesäubert" bevor er zur Ausführung kommt. Diese Funktionalität arbeitet unter Windows ein wenig anders und filtert zu viel, bzw. ist es eben noch nicht an dieses OS angepasst. Das gilt auch für Pfadangaben mit Backslashes oder Leerzeichen.

Es ist nicht möglich Kommandozeilen-Virenscanner zu benutzen, die Interaktivität erfordern. Das beinhaltet zum Beispiel, daß nach dem Scan eine Taste gedrückt werden muß. Aktuell (Okt. 2007) ist dies bei "Avira Antivirus PE" unter Windows bekannt.

  • Als erstes mußt du wissen wie das Programm heißt, was für den Virenscanner auf dem CLI (Command Line Interface) die Kommandos entgegennimmt. Dies sollte mit dem vollen Pfad als Befehl in das Formular von /contrib/cmdline_test.php eingetragen werden. Üblicherweise können noch weitere Parameter an den Scanner übergeben werden. Welche das sind kannst du herausfinden, indem du dem Befehl ein "--help", "-h" oder "/?" anhängst. Beispiel: /usr/bin/f-prot --help.

  • Als nächtes brauchst du zwei Dateien auf dem Server. Eine ist sauber und die andere ist infiziert. Suche im Internet nach "Eicar Test". Dies ist eine Zeichenkette, die kein echter Virus ist, aber von allen Herstellern als solcher erkannt wird. Als saubere Datei kannst du irgendeine nehmen. Von beiden mußt du den vollen Pfad kennen und ggf. vorher auf den Server hochladen.

  • Testen wir mal mit der sauberen Datei, ob der Scan funktioniert: /usr/bin/f-prot [Dateiname]. Die genaue Ausgabe hängt natürlich vom verwendeten Programm ab. Schaue dir die "Rückgabe" an und schreibe sie auf. Die Zahl sollte "0" sein - muss es aber nicht! "Gefunden" sollte "nein" ergeben.

    "Gefunden" meint hier, daß der "Ausdruck" im Rückgabetext des Scanners gefunden wurde. Dieser ist jedoch noch leer und kann daher auch nicht erkannt werden. Es bedeutet also nicht, daß kein Virus gefunden wurde. cmdline_test.php ist ein allgemeines Hilfsprogramm.


    embedded image

  • Nun folgt die infizierte Datei. Die Ausgabe des Scanners sollte eine Infektion melden. Achte auch hier auf die "Rückgabe". Sie sollte nun eine andere Zahl anzeigen. Schreibe sie auf. Ist sie gleich, macht es auch nichts. Nur läßt sich dann hierdrüber keine Infektion feststellen.

    embedded image

  • Vorausgesetzt die "Rückgabe" ist eine andere als bei der sauberen Datei, können wir nun bereits eine Infektion erkennen. Dies läßt sich noch erweitern, indem der Text des Scanners untersucht wird. Im Falle von F-Prot findet man hinter dem Dateinamen "Infection: [Name]". Trage nun unter "Ausdruck" einmal "Infection: (.*)" ein. Nach der Ausführung sollte "Gefunden" auf "ja" stehen und im Text das Erkannte rot blinken. Je nach Programm kann hier ein anderer "Ausdruck" notwendig sein. Wichtig ist das "(.*)", was den Namen des Virus filtern soll.

    embedded image

  • Mittels des "Ausdruck" und der "Rückgabe" kann das Forum nun gefüttert werden. Gehe dazu im Administrationsbereich auf Konfiguration/AFS. Dort findest du eine Zeile für den "Befehl". Hier muß dieser ggf. mit allen notwendigen Parametern hinein und ein "%0". Das Forum ersetzt diesen Platzhalter durch den Dateinamen der hochgeladenen Datei - steht daher genau dort, wo du gerade die beiden Testdateien angegeben hast. Der "Ausdruck" folgt darunter und kann übernommen werden. Kann auch die "Rückgabe" verwendet werden, dann kannst du das auch angeben.

  • Zum Abschluß solltest du dann mit der Testdatei schauen, ob das Forum den Virus korrekt erkennt. Beachte, daß je nach Größe und Auslastung des Servers der Upload nun wegen der AV-Untersuchung etwas länger dauert. Schlägt aus irgendeinem Grund die Virenüberprüfung fehl, werden alle hochgeladenen Dateien abgelehnt.

Fortsetzung TBF2 FAQ p5 Archilles
Wie funktioniert der "Patch-Manager" in der Administrationsverwaltung?

Ab 2.1.1 findet sich in der Administrationsverwaltung eine noch im Experimierstadium befindliche grafische Oberfläche, um Patches einzupflegen. Dies ist in der linken Navigationsleiste am grünen Link zu erkennen. Sobald es fertig ist, wird es dann unter Administration\Datei-Manager eingefügt sein.

Das Formular nimmt per Browser hochgeladene sogenannte "Unified Diff" entgegen. Das ist eine Datei, welche Änderungen in Programmen gegenüber vorherigen Versionen enthält und automatisch eingepflegt werden kann. Somit wird es unnötig von Hand Dateien zu kopieren und/oder eigene Änderungen am Quellcode zu erhalten. Sie können in normalen Texteditoren angeschaut werden, sind also kein Hexenwerk. Hier mal ein Beispiel, zur besseren Übersicht eingefärbt:
Änderungen im "Unified Diff"-Format ('test.patch'):
============================================================
Index: admin_main.php
===================================================================
--- admin_main.php	(revision 151)
+++ admin_main.php	(working copy)
@@  -71,19 +71,6  @@
 "http://tbforum.sourceforge.net/updater-tbf2.db.xml"
 ); if ( !strpos(TBF_Fetch_Server_Variable("SERVER_NAME"),"home.net") ) unset($updater_files[0]);
 
-  foreach ( $updater_files as $value ){
-  $update_server = parse_url($value);
-  printf($LANG['ADMIN_UPDATER_CHECKING_DATABASE'],$update_server['host']);
-  $update_data = $TBF->KERN_File_Socket($value);
-    if ( !empty($update_data) ){
-    echo $LANG['ADMIN_UPDATER_DATABASE_FOUND']."<br /><br />\n";
-    $update_data = $TBF->KERN_LXML_Parser($update_data,"UPDATER_INFORMATION");
-    break;
-    }
-    else
-    echo $LANG['ADMIN_UPDATER_DATABASE_NOT_FOUND']."<br />\n";
-  }
-
   // Alle Tags im XML auf neue Versionen durchgehen...
   if ( is_array($update_data['GENERAL']) ){
   $installed_version = $TBF->KERN_Parse_Standard_Version_Tag(__TBF_VERSION);
@@  -350,7 +337,13  @@
 
     if ( $avatar_in_use > 0 )
     $TBF->KERN_Exception_Handle("admin","ADMIN_DELETE_AVATAR","ADMIN_ERROR_THIS_AVATAR_IS_IN_USE");
+echo "blablabla foobar\n";
+    if ( $avatar_in_use > 0 )
+    $TBF->KERN_Exception_Handle("admin","ADMIN_DELETE_AVATAR","...");
+    if ( $avatar_in_use > 0 )
+    $TBF->KERN_Exception_Handle("admin","ADMIN_DELETE_AVATAR","...");
+    if ( $avatar_in_use > 0 )
+    $TBF->KERN_Exception_Handle("admin","ADMIN_DELETE_AVATAR","...");
     if ( unlink("$VAR[DIR_AVATARS]/$filename") ){
     $TBF->KERN_Logger("AVATAR_DELETED","KERN.INFO",array($class,$filename));
     $TBF->KERN_External_Redirect($TBF->KERN_Create_Link(...
Schaut man einfach mal eine Minute darauf, sollte es selbsterklärend sein. Rote Zeilen mit einem Minus werden entfernt und grüne mit einem Plus hinzugefügt. Die anderen Angaben sind für das Patchprogramm, damit es weiß, in welchen Dateien und Zeilen es arbeiten muß. Solche Patch- oder Diffdateien können recht lang werden und sind daher meist komprimiert aufzufinden. Seit einigen TBF-Versionen gibt es diese auch bei mir, um von der letzten auf die aktuelle Version zu aktualisieren; aus Platzgründen nur im Downloadarchiv der Projektseite (Link auf Forum-Startseite).

Der Patch-Manager benötigt für seine Funktion ein kleines Programm oder die passende PHP-Erweiterung (dazu später mehr) auf dem Server, welches er per Kommandozeile ausführen muß. Das lautet "GNU Patch" und ist für gängige Betriebssysteme verfügbar. Somit schränkt es zwar die Benutzerzahl ein, aber warum nicht ein bewährtes Programm nutzen, anstatt eine eigene PHP-Funktion zu schreiben :-). Die [link]Einrichtung unter Windows[/link] habe ich in einem anderen Thema schon beschrieben. Dort wird noch diff beschrieben, welches du weglassen kannst. Bei Linux ist patch üblicherweise bei jeder gängigen Distribution vorinstalliert (meist "/usr/bin/patch"). Hast du einen eigenen Server läßt es sich auch ggf. nachinstallieren. Bist du jedoch auf einem Shared-Host, also bei einem Anbieter, solltest du nicht auf eigene Faust Programme auf den Webspace kopieren. Es mag klappen oder auch nicht - im Schlimmstenfall kündigt dich dein Hoster. Dann einfach mal nett fragen, ob es zur Verfügung gestellt werden kann.

Den vollen Pfad zum Programm mußt du dann in dem Formular unter Administration\Datei-Manager\Patch-Manager eintragen. Läßt es sich korrekt ausführen, sollte eine Versionsangabe des Programms zu sehen sein. Alle Optionen dürften selbsterklärend sein. Wichtig ist, daß standardmäßig nur simuliert wird und du dies explizit ausschalten mußt. Empfehlenswert ist es bereits ausgeführte Patches zu ignorieren und leere Dateien nach dem Ausführen zu entfernen. Die Anzahl der Verzeichnisebenen einzustellen ist ein wenig knifflig, aber mit Übung zu meistern. Üblicherweise wird hier eine "1" angegeben. Das bedeutet, daß von Pfadangaben in der Patchdatei eine Ebene abgeschnitten wird. Steht dort z.B. "neueversion/admin_main.php", dann würde "Patch" in deinem Forumordner danach suchen. Diese gibt es jedoch nicht, bzw. liegt direkt in der obersten Ebene. Wird jetzt eine entfernt, steht noch "admin_main.php" da und "Patch" findet sie. Läuft die Simulation ohne Fehler durch, kannst du es, aktiv schalten. Eine Sicherungskopie von jeder Datei erstellen zu lassen, kann nützlich sein.
  • can't find file to patch at input line x. Perhaps you used the wrong -p or --strip option?
    In diesem Fall stimmt die Anzahl der abgeschnittenen Verzeichnisebenen nicht. "Patch" gibt danach die Zeilen aus mit vorangestelltem "---" und "+++". Ziehe von den Pfaden so viele Ebenen ab, daß der Dateiname von im Forumhauptverzeichnis liegende Dateien alleine steht. Die aus der Patchdatei kommenden Pfade werden an den Hauptpfad des Forums angehangen.

  • Hunk #x FAILED at y oder Hunk #x succeeded at y (offset z lines)
    "Patch" arbeitet "fuzzy". Das bedeutet, er findet die Zeilen meist auch, wenn die Zeilenangabe nicht stimmen sollte. Dies erklärt er mit dem "offset". "FAILED" bedeutet jedoch nichts gutes und meint, daß diese Änderung nicht durchgeführt werden konnte. Üblicherweise speichert er die Konflikte dann in einer Extradatei mit der Endung ".rej". Nachdem diese gelöst wurden, kann die Patchdatei erneut aufgerufen werden. Leider ist das nicht trivial und tritt dann auf, wenn von dir zuviel geändert wurde. Du könntest versuchen deine Änderungen gegen das ältere Original in ein Diff zu packen, nun meinen Patch einspielen und dann deine Änderungen zu reimportieren.

Kann ich die Datenbanksicherungen auch anders als über die Adminoberfläche einspielen?

Ja, das geht. Das Forum benutzt zur Sicherung einen Konsolenbefehl, der bei MySQL üblicherweise "mysqldump" lautet. Zur Wiederherstellung wird der Befehl "mysql" benutzt, den du auch ganz "normal" auf einer Kommandozeile eingeben kannst. Dafür benötigst du jedoch Shellzugriff auf deinen Server (SSH) oder die Datenbank muß sich über Netzwerk (TCP, Port 3306) ansprechen lassen. Im Zweifel kannst du deinen Hoster danach fragen - eventuell spielt er die Sicherung auch für dich ein.

Alternativ kannst du, sofern es dein eigener Server ist, auch das Kommando "mysqlhotcopy" nutzen. Dies erledigt die Sicherung weitaus schneller und könnte direkt als Cronjob ("Geplante Aufgaben" bei Windows) vom Betriebssystem ausgeführt werden. Es wird dann kein SQL-Dump erstellt, sondern die Datenbankdateien direkt kopiert. Zur Wiederherstellung muß dann MySQL kurz beendet, die Dateien zurück kopiert und wieder gestartet werden.

Wie richte ich den Chat ein?

Diese Erweiterung ist derzeit (2.1.4) als experimentell zu betrachten. Grundsätzlich sollte sie funktionieren, nur dürften je nach Browser-/Serverkombination noch einige Fehler zu erwarten sein. JavaScript ist zwingend nötig, da der Chat mit AJAX (Asynchrones Javascript und XML) funktioniert.

Über deine Administrationsoberfläche kannst du unter Konfiguration\Haupt-Einstellungen den Chat aktivieren. Standardmäßig wird per ACL der Gastgruppe der Zugriff verweigert - dies kannst du unter Administration\Zugriffsverwaltung anpassen. In /usr/tmp wird eine Konfigurationsdatei angelegt, sofern er aktiviert wird. Daraufhin erscheint auf der normalen Forumoberfläche neben dem Logo ein provisorischer Link, der das Chatfenster öffnet. Der wird später natürlich woanders sein :-)

Für bessere Leistung und weniger CPU- sowie Netzwerklast wird ausdrücklich keine Datenbank zur Speicherung der Chatnachrichten verwendet. Die einfachste Variante sind Textdateien. Da hier einiges an I/O zusammenkommt, sollte man diese, falls möglich, auf ein RAM-Laufwerk legen. Idealerweise nutzt man gemeinsamen Speicher ("shared memory"), welcher aber eine PHP-Erweiterung voraussetzt. Einen Test dafür gibt es noch nicht - erstmal nur ausprobieren. Um gleichzeitige Zugriffe auf die Daten zu vermeiden, wird eine weitere Datei ("Locking") eingesetzt. Auch dies kann vom Betriebssystem erledigt werden ("Semaphore"), wenn eine weitere PHP-Erweiterung verfügbar ist. Bis auf die "normalen Dateien" ist alles weitesgehend ungetestet! sysvshm/sysvsem vorerst nur für Entwickler mit eigenem Server interessant.

Der Chat befindet sich im Moment dauerhaft im "Debug-Modus", sodaß eine Menge Informationen während der Benutzung angezeigt werden. Fehler werden in einem Extra-Popup angezeigt. Falls der Chat sich "aufhängt", kann es helfen die Textdateien in seinem "Arbeitsverzeichnis" zu löschen. Benutzt du den gemeinsanen Speicher ist der Block zu löschen, was aber ein wenig Wissen und Shellzugang erfordert.

Noch ein Hinweis an Shared-Hosting-Kunden: Einige Anbieter verbieten solche "HTML-Chats", weil die Serverlast üblicherweise zu hoch ist. Falls ihr den Chat dauerhaft nutzen wollt, solltet ihr bei Zweifel nachfragen. Beim Testen mit wenigen Nutzern sollte es aber keine Probleme geben :daumen:


Seite: 1

Copyright (c) by "archilles scriptworld Forum", 2009. All rights reserved.
This archive has no free license, but any copyright laws applicable by your local country.