PiwikTracker.php logt keine alten Daten


#1

Hi,
ich habe mich eine Weile mit Apache2Piwik auseinander gesetzt und kam sehr schnell an die Grenzen des kleinen Programms. Nun bin ich am entwickeln eines eigenen Piwik Plug Ins.
Das Ziel ist das Einlesen verschiedener Datein (.log, .csv, .xml etc) die LogDaten verschiedener Server beinhalten. Die LogDaten können in unterschiedlicher Form vorliegen, dh. Standard Apache Log Format, IIS Log File Format, selbst zusammen gestelltes Format etc pp. In späterer Version soll das Einlesen auch von einem Cronjob übernommen werden können. … kurzum: ich hab noch viel vor xD

Apache2Piwik liest ein LogFile und tragt es direkt in die Piwik Datenbank ein. Der Vorgang ist schnell, hat aber den Nachteil, dass bei eventuellen Änderungen von Piwiks internen Aufbau A2P unbrauchbar wird.
Daher wollte ich eine andere Lösung suchen und fand die PiwikTracker.php. Mit deren Hilfe habe ich angefangen ein bissel rumzuspielen und komme im Moment leider nicht weiter : (

Das PlugIn hat den Namen LogFile2Piwik (jaja… ein bissel geklaut ist der Name schon xD). Aktuell habe ich im Controller eine LogZeile. Diese formatiere ich zu einem Array (das geht). Anschließend übergebe ich die Werte dem PiwikTracker.

Problem hierbei: der Log ist aus der Vergangenheit. Damit das getrackt wird, muss ich mein Super User token_auth mit geben. Dieses trage ich aber nicht als Wert ein, sondern bekomme es aus meiner getTokenAuth() Funktion. Wenn ich die $piwikTracker->setTokenAuth Zeile auskommentiere, und auf die Overview Seite meines PlugIns gehe, wird alles mit der aktuellen Server Zeit getrackt. Wenn ich die Zeile nicht auskommentiere, passiert nichts… Wenn ich mein TokenAuth direkt eingebe per $piwikTracker->setTokenAuth(‘AAA000AAA000’) passiert ebenfalls nichts. Wo ist der Fehler? o.O
Zweite Frage: Die Funktion $piwikTracker->doTrackPageView(’…’) gibt einen String zurück. Dieser ist immer(!) GIF89a�!�,D; wtf? was sagt mir das?


	public function overview() {
		// Einbinden der overview.tpl
		$view = Piwik_View::factory('overview');
		$this->parseLogs();
		echo $view->render();
	}

	protected function parseLogs() {
		// FORUMINFO: Log wurde von mir aus Sicherheitsgründen geändert
		$logPageTitel = 'PAGETITLE';
		$logString = '01.001.001.01 - - [18/Dec/2011:20:40:43 +0000] "GET /URL.URL/FILE?PARAMETER HTTP/1.1" 200 2658 "https://URL.URL/FILE?PARAMETER" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" "-"';
		// FORUMINFO: Der LogParser formatiert den String zu einem netten Array. Das funktioniert!
		$logArray = LogParser::formatLine($logString);

		$piwikTracker = new PiwikTracker( 1, Piwik::getPiwikUrl() );
		$piwikTracker->setTokenAuth( $this->getTokenAuth() );  // auskommentiert: geht, nicht auskommentiert: es passiert nichts... o.O'
		$piwikTracker->setIp( $logArray['ip'] );
		$piwikTracker->setForceVisitDateTime( $this->parseDateTimeToUNIX ($logArray['date'], '/', $logArray['time'], ':') );  // geht auch
		$piwikTracker->setUrlReferrer( $logArray['referer'] );
		$piwikTracker->setUserAgent( $logArray['agent'] );
		$response = $piwikTracker->doTrackPageView( $logPageTitel ); // return GIFbinärzeichen, wieso?
	}

	protected function getTokenAuth() {
		if ( !Piwik::isUserIsSuperUser() ) {
			Piwik::exitWithErrorMessage('User must be Super User or Admin.');
		}
		$tokenAuth = Piwik::getCurrentUserTokenAuth();
		if( $this->checkTokenAuth($tokenAuth) ) { // macht ein preg_match mit '/^([a-zA-Z0-9]){32}$/'
			return $tokenAuth;
		}
	}

Ich hoffe jemand findet meinen Fehler : ) und entschuldigt das es schonwieder soviel Text wurde.
Gruß nana


#2

Kann mir denn keiner Helfen? o.o’’


#3

Hi,
nachdem mir hier leider niemand sagen konnte, was ich falsch gemacht habe, komme ich selber mit der Antwort.

In der PiwikTracker.php steht:
Allowed only for Super User, must be used along with setTokenAuth(). Set tracking_requests_require_authentication = 0 in config.ini.php [Tracker] section to change this security constraint.

Das heißt zu gut deutsch: öffnet die PIWIKORDNER/config/config.ini.php und fügt am Ende die folgenden zwei Zeilen ein.


[Tracker]
tracking_requests_require_authentication = 0

Anmerkung: Ich konnte bisher keinen Track erzeugen, dessen Datum vor dem erstellen der entsprechenden Piwik-Website liegt. das heißt, wenn ich Piwik installiert habe und am Tag 01.01.2012 den Shop XYZ erzeugt habe, kann ich kein Track loggen, der am 31.12.2011 war. Falls ich das Problem gelöst habe schreibe ich es. Falls jemand die Problemlösung kennt, würde ich mich freuen wenn er es hier reinschreibt.
Anmerkung2: in der global.ini.php gibt es ebenfalls eine Variable tracking_requests_require_authentication. Diese ist per default auf 1 gesetzt. Darüber steht auch die erklärung wofür die Variable steht:


; When using the Tracking API, to override either the date & time of a request,
; or to override the visitor IP, it is required to pass in the token_auth with an "admin" access
; if you set this setting to 0, the token_auth will not be required anymore

MfG
Nana