| 
									
										
										
										
											2014-12-18 19:54:31 +01:00
										 |  |  | # -*- coding: utf-8 -*- | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # Copyright Grégory Soutadé 2015 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # This file is part of iwla | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # iwla is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  | # it under the terms of the GNU General Public License as published by | 
					
						
							|  |  |  | # the Free Software Foundation, either version 3 of the License, or | 
					
						
							|  |  |  | # (at your option) any later version. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # iwla is distributed in the hope that it will be useful, | 
					
						
							|  |  |  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  | # GNU General Public License for more details. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # You should have received a copy of the GNU General Public License | 
					
						
							|  |  |  | # along with iwla.  If not, see <http://www.gnu.org/licenses/>. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-25 16:59:29 +01:00
										 |  |  | import time | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from iwla import IWLA | 
					
						
							|  |  |  | from iplugin import IPlugin | 
					
						
							|  |  |  | from display import * | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-19 11:34:25 +01:00
										 |  |  | """
 | 
					
						
							|  |  |  | Display hook | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Create All visits page | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Plugin requirements : | 
					
						
							|  |  |  |     None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Conf values needed : | 
					
						
							|  |  |  |     display_visitor_ip* | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Output files : | 
					
						
							|  |  |  |     OUTPUT_ROOT/year/month/all_visits.html | 
					
						
							|  |  |  |     OUTPUT_ROOT/year/month/index.html | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Statistics creation : | 
					
						
							|  |  |  |     None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Statistics update : | 
					
						
							|  |  |  |     None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Statistics deletion : | 
					
						
							|  |  |  |     None | 
					
						
							|  |  |  | """
 | 
					
						
							| 
									
										
										
										
											2014-12-10 21:15:56 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-25 16:59:29 +01:00
										 |  |  | class IWLADisplayAllVisits(IPlugin): | 
					
						
							|  |  |  |     def __init__(self, iwla): | 
					
						
							|  |  |  |         super(IWLADisplayAllVisits, self).__init__(iwla) | 
					
						
							|  |  |  |         self.API_VERSION = 1 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-26 20:31:13 +01:00
										 |  |  |     def hook(self): | 
					
						
							| 
									
										
										
										
											2014-12-08 14:13:26 +01:00
										 |  |  |         display = self.iwla.getDisplay() | 
					
						
							| 
									
										
										
										
											2014-11-26 20:31:13 +01:00
										 |  |  |         hits = self.iwla.getValidVisitors() | 
					
						
							| 
									
										
										
										
											2014-11-27 09:01:51 +01:00
										 |  |  |         display_visitor_ip = self.iwla.getConfValue('display_visitor_ip', False) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-25 16:59:29 +01:00
										 |  |  |         last_access = sorted(hits.values(), key=lambda t: t['last_access'], reverse=True) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-19 17:50:45 +01:00
										 |  |  |         title = createCurTitle(self.iwla, u'All visits') | 
					
						
							| 
									
										
										
										
											2014-11-25 16:59:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-27 14:11:47 +01:00
										 |  |  |         filename = 'all_visits.html' | 
					
						
							| 
									
										
										
										
											2014-11-27 14:29:25 +01:00
										 |  |  |         path = self.iwla.getCurDisplayPath(filename) | 
					
						
							| 
									
										
										
										
											2014-11-25 16:59:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-08 14:13:26 +01:00
										 |  |  |         page = display.createPage(title, path, self.iwla.getConfValue('css_path', [])) | 
					
						
							| 
									
										
										
										
											2020-12-11 09:18:50 +01:00
										 |  |  |         table = display.createBlock(DisplayHTMLBlockTable, self.iwla._(u'Last seen'), [self.iwla._(u'Host'), self.iwla._(u'Pages'), self.iwla._(u'Hits'), self.iwla._(u'Bandwidth'), self.iwla._(u'Last seen')], [3]) | 
					
						
							| 
									
										
										
										
											2014-11-28 16:02:04 +01:00
										 |  |  |         table.setColsCSSClass(['', 'iwla_page', 'iwla_hit', 'iwla_bandwidth', '']) | 
					
						
							| 
									
										
										
										
											2014-11-27 21:40:23 +01:00
										 |  |  |          | 
					
						
							| 
									
										
										
										
											2014-11-25 16:59:29 +01:00
										 |  |  |         for super_hit in last_access: | 
					
						
							| 
									
										
										
										
											2014-11-26 16:17:16 +01:00
										 |  |  |             address = super_hit['remote_addr'] | 
					
						
							| 
									
										
										
										
											2014-11-27 09:01:51 +01:00
										 |  |  |             if display_visitor_ip and\ | 
					
						
							| 
									
										
										
										
											2014-11-26 16:17:16 +01:00
										 |  |  |                     super_hit.get('dns_name_replaced', False): | 
					
						
							|  |  |  |                 address = '%s [%s]' % (address, super_hit['remote_ip']) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-25 16:59:29 +01:00
										 |  |  |             row = [ | 
					
						
							| 
									
										
										
										
											2014-11-26 16:17:16 +01:00
										 |  |  |                 address, | 
					
						
							| 
									
										
										
										
											2017-08-24 07:55:53 +02:00
										 |  |  |                 super_hit['viewed_pages'][0], | 
					
						
							|  |  |  |                 super_hit['viewed_hits'][0], | 
					
						
							| 
									
										
										
										
											2020-12-11 09:18:50 +01:00
										 |  |  |                 super_hit['bandwidth'][0], | 
					
						
							| 
									
										
										
										
											2014-11-25 16:59:29 +01:00
										 |  |  |                 time.asctime(super_hit['last_access']) | 
					
						
							|  |  |  |                 ] | 
					
						
							|  |  |  |             table.appendRow(row) | 
					
						
							|  |  |  |         page.appendBlock(table) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         display.addPage(page) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-26 20:31:13 +01:00
										 |  |  |         index = self.iwla.getDisplayIndex() | 
					
						
							| 
									
										
										
										
											2014-12-17 20:31:59 +01:00
										 |  |  |         link = '<a href=\'%s\'>%s</a>' % (filename, self.iwla._(u'All visits')) | 
					
						
							|  |  |  |         block = index.getBlock(self.iwla._(u'Top visitors')) | 
					
						
							| 
									
										
										
										
											2014-11-27 19:38:41 +01:00
										 |  |  |         if block: | 
					
						
							|  |  |  |             block.setTitle('%s - %s' % (block.getTitle(), link)) | 
					
						
							|  |  |  |         else: | 
					
						
							| 
									
										
										
										
											2014-12-08 14:13:26 +01:00
										 |  |  |             block = display.createBlock(DisplayHTMLRawBlock) | 
					
						
							| 
									
										
										
										
											2014-11-27 19:38:41 +01:00
										 |  |  |             block.setRawHTML(link) | 
					
						
							|  |  |  |             index.appendBlock(block) |