Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Banana-Coding.com - Java Knuddels Emulator. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

21.07.2013, 10:58

Kurzbeschreibung

KInspect ist ein Tool, welches den Verkehr zwischen dem Knuddels-Server und einem Clienten anzeigen kann.

Beschreibung

Guten Tag,

KInspect ist ein Tool, welches den Verkehr zwischen dem Knuddels-Server und einem Clienten anzeigen kann und somit eine Hilfe zur Implementierung verschiedener Funktionen für den eigenen Emulator darstellt.
Es ist in Java geschrieben und bietet neben einer Knuddels-Bridge auch eine HTTP-Bridge, um auch den HTTP-Verkehr beobachten zu können (z.B. Grafiken, Applets, Skripte etc.).

Erste Schritte
Das Programm kann wahlweise per Doppelklick bei richtig konfigurierter JRE oder per Konsole/Batch-File gestartet werden. Dazu sollte folgendes Kommando verwendet werden:

Quellcode

1
java -jar kinspect.jar

Nach dem Start öffnet sich das Hauptfenster, auf welchem sich ein Button mit der Aufschrift "Open Login" befindet. Dieser öffnet das Webinterface von kinspect, auf dem sich immer das aktuellste Applet befindet.
Sobald die Seite (standardmäßig http://localhost:8080/) geöffnet wurde, startet das Logging im Hauptfenster.

Logging
Über den Menüpunkt "Log Config" kann ab sofort das Logging einzelner Pakete eingestellt werden.
Es ist möglich, Pakete zu identifizieren und gezielt in eine Datei zu schreiben.
Beispiele:
  • Module: true, Regex: true, Enabled: true, Search Term: .
    Module: false, Regex: true, Enabled: true, Search Term: .
    (Diese Kombination loggt ausnahmslos alle Pakete in eine separate Datei für jede Verbindung)
  • Module: true, Regex: false, Enabled: true, Search Term: PREFETCH_MODULE
    (Diese Zeile speichert alle PREFETCH_MODULE-Pakete)
  • Module: true, Regex: true, Enabled: true, Search Term: ^BINGO_
    (Speichert alle BINGO_-Modul-Pakete in die Log-Datei)
Mit diesem neuen Feature können somit bestimmte Pakete gefiltert werden und in eine Logdatei geschrieben werden (im Ordner data/logs).
Das Format sieht dabei folgendermaßen aus:

Quellcode

1
2
3
4
5
[20:39:07 Message; Opcode: :; Name: PREFETCH_MODULE; Direction: TOCLIENT]
Hexdump:
3A 00 00 55 19 73 6D 69 6C 65 79 62 6F 78 2E 53 6D 69 6C 65 79 42 6F 78 4D 6F 64 75 6C 65 00 00 00 00 
String:
:\0\0Usmileybox.SmileyBoxModule\0\0\0\0


GameServer-Logging
Seit Version 0.204 ist es möglich, den Verkehr zwischen dem Clienten und den Gameservern zu loggen. Dazu muss die kinspect.cfg eventuell verändert werden (siehe Abschnitt Konfiguration).
Für jede Verbindung wird ein neuer Tab geöffnet, welcher den Namen des Servers als Suffix trägt (siehe Screenshot). Zu beachten ist, dass es keine Opcodes wie bei normalen Verbindungen gibt und nur Module eingesetzt werden können.
Im ModuleTreeView ist ein zweiter Tab vorhanden, der den Tree für die Gameserver darstellen kann.

Packet-Builder
Der Packet-Builder ist ein neues Tool, mit welchem Pakete zum Server oder zum Clienten gesendet werden können. Es ist sowohl möglich, Module-Pakete als auch normale Messages zu erstellen.
Nachdem ein Paket erstellt wurde, kann man dieses an eine Partie senden, als String ausgeben lassen oder einen Java-Code-Ausschnitt erstellen lassen.
Beispiel Code-Ausschnitt:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
	private static String createSHOW_BUTTONS(ModuleFactory factory) {
		Module SHOW_BUTTONS = factory.createInstance((short) 92);
		SHOW_BUTTONS.add("CHANNEL_NAME", "/test");
		SHOW_BUTTONS.add("BUTTON", new ArrayList<Object>());
		// #0
		Module BUTTON = factory.createInstance((short) 90);
		SHOW_BUTTONS.addToArray("BUTTON", BUTTON);
		BUTTON.add("TEXT", "test");
		BUTTON.add("IMAGE", "");
		BUTTON.add("BUTTON_ALIGN", (Integer) 0);
		BUTTON.add("CHAT_FUNCTION", "/a h3h3j0");
		
		SHOW_BUTTONS.add("ANALOG_BUTTON", new ArrayList<Object>());
		return SHOW_BUTTONS.toString();
	}

Ich werde in den nächsten Tagen meine Module-Klasse veröffentlichen, womit dieser Code verwendet werden kann. (Ich hoffe diese neue Funktion vereinfacht viele Dinge, die mit dem "neuen" Protokoll zu tun haben)

Konfiguration
KInspect kann über zwei Dateien konfiguriert werden:
kinspect.cfg
  • location: Die Seite, die dem Server als Referer angezeigt werden soll. (%s wird durch die Version ersetzt)
  • moduleSetup: Der ModuleTree, der zum Startzeitpunkt verwendet werden soll. (Sollte nicht verändert werden, da es programmseitig aktualisiert wird)
  • cgModuleSetup: Der ModuleTree für die Cardgames. (Sollte nicht verändert werden, s.o.)
  • kndsLoc: Knuddels-Homepage, von der die aktuelle Version bezogen wird. (Sollte nicht verändert werden)
  • autoLoad: Wird durch das Subprogramm "Log Config" gesetzt.
  • destHost: Der Knuddels-Host.
  • destPort: Der Knuddels-Port.
  • proxyPort: Der Port, auf dem der Kinspect-knds-Server läuft.
  • httpPort: Der HTTP-Port. (Standardmäßig 8080, da 80 häufig belegt ist)
  • gameServer: Eine Liste der unterstützten GameServer, kann beliebig im Format Name/Port erweitert werden.
token.cfg
Diese Datei beinhaltet die Namen der einzelnen Pakete. Der Aufbau sieht wie folgt aus:

Quellcode

1
<Direction> <Opcode> <Name>

Wobei Direction durch o (Output) oder i (Input) abgekürzt wird.

Fehlerbehandlung
Sollte ein Fehler auftreten, startet das Programm bitte via "java -jar kinspect.jar" und schreibt den Output in den Thread oder benutzt den Button "Log" im Hauptfenster (sofern möglich), ansonsten ist Support nicht möglich.

Screenshots




Vorschläge sind selbstverständlich gern gesehen, ebenso wie Spenden ;)

