CrazyStat im Admin-Bereich ohne Grafiken

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
Berni
Posts: 132
Joined: Wed Feb 12, 2014 4:38 pm
Contact:

CrazyStat im Admin-Bereich ohne Grafiken

Post by Berni » Fri Jan 20, 2023 6:07 pm

Nach der Umstellung auf PHP 8.x musste auch bei CrazyStat einiges gefummelt werden.
Mit viel Forenhilfe läuft das jetzt soweit auch und der Counter zählt, aaaber

Wenn ich jetzt die Statistiken aufrufe, dann wird mir nur die Tabelle mit den Hits angezeigt und ein Teil des Inhaltes der Tabelle Besucher/Wochentag

Alle anderen Tabellen werden nicht mehr angezeigt.
Gib es eine Chance CrazyStat auch unter php8x an dieser Stelle wieder zum laufen zu bringen?

Debug wirft mir diesen Fehler aus:
XH-DEPRECATED: Function initvar() is deprecated
..../abfc-online.de/cmsimple_xh/plugins/crazystat/admin.php:38

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: CrazyStat im Admin-Bereich ohne Grafiken

Post by cmb » Fri Jan 20, 2023 9:34 pm

Berni wrote:
Fri Jan 20, 2023 6:07 pm
Gib es eine Chance CrazyStat auch unter php8x an dieser Stelle wieder zum laufen zu bringen?
Schau ich mir baldigst noch mal genauer an. Ist eigentlich ein nettes Skript, das halt doch ziemlich ins Alter gekommen ist. Versprechen kann ich nichts.
Christoph M. Becker – Plugins for CMSimple_XH

Berni
Posts: 132
Joined: Wed Feb 12, 2014 4:38 pm
Contact:

Re: CrazyStat im Admin-Bereich ohne Grafiken

Post by Berni » Sat Jan 21, 2023 6:05 am

Das wäre echt super, denn als Alternative zu Google und Co ist man mit diesem PLUGIN einigermaßen DSGVO-konform gewesen.

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: CrazyStat im Admin-Bereich ohne Grafiken

Post by cmb » Sat Jan 21, 2023 10:59 am

Berni wrote:
Fri Jan 20, 2023 6:07 pm
Debug wirft mir diesen Fehler aus:
XH-DEPRECATED: Function initvar() is deprecated
..../abfc-online.de/cmsimple_xh/plugins/crazystat/admin.php:38
Den kannst du getrost ignorieren; die Funktion wird nicht sobald verschwinden, und da gibt es vermutlich viel ärgere Probleme mit Crazystat.

Ich habe die Bilder zur Anzeige bringen können mit folgendem Patch: https://gist.github.com/cmb69/ccd5cf30c ... eab9874330.

Also in analyze.php die rote Zeile durch die grüne ersetzen (ohne das +/- am Zeilenanfang). Und in module_out.php muss wieder die rote Zeile durch die beiden grünen ersetzt werden (wieder ohne +/-).

Darüber hinaus muss man sich für anonymize_ip() in stat.php was einfallen lassen, da das nicht für IPv6 funktioniert. Ich meine, das wurde hier im Forum bereits besprochen, kann es aber nicht finden. Im schlimmsten Fall könnte man wohl _php_filter_validate_ipv6 nach PHP portieren und anpassen. Vielleicht geht es auch einfacher.

Und vermutlich sind da noch jede Menge weiterer Dinge zu überarbeiten. Gebt bitte Bescheid, wenn noch was auffällt.
Christoph M. Becker – Plugins for CMSimple_XH

lck
Posts: 2963
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: CrazyStat im Admin-Bereich ohne Grafiken

Post by lck » Sat Jan 21, 2023 11:27 am

cmb wrote:
Sat Jan 21, 2023 10:59 am
Darüber hinaus muss man sich für anonymize_ip() in stat.php was einfallen lassen, da das nicht für IPv6 funktioniert. Ich meine, das wurde hier im Forum bereits besprochen, kann es aber nicht finden.
viewtopic.php?t=10101&start=190#p66802
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: CrazyStat im Admin-Bereich ohne Grafiken

