MaxNet

Kommentare anzeigen Worklog abonnieren
Gehe zu Seite Zurück  1, 2, 3

Worklogs MaxNet

Bugs gefunden - neue Funktionen

Donnerstag, 17. Juni 2010 von Thunder
Hallo,

ich habe ein paar Bugs gefunden. Auch die EXCEPTION_ACCESS_VIOLATION kommt bei meinen Tests nicht mehr vor - was ich ehrlichgesagt komisch finde.
Es haben gestern 3 Zeilen Code alle Clients hintereinander zusammenklappen lassen. Nämlich (wahrscheinlich) diese:
BlitzMax: [AUSKLAPPEN]
For Local i%=0 To CountGadgetItems(list)-1
If blabla Then RemoveGadget list,i
Next


In BlitzPlus ging das, soweit ich mich erinnere. Aber BlitzMax meldet mir einen falschen Zugriff (der logisch ist, wenn sich CountGadgetItems(list)-1 während dem Ablauf der For-Schleife nicht ändert). Das wurde manchmal beim Ausloggen oder kicken kritisch und puff - alle Clients (die spezielle Bedingungen erfüllen) sind tot.

Neue Funktionen:
  • Links sind jetzt klickbar
  • Nicknames werden nach Status sortiert
  • /topic darf (ohne Parameter) auch von niedrigeren Rängen ausgeführt werden, um den neuen Topic zu lesen.
  • Im Client wird jetzt bei der Schriftfarbe der Nachrichten zwischen schwarz und grau gewechselt, damit der User eine besser Übersicht hat
  • /rmban neue Funktion zum unbannen. Man gibt einen Index, statt eines Namens ein (eher Debug-Zweck).
  • Der Client verbietet es ab jetzt beim Einloggen einen Benutzernamen mit ; oder : einzugeben, oder einen Namen einzugeben, der länger ist als 13 Zeichen.
    Falls sich trotzdem jemand (zB über einen gehackten Client) mit einem nicht validen Usernamen einloggen versucht, wird das durch den Server blockiert, der den gewählten Namen runterkürzt oder ; und : entfernt


Ich hoffe, dass oben genannte Fehlerbeseitigung den Big Bug entfernt hat. Ein bisschen muss ich noch mit dem Ban- und dem Ownersystem rumspielen. Die tun noch nicht ganz, was ich will.


mfg Thunder

...

Mittwoch, 16. Juni 2010 von Thunder
Ich schreibe nochmal, weil der Test jetzt vorbei ist und ich das Ergebnis verkünden will:
Kurz, es lief relativ scheiße. Es war zwar eine animierte Stimmung da (als wir schon 2,3,4,5 im Chat waren^^), die aber immer wieder durch Abstürze der Clients unterbrochen wurde.
Außerdem hat anscheinend irgendjemand einen Chatbot hineingelassen, der all unsere Clients nacheinander gekillt hat - keine Ahnung wieso. Das ist frühe Testphase und ich bitte darum, das zu unterlassen!

Ich weiß in etwa, wann diese Abstürze passiert sind. Einmal zB wurde ein Nutzer gekickt und plötzlich waren alle anderen mit einem EXCEPTION_ACCESS_VIOLATION auch draußen.

Das positive war vor Allem die gute Laune, die die freiwilligen Tester mitbrachten und (was mich überraschte), dass der Server die ganze Zeit über stabil lief und ein etwa 400 Zeilen langes Protokoll anfertigte, das ich verloren habe Sad (durch unsachgemäßen Gebrauch von Remotedesktop)


mfg Thunder


PS: Der eingelassene Chatbot hatte natürlich keine Rechte und hat uns weder gekickt noch gebannt, aber wegen irgendetwas sind wir dann alle mit EXCEPTION_ACCESS_VIOLATION rausgeflogen.

Erster Test

Mittwoch, 16. Juni 2010 von Thunder
Hallo,

ich möchte heute den ersten Testlauf machen. Dazu habe ich gleich die Client-Exe mit einer ini-Datei hochgeladen: ~Link entfernt~

Ich wäre froh, wenn ihr dabei seid!

Dieser Test dient dazu ein paar Bugs zu finden.

Beim Einloggen müsst ihr nur noch den Nickname eingeben.


mfg Thunder

falscher Feind

Montag, 14. Juni 2010 von Thunder
Hallo,

