1*cf9f7fe8SSascha Leib<?php /* MONITOR PLUGIN PAGE VIEW SCRIPT */ 2*cf9f7fe8SSascha Leib 3*cf9f7fe8SSascha Leib/* parse the JSON payload */ 4*cf9f7fe8SSascha Leib$json = json_decode($_POST['pageview'], true); 5*cf9f7fe8SSascha Leibif (!$json) { 6*cf9f7fe8SSascha Leib http_response_code(400); 7*cf9f7fe8SSascha Leib die("Error: Invalid JSON data sent to server."); 8*cf9f7fe8SSascha Leib} 9*cf9f7fe8SSascha Leib 10*cf9f7fe8SSascha Leib/* build the resulting log line (ensure fixed column positions!) */ 11*cf9f7fe8SSascha Leib$logArr = Array( 12*cf9f7fe8SSascha Leib $_SERVER['REMOTE_ADDR'] ?? 'null', /* remote IP */ 13*cf9f7fe8SSascha Leib $json['pg'] ?? 'null', /* DW page ID */ 14*cf9f7fe8SSascha Leib $_COOKIE['DokuWiki'] ?? 'null', /* DokuWiki session ID */ 15*cf9f7fe8SSascha Leib $json['u'] ?? 'null' /* DW User id (if logged in) */ 16*cf9f7fe8SSascha Leib // $json['tz'] ?? 'null', /* timzone offset */ 17*cf9f7fe8SSascha Leib // $json['lg'] ?? 'null', /* browser language */ 18*cf9f7fe8SSascha Leib // $json['td'] ?? 'null', /* load time */ 19*cf9f7fe8SSascha Leib // $json['scr'] ?? 'null', /* Screen dimensions */ 20*cf9f7fe8SSascha Leib // $json['l'] ?? 'null', /* Accepted languages list */ 21*cf9f7fe8SSascha Leib // $json['url'] ?? 'null', /* Full request URL */ 22*cf9f7fe8SSascha Leib // $json['r'] ?? 'null', /* Referrer URL */ 23*cf9f7fe8SSascha Leib // $_SERVER['HTTP_USER_AGENT'] ?? 'null', /* User agent */ 24*cf9f7fe8SSascha Leib // $json['t'] ?? '' /* Page title */ 25*cf9f7fe8SSascha Leib); 26*cf9f7fe8SSascha Leib 27*cf9f7fe8SSascha Leib/* create the log line */ 28*cf9f7fe8SSascha Leib$filename = 'logs/' . gmdate('Y-m-d') . '.log'; /* use server datetime */ 29*cf9f7fe8SSascha Leib$logline = gmdate('Y-m-d H:i:s'); 30*cf9f7fe8SSascha Leibforeach ($logArr as $val) { 31*cf9f7fe8SSascha Leib $logline .= "\t" . $val; 32*cf9f7fe8SSascha Leib}; 33*cf9f7fe8SSascha Leib 34*cf9f7fe8SSascha Leib/* write the log line to the file */ 35*cf9f7fe8SSascha Leib$logfile = fopen($filename, 'a'); 36*cf9f7fe8SSascha Leibif (!$logfile) { 37*cf9f7fe8SSascha Leib http_response_code(500); 38*cf9f7fe8SSascha Leib die("Error: Unable to open log file. Please check file permissions."); 39*cf9f7fe8SSascha Leib} 40*cf9f7fe8SSascha Leib 41*cf9f7fe8SSascha Leibif (fwrite($logfile, $logline . "\n") === false) { 42*cf9f7fe8SSascha Leib http_response_code(500); 43*cf9f7fe8SSascha Leib fclose($logfile); 44*cf9f7fe8SSascha Leib die("Error: Could not write to log file."); 45*cf9f7fe8SSascha Leib} 46*cf9f7fe8SSascha Leibfclose($logfile); 47*cf9f7fe8SSascha Leib 48*cf9f7fe8SSascha Leib/* send a 202 response */ 49*cf9f7fe8SSascha Leibhttp_response_code(202); 50*cf9f7fe8SSascha Leibecho "OK";