New: Added svn family to browsers detection.
@MiscListOrder=('AddToFavourites','JavascriptDisabled','JavaEnabled','DirectorSupport','FlashSupport','RealPlayerSupport','QuickTimeSupport','WindowsMediaPlayerSupport','PDFSupport');
%MiscListCalc=('TotalMisc'=>'','AddToFavourites'=>'u','JavascriptDisabled'=>'hm','JavaEnabled'=>'hm','DirectorSupport'=>'hm','FlashSupport'=>'hm','RealPlayerSupport'=>'hm','QuickTimeSupport'=>'hm','WindowsMediaPlayerSupport'=>'hm','PDFSupport'=>'hm');
%OSFamily=('win'=>'Windows','mac'=>'Macintosh','linux'=>'Linux','bsd'=>'BSD');
-%BrowsersFamily=('msie'=>1,'firefox'=>2,'netscape'=>3);
+%BrowsersFamily=('msie'=>1,'firefox'=>2,'netscape'=>3,'svn'=>4);
@SessionsRange=('0s-30s','30s-2mn','2mn-5mn','5mn-15mn','15mn-30mn','30mn-1h','1h+');
%SessionsAverage=('0s-30s',15,'30s-2mn',75,'2mn-5mn',210,'5mn-15mn',600,'15mn-30mn',1350,'30mn-1h',2700,'1h+',3600);
# HTTP-Accept or Lang parameter => AWStats code to use for lang
# Sanity check (if loaded)
if ((scalar keys %OSHashID) && @OSSearchIDOrder != scalar keys %OSHashID) { error("Not same number of records of OSSearchIDOrder (".(@OSSearchIDOrder)." entries) and OSHashID (".(scalar keys %OSHashID)." entries) in OS database. Check your file ".$FilePath{"operating_systems.pm"}); }
if ((scalar keys %SearchEnginesHashID) && (@SearchEnginesSearchIDOrder_list1+@SearchEnginesSearchIDOrder_list2+@SearchEnginesSearchIDOrder_listgen) != scalar keys %SearchEnginesHashID) { error("Not same number of records of SearchEnginesSearchIDOrder_listx (total is ".(@SearchEnginesSearchIDOrder_list1+@SearchEnginesSearchIDOrder_list2+@SearchEnginesSearchIDOrder_listgen)." entries) and SearchEnginesHashID (".(scalar keys %SearchEnginesHashID)." entries) in Search Engines database. Check your file ".$FilePath{"search_engines.pm"}." is up to date."); }
- if ((scalar keys %BrowsersHashIDLib) && @BrowsersSearchIDOrder != (scalar keys %BrowsersHashIDLib) - 3) { error("Not same number of records of BrowsersSearchIDOrder (".(@BrowsersSearchIDOrder)." entries) and BrowsersHashIDLib (".((scalar keys %BrowsersHashIDLib) - 3)." entries without msie,netscape,firefox) in Browsers database. May be you updated AWStats without updating browsers.pm file or you made changed into browsers.pm not correctly. Check your file ".$FilePath{"browsers.pm"}." is up to date."); }
+ if ((scalar keys %BrowsersHashIDLib) && @BrowsersSearchIDOrder != (scalar keys %BrowsersHashIDLib) - 4) { error("Not same number of records of BrowsersSearchIDOrder (".(@BrowsersSearchIDOrder)." entries) and BrowsersHashIDLib (".((scalar keys %BrowsersHashIDLib) - 3)." entries without msie,netscape,firefox,svn) in Browsers database. May be you updated AWStats without updating browsers.pm file or you made changed into browsers.pm not correctly. Check your file ".$FilePath{"browsers.pm"}." is up to date."); }
if ((scalar keys %RobotsHashIDLib) && (@RobotsSearchIDOrder_list1+@RobotsSearchIDOrder_list2+@RobotsSearchIDOrder_listgen) != (scalar keys %RobotsHashIDLib) - 1) { error("Not same number of records of RobotsSearchIDOrder_listx (total is ".(@RobotsSearchIDOrder_list1+@RobotsSearchIDOrder_list2+@RobotsSearchIDOrder_listgen)." entries) and RobotsHashIDLib (".((scalar keys %RobotsHashIDLib) - 1)." entries without 'unknown') in Robots database. Check your file ".$FilePath{"robots.pm"}." is up to date."); }
}
# No update but report by default when run from a browser
$UpdateStats=($QueryString=~/update=1/i?1:0);
- if ($QueryString =~ /config=([^&]+)/i) { $SiteConfig=&DecodeEncodedString("$1"); }
+ if ($QueryString =~ /config=([^&]+)/i) { $SiteConfig=&Sanitize(&DecodeEncodedString("$1")); }
if ($QueryString =~ /diricons=([^&]+)/i) { $DirIcons=&DecodeEncodedString("$1"); }
if ($QueryString =~ /pluginmode=([^&]+)/i) { $PluginMode=&Sanitize(&DecodeEncodedString("$1"),1); }
if ($QueryString =~ /configdir=([^&]+)/i) { $DirConfig=&Sanitize(&DecodeEncodedString("$1")); }
# Update with no report by default when run from command line
$UpdateStats=1;
- if ($QueryString =~ /config=([^&]+)/i) { $SiteConfig="$1"; }
+ if ($QueryString =~ /config=([^&]+)/i) { $SiteConfig=&Sanitize("$1"); }
if ($QueryString =~ /diricons=([^&]+)/i) { $DirIcons="$1"; }
if ($QueryString =~ /pluginmode=([^&]+)/i) { $PluginMode=&Sanitize("$1",1); }
if ($QueryString =~ /configdir=([^&]+)/i) { $DirConfig=&Sanitize("$1"); }
my $regvermsie=qr/msie([+_ ]|)([\d\.]*)/i;
my $regvernetscape=qr/netscape.?\/([\d\.]*)/i;
my $regverfirefox=qr/firefox\/([\d\.]*)/i;
+ my $regversvn=qr/svn\/([\d\.]*)/i;
my $regvermozilla=qr/mozilla(\/|)([\d\.]*)/i;
my $regnotie=qr/webtv|omniweb|opera/i;
my $regnotnetscape=qr/gecko|compatible|opera|galeon|safari/i;
# Drop wrong method/protocol
#---------------------------
if ($LogType ne 'M') { $field[$pos_url] =~ s/\s/%20/g; }
- if ($LogType eq 'W' && ($field[$pos_method] eq 'GET' || $field[$pos_method] eq 'POST' || $field[$pos_method] eq 'HEAD' || $field[$pos_method] =~ /OK/i || $field[$pos_method] =~ /ERR\!/i)) {
+ if ($LogType eq 'W'
+ && ($field[$pos_method] eq 'GET'
+ || $field[$pos_method] eq 'POST'
+ || $field[$pos_method] eq 'HEAD'
+ || $field[$pos_method] eq 'PROPFIND'
+ || $field[$pos_method] eq 'CHECKOUT'
+ || $field[$pos_method] eq 'LOCK'
+ || $field[$pos_method] eq 'PROPPATCH'
+ || $field[$pos_method] eq 'OPTIONS'
+ || $field[$pos_method] eq 'MKACTIVITY'
+ || $field[$pos_method] eq 'PUT'
+ || $field[$pos_method] eq 'MERGE'
+ || $field[$pos_method] eq 'DELETE'
+ || $field[$pos_method] eq 'REPORT'
+ || $field[$pos_method] eq 'MKCOL'
+ || $field[$pos_method] eq 'COPY'
+ || $field[$pos_method] =~ /OK/i
+ || $field[$pos_method] =~ /ERR\!/i)) {
# HTTP request. Keep only GET, POST, HEAD, *OK* and ERR! for Webstar. Do not keep OPTIONS, TRACE
}
elsif (($LogType eq 'W' || $LogType eq 'S') && ($field[$pos_method] eq 'GET' || $field[$pos_method] eq 'mms' || $field[$pos_method] eq 'rtsp' || $field[$pos_method] eq 'http' || $field[$pos_method] eq 'RTP')) {
$_browser_h{"firefox$1"}++;
$TmpBrowser{$UserAgent}="firefox$1";
}
+ # Subversion ?
+ elsif ($UserAgent =~ /$regversvn/o) {
+ $_browser_h{"svn$1"}++;
+ $TmpBrowser{$UserAgent}="svn$1";
+ }
# Netscape 6.x, 7.x ... ?
elsif ($UserAgent =~ /$regvernetscape/o) {
$_browser_h{"netscape$1"}++;
'cyberdog',
'dillo',
'dreamcast',
+'xbox',
'downloadagent',
'ecatch',
'emailsiphon',
'fresco',
'galeon',
'getright',
+'netants',
'headdump',
'hotjava',
'ibrowse',
'jetaudio',
'mint_audio',
'mpg123',
+'mplayer',
'nsplayer',
+'qts',
'sonique',
'uplayer',
-'xmms',
'xaudio',
+'xine',
+'xmms',
# RSS Readers
'aggrevator',
'feeddemon',
'wapsilon',
'webcollage',
'up\.', # Works for UP.Browser and UP.Link
-# PDA/Phonecell I-Mode browsers
'docomo',
-'portalmmm',
# Others (TV)
'webtv',
# Other kind of browsers
+'gnome\-vfs',
+'neon',
'apt',
'curl',
'csscheck',
'wget',
+'chilkat',
+'webdownloader_for_x',
'w3m',
'wdg_validator',
'webzip',
'staroffice',
+'gnus',
+'liferea',
+'nikto',
+'microsoft\-webdav\-miniredir',
'mozilla', # Must be at end because a lot of browsers contains mozilla in string
-'libwww' # Must be at end because some browser have both 'browser id' and 'libwww'
+'libwww', # Must be at end because some browser have both 'browser id' and 'libwww'
+'lwp',
);
# BrowsersHashIDLib
'cyberdog','Cyberdog',
'dillo','Dillo',
'dreamcast','Dreamcast',
+'xbox', 'XBoX',
'downloadagent','DownloadAgent',
'ecatch', 'eCatch',
'emailsiphon','EmailSiphon',
'fresco','ANT Fresco',
'galeon','Galeon',
'getright','GetRight',
+'netants','NetAnts',
'headdump','HeadDump',
'hotjava','Sun HotJava',
'ibrowse','iBrowse',
'jetaudio','JetAudio (media player)',
'mint_audio','Mint Audio (media player)',
'mpg123','mpg123 (media player)',
+'mplayer','The Movie Player (media player)',
'nsplayer','NetShow Player (media player)',
+'qts','Quicktime',
'sonique','Sonique (media player)',
'uplayer','Ultra Player (media player)',
-'xmms','XMMS (media player)',
'xaudio','Some XAudio Engine based MPEG player (media player)',
+'xine','Xine, a free multimedia player (media player)',
+'xmms','XMMS (media player)',
# RSS Readers
'aggrevator', 'Aggrevator (RSS Reader)',
'feeddemon', 'FeedDemon (RSS Reader)',
'wapsilon','WAPsilon (PDA/Phone browser)',
'webcollage','WebCollage (PDA/Phone browser)',
'up\.','UP.Browser (PDA/Phone browser)', # Works for UP.Browser and UP.Link
-# PDA/Phonecell I-Mode browsers
'docomo','I-Mode phone (PDA/Phone browser)',
-'portalmmm','I-Mode phone (PDA/Phone browser)',
# Others (TV)
'webtv','WebTV browser',
# Other kind of browsers
'apt','Debian APT',
+'svn', 'Subversion client',
+'gnome\-vfs', 'Gnome FileSystem Abstraction library',
+'neon', 'Neon HTTP and WebDAV client library',
'curl','Curl',
'csscheck','WDG CSS Validator',
'javaws','Java Web Start',
'wget','Wget',
+'chilkat', 'Chilkat',
+'webdownloader_for_x','Downloader for X',
'w3m','w3m',
'wdg_validator','WDG HTML Validator',
'webzip','WebZIP',
'staroffice','StarOffice',
+'nikto', 'Nikto Web Scanner',
+'microsoft\-webdav\-miniredir', 'Microsoft Data Access Component Internet Publishing Provider',
+'gnus', 'Gnus Network User Services',
+'liferea', 'LInux FEed REAder',
'mozilla','Mozilla',
'libwww','LibWWW',
+'lwp','LibWWW-perl',
);
'webcopier','1',
'curl','1',
'wget','1',
+'webdownloader_for_x','1',
'webzip','1'
);
'cyberdog','cyberdog',
'dillo','dillo',
'dreamcast','dreamcast',
+'xbox', 'winxbox',
'ecatch','ecatch',
'encompass','encompass',
'epiphany','epiphany',
'jetaudio','mediaplayer',
'mint_audio','mediaplayer',
'mpg123','mediaplayer',
+'mplayer','mediaplayer',
'nsplayer','netshow',
+'qts','mediaplayer',
'sonique','mediaplayer',
'uplayer','mediaplayer',
+'xaudio','mediaplayer',
+'xine','mediaplayer',
'xmms','mediaplayer',
'xaudio','mediaplayer',
# PDA/Phonecell browsers
'wapsilon','pdaphone',
'webcollage','pdaphone',
'up\.','pdaphone', # Works for UP.Browser and UP.Link
-# PDA/Phonecell I-Mode browsers
'docomo','pdaphone',
-'portalmmm','pdaphone',
# Others (TV)
'webtv','webtv',
# RSS Readers
'syndirella', 'rss',
# Other kind of browsers
'apt','apt',
+'svn','subversion',
+'gnome\-vfs', 'gnome',
+'neon','neon',
'javaws','java',
'webzip','webzip',
'staroffice','staroffice',
+'gnus', 'gnus',
'mozilla','mozilla'
);
'cyberdog',
'dillo',
'dreamcast',
+'xbox',
'downloadagent',
'ecatch',
'emailsiphon',
'fresco',
'galeon',
'getright',
+'netants',
'headdump',
'hotjava',
'ibrowse',
'jetaudio',
'mint_audio',
'mpg123',
+'mplayer',
'nsplayer',
+'qts',
'sonique',
'uplayer',
-'xmms',
'xaudio',
+'xine',
+'xmms',
# RSS Readers
'aggrevator',
'feeddemon',
# Others (TV)
'webtv',
# Other kind of browsers
+'gnome\-vfs',
+'neon',
'apt',
'curl',
'csscheck',
'wget',
+'chilkat',
+'webdownloader_for_x',
'w3m',
'wdg_validator',
'webzip',
'staroffice',
+'gnus',
+'liferea',
+'nikto',
+'microsoft\-webdav\-miniredir',
'mozilla', # Must be at end because a lot of browsers contains mozilla in string
-'libwww' # Must be at end because some browser have both 'browser id' and 'libwww'
+'libwww', # Must be at end because some browser have both 'browser id' and 'libwww'
+'lwp',
);
# BrowsersHashIDLib
'cyberdog','Cyberdog',
'dillo','Dillo',
'dreamcast','Dreamcast',
+'xbox', 'XBoX',
'downloadagent','DownloadAgent',
'ecatch', 'eCatch',
'emailsiphon','EmailSiphon',
'fresco','ANT Fresco',
'galeon','Galeon',
'getright','GetRight',
+'netants','NetAnts',
'headdump','HeadDump',
'hotjava','Sun HotJava',
'ibrowse','iBrowse',
'jetaudio','JetAudio (media player)',
'mint_audio','Mint Audio (media player)',
'mpg123','mpg123 (media player)',
+'mplayer','The Movie Player (media player)',
'nsplayer','NetShow Player (media player)',
+'qts','Quicktime',
'sonique','Sonique (media player)',
'uplayer','Ultra Player (media player)',
-'xmms','XMMS (media player)',
'xaudio','Some XAudio Engine based MPEG player (media player)',
+'xine','Xine, a free multimedia player (media player)',
+'xmms','XMMS (media player)',
# RSS Readers
'aggrevator', 'Aggrevator (RSS Reader)',
'feeddemon', 'FeedDemon (RSS Reader)',
'webtv','WebTV browser',
# Other kind of browsers
'apt','Debian APT',
+'svn', 'Subversion client',
+'gnome\-vfs', 'Gnome FileSystem Abstraction library',
+'neon', 'Neon HTTP and WebDAV client library',
'curl','Curl',
'csscheck','WDG CSS Validator',
'javaws','Java Web Start',
'wget','Wget',
+'chilkat', 'Chilkat',
+'webdownloader_for_x','Downloader for X',
'w3m','w3m',
'wdg_validator','WDG HTML Validator',
'webzip','WebZIP',
'staroffice','StarOffice',
+'nikto', 'Nikto Web Scanner',
+'microsoft\-webdav\-miniredir', 'Microsoft Data Access Component Internet Publishing Provider',
+'gnus', 'Gnus Network User Services',
+'liferea', 'LInux FEed REAder',
'mozilla','Mozilla',
'libwww','LibWWW',
+'lwp','LibWWW-perl',
);
'webcopier','1',
'curl','1',
'wget','1',
+'webdownloader_for_x','1',
'webzip','1'
);
'cyberdog','cyberdog',
'dillo','dillo',
'dreamcast','dreamcast',
+'xbox', 'winxbox',
'ecatch','ecatch',
'encompass','encompass',
'epiphany','epiphany',
'webcopier','webcopier',
# Media only browsers
'real','real',
-'winamp','winamp', # Works for winampmpeg and winamp3httprdr
+'winamp','mediaplayer', # Works for winampmpeg and winamp3httprdr
'windows\-media\-player','mplayer',
'audion','mediaplayer',
'freeamp','mediaplayer',
'jetaudio','mediaplayer',
'mint_audio','mediaplayer',
'mpg123','mediaplayer',
+'mplayer','mediaplayer',
'nsplayer','netshow',
+'qts','mediaplayer',
'sonique','mediaplayer',
'uplayer','mediaplayer',
-'xmms','mediaplayer',
'xaudio','mediaplayer',
+'xine','mediaplayer',
+'xmms','mediaplayer',
# RSS Readers
'aggrevator', 'rss',
-'feeddemon', 'feeddemon',
-'feedreader', 'feedreader',
-'jetbrains_omea_reader', 'jetbrains_omea',
-'netnewswire', 'netnewswire',
-'newsfire', 'newsfire',
-'newsgator', 'newsgator',
-'newzcrawler', 'newscrawler',
-'pluck', 'pluck',
-'pulpfiction', 'pulpfiction',
-'rssbandit', 'rssbandit',
-'rssreader', 'rssreader',
-'rssowl', 'rssowl',
+'feeddemon', 'rss',
+'feedreader', 'rss',
+'jetbrains_omea_reader', 'rss',
+'netnewswire', 'rss',
+'newsfire', 'rss',
+'newsgator', 'rss',
+'newzcrawler', 'rss',
+'pluck', 'rss',
+'pulpfiction', 'rss',
+'rssbandit', 'rss',
+'rssreader', 'rss',
+'rssowl', 'rss',
'sage', 'rss',
-'sharpreader', 'sharpreader',
-'shrook', 'shrook',
+'sharpreader', 'rss',
+'shrook', 'rss',
'straw', 'rss',
'syndirella', 'rss',
# PDA/Phonecell browsers
'webtv','webtv',
# Other kind of browsers
'apt','apt',
+'svn','subversion',
+'gnome\-vfs', 'gnome',
+'neon','neon',
'javaws','java',
'webzip','webzip',
'staroffice','staroffice',
+'gnus', 'gnus',
'mozilla','mozilla'
);
'hp\-ux',
'unix',
'x11',
+'gnome\-vfs',
# Other famous OS
'beos',
'os/2',
'amiga',
'atari',
'vms',
+'commodore',
# Miscellanous OS
'cp/m',
'crayos',
'dreamcast',
'risc[_+ ]?os',
'symbian',
-'webtv'
+'webtv',
+'playstation_portable',
+'xbox'
);
'hp\-ux','hp\-ux',
'unix','unix',
'x11','unix',
+'gnome\-vfs','unix',
# Other famous OS
'beos','beos',
'os/2','os/2',
'amiga','amigaos',
'atari','atari',
'vms','vms',
+'commodore','commodore',
# Miscellanous OS
'cp/m','cp/m',
'crayos','crayos',
'dreamcast','dreamcast',
'risc[_+ ]?os','riscos',
'symbian','symbian',
-'webtv','webtv'
+'webtv','webtv',
+'playstation_portable', 'psp',
+'xbox', 'winxbox',
);
# OS name list ('os unique id in lower case','os clear text')
'win95','<a href="http://www.microsoft.com/windows95/" title="Windows 95 home page [new window]" target="_blank">Windows 95</a>',
'win16','<a href="http://www.microsoft.com/" title="Windows 3.xx home page [new window]" target="_blank">Windows 3.xx</a>',
'wince','<a href="http://www.microsoft.com/windowsmobile/" title="Windows CE home page [new window]" target="_blank">Windows CE</a>',
+'winxbox','<a href="http://www.xbox.com/en-US/hardware/xbox/" title="Microsoft XBOX home page [new window]" target="_blank">Microsoft XBOX</a>',
# Macintosh OS
'macosx','<a href="http://www.apple.com/macosx/" title="Mac OS X home page [new window]" target="_blank">Mac OS X</a>',
'macintosh','<a href="http://www.apple.com/" title="Mac OS home page [new window]" target="_blank">Mac OS</a>',
'amigaos','<a href="http://www.amiga.com/amigaos/" title="AmigaOS home page [new window]" target="_blank">AmigaOS</a>',
'atari','<a href="http://www.atarimuseum.com/computers/computers.html" title="Atari home page [new window]" target="_blank">Atari</a>',
'vms','<a href="http://h71000.www7.hp.com/" title="VMS home page [new window]" target="_blank">VMS</a>',
+'commodore','<a href="http://en.wikipedia.org/wiki/Commodore_64" title="Commodore 64 wikipedia page [new window]" target="_blank">Commodore 64</a>',
# Miscellanous OS
'cp/m','<a href="http://www.digitalresearch.biz/CPM.HTM" title="CPM home page [new window]" target="_blank">CPM</a>',
'crayos','<a href="http://www.cray.com/" title="CrayOS home page [new window]" target="_blank">CrayOS</a>',
'riscos','<a href="http://www.riscos.com/" title="RISC OS home page [new window]" target="_blank">RISC OS</a>',
'symbian','<a href="http://www.symbian.com/" title="Symbian OS home page [new window]" target="_blank">Symbian OS</a>',
'webtv','<a href="http://www.webtv.com/" title="WebTV home page [new window]" target="_blank">WebTV</a>',
+'psp', '<a href="http://www.playstation.jp/psp/" title="Sony PlayStation Portable home page [new window]" target="_blank">Sony PlayStation Portable</a>',
);
'weblayers',
# Common robots (Not in robot file)
'antibot',
+'bruinbot',
'digout4u',
'echo',
'fast\-webcrawler',
'unlost_web_crawler',
'voila',
'webbase',
+'webcollage',
+'cfetch',
'zyborg', # Must be before wisenut
'wisenutbot'
);
'weblayers','weblayers',
# Common robots (Not in robot file)
'antibot','Antibot',
+'bruinbot','<a href="http://web.archive.org/" title="BruinBot home page [new window]" target="_blank">The web archive</a>',
'digout4u','Digout4u',
'echo','EchO!',
'fast\-webcrawler','Fast-Webcrawler',
'webbase', 'WebBase',
'zyborg','<a href="http://www.WISEnutbot.com/" title="wn-14.zyborg@looksmart.net Bot home page [new window]" target="_blank">ZyBorg</a>',
'wisenutbot','<a href="http://www.WISEnutbot.com/" title="Bot home page [new window]" target="_blank">WISENutbot</a>',
+'webcollage','<a href="http://www.jwz.org/webcollage/" title="WebCollage home page [new window]" target="_blank">WebCollage</a>',
+'cfetch','<a href="http://www.kosmix.com/crawler.html" title="kosmix home page [new window]" target="_blank">cfetch</a>',
# Less common robots (In robot file)
'[^a]fish','Fish search',
'abcdatos','ABCdatos BotLink',
'scooter'=>'AltaVista',
'wisenutbot'=>'Looksmart',
'yahoo\-verticalcrawler'=>'Yahoo',
-'zyborg'=>'Looksmart'
+'zyborg'=>'Looksmart',
+'cfetch'=>'Kosmix',
+'^voyager\/'=>'Kosmix'
);
1;
--- /dev/null
+Thumbs.db\r