es tut mir Leid mich korrigieren zu müssen, aber die unten genannten "Fehler" gab es gar nicht. name wurde schon vorher mit tolower() bearbeitet.
Dafür habe ich aber den echten Verräter gefunden. Der Server führt eine Liste über alle User (Type TUser in einer Linkedlist). Dieser Type hat eine Methode changeState() mit der, der Server allen Usern die Statusänderung mitteilt und den Status eines Users ändert, glaubte ich.
Es fiel mir auf, dass der Server den Status gar nicht änderte (bei Befehlen wie /op, /hop ...) - er blieb gleich.
Diese Zeile ist wahrscheinlich irgendwie verschwunden, als ich die übertragenen Daten verringern wollte.

Jedenfalls geht jetzt das wesentliche (ich habe alle möglichen Status [ich hasse den Plural dieses Wortes] probiert).

Verschiedene Befehle haben außerdem nicht funktioniert, zB: /banlist (gibt eine Liste aller Bans), weil der String des Clients davor auf den Anfang "/ban" gecheckt wurde etc. ist jetzt behoben.

Ich möchte noch auf einen Aspekt eingehen, der mir nicht so aufgefallen ist und auf den mich Düsi aufmerksam gemacht hat. Ich kompiliere und teste auf Windows-Systemen und habe komplett vergessen, dass Linuxserver normalerweise ohne X daherkommen. Ich werde mir noch überlegen, wie ich das zur Zufriedenheit aller lösen kann.


mfg Thunder

Minifehler

Sonntag, 13. Juni 2010 von Thunder
Hallo,

2 Einträge heute, da ich heute freundlicherweise von Pummelie eine Genehmigung zum Zugang zu seinem VServer bekommen habe und dadurch schnell Fehler gefunden habe.
Was ich dadurch gefunden habe ist folgende Zeile (in der Kick-/Ban-/Noob-/...Anweisung):
BlitzMax: [AUSKLAPPEN]
If name=u.nickname.tolower() Then 


Heißt so viel wie, nur die User mit kleingeschriebenen Nicknames konnten gekickt/gebannt/etc. werden.

Außerdem habe ich einen Fehler mit der Übertragung der Userliste gefunden:
Code: [AUSKLAPPEN]
Server, Thunder und Christian loggten sich in dieser Reihenfolge ein und in deren Userliste bot sich mir folgender Anblick:

Server: ServerNick (OWNER), Thunder(OP), Christian(NORMAL)
Thunder: ServerNick (OWNER), Thunder(OP), Christian(NORMAL)
Christian: ServerNick (OWNER), Thunder(NORMAL), Christian(NORMAL) <-- hier


Den Fehler muss ich noch finden.


mfg Thunder

haha BUG!

Sonntag, 13. Juni 2010 von Thunder
gefunden!

Hallo,

großartige Neuigkeiten, der Bug, der mir schon lange auf die Nerven geht ist jetzt ziemlich wahrscheinlich gefunden. Um es endgültig festzustellen, müsste ich es über das Internet testen.
Folgendes Voraussetzungen waren gegeben: Wenn man im Client auf einen Namen klickt (rechte Maustaste), öffnet sich ein Menü mit verschiedenen Optionen (für OPs etc.) dieses muss bei Statusänderungen geupdatet werden. Wenn eine Änderung des Status eines Nutzers erfolgt, schickt der Server an alle eine Nachricht, dass der User jetzt andere Rechte hat. Jeder Client speichert seinen eigenen Username um zu vergleichen, ob es derselbe ist. Wenn ja, wird das Menü geupdatet.
Folgendes Problem entstand (merkwürdigerweise): Nach bestimmten Operationen der User stand statt "Your status changed to ..." "Dein-Nicknames status changed to ..." - heißt so viel wie, der Vergleich war falsch. Es war ein falscher Nickname gespeichert. Wieso?
Eine bescheuerte Zeile Code - so ein Judas - bewirkte, dass bei einer Namensänderung irgendeines Users durch den Befehl /nick, jeder Client den neuen Namen als seinen speicherte, damit war der Vergleich nutzlos.
Im Moment sehe ich keinen Sinn in der Zeile und habe sie auskommentiert. Beim nächsten Check wird überprüft, ob alles gut abläuft.

Jeder Client hat jetzt außerdem ein System, dass dem Programm zu jeder Zeit einen Überblick über alle User geben kann. Damit ist der Grundstein für das Schreibt-gerade-Icon gelegt. Ich hoffe, es bald implementieren zu können.

