summaryrefslogtreecommitdiffstats
path: root/modules/statistics/lib/LogParser.php
blob: bde18db3711820337b877d39ffbe955ac9b4190f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
/*
 * @author Andreas Åkre Solberg <andreas.solberg@uninett.no>
 * @package simpleSAMLphp
 */
class sspmod_statistics_LogParser {

	private $datestart;
	private $datelength;
	private $offset;

	/**
	 * Constructor
	 *
	 * @param $datestart   At which char is the date starting
	 * @param $datelength  How many characters is the date (on the b
	 * @param $offset      At which char is the rest of the entries starting
	 */
	public function __construct($datestart, $datelength, $offset) {
		$this->datestart = $datestart;
		$this->datelength = $datelength;
		$this->offset = $offset;
	}

	public function parseEpoch($line) {
		$epoch = strtotime(substr($line, 0, $this->datelength));
		if ($epoch > time() + 60*60*24*31) {
			/*
			 * More than a month in the future - probably caused by
			 * the log files missing the year.
			 * We will therefore subtrackt one year.
			 */
			$hour = gmdate('H', $epoch);
			$minute = gmdate('i', $epoch);
			$second = gmdate('s', $epoch);
			$month = gmdate('n', $epoch);
			$day = gmdate('j', $epoch);
			$year = gmdate('Y', $epoch) - 1;
			$epoch = gmmktime($hour, $minute, $second, $month, $day, $year);
		}
		return $epoch;
	}

	public function parseContent($line) {
		$contentstr = substr($line, $this->offset);
		$content = explode(' ', $contentstr);
		return $content;
	}
	
	
	# Aug 27 12:54:25 ssp 5 STAT [5416262207] saml20-sp-SSO urn:mace:feide.no:services:no.uninett.wiki-feide sam.feide.no NA
	# 
	#Oct 30 11:07:14 www1 simplesamlphp-foodle[12677]: 5 STAT [200b4679af] saml20-sp-SLO spinit urn:mace:feide.no:services:no.feide.foodle sam.feide.no
	
	function parse15($str) {
		$di = date_parse($str);
		$datestamp = mktime($di['hour'], $di['minute'], $di['second'], $di['month'], $di['day']);	
		return $datestamp;
	}
	
	function parse23($str) {
		$timestamp = strtotime($str);
		return $timestamp;
	}


}