Changelog
Version 0.201 (03. Juli 2013)
  • [BUGFIX] Direkter Start der JAR funktioniert jetzt
  • [NEW] Logging für einzelne Pakete hinzugefügt
  • [NEW] Log (Programmoutput) hinzugefügt
  • [NEW] Neue Ordnerstruktur (data, data/config, data/logs)
Version 0.202 (05. Juli 2013)
  • [BUGFIX] Nur noch lconf-Dateien werden im LogSettingsView angezeigt
  • [BUGFIX] Alte kinspect.properties-Datei wird nicht mehr geladen
  • [BUGFIX] Doppelte Slashes im HTTP-View werden nicht mehr angezeigt
  • [NEW] Vorhandene Logs können zum erneuten Ansehen geladen werden
  • [NEW] Automatisches Laden von Log-Config-Dateien nun möglich
  • [NEW] Leerzeichen im HexView zwischen zwei Bytes
Version 0.203 (17. Juli 2013)
  • [BUGFIX] ModuleEntry ohne Wert kann nun angezeigt werden
  • [NEW] PacketBuilder/Sender hinzugefügt
  • [NEW] Scrolling kann für den TrafficLog deaktiviert werden
  • [NEW] Neuer Button, um den Login zu öffnen
Version 0.204 (21. Juli 2013)
  • [NEW] GameServer sind nun verfügbar (plus ModuleTree)
  • [NEW] Tabs können geschlossen werden
  • [NEW] Alle Nodes im ModuleView sind standardmäßig geöffnet
  • [NEW] Vereinfachte Menüführung
  • [NEW] Navigation durch Tastatur jetzt im ModuleView möglich

KrT.


Webdisk 1.1.5 © www.viecode.com 2010-2012