Zusätzlich werden jetzt Textpassagen, die mit ' www.' oder ' http://' beginnen hervorgehoben. Anklickbarkeit ist umsetzbar - mal sehen, was sich machen lässt.

hier noch ein kleiner Screen:
user posted image


mfg Thunder

Extras

Samstag, 12. Juni 2010 von Thunder
Hallo,

ich habe gestern noch ein paar Extras hinzugefügt. Die Designs der Server- und des Clientprogramms sind eigentlich aus der Frühzeit von MaxNet, daher habe ich gestern ein bisschen am Serverdesign geändert (Starte Server, festlegen des Ports etc. gehört nicht unter "Rechte"). Außerdem gibt es einen Button Einstellungen, der erweiterte Einstellungen zulassen können soll (zB Wortzensur).

Der Client hat nur innerlich Änderungen bekommen. Es werden ab jetzt die 10 zuletzt gesendeten Nachrichten gespeichert und man kann die wie in der Eingabeaufforderung mit Pfeil-Auf und Pfeil-Ab durchgehen und nochmal senden. Ein Hoch auf MaxGUI mit SetGadgetFilter!
Im letzten Eintrag habe ich vergessen zu erwähnen, dass es in der neuen MaxNet Version Icons neben den Namen gibt, die den Status des Benutzers anzeigen.

der Ablauf des Clientprogramms:
Wenn sich das Client-Programm startet, öffnet sich ein kleines Einlogg-Fenster. Da muss man einen Nickname, die IP-Adresse des Servers und den jeweiligen Port angeben (diese Einstellungen werden in einer ini-Datei gespeichert).
Dann öffnet sich das Hauptfenster, wie man es in den Screenshots sieht und der Client versucht sich zu verbinden. Sollte er es nicht schaffen, wartet er 6 Sekunden und versucht es nochmal (während diesen Phasen kann es passieren, dass man das Fenster nicht bewegen kann).
Wenn man verbunden ist, bekommt man vom Server die Nachricht, dass man sich eingeloggt hat. Dann die Nachricht, welchen Status man hat und dann den Topic.
Ausloggen geht durch das Schließen des Fensters.


mfg Thunder

Zum ersten...

Freitag, 11. Juni 2010 von Thunder
Hallo,

ich bin dabei mir Netzwerkkentnisse in BlitzMax anhand von BNetEx anzueignen. Daher habe ich einen TCP Chat geschrieben, der eine Mischung aus BlitzUDP und IRC und ein bisschen schlechter ist.
Ich habe das jetzt zweimal über das Internet getestet und sonst immer auf localhost. Eigentlich läuft es sehr gut.

Was ist möglich?
  • Owner-IPs zuweisen. Jemand der sich auf einer Owner-IP einloggt, bekommt automatisch Owner-Status (Owner sind unantastbar, sie können weder von anderen noch von weiteren Ownern gekickt werden, solange sie Owner sind).
  • Andere Status (Noob, Normal, Half-OP, OP)
  • Nickname ändern, während der Client läuft
  • /me und /topic (wie in IRC)
  • kicken (das Programm des gekickten beendet sich) und bannen(der gebannte bleibt auf dem Server - nur über das Server-Programm kann man noch Nachrichten von ihm lesen, nicht mal er selbst kann das). Es wird die ganze IP gebannt.
  • Höherrangige User (Half-OP, OP) müssen befehle wie /noob, /kick, /ban, /unban ... nicht auf den konventionellen Weg eingeben, sondern können diese Operationen auch durch einen Rechtsklick auf den Namen des Users in der Userliste und einen weiteren Klick im darauffolgenden Kontextmenü durchführen.
  • Quasi-Unhackbarkeit: Der Server verwaltet das meiste und theoretisch sollte man sich nicht von selbst mehr Rechte verschaffen können.


Was sollte kommen?
  • Jede Menge Debugging
  • Das was mir bei weiteren Tests auffällt
  • (eventuell) Dateiübertragung
  • (wahrscheinlich) Hervorheben eines Namens in der Userliste, wenn dieser etwas schreibt.


Heute habe ich das ganze nochmal mit Count-Doku getestet:
user posted image
(Die Fehler, die uns während unserer Diskussion aufgefallen sind, wurden behoben)

An BlueBasic-Leser: Das Projekt BlueBasic wird weitergeführt. MaxNet wurde eingeschoben, weil mir die Idee gefallen hat.


mfg Thunder

Gehe zu Seite Zurück  1, 2, 3