Post by cmb » Sat Jan 21, 2023 1:56 pm

lck wrote:
Sat Jan 21, 2023 11:27 am
viewtopic.php?t=10101&start=190#p66802
Vielen Dank, Ludwig! Eine echte Lösung ist da leider nicht zu finden; das Crazystat-Forum wurde wohl in der Zwischenzeit geschlossen, und auf das Ticket wurde auch nicht geantwortet, und das Repo ist mittlerweile archiviert. Sieht so aus als ob die Upstream-Entwicklung eingestellt wurde. :(

Immerhin fand ich dort einen PR von mir; im wesentlichen der gleiche Fix, den ich weiter oben vorgeschlagen habe (hab aber nicht bei mir selbst abgeschrieben).

Also schau ich mal selbst; inet_pton sollte helfen.
Christoph M. Becker – Plugins for CMSimple_XH

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: CrazyStat im Admin-Bereich ohne Grafiken

Post by cmb » Sat Jan 21, 2023 3:38 pm

cmb wrote:
Sat Jan 21, 2023 1:56 pm
Also schau ich mal selbst; inet_pton sollte helfen.
Ja, tut es. Man sollte also in plugins/crazystat/stat/src/stat.php die Funktion anonymize_ip() durch folgende (grob getestete) ersetzen:

Code: Select all

function anonymize_ip($ip, $resolution, $colors) {
	global $config_salt_str;
	$bin = inet_pton($ip);
	if ($bin === false) {
		// if the IP can't be parsed for whatever reason, we just use its MD5 hash;
		// that should be sufficient for anonymization purposes, and also for
		// recognizing a certain user
		$bin = md5($ip, true);
	}
	$octets = array_map('ord', str_split($bin));
	// keep the first octets (2 for IPv4, 6 for IPv6)
	$ip_a = implode(".", array_slice($octets, 0, count($octets) === 16 ? 6 : 2)) . ".";
	// calculate user characteristic numbers
	$user_ua = ord_all($_SERVER['HTTP_USER_AGENT']);
	$user_res = ord_all($resolution);
	$user_colors = ord_all($colors);
	$user_salt = ord_all($config_salt_str);
	$user_ip = ord_all(md5($config_salt_str . $ip));
	// 3rd/7th octet: sum up user characteristics
	$ip_a .= ($user_ip + $user_colors) % 256 . '.';
	// 4th/8th octet: sum up user characteristics
	$ip_a .= ($user_ip + $user_ua + $user_res + $user_salt) % 256;
	// add an asterisk to make clear the IP has been anonymized
	$ip_a .= '*'; 
	return $ip_a;
}
Tut man das nicht, dann kann es sein, dass IPv6-Adressen nicht anonymisiert gespeichert werden, was sicher nicht gewünscht ist. Ist das bereits passiert, dann am besten unter plugins/crazystat/stat/usr/logs/ nachschauen, und manuell bereinigen. Und die Dateien unter plugins/crazystat/stat/usr/cache/ müssten auch bereinigt werden; da es cache heißt, kann man sie vermutlich einfach löschen (vielleicht gibt es dafür auch ein Möglichkeit im Administrationsbereich von Crazystat).

PS: die obige Routine ist für IPv4 mapped IPv6 Adressen ungeeignet (da wird einfach zu viel anonymisiert). Ich weiß allerdings nicht, ob diese in der Praxis relevant sind.
Christoph M. Becker – Plugins for CMSimple_XH

Hartmut
Posts: 553
Joined: Sat Nov 05, 2011 6:13 pm
Location: Butzbach, Deutschland
Contact:

Re: CrazyStat im Admin-Bereich ohne Grafiken

Post by Hartmut » Sat Jan 21, 2023 9:50 pm

Hallo,

als langjähriger Nutzer von XH und Crazystat habe ich den Bugfix ausprobiert da bei mir eine Umstellung von PHP 7.4 auf PHP 8.x ansteht.
cmb wrote:
Sat Jan 21, 2023 10:59 am
Ich habe die Bilder zur Anzeige bringen können mit folgendem Patch: https://gist.github.com/cmb69/ccd5cf30c ... eab9874330.

Also in analyze.php die rote Zeile durch die grüne ersetzen (ohne das +/- am Zeilenanfang). Und in module_out.php muss wieder die rote Zeile durch die beiden grünen ersetzt werden (wieder ohne +/-).
....
Fazit.
mit den Änderungen in den beiden Dateien trat eine leichte Verbesserung ein.
Es werden jetzt alle Fenster in der Statistik angezeigt.
In den Fenstern werden in den Spalten "Anzahl", "Anteil" und "Datei" die realen Werte nicht mehr angezeigt, da die Einträge in den Fenstern immer der gleiche Wert / Anzahl angezeigt wird.
Getestet mit 7.4, 8.0, 8.1, 8.2

Viele Grüße
Hartmut

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: CrazyStat im Admin-Bereich ohne Grafiken

Post by cmb » Sun Jan 22, 2023 2:29 pm

Hartmut wrote:
Sat Jan 21, 2023 9:50 pm
In den Fenstern werden in den Spalten "Anzahl", "Anteil" und "Datei" die realen Werte nicht mehr angezeigt, da die Einträge in den Fenstern immer der gleiche Wert / Anzahl angezeigt wird.
Getestet mit 7.4, 8.0, 8.1, 8.2
Danke fürs Testen, Hartmut! Und ja, die each() Ersetzung ist mir tüchtig misslungen (ich habe diese Funktion allerdings auch nie genutzt). Da müsste noch eine Zeile einfügt werden:

Code: Select all

 stat/src/module_out.php | 1 +
 1 file changed, 1 insertion(+)

diff --git a/stat/src/module_out.php b/stat/src/module_out.php
index 43c248e..b1ec0d9 100644
--- a/stat/src/module_out.php
+++ b/stat/src/module_out.php
@@ -632,6 +632,7 @@ function module_out($modul) {
 							$separate = false;
 						$eintrag = key($module_werte);
 						$anzahl = current($module_werte);
+						next($module_werte);
 						if (!isset($config_stat_limit[$modul])
 								|| ($_SESSION['set_' . $modul . '_all']
 										|| $i < $config_stat_limit[$modul])) {
(also die Zeile die durch das + am Anfang markiert ist einfügen, aber das + weglassen)

Passt es dann bei dir? (Beim Debuggen hatte ich jede Menge Fehler unter PHP 8.2, aber die treten möglicherweise in der Praxis nicht auf; ich musste halt manuelle Änderungen in Counter-Dateien vornehmen.)
Christoph M. Becker – Plugins for CMSimple_XH

Hartmut
Posts: 553
Joined: Sat Nov 05, 2011 6:13 pm
Location: Butzbach, Deutschland
Contact:

Re: CrazyStat im Admin-Bereich ohne Grafiken

Post by Hartmut » Sun Jan 22, 2023 6:55 pm

cmb wrote:
Sun Jan 22, 2023 2:29 pm
...
Danke fürs Testen, Hartmut! Und ja, die each() Ersetzung ist mir tüchtig misslungen (ich habe diese Funktion allerdings auch nie genutzt). Da müsste noch eine Zeile einfügt werden:
...

Passt es dann bei dir? (Beim Debuggen hatte ich jede Menge Fehler unter PHP 8.2, aber die treten möglicherweise in der Praxis nicht auf; ich musste halt manuelle Änderungen in Counter-Dateien vornehmen.)
Hallo Christoph,
ja, jetzt sehen die Statistikfenster unter den 4 PHP Versionen gut aus.
Beim Wechsel zwischen verschiedenen Darstellungsmodies der Anzeige ist mir nichts ungewöhnliches aufgefallen.

Wegen IPv6 habe ich mal ins Logfile geschaut und auf den "1. Blick" keine vollständigen IPs gesehen (anonymisierte IPs ist seit Jahren aktiviert).

Viele Grüße
Hartmut

Post Reply