From: Clinton Ebadi Date: Tue, 8 Apr 2014 09:23:32 +0000 (-0400) Subject: Imported Upstream version 2.23.05 X-Git-Tag: upstream/2.23.05^0 X-Git-Url: https://git.hcoop.net/hcoop/zz_old/debian/webalizer.git/commitdiff_plain/e015f74894d954516e7b97cc09e0bc8e6d7a4db6?ds=sidebyside Imported Upstream version 2.23.05 --- e015f74894d954516e7b97cc09e0bc8e6d7a4db6 diff --git a/CHANGES b/CHANGES new file mode 100644 index 0000000..f2a0989 --- /dev/null +++ b/CHANGES @@ -0,0 +1,586 @@ +-------------------------------------------------------------------- +2.23-xx changes from 2.21-xx +-------------------------------------------------------------------- + +Fixes: + o Fix sporadic eol problem with some IIS/W3C logs + + o Fix compiler directive syntax error (broke some 64 bit systems) + +Changes/Additions: + o Modest speed improvements in hash table code + +-------------------------------------------------------------------- +2.21-xx changes from 2.20-xx +-------------------------------------------------------------------- + +Fixes: + o Added missing memory deallocation call in DNS lookup code. + + o Minor fixes to configure script + +Changes/Additions: + o Added "YearTotals" config option for main index page totals + + o Rename local stricmp() function to ouricmp() to prevent name + confilict on systems that happen to provide it already. + +-------------------------------------------------------------------- +2.20-xx changes from 2.01-xx +-------------------------------------------------------------------- + +Fixes: + o Fixed problem with timing totals. + + o Fixed referrer linking to avoid possible xss injection. + + o Fixed month change detection error that caused incorrect report + dates when logs had a 'gap' longer than a year. + + o Fixed buffer overrun possibility in parsing code and user agent + mangle logic. + + o Added symbolic link checks for file I/O to prevent possible + privilege escalation exploits. Disallows reading from or writing + to any file that is a symlink. Thanks to Julien Danjou. + + o Added code to preserve the history and incremental data files in + the event of a crash before writing to them completely. Thanks + to Robert Millan for the idea and initial code. + +Changes/Additions: + o Added native geolocation services, which fully supports both IPv4 + and IPv6 lookups. Adds the configuration keywords 'GeoDB' and + 'GeoDBDatabase' along with the '-j' and '-J' command line options. + + o Added 'wcmgr', "The Webalizer (DNS) Cache file Manager" to the + distribution to provide cache file maintenance. See the supplied + man page for a description and usage information. + + o Changed history code and main index page to allow for more than + 12 months of reports to be displayed. Added the config keywords + 'IndexMonths' (-K command line option), 'GraphMonths' (-k command + line option) and 'YearHeaders' to control how index is displayed. + + o Changed Berkeley DB code to use current 4.x APIs. + + o Added support for bzip2 compressed log files (.bz2) as a compile + time option (--enable-bz2). If enabled, bzipped files will be + decompressed automatically during processing. + + o Added support for W3C formatted logs. Based on code submitted + by Klaus Reimer. + + o Added GeoIP support as compile time option (--enable-geoip). Adds + 'GeoIP' and 'GeoIPDatabase' config keywords, '-w' and '-W' + command line options. (http://www.maxmind.com/) + + o Added IPv6 support. Based on initial code by Jose Carlos Meneiros + and modified to support Solaris and other problematic platforms. + + o Added 'CacheIPs' config option to allow saving unresolved addresses + in the DNS cache. + + o Added 'CacheTTL' config option which allows the DNS cache time to + live (TTL) value to be specified at run-time. + + o Added 'SearchCaseI' config option to specify if search strings + should be treated as case insensitive or not. The default value, + 'yes', causes search strings to be treated as case insensitive. + + o Added 'HTAccess' config option. Allows writing a default .htaccess + file to the output directory. + + o Added ability to display flags in the top country table. Adds the + config keywords 'CountryFlags' and 'FlagDir', and -z command line + option. + + o Added 'StripCGI' config option to configure how CGI variables on + the end of URLs are treated (can now be stripped or left in place). + + o Added 'DefaultIndex' config option to enable/disable the use of + "index." as a default index name to be stripped from the end of URLs. + + o Added 'TrimSquidURL' config option to allow squid log URLs to be + reduced in granularity by a user definable amount. Thanks to code + submitted by Stuart Gall. + + o Added 'OmitPage' config option (and the '-O' command line switch) + to prevent specified URLs from being counted as pages even if they + otherwise would be. Thanks to code submitted by Adam Morton. + + o Added 'IgnoreState' config option (and the -b command line switch) + to allow ignoring any existing incremental data file (similar to + the IgnoreHist/-i option). + + o Changed logic to always generate summary report (index.html), + even if no records were processed. + + o Added color support to allow changing graph colors. Based on the + Webalizer-usecolor code submitted by Benoit Rouits. Adds 11 new + config options, see the README file for complete descriptions. + + o Added language 'lang=' specification in generated HTML files. + + o Added 'LinkReferrer' config option to allow/disallow links in the + top referrers table. + + o Added 'PagePrefix' config option to allow URL prefix matches to + be counted as pages, regardless of file extension or type. Thanks + to code submitted by Remco Van de Meent. + + o Enabled large file support (LFS) to support logs greater than 2Gb + in size on systems that support LFS. Also increased the size of + most internal counters to handle larger sites. + + o Minor changes to generated HTML output + + o Updated language files country codes for current IANA TLDs + + o Changed the meaning of the -v command line switch. It now + causes verbose information to be displayed at run-time + (Informational and Debug messages). + + o Changed Group* config options to allow a quoted string for + the match string. This allows spaces to be embedded in the + string. + + o Changed log record parsing logic to allow spaces in URLs. + + o Made configuration keywords, boolean configuration values + (yes/no), and log file types case insensitive. Also fixed + defaults for invalid values to reflect documented defaults. + + o Changed configure script to use --sysconfdir to specify the + location of the default webalizer.conf configuration file. + Also added support for DESTDIR during install to aid binary + package builds. + +-------------------------------------------------------------------- +2.01-xx changes from 1.30-04 +-------------------------------------------------------------------- + +Fixes: + o Fix posible obscure buffer overflow bug in DNS resolver code + + o Added additional extended character fixes + + o Let code accept partial content response codes along with 200's + + o Added code to catch blank hostnames (yes, they have been found!) + Will convert them into 'Unknown' + + o Security fix for cross-site scripting vulnerability found by + Flavio Veloso (www.magnux.com). + + o Fixed a TOTAL_RC off by one error, which would prevent the last + response code from being saved when using incremental mode. + + o Fixed possible segfault condition in MangleAgent code on + some malformed user agent names. + + o Fixed DNS to prevent hangs on blank and malformed hostnames. + + o Fixed problem calculating visits. Changed timestamps to use + seconds since epoch (1/1/1970) which results in more accurate + analysis. Also changed normal out of sequence code to handle + up to 1 hour of 'slop' in the timestamps. This changed the + semantics of the VisitTimeout and -m configuration options, as + the values are now specified in number of seconds. + + o Fixed hostname lowercase problem (wasn't) when using DNS lookups. + + o Fixed problem with incremental datafile which could cause a read + error under certain circumstances (removes control characters). + Also changed code to now abort on a read error. + + o Fixed problem with hash table node creation where objects that + were exactly the maximum length would wind up leaving a garbage + byte at the end of the memory space allocated. This was causing + some very infrequent and widely different problems. + + o Fixed problem where country graph could be produced incorrectly + if using a non-english language and the country name overlapped + the pie chart. + + o Found and fixed a problem with a possible 32-bit wrap around + problem using incremental mode on large sites. The problem + would cause the KBytes data on large groups to become inaccuate. + +Changes/Additions: + o Modified configure to allow specification of the default config + directory. If not given, will use /etc (/etc/webalizer.conf). + + o Added DailyGraph and DailyStats configuration options to enable + or disable the Daily usage graph and stats table from output. + + o Improved visit calculation logic to reduce 'false' counts generated + by external image referrals. + + o Added reverse DNS lookup capability. This adds the command + line switchs -D and -N, and configuration keywords "DNSCache" + and "DNSChildren". See the DNS.README for additional info. + Based in part on code submitted by Henning P. Schmiedehausen + (hps@tanstaafl.de). + + o Added ability to dump Sites, URLs, Referrers, User Agents, + Usernames and Search Strings to tab delimited files, suitable + for import into most database and spreadsheet programs. The + location of this file may be specified using the "DumpPath" + configuration keyword, allowing the data to be kept someplace + outside the web servers document tree. The configuration + keywords "DumpSites", "DumpURLs", "DumpReferrers", "DumpAgents", + "DumpUsers" and "DumpSearchStr" have been added to control the + file dumps. Column headers can be included in the file with + the "DumpHeader" keyword. Dump filename extensions may be + specified using the "DumpExtension" keyword (default is .tab). + + o Added username analysis, based on usernames found in the log, + and only available if username information is present in the + log (ie: http authentication or wu-ftpd xferlog). The keywords + 'GroupUser', 'HideUser', 'IgnoreUser', 'IncludeUser', 'AllUsers', + and 'TopUsers' have been added to the configuration file code. + This change also modified the format of the incremental data file. + + o Added the ability to display ALL sites, URLs, Referrers, + User Agents and Search Strings on a seperate HTML page from + the normal statistics page. This adds the configuration + keywords 'AllSites', 'AllURLs', 'AllReferrers', 'AllAgents' + and 'AllSearchStr', which can have either a "yes" or "no" + value (default is "no"). Will add a "View All..." link to + the bottom of the appropriate "Top" table if enabled. + + o Added support for squid proxy logs, thanks to code submitted + by Steinar H. Gunderson (sgunderson@bigfoot.com). To use + squid logs, specify a LogType of 'squid' in the configuration + file. This also changed the behaviour of the '-F' command + line switch, which now requires a second argument of either + 'clf', 'ftp' or 'squid'. + + o Completely modified the way the various TOP tables are handled + and sorted, which now allows extremely large top tables without + any performance degredation. Previously, tables greater than + a few hundred elements produced a noticable perfomance penalty + during processing. + + o Added the ability to group domains automatically and to hide + individual host names from the report, using the 'GroupDomains' + and 'HideAllSites' configuration keywords (-g and -X command + line options). Domain Grouping is configurable as to the level + of grouping (second level domain, third, etc...). HideAllSites + forces only grouped site records to be displayed if any. Based + on ideas/code by Michael Klemme (mklemme@gmx.de). This changes + the behaviour of the '-g' switch, which previously was used to + force the use of GMT time for reports. + + o Added user configurable search engine specification, used for + search string analysis. This adds the 'SearchEngine' keyword + in configuration files. Based on idea/code by Alexey Kizilov. + + o Changed code to use the latest version of GD which supports PNG + images instead of GIF images. Also included changes in configure + script to ensure the presence of the libpng and libz libraries. + + o Added ability to override log file to STDIN by use of '-' on + the command line. + + o Added gzipped logfile support. The program will automatically + detect logfiles with a '.gz' extension and uncompress on the + fly. Uses gz file support of zlib, since it's required for + our gd/png stuff anyway. Please note that using gzipped logs + will incur a small performance penality. + + o Minor changes to search string code to increase accuracy. This + also removes a previous condition that would occasionally cause + search strings to incorrectly be counted twice or to be counted + as different search strings when only differing by a space. + + o Minor changes to URL parse code to allow additional characters. + Also changed unescape code to properly handle extended chars. + + o Major changes to hash table node format for reduced memory usage. + Instead of fixed size strings, the new format will dynamically + allocate string memory and use pointers to existing table data + under certain circumstances. The memory savings is significant + and will be greatly noticed with large sites. Because of these + changes, the formatting of the incremental data file had to be + changed, therefore it is incompatible with previous versions. + + o Major code reorganization and cleanup. This was to facilitate + future developent and make things more managable. + + o Usual documentation updates for new features/functions. + +-------------------------------------------------------------------- +1.30-xx changes from 1.22-06 +-------------------------------------------------------------------- + +Fixes: + o Fixed minor bug that would allow incorrect site totals for the + first day of the month under certain conditions. + +Changes/Additions: + o Added Top Entry and Exit Page tables. Added configuration file + keywords TopEntry (-e command line) and TopExit (-E command line) + to specify the number of entries to display for each table. The + default for both is 10. See README for additional information. + + o Added 'Group' labels. Allows display of a specified label for + grouped entries (in 'Top' tables). Based on patch submitted + by Oliver Graf (ograf@rhein-zeitung.de). See sample.conf for + examples. + + o Added 'Visits' totals. The length of time that constitutes a + 'visit' can be set using the VisitTimeout configuration keyword + (-m command line option). The value must be given in HHMMSS + format, you can omit leading zeros. Default is 30 minutes (3000). + + o Added 'Pages' totals, based on user specified extensions. Changes + made to generated graphs as well. Configuration keyword PageType + (and command line -P switch) allows specification of extensions + to use (defaults to 'htm*' and 'cgi'). Also called "pageviews". + + o Added Search String analysis. Keyword 'TopSearch' defines how + many of the top search strings to display. Default is 20. Can + be disabled by using zero (0). + + o Added native support for ftp logs (xferlog ala wu-ftpd). Added + 'LogType' configuration file keyword (-F command line option) + to specify log type. Values can be either 'web' or 'ftp', with + the default of 'web'. + + o Changed graphs to handle pages and visits totals. Also added + color coded legends, which can be disabled using the GraphLegend + configuration keyword (-L command line option). Default is to + display them. + + o Added background lines to graphs. Default is 2 lines, and can + be set to any number using the GraphLines configuration keyword + (-l command line option). Can use anywhere from none (0) to + twenty lines. They will be drawn in all but the country graph. + + o Added CountryGraph configuration file keyword (-Y command line + option) to enable/disable display of country usage pie chart. + + o Added FoldSeqErr keyword (-f command line option). Normally, + the program will ignore log records that are out of sequence + (chronological order). This option lets them be folded into + the analysis anyway, as if the were the same date/time as the + last good record. Apache users can safely ignore :) + + o Added additonal 'Top' tables for SITES and URLs, sorted by + KBytes instead of hits. Two new configuration file keywords, + TopKSites and TopKURLs, can be used to specify the number of + entries for each (zero to disable). Default for both is 10. + + o Added additional calculations for max/avg files, pages, visits + and KBytes in monthly statistics. + + o Updated generated HTML code to fully comply with the HTML 4.0 + Transitional spec. DOCTYPE header reflects this change as well. + + o Changed code to use 4 digit years in filenames. Purely for the + Y2K phobes who couldn't deal with only two digits (even though + it was _purely_ for humans, the program couldn't care less). + Unfortunately, this means that you will have to rename previous + month files to the new format. Not a big deal if you plan on + re-running all your logs to take advantage of the new features. + + o Major changes to both history file and incremental file formats + to handle additional totals (pages/visits data). As a result, + this version is INCOMPATABLE with previous versions. See the + file README.FIRST for important information on upgrading. + + o Language files and documentation updated for new functions. + +-------------------------------------------------------------------- +1.22-xx changes from 1.20-11 +-------------------------------------------------------------------- + +Fixes: + o Fixed bug in country total generation. Caused country table + to show bogus entries if logs contain hostnames that were not + fully qualified (ie: don't have the domain name/TLD portion). + + o Changed/fixed incremental data I/O routines to better detect and + handle error conditions. This involved some minor incremental + data file format changes as well. Fixes problem large sites were + having where random tables were getting munged. + + o Fixed record parse code to better detect and strip query portion + from URLs and Referrer strings. + + o Fixed segfault condition when more than MAX_CTRY entries were + specified for the "Top Countries" table. + +Changes/Additions: + o Added code to detect negative byte transfer sizes in logs (another + netscape server kludge :) Could cause KByte xfer sizes to become + corrupt. + + o Several small changes (mostly ifdef/endif's) to make code compile + clean 'out-of-the-box' across more platforms (ala SunOS). Also + added a GNU autoconf 'configure' script which helps a bit as well. + + o Added Include* keywords. Allows forcing the inclusion of specified + log records. Takes precedence over counterpart Ignore* keywords. + + o Added HTMLPre, HTMLBody, HTMLEnd and HTMLExtension keywords, and + changed behaviour of HTMLHead keyword. Previous versions need + only change the 'HTMLHead' keword in existing files to 'HTMLBody' + to upgrade. Thanks to Colin Viebrock for + the idea and code examples. + + o Changed mangle agent code to support Opera and other browsers. + Also updated response codes to IETF HTTP/1.1 Rev 6 draft. + Thanks to Yves Lafon for this these. + + o Added HistoryName and IncrementalName keywords, which allow the + specification of the history and incremental data filenames. + + o Added UseHTTPS keyword, which allows using 'https://' instead + of 'http://' for links to URLS in the 'Top URLs' table. Also + added check for URLs that already have the protocol specified + (such as on virtual web and proxy servers), and to use unmodified + if found (will only force to lowercase for matching). + + o Added code to ignore out-of-sequence log records. + + o Added code to force hostnames to lowercase (was causing country skew). + + o Disabled display of blank (zero hit) days at start of daily stat table. + + o Added records per second calculation to timing totals. + + o ALT= tags now use translated strings instead of forcing english. + + o Updated documentation for new functions/features. + +-------------------------------------------------------------------- +1.20-xx changes from 1.12-10 +-------------------------------------------------------------------- + +Fixes: + o Modified record parse routine to not touch stuff between quotes + ("). Was causing problems parsing some malformed request fields. + + o Fixed memory leak in MangleAgent code, and relocated to elimitate + un-necessary processing (causing segfault on some machines). + +Changes/Additions: + o Changed transfer totals on host/url structures to support large + groupings (such as *.gif) on heavly hit servers. Hopefully, this + should cure the 32bit overflow problem large sites were having. + + o Changed daily transfer totals to support transfers greater than + roughly 4.2 gigabytes a day. + + o Added some missing HTML tags and altered the way totals are + calculated on the 'Top' tables (to correct for grouped records). + + o Added incremental run capability (-p command line option or + "Incremental" configuration file keyword). + +-------------------------------------------------------------------- +1.1x-xx changes from 1.00-05 +-------------------------------------------------------------------- + +Fixes: + o Re-wrote the Group* logic, fixing a bug that allowed hiding of + objects when they shouldn't be. + + o Fixed broken IgnoreReferrer code. + + o Modified config parse code to handle extended characters. + + o Misc. minor bug fixes/changes. Added a missing fclose. + + o Cleaned up generated HTML. + + o Fixed duplicate warnings on large referrer fields. + + o Fixed country table bug adding grouped records to totals. + +Changes/Additions: + o Added GroupSite, GroupReferrer and GroupAgent keywords to round + out the Group* configuration options. + + o Added GroupShading and GroupHighlight keywords to allow selective + highlight and shading on grouped rows in table. + + o Removed the '-L' command line option. Groupings can now only + be specified from a configuration file. Language files changed + to reflect change. + + o Added '-V' command line option (identical to '-v') for version. + + o Added additional language support. Language files will be marked + /* New for 1.1 */ where changes have been made. + + o Various rewrites to streamline the code, accomidate the new + group options and make things easier down the road when I implement + incremental (partial log) processing. + + o Usual README and CHANGES documentation updates. + +-------------------------------------------------------------------- +1.00-xx changes from 0.99-06 +-------------------------------------------------------------------- + +Fixes: + o Modify record parser so that spaces in usernames (auth field) + don't cause record to be skipped (w/'Bad Record' message). + + o Included various error conditions that were being ignored in + the timing statistics ('bad records' value) totals. + +Changes/Additions: + o Added GMTTime (-g) option to force display of timestamps in + GMT (UTC) time instead of local timezone. + + o Added GroupURL (-L) option for grouping of URLs as if they + were a single object. See README for details. + + o Language support in the form of a language specific header + file containing all strings used by The Webalizer. English + file is used by default unless changed. Support for other + languages will be distributed as I receive them. + +-------------------------------------------------------------------- +0.99-xx changes from 0.98-16 +-------------------------------------------------------------------- + +0.99 is mostly a bug-fix release, with a few added extra goodies. + +Fixes: + o Fixed monthly total transfer size (silent) overflow problem. + + o Fixed the numerous fprintf format errors. Only seemed to wreak havok + on non-intel machines though. + + o Fixed core dump condition on certain machines when using stdin for + input. + + o Fixed floating point code that caused divide by zero errors on some + platforms (most noticably on SCO OpenServer). + + o Netscape server kludges: Added code to deal with Netscape log header + record gracefully. Also added workaround for timestamp error where + Netscape sometimes makes a day have 0-24 hours instead of 0-23. The + Webalizer will now treat anything greater than 23 as 0. + + o Resized some fixed field sizes to gain memory usage improvements. + +Changes/Additions: + o Ignore* config keywords added. This allows you to completely ignore + certain log records based on site name, URL, user agent or referrer. + * Use will cause inaccurate statistics results. See documentation. + + o ReallyQuiet config keyword (-Q command line option) added. Causes + The Webalizer to supress _all_ messages. Useful for cron jobs. + + o Removed the "Sites" total at the bottom of the summary by month. + The total for sites is a useless number and produces a misleadingly + high value which detracts from the accuracy of the other totals. + + o Updated README and CHANGES diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..916d1f0 --- /dev/null +++ b/COPYING @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program 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 2 of the License, or + (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Copyright b/Copyright new file mode 100644 index 0000000..05f2199 --- /dev/null +++ b/Copyright @@ -0,0 +1,20 @@ + webalizer - a web server log analysis program + + Copyright (C) 1997-2011 Bradford L. Barrett + + This program 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 2 of the License, or + (at your option) any later version, and provided that the above + copyright and permission notice is included with all distributed + copies of this or derived software. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + diff --git a/DNS.README b/DNS.README new file mode 100644 index 0000000..1bd7f16 --- /dev/null +++ b/DNS.README @@ -0,0 +1,295 @@ +The Webalizer - A log file analysis program -- DNS information + +The webalizer has the ability to perform reverse DNS lookups, and +fully supports both IPv4 and IPv6 addressing schemes. This document +attempts to explain how it works, and some things that you should be +aware of when using the DNS lookup features. + +Note: The Reverse DNS feature may be enabled or disabled at compile + time. DNS lookup code is enabled by default. You can run The + Webalizer using the '-vV' command line options to determine what + options are enabled in the version you are using. + + +How it works +------------ + +DNS lookups are made against a DNS cache file containing IP addresses +and resolved names. If the IP address is not found in the cache file, +it will be left as an IP address. In order for this to happen, a +cache file MUST be specified when the Webalizer is run, either using +the '-D' command line switch, or a "DNSCache" configuration file +keyword. If no cache file is specified, no attempts to perform DNS +lookups will be done. The cache file can be made three different ways. + +1) You can have the Webalizer pre-process the specified log file at + run-time, creating the cache file before processing the log file + normally. This is done by setting the number of DNS Children + processes to run, either by using the '-N' command line switch or + the "DNSChildren" configuration keyword. This will cause the + Webalizer to spawn the specified number of processes which will + be used to do reverse DNS lookups.. generally, a larger number + of processes will result in faster resolution of the log, however + if set too high may cause overall system degradation. A setting + of between 5 and 20 should be acceptable, and there is a maximum + limit of 100. If used, a cache filename MUST be specified also, + using either the '-D' command line switch, or the "DNSCache" + configuration keyword. Using this method, normal processing will + continue only after all IP addresses have been processed, and the + cache file is created/updated. + +2) You can pre-process the log file as a standalone process, creating + the cache file that will be used later by the Webalizer. This is + done by running the Webalizer with a name of 'webazolver' (ie: the + name 'webazolver' is a symbolic link to 'webalizer') and specifying + the cache filename (either with '-D' or DNSCache). If the number + of child processes is not given, the default of 5 will be used. In + this mode, the log will be read and processed, creating a DNS cache + file or updating an existing one, and the program will then exit + without any further processing. + +3) You can use The Webalizer (DNS) Cache file Manager program 'wcmgr' + to create and manipulate a cache file. A blank cache file can be + created which would be later populated, or data for the cache file + can be imported using tab delimited text files. See the wcmgr(1) + man page for usage information. + + +Run-time DNS cache file creation/update +--------------------------------------- + +The creation/update of a DNS cache file at run-time occurs as follows: + +1) The log file is read, creating a list of all IP addresses that are + not already cached (or cached but expired) and need to be resolved. + Addresses are expired based on the TTL value specified using the + 'CacheTTL' configuration option or after 7 days (default) if no TTL + is specified. + +2) The specified number of children processes are forked, and are used + to perform DNS lookups. + +3) Each IP address is given, one at a time, to the next available child + process until all IP addresses have been processed. Each child will + update the cache file when a result is returned. This may be either + a resolved name or a failed lookup, in which case the address will be + left unresolved. Unresolved addresses are not normally cached, but + can be, if enabled using the 'CacheIPs' configuration file keyword. + +4) Once all IP addresses have been processed and the cache file updated, + the Webalizer will process the log normally. Each record it finds + that has an unresolved IP address will be looked up in the cache file + to see if a hostname is available (ie: was previously found). + +Because there may be a significant amount of time between the initial +unresolved IP list and normal processing, the Webalizer should not be +run against live log files (ie: a log file that is actively being written +to by a server), otherwise there may be additional records present that +were not resolved. + + +Stand-Alone DNS cache file creation/update +------------------------------------------ + +The creation/update of the DNS cache file, when run in stand-alone mode, +occurs as follows: + +1) The log file is read, creating a list of all IP addresses that are + not already cached (or cached but expired) and need to be resolved. + +2) The specified number of children processes are forked, and are used + to perform DNS lookups. If the number of processes was not specified, + the default of 5 will be used. + +3) Each IP address is given, one at a time, to the next available child + process until all IP addresses have been processed. Each child will + update the cache file when a result is returned. + +4) Once all IP addresses have been processed and the cache file updated, + the program will terminate without any further processing. + + +Larger sites may prefer to use a stand-alone process to create the DNS +cache file, and then run the Webalizer against the cache file. This +allows a single cache file to be used for many virtual hosts, and reduces +the processing needed if many sites are being processed. The Webalizer +can be used in stand alone mode by running it as 'webazolver'. When +run in this fashion, it will only create the cache file and then exit +without any further processing. A cache filename MUST be specified, +however unlike when running the Webalizer normally, the number of child +processes does not have to be given (will default to 5). All normal +configuration and command line options are recognized, however, many +of them will simply be ignored.. this allows the use of a standard +configuration file for both normal use and stand alone use. + + +Examples: +--------- + +webalizer -c test.conf -N 10 -D dns_cache.db /var/log/my_www_log + + This will use the configuration file 'test.conf' to obtain normal + configuration options such as hostname and output directory.. it + will then either create or update the file 'dns_cache.db' in the + default output directory (using 10 child processes) based on the + IP addresses it finds in the log /var/lib/my_www_log, and then + process that log file normally. + + +webalizer -o out -D dns_cache.db /var/log/my_www_log + + This will process the log file /var/log/my_www_log, resolving IP + addresses from the cache file 'dns_cache.db' found in the default + output directory "out". The cache file must be present as it will + not be created with this command. + + +for i in /var/log/*/access_log; do + webazolver -N 20 -D /var/lib/dns_cache.db $i +done + + The above is an example of how to run through multiple log files + creating a single DNS cache file.. this might be typically used on + a larger site that has many virtual hosts, all keeping their log + files in a separate directory. It will process each access_log it + finds in /var/log/* and create a cache file (var/lib/dns_cache.db). + This cache file can then be used to process the logs normally with + with the Webalizer in a read-only fashion (see next example). + + +for i in /etc/webalizer/*.conf; do webalizer -c $i -D /etc/cache.db; done + + This will process each configuration file found in /etc/webalizer, + using the DNS cache file /etc/cache.db. This will also typically be + used on a larger site with multiple hosts.. Each configuration file + will specify a site specific log file, hostname, output directory, etc. + The cache file used will typically be created using a command similar + to the one previous to this example. + + +Cache File Maintenance +---------------------- + +The Webalizer DNS cache files generally require very little or no +special attention. There are times though when some maintenance +is required, such as occasional purging of very old cache entries. +The Webalizer never removes a record once it's inserted into the +cache. If a record expires based on its timestamp, the next time +that address is seen in a log, its name is looked up again and the +timestamp is updated. However, there will always be addresses that +are never seen again, which will cause the cache files to continue +to grow in size over time. On extremely busy sites or sites that +attract many one time visitors, the cache file may grow extremely +large, yet only contain a small amount of valid entries. Using +The Webalizer (DNS) Cache file Manager ('wcmgr'), cache files can +be purged, removing expired entries and shrinking the file size. +A TTL (time to live) value can be specified, so the length of time +an entry remains in the cache can be varied depending on individual +site requirements. In addition to purging cache files, 'wcmgr' can +also be used to list cache file contents, import/export cache data, +lookup/add/delete individual entries and gather overall statistics +regarding the cache file (number of records, number expired, etc..). + +To purge a cache file using 'wcmgr', an example command would be: + +wcmgr -p31 /path/to/dns.cache + +This would purge the 'dns.cache' cache file of any records that are +over 31 days old, and would reclaim the space that those records +were using in the file. If you would like to see the records that +get purged, adding the command line option '-v' (verbose) will cause +the program to print each entry and its age as they are removed. +You can also use the 'wcmgr' to display statistics on cache files +to aid in determining when a cache file should be purged. See the +'wcmgr' man page (wcmgr.1) for additional information on the various +options available. + + +Stupid Cache Tricks +------------------- + +The DNS cache files used by The Webalizer allow for efficient IP address +to name translations. Resolved names are normally generated by using an +existing DNS name server to query the address, either locally or over +the Internet. However, using The Webalizer (DNS) Cache file Manager, +almost any IP address to Name translation can be included in the cache. +One such example would be for mapping local network addresses to real +names, even though those addresses may not have real DNS entries on the +network (or may be 'local' addresses prohibited from use on the Internet). +A simple tab delimited text file can be created and imported into a cache +for use by The Webalizer, which will then be used to convert the local +IP addresses to real names. Additional configuration options for The +Webalizer can then be used as would be normally. For example, consider +a small business with 10 computers and a DSL router to the Internet. +Each machine on the local network would use a private IP address that +would not be resolved using an external (public) DNS server, so would +always be reported by The Webalizer as 'unknown/unresolved'. A simple +cache file could be created to map those unresolved addresses into more +meaningful names, which could then be further processed by the Webalizer. +An example might look something like: + +# Local machines +192.168.123.254 0 0 gw.widgetsareus.lan +192.168.123.253 0 0 mail.widgetsareus.lan +192.168.123.250 0 0 sales.widgetsareus.lan +192.168.123.240 0 0 service.widgetsareus.lan +192.168.123.237 0 0 mgr.widgetsareus.lan +192.168.123.235 0 0 support1.widgetsareus.lan +192.168.123.234 0 0 support2.widgetsareus.lan +192.168.123.232 0 0 pres.widgetsareus.lan +192.168.123.230 0 0 vp.widgetsareus.lan +192.168.123.225 0 0 reception.widgetsareus.lan +192.168.123.224 0 0 finance.widgetsareus.lan +127.0.0.1 0 1 127.0.0.1 + + +There are a couple of things here that should be noted. The first +is that the timestamps (first zero on each line above) are set to +zero. This tells The Webalizer that these cached entries are to +be considered 'permanent', and should never be expired (infinite +TTL or time to live). The second thing to note is that the resolved +names are using a non-standard TLD (top level domain) of '.lan'. +The Webalizer will map this special TLD to mean "Local Network" in +its reports, which allows local traffic to be grouped separately +from normal Internet traffic. Lastly, you may notice that the +last line of the file contains an entry with the same IP address +where a name should be. This entry will prevent the Webalizer +from ever trying to lookup 127.0.0.1, which is the 'localhost' +address, when it is found in a log. The second number after the IP +address (1) tells the Webalizer that it is an unresolved entry, not +a resolved hostname (ie: has no name). Entries such as this one can +be used to reduce DNS lookups on addresses that are known not to +resolve. + + +Considerations +-------------- + +Processing of live log files is discouraged, as the chances of log records +being written between the time of DNS resolution and normal processing will +cause problems. + +If you are using STDIN for the input stream (log file) and have run-time +DNS cache file creation/update enabled.. the program will exit after the +cache file has been created/updated and no output will be produced. If +you must use STDIN for the input log, you will need to process the stream +twice, once to create/update the cache file, and again to produce the +reports. The reason for this is that stream inputs from STDIN cannot +be 'rewound' to the beginning like files can, so must be given twice. + +Cached DNS addresses have a default TTL (time to live) of 7 days. This +may now be changed using the CacheTTL config file keyword to any value +from 1 to 100 (days). You may also now specify if unresolved addresses +should be stored in the DNS cache. Normally, unresolved IP addresses +are NOT saved in the cache and are looked up each time the program is +run. + +There is an absolute maximum of 100 child processes that may be created, +however the actual number of children should be significantly less than +the maximum.. typical usage should be between 5 and 20. + +Special thanks to Henning P. Schmiedehausen for the +original dns-resolver code he submitted, which was the basis for this +implementation. Also thanks to Jose Carlos Medeiros for the inital IPv6 +support code. + diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..81c35ff --- /dev/null +++ b/INSTALL @@ -0,0 +1,340 @@ +Installation instructions for The Webalizer + +The Webalizer is distributed in either source or binary distributions, +and installation is different for each type. Regardless of the type +of installation, you need to obtain and un-tar/un-zip the distribution. +For binary distributions, you should create a directory somewhere and +chdir to it before unpacking the file. Source distributions will +automagically create a directory for you (webalizer-x.xx-xx). If you +are upgrading from a previous version, check the CHANGES file, and the +README.FIRST file for important upgrade information. + + +For Binary distributions +------------------------ + +You should have all the files you need in the directory you created +when you un-tarred/un-zipped the distribution file. The file +'webalizer' in this directory is the binary executable. Copy this +someplace useful, like /usr/local/bin or /usr/bin. A man page for +The Webalizer is also supplied... If desired, copy the file +'webalizer.1' to your local man directory (ie: /usr/local/man/man1). +(You may also need to run 'makeinfo' or similar) + +Note: There may also be platform specific installation instructions + and/or usage notes supplied with the binary distribution. You + should read them, as that will be your starting point if problems + are encountered. Most of the binary distributions are submitted + by users, and I cannot support them the same way I can the + Linux binary distribution and the source code itself. + + +For Source distributions +------------------------ + +The Webalizer requires, at a minimum, the GD graphics library +(http://www.libgd.org/), the PNG (portable network graphics) +graphics library ( http://www.libpng.org/pub/png/ ), the Zlib +compression library ( http://www.zlib.net/ ) and associated +header files for these libraries. Most modern systems will have +these libraries, but may or may not have the required header files +for them unless you installed the 'dev' (development) versions +(which include the required header files along with the libraries). +Consult your systems documentation for specifics. + +For native DNS and Geolocation (GeoDB) support, the Berkeley DB +library (by sleepycat, now owned by Oracle) v4.1 or higher and +associated header file is required. +http://www.oracle.com/technology/products/berkeley-db/ + +For BZip2 support, the bzip2 compression library and header file is +required. http://www.bzip.org/ + +For GeoIP geolocation support, the GeoIP library (by MaxMind, Inc.) +and header file is required, along with a Country Edition database. +http://www.maxmind.com/app/ip-location + + +New style build: + +The Webalizer source distribution now comes packaged with a GNU +autoconf 'configure' script, which should allow you to simply type: + +./configure +make +make install + +Normal configure options apply, type ./configure --help to get a +complete list. A few options in particular may be useful: + +--sysconfdir=/etc + +The sysconfdir switch specifies where the default configuration +file (webalizer.conf) should be looked for. If not specified, the +default of ${prefix}/etc is used. + +--with-language= + +Allows you to specify the language to use. Check the /lang directory +to see the available language choices. As an example, you could use + +./configure --with-language=french + +to compile the program using french (webalizer_lang.french) for output. +You can also use the --without-language switch, which will use the +default language (english). + +--enable-dns + +DNS lookup and native geolocation features are added if the required +library (libdb) and header file (db.h) are found. DNS/GeoDB code is +enabled at compile time by using the -DUSE_DNS compiler switch. For +GeoDB lookups, a current geodb database is also required (available +at ftp://ftp.mrunix.net/pub/webalizer/geodb). + +--with-geodb= + +The default location for the GeoDB database is /usr/share/GeoDB but +may be changed using this option. + +--enable-bz2 + +BZip2 compression support will be added if the required library +(libbz2) and header file (bzlib.h) are found. BZip2 code is +enabled at compile time using the -DUSE_BZIP compiler switch. + +--enable-geoip + +GeoIP geolocation support will be added if the required library +(libGeoIP) and header file (GeoIP.h) are found. No attempt is +made to locate a valid Country Edition database, which is also +required for GeoIP lookups to be performed. GeoIP code is +enabled at compile time using the -DUSE_GEOIP compiler switch. + +Some systems may require unusual settings that the configure script +cannot determine. You can pass values to the script by setting +environment variables. For example: + +CC=c89 CFLAGS=-O LIBS=-lposix ./configure --with-language=german + +Would allow you to set the compiler (c89) and various flags and +libraries to use, which would then be passed to the configure script +and eventually to the Makefile generated. It also will cause the +program to be compiled using German instead of the English default. +Additionally, the various --with- and --with- +options allow specification of non-standard locations for the +various libraries and headers. For example, if you built the bzip2 +library in /src/bzip2, you could use: + +./configure --with-bz2=/src/bzip2 --with-bz2lib=/src/bzip2 --enable-bz2 + +to specify where the bz2 header files (--with-bz2) and library +(--with-bz2lib) are located. They should then be detected by +the configure script and enabled. Please note that if you are +linking against a shared library (ie: libbz2.so), then even though +configure script finds the library, and The Webalizer compiles +successfully, the program may FAIL when run because the systems +run-time linking loader cannot find the library. If this happens, +then you need to tell the loader where the library is, and is +dependent upon what type system is being used. Some platforms +require the path to the library to be placed in the LD_LIBRARY_PATH +environment variable.. some (such as linux based platforms) use +the ld.so.conf file and ldconfig program to configure the dynamic +linker run-time bindings. Consult the documentation for your +system specific requirements. + +For package maintainers, the environment variable DESTDIR can be +used to specify a root directory for installation. This is the +top level directory under which all other directories will be +placed when 'make install' is invoked, and allows binary packages +to be easily built outside the normal root directory tree. For +example, if you wish to build a binary package of The Webalizer +under the /usr/pkg/webalizer-2.20 directory, you could type: + +make install DESTDIR=/usr/pkg/webalizer-2.20 + +Which would then create the following directory tree: + +/usr/pkg/webalizer-2.20/ +/usr/pkg/webalizer-2.20/etc/ +/usr/pkg/webalizer-2.20/etc/webalizer.conf.sample +/usr/pkg/webalizer-2.20/usr/ +/usr/pkg/webalizer-2.20/usr/bin/ +/usr/pkg/webalizer-2.20/usr/bin/webalizer +/usr/pkg/webalizer-2.20/usr/bin/webazolver -> webalizer +/usr/pkg/webalizer-2.20/usr/bin/wcmgr +/usr/pkg/webalizer-2.20/usr/man/ +/usr/pkg/webalizer-2.20/usr/man/man1/ +/usr/pkg/webalizer-2.20/usr/man/man1/webalizer.1 +/usr/pkg/webalizer-2.20/usr/man/man1/webazolver.1 -> webalizer.1 +/usr/pkg/webalizer-2.20/usr/man/man1/wcmgr.1 + + +If the configure script doesn't work for you.. please let me know +(along with relevant info like system type, compiler, etc..) If you +are able and can tweak something to make it work, let me know as well. + + +Old style build: + +If you have a platform that the configure script won't work on, or +some other situation where you have to configure and build the +source yourself, the file 'Makefile.std' is a "stock" Makefile +that you can use to build the Webalizer. Copy or rename the file +to 'Makefile', edit to match your system, and do the usual 'make'. +This is a very generic Makefile, so expect to have to tweak it for +your particular platform and configuration. If everything seems +to have gone well, next type 'make install' to do a stock install. +Again, you may want to tweak the Makefile for the install, or +skip the 'make install' step completely (see below). + +This will install the Webalizer on your system, and put a sample +configuration file in /etc (named 'webalizer.conf.sample'). If +you don't want to use the 'make install' method... just copy the +file 'webalizer' to someplace useful, and you are ready to go :) + + +Usage +----- + +When run, The Webalizer will read the specified log file and +produce HTML output in the directory specified (or current +directory if none). You may specify various configuration +options either on the command line or in a configuration file. +The format of the command line is: + +webalizer [options] [log_file] + +Where 'options' may be any of the valid command line options +described in the README file. If a log filename is not given, +input is taken from stdin. A typical command line might look +something similar to: + +webalizer /var/lib/httpd/logs/access_log + +This will produce output in the current directory based on the +logfile /var/lib/httpd/logs/access_log. Another example: + +webalizer -c somehost.conf + +This will read the configuration file somehost.conf, which +should specify, among other things, the log filename and +output directory to use. You can use 'webalizer -h' to get +a list of available command line options, or view the file +README for complete instructions on all available configuration +options. You should note that The Webalizer will _always_ +look for a configuration file named 'webalizer.conf' in either +the current directory or in /etc/, and will process that file +_before_ any other configuration or command line options. If +you run a single server, you may want to create a default +configuration file and place it in the /etc/ directory. This +will allow you to simply type 'webalizer' without the need to +specify additional command line options. + + +Configuration +------------- + +The Webalizer can be customized in many ways using either the +command line or configuration files. To test The Webalizer, +type: 'webalizer /var/lib/httpd/logs/access_log', changing the +directory to wherever your log files are. After processing, +you should have the output and a file named index.html which +can be viewed with any browser. The Webalizer can accept many +command line options as well, type 'webalizer -h' to view them. +In addition to the command line options, The Webalizer can +be customized using configuration files. There is a sample.conf +file that is part of both the source and binary distributions +that can be used as a 'template' for creating your own site +configuration file. Just make a copy of the file and name it +something like 'mysite.conf'. Edit the new file to match your +particular setup and taste. + +To test the new configuration file, type 'webalizer -c mysite.conf' +(or whatever your configuration file is named). Fire up the +browser and look at the results. If you rename your new +configuration file to 'webalizer.conf', you will only need +to type 'webalizer', and The Webalizer will use it as the +default. See the README file for more on configuration and +use of configuration files. + + +Language Support +---------------- + +Language support is provided as language specific header +files that must be compiled into the program. If you don't +have the source code, get it. If you can't compile the +program yourself, ask a friend. The /lang/ directory of +the distribution contains all supported languages at the +time of release. Additional/updated language files will +be found at ftp://ftp.webalizer.org/pub/webalizer/lang and +are always the most current versions. + +To build with language support, use the --with-language +option of the configure script. This will automagically +do for you the steps described below. If you can't use +the configure script, you can manually select the language +file to use. + +In the webalizer source directory, you will find a symbolic +link for the file webalizer_lang.h, and it will be pointing +to the file webalizer_lang.english which is the default. +Delete the link (ie: rm webalizer_lang.h) and create a new +one to the language file you want The Webalizer to use +(ie: ln -s lang/webalizer_lang.spanish webalizer_lang.h) +and re-compile the program. + +Note: The source distribution of The Webalizer contains all + language support files that were available at the time. + Additional/updated language files can be found at: + ftp://ftp.webalizer.org/pub/webalizer/lang where I will + put them as I receive them. + + +Common Questions +---------------- + +Q: Will it run on [some platform] +A: If it is a *nix platform, it should without a problem. If it's + something different, probably not and your on your own if you + want to try to make it work. + +Q: When I compile, I get "file not found" errors? +A: Most likely, the compiler cant find the header files for one + the required libraries. If they are someplace other than the + standard locations (ie: /usr/include), then you probably need + to specify an alternate location to look using one of the + --with- command line switches when you run configure, + or edit the Makefile and specify the location with an '-I' + compiler flag. + +Q: I get "libgd not found' errors? +A: You don't have the GD graphics located in a standard library + path, or you don't have the GD graphics library at all. If + the later, go to http://www.boutell.com/gd/ and grab a copy. + If you do have it, add a -L switch in the Makefile to point + to the proper location. + +Q: I get unresolved symbol errors when compiling, why? +A: This most often occurs when the GD library was built with + additional support for such things as TrueType fonts or + X11 graphics. The configure script for The Webalizer only + checks that the gd library is available, and does not check + any other dependencies it may have. Typically, to fix this + problem, you need to edit the Makefile and add the dependent + libraries to a compiler switch (or pass them on the command + line when running the configure script). For example, if + you are getting errors about not finding truetype routines, + you may need to add '-lttf' (for 'libttf', the truetype library) + to the "LIBS" variable. + + Hint: I usually find it easier to just grab the GD library + source, and compile it myself locally as a static + library, in a directory just above where I compile The + Webalizer. Then, at configure time, just add the + '-with-gd=../gd' and '--with-gdlib=../gd' switches, + and the GD graphic stuff will be statically linked into + The Webalizer, eliminating any other library dependencies + that the normal, shared library on my system may have. + diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..1efc703 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,116 @@ +# +# Makefile for webalizer - a web server log analysis program +# +# Copyright (C) 1997-2011 Bradford L. Barrett +# +# This program 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 2 of the License, or +# (at your option) any later version, and provided that the above +# copyright and permission notice is included with all distributed +# copies of this or derived software. +# +# This program 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 (file "COPYING"). +# + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datadir = @datarootdir@ + +BINDIR = @bindir@ +MANDIR = ${datadir}/man/man1 +ETCDIR = @sysconfdir@ +GEODB = @GEODB_LOC@ +CC = @CC@ +CFLAGS = @CFLAGS@ @CPPFLAGS@ +LIBS = @LIBS@ +WCMGR_LIBS = @WCMGR_LIBS@ +DEFS = -DETCDIR=\"${ETCDIR}\" -DGEODB_LOC=\"${GEODB}\" @DEFS@ @OPTS@ +LDFLAGS = @LDFLAGS@ +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +DEFLANG = @DEFAULT_LANG@ + +# Shouldn't have to touch below here! + +all: webalizer wcmgr + +webalizer: webalizer.o webalizer.h hashtab.o hashtab.h \ + linklist.o linklist.h preserve.o preserve.h \ + dns_resolv.o dns_resolv.h parser.o parser.h \ + output.o output.h graphs.o graphs.h lang.h \ + webalizer_lang.h + $(CC) ${LDFLAGS} -o webalizer webalizer.o hashtab.o linklist.o preserve.o parser.o output.o dns_resolv.o graphs.o ${LIBS} + rm -f webazolver + @LN_S@ webalizer webazolver + +webalizer.o: webalizer.c webalizer.h parser.h output.h preserve.h \ + graphs.h dns_resolv.h webalizer_lang.h + $(CC) ${CFLAGS} ${DEFS} -c webalizer.c + +parser.o: parser.c parser.h webalizer.h lang.h + $(CC) ${CFLAGS} ${DEFS} -c parser.c + +hashtab.o: hashtab.c hashtab.h dns_resolv.h webalizer.h lang.h + $(CC) ${CFLAGS} ${DEFS} -c hashtab.c + +linklist.o: linklist.c linklist.h webalizer.h lang.h + $(CC) ${CFLAGS} ${DEFS} -c linklist.c + +output.o: output.c output.h webalizer.h preserve.h \ + hashtab.h graphs.h lang.h + $(CC) ${CFLAGS} ${DEFS} -c output.c + +preserve.o: preserve.c preserve.h webalizer.h parser.h \ + hashtab.h graphs.h lang.h + $(CC) ${CFLAGS} ${DEFS} -c preserve.c + +dns_resolv.o: dns_resolv.c dns_resolv.h lang.h webalizer.h + $(CC) ${CFLAGS} ${DEFS} -c dns_resolv.c + +graphs.o: graphs.c graphs.h webalizer.h lang.h + $(CC) ${CFLAGS} ${DEFS} -c graphs.c + +wcmgr: wcmgr.o + $(CC) ${LDFLAGS} -o wcmgr wcmgr.o ${WCMGR_LIBS} + +wcmgr.o: wcmgr.c + $(CC) ${CFLAGS} ${DEFS} -c wcmgr.c + +clean: + rm -f webalizer webazolver wcmgr *.o usage*.png daily*.png hourly*.png + rm -f ctry*.png *.html *.hist *.current core *.gif + +distclean: clean + rm -f webalizer.conf *.tar *.tgz *.Z *.tar.gz + rm -f Makefile webalizer_lang.h config.cache config.log config.status + @LN_S@ lang/webalizer_lang.@DEFAULT_LANG@ webalizer_lang.h + +install: all + mkdir -p ${DESTDIR}${BINDIR} + mkdir -p ${DESTDIR}${MANDIR} + mkdir -p ${DESTDIR}${ETCDIR} + $(INSTALL_PROGRAM) webalizer ${DESTDIR}${BINDIR}/webalizer + $(INSTALL_PROGRAM) wcmgr ${DESTDIR}${BINDIR}/wcmgr + rm -f ${DESTDIR}${BINDIR}/webazolver + @LN_S@ webalizer ${DESTDIR}${BINDIR}/webazolver + $(INSTALL_DATA) webalizer.1 ${DESTDIR}${MANDIR}/webalizer.1 + $(INSTALL_DATA) wcmgr.1 ${DESTDIR}${MANDIR}/wcmgr.1 + rm -f ${DESTDIR}${MANDIR}/webazolver.1 + @LN_S@ webalizer.1 ${DESTDIR}${MANDIR}/webazolver.1 + $(INSTALL_DATA) sample.conf ${DESTDIR}${ETCDIR}/webalizer.conf.sample + +uninstall: + rm -f ${DESTDIR}${BINDIR}/webalizer + rm -f ${DESTDIR}${BINDIR}/webazolver + rm -f ${DESTDIR}${BINDIR}/wcmgr + rm -f ${DESTDIR}${MANDIR}/webalizer.1 + rm -f ${DESTDIR}${MANDIR}/webazolver.1 + rm -f ${DESTDIR}${MANDIR}/wcmgr.1 + rm -f ${DESTDIR}${ETCDIR}/webalizer.conf.sample + rm -f webalizer_lang.h + @LN_S@ lang/webalizer_lang.${DEFLANG} webalizer_lang.h diff --git a/Makefile.std b/Makefile.std new file mode 100644 index 0000000..daa0c4a --- /dev/null +++ b/Makefile.std @@ -0,0 +1,140 @@ +# +# Makefile for webalizer - a web server logfile analysis thingie +# +# (c)1997-2011 by Bradford L. Barrett +# Distributed under the GNU GPL. See "README" and "Copyright" +# files supplied with this distribution for more information. +# +# This works on my Linux and Solaris systems, and should work +# out of the box on other GCC based systems. Tweek the values +# below for your environment if needed before running make. +# + +# Use these for SCO (and maybe others) +#BINDIR = /usr/bin +#MANDIR = /usr/man/man1 +#ETCDIR = /etc +#CC = cc +#CFLAGS = -b elf +#LDFLAGS= -L../usr/local/lib +#LIBS = -lgd -lm -lpng -lz +#DEFS = -DETCDIR=\"${ETCDIR}\" -DHAVE_MATH_H + +# These will build The Webalizer with DNS support +# on my Linux system. GD is statically built and +# is located in the ../gd directory. This system +# also has a stock install of the berkeley db lib +# (libdb in /usr/lib and db.h in /usr/include). + +BINDIR = /usr/local/bin +MANDIR = /usr/local/man/man1 +ETCDIR = /etc +CC = gcc +CFLAGS = -Wall -O2 -I../gd +LDFLAGS= -L/usr/local/lib -L../gd +LIBS = -lgd -lpng -lz -lm -ldb +DEFS = -DETCDIR=\"${ETCDIR}\" -DHAVE_MATH_H -DUSE_DNS + +# Some might need this instead (Solaris?!?) +#LIBS = -lgd -lpng -lz -lm -ldb -lnsl -lsocket -lrt + +# if you want to use a different default directory for the +# GeoDB database, add this to DEFS: -DGEODB_LOC=\"/usr/share/GeoDB\" + +# if you have header files in a non-standard place, you +# should specify them on the CFLAGS line, like: + +#CFLAGS = -Wall -O2 -I../gd -I/src/bzip2 + +# similar with library locations. add non-standard paths +# using the LDFLAGS variable, like this: + +#LDFLAGS = -L/usr/local/lib -L/src/bzip2 + +# If your GD lib was compiled with X/truetype, you may need +# to use this or some variation of it: + +#LIBS = -lgd -lpng -lz -lm -ldb -lX11 -lXpm -lttf + +# If you want bzip2 support, you need to define USE_BZIP +# and add the bz2 library like below: + +#LIBS = -lgd -lpng -lz -lm -lbz2 +#DEFS = -DETCDIR=\"${ETCDIR}\" -DHAVE_MATH_H -DUSE_BZIP + +# GeoIP support? You need USE_GEOIP and -lGeoIP + +#LIBS = -lgd -lpng -lz -lm -lGeoIP +#DEFS = -DETCDIR=\"${ETCDIR}\" -DHAVE_MATH_H -DUSE_GEOIP + +# want it all?!? Give this a whirl: + +#LIBS = -lgd -lpng -lz -lm -lGeoIP -lbz2 -ldb +#DEFS = -DETCDIR=\"${ETCDIR}\" -DHAVE_MATH_H -DUSE_GEOIP -DUSE_DNS -DUSE_BZIP + +# Shouldn't have to touch below here! + +all: webalizer wcmgr + +webalizer: webalizer.o webalizer.h hashtab.o hashtab.h \ + linklist.o linklist.h preserve.o preserve.h \ + dns_resolv.o dns_resolv.h parser.o parser.h \ + output.o output.h graphs.o graphs.h lang.h \ + webalizer_lang.h + $(CC) ${LDFLAGS} -o webalizer webalizer.o hashtab.o linklist.o preserve.o parser.o output.o dns_resolv.o graphs.o ${LIBS} + rm -f webazolver + ln -s webalizer webazolver + rm -f webazolver.1 + ln -s webalizer.1 webazolver.1 + +webalizer.o: webalizer.c webalizer.h parser.h output.h preserve.h \ + graphs.h dns_resolv.h webalizer_lang.h + $(CC) ${CFLAGS} ${DEFS} -c webalizer.c + +parser.o: parser.c parser.h webalizer.h lang.h + $(CC) ${CFLAGS} ${DEFS} -c parser.c + +hashtab.o: hashtab.c hashtab.h dns_resolv.h webalizer.h lang.h + $(CC) ${CFLAGS} ${DEFS} -c hashtab.c + +linklist.o: linklist.c linklist.h webalizer.h lang.h + $(CC) ${CFLAGS} ${DEFS} -c linklist.c + +output.o: output.c output.h webalizer.h preserve.h \ + hashtab.h graphs.h lang.h + $(CC) ${CFLAGS} ${DEFS} -c output.c + +preserve.o: preserve.c preserve.h webalizer.h parser.h \ + hashtab.h graphs.h lang.h + $(CC) ${CFLAGS} ${DEFS} -c preserve.c + +dns_resolv.o: dns_resolv.c dns_resolv.h lang.h webalizer.h + $(CC) ${CFLAGS} ${DEFS} -c dns_resolv.c + +graphs.o: graphs.c graphs.h webalizer.h lang.h + $(CC) ${CFLAGS} ${DEFS} -c graphs.c + +wcmgr: wcmgr.o + $(CC) ${LDFLAGS} -o wcmgr wcmgr.o ${LIBS} + +wcmgr.o: wcmgr.c webalizer.h + $(CC) ${CFLAGS} ${DEFS} -c wcmgr.c + +clean: + rm -f webalizer *.o usage*.png daily*.png hourly*.png ctry*.png + rm -f *.html *.hist *.current core *.gif + +distclean: clean + rm -f webalizer.conf *.tar *.tgz *.Z *.tar.gz + rm -f Makefile webalizer_lang.h config.cache config.log config.status + ln -s lang/webalizer_lang.english webalizer_lang.h + +install: all + cp webalizer.1 ${MANDIR}/webalizer.1 + cp webalizer ${BINDIR}/webalizer + cp sample.conf ${ETCDIR}/webalizer.conf.sample + +uninstall: + rm -f ${MANDIR}/webalizer.1 + rm -f ${BINDIR}/webalizer + rm -f ${BINDIR}/webalizer.conf.sample diff --git a/README b/README new file mode 100644 index 0000000..14a3a24 --- /dev/null +++ b/README @@ -0,0 +1,1949 @@ +The Webalizer - A web server log file analysis tool +Copyright 1997-2011 by Bradford L. Barrett + +Distributed under the GNU GPL. See the files "COPYING" and +"Copyright" supplied with the distribution for additional info. + + +What is The Webalizer? +---------------------- + +The Webalizer is a web server log file analysis program which produces +usage statistics in HTML format for viewing with a browser. The results +are presented in both columnar and graphical format, which facilitates +interpretation. Yearly, monthly, daily and hourly usage statistics are +presented, along with the ability to display usage by site, URL, referrer, +user agent (browser), search string, entry/exit page, username and country +(some information is only available if supported and present in the log +files being processed). Processed data may also be exported into most +database and spreadsheet programs that support tab delimited data formats. + +The Webalizer supports CLF (common log format) log files, as well as +Combined log formats as defined by NCSA and others, and variations +of these which it attempts to handle intelligently. In addition, The +Webalizer supports wu-ftpd xferlog (FTP) formatted logs, squid proxy logs +and W3C extended format logs. + +Gzip compressed logs may be used as input directly. Any log filename +that ends with a '.gz' extension will be assumed to be in gzip format and +uncompressed on the fly as it is being read. The Webalizer now also has +the ability to handle BZip2 compressed logs, if enabled at compile time. +Similar to gzipped logs, any log filename that ends with a '.bz2' will be +assumed to be in bzip2 format and uncompressed on the fly as it is being +read. + +For sites that do not enable hostname lookups (DNS resolution) on their +web servers (and have only IP addresses in their logs), The Webalizer +provides its own internal DNS lookup capability as well as geolocation +services (GeoDB). The optional GeoIP library from MaxMind Inc. is also +supported and may be used instead of the native GeoDB database. + +A utility program, "The Webalizer (DNS) Cache file Manager", or 'wcmgr' +is also provided which allows the creation and manipulation of the DNS +cache files used and produced by the webalizer. See the file DNS.README +for additional information regarding DNS support. + +This documentation applies to The Webalizer Version 2.21 + +Running the Webalizer +--------------------- + +The Webalizer was designed to be run from a Unix command line prompt or +as a cron job. There are several command line options which will modify +the results it produces, and configuration files can be used as well. +The format of the command line is: + +webalizer [options ...] [log-file] + +Where 'options' can be one or more of the supported command line +switches described below. 'log-file' is the name of the log file +to process (see below for more detailed information). If a dash +("-") is specified for the log-file name, STDIN will be used. + + +Once executed, the general flow of the program follows: + +o A default configuration file is scanned for. A file named + 'webalizer.conf' is searched for in the current directory, and if + found, its configuration data is parsed. If the file is not + present in the current directory, the file '/etc/webalizer.conf' + is searched for and, if found, is used instead. + +o Any command line arguments given to the program are parsed. This + may include the specification of a configuration file, which is + processed at the time it is encountered. + +o If a log file was specified, it is opened and made ready for + processing. If no log file was given, or the filename '-' is + specified on the command line, STDIN is used for input. + +o If an output directory was specified, the program does a 'chdir' to + that directory in preparation for generating output. If no output + directory was given, the current directory is used. + +o If a non-zero number of DNS Children processes were specified, they + will be started, and the specified log file will be processed, + either creating or updating the specified DNS cache file. + +o If no hostname was given, the program attempts to get the hostname + using a uname system call. If that fails, 'localhost' is used. + +o A history file is searched for. This file keeps previous month + totals used on the main index.html page. The default file is + named 'webalizer.hist', kept in the specified output directory, + however may be changed using the "HistoryName" configuration file + keyword. + +o If incremental processing was specified, a data file is searched for + and loaded if found, containing the 'internal state' data of the + program at the end of a previous run. The default file is named + 'webalizer.current', kept in the specified output directory, however + may be changed using the "IncrementalName" configuration file keyword. + +o Main processing begins on the log file. If the log spans multiple + months, a separate HTML document is created for each month. + +o After main processing, the main 'index.html' page is created, which + has totals by month and links to each months HTML document. + +o A new history file is saved to disk, which includes totals generated + by The Webalizer during the current run. + +o If incremental processing was specified, a data file is written that + contains the 'internal state' data at the end of this run. + + +Incremental Processing +---------------------- + +Version 1.2x of The Webalizer adds incremental run capability. Simply +put, this allows processing large log files by breaking them up into +smaller pieces, and processing these pieces instead. What this means +in real terms is that you can now rotate your log files as often as you +want, and still be able to produce monthly usage statistics without the +loss of any detail. This is accomplished by saving and restoring all +relevant internal data to a disk file between runs. Doing so allows the +program to 'start where it left off' so to speak, and allows the +preservation of detail from one run to the next. + +Some special precautions need to be taken when using the incremental +run capability of The Webalizer. Configuration options should not be +changed between runs, as that could cause corruption of the internal +stored data. For example, changing the MangleAgents level will cause +different representations of user agents to be stored, producing invalid +results in the user agents section of the report. If you need to change +configuration options, do it at the end of the month after normal +processing of the previous month and before processing the current month. +You may also want to delete the 'webalizer.current' file as well (or +whatever name was specified using the "IncrementalName" configuration +option). + +The Webalizer also attempts to prevent data duplication by keeping +track of the timestamp of the last record processed. This timestamp +is then compared to current records being processed, and any records +that were logged previous to that timestamp are ignored. This, in +theory, should allow you to re-process logs that have already been +processed, or process logs that contain a mix of processed/not yet +processed records, and not produce duplication of statistics. The +only time this may break is if you have duplicate timestamps in two +separate log files... any records in the second log file that do have +the same timestamp as the last record in the previous log file processed, +will be discarded as if they had already been processed. There are +lots of ways to prevent this however, for example, stopping the web +server before rotating logs will prevent this situation. This setup +also necessitates that you always process logs in chronological order, +otherwise data loss will occur as a result of the timestamp compare. + + +Output Produced +--------------- + +The Webalizer produces several reports (html) and graphics for each +month processed. In addition, a summary page is generated for the +current and previous months (up to 12), a history file is created +and if incremental mode is used, the current month's processed data. +The exact location and names of these files can be changed using +configuration files and command line options. The files produced, +(default names) are: + +index.html - Main summary page (extension may be changed) +usage.png - Yearly graph displayed on the main index page +usage_YYYYMM.html - Monthly summary page (extension may be changed) +usage_YYYYMM.png - Monthly usage graph for specified month/year +daily_usage_YYYYMM.png - Daily usage graph for specified month/year +hourly_usage_YYYYMM.png - Hourly usage graph for specified month/year +site_YYYYMM.html - All sites listing (if enabled) +url_YYYYMM.html - All urls listing (if enabled) +ref_YYYYMM.html - All referrers listing (if enabled) +agent_YYYYMM.html - All user agents listing (if enabled) +search_YYYYMM.html - All search strings listing (if enabled) +webalizer.hist - Previous month history (may be changed) +webalizer.current - Incremental Data (may be changed) +site_YYYYMM.tab - tab delimited sites file +url_YYYYMM.tab - tab delimited urls file +ref_YYYYMM.tab - tab delimited referrers file +agent_YYYYMM.tab - tab delimited user agents file +user_YYYYMM.tab - tab delimited usernames file +search_YYYYMM.tab - tab delimited search string file + +The yearly (index) report shows statistics for a 12 month period, and +links to each month. The monthly report has detailed statistics for +that month with additional links to any URLs and referrers found. +The various totals shown are explained below. + +Hits + + Any request made to the server which is logged, is considered a 'hit'. +The requests can be for anything... html pages, graphic images, audio +files, CGI scripts, etc... Each valid line in the server log is +counted as a hit. This number represents the total number of requests +that were made to the server during the specified report period. + +Files + + Some requests made to the server, require that the server then send +something back to the requesting client, such as a html page or graphic +image. When this happens, it is considered a 'file' and the files +total is incremented. The relationship between 'hits' and 'files' can +be thought of as 'incoming requests' and 'outgoing responses'. + +Pages + + Pages are, well, pages! Generally, any HTML document, or anything +that generates an HTML document, would be considered a page. This +does not include the other stuff that goes into a document, such as +graphic images, audio clips, etc... This number represents the number +of 'pages' requested only, and does not include the other 'stuff' that +is in the page. What actually constitutes a 'page' can vary from +server to server. The default action is to treat anything with the +extension '.htm', '.html' or '.cgi' as a page. A lot of sites will +probably define other extensions, such as '.phtml', '.php3' and '.pl' +as pages as well. Some people consider this number as the number of +'pure' hits... I'm not sure if I totally agree with that viewpoint. +Some other programs (and people :) refer to this as 'Pageviews'. + +Sites + + Each request made to the server comes from a unique 'site', which can +be referenced by a name or ultimately, an IP address. The 'sites' +number shows how many unique IP addresses made requests to the server +during the reporting time period. This DOES NOT mean the number of +unique individual users (real people) that visited, which is impossible +to determine using just logs and the HTTP protocol (however, this +number might be about as close as you will get). + +Visits + + Whenever a request is made to the server from a given IP address +(site), the amount of time since a previous request by the address +is calculated (if any). If the time difference is greater than a +pre-configured 'visit timeout' value (or has never made a request before), +it is considered a 'new visit', and this total is incremented (both +for the site, and the IP address). The default timeout value is 30 +minutes (can be changed), so if a user visits your site at 1:00 in +the afternoon, and then returns at 3:00, two visits would be registered. +Note: in the 'Top Sites' table, the visits total should be discounted +on 'Grouped' records, and thought of as the "Minimum number of visits" +that came from that grouping instead. Note: Visits only occur on +PageType requests, that is, for any request whose URL is one of the +'page' types defined with the PageType and PagePrefix option, and not +excluded by the OmitPage option. Due to the limitation of the HTTP +protocol, log rotations and other factors, this number should not be +taken as absolutely accurate, rather, it should be considered a pretty +close "guess". + +KBytes + + The KBytes (kilobytes) value shows the amount of data, in KB, that +was sent out by the server during the specified reporting period. This +value is generated directly from the log file, so it is up to the +web server to produce accurate numbers in the logs (some web servers +do stupid things when it comes to reporting the number of bytes). In +general, this should be a fairly accurate representation of the amount +of outgoing traffic the server had, regardless of the web servers +reporting quirks. + +Note: A kilobyte is 1024 bytes, not 1000 :) + +Top Entry and Exit Pages + + The Top Entry and Exit tables give a rough estimate of what URLs +are used to enter your site, and what the last pages viewed are. +Because of limitations in the HTTP protocol, log rotations, etc... +this number should be considered a good "rough guess" of the actual +numbers, however will give a good indication of the overall trend in +where users come into, and exit, your site. + + +Command Line Options +-------------------- + +The Webalizer supports many different configuration options that will +alter the way the program behaves and generates output. Most of these +can be specified on the command line, while some can only be specified +in a configuration file. The command line options are listed below, +with references to the corresponding configuration file keywords. + +-------------------------------------------------------------------------- + +General Options +--------------- + +-h Display all available command line options and exit program. + +-v Be Verbose. This will cause the program to print additional + information at run time. It is the same as specifying + "Quiet no", "ReallyQuiet no" and "Debug yes" config options. + +-V Display the program version and exit. Additional program + specific information will be displayed if 'verbose' mode is + also used (e.g. '-vV'), which can be useful when submitting + bug reports. + +-d Display additional 'debugging' information for errors and + warnings produced during processing. This normally would + not be used except to determine why you are getting all those + errors and wanted to see the actual data. Normally The + Webalizer will just tell you it found an error, not the + actual data. This option will display the data as well. + Config file keyword: Debug + +-F Specify the log file type to process. Normally, the + Webalizer expects to find a valid CLF or Combined format + we server log file. This option allows you to process + wu-ftpd xferlogs, squid and W3C formatted web logs as well. + Values can be either 'clf', 'ftp', 'squid' or 'w3c' with + 'clf' being the default. Only the first character needs + to be specified (eg: -Fs will process a squid log). + Config file keyword: LogType + +-f Fold out of sequence log records back into analysis, by + treating them as if they were the same date/time as the + last good record. Normally, out of sequence log records + are ignored. If you run apache, don't worry about this. + Config file keyword: FoldSeqErr + +-i Ignore history file. USE WITH CAUTION. This causes The + Webalizer to ignore any existing history file produced from + previous runs and generate its output from scratch. The + effect will be as if The Webalizer is being run for the + first time and any previous statistics will be lost (although + the HTML documents, if any, will not be deleted) on the main + index.html (yearly) web page. + Config file keyword: IgnoreHist + +-b Ignore incremental data file. USE WITH CAUTION. This causes + The Webalizer to ignore any existing incremental (state) data + file produced by previous runs. By ignoring the incremental + data file, all previous processing for the current month will + be lost, and those logs must be re-processed. + Config file keyword: IgnoreState + +-p Preserve state (incremental processing). This allows the + processing of partial logs in increments. At the end of + the program, all relevant internal data is saved, so that + it may be restored the next time the program is run. This + allows sites that must rotate their logs more than once a + month to still be able to use The Webalizer, and not worry + about having to gather and feed an entire months logs to + the program at the end of the month. See the section on + "Incremental Processing" below for additional information. + The default is to not perform incremental processing. Use + this command line option to enable the feature. + Config file keyword: Incremental + +-q Quiet mode. Normally, The Webalizer will produce various + messages while it runs letting you know what its doing. + This option will suppress those messages. It should be + noted that this WILL NOT suppress errors and warnings, which + are output to STDERR. + Config file keyword: Quiet + +-Q ReallyQuiet mode. This allows suppression of _all_ messages + generated by The Webalizer, including warnings and errors. + Useful when The Webalizer is run as a cron job. + Config file keyword: ReallyQuiet + +-T Display timing information. The Webalizer keeps track of the + time it begins and ends processing, and normally displays the + total processing time at the end of each run. If quiet mode + (-q or 'Quiet yes' in configuration file) is specified, this + information is not displayed. This option forces the display + of timing totals if quiet mode has been specified, otherwise + it is redundant and will have no effect. + Config file keyword: TimeMe + +-c file This option specifies a configuration file to use. Configuration + files allow greater control over how The Webalizer behaves, and + there are several ways to use them. As of version 0.98, The + Webalizer searches for a default configuration file in the + current directory named "webalizer.conf", and if not found, + will search in the /etc/ directory for a file of the same name. + In addition, you may specify a configuration file to use with + this command line option. + +-n name This option specifies the hostname for the reports generated. + The hostname is used in the title of all reports, and is also + prepended to URLs in the reports. This allows The Webalizer + to be run on log files for 'virtual' web servers or web servers + that are different than the machine the reports are located on, + and still allows clicking on the URLs to go to the proper + location. If a hostname is not specified, either on the + command line or in a configuration file, The Webalizer attempts + to determine the hostname using a 'uname' system call. If this + fails, "localhost" will be used as the hostname. + Config file keyword: HostName + +-o dir This options specifies the output directory for the reports. + If not specified here or in a configuration file, the current + default directory will be used for output. + Config file keyword: OutputDir + +-x name This option allows the generated pages to have an extension + other than '.html', which is the default. Do not include the + leading period ('.') when you specify the extension. + Config file keyword: HTMLExtension + +-P name Specify the file extensions for 'pages'. Pages (sometimes + called 'PageViews') are normally html documents and CGI + scripts that display the whole page, not just parts of it. + Some system will need to define a few more, such as 'phtml', + 'php3' or 'pl' in order to have them counted as well. The + default is 'htm*' and 'cgi' for web logs and 'txt' for ftp. + Config file keyword: PageType + +-O name Specify URLs which are not counted as 'pages'. Requests + matching one of these URLs will not be counted as a page, even + if they have an extension matching one of the PageTypes defined + above or have no extension at all. + Config file keyword: OmitPage + +-t name This option specifies the title string for all reports. This + string is used, in conjunction with the hostname (if not blank) + to produce the actual title. If not specified, the default of + "Usage Statistics for" will be used. + Config file keyword: ReportTitle + +-Y Suppress Country graph. Normally, The Webalizer produces + country statistics in both Graph and Columnar forms. This + option will suppress the Country Graph from being generated. + Config file keyword: CountryGraph + +-G Suppress hourly graph. Normally, The Webalizer produces + hourly statistics in both Graph and Columnar forms. This + option will suppress the Hourly Graph only from being generated. + Config file keyword: HourlyGraph + +-H Suppress Hourly statistics. Normally, The Webalizer produces + hourly statistics in both Graph and Columnar forms. This + option will suppress the Hourly Statistics table only from + being generated. + Config file keyword: HourlyStats + +-K num Specify how many months should be displayed in the main index + (yearly summary) table. Default is 12 months. Can be set to + anything between 12 and 120 months (1 to 10 years). + Config file keyword: IndexMonths + +-k num Specify how many months should be displayed in the main index + (yearly summary) graph. Default is 12 months. Can be set to + anything between 12 and 72 months (1 to 6 years). + Config file keyword: GraphMonths + +-L Disable Graph Legends. The color coded legends displayed on + the in-line graphs can be disabled with this option. The + default is to display the legends. + Config file keyword: GraphLegend + +-l num Graph Lines. Specify the number of background reference + lines displayed on the in-line graphics produced. The default + is 2 lines, however can range anywhere from zero ('0') for + no lines, up to 20 lines (looks funny!). + Config file keyword: GraphLines + +-P name Page type. This is the extension of files you consider to + be pages for Pages calculations (sometimes called 'pageviews'). + The default is 'htm*' and 'cgi' (plus whatever HTMLExtension + you specified if it is different). Don't use a period! + +-m num Specify a 'visit timeout'. Visits are calculated by looking at + the time difference between the current and last request made + by a specific host. If the difference is greater that the + visit timeout value, the request is considered a new visit. + This value is specified in number of seconds. The default + is 30 minutes (1800). + Config file keyword: VisitTimeout + +-M num Mangle user agent names. Normally, The Webalizer will keep + track of the user agent field verbatim. Unfortunately, there are + a ton of different names that user agents go by, and the field + also reports other items such as machine type and OS used. For + Example, Netscape 4.03 running on Windows 95 will report a + different string than Netscape 4.03 running on Windows NT, so even + though they are the same browser type, they will be considered + as two totally different browsers by The Webalizer. For that + matter, Netscape 4.0 running on Windows NT will report different + names if one is run on an Alpha and the other on an Intel + processor! Internet Exploder is even worse, as it reports itself + as if it were Netscape and you have to search the given string a + little deeper to discover that it is really MSIE! In order to + consolidate generic browser types, this option will cause The + Webalizer to 'mangle' the user agent field, attempting to + consolidate generic browser types. There are 6 levels that can be + specified, each producing different levels of detail. Level 5 + displays only the browser name (MSIE or Mozilla) and the major + version number. Level 4 will also display the minor version + number (single decimal place). Level 3 will display the minor + version number to two decimal places. Level 2 will add any + sub-level designation (such as Mozilla/3.01Gold or MSIE 3.0b). + Level 1 will also attempt to add the system type. The default + Level 0 will disable name mangling and leave the user agent + field unmodified, producing the greatest amount of detail. + Configuration file keyword: MangleAgents + +-g num This option allows you to specify the level of domains name + grouping to be performed. The numeric value represents the + level of grouping, and can be thought of as the 'number of + dots' to be displayed. The default value of 0 disables any + domain name grouping. + Configuration file keyword: GroupDomains + +-D name This allows the specification of a DNS Cache file name. This + filename MUST be specified if you have dns lookups enabled + (using the -N command line switch or DNSChildren configuration + keyword). The filename is relative to the default output + directory if an absolute path is not specified (ie: starts + with a leading '/'). This option is only available if DNS + support was enabled at compile time, otherwise an 'Invalid + Keyword' error will be generated. See the DNS.README file + for additional information regarding DNS lookups. + Configuration file keyword: DNSCache + +-N num Number of DNS child processes to use for reverse DNS lookups. + If specified, a DNSCache name MUST be specified also. If you + do not wish a DNS cache file to be generated, specify a value + of zero ('0') to disable it. This does not prevent using an + existing cache file, only the generation of one at run time. + See the DNS.README file for additional information. + Configuration file keyword: DNSChildren + +-j Enable native GeoDB geolocation services. + Configuration file keyword: GeoDB + +-J name Specify an alternate GeoDB database filename to use. This + shouldn't normally be needed. If used, the filename 'name' + is relative to the output directory being used unless an + absolute path is specified (ie: starts with a leading '/'). + Configuration file keyword: GeoDBDatabase + +-w Enable GeoIP support if it is available. + Configuration file keyword: GeoIP + +-W name Specify an alternate GeoIP database filename to use. This + shouldn't normally be needed. If used, the filename 'name' + is relative to the specified output directory unless an + absolute name is given (ie: starts with a leading '/'). + Configuration file keyword: GeoIPDatabase + +-z name Specify location of the country flag graphics and enable + their display in the top country table. The directory name + is relative to the output directory unless an absolute path + is specified (ie: starts with a leading '/'). + Configuration file keyword: FlagDir + +Hide Options +------------ + +The following options take a string argument to use as a comparison +for matching. Except for the IndexAlias option, the string argument +can be plain text, or plain text that either starts or ends with the +wildcard character '*'. + +For Example: + +Given the string "yourmama/was/here", the arguments "was", "*here" and +"your*" will all produce a match. + + +-a name This option allows hiding of user agents (browsers) from the + "Top User Agents" table in the report. This option really + isn't too useful as there are a zillion different names that + current browsers go by, depending where they were obtained, + however you might have some particular user agents that hit + your site a lot that you would like to exclude from the list. + You must have a web server that includes user agents in its + log files for this option to be of any use. In addition, it + is also useless if you disable the user agent table in the + report (see the -A command line option or "TopAgents" + configuration file keyword). You can specify as many of these + as you want on the command line. The wildcard character '*' + can be used either in front of or at the end of the string. + (ie: Mozilla/4.0* would match anything that starts with the + string "Mozilla/4.0"). + Config file keyword: HideAgent + +-r name This option allows hiding of referrers from the "Top Referrer" + table in the report. Referrers are URLs, either on your own + local site or a remote site, that referred the user to a URL + on your web server. This option is normally used to hide + your own server from the table, as your own pages are usually + the top referrers to your own pages (well, you get the idea). + You must have a web server that includes referrer information + in the log files for this option to be of any use. In addition, + it is also useless if you disable the referrers table in the + report (see the -R command line option or "TopReferrers" + configuration file keyword). You can specify as many of these + as you like on the command line. + Config file keyword: HideReferrer + +-s name This option allows hiding of sites from the "Top Sites" table + in the report. Normally, you will only want to hide your own + domain name from the report, as it usually is one of the top + sites to visit your web server. This option is of no use if + you disable the top sites table in the report (see the -S + command line option or "TopSites" configuration file option). + Config file keyword: HideSite + +-X This causes all individual sites to be hidden, which results + in only grouped sites to be displayed on the report. + Config file keyword: HideAllSites + +-u name This option allows hiding of URLs from the "Top URLs" table + in the report. Normally, this option is used to hide images, + audio files and other objects your web server dishes out that + would otherwise clutter up the table. This option is of no + use if you disable the top URLs table in the report (see the + -U command line option or "TopURLs" configuration file keyword). + Config file keyword: HideURL + +-I name This option allows you to specify additional index.html aliases. + The Webalizer usually strips the string 'index.*' from URLs + before processing (unless disabled using the 'DefaultIndex' + config option), which has the effect of turning a URL such + as /somedir/index.html into just /somedir/ which is really the + same URL and should be treated as such. This option allows you + to specify _additional_ strings that are to be treated the same + way. Use with care, improper use could cause unexpected results. + For example, if you specify the alias string of 'home', a URL + such as /somedir/homepages/brad/home.html would be converted + into just /somedir/ which probably isn't what was intended. + This option is useful if your web server uses a different default + index page other than the standard 'index.html' or 'index.htm', + such as 'home.html' or 'homepage.html'. The string specified + is searched for _anywhere_ in the URL, so "home.htm" would + turn both "/somedir/home.htm" and "/somedir/home.html" into + just "/somedir/". Wildcards are _not_ allowed on this one. + Config file keyword: IndexAlias + +Table Size Options +------------------ + +-e num This option specifies the number of entries to display in the + "Top Entry Pages" table. To disable the table, use a value of + zero (0). + Config file keyword: TopEntry + +-E num This option specifies the number of entries to display in the + "Top Exit Pages" table. To disable the table, use a value of + zero (0). + Config file keyword: TopExit + +-A num This option specifies the number of entries to display in the + "Top User Agents" table. To disable the table, use a value of + zero (0). + Config file keyword: TopAgents + +-C num This option specifies the number of entries to display in the + "Top Countries" table. To disable the table, use a value of + zero (0). + Config file keyword: TopCountries + +-R num This option specifies the number of entries to display in the + "Top Referrers" table. To disable the table, use a value of + zero (0). + Config file keyword: TopReferrers + +-S num This option specifies the number of entries to display in the + "Top Sites" table. To disable the table, use a value of + zero (0). + Config file keyword: TopSites + +-U num This option specifies the number of entries to display in the + "Top URLs" table. To disable the table, use a value of + zero (0). + Config file keyword: TopURLs + +-------------------------------------------------------------------------- + + +CONFIGURATION FILES +------------------- + +The Webalizer allows configuration files to be used in order to simplify +life for all. There are several ways that configuration files are accessed +by the Webalizer. When The Webalizer first executes, it looks for a +default configuration file named "webalizer.conf" in the current directory, +and if not found there, will look for "/etc/webalizer.conf". In addition, +configuration files may be specified on the command line with the '-c' +option. There are lots of different ways you can combine the use of +configuration files and command line options to produce various results. +The Webalizer always looks for and reads configuration options from a +default configuration file before doing anything else. Because of this, +you can override options found in the default file by use of additional +configuration files specified on the command line or command line options +themselves. If you specify a configuration file on the command line, you +can override options in it by additional command line options which follow. +For example, most users will most likely want to create the default file +/etc/webalizer.conf and place options in it to specify the hostname, log +file, table options, etc... At the end of the month when a different log +file is to be used (the end of month log), you can run The Webalizer as +usual, but put the different filename on the end of the command line, which +will override the log file specified in the configuration file. It should +be noted that you cannot override some configuration file options by the +use of command line arguments. For example, if you specify "Quiet yes" in +a configuration file, you cannot override this with a command line argument, +as the command line option only _enables_ the feature (-q option). + +The configuration files are standard ASCII text files that may be created +or edited using any standard editor. Blank lines and lines that begin +with a pound sign ('#') are ignored. Any other lines are considered to +be configuration lines, and have the form "Keyword Value", where the +'Keyword' is one of the currently available configuration keywords defined +below, and 'Value' is the value to assign to that particular option. Any +text found after the keyword up to the end of the line is considered the +keyword's value, so you should not include anything after the actual value +on the line that is not actually part of the value being assigned. The +file "sample.conf" provided with the distribution contains lots of useful +documentation and examples as well. It should be noted that you do not +have to use any configuration files at all, in which case, default values +will be used (which should be sufficient for most sites). + +-------------------------------------------------------------------------- + +General Configuration Keywords +------------------------------ + +LogFile This defines the log file to use. It should be a fully qualified + name (ie: contain the path), but relative names will work as + well. If not specified, the logfile defaults to STDIN. + +LogType This specified the log file type being used. Normally, The + Webalizer processes web logs in either CLF or Combined format. + You may also process wu-ftpd xferlog formatted logs, squid + proxy logs or W3C formatted web logs by setting the appropriate + type using this keyword. Values may be either 'clf', 'ftp', + 'squid' or 'w3c'. Ensure that you specify the proper file type, + otherwise you will be presented with a long stream of 'invalid + record' messages when the Webalizer is run ;) + Command line argument: -F + +OutputDir This defines the output directory to use for the reports. If + it is not specified, the current directory is used. + Command line argument: -o + +HistoryName Allows specification of a history path/filename if desired. + The default is to use the file named 'webalizer.hist', kept + in the normal output directory (OutputDir above). Any name + specified is relative to the normal output directory unless + an absolute path name is given (ie: starts with a '/'). + +ReportTitle This specifies the title to use for the generated reports. + It is used in conjunction with the hostname (unless blank) + to produce the final report titles. If not defined, the + default of "Usage Statistics for" is used. + Command line argument: -t + +HostName This defines the hostname. The hostname is used in the + report title as well as being prepended to URLs in the + "Top URLs" table. This allows The Webalizer to be run + on "virtual" web servers, or servers that do not reside + on the local machine, and allows clicking on the URL to + go to the right place. If not specified, The Webalizer + attempts to get the hostname via a 'uname' system call, + and if that fails, will default to "localhost". + Command line argument: -n + +UseHTTPS Causes the links in the 'Top URLs' table to use 'https://' + instead of the default 'http://' prefix. Not much use if + you run a mix of secure/insecure servers on your machine. + Only useful if you run the analysis on a secure servers + logs, and want the links in the table to work properly. + +HTAccess Enables the creation of a default .htaccess file in the + output directory. If enabled, the file will be created + (with a single "DirectoryIndex" directive), unless one + already exists. The default is 'no', which disables the + creation of any .htaccess files. + +Quiet This allows you to enable or disable informational messages + while it is running. The values for this keyword can be + either 'yes' or 'no'. Using "Quiet yes" will suppress these + messages, while "Quiet no" will enable them. The default + is 'no' if not specified, which will allow The Webalizer + to display informational messages. It should be noted that + this option has no effect on Warning or Error messages that + may be generated, as they go to STDERR. + Command line argument: -q + +ReallyQuiet This allows all generated output to be suppressed, including + warning and error messages. The values for this keyword + can be either 'yes' or 'no', with 'no' being the default. + Command line argument: -Q + +TimeMe This allows you to display timing information regardless of + any "quiet mode" specified. Useful only if you did in fact + tell the webalizer to be quiet either by using the -q command + line option or the "Quiet" keyword, otherwise timing stats + are normally displayed anyway. Values may be either 'yes' + or 'no', with the default being 'no'. + Command line argument: -T + +GMTTime This keyword allows timestamps to be displayed in GMT (UTC) + time instead of local time. Normally The Webalizer will + display timestamps in the time-zone of the local machine + (ie: PST or EDT). This keyword allows you to specify the + display of timestamps in GMT (UTC) time instead. Values + may be either 'yes' or 'no'. Default is 'no'. + +Debug This tells The Webalizer to display additional information + when it encounters Warnings or Errors. Normally, The + Webalizer will just tell you it found a bad record or + field. This option will enable the display of the actual + data that produced the Warning or Error as well. Useful + only if you start getting lots of Warnings or Errors and + want to determine the cause. Values may be either 'yes' + or 'no', with the default being 'no'. + Command line argument: -d + +IgnoreHist This suppresses the reading of a history file. USE WITH + EXTREME CAUTION as the history file is how The Webalizer + keeps track of previous months. The effect of this option + is as if The Webalizer was being run for the very first + time, and any previous data is discarded. Values may be + either 'yes' or 'no', with the default being 'no'. + Command line argument: -i + +IgnoreState This suppresses the reading of an existing incremental + data file. USE WITH EXTREME CAUTION! By ignoring an + existing incremental data file, all previous processing + for the current month will be lost, and those logs must + be re-processed. Values may be 'yes' or 'no', with the + default being 'no'. + Command line argument: -b + +FoldSeqErr Allows log records that are out of sequence to be folded + back into the analysis, by treating them as if they had + the same date/time as the last good record. Normally, + out of sequence log records are simply ignored. If you + run apache, don't worry about this. + +VisitTimeout Set the 'visit timeout' value. Visits are determined by + looking at the time difference between the current and last + request made by a specific site. If the difference in time + is greater than the visit timeout value, the request is + considered a new visit. The value is in number of seconds, + and defaults to 30 minutes (1800). + Command line argument: -m + +PageType Allows you to define the 'page' type extension. Normally, + people consider HTML and CGI scripts as 'pages'. This + option allows you to specify what extensions you consider + a page. Default is 'htm*' and 'cgi' for web logs, and + 'txt' for ftp logs. + Command line argument: -P + +PagePrefix Allows all requests with a specified prefix to be considered + as 'pages'. If you want everything under /documents to be + treated as pages no matter what their extension is. Also + useful if you have cgi-scripts with PATH_INFO. + +OmitPage Allows specified URLs to not be counted as pages under any + circumstance, even if they have an extension matching a + PageType or PagePrefix as defined above. + +GraphLegend Enable/disable the display of color coded legends on the + produced graphs. Default is 'yes', to display them. + Command line argument: -L + +GraphLines Specify the number of background reference lines to display + on produced graphs. The default is 2. To disable the use + of background lines, use zero ('0'). + Command line argument: -l + +IndexMonths Specify the number of months to display in the main index + (yearly summary) table. Default is 12 months. Can be set + to anything between 12 and 120 months (1 to 10 years). + Command line argument: -K + +YearHeaders Enable/disable the display of year headers in the main index + (yearly summary) table. If enabled, year headers will be + shown when the table is displaying more than 16 months worth + of data. Values can be 'yes' or 'no'. Default is 'yes'. + +GraphMonths Specify the number of months to display in the main index + (yearly summary) graph. Default is 12 months. Can be set + to anything between 12 and 72 months (1 to 6 years). + Command line argument: -k + +CountryGraph This keyword is used to either enable or disable the creation + and display of the Country Usage graph. Values may be either + 'yes' or 'no', with the default being 'yes'. + Command line argument: -Y + +CountryFlags Enables or disables the display of flags in the top country + table. If enabled, the default directory 'flags' directly + under the output directory will be used unless a different + path is specified with the 'FlagDir' option below. + Command line argument: -zflags + +FlagDir Specifies the location of flag graphics. If not specified, + the default is in the 'flags' directory directly under the + output directory being used for the reports. If specified, + the display of flags will be enabled by default. + Command line argument: -z + +DailyGraph This keyword is used to either enable or disable the creation + and display of the Daily Usage graph. Values may be either + 'yes' or 'no', with the default being 'yes'. + +DailyStats This keyword is used to either enable or disable the creation + and display of the Daily Usage statistics table. Values may + be either 'yes' or 'no', with the default being 'yes'. + +HourlyGraph This keyword is used to either enable or disable the creation + and display of the Hourly Usage graph. Values may be either + 'yes' or 'no', with the default being 'yes'. + Command line argument: -G + +HourlyStats This keyword is used to either enable or disable the creation + and display of the Hourly Usage statistics table. Values may + be either 'yes' or 'no', with the default being 'yes'. + Command line argument: -H + +IndexAlias This allows additional 'index.html' aliases to be defined. + Normally, The Webalizer scans for and strips the string + "index." from URLs before processing them (unless disabled + using the DefaultIndex config option below). This turns a + URL such as /somedir/index.html into just /somedir/ which + is really the same URL. This keyword allows _additional_ + names to be treated in the same fashion for sites that use + different default names, such as "home.html". The string + is scanned for anywhere in the URL, so care should be used + if and when you define additional aliases. For example, + if you were to use an alias such as 'home', the URL + /somedir/homepages/brad/home.html would be turned into just + /somedir/ which probably isn't the intended result. Instead, + you should have specified 'home.htm' which would correctly + turn the URL into /somedir/homepages/brad/ like intended. + It should also be noted that specified aliases are scanned + for in EVERY log record... A bunch of aliases will noticeably + degrade performance as each record has to be scanned for + every alias defined. You don't have to specify 'index.' as + it is always the default (unless disabled with the config + option "DefaultIndex" described below). + Command line argument: -I + +DefaultIndex This option is used to enable/disable the use of "index." as + a default index name to be stripped from the end of a URL. + Most sites should not need to use this option, however some + may find it useful, particularly those whose default index + file name is something different, or those sites that use + 'index.php' or similar URLs to generate dynamic content. + This option does not effect any of the names that may be + defined using the IndexAlias option, and those names will + still function as described. Values may be 'yes' or 'no', + with 'yes' being the default. + +MangleAgents The MangleAgents keyword specifies the level of user agent + name mangling, if any. There are 6 levels that may be specified, + each producing a different level of detail displayed. Level 5 + displays only the browser name (MSIE or Mozilla) and the major + version number. Level 4 adds the minor version (single + decimal place). Level 3 adds the minor version to two decimal + places. Level 2 will also add any sub-level designation + (such as Mozilla/3.01Gold or MSIE 3.0b). Level 1 will also + attempt to add the system type. The default level 0 will + leave the user agent field unmodified and produces the + greatest amount of detail. + Command line argument: -M + +SearchEngine This keyword allows specification of search engines and + their query strings. Search strings are obtained from + the referrer field in the record, and in order to work + properly, the Webalizer needs to know what query strings + different search engines use. The SearchEngine allows + you to specify the search engine and its query string + to parse the search string from. The line is formatted + as: "SearchEngine engine-string query-string" where + 'engine-string' is a substring for matching the search + engine with, such as "yahoo.com" or "altavista". The + 'query-string' is the unique query string that is added + to the URL for the search engine, such as "search=" or + "MT=" with the actual search strings appended to the + end. There is no command line option for this keyword. + +SearchCaseI The SearchCaseI option specifies if search strings should + be lowercased (case insensitive) or not. Since most + search engines use case insensitive searches (ie: a + search for "Hello" is the same as "HELLO" or "hello"), + converting to lowercase will improve keyword accuracy, + which is the default. If desired, case sensitivity can + be forced with this option. The value can be 'yes' or + 'no', with 'yes' (case insensitive) being the default. + +Incremental This allows incremental processing to be enabled or disabled. + Incremental processing allows processing partial logs without + the loss of detail data from previous runs in the same month. + This feature saves the 'internal state' of the program so that + it may be restored in following runs. See the section above + titled "Incremental Processing" for additional information. + The value may be 'yes' or 'no', with the default being 'no'. + Command line argument: -p + +IncrementalName + Allows specification of the incremental data filename if + desired. Normally, the file named "webalizer.current' is + used, kept in the standard output directory. If specified, + filenames are relative to the standard output directory, + unless an absolute name is given (ie: starts with '/'). + +StripCGI Determines if CGI variables should be stripped from the + end of URLs or not. Normally, these variables are removed + from URLs to improve accuracy, however some sites may wish + to keep them preserved (particularly on highly dynamic + sites). Values may be either 'yes' or 'no', with 'yes' + being the default. + +TrimSquidURL Allows squid log URLs to be reduced in granularity by + truncating them after a specified number of '/' path + separators after the http:// portion. A value of 1 will + cause all URLs to be summarized by domain only. The + default value is zero (0), which leaves URLs unmodified. + +DNSCache Specifies the DNS cache filename. This name is relative + to the default output directory unless an absolute name + is given (ie: starts with '/'). See the DNS.README file + for additional information. + Command line argument: -D + +DNSChildren The number of DNS children processes to run in order to + create/update the DNS cache file. If specified, the DNS + cache filename must also be specified (see above). Use + a value of zero ('0') to disable. See the DNS.README + file for additional information. + Command line argument: -N + +CacheIPs Specifies if unresolved addresses should also be cached + in the DNS database. If enabled, unresolved IP addresses + will be stored along with resolved addresses. This may + be useful on some sites that have lots of unresolved IPs + visiting so they are not looked up each time the program + is run. Values may be 'yes' or 'no'. Default is 'no'. + +CacheTTL Specifies the Time To Live (TTL) value for cached DNS + entries in days. Default value is 7 (1 week). Can be + any value between 1 and 100. + +GeoDB Controls the use of the native GeoDB geolocation services + provided by The Webalizer. Values may be 'yes' or 'no' + with 'no' being the default. + Command line argument: -j + +GeoDBDatabase Specifies and alternate GeoDB database filename to use. + This is relative to the output directory being used unless + an absolute path is given (ie: starts with a '/'). + Command line argument: -J + +GeoIP Controls the use of GeoIP geolocation services. If The + Webalizer was compiled with GeoIP support, it is used by + default. Values may be 'yes' or 'no'. Default is 'yes'. + Command line argument: -w + +GeoIPDatabase Specifies an alternate GeoIP database filename to use. + This name is relative to the default output directory + unless an absolute name is given (ie: starts with '/'). + Command line argument: -W + + +Top Table Keywords +------------------ + +TopAgents This allows you to specify how many "Top" user agents are + displayed in the "Top User Agents" table. The default + is 15. If you do not want to display user agent statistics, + specify a value of zero (0). The display of user agents + will only work if your web server includes this information + in its log file (ie: a combined log format file). + Command line argument: -A + +AllAgents Will cause a separate HTML page to be generated for all + normally visible User Agents. A link will be added to + the bottom of the "Top User Agents" table if enabled. + Value can be either 'yes' or 'no', with 'no' being the + default. + +TopCountries This allows you to specify how many "Top" countries are + displayed in the "Top Countries" table. The default is + 30. If you want to disable the countries table, specify + a value of zero (0). + Command line argument: -C + +TopReferrers This allows you to specify how many "Top" referrers are + displayed in the "Top Referrers" table. The default is + 30. If you want to disable the referrers table, specify + a value of zero (0). The display of referrer information + will only work if your web server includes this information + in its log file (ie: a combined log format file). + Command line argument: -R + +AllReferrers Will cause a separate HTML page to be generated for all + normally visible Referrers. A link will be added to the + "Top Referrers" table if enabled. Value can be either + 'yes' or 'no', with 'no' being the default. + +TopSites This allows you to specify how many "Top" sites are + displayed in the "Top Sites" table. The default is 30. + If you want to disable the sites table, specify a value + of zero (0). + Command line argument: -S + +TopKSites Identical to TopSites, except for the 'by KByte' table. + Default is 10. No command line switch for this one. + +AllSites Will cause a separate HTML page to be generated for all + normally visible Sites. A link will be added to the + bottom of the "Top Sites" table if enabled. Value can + be either 'yes' or 'no', with 'no' being the default. + +TopURLs This allows you to specify how many "Top" URLs are + displayed in the "Top URLs" table. The default is 30. + If you want to disable the URLs table, specify a value + of zero (0). + Command line argument: -U + +TopKURLs Identical to TopURLs, except for the 'by KByte' table. + Default is 10. No command line switch for this one. + +AllURLs Will cause a separate HTML page to be generated for all + normally visible URLs. A link will be added to the + bottom of the "Top URLs" table if enabled. Value can + be either 'yes' or 'no', with 'no' being the default. + +TopEntry Allows you to specify how many "Top Entry Pages" are + displayed in the table. The default is 10. If you + want to disable the table, specify a value of zero (0). + Command line argument: -e + +TopExit Allows you to specify how many "Top Exit Pages" are + displayed in the table. The default is 10. If you + want to disable the table, specify a value of zero (0). + Command line argument: -E + +TopSearch Allows you to specify how many "Top Search Strings" are + displayed in the table. The default is 20. If you + want to disable the table, specify a value of zero (0). + Only works if using combined log format (ie: contains + referrer information). + +TopUsers This allows you to specify how many "Top" usernames are + displayed in the "Top Usernames" table. Usernames are + only available if you use http authentication on your + web server, or when processing wu-ftpd xferlogs. The + default value is 20. If you want to disable the Username + table, specify a value of zero (0). + +AllUsers Will cause a separate HTML page to be generated for all + normally visible usernames. A link will be added to the + bottom of the "Top Usernames" table if enabled. Value + can be either 'yes' or 'no', with 'no' being the default. + +AllSearchStr Will create a separate HTML page to be generated for all + normally visible Search Strings. A link will be added + to the bottom of the "Top Search Strings" table if + enabled. Value can be either 'yes' or 'no', with 'no' + being the default. + + +Hide Object Keywords +-------------------- + +These keywords allow you to hide user agents, referrers, sites, URLs +and usernames from the various "Top" tables. The value for these keywords +are the same as those used in their command line counterparts. You +can specify as many of these as you want without limit. Refer to the +section above on "Command Line Options" for a description of the string +formatting used as the value. Values cannot exceed 80 characters in +length. + +HideAgent This allows specified user agents to be hidden from the + "Top User Agents" table. Not very useful, since there + a zillion different names by which browsers go by today, + but could be useful if there is a particular user agent + (ie: robots, spiders, real-audio, etc..) that hits your + site frequently enough to make it into the top user agent + listing. This keyword is useless if 1) your log file does + not provide user agent information or 2) you disable the + user agent table. + Command line argument: -a + +HideReferrer This allows you to hide specified referrers from the + "Top Referrers" table. Normally, you would only specify + your own web server to be hidden, as it is usually the + top generator of references to your own pages. Of course, + this keyword is useless if 1) your log file does not include + referrer information or 2) you disable the top referrers + table. + Command line argument: -r + +HideSite This allows you to hide specified sites from the "Top + Sites" table. Normally, you would only specify your own + web server or other local machines to be hidden, as they + are usually the highest hitters of your web site, especially + if you have their browsers home page pointing to it. + Command line argument: -s + +HideAllSites This allows hiding all individual sites from the display, + which can be useful when a lot of groupings are being + used (since grouped records cannot be hidden). It is + particularly useful in conjunction with the GroupDomain + feature, however can be useful in other situations as well. + Value can be either 'yes' or 'no', with 'no' the default. + Command line argument: -X + +HideURL This allows you to hide URLs from the "Top URLs" table. + Normally, this is used to hide items such as graphic files, + audio files or other 'non-html' files that are transferred + to the visiting user. + Command line argument: -u + +HideUser This allows you to hide Usernames from the "Top Usernames" + table. Usernames are only available if you use http based + authentication on your web server. + + +Group Object Keywords +--------------------- + +The Group* keywords allow object grouping based on Site, URL, Referrer, +User Agent and Usernames. Combined with the Hide* keywords, you can +customize exactly what will be displayed in the 'Top' tables. For example, +to only display totals for a particular directory, use a GroupURL and +HideURL with the same value (ie: '/help/*'). Group processing is only +done after the individual record has been fully processed, so name mangling +and site total updates have already been performed. Because of this, groups +are not counted in the main site total (as that would cause duplication). +Groups can be displayed in bold and shaded as well. Grouped records are +not, by default, hidden from the report. This allows you to display a +grouped total, while still being able to see the individual records, even +if they are part of the group. If you want to hide the detail records, +follow the Group* directive with a Hide* one using the same value. There +are no command line switches for these keywords. The Group* keywords also +accept an optional label to be displayed instead of the actual value used. +This label should be separated from the value by at least one whitespace +character, such as a space or tab character. If the match string contains +whitespace (spaces or tabs), the string should be quoted, using either +single or double quotes. See the sample configuration file for examples. + +GroupReferrer Allows grouping Referrers. Can be handy for some of the + major search engines that have multiple host names a + referral could come from. + +GroupURL This keyword allows grouping URLs. Useful for grouping + complete directory trees. + +GroupSite This keywords allows grouping Sites. Most used for + grouping top level domains and unresolved IP address + for local dial-ups, etc... + +GroupAgent Groups User Agents. A handy example of how you could use + this one is to use "Mozilla" and "MSIE" as the values for + GroupAgent and HideAgent keywords. Make sure you put the + "MSIE" one first. + +GroupDomains Allows automatic grouping of domains. The numeric value + represents the level of grouping, and can be thought of + as 'the number of dots' to display. A 1 will display + second level domains only (xxx.xxx), a 2 will display + third level domains (xxx.xxx.xxx) etc... The default + value of 0 disables any domain grouping. + Command line argument: -g + +GroupUser Allows grouping of usernames. Combined with a group + name, this can be handy for displaying statistics on + a particular group of users without displaying their + real usernames. + +GroupShading Allows shading of table rows for groups. Value can be + 'yes' or 'no', with the default being 'yes'. + +GroupHighlight Allows bolding of table rows for groups. Value can be + 'yes' or 'no', with the default being 'yes'. + + +Ignore/Include Object Keywords +---------------------- + +These keywords allow you to completely ignore log records when generating +statistics, or to force their inclusion regardless of ignore criteria. +Records can be ignored or included based on site, URL, user agent, referrer +and username. Be aware that by choosing to ignore records, the accuracy of +the generated statistics become skewed, making it impossible to produce +an accurate representation of load on the web server. These keywords +behave identical to the Hide* keywords above, where the value can have +a leading or trailing wildcard '*'. These keywords, like the Hide* ones, +have an absolute limit of 80 characters for their values. These keywords +do not have any command line switch counterparts, so they may only be +specified in a configuration file. It should also be pointed out that +using the Ignore/Include combination to selectively exclude an entire +site while including a particular 'chunk' is _extremely_ inefficient, +and should be avoided. Try grep'ing the records into a separate file +and process it instead. + +IgnoreSite This allows specified sites to be completely ignored from + the generated statistics. + +IgnoreURL This allows specified URLs to be completely ignored from + the generated statistics. One use for this keyword would + be to ignore all hits to a 'temporary' directory where + development work is being done, but is not accessible to + the outside world. + +IgnoreReferrer This allows records to be ignored based on the referrer + field. + +IgnoreAgent This allows specified User Agent records to be completely + ignored from the statistics. Maybe useful if you really + don't want to see all those hits from MSIE :) + +IgnoreUser This allows specified username records to be completely + ignored from the statistics. Usernames can only be used + if you use http authentication on your server. + +IncludeSite Force the record to be processed based on hostname. This + takes precedence over the Ignore* keywords. + +IncludeURL Force the record to be processed based on URL. This takes + precedence over the Ignore* keywords. + +IncludeReferrer Force the record to be processed based on referrer. + This takes precedence over the Ignore* keywords. + +IncludeAgent Force the record to be processed based on user agent. + This takes precedence over the Ignore* keywords. + +IncludeUser Force the record to be processed based on username. + Usernames are only available if you use http based + authentication on your server. This takes precedence over + the Ignore* keywords. + + +Dump Object Keywords +-------------------- + +The Dump* Keywords allow text files to be generated that can then be used +for import into most database, spreadsheet and other external programs. +The file is a standard tab delimited text file, meaning that each column +is separated by a tab (0x09) character. A header record may be included +if required, using the 'DumpHeader' keyword. Since these files contain +all records that have been processed, including normally hidden records, +an alternate location for the files can be specified using the 'DumpPath' +keyword, otherwise they will be located in the default output directory. + +DumpPath Specifies an alternate location for the dump files. The + default output location will be used otherwise. The value + is the path portion to use, and normally should be an + absolute path (ie: has a leading '/' character), however + relative path names can be used as well, and will be + relative to the output directory location. + +DumpExtension Allows the dump filename extensions to be specified. The + default extension is "tab", however may be changed with + this option. + +DumpHeader Allows a header record to be written as the first record + of the file. Value can be either 'yes' or 'no', with + the default being 'no'. + +DumpSites Dump tab delimited sites file. Value can be either 'yes' + or 'no', with the default being 'no'. The filename used + is site_YYYYMM.tab (YYYY=year, MM=month). + +DumpURLs Dump tab delimited url file. Value can be either 'yes' or + 'no', with the default being 'no'. The filename used is + url_YYYYMM.tab (YYYY=year, MM=month). + +DumpReferrers Dump tab delimited referrer file. Value can be either + 'yes' or 'no', with the default being 'no'. Filename + used is ref_YYYYMM.tab (YYYY=year, MM=month). Referrer + information is only available if present in the log + file (ie: combined web server log). + +DumpAgents Dump tab delimited user agent file. Value can be either + 'yes' or 'no', with the default being 'no'. Filename + used is agent_YYYYMM.tab (YYYY=year, MM=month). User + agent information is only available if present in the + log file (ie: combined web server log). + +DumpUsers Dump tab delimited username file. Value can be either + 'yes' or 'no', with the default being 'no'. Filename + used is user_YYYYMM.tab (YYYY=year, MM=month). The + username data is only available if processing a wu-ftpd + xferlog or http authentication is used on the web server + and that information is present in the log. + +DumpSearchStr Dump tab delimited search string file. Value can be + either 'yes' or 'no', with the default being 'no'. + Filename used is search_YYYYMM.tab (YYYY=year, MM=month). + the search string data is only available if referrer + information is present in the log being processed and + recognized search engines were found and processed. + + + +HTML Generation Keywords +------------------------ + +These keywords allow you to customize the HTML code that The Webalizer +produces, such as adding a corporate logo or links to other web pages. +You can specify as many of these keywords as you like, and they will be +used in the order that they are found in the file. Values cannot exceed +80 characters in length, so you may have to break long lines up into two +or more lines. There are no command line counterparts to these keywords. + +HTMLExtension Allows generated pages to use something other than the + default 'html' extension for the filenames. Do not + include the leading period ('.') when you specify the + extension. + Command line argument: -x + +HTMLPre Allows code to be inserted at the very beginning of the + HTML files. Defaults to the standard HTML 3.2 DOCTYPE + record. Be careful not to include any HTML here, as it + is inserted _before_ the tag in the file. Use it + for server-side scripting capabilities, such as php3, to + insert scripting files and other directives. + +HTMLHead Allows you to insert HTML code between the + block. There is no default. Useful for adding scripts + to the HTML page, such as Javascript or php3, or even + just for adding a few META tags to the document. + +HTMLBody This keyword defines HTML code to be placed immediately + after the section of the report, just before the + title and "summary period/generated on" lines. If used, + the first HTMLHead line MUST include a tag. Put + whatever else you want in subsequent lines, but keep in + mind the placement of this code in relation to the title + and other aspects of the web page. Some typical uses + are to change the page colors and possibly add a corporate + logo (graphic) in the top right. If not specified, a + default tag is used that defines page color, text + color and link colors (see "sample.conf" file for example). + +HTMLPost This keyword defines HTML code that is placed after the + title and "summary period/generated on" lines, just before + the initial horizontal rule
tag. Normally this keyword + isn't needed, but is provided in case you included a large + graphic or some other weird formatting tag in the HTMLHead + section that needs to be cleaned up or terminated before the + main report section. + +HTMLTail This keyword defines HTML code that is placed at the bottom + right side of the report. It is inserted in a section + between table data tags, and is top and right + aligned within the table. Normally this keyword is used to + provide a link back to your home page or insert a small + graphic at the bottom right of the page. + +HTMLEnd This allows insertion of closing code, at the very end of + the page. The default is to put the closing and + tags. If specified, you _must_ specify these tags + yourself. + +LinkReferrer This specifies if the referrers listed in the top referrer + table should be displayed as plain text, or as a link to the + referrer. Values can be either 'yes' or 'no', with 'no' + being the default. + + +Graph Color Commands +-------------------- + +These keywords allow altering the colors used in the various graphs +produced by the Webalizer. The value is specified as a standard HTML +RGB hexdecimal color string, without the leading '#' character. The +value is case insensitive. If not specified, the default color shown +will be used. + +ColorHit Color used for 'Hits'. Default is '00805C' (green) + +ColorFile Color used for 'Files'. Default is '0040FF' (blue) + +ColorSite Color used for 'Sites'. Default is 'FF8000' (orange) + +ColorKbyte Color used for 'KBytes'. Default is 'FF0000' (red) + +ColorPage Color used for 'Pages'. Default is '00E0FF' (cyan) + +ColorVisit Color used for 'Visits'. Default is 'FFFF00' (yellow) + +ColorMisc Color used for miscellaneous titles in various 'Top' + tables (not graphs). Default is '00E0FF' (cyan) + +PieColor1 Pie Chart color #1. Default is '800080' (purple) + +PieColor2 Pie Chart color #2. Default is '80FFC0' (lt. green) + +PieColor3 Pie Chart color #3. Default is 'FF00FF' (lt. purple) + +PieColor4 Pie Chart color #4. Default is 'FFC080' (tan) + + +-------------------------------------------------------------------------- + + +Notes on Web Log Files +---------------------- + +The Webalizer supports CLF log formats, which should work for just +about everyone. If you want User Agent or Referrer information, you +need to make sure your web server supplies this information in its +log file, and in a format that the Webalizer can understand. While +The Webalizer will try to handle many of the subtle variations in +log formats, some will not work at all. Most web servers output +CLF format logs by default. For Apache, in order to produce the +proper log format, add the following to the httpd.conf file: + +LogFormat "%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"" + +This instructs the Apache web server to produce a 'combined' log +that includes the referrer and user agent information on the end of +each record, enclosed in quotes (This is the standard recommended +by both Apache and NCSA). Netscape and other web servers have +similar capabilities to alter their log formats. (note: the above +works for apache servers up to V1.2. V1.3 and higher now have additional +ways to specify log formats... refer to included documentation). + +Notes on FTP Log Files +---------------------- + +The Webalizer supports ftp logs produced by wu-ftpd, proftpd and others, +as a standard 'xferlog'. To process an ftp log, you must either use the +-Ff command line option or have "LogType ftp" in your configuration file. +It is recommended that you create a separate configuration file for ftp +analysis, since the values used for your web server will most likely not +be suited for ftp log analysis (ie: page types, hostname, etc.. should +be different). + +Because of the difference in web and ftp logs, there are a few limitations: + +o Because there is no concept of a 'response code' in ftp world, response + codes are restricted to either 200 (OK) or 206 (Partial Content), based + on the completion status found in xferlog (for wu-ftpd, 'i'=incomplete + and will generate a 206, 'c'=complete and will generate a 200). If your + ftp server doesn't supply the completion status, all requests will be + assigned a response code of 200. This allows the usage graph to display + all transfer requests (hits), and how many of those completed in success + (files - ie: 200 response codes). + +o Page totals won't accurately reflect reality, since there isn't really + the concept of a 'page' in regards to ftp services. I have found that + setting the PageType value to "README", "FIRST", etc... seems to work + fairly well however, and will give a pretty good indication of how + many 'non-binary' files were requested. Of course, the content of your + ftp site will be different, so your results may vary. + +o Visit totals also won't accurately reflect reality, since visits are + triggered on PageType requests (see above). What you usually wind up + with is visits=sites in most cases. + +o Entry/Exit pages will not be calculated for ftp logs. + +o For obvious reasons, referrers and user agents are not supported. + +o You _cannot_ analyze both web and ftp logs at the same time.. they must + be done separately in different runs. + + +Notes on Referrers +------------------ + +Referrers are weird critters... They take many shapes and forms, which makes +it much harder to analyze than a typical URL, which at least has some +standardization. What is contained in the referrer field of your log +files varies depending on many factors, such as what site did the referral, +what type of system it comes from and how the actual referral was generated. +Why is this? Well, because a user can get to your site in many ways... They +may have your site bookmarked in their browser, they may simply type your +sites URL field in their browser, they could have clicked on a link on some +remote web page or they may have found your site from one of the many search +engines and site indexes found on the web. The Webalizer attempts to deal +with all this variation in an intelligent way by doing certain things to +the referrer string which makes it easier to analyze. Of course, if your +web server doesn't provide referrer information, you probably don't really +care and are asking yourself why you are reading this section... + +Most referrers will take the form of "http://somesite.com/somepage.html", +which is what you will get if the user clicks on a link somewhere on the +web in order to get to your site. Some will be a variation of this, and +look something like "file:/some/such/sillyname", which is a reference from +a HTML document on the users local machine. Several variations of this can +be used, depending on what type of system the user has, if he/she is on +a local network, the type of network, etc... To complicate things even +more, dynamic HTML documents and HTML documents that are generated by +CGI scripts or external programs produce lots of extra information which +is tacked on to the end of the referrer string in an almost infinite number +of ways. If the user just typed your URL into their browser or clicked on +a bookmark, there won't be any information in the referrer field and will +take the form "-". + +In order to handle all these variations, The Webalizer parses the referrer +field in a certain way. First, if the referrer string begins with "http", +it assumes it is a normal referral and converts the "http://" and following +hostname to lowercase in order to simplify hiding if desired. For example, +the referrer "HTTP://WWW.MyHost.Com/This/Is/A/HTML/Document.html" will become +"http://www.myhost.com/This/Is/A/HTML/Document.html". Notice that only the +"http://" and hostname are converted to lower case... The rest of the +referrer field is left alone. This follows standard convention, as the +actual method (HTTP) and hostname are always case insensitive, while the +document name portion is case sensitive. + +Referrers that came from search engines, dynamic HTML documents, CGI +scripts and other external programs usually tack on additional information +that it used to create the page. A common example of this can be found +in referrals that come from search engines and site indexes common on the +web. Sometimes, these referrers URLs can be several hundred characters +long and include all the information that the user typed in to search for +your site. The Webalizer deals with this type of referrer by stripping +off all the query information, which starts with a question mark '?'. +The Referrer "http://search.yahoo.com/search?p=usa%26global%26link" will +be converted to just "http://search.yahoo.com/search". + +When a user comes to your site by using one of their bookmarks or by +typing in your URL directly into their browser, the referrer field is +blank, and looks like "-". Most sites will get more of these referrals +than any other type. The Webalizer converts this type of referral into +the string "- (Direct Request)". This is done in order to make it easier +to hide via a command line option or configuration file option. This is +because the character "-" is a valid character elsewhere in a referrer +field, and if not turned into something unique, could not be hidden without +possibly hiding other referrers that shouldn't be. + + +Notes on Character Escaping +--------------------------- + +The HTTP protocol defines certain ways that URLs can look and behave. To +some extent, referrer fields follow most of the same conventions. Character +escaping is a technique by which non-printable or other non-ASCII (and even +some ASCII) characters can be used in a URL. This is done by placing the +Hexadecimal value of the character in the URL, preceded by a percent sign '%'. +Since Hex values are made up of ASCII characters, any character can be +escaped to ensure only printable ASCII characters are present in the URL. +Some systems take this concept to the extreme and escape all sorts of stuff, +even characters that don't need to be escaped. To deal with this, The +Webalizer will un-escape URLs and referrers before being processed. For +Example, the URL "/www.webalizer.org/%7Efoo/bar.html" is the same URL as +"/www.webalizer.org/~foo/bar.html", a very common form of a URL to access +users web pages. If the URLs were not un-escaped, they would be treated as +two separate documents, even though they are really one and the same. + + +Search String Analysis +---------------------- + + The Webalizer will do a minimal analysis on referrer strings that +it finds, looking for well known search string patterns. Most of +the major search engines are supported, such as Yahoo!, Altavista, +Lycos, etc... Unfortunately, search engines are always changing +their internal/CGI query formats, new search engines are coming on +line every day, and the ability to detect _all_ search strings is +nearly impossible. However, it should be accurate enough to give +a good indication of what users were searching for when they stumbled +across your site. Note: as of version 1.31, search engines can now +be specified within a configuration file. See the sample.conf file +for examples of how to specify additional search engines. + + + +Notes on Visits/Entry/Exit Figures +---------------------------------- + +The majority of data analyzed and reported on by The Webalizer is +as accurate and correct as possible based on the input log file. +However, due to the limitation of the HTTP protocol, the use of +firewalls, proxy servers, multi-user systems, the rotation of your +log files, and a myriad of other conditions, some of these numbers +cannot, without absolute accuracy, be calculated. In particular, +Visits, Entry Pages and Exit Pages are suspect to random errors +due to the above and other conditions. The reason for this is +twofold, 1) Log files are finite in size and time interval, and +2) There is no way to distinguish multiple individual users apart +given only an IP address. Because log files are finite, they have +a beginning and ending, which can be represented as a fixed time +period. There is no way of knowing what happened previous to this +time period, nor is it possible to predict future events based on +it. Also, because it is impossible to distinguish individual users +apart, multiple users that have the same IP address all appear to +be a single user, and are treated as such. This is most common where +corporate users sit behind a proxy/firewall to the outside world, +and all requests appear to come from the same location (the address +of the proxy/firewall itself). Dynamic IP assignment (used with +dial-up Internet accounts) also present a problem, since the same +user will appear as to come from multiple places. + +For example, suppose two users visit your server from XYZ company, +which has their network connected to the Internet by a proxy server +'fw.xyz.com'. All requests from the network look as though they +originated from 'fw.xyz.com', even though they were really initiated +from two separate users on different PCs. The Webalizer would +see these requests as from the same location, and would record only +1 visit, when in reality, there were two. Because entry and exit +pages are calculated in conjunction with visits, this situation +would also only record 1 entry and 1 exit page, when in reality, +there should be 2. + +As another example, say a single user at XYZ company is surfing +around your website.. They arrive at 11:52pm the last day of +the month, and continue surfing until 12:30am, which is now a +new day (in a new month). Since a common practice is to rotate +(save then clear) the server logs at the end of the month, you +now have the users visit logged in two different files (current +and previous months). Because of this (and the fact that the +Webalizer clears history between months), the first page the +user requests after midnight will be counted as an entry page. +This is unavoidable, since it is the first request seen by that +particular IP address in the new month. + +For the most part, the numbers shown for visits, entry and exit +pages are pretty good 'guesses', even though they may not be 100% +accurate. They do provide a good indication of overall trends, +and shouldn't be that far off from the real numbers to count much. +You should probably consider them as the 'minimum' amount possible, +since the actual (real) values should always be equal or greater +in all cases. + + +Exporting Webalizer Data +------------------------ + +The Webalizer now has the ability to dump all object tables to tab +delimited ASCII text files, which can then be imported into most +popular database and spreadsheet programs. The files are not normally +produced, as on some sites they could become quite large, and are only +enabled by the use of the Dump* configuration keywords. The filename +extensions default to '.tab' however may be changed using the +'DumpExtension' keyword. Since this data contains all items, even +those normally hidden, it may not be desirable to have them located +in the output directory where they may be visible to normal web users.. +For this reason, the 'DumpPath' configuration keyword is available, +and allows the placement of these files somewhere outside the normal +web server document tree. An optional 'header' record may be written +to these files as well, and is useful when the data is to be imported +into a spreadsheet.. databases will not normally need the header. If +enabled, the header is simply the column names as the first record of +the file, tab separated. + + +Log files and The Webalizer +--------------------------- + +Most sites will choose to have The Webalizer run from cron at specified +intervals. Care should be taken to ensure that data is not lost as a +result of log file rotations. A suggested practice is to rotate your +web server logs at the end of each month as close to midnight as possible, +then have The Webalizer process the 'end of month' log file before running +statistics on the new, current log. On our systems, a shell script called +'rotate_logs' is run at midnight, the end of each month. This script file +looks like: + +------------------------- file: rotate_logs ------------------------------ +#!/bin/sh + +# halt the server +kill `cat /var/lib/httpd/logs/httpd.pid` + +# define backup names +OLD_ACCESS_LOG=/var/lib/httpd/logs/old/access_log.`date +%y%m%d-%H%M%S` +OLD_ERROR_LOG=/var/lib/httpd/logs/old/error_log.`date +%y%m%d-%H%M%S` + +# make end of month copy for analyzer +cp /var/lib/httpd/logs/access_log /var/lib/httpd/logs/access_log.backup + +# move files to archive directory +mv /var/lib/httpd/logs/access_log `echo $OLD_ACCESS_LOG` +mv /var/lib/httpd/logs/error_log `echo $OLD_ERROR_LOG` + +# restart web server +/usr/sbin/httpd + +# compress the archived files +/bin/gzip $OLD_ACCESS_LOG +/bin/gzip $OLD_ERROR_LOG +------------------------- end of file ------------------------------------ + +This script first stops the web server using a 'kill' command. Apache +keeps the PID of the server in the file httpd.pid, so we use it as the +argument for the kill. Next, it defines some names for the backup files, +which are basically the name of the files with the date and time appended +to the end of them. It then makes a copy of the log file, appended with +'.backup' in the log directory, moves the current log files to an archive +directory (/var/lib/httpd/logs/old) and restarts the server. This setup +allows the web server to be down for the minimum amount of time needed, +which is important for busy sites. If you don't want to stop the server, +you can remove the initial 'kill' command, and replace the '/usr/sbin/httpd' +line with "kill -1 `cat /var/lib/httpd/logs/httpd.pid`" command instead, +On most web servers, this will cause a restart of the server and create +the new log files in the process... + +At this point, we have made copies of the previous months logs, the web +server is going about its business as usual, and we have all the time in +the world to do any other additional processing we want. The last two +lines of the script compress the archived logs using the GNU zip program +(gzip). Remember, we still have a copy of the log which we can now run +The Webalizer on without having to do any further processing. + +Next, we define two crontab entries. The first runs the above 'rotate_logs' +script at midnight at the end of the month. The second runs The Webalizer +on the '.backup' log file created above at 5 minutes after midnight. This +gives other end of month processing jobs a chance to run so we don't bog +the system down too much. If you have lots of end of month stuff going on, +you can change the timing to suit your needs. The crontab entries look +something like: + +------------------------- crontab entries -------------------------------- +# Rotate web server logs and run monthly analysis +0 0 1 * * /usr/local/adm/rotate_logs +5 0 1 * * /usr/bin/webalizer -Q /var/lib/httpd/logs/access_log.backup +------------------------- end of crontab --------------------------------- + +As you can see, the log rotations occur at midnight, and the analysis +is done at 5 minutes after. Once you verify that The Webalizer ran +successfully, the access_log.backup file can be deleted as it isn't +needed any more. If you need to re-run the analysis, you still have +the compressed archive copy that the shell script created. In order +for the above analysis to work properly, you should have already +created an /etc/webalizer.conf configuration file suitable for your +site, or otherwise specify configuration options or a configuration +file on the crontab command line above. + +If you want The Webalizer to be run more often than once a month, you +can specify additional crontab entries to do this as well. Care should +be taken however to ensure that The Webalizer is not running when the +end of month processing above occurs, or unpredictable results may +happen (such as an inability to rotate the logs due to a file lock). +The easiest way is to run it on the half hour with a crontab entry like: + +30 * * * * /usr/bin/webalizer + + +Reverse DNS Lookups +------------------- + +The Webalizer fully supports both IPv4 and IPv6 DNS lookups, and +maintains a cache of those lookups to reduce processing the same +addresses in subsequent runs. The cache file can be created at +run-time, or may be created before running the webalizer using either +the stand alone 'webazolver' program, or The Webalizer (DNS) Cache +file Manager program 'wcmgr'. In order to perform reverse lookups, +a DNS Cache file must be specified, either on the command line or in +a configuration file. In order to create/update the cache file at +run-time, the number of DNS Children must also be specified, and can +be anything between 1 and 100. This specifies the number of child +processes to be forked, each of which will perform network DNS +queries in order to lookup up the addresses and update the cache. +Cached entries that are older than a specified TTL (time to live) +will be expired, and if encountered again in a log, will be looked +up at that time in order to 'freshen' them (verify the name is still +the same and update its timestamp). The default TTL is 7 days, however +may be set to anything between 1 and 100 days. Using the 'wcmgr' +program, entries may also be marked as 'permanent', in which case +they will persist (with an infinite TTL) in the cache until manually +removed. See the file DNS.README for additional information. + + +Geolocation Lookups +------------------- + +The Webalizer has the ability to perform geolocation lookups on IP +addresses using either it's own internal GeoDB database or optionally +the GeoIP database from MaxMind, Inc. (www.maxmind.com). If used, +unresolved addresses will be searched for in the database and it's +country of origin will be returned if found. This actually produces +more accurate Country information than DNS lookups, since the DNS +address space has additional gcTLDs that do not necessarily map to +a specific country (such as '.net' and '.com'). It is possible to +use both DNS lookups and geolocation lookups at the same time, which +will cause any addresses that could not be resolved using DNS lookups +to then be looked up in the database, greatly reducing the number of +'Unknown/Unresolved' entries in the generated reports. The native +GeoDB geolocation database provided by The Webalizer fully supports +IPv4 and IPv6 lookups, is updated regularly, and is the preferred +geolocation method for use with The Webalizer. The most current +version of the database can be obtained from our ftp site. + + +Language Support +---------------- + +Version 1.0x of The Webalizer added language support. This +support is only provided at compile time in the form of an +include file containing all the strings used by The Webalizer. +The source distribution contains all language files that were +available at the time, with English being the default as +that is the only human language I speak fluently, and me +Espanol es muy malo. Several people have already indicated +the desire to do translations into various languages, and as +I receive the language files, will make them available via +ftp at ftp://ftp.mrunix.net/pub/webalizer/lang. Unless there +happens to be a binary distribution in the language you need, +you will need to grab the source distribution and compile the +program yourself. See the file INSTALL that comes in the source +distribution for information on how to use a language other than +English. + +It should also be noted that the GD graphics library, used to +produce the in-line graphics in the output HTML, doesn't +support extended character sets, so if you are translating +the language file, you will no doubt encounter this problem. + +New: You can now specify the language to use when you are building + program from source, using the configure script. Just add + --with-language=language_name , where 'language_name' is the + name of a valid language file in the /lang/ directory. For + example, --with-language=french will build using French as + the default language. You should consult the INSTALL file + for additional information on building the program from source. + + +Known Issues +------------ + + o Memory Usage. The Webalizer makes liberal use of memory for internal + data structures during analysis. Lack of real physical memory will + noticeably degrade performance by doing lots of swapping between memory + and disk. One user who had a rather large log file noticed that The + Webalizer took over 7 hours to run with only 16 Meg of memory. Once + memory was increased, the time was reduced to a few minutes. + + + o Performance. The Hide*, Group*, Ignore*, Include* and IndexAlias + configuration options can cause a performance decrease if lots of + them are used. The reason for this is that every log record must + be scanned for each item in each list. For example, if you are + Hiding 20 objects, Grouping 20 more, and Ignoring 5, each record + is scanned, at most, 46 times (20+20+5 + an IndexAlias scan). + On really large log files, this can have a profound impact. It + is recommended that you use the least amount of these configuration + options that you can, as it will greatly improve performance. + + +Final Notes +----------- + +A lot of time and effort went into making The Webalizer, and to ensure that +the results are as accurate as possible. If you find any abnormalities or +inconsistent results, bugs, errors, omissions or anything else that doesn't +look right, please let me know so I can investigate the problem or correct +the error. This goes for the minimal documentation as well. Suggestions +for future versions are also welcome and appreciated. diff --git a/README.FIRST b/README.FIRST new file mode 100644 index 0000000..cab7c99 --- /dev/null +++ b/README.FIRST @@ -0,0 +1,21 @@ +Upgrade information for the Webalizer Version 2.2x + +This release is, for the most part, a drop-in replacement for all +installations currently running 2.01, and all users are encouraged +to upgrade. See the 'CHANGES' file for a full list of changes +since version 2.01-10. + +Note: The history file format has changed in v2.20 in order to keep +more than 12 months. Existing history files will be automatically +converted to the new format the first time they are read. + +Note: This version redefines the '-v' command line switch to mean +'verbose', which will cause the program to display additional +informational and debugging messages at run-time. This should not +cause any major problems, as previously it would simply cause the +program to display its version information and then exit. + +Report bugs to 'brad at mrunix dot net' with "Webalizer" somewhere +in the subject. Please do not send HTML formatted e-mails or e-mail +containing HTML tags as my mail server will reject them. Thanks! + diff --git a/configure b/configure new file mode 100755 index 0000000..28fe084 --- /dev/null +++ b/configure @@ -0,0 +1,7509 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.61 for webalizer V2.23. +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no +fi + + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + case $as_dir in + /*) + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell autoconf@gnu.org about your system, + echo including any error possibly output before this + echo message +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + +exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Identity of this package. +PACKAGE_NAME='webalizer' +PACKAGE_TARNAME='webalizer' +PACKAGE_VERSION='V2.23' +PACKAGE_STRING='webalizer V2.23' +PACKAGE_BUGREPORT='' + +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL +PATH_SEPARATOR +PACKAGE_NAME +PACKAGE_TARNAME +PACKAGE_VERSION +PACKAGE_STRING +PACKAGE_BUGREPORT +exec_prefix +prefix +program_transform_name +bindir +sbindir +libexecdir +datarootdir +datadir +sysconfdir +sharedstatedir +localstatedir +includedir +oldincludedir +docdir +infodir +htmldir +dvidir +pdfdir +psdir +libdir +localedir +mandir +DEFS +ECHO_C +ECHO_N +ECHO_T +LIBS +build_alias +host_alias +target_alias +OPTS +WCMGR_LIBS +DEFAULT_LANG +CC +CFLAGS +LDFLAGS +CPPFLAGS +ac_ct_CC +EXEEXT +OBJEXT +LN_S +INSTALL_PROGRAM +INSTALL_SCRIPT +INSTALL_DATA +CPP +GREP +EGREP +GEODB_LOC +LIBOBJS +LTLIBOBJS' +ac_subst_files='' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=\$ac_optarg ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute directory names. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { echo "$as_me: error: Working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$0" || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 + { (exit 1); exit 1; }; } + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures webalizer V2.23 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/webalizer] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of webalizer V2.23:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-largefile omit support for large files + --enable-static Build as static executable [default=no] + --enable-debug Compile with debugging code [default=no] + --enable-dns Enable DNS/GeoDB lookup code [default=yes] + --enable-bz2 Enable BZip2 decompression code [default=no] + --enable-geoip Enable GeoIP geolocation code [default=no] + --enable-oldhash Use old hash function (slower) [default=no] + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gd=DIR Alternate location for gd header files + --with-gdlib=DIR Alternate location for gd library + --with-png=DIR Alternate location for png header files + --with-pnglib=DIR Alternate location for png library + --with-z=DIR Alternate location for libz header files + --with-zlib=DIR Alternate location for z library + --with-db=DIR Alternate location for libdb header files + --with-dblib=DIR Alternate location for db library + --with-bz2=DIR Alternate location for bz2 header files + --with-bz2lib=DIR Alternate location for bz2 library + --with-geoip=DIR Alternate location for libGeoIP header files + --with-geoiplib=DIR Alternate location for geoip library + --with-geodb=DIR Default GeoDB data dir [/usr/share/GeoDB] + --with-language=name Use language 'name' (default is english) + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +webalizer configure V2.23 +generated by GNU Autoconf 2.61 + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by webalizer $as_me V2.23, which was +generated by GNU Autoconf 2.61. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------------- ## +## File substitutions. ## +## ------------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + set x "$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + set x "$prefix/share/config.site" "$prefix/etc/config.site" +else + set x "$ac_default_prefix/share/config.site" \ + "$ac_default_prefix/etc/config.site" +fi +shift +for ac_site_file +do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + + + + + + + + + + + + + + + + + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +OPTS=${DEFS} +LIBS=${LIBS} + + + + +DEFAULT_LANG="english" + + + +IN_CFLAGS=${CFLAGS} +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO: checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +# +# List of possible output files, starting from the most likely. +# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) +# only as a last resort. b.out is created by i960 compilers. +ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' +# +# The IRIX 6 linker writes into existing files which may not be +# executable, retaining their permissions. Remove them first so a +# subsequent execution test works. +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi + +{ echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6; } +if test -z "$ac_file"; then + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext + +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +{ echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6; } + +{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_c89=$ac_arg +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6; } ;; + xno) + { echo "$as_me:$LINENO: result: unsupported" >&5 +echo "${ECHO_T}unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; +esac + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else + { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6; } +fi + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} + { (exit 1); exit 1; }; } +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done +IFS=$as_save_IFS + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + + + +# Check whether --enable-largefile was given. +if test "${enable_largefile+set}" = set; then + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no; then + + { echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 +echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6; } +if test "${ac_cv_sys_largefile_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext + CC="$CC -n32" + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_largefile_CC=' -n32'; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 +echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + { echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6; } +if test "${ac_cv_sys_file_offset_bits+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_file_offset_bits=no; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define _FILE_OFFSET_BITS 64 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_file_offset_bits=64; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown + break +done +fi +{ echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 +echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6; } +case $ac_cv_sys_file_offset_bits in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF +;; +esac +rm -f conftest* + if test $ac_cv_sys_file_offset_bits = unknown; then + { echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 +echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6; } +if test "${ac_cv_sys_large_files+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_large_files=no; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define _LARGE_FILES 1 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_large_files=1; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_large_files=unknown + break +done +fi +{ echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 +echo "${ECHO_T}$ac_cv_sys_large_files" >&6; } +case $ac_cv_sys_large_files in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF +;; +esac +rm -f conftest* + fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Extract the first word of "grep ggrep" to use in msg output +if test -z "$GREP"; then +set dummy grep ggrep; ac_prog_name=$2 +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_GREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue + # Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_GREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +GREP="$ac_cv_path_GREP" +if test -z "$GREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_GREP=$GREP +fi + + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +echo "${ECHO_T}$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + # Extract the first word of "egrep" to use in msg output +if test -z "$EGREP"; then +set dummy egrep; ac_prog_name=$2 +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_EGREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue + # Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_EGREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +EGREP="$ac_cv_path_EGREP" +if test -z "$EGREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_EGREP=$EGREP +fi + + + fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_stdc=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Header=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +{ echo "$as_me:$LINENO: checking whether char is unsigned" >&5 +echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6; } +if test "${ac_cv_c_char_unsigned+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((char) -1) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_c_char_unsigned=no +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_c_char_unsigned=yes +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5 +echo "${ECHO_T}$ac_cv_c_char_unsigned" >&6; } +if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then + cat >>confdefs.h <<\_ACEOF +#define __CHAR_UNSIGNED__ 1 +_ACEOF + +fi + +{ echo "$as_me:$LINENO: checking for u_int64_t" >&5 +echo $ECHO_N "checking for u_int64_t... $ECHO_C" >&6; } +if test "${ac_cv_type_u_int64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +typedef u_int64_t ac__type_new_; +int +main () +{ +if ((ac__type_new_ *) 0) + return 0; +if (sizeof (ac__type_new_)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_type_u_int64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_u_int64_t=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_type_u_int64_t" >&5 +echo "${ECHO_T}$ac_cv_type_u_int64_t" >&6; } +if test $ac_cv_type_u_int64_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define u_int64_t unsigned long long +_ACEOF + +fi + +{ echo "$as_me:$LINENO: checking whether altzone is declared" >&5 +echo $ECHO_N "checking whether altzone is declared... $ECHO_C" >&6; } +if test "${ac_cv_have_decl_altzone+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +int +main () +{ +#ifndef altzone + (void) altzone; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_decl_altzone=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_decl_altzone=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_altzone" >&5 +echo "${ECHO_T}$ac_cv_have_decl_altzone" >&6; } +if test $ac_cv_have_decl_altzone = yes; then + OPTS="-DHAVE_ALTZONE ${OPTS}" +fi + + + +if test "$GCC" = "yes"; then + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then + enableval=$enable_static; LDFLAGS="--static ${LDFLAGS}" +fi + + + if test "$IN_CFLAGS" = ""; then + CFLAGS="-Wall -O2" + fi + if test "$ac_cv_c_char_unsigned" = "yes"; then + CFLAGS="-fsigned-char ${CFLAGS}" + fi + + # Check whether --enable-debug was given. +if test "${enable_debug+set}" = set; then + enableval=$enable_debug; CFLAGS="-g ${CFLAGS}" +fi + + +else + if test "$IN_CFLAGS" = ""; then + CFLAGS="-g" + fi +fi + + + +# Check whether --with-gd was given. +if test "${with_gd+set}" = set; then + withval=$with_gd; S_GD="${withval}"; CPPFLAGS="${CPPFLAGS} -I${withval}" +fi + + +# Check whether --with-gdlib was given. +if test "${with_gdlib+set}" = set; then + withval=$with_gdlib; S_GDLIB="${withval}"; LDFLAGS="-L${withval} ${LDFLAGS}" +fi + + +# Check whether --with-png was given. +if test "${with_png+set}" = set; then + withval=$with_png; S_PNG="${withval}"; CPPFLAGS="${CPPFLAGS} -I${withval}" +fi + + +# Check whether --with-pnglib was given. +if test "${with_pnglib+set}" = set; then + withval=$with_pnglib; S_PNGLIB="${withval}"; LDFLAGS="-L${withval} ${LDFLAGS}" +fi + + +# Check whether --with-z was given. +if test "${with_z+set}" = set; then + withval=$with_z; S_Z="${withval}"; CPPFLAGS="${CPPFLAGS} -I${withval}" +fi + + +# Check whether --with-zlib was given. +if test "${with_zlib+set}" = set; then + withval=$with_zlib; S_ZLIB="${withval}"; LDFLAGS="-L${withval} ${LDFLAGS}" +fi + + +# Check whether --with-db was given. +if test "${with_db+set}" = set; then + withval=$with_db; S_DB="${withval}"; CPPFLAGS="${CPPFLAGS} -I${withval}" +fi + + +# Check whether --with-dblib was given. +if test "${with_dblib+set}" = set; then + withval=$with_dblib; S_DBLIB="${withval}"; LDFLAGS="-L${withval} ${LDFLAGS}" +fi + + + +{ echo "$as_me:$LINENO: checking for main in -l44bsd" >&5 +echo $ECHO_N "checking for main in -l44bsd... $ECHO_C" >&6; } +if test "${ac_cv_lib_44bsd_main+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-l44bsd $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_44bsd_main=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_44bsd_main=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_44bsd_main" >&5 +echo "${ECHO_T}$ac_cv_lib_44bsd_main" >&6; } +if test $ac_cv_lib_44bsd_main = yes; then + LIBS="-l44bsd ${LIBS}" +fi + + +for ac_header in getopt.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +{ echo "$as_me:$LINENO: checking for main in -lm" >&5 +echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6; } +if test "${ac_cv_lib_m_main+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_m_main=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_m_main=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5 +echo "${ECHO_T}$ac_cv_lib_m_main" >&6; } +if test $ac_cv_lib_m_main = yes; then + LIBS="-lm ${LIBS}"; HAVE_LIBM="1" +fi + +if test "${HAVE_LIBM}" = "1"; then + +for ac_header in math.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +fi + + +{ echo "$as_me:$LINENO: checking for main in -lz" >&5 +echo $ECHO_N "checking for main in -lz... $ECHO_C" >&6; } +if test "${ac_cv_lib_z_main+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_z_main=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_z_main=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_z_main" >&5 +echo "${ECHO_T}$ac_cv_lib_z_main" >&6; } +if test $ac_cv_lib_z_main = yes; then + LIBZ="yes"; LIBS="-lz ${LIBS}" +fi + +if test "${LIBZ}" = "yes"; then + { echo "$as_me:$LINENO: checking for gzrewind in -lz" >&5 +echo $ECHO_N "checking for gzrewind in -lz... $ECHO_C" >&6; } +if test "${ac_cv_lib_z_gzrewind+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char gzrewind (); +int +main () +{ +return gzrewind (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_z_gzrewind=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_z_gzrewind=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_z_gzrewind" >&5 +echo "${ECHO_T}$ac_cv_lib_z_gzrewind" >&6; } +if test $ac_cv_lib_z_gzrewind = yes; then + LIBZ="yes" +else + LIBZ="no" +fi + + if test "${LIBZ}" = "no"; then + { { echo "$as_me:$LINENO: error: Old version of libz found.. please upgrade!" >&5 +echo "$as_me: error: Old version of libz found.. please upgrade!" >&2;} + { (exit 1); exit 1; }; } + fi +else + { { echo "$as_me:$LINENO: error: z library not found.. please install libz" >&5 +echo "$as_me: error: z library not found.. please install libz" >&2;} + { (exit 1); exit 1; }; } +fi + +if test "${ac_cv_header_zlib_h+set}" = set; then + { echo "$as_me:$LINENO: checking for zlib.h" >&5 +echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6; } +if test "${ac_cv_header_zlib_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 +echo "${ECHO_T}$ac_cv_header_zlib_h" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking zlib.h usability" >&5 +echo $ECHO_N "checking zlib.h usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking zlib.h presence" >&5 +echo $ECHO_N "checking zlib.h presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: zlib.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: zlib.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: zlib.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: zlib.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: zlib.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: zlib.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: zlib.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: zlib.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: zlib.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: zlib.h: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for zlib.h" >&5 +echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6; } +if test "${ac_cv_header_zlib_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_zlib_h=$ac_header_preproc +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 +echo "${ECHO_T}$ac_cv_header_zlib_h" >&6; } + +fi +if test $ac_cv_header_zlib_h = yes; then + HDR="yes" +else + HDR="no" +fi + + +if test "${HDR}" = "no"; then + { { echo "$as_me:$LINENO: error: zlib.h header not found.. please install" >&5 +echo "$as_me: error: zlib.h header not found.. please install" >&2;} + { (exit 1); exit 1; }; } +fi + + +{ echo "$as_me:$LINENO: checking for main in -lpng" >&5 +echo $ECHO_N "checking for main in -lpng... $ECHO_C" >&6; } +if test "${ac_cv_lib_png_main+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpng $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_png_main=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_png_main=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_png_main" >&5 +echo "${ECHO_T}$ac_cv_lib_png_main" >&6; } +if test $ac_cv_lib_png_main = yes; then + LIBPNG="yes"; LIBS="-lpng ${LIBS}" +else + LIBPNG="no" +fi + +if test "${LIBPNG}" = "no"; then + { { echo "$as_me:$LINENO: error: png library not found.. please install libpng" >&5 +echo "$as_me: error: png library not found.. please install libpng" >&2;} + { (exit 1); exit 1; }; } +fi + + +{ echo "$as_me:$LINENO: checking for main in -lgd" >&5 +echo $ECHO_N "checking for main in -lgd... $ECHO_C" >&6; } +if test "${ac_cv_lib_gd_main+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgd $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_gd_main=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_gd_main=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_gd_main" >&5 +echo "${ECHO_T}$ac_cv_lib_gd_main" >&6; } +if test $ac_cv_lib_gd_main = yes; then + LIBGD="yes"; LIBS="-lgd ${LIBS}" +fi + +if test "${LIBGD}" = "yes"; then + { echo "$as_me:$LINENO: checking for gdImagePng in -lgd" >&5 +echo $ECHO_N "checking for gdImagePng in -lgd... $ECHO_C" >&6; } +if test "${ac_cv_lib_gd_gdImagePng+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgd $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char gdImagePng (); +int +main () +{ +return gdImagePng (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_gd_gdImagePng=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_gd_gdImagePng=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_gd_gdImagePng" >&5 +echo "${ECHO_T}$ac_cv_lib_gd_gdImagePng" >&6; } +if test $ac_cv_lib_gd_gdImagePng = yes; then + LIBGD="yes" +else + LIBGD="no" +fi + + if test "${LIBGD}" = "no"; then + { { echo "$as_me:$LINENO: error: Old version of libgd found.. please upgrade!" >&5 +echo "$as_me: error: Old version of libgd found.. please upgrade!" >&2;} + { (exit 1); exit 1; }; } + fi +else + { { echo "$as_me:$LINENO: error: gd library not found.. please install libgd" >&5 +echo "$as_me: error: gd library not found.. please install libgd" >&2;} + { (exit 1); exit 1; }; } +fi + +if test "${ac_cv_header_gd_h+set}" = set; then + { echo "$as_me:$LINENO: checking for gd.h" >&5 +echo $ECHO_N "checking for gd.h... $ECHO_C" >&6; } +if test "${ac_cv_header_gd_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_gd_h" >&5 +echo "${ECHO_T}$ac_cv_header_gd_h" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking gd.h usability" >&5 +echo $ECHO_N "checking gd.h usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking gd.h presence" >&5 +echo $ECHO_N "checking gd.h presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: gd.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: gd.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: gd.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: gd.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: gd.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: gd.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: gd.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: gd.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: gd.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: gd.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: gd.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: gd.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: gd.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: gd.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: gd.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: gd.h: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for gd.h" >&5 +echo $ECHO_N "checking for gd.h... $ECHO_C" >&6; } +if test "${ac_cv_header_gd_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_gd_h=$ac_header_preproc +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_gd_h" >&5 +echo "${ECHO_T}$ac_cv_header_gd_h" >&6; } + +fi +if test $ac_cv_header_gd_h = yes; then + HDR="yes" +else + HDR="no" +fi + + +if test "${HDR}" = "no"; then + { { echo "$as_me:$LINENO: error: gd.h header not found.. please install" >&5 +echo "$as_me: error: gd.h header not found.. please install" >&2;} + { (exit 1); exit 1; }; } +fi + + +# Check whether --enable-dns was given. +if test "${enable_dns+set}" = set; then + enableval=$enable_dns; USE_DNS="${enableval}" +else + USE_DNS="yes" +fi + + +if test "${USE_DNS}" = "yes"; then + { echo "$as_me:$LINENO: checking for main in -ldb" >&5 +echo $ECHO_N "checking for main in -ldb... $ECHO_C" >&6; } +if test "${ac_cv_lib_db_main+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldb $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_db_main=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_db_main=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_db_main" >&5 +echo "${ECHO_T}$ac_cv_lib_db_main" >&6; } +if test $ac_cv_lib_db_main = yes; then + USE_DNS="yes" +else + USE_DNS="no"; { echo "$as_me:$LINENO: WARNING: libdb not found.. DNS/GeoDB code disabled!" >&5 +echo "$as_me: WARNING: libdb not found.. DNS/GeoDB code disabled!" >&2;} +fi + +fi + +if test "${USE_DNS}" = "yes"; then + if test "${ac_cv_header_db_h+set}" = set; then + { echo "$as_me:$LINENO: checking for db.h" >&5 +echo $ECHO_N "checking for db.h... $ECHO_C" >&6; } +if test "${ac_cv_header_db_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_db_h" >&5 +echo "${ECHO_T}$ac_cv_header_db_h" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking db.h usability" >&5 +echo $ECHO_N "checking db.h usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking db.h presence" >&5 +echo $ECHO_N "checking db.h presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: db.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: db.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: db.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: db.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: db.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: db.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: db.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: db.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: db.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: db.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: db.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: db.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: db.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: db.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: db.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: db.h: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for db.h" >&5 +echo $ECHO_N "checking for db.h... $ECHO_C" >&6; } +if test "${ac_cv_header_db_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_db_h=$ac_header_preproc +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_db_h" >&5 +echo "${ECHO_T}$ac_cv_header_db_h" >&6; } + +fi +if test $ac_cv_header_db_h = yes; then + USE_DNS="yes" +else + USE_DNS="no"; { echo "$as_me:$LINENO: WARNING: db.h not found.. DNS/GeoDB code disabled!" >&5 +echo "$as_me: WARNING: db.h not found.. DNS/GeoDB code disabled!" >&2;} +fi + + +fi + +if test "${USE_DNS}" = "yes"; then + OPTS="-DUSE_DNS ${OPTS}" + LIBS="-ldb ${LIBS}" + WCMGR_LIBS="-ldb" + { echo "$as_me:$LINENO: checking for fdatasync" >&5 +echo $ECHO_N "checking for fdatasync... $ECHO_C" >&6; } +if test "${ac_cv_func_fdatasync+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define fdatasync to an innocuous variant, in case declares fdatasync. + For example, HP-UX 11i declares gettimeofday. */ +#define fdatasync innocuous_fdatasync + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char fdatasync (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef fdatasync + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char fdatasync (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_fdatasync || defined __stub___fdatasync +choke me +#endif + +int +main () +{ +return fdatasync (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_func_fdatasync=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_fdatasync=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_fdatasync" >&5 +echo "${ECHO_T}$ac_cv_func_fdatasync" >&6; } +if test $ac_cv_func_fdatasync = yes; then + DUMMY="" +fi + + if test "$ac_cv_func_fdatasync" = "no"; then + { echo "$as_me:$LINENO: checking for fdatasync in -lrt" >&5 +echo $ECHO_N "checking for fdatasync in -lrt... $ECHO_C" >&6; } +if test "${ac_cv_lib_rt_fdatasync+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lrt $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char fdatasync (); +int +main () +{ +return fdatasync (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_rt_fdatasync=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_rt_fdatasync=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_rt_fdatasync" >&5 +echo "${ECHO_T}$ac_cv_lib_rt_fdatasync" >&6; } +if test $ac_cv_lib_rt_fdatasync = yes; then + LIBS="-lrt ${LIBS}";WCMGR_LIBS="-lrt ${WCMGR_LIBS}" +fi + + fi + { echo "$as_me:$LINENO: checking for socket" >&5 +echo $ECHO_N "checking for socket... $ECHO_C" >&6; } +if test "${ac_cv_func_socket+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define socket to an innocuous variant, in case declares socket. + For example, HP-UX 11i declares gettimeofday. */ +#define socket innocuous_socket + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char socket (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef socket + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char socket (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_socket || defined __stub___socket +choke me +#endif + +int +main () +{ +return socket (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_func_socket=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_socket=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_socket" >&5 +echo "${ECHO_T}$ac_cv_func_socket" >&6; } +if test $ac_cv_func_socket = yes; then + DUMMY="" +else + DUMMY="" +fi + + if test "$ac_cv_func_socket" = "no"; then + { echo "$as_me:$LINENO: checking for main in -lsocket" >&5 +echo $ECHO_N "checking for main in -lsocket... $ECHO_C" >&6; } +if test "${ac_cv_lib_socket_main+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_socket_main=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_socket_main=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_main" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_main" >&6; } +if test $ac_cv_lib_socket_main = yes; then + LIBS="-lsocket ${LIBS}" +fi + + fi + +for ac_header in sys/socket.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + { echo "$as_me:$LINENO: checking for inet_pton" >&5 +echo $ECHO_N "checking for inet_pton... $ECHO_C" >&6; } +if test "${ac_cv_func_inet_pton+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define inet_pton to an innocuous variant, in case declares inet_pton. + For example, HP-UX 11i declares gettimeofday. */ +#define inet_pton innocuous_inet_pton + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char inet_pton (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef inet_pton + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char inet_pton (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_inet_pton || defined __stub___inet_pton +choke me +#endif + +int +main () +{ +return inet_pton (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_func_inet_pton=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_inet_pton=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_inet_pton" >&5 +echo "${ECHO_T}$ac_cv_func_inet_pton" >&6; } +if test $ac_cv_func_inet_pton = yes; then + DUMMY="" +else + DUMMY="" +fi + + if test "$ac_cv_func_inet_pton" = "no"; then + { echo "$as_me:$LINENO: checking for inet_pton in -lnsl" >&5 +echo $ECHO_N "checking for inet_pton in -lnsl... $ECHO_C" >&6; } +if test "${ac_cv_lib_nsl_inet_pton+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char inet_pton (); +int +main () +{ +return inet_pton (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_nsl_inet_pton=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_nsl_inet_pton=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_inet_pton" >&5 +echo "${ECHO_T}$ac_cv_lib_nsl_inet_pton" >&6; } +if test $ac_cv_lib_nsl_inet_pton = yes; then + LIBS="-lnsl ${LIBS}" +fi + + fi +fi + + +# Check whether --enable-bz2 was given. +if test "${enable_bz2+set}" = set; then + enableval=$enable_bz2; USE_BZIP="${enableval}" +else + USE_BZIP="no" +fi + + + +# Check whether --with-bz2 was given. +if test "${with_bz2+set}" = set; then + withval=$with_bz2; S_BZ2="${withval}"; CPPFLAGS="${CPPFLAGS} -I${withval}" +fi + + +# Check whether --with-bz2lib was given. +if test "${with_bz2lib+set}" = set; then + withval=$with_bz2lib; S_BZ2LIB="${withval}"; LDFLAGS="-L${withval} ${LDFLAGS}" +fi + + +if test "${USE_BZIP}" = "yes"; then + { echo "$as_me:$LINENO: checking for main in -lbz2" >&5 +echo $ECHO_N "checking for main in -lbz2... $ECHO_C" >&6; } +if test "${ac_cv_lib_bz2_main+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbz2 $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_bz2_main=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_bz2_main=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_bz2_main" >&5 +echo "${ECHO_T}$ac_cv_lib_bz2_main" >&6; } +if test $ac_cv_lib_bz2_main = yes; then + USE_BZIP="yes" +else + USE_BZIP="no"; { echo "$as_me:$LINENO: WARNING: libbz2 not found.. bzip2 code will will be disabled!" >&5 +echo "$as_me: WARNING: libbz2 not found.. bzip2 code will will be disabled!" >&2;} +fi + +fi + +if test "${USE_BZIP}" = "yes"; then + { echo "$as_me:$LINENO: checking for BZ2_bzopen in -lbz2" >&5 +echo $ECHO_N "checking for BZ2_bzopen in -lbz2... $ECHO_C" >&6; } +if test "${ac_cv_lib_bz2_BZ2_bzopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbz2 $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char BZ2_bzopen (); +int +main () +{ +return BZ2_bzopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_bz2_BZ2_bzopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_bz2_BZ2_bzopen=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_bz2_BZ2_bzopen" >&5 +echo "${ECHO_T}$ac_cv_lib_bz2_BZ2_bzopen" >&6; } +if test $ac_cv_lib_bz2_BZ2_bzopen = yes; then + USE_BZIP="yes" +else + USE_BZIP="no"; { echo "$as_me:$LINENO: WARNING: Old bz2 library found.. bzip2 code will be disabled!" >&5 +echo "$as_me: WARNING: Old bz2 library found.. bzip2 code will be disabled!" >&2;} +fi + +fi + +if test "${USE_BZIP}" = "yes"; then + if test "${ac_cv_header_bzlib_h+set}" = set; then + { echo "$as_me:$LINENO: checking for bzlib.h" >&5 +echo $ECHO_N "checking for bzlib.h... $ECHO_C" >&6; } +if test "${ac_cv_header_bzlib_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_bzlib_h" >&5 +echo "${ECHO_T}$ac_cv_header_bzlib_h" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking bzlib.h usability" >&5 +echo $ECHO_N "checking bzlib.h usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking bzlib.h presence" >&5 +echo $ECHO_N "checking bzlib.h presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: bzlib.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: bzlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: bzlib.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: bzlib.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: bzlib.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: bzlib.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: bzlib.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: bzlib.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: bzlib.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: bzlib.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: bzlib.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: bzlib.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: bzlib.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: bzlib.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: bzlib.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: bzlib.h: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for bzlib.h" >&5 +echo $ECHO_N "checking for bzlib.h... $ECHO_C" >&6; } +if test "${ac_cv_header_bzlib_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_bzlib_h=$ac_header_preproc +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_bzlib_h" >&5 +echo "${ECHO_T}$ac_cv_header_bzlib_h" >&6; } + +fi +if test $ac_cv_header_bzlib_h = yes; then + USE_BZIP="yes" +else + USE_BZIP="no"; { echo "$as_me:$LINENO: WARNING: bzlib.h not found.. bzip2 code will be disabled!" >&5 +echo "$as_me: WARNING: bzlib.h not found.. bzip2 code will be disabled!" >&2;} +fi + + +fi + +if test "${USE_BZIP}" = "yes"; then + OPTS="-DUSE_BZIP ${OPTS}" + LIBS="-lbz2 ${LIBS}" +fi + + +# Check whether --enable-geoip was given. +if test "${enable_geoip+set}" = set; then + enableval=$enable_geoip; USE_GEOIP="${enableval}" +else + USE_GEOIP="no" +fi + + + +# Check whether --with-geoip was given. +if test "${with_geoip+set}" = set; then + withval=$with_geoip; S_GEOIP="${withval}"; CPPFLAGS="${CPPFLAGS} -I${withval}" +fi + + +# Check whether --with-geoiplib was given. +if test "${with_geoiplib+set}" = set; then + withval=$with_geoiplib; S_GEOIPLIB="${withval}"; LDFLAGS="-L${withval} ${LDFLAGS}" +fi + + +if test "${USE_GEOIP}" = "yes"; then + { echo "$as_me:$LINENO: checking for main in -lGeoIP" >&5 +echo $ECHO_N "checking for main in -lGeoIP... $ECHO_C" >&6; } +if test "${ac_cv_lib_GeoIP_main+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lGeoIP $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_GeoIP_main=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_GeoIP_main=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_GeoIP_main" >&5 +echo "${ECHO_T}$ac_cv_lib_GeoIP_main" >&6; } +if test $ac_cv_lib_GeoIP_main = yes; then + USE_GEOIP="yes" +else + USE_GEOIP="no"; { echo "$as_me:$LINENO: WARNING: libGeoIP not found.. GeoIP code will be disabled!" >&5 +echo "$as_me: WARNING: libGeoIP not found.. GeoIP code will be disabled!" >&2;} +fi + +fi + +if test "${USE_GEOIP}" = "yes"; then + if test "${ac_cv_header_GeoIP_h+set}" = set; then + { echo "$as_me:$LINENO: checking for GeoIP.h" >&5 +echo $ECHO_N "checking for GeoIP.h... $ECHO_C" >&6; } +if test "${ac_cv_header_GeoIP_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_GeoIP_h" >&5 +echo "${ECHO_T}$ac_cv_header_GeoIP_h" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking GeoIP.h usability" >&5 +echo $ECHO_N "checking GeoIP.h usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking GeoIP.h presence" >&5 +echo $ECHO_N "checking GeoIP.h presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: GeoIP.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: GeoIP.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: GeoIP.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: GeoIP.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: GeoIP.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: GeoIP.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: GeoIP.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: GeoIP.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: GeoIP.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: GeoIP.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: GeoIP.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: GeoIP.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: GeoIP.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: GeoIP.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: GeoIP.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: GeoIP.h: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for GeoIP.h" >&5 +echo $ECHO_N "checking for GeoIP.h... $ECHO_C" >&6; } +if test "${ac_cv_header_GeoIP_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_GeoIP_h=$ac_header_preproc +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_GeoIP_h" >&5 +echo "${ECHO_T}$ac_cv_header_GeoIP_h" >&6; } + +fi +if test $ac_cv_header_GeoIP_h = yes; then + USE_GEOIP="yes" +else + USE_GEOIP="no"; { echo "$as_me:$LINENO: WARNING: GeoIP.h not found.. GeoIP code will be disabled!" >&5 +echo "$as_me: WARNING: GeoIP.h not found.. GeoIP code will be disabled!" >&2;} +fi + + +fi + +if test "${USE_GEOIP}" = "yes"; then + OPTS="-DUSE_GEOIP ${OPTS}" + LIBS="-lGeoIP ${LIBS}" +fi + + + +# Check whether --with-geodb was given. +if test "${with_geodb+set}" = set; then + withval=$with_geodb; GEODB_LOC="${withval}" +else + GEODB_LOC="/usr/share/GeoDB" +fi + + + +# Check whether --enable-oldhash was given. +if test "${enable_oldhash+set}" = set; then + enableval=$enable_oldhash; OLDHASH=${enableval} +else + OLDHASH="no" +fi + + if test "$OLDHASH" = "yes"; then OPTS="-DUSE_OLDHASH"; fi + + +LANG_CACHE=yes + +# Check whether --with-language was given. +if test "${with_language+set}" = set; then + withval=$with_language; WEBALIZER_LANG="${withval}"; LANG_CACHE=no +else + LANG_CACHE=yes +fi + +if test "$WEBALIZER_LANG" = "no"; then WEBALIZER_LANG=english; fi + + +{ echo "$as_me:$LINENO: checking for language file" >&5 +echo $ECHO_N "checking for language file... $ECHO_C" >&6; } +if test "$LANG_CACHE" = "yes"; then + if test "${ac_cv_language+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_language=$DEFAULT_LANG +fi + + WEBALIZER_LANG=$ac_cv_language +fi + +if test -f lang/webalizer_lang.${WEBALIZER_LANG}; then +{ echo "$as_me:$LINENO: result: yes - ${WEBALIZER_LANG}" >&5 +echo "${ECHO_T}yes - ${WEBALIZER_LANG}" >&6; } +else + if test -f lang/webalizer_lang.${DEFAULT_LANG}; then + { echo "$as_me:$LINENO: result: '${WEBALIZER_LANG}' not found - using ${DEFAULT_LANG}" >&5 +echo "${ECHO_T}'${WEBALIZER_LANG}' not found - using ${DEFAULT_LANG}" >&6; } + WEBALIZER_LANG=${DEFAULT_LANG} + else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + { { echo "$as_me:$LINENO: error: language files not found... fix before continuing" >&5 +echo "$as_me: error: language files not found... fix before continuing" >&2;} + { (exit 1); exit 1; }; } + fi +fi +ac_cv_language=${WEBALIZER_LANG} + + +ac_sources="lang/webalizer_lang.${WEBALIZER_LANG}" +ac_dests="webalizer_lang.h" +while test -n "$ac_sources"; do + set $ac_dests; ac_dest=$1; shift; ac_dests=$* + set $ac_sources; ac_source=$1; shift; ac_sources=$* + ac_config_links_1="$ac_config_links_1 $ac_dest:$ac_source" +done +ac_config_links="$ac_config_links $ac_config_links_1" + + + +ac_config_files="$ac_config_files Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { echo "$as_me:$LINENO: updating cache $cache_file" >&5 +echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else + { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 + +# Save the log message, to keep $[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by webalizer $as_me V2.23, which was +generated by GNU Autoconf 2.61. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# Files that config.status was made for. +config_files="$ac_config_files" +config_links="$ac_config_links" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Configuration links: +$config_links + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +webalizer config.status V2.23 +configured by $0, generated by GNU Autoconf 2.61, + with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2006 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + CONFIG_SHELL=$SHELL + export CONFIG_SHELL + exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "$ac_config_links_1") CONFIG_LINKS="$CONFIG_LINKS $ac_config_links_1" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_LINKS+set}" = set || CONFIG_LINKS=$config_links +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +# +# Set up the sed scripts for CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "$CONFIG_FILES"; then + +_ACEOF + + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +SHELL!$SHELL$ac_delim +PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim +PACKAGE_NAME!$PACKAGE_NAME$ac_delim +PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim +PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim +PACKAGE_STRING!$PACKAGE_STRING$ac_delim +PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim +exec_prefix!$exec_prefix$ac_delim +prefix!$prefix$ac_delim +program_transform_name!$program_transform_name$ac_delim +bindir!$bindir$ac_delim +sbindir!$sbindir$ac_delim +libexecdir!$libexecdir$ac_delim +datarootdir!$datarootdir$ac_delim +datadir!$datadir$ac_delim +sysconfdir!$sysconfdir$ac_delim +sharedstatedir!$sharedstatedir$ac_delim +localstatedir!$localstatedir$ac_delim +includedir!$includedir$ac_delim +oldincludedir!$oldincludedir$ac_delim +docdir!$docdir$ac_delim +infodir!$infodir$ac_delim +htmldir!$htmldir$ac_delim +dvidir!$dvidir$ac_delim +pdfdir!$pdfdir$ac_delim +psdir!$psdir$ac_delim +libdir!$libdir$ac_delim +localedir!$localedir$ac_delim +mandir!$mandir$ac_delim +DEFS!$DEFS$ac_delim +ECHO_C!$ECHO_C$ac_delim +ECHO_N!$ECHO_N$ac_delim +ECHO_T!$ECHO_T$ac_delim +LIBS!$LIBS$ac_delim +build_alias!$build_alias$ac_delim +host_alias!$host_alias$ac_delim +target_alias!$target_alias$ac_delim +OPTS!$OPTS$ac_delim +WCMGR_LIBS!$WCMGR_LIBS$ac_delim +DEFAULT_LANG!$DEFAULT_LANG$ac_delim +CC!$CC$ac_delim +CFLAGS!$CFLAGS$ac_delim +LDFLAGS!$LDFLAGS$ac_delim +CPPFLAGS!$CPPFLAGS$ac_delim +ac_ct_CC!$ac_ct_CC$ac_delim +EXEEXT!$EXEEXT$ac_delim +OBJEXT!$OBJEXT$ac_delim +LN_S!$LN_S$ac_delim +INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim +INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim +INSTALL_DATA!$INSTALL_DATA$ac_delim +CPP!$CPP$ac_delim +GREP!$GREP$ac_delim +EGREP!$EGREP$ac_delim +GEODB_LOC!$GEODB_LOC$ac_delim +LIBOBJS!$LIBOBJS$ac_delim +LTLIBOBJS!$LTLIBOBJS$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 57; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +:end +s/|#_!!_#|//g +CEOF$ac_eof +_ACEOF + + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF +fi # test -n "$CONFIG_FILES" + + +for ac_tag in :F $CONFIG_FILES :L $CONFIG_LINKS +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 +echo "$as_me: error: Invalid tag $ac_tag." >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + ac_file_inputs="$ac_file_inputs $ac_f" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input="Generated from "`IFS=: + echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + fi + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin";; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= + +case `sed -n '/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p +' $ac_file_inputs` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s&@configure_input@&$configure_input&;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +$ac_datarootdir_hack +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out"; rm -f "$tmp/out";; + *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; + esac + ;; + + :L) + # + # CONFIG_LINK + # + + { echo "$as_me:$LINENO: linking $srcdir/$ac_source to $ac_file" >&5 +echo "$as_me: linking $srcdir/$ac_source to $ac_file" >&6;} + + if test ! -r "$srcdir/$ac_source"; then + { { echo "$as_me:$LINENO: error: $srcdir/$ac_source: file not found" >&5 +echo "$as_me: error: $srcdir/$ac_source: file not found" >&2;} + { (exit 1); exit 1; }; } + fi + rm -f "$ac_file" + + # Try a relative symlink, then a hard link, then a copy. + case $srcdir in + [\\/$]* | ?:[\\/]* ) ac_rel_source=$srcdir/$ac_source ;; + *) ac_rel_source=$ac_top_build_prefix$srcdir/$ac_source ;; + esac + ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || + ln "$srcdir/$ac_source" "$ac_file" 2>/dev/null || + cp -p "$srcdir/$ac_source" "$ac_file" || + { { echo "$as_me:$LINENO: error: cannot link or copy $srcdir/$ac_source to $ac_file" >&5 +echo "$as_me: error: cannot link or copy $srcdir/$ac_source to $ac_file" >&2;} + { (exit 1); exit 1; }; } + ;; + + esac + +done # for ac_tag + + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + +{ echo "$as_me:$LINENO: Done. Type 'make' to continue with build." >&5 +echo "$as_me: Done. Type 'make' to continue with build." >&6;} diff --git a/configure.in b/configure.in new file mode 100644 index 0000000..705b4ea --- /dev/null +++ b/configure.in @@ -0,0 +1,322 @@ +dnl +dnl The Webalizer - A web server log file analysis program +dnl Copyright (C) 1997-2011 by Bradford L. Barrett +dnl +dnl configure.in template for The Webalizer Version 2.23 +dnl Process this file with autoconf to produce a configure script. +dnl + +AC_INIT(webalizer,V2.23) + +OPTS=${DEFS} +LIBS=${LIBS} +AC_SUBST(OPTS) +AC_SUBST(WCMGR_LIBS) + +dnl ------------------------------------------ +dnl default language (don't change!) +dnl ------------------------------------------ + +DEFAULT_LANG="english" +AC_SUBST(DEFAULT_LANG) + +dnl ------------------------------------------ +dnl Checks for required programs. +dnl ------------------------------------------ + +IN_CFLAGS=${CFLAGS} +AC_PROG_CC +AC_PROG_LN_S +AC_PROG_INSTALL + +dnl ------------------------------------------ +dnl check for platform specific settings +dnl ------------------------------------------ + +AC_SYS_LARGEFILE +AC_C_CHAR_UNSIGNED +AC_CHECK_TYPE(u_int64_t, unsigned long long) +AC_CHECK_DECL(altzone,OPTS="-DHAVE_ALTZONE ${OPTS}",,[#include ]) + +dnl ------------------------------------------ +dnl force our own CFLAGS defaults if GCC +dnl ------------------------------------------ + +if test "$GCC" = "yes"; then + + AC_ARG_ENABLE(static, + [ --enable-static Build as static executable [[default=no]]], + LDFLAGS="--static ${LDFLAGS}") + + if test "$IN_CFLAGS" = ""; then + CFLAGS="-Wall -O2" + fi + if test "$ac_cv_c_char_unsigned" = "yes"; then + CFLAGS="-fsigned-char ${CFLAGS}" + fi + + AC_ARG_ENABLE(debug, + [ --enable-debug Compile with debugging code [[default=no]]], + CFLAGS="-g ${CFLAGS}") + +else + if test "$IN_CFLAGS" = ""; then + CFLAGS="-g" + fi +fi + +dnl ------------------------------------------ +dnl check command line arguments +dnl ------------------------------------------ + +AC_ARG_WITH(gd, + [ --with-gd=DIR Alternate location for gd header files], + S_GD="${withval}"; CPPFLAGS="${CPPFLAGS} -I${withval}") +AC_ARG_WITH(gdlib, + [ --with-gdlib=DIR Alternate location for gd library], + S_GDLIB="${withval}"; LDFLAGS="-L${withval} ${LDFLAGS}") +AC_ARG_WITH(png, + [ --with-png=DIR Alternate location for png header files], + S_PNG="${withval}"; CPPFLAGS="${CPPFLAGS} -I${withval}") +AC_ARG_WITH(pnglib, + [ --with-pnglib=DIR Alternate location for png library], + S_PNGLIB="${withval}"; LDFLAGS="-L${withval} ${LDFLAGS}") +AC_ARG_WITH(z, + [ --with-z=DIR Alternate location for libz header files], + S_Z="${withval}"; CPPFLAGS="${CPPFLAGS} -I${withval}") +AC_ARG_WITH(zlib, + [ --with-zlib=DIR Alternate location for z library], + S_ZLIB="${withval}"; LDFLAGS="-L${withval} ${LDFLAGS}") +AC_ARG_WITH(db, + [ --with-db=DIR Alternate location for libdb header files], + S_DB="${withval}"; CPPFLAGS="${CPPFLAGS} -I${withval}") +AC_ARG_WITH(dblib, + [ --with-dblib=DIR Alternate location for db library], + S_DBLIB="${withval}"; LDFLAGS="-L${withval} ${LDFLAGS}") + +dnl ------------------------------------------ +dnl these are needed on some platforms +dnl ------------------------------------------ + +AC_CHECK_LIB(44bsd, main, LIBS="-l44bsd ${LIBS}") +AC_CHECK_HEADERS(getopt.h) +AC_CHECK_LIB(m, main, LIBS="-lm ${LIBS}"; HAVE_LIBM="1") +if test "${HAVE_LIBM}" = "1"; then + AC_CHECK_HEADERS(math.h) +fi + +dnl ------------------------------------------ +dnl ensure current libz is present - required! +dnl ------------------------------------------ + +AC_CHECK_LIB(z, main, LIBZ="yes"; LIBS="-lz ${LIBS}") +if test "${LIBZ}" = "yes"; then + AC_CHECK_LIB(z, gzrewind,LIBZ="yes",LIBZ="no") + if test "${LIBZ}" = "no"; then + AC_MSG_ERROR(Old version of libz found.. please upgrade!) + fi +else + AC_MSG_ERROR(z library not found.. please install libz) +fi + +AC_CHECK_HEADER(zlib.h, HDR="yes", HDR="no") +if test "${HDR}" = "no"; then + AC_MSG_ERROR(zlib.h header not found.. please install) +fi + +dnl ------------------------------------------ +dnl ensure libpng is present - required! +dnl ------------------------------------------ + +AC_CHECK_LIB(png, main, LIBPNG="yes"; LIBS="-lpng ${LIBS}",LIBPNG="no") +if test "${LIBPNG}" = "no"; then + AC_MSG_ERROR(png library not found.. please install libpng) +fi + +dnl ------------------------------------------ +dnl ensure libgd is present - required! +dnl ------------------------------------------ + +AC_CHECK_LIB(gd, main, LIBGD="yes"; LIBS="-lgd ${LIBS}") +if test "${LIBGD}" = "yes"; then + AC_CHECK_LIB(gd, gdImagePng, LIBGD="yes", LIBGD="no") + if test "${LIBGD}" = "no"; then + AC_MSG_ERROR(Old version of libgd found.. please upgrade!) + fi +else + AC_MSG_ERROR(gd library not found.. please install libgd) +fi + +AC_CHECK_HEADER(gd.h, HDR="yes", HDR="no") +if test "${HDR}" = "no"; then + AC_MSG_ERROR(gd.h header not found.. please install) +fi + +dnl ------------------------------------------ +dnl DNS/GeoDB lookup specific tests +dnl ------------------------------------------ + +AC_ARG_ENABLE(dns, + [ --enable-dns Enable DNS/GeoDB lookup code [[default=yes]]], + USE_DNS="${enableval}", USE_DNS="yes") + +if test "${USE_DNS}" = "yes"; then + AC_CHECK_LIB(db, main, USE_DNS="yes", + USE_DNS="no"; AC_MSG_WARN(libdb not found.. DNS/GeoDB code disabled!)) +fi + +if test "${USE_DNS}" = "yes"; then + AC_CHECK_HEADER(db.h, USE_DNS="yes", + USE_DNS="no"; AC_MSG_WARN(db.h not found.. DNS/GeoDB code disabled!)) +fi + +if test "${USE_DNS}" = "yes"; then + dnl we have both library and header.. proceed + OPTS="-DUSE_DNS ${OPTS}" + LIBS="-ldb ${LIBS}" + WCMGR_LIBS="-ldb" + AC_CHECK_FUNC(fdatasync,DUMMY="") + if test "$ac_cv_func_fdatasync" = "no"; then + AC_CHECK_LIB(rt, fdatasync, + LIBS="-lrt ${LIBS}";WCMGR_LIBS="-lrt ${WCMGR_LIBS}") + fi + AC_CHECK_FUNC(socket,DUMMY="",DUMMY="") + if test "$ac_cv_func_socket" = "no"; then + AC_CHECK_LIB(socket, main, LIBS="-lsocket ${LIBS}") + fi + AC_CHECK_HEADERS(sys/socket.h) + AC_CHECK_FUNC(inet_pton,DUMMY="",DUMMY="") + if test "$ac_cv_func_inet_pton" = "no"; then + AC_CHECK_LIB(nsl,inet_pton, LIBS="-lnsl ${LIBS}") + fi +fi + +dnl ------------------------------------------ +dnl BZip2 code specific tests +dnl ------------------------------------------ + +AC_ARG_ENABLE(bz2, + [ --enable-bz2 Enable BZip2 decompression code [[default=no]]], + USE_BZIP="${enableval}", USE_BZIP="no") + +AC_ARG_WITH(bz2, + [ --with-bz2=DIR Alternate location for bz2 header files], + S_BZ2="${withval}"; CPPFLAGS="${CPPFLAGS} -I${withval}") +AC_ARG_WITH(bz2lib, + [ --with-bz2lib=DIR Alternate location for bz2 library], + S_BZ2LIB="${withval}"; LDFLAGS="-L${withval} ${LDFLAGS}") + +if test "${USE_BZIP}" = "yes"; then + AC_CHECK_LIB(bz2, main, USE_BZIP="yes", + USE_BZIP="no"; AC_MSG_WARN(libbz2 not found.. bzip2 code will will be disabled!)) +fi + +if test "${USE_BZIP}" = "yes"; then + AC_CHECK_LIB(bz2, BZ2_bzopen, USE_BZIP="yes", + USE_BZIP="no"; AC_MSG_WARN(Old bz2 library found.. bzip2 code will be disabled!)) +fi + +if test "${USE_BZIP}" = "yes"; then + AC_CHECK_HEADER(bzlib.h, USE_BZIP="yes", + USE_BZIP="no"; AC_MSG_WARN(bzlib.h not found.. bzip2 code will be disabled!)) +fi + +if test "${USE_BZIP}" = "yes"; then + dnl we have both library and header.. proceed + OPTS="-DUSE_BZIP ${OPTS}" + LIBS="-lbz2 ${LIBS}" +fi + +dnl ------------------------------------------ +dnl GeoIP code specific tests +dnl ------------------------------------------ + +AC_ARG_ENABLE(geoip, + [ --enable-geoip Enable GeoIP geolocation code [[default=no]]], + USE_GEOIP="${enableval}", USE_GEOIP="no") + +AC_ARG_WITH(geoip, + [ --with-geoip=DIR Alternate location for libGeoIP header files], + S_GEOIP="${withval}"; CPPFLAGS="${CPPFLAGS} -I${withval}") +AC_ARG_WITH(geoiplib, + [ --with-geoiplib=DIR Alternate location for geoip library], + S_GEOIPLIB="${withval}"; LDFLAGS="-L${withval} ${LDFLAGS}") + +if test "${USE_GEOIP}" = "yes"; then + AC_CHECK_LIB(GeoIP, main, USE_GEOIP="yes", + USE_GEOIP="no"; AC_MSG_WARN(libGeoIP not found.. GeoIP code will be disabled!)) +fi + +if test "${USE_GEOIP}" = "yes"; then + AC_CHECK_HEADER(GeoIP.h, USE_GEOIP="yes", + USE_GEOIP="no"; AC_MSG_WARN(GeoIP.h not found.. GeoIP code will be disabled!)) +fi + +if test "${USE_GEOIP}" = "yes"; then + dnl we have both library and header.. proceed + OPTS="-DUSE_GEOIP ${OPTS}" + LIBS="-lGeoIP ${LIBS}" +fi + +dnl ------------------------------------------ +dnl check for default GeoDB directory +dnl ------------------------------------------ + +AC_ARG_WITH(geodb, + [ --with-geodb=DIR Default GeoDB data dir [[/usr/share/GeoDB]]], + GEODB_LOC="${withval}", GEODB_LOC="/usr/share/GeoDB") +AC_SUBST(GEODB_LOC) + +dnl ------------------------------------------ +dnl check which hash function to use +dnl ------------------------------------------ +AC_ARG_ENABLE(oldhash, + [ --enable-oldhash Use old hash function (slower) [[default=no]]], + OLDHASH=${enableval}, OLDHASH="no") + if test "$OLDHASH" = "yes"; then OPTS="-DUSE_OLDHASH"; fi + +dnl ------------------------------------------ +dnl check language to use (default is english) +dnl ------------------------------------------ + +LANG_CACHE=yes +AC_ARG_WITH(language, + [ --with-language=name Use language 'name' (default is english)], + WEBALIZER_LANG="${withval}"; LANG_CACHE=no, LANG_CACHE=yes) +if test "$WEBALIZER_LANG" = "no"; then WEBALIZER_LANG=english; fi + +dnl ------------------------------------------ +dnl check if specfied language is valid +dnl ------------------------------------------ + +AC_MSG_CHECKING(for language file) +if test "$LANG_CACHE" = "yes"; then + AC_CACHE_VAL(ac_cv_language, ac_cv_language=$DEFAULT_LANG) + WEBALIZER_LANG=$ac_cv_language +fi + +if test -f lang/webalizer_lang.${WEBALIZER_LANG}; then +AC_MSG_RESULT(yes - ${WEBALIZER_LANG}) +else + if test -f lang/webalizer_lang.${DEFAULT_LANG}; then + AC_MSG_RESULT('${WEBALIZER_LANG}' not found - using ${DEFAULT_LANG}) + WEBALIZER_LANG=${DEFAULT_LANG} + else + AC_MSG_RESULT(no) + AC_MSG_ERROR(language files not found... fix before continuing) + fi +fi +ac_cv_language=${WEBALIZER_LANG} + +dnl ------------------------------------------ +dnl create link to language file +dnl ------------------------------------------ + +AC_LINK_FILES(lang/webalizer_lang.${WEBALIZER_LANG}, webalizer_lang.h) + +dnl ------------------------------------------ +dnl done.. write out our Makefile +dnl ------------------------------------------ + +AC_OUTPUT(Makefile) +AC_MSG_NOTICE(Done. Type 'make' to continue with build.) diff --git a/country-codes.txt b/country-codes.txt new file mode 100644 index 0000000..1cb7388 --- /dev/null +++ b/country-codes.txt @@ -0,0 +1,279 @@ +ac Ascension Island +ad Andorra +ae United Arab Emirates +af Afghanistan +ag Antigua and Barbuda +ai Anguilla +al Albania +am Armenia +an Netherlands Antilles +ao Angola +aq Antarctica +ar Argentina +as American Samoa +at Austria +au Australia +aw Aruba +ax Aland Islands +az Azerbaijan +ba Bosnia and Herzegovina +bb Barbados +bd Bangladesh +be Belgium +bf Burkina Faso +bg Bulgaria +bh Bahrain +bi Burundi +bj Benin +bl Saint Barthelemy +bm Bermuda +bn Brunei Darussalam +bo Bolivia +br Brazil +bs Bahamas +bt Bhutan +bv Bouvet Island +bw Botswana +by Belarus +bz Belize +ca Canada +cc Cocos (Keeling) Islands +cd Congo, Democratic Republic +cf Central African Republic +cg Congo +ch Switzerland +ci Cote D'Ivoire (Ivory Coast) +ck Cook Islands +cl Chile +cm Cameroon +cn China +co Colombia +cr Costa Rica +cu Cuba +cv Cape Verde +cx Christmas Island +cy Cyprus +cz Czech Republic +de Germany +dj Djibouti +dk Denmark +dm Dominica +do Dominican Republic +dz Algeria +ec Ecuador +ee Estonia +eg Egypt +eh Western Sahara +er Eritrea +es Spain +et Ethiopia +eu European Union +fi Finland +fj Fiji +fk Falkland Islands (Malvinas) +fm Micronesia +fo Faroe Islands +fr France +ga Gabon +gb Great Britain (UK) +gd Grenada +ge Georgia +gf French Guiana +gg Guernsey +gh Ghana +gi Gibraltar +gl Greenland +gm Gambia +gn Guinea +gp Guadeloupe +gq Equatorial Guinea +gr Greece +gs S. Georgia and S. Sandwich Isls. +gt Guatemala +gu Guam +gw Guinea-Bissau +gy Guyana +hk Hong Kong +hm Heard and McDonald Islands +hn Honduras +hr Croatia +ht Haiti +hu Hungary +id Indonesia +ie Ireland +il Israel +im Isle of Man +in India +io British Indian Ocean Territory +iq Iraq +ir Iran +is Iceland +it Italy +je Jersey +jm Jamaica +jo Jordan +jp Japan +ke Kenya +kg Kyrgyzstan +kh Cambodia +ki Kiribati +km Comoros +kn Saint Kitts and Nevis +kp Korea, Democratic Republic of +kr Korea, Republic of +kw Kuwait +ky Cayman Islands +kz Kazakhstan +la Laos +lb Lebanon +lc Saint Lucia +li Liechtenstein +lk Sri Lanka +lr Liberia +ls Lesotho +lt Lithuania +lu Luxembourg +lv Latvia +ly Libya +ma Morocco +mc Monaco +md Moldova +me Montenegro +mf Saint Martin (French part) +mg Madagascar +mh Marshall Islands +mk Macedonia +ml Mali +mm Myanmar +mn Mongolia +mo Macau +mp Northern Mariana Islands +mq Martinique +mr Mauritania +ms Montserrat +mt Malta +mu Mauritius +mv Maldives +mw Malawi +mx Mexico +my Malaysia +mz Mozambique +na Namibia +nc New Caledonia +ne Niger +nf Norfolk Island +ng Nigeria +ni Nicaragua +nl Netherlands +no Norway +np Nepal +nr Nauru +nu Niue +nz New Zealand (Aotearoa) +om Oman +pa Panama +pe Peru +pf French Polynesia +pg Papua New Guinea +ph Philippines +pk Pakistan +pl Poland +pm St. Pierre and Miquelon +pn Pitcairn +pr Puerto Rico +ps Palestinian Territory, Occupied +pt Portugal +pw Palau +py Paraguay +qa Qatar +re Reunion +ro Romania +rs Serbia +ru Russian Federation +rw Rwanda +sa Saudi Arabia +sb Solomon Islands +sc Seychelles +sd Sudan +se Sweden +sg Singapore +sh St. Helena +si Slovenia +sj Svalbard and Jan Mayen Islands +sk Slovakia +sl Sierra Leone +sm San Marino +sn Senegal +so Somalia +sr Suriname +st Sao Tome and Principe +su Soviet Union +sv El Salvador +sy Syrian Arab Republic +sz Swaziland +tc Turks and Caicos Islands +td Chad +tf French Southern Territories +tg Togo +th Thailand +tj Tajikistan +tk Tokelau +tl Timor-Leste +tm Turkmenistan +tn Tunisia +to Tonga +tp Portuguese Timor +tr Turkey +tt Trinidad and Tobago +tv Tuvalu +tw Taiwan +tz Tanzania +ua Ukraine +ug Uganda +uk United Kingdom +um US Minor Outlying Islands +us United States +uy Uruguay +uz Uzbekistan +va Vatican City State (Holy See) +vc Saint Vincent and the Grenadines +ve Venezuela +vg Virgin Islands (British) +vi Virgin Islands (U.S.) +vn Viet Nam +vu Vanuatu +wf Wallis and Futuna Islands +ws Samoa +ye Yemen +yt Mayotte +yu Yugoslavia +za South Africa +zm Zambia +zw Zimbabwe +com US Commercial (com) +edu US Educational (edu) +gov US Government (gov) +int International (int) +mil US Military (mil) +net Network (net) +org Non-Profit Organization (org) +biz Generic Business (biz) +cat Catalan Community (cat) +pro Professional (pro) +tel Ind. Contact Data (tel) +aero Air Transport Industry (aero) +asia Asia Pacific Community (asia) +coop Cooperative Association (coop) +info Generic TLD (info) +jobs Human Resources (jobs) +mobi Generic Mobile TLD (mobi) +name Individual (name) +arpa Address Routing (arpa) +nato Nato field (nato) +museum Museums (museum) +travel Travel Ind. (travel) +a1 Anonymous Proxy +a2 Satellite Provider +o1 Other +ap Asia/Pacific Region +lan Local Network (lan) diff --git a/dns_resolv.c b/dns_resolv.c new file mode 100644 index 0000000..74ad6a5 --- /dev/null +++ b/dns_resolv.c @@ -0,0 +1,923 @@ +/* + webalizer - a web server log analysis program + + Copyright (C) 1997-2011 Bradford L. Barrett + + This program 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 2 of the License, or + (at your option) any later version, and provided that the above + copyright and permission notice is included with all distributed + copies of this or derived software. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +*/ + +/*********************************************/ +/* STANDARD INCLUDES */ +/*********************************************/ + +#include +#include +#include +#include +#include +#include /* normal stuff */ +#include +#include +#include + +/* ensure sys/types */ +#ifndef _SYS_TYPES_H +#include +#endif + +/* Need socket header? */ +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +/* some systems need this */ +#ifdef HAVE_MATH_H +#include +#endif + +#ifdef USE_DNS /* skip everything in this file if no DNS */ + +#include /* include stuff we need for dns lookups, */ +#include /* DB access, file control, etc... */ +#include +#include /* ensure getaddrinfo/getnameinfo */ +#include +#include +#include +#include +#include +#include /* DB header ****************/ +#include "webalizer.h" /* main header */ +#include "lang.h" /* language declares */ +#include "hashtab.h" /* hash table functions */ +#include "parser.h" /* log parser functions */ +#include "dns_resolv.h" /* our header */ + +/* local data */ + +DB *dns_db = NULL; /* DNS cache database */ +int dns_fd = 0; + +DB *geo_db = NULL; /* GeoDB database */ +DBC *geo_dbc = NULL; /* GeoDB database cursor */ + +struct dns_child child[MAXCHILD]; /* DNS child pipe data */ + +DNODEPTR host_table[MAXHASH]; /* hostname/ip hash table */ + +char buffer[BUFSIZE]; /* log file record buffer */ +char tmp_buf[BUFSIZE]; /* used to temp save above */ +struct utsname system_info; /* system info structure */ + +int raiseSigChild = 1; + +time_t runtime; +time_t start_time, end_time; +float temp_time; + +extern char *our_gzgets(void *, char *, int); /* external our_gzgets func */ + +/* internal function prototypes */ + +static void process_list(DNODEPTR); +static void sigChild(int); +static void db_put(char *, char *, int); +void set_fl(int, int); +void clr_fl(int, int); +int iptype(char *, unsigned char *); + +/*********************************************/ +/* RESOLVE_DNS - lookup IP in cache */ +/*********************************************/ + +void resolve_dns(struct log_struct *log_rec) +{ + DBT query, response; + int i; + /* aligned dnsRecord to prevent Solaris from doing a dump */ + /* (not found in debugger, as it can dereference it :( */ + struct dnsRecord alignedRecord; + + if (!dns_db) return; /* ensure we have a dns db */ + + memset(&query, 0, sizeof(query)); + memset(&response, 0, sizeof(response)); + query.data = log_rec->hostname; + query.size = strlen(log_rec->hostname); + + if (debug_mode) fprintf(stderr,"Checking %s...", log_rec->hostname); + + if ( (i=dns_db->get(dns_db, NULL, &query, &response, 0)) == 0) + { + memcpy(&alignedRecord, response.data, sizeof(struct dnsRecord)); + strncpy (log_rec->hostname, + ((struct dnsRecord *)response.data)->hostName, + MAXHOST); + log_rec->hostname[MAXHOST-1]=0; + if (debug_mode) + fprintf(stderr," found: %s (%ld)\n", + log_rec->hostname, alignedRecord.timeStamp); + } + else /* not found or error occured during get */ + { + if (debug_mode) + { + if (i==DB_NOTFOUND) fprintf(stderr," not found\n"); + else fprintf(stderr," error (%d)\n",i); + } + } +} + +/*********************************************/ +/* DNS_RESOLVER - read log and lookup IP's */ +/*********************************************/ + +int dns_resolver(void *log_fp) +{ + DNODEPTR h_entries; + DNODEPTR l_list = NULL; + + int i; + int save_verbose=verbose; + + u_int64_t listEntries = 0; + + struct sigaction sigPipeAction; + struct stat dbStat; + /* aligned dnsRecord to prevent Solaris from doing a dump */ + /* (not found in debugger, as it can dereference it :( */ + struct dnsRecord alignedRecord; + + struct flock tmp_flock; + + tmp_flock.l_whence=SEEK_SET; /* default flock fields */ + tmp_flock.l_start=0; + tmp_flock.l_len=0; + tmp_flock.l_pid=0; + + time(&runtime); + + /* get processing start time */ + start_time = time(NULL); + + /* minimal sanity check on it */ + if(stat(dns_cache, &dbStat) < 0) + { + if(errno != ENOENT) + { + dns_cache=NULL; + dns_db=NULL; return 0; /* disable cache */ + } + } + else + { + if(!dbStat.st_size) /* bogus file, probably from a crash */ + { + unlink(dns_cache); /* remove it so we can recreate... */ + } + } + + /* open cache file */ + if ( (db_create(&dns_db, NULL, 0) != 0) || + (dns_db->open(dns_db, NULL, + dns_cache, NULL, DB_HASH, + DB_CREATE, 0644) != 0) ) + { + /* Error: Unable to open DNS cache file */ + if (verbose) fprintf(stderr,"%s %s\n",msg_dns_nodb,dns_cache); + dns_cache=NULL; + dns_db=NULL; + return 0; /* disable cache */ + } + + /* get file descriptor */ + dns_db->fd(dns_db, &dns_fd); + + tmp_flock.l_type=F_WRLCK; /* set read/write lock type */ + if (fcntl(dns_fd,F_SETLK,&tmp_flock) < 0) /* and barf if we cant lock */ + { + /* Error: Unable to lock DNS cache file */ + if (verbose) fprintf(stderr,"%s %s\n",msg_dns_nolk,dns_cache); + dns_db->close(dns_db, 0); + dns_cache=NULL; + dns_db=NULL; + return 0; /* disable cache */ + } + + /* Setup signal handlers */ + sigPipeAction.sa_handler = SIG_IGN; + sigPipeAction.sa_flags = SA_RESTART; + sigemptyset(&sigPipeAction.sa_mask); + + sigaction(SIGPIPE, &sigPipeAction, NULL); + + /* disable warnings/errors for this run... */ + verbose=0; + + /* Main loop to read log records (either regular or zipped) */ + while ( (gz_log)?(our_gzgets((void *)log_fp,buffer,BUFSIZE) != Z_NULL): + (fgets(buffer,BUFSIZE,log_fname?(FILE *)log_fp:stdin) != NULL)) + { + if (strlen(buffer) == (BUFSIZE-1)) + { + /* get the rest of the record */ + while ( (gz_log)?(our_gzgets((void *)log_fp,buffer,BUFSIZE)!=Z_NULL): + (fgets(buffer,BUFSIZE,log_fname?(FILE *)log_fp:stdin)!=NULL)) + { + if (strlen(buffer) < BUFSIZE-1) break; + } + continue; /* go get next record if any */ + } + + strcpy(tmp_buf, buffer); /* save buffer in case of error */ + if(parse_record(buffer)) /* parse the record */ + { + struct addrinfo hints, *ares; + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags = AI_NUMERICHOST; + if (0 == getaddrinfo(log_rec.hostname, "0", &hints, &ares)) + { + DBT q, r; + memset(&q, 0, sizeof(q)); + memset(&r, 0, sizeof(r)); + q.data = log_rec.hostname; + q.size = strlen(log_rec.hostname); + + /* Check if we have it in DB */ + if ( (i=dns_db->get(dns_db, NULL, &q, &r, 0)) == 0 ) + { + /* have a record for this address */ + memcpy(&alignedRecord, r.data, sizeof(struct dnsRecord)); + if (alignedRecord.timeStamp != 0) + /* If it's not permanent, check if it's TTL has expired */ + if ( (runtime-alignedRecord.timeStamp ) > (86400*cache_ttl) ) + put_dnode(log_rec.hostname, ares->ai_addr, + ares->ai_addrlen, host_table); + } + else + { + if (i==DB_NOTFOUND) + put_dnode(log_rec.hostname, ares->ai_addr, + ares->ai_addrlen, host_table); + } + freeaddrinfo(ares); + } + } + } + verbose = save_verbose; /* restore verbosity level... */ + + listEntries = 0; + + /* build our linked list l_list */ + for(i=0;i < MAXHASH; i++) + { + for(h_entries=host_table[i]; h_entries ; h_entries = h_entries->next) + { + h_entries->llist = l_list; + l_list = h_entries; + listEntries++; + } + } + + if(!l_list) + { + /* No valid addresses found... */ + if (verbose>1) printf("%s\n",msg_dns_none); + tmp_flock.l_type=F_UNLCK; + fcntl(dns_fd, F_SETLK, &tmp_flock); + dns_db->close(dns_db, 0); + return 0; + } + + /* process our list now... */ + process_list(l_list); + + /* get processing end time */ + end_time = time(NULL); + + /* display DNS processing statistics */ + if (time_me || (verbose>1)) + { + if (verbose<2 && time_me) printf("DNS: "); + printf("%llu %s ",listEntries, msg_addresses); + + /* total processing time in seconds */ + temp_time = difftime(end_time,start_time); + if (temp_time==0) temp_time=1; + printf("%s %.0f %s", msg_in, temp_time, msg_seconds); + + /* calculate records per second */ + if (temp_time) + i=( (int)((float)listEntries/temp_time) ); + else i=0; + + if ( (i>0) && (i<=listEntries) ) printf(", %d/sec\n", i); + else printf("\n"); + } + + /* processing done, exit */ + tmp_flock.l_type=F_UNLCK; + fcntl(dns_fd, F_SETLK, &tmp_flock); + dns_db->close(dns_db, 0); + return 0; + +} + +/*********************************************/ +/* PROCESS_LIST - do the resoluton... */ +/*********************************************/ + +static void process_list(DNODEPTR l_list) +{ + DNODEPTR trav; + + char child_buf[MAXHOST+3-((unsigned long)&trav+sizeof(trav))%3]; + char dns_buf[MAXHOST]; + int i; + int pid; + int nof_children = 0; + fd_set rd_set; + char hbuf[NI_MAXHOST]; + + struct sigaction sigChildAction; + + sigChildAction.sa_handler = sigChild; + sigChildAction.sa_flags = SA_NOCLDSTOP|SA_RESTART; + sigemptyset(&sigChildAction.sa_mask); + + raiseSigChild = 0; + + sigaction(SIGCHLD, &sigChildAction, NULL); + + /* fire up our child processes */ + for(i=0; i < dns_children; i++) + { + if(pipe(child[i].inpipe)) + { + if (verbose) fprintf(stderr,"INPIPE creation error"); + return; /* exit(1) */ + } + + if(pipe(child[i].outpipe)) + { + if (verbose) fprintf(stderr,"OUTPIPE creation error"); + return; /* exit(1); */ + } + + /* fork it off */ + switch(pid=fork()) + { + case -1: + { + if (verbose) fprintf(stderr,"FORK error"); + return; /* exit(1); */ + } + + case 0: /* Child */ + { + int size; + + close(child[i].inpipe[0]); + close(child[i].outpipe[1]); + + /* get struct sockaddr_storage here */ + while((size = read(child[i].outpipe[0], child_buf, MAXHOST))) + { + if(size < 0) + { + perror("read error"); + exit(1); + } + else + { + /* Clear out our buffer */ + memset(hbuf,0,NI_MAXHOST); + + if(0 == getnameinfo((struct sockaddr*)child_buf, size, + hbuf, sizeof(hbuf), NULL, 0, NI_NAMEREQD)) + { + /* must be at least 4 chars */ + if (strlen(hbuf)>3) + { + /* If long hostname, take max domain name part */ + if ((size = strlen(hbuf)) > MAXHOST-2) + strcpy(child_buf,(hbuf+(size-MAXHOST+1))); + else strcpy(child_buf, hbuf); + size = strlen(child_buf); + } + else + { + if (debug_mode) + printf("Child %d getnameinfo bad hbuf!\n",i); + } + } + else + { + if(debug_mode) + printf("Child %d getnameinfo failed!\n",i); + } + + if (write(child[i].inpipe[1], child_buf, size) == -1) + { + perror("write error"); + exit(1); + } + } + } + close(child[i].inpipe[1]); + close(child[i].outpipe[0]); + + if(debug_mode) + printf( "Child %d got closed input, shutting down\n", i); + + fflush(stdout); + exit(0); + } /* case 0 */ + + default: + { + child[i].pid = pid; + child[i].flags = DNS_CHILD_READY|DNS_CHILD_RUNNING; + nof_children++; + close(child[i].inpipe[1]); + close(child[i].outpipe[0]); + + set_fl(child[i].inpipe[0], O_NONBLOCK); + } + } + } + + trav = l_list; + + while(nof_children) + { + static struct timeval selectTimeval; + int res; + int max_fd; + + FD_ZERO(&rd_set); + max_fd = 0; + + if(raiseSigChild) + { + int pid; + + while((pid = waitpid(-1, NULL, WNOHANG)) > 0) + { + for(i=0;iaddr, + trav->addrlen) != -1) + { + /* We will watch this child */ + child[i].cur = trav; + FD_SET(child[i].inpipe[0], &rd_set); + max_fd = MAX(max_fd, child[i].inpipe[0]); + + if(debug_mode) + printf("Giving %d bytes to Child %d\n", + trav->addrlen, i); + + trav = trav->llist; + } + else /* write error */ + { + if(errno != EINTR) /* Could be a signal */ + { + perror("Could not write to pipe"); + close(child[i].outpipe[1]); /* kill */ + child[i].flags &= ~DNS_CHILD_RUNNING; /* child */ + } + } + } + else /* List is complete */ + { + close(child[i].outpipe[1]); /* Go away */ + child[i].flags &= ~DNS_CHILD_RUNNING; /* Child is dead */ + } + } + else + { + /* Look, the busy child... */ + FD_SET(child[i].inpipe[0], &rd_set); + max_fd = MAX(max_fd, child[i].inpipe[0]); + } + } + } + + selectTimeval.tv_sec = 5; /* This stuff ticks in 5 second intervals */ + selectTimeval.tv_usec = 0; + + switch(res = select(max_fd+1, &rd_set, NULL, NULL, &selectTimeval)) + { + case -1: + { + if(errno != EINTR) /* Could be a signal */ + perror("Error in select"); + + break; + } + + case 0: /* Timeout, just fall once through the child loop */ + { + if(debug_mode) + printf("tick\n"); + + break; + } + + default: + { + for(i=0; i< dns_children;i++) + { + if(!res) /* All file descriptors done */ + break; + + if(FD_ISSET(child[i].inpipe[0], &rd_set)) + { + int size; + + res--; /* One less... */ + + switch (size=read(child[i].inpipe[0], dns_buf, MAXHOST)) + { + case -1: + { + if(errno != EINTR) + perror("Could not read from pipe"); + break; + } + case 0: + { + /* EOF. Child has closed Pipe. It shouldn't have */ + /* done that, could be an error or something. */ + /* Reap it */ + close(child[i].outpipe[1]); + child[i].flags &= ~DNS_CHILD_RUNNING; + + if(debug_mode) + printf("Child %d wants to be reaped\n", i); + + break; + } + + default: + { + dns_buf[size] = '\0'; + if( strlen(dns_buf) > 1 && + memcmp(dns_buf, &(child[i].cur->addr), + sizeof(child[i].cur->addr))) + { + if(debug_mode) + printf("Child %d Got a result: %s -> %s\n", + i, child[i].cur->string, dns_buf); + db_put(child[i].cur->string, dns_buf, 0); + } + else + { + if(debug_mode) + printf("Child %d could not resolve: %s (%s)\n", + i, child[i].cur->string, + (cache_ips)?"cache":"no cache"); + if (cache_ips) /* Cache non-resolved? */ + db_put(child[i].cur->string, + child[i].cur->string,1); + } + + if(debug_mode) + printf("Child %d back in task pool\n", i); + + /* Child is back in the task pool */ + child[i].flags |= DNS_CHILD_READY; + break; + } + } + } + } + break; + } + } + } + return; +} + +/*********************************************/ +/* SET_FL - set flag on pipe FD */ +/*********************************************/ + +void set_fl(int fd, int flags) +{ + int val; + + /* get current flags */ + if ((val=fcntl(fd, F_GETFL, 0)) < 0) + if (verbose) fprintf(stderr,"set_fl F_GETFL error\n"); + + /* set them */ + val |= flags; + + /* and write them back */ + if ((val=fcntl(fd, F_SETFL, val)) < 0) + if (verbose) fprintf(stderr,"set_fl F_SETFL error\n"); +} + +/*********************************************/ +/* CLR_FL - clear flag on pipe FD */ +/*********************************************/ + +void clr_fl(int fd, int flags) +{ + int val; + + /* Get current flags */ + if ((val=fcntl(fd, F_GETFL, 0)) < 0) + if (verbose) fprintf(stderr,"clr_fl F_GETFL error\n"); + + /* set them */ + val &= ~flags; + + /* and write them back */ + if ((val=fcntl(fd, F_SETFL, val)) < 0) + if (verbose) fprintf(stderr,"clr_fl F_SETFL error\n"); +} + +/*********************************************/ +/* DB_PUT - put key/val in the cache db */ +/*********************************************/ + +static void db_put(char *key, char *value, int numeric) +{ + DBT k, v; + char *cp; + struct dnsRecord *recPtr = NULL; + int nameLen = strlen(value)+1; + + /* Align to multiple of eight bytes */ + int recSize = (sizeof(struct dnsRecord)+nameLen+7) & ~0x7; + + /* make sure we have a db ;) */ + if(dns_db) + { + if((recPtr = calloc(1, recSize))) + { + recPtr->timeStamp = runtime; + recPtr->numeric = numeric; + memcpy(&recPtr->hostName, value, nameLen); + memset(&k, 0, sizeof(k)); + memset(&v, 0, sizeof(v)); + + /* Ensure all data is lowercase */ + cp=key; while (*cp++!='\0') *cp=tolower(*cp); + cp=value; while (*cp++!='\0') *cp=tolower(*cp); + + k.data = key; + k.size = strlen(key); + + v.size = recSize; + v.data = recPtr; + + if ( dns_db->put(dns_db, NULL, &k, &v, 0) != 0 ) + if (verbose>1) fprintf(stderr,"db_put fail!\n"); + free(recPtr); + } + } +} + +/*********************************************/ +/* SIGCHILD - raise our signal */ +/*********************************************/ + +static void sigChild(int signum) +{ + raiseSigChild++; +} + +/*********************************************/ +/* OPEN_CACHE - open our cache file RDONLY */ +/*********************************************/ + +int open_cache() +{ + struct stat dbStat; + struct flock tmp_flock; + + tmp_flock.l_whence=SEEK_SET; /* default flock fields */ + tmp_flock.l_start=0; + tmp_flock.l_len=0; + tmp_flock.l_pid=0; + tmp_flock.l_type=F_RDLCK; + + /* double check filename was specified */ + if(!dns_cache) { dns_db=NULL; return 0; } + + /* minimal sanity check on it */ + if(stat(dns_cache, &dbStat) < 0) + { + if(errno != ENOENT) return 0; + } + else + { + if(!dbStat.st_size) /* bogus file, probably from a crash */ + { + unlink(dns_cache); /* remove it so we can recreate... */ + } + } + + /* open cache file */ + if ( (db_create(&dns_db, NULL, 0) != 0) || + (dns_db->open(dns_db, NULL, + dns_cache, NULL, DB_HASH, + DB_RDONLY, 0644) != 0) ) + { + /* Error: Unable to open DNS cache file */ + if (verbose) fprintf(stderr,"%s %s\n",msg_dns_nodb,dns_cache); + return 0; /* disable cache */ + } + + /* get file descriptor */ + dns_db->fd(dns_db, &dns_fd); + + /* Get shared lock on cache file */ + if (fcntl(dns_fd, F_SETLK, &tmp_flock) < 0) + { + if (verbose) fprintf(stderr,"%s %s\n",msg_dns_nolk,dns_cache); + dns_db->close(dns_db, 0); + return 0; + } + return 1; +} + +/*********************************************/ +/* CLOSE_CACHE - close our RDONLY cache */ +/*********************************************/ + +int close_cache() +{ + struct flock tmp_flock; + + tmp_flock.l_whence=SEEK_SET; /* default flock fields */ + tmp_flock.l_start=0; + tmp_flock.l_len=0; + tmp_flock.l_pid=0; + tmp_flock.l_type=F_UNLCK; + + /* clear lock and close cache file */ + fcntl(dns_fd, F_SETLK, &tmp_flock); + dns_db->close(dns_db, 0); + return 1; +} + +/*********************************************/ +/* GEODB_OPEN - Open GeoDB database/cursor */ +/*********************************************/ + +DB *geodb_open(char *dbname) +{ + char buf[1025]; + + if (dbname==NULL) + snprintf(buf,sizeof(buf),"%s/GeoDB.dat",GEODB_LOC); + else + strncpy(buf,dbname,sizeof(buf)-1); + buf[sizeof(buf)-1]='\0'; + + /* create database thingie */ + if ( db_create(&geo_db, NULL, 0) ) return NULL; + + /* open the database */ + if (geo_db->open(geo_db,NULL,buf,NULL,DB_BTREE,DB_RDONLY,0)) return NULL; + + /* create our cursor */ + if (geo_db->cursor(geo_db,NULL,&geo_dbc,0)) + { + geo_db->close(geo_db,0); + return NULL; + } + /* all is well in the world */ + return geo_db; +} + +/*********************************************/ +/* GEODB_VER - Get database version info */ +/*********************************************/ + +char *geodb_ver(DB *db, char *str) +{ + int i; + DBT k,v; + unsigned char x[16]; + + memset(&x, 0, sizeof(x)); + memset(&k, 0, sizeof(k)); + memset(&v, 0, sizeof(v)); + k.data=&x; + k.size=sizeof(x); + + i=geo_db->get(geo_db, NULL, &k, &v, 0); + + if (i) strncpy(str, "Unknown", 8); + else strncpy(str, v.data+3, v.size-3); + return str; +} + +/*********************************************/ +/* GEODB_GET_CC - Get country code for IP */ +/*********************************************/ + +char *geodb_get_cc(DB *db, char *ip, char *buf) +{ + int i; + DBT k,v; + unsigned char addr[16]; + + memset(addr, 0, sizeof(addr)); + strncpy(buf, "--", 3); + + /* get IP address */ + if (!iptype(ip, addr)) return buf; + + /* kludge for IPv6 mapped IPv4 */ + if (addr[0]==0 && addr[1]==0 && addr[2]==0) { addr[10]=0; addr[11]=0; } + + /* kludge for IPv6 6to4 (RFC3056) */ + if (addr[0]==0x20 && addr[1]==0x02) + { + memcpy(&addr[12],&addr[2],4); + memset(&addr,0,12); + } + + memset(&k, 0, sizeof(k)); + memset(&v, 0, sizeof(v)); + k.data=&addr; + k.size=sizeof(addr); + + i=geo_dbc->c_get(geo_dbc, &k, &v, DB_SET_RANGE); + if (!i) memcpy(buf, v.data, 2); + return buf; +} + +/*********************************************/ +/* GEODB_CLOSE - close GeoDB database */ +/*********************************************/ + +void geodb_close(DB *db) +{ + db->close(db,0); +} + +/*********************************************/ +/* IPTYPE - get IP type and format addr buf */ +/*********************************************/ + +int iptype(char *ip, unsigned char *buf) +{ + if (inet_pton(AF_INET6, ip, buf)>0) return 2; + if (inet_pton(AF_INET, ip, buf+12)>0) return 1; + else return 0; +} + +#endif /* USE_DNS */ diff --git a/dns_resolv.h b/dns_resolv.h new file mode 100644 index 0000000..29066f7 --- /dev/null +++ b/dns_resolv.h @@ -0,0 +1,42 @@ +#ifndef _DNS_RESOLV_H +#define _DNS_RESOLV_H + +#ifdef USE_DNS /* skip whole file if not using DNS stuff... */ + +struct dnsRecord { time_t timeStamp; /* Timestamp of resolv data */ + int numeric; /* 0: Name, 1: IP-address */ + char hostName[1]; }; /* Hostname (var length) */ + +struct dns_child /* Defines the communication with a DNS child */ +{ + int inpipe[2]; /* Pipe Child -> Father */ + int outpipe[2]; /* Pipe Father -> Child */ + int pid; /* PID of Child */ + int flags; /* see below */ + struct dnode *cur; /* Currently processed node */ +}; + +extern void resolve_dns(struct log_struct *); +extern DB *dns_db; +extern int dns_fd; +extern int dns_resolver(void *); +extern int open_cache(); +extern int close_cache(); + +extern DB *geo_db; +extern DB *geodb_open(char *); +extern char *geodb_ver(DB *, char *); +extern char *geodb_get_cc(DB *, char *, char *); +extern void geodb_close(DB *); + +#define DNS_CHILD_READY 0x1 /* Our child flags */ +#define DNS_CHILD_RUNNING 0x2 + +#define MAXCHILD 100 /* Maximum number of DNS children */ + +#ifndef GEODB_LOC +#define GEODB_LOC "/usr/share/GeoDB" +#endif + +#endif /* USE_DNS */ +#endif /* _DNS_RESOLV_H */ diff --git a/graphs.c b/graphs.c new file mode 100644 index 0000000..767c1fc --- /dev/null +++ b/graphs.c @@ -0,0 +1,903 @@ +/* + graphs.c - produces graphs used by the Webalizer + + Copyright (C) 1997-2011 Bradford L. Barrett + + This program 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 2 of the License, or + (at your option) any later version, and provided that the above + copyright and permission notice is included with all distributed + copies of this or derived software. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* need socket header? */ +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +#include "webalizer.h" +#include "preserve.h" +#include "lang.h" +#include "graphs.h" + +/* Some systems don't define this */ +#ifndef PI +#define PI 3.14159265358979323846 +#endif + +#define HITCOLOR hit_or_green /* graph color - hits */ +#define FILECOLOR file_or_blue /* files */ +#define SITECOLOR site_or_orange /* sites */ +#define KBYTECOLOR kbyte_or_red /* KBytes */ +#define PAGECOLOR page_or_cyan /* Files */ +#define VISITCOLOR visit_or_yellow /* Visits */ + +/* shortcuts to convert ASCII hex color for gdImageColorAllocate() */ + +#define getred(s) (ashex2int((s[0] == '#')?s+1:s)) +/* returns the red base-10 integer value from a html color */ + +#define getgreen(s) (ashex2int((s[0] == '#')?s+3:s+2)) +/* returns the green base-10 integer value from a html color */ + +#define getblue(s) (ashex2int((s[0] == '#')?s+5:s+4)) +/* returns the blue base-10 integer value from a html color */ + +#define CX 156 /* center x (for pie) */ +#define CY 150 /* center y (chart) */ +#define XRAD 240 /* X-axis radius */ +#define YRAD 200 /* Y-axis radius */ + +/* forward reference internal routines */ + +void init_graph(char *, int, int); +struct pie_data *calc_arc(float, float); +int ashex2int(char *); + +/* common public declarations */ + +char *numchar[] = { " 0"," 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"}; + +gdImagePtr im; /* image buffer */ +FILE *out; /* output file for PNG */ +struct stat out_stat; /* stat struct for PNG */ +char maxvaltxt[32]; /* graph values */ +float percent; /* percent storage */ +u_int64_t julday; /* julday value */ + +struct pie_data { int x; int y; /* line x,y */ + int mx; int my; }; /* midpoint x,y */ +/* colors */ +int black, white, grey, dkgrey, kbyte_or_red, + file_or_blue, site_or_orange, hit_or_green, + page_or_cyan, visit_or_yellow, blue; + +/*****************************************************************/ +/* */ +/* YEAR_GRAPH6x - Year graph from array of hist_rec structs */ +/* */ +/*****************************************************************/ + +int year_graph6x(char *fname, char *title, struct hist_rec data[HISTSIZE]) +{ + + /* local variables */ + int i,j,x1,y1,x2; + int s_mth,s_year=0; + float cw,cs,co,ci; + + u_int64_t maxval=1; + double fmaxval=0.0; + + /* initalize the graph */ + init_graph(title,512,256); /* init as 512 x 256 */ + + gdImageLine(im, 305,25,305,233,black); /* draw section lines */ + gdImageLine(im, 304,25,304,233,white); + gdImageLine(im, 305,130,490,130,black); + gdImageLine(im, 305,129,490,129,white); + + /* index lines? */ + if (graph_lines) + { + y1=210/(graph_lines+1); + for (i=0;i28) + { + /* format the year string */ + sprintf(maxvaltxt, "%04d", data[i].year); + gdImageString(im,gdFontSmall,ci+((i-s_mth)*cs)+(j/2)-12, + 236, (unsigned char *)maxvaltxt, black); + } + s_year=data[i].year; + } + } + + if (data[i].hit > maxval) maxval = data[i].hit; + if (data[i].files > maxval) maxval = data[i].files; + if (data[i].page > maxval) maxval = data[i].page; + } + if (maxval <= 0) maxval = 1; + sprintf(maxvaltxt, "%llu", maxval); + gdImageStringUp(im,gdFontSmall,6,26+(strlen(maxvaltxt)*6), + (unsigned char *)maxvaltxt,black); + + /* hits */ + for (i=s_mth; i2) gdImageRectangle(im, x1, y1, x2, 232, black); + } + + /* files */ + for (i=s_mth; i2) gdImageRectangle(im, x1, y1, x2, 232, black); + } + + /* pages */ + for (i=s_mth; i2) gdImageRectangle(im, x1, y1, x2, 232, black); + } + + maxval=0; + for (i=s_mth; i maxval) maxval = data[i].site; + if (data[i].visit > maxval) maxval = data[i].visit; + } + if (maxval <= 0) maxval = 1; + sprintf(maxvaltxt, "%llu", maxval); + gdImageStringUp(im, gdFontSmall,493,26+(strlen(maxvaltxt)*6), + (unsigned char *)maxvaltxt, black); + + cs = 180.0/graph_mths; cw = cs/2; + co = (48/graph_mths<1)?1:48/graph_mths; + ci = 308+((cw-co)/2); + + /* visits */ + for (i=s_mth; i2) gdImageRectangle(im, x1, y1, x2, 127, black); + } + + /* sites */ + for (i=s_mth; i2) gdImageRectangle(im, x1, y1, x2, 127, black); + } + + fmaxval=0.0; + for (i=s_mth; i fmaxval) fmaxval = data[i].xfer; + if (fmaxval <= 0.0) fmaxval = 1.0; + sprintf(maxvaltxt, "%.0f", fmaxval); + gdImageStringUp(im, gdFontSmall,493,130+(strlen(maxvaltxt)*6), + (unsigned char *)maxvaltxt,black); + + cs = 180.0/graph_mths; cw = (cs/2)+(co/2); + ci = 308+((cw-co)/2); + + /* xfer */ + for (i=s_mth; i2) gdImageRectangle(im, x1, y1, x2, 232, black); + } + + /* stat the file */ + if ( !(lstat(fname, &out_stat)) ) + { + /* check if the file a symlink */ + if ( S_ISLNK(out_stat.st_mode) ) + { + if (verbose) + fprintf(stderr,"%s %s (symlink)\n",msg_no_open,fname); + return(EBADF); + } + } + + /* save PNG image */ + if ((out = fopen(fname, "wb")) != NULL) + { + gdImagePng(im, out); + fclose(out); + } + /* deallocate memory */ + gdImageDestroy(im); + + return (0); +} + +/*****************************************************************/ +/* */ +/* MONTH_GRAPH6 - Month graph with six data sets */ +/* */ +/*****************************************************************/ + +#define YSIZE 400 + +int month_graph6( char *fname, /* filename */ + char *title, /* graph title */ + int month, /* graph month */ + int year, /* graph year */ + u_int64_t data1[31], /* data1 (hits) */ + u_int64_t data2[31], /* data2 (files) */ + u_int64_t data3[31], /* data3 (sites) */ + double data4[31], /* data4 (kbytes) */ + u_int64_t data5[31], /* data5 (views) */ + u_int64_t data6[31]) /* data6 (visits) */ +{ + + /* local variables */ + int i,j,s,x1,y1,x2; + u_int64_t maxval=0; + double fmaxval=0.0; + + /* calc julian date for month */ + julday = (jdate(1, month,year) % 7); + + /* initalize the graph */ + init_graph(title,512,400); + + gdImageLine(im, 21, 180, 490, 180, black); /* draw section lines */ + gdImageLine(im, 21, 179, 490, 179, white); + gdImageLine(im, 21, 280, 490, 280, black); + gdImageLine(im, 21, 279, 490, 279, white); + + /* index lines? */ + if (graph_lines) + { + y1=154/(graph_lines+1); + for (i=0;i maxval) maxval = data1[i]; /* get max val */ + if (data2[i] > maxval) maxval = data2[i]; + if (data5[i] > maxval) maxval = data5[i]; + } + if (maxval <= 0) maxval = 1; + sprintf(maxvaltxt, "%llu", maxval); + gdImageStringUp(im, gdFontSmall,8,26+(strlen(maxvaltxt)*6), + (unsigned char *)maxvaltxt,black); + + if (graph_legend) /* Print color coded legends? */ + { + /* Kbytes Legend */ + gdImageStringUp(im,gdFontSmall,494,376, + (unsigned char *)msg_h_xfer,dkgrey); + gdImageStringUp(im,gdFontSmall,493,375, + (unsigned char *)msg_h_xfer,KBYTECOLOR); + + /* Sites/Visits Legend */ + i = (strlen(msg_h_sites)*6); + gdImageStringUp(im,gdFontSmall,494,276, + (unsigned char *)msg_h_sites,dkgrey); + gdImageStringUp(im,gdFontSmall,493,275, + (unsigned char *)msg_h_sites,SITECOLOR); + gdImageStringUp(im,gdFontSmall,494,276-i-3,(unsigned char *)"/",dkgrey); + gdImageStringUp(im,gdFontSmall,493,275-i-3,(unsigned char *)"/",black); + gdImageStringUp(im,gdFontSmall,494,276-i-12, + (unsigned char *)msg_h_visits,dkgrey); + gdImageStringUp(im,gdFontSmall,493,275-i-12, + (unsigned char *)msg_h_visits,VISITCOLOR); + + /* Pages/Files/Hits Legend */ + s = ( i=(strlen(msg_h_pages)*6) )+ + ( j=(strlen(msg_h_files)*6) )+ + ( strlen(msg_h_hits)*6 )+ 52; + gdImageStringUp(im,gdFontSmall,494,s, + (unsigned char *)msg_h_pages,dkgrey); + gdImageStringUp(im,gdFontSmall,493,s-1, + (unsigned char *)msg_h_pages,PAGECOLOR); + gdImageStringUp(im,gdFontSmall,494,s-i-3,(unsigned char *)"/",dkgrey); + gdImageStringUp(im,gdFontSmall,493,s-i-4,(unsigned char *)"/",black); + gdImageStringUp(im,gdFontSmall,494,s-i-12, + (unsigned char *)msg_h_files,dkgrey); + gdImageStringUp(im,gdFontSmall,493,s-i-13, + (unsigned char *)msg_h_files,FILECOLOR); + gdImageStringUp(im,gdFontSmall,494,s-i-j-15,(unsigned char *)"/",dkgrey); + gdImageStringUp(im,gdFontSmall,493,s-i-j-16,(unsigned char *)"/",black); + gdImageStringUp(im,gdFontSmall,494,s-i-j-24, + (unsigned char *)msg_h_hits,dkgrey); + gdImageStringUp(im,gdFontSmall,493,s-i-j-25, + (unsigned char *)msg_h_hits,HITCOLOR); + } + + /* data1 */ + for (i=0; i<31; i++) + { + percent = ((float)data1[i] / (float)maxval); + if (percent <= 0.0) continue; + x1 = 25 + (i*15); + x2 = x1 + 7; + y1 = 176 - (percent * 147); + gdImageFilledRectangle(im, x1, y1, x2, 176, HITCOLOR); + gdImageRectangle(im, x1, y1, x2, 176, black); + } + + /* data2 */ + for (i=0; i<31; i++) + { + percent = ((float)data2[i] / (float)maxval); + if (percent <= 0.0) continue; + x1 = 27 + (i*15); + x2 = x1 + 7; + y1 = 176 - (percent * 147); + gdImageFilledRectangle(im, x1, y1, x2, 176, FILECOLOR); + gdImageRectangle(im, x1, y1, x2, 176, black); + } + + /* data5 */ + for (i=0; i<31; i++) + { + if (data5[i]==0) continue; + percent = ((float)data5[i] / (float)maxval); + if (percent <= 0.0) continue; + x1 = 29 + (i*15); + x2 = x1 + 7; + y1 = 176 - (percent * 147); + gdImageFilledRectangle(im, x1, y1, x2, 176, PAGECOLOR); + gdImageRectangle(im, x1, y1, x2, 176, black); + } + + /* sites / visits */ + maxval=0; + for (i=0; i<31; i++) + { + if (data3[i]>maxval) maxval = data3[i]; + if (data6[i]>maxval) maxval = data6[i]; + } + if (maxval <= 0) maxval = 1; + sprintf(maxvaltxt, "%llu", maxval); + gdImageStringUp(im, gdFontSmall,8,180+(strlen(maxvaltxt)*6), + (unsigned char *)maxvaltxt, black); + + /* data 6 */ + for (i=0; i<31; i++) + { + percent = ((float)data6[i] / (float)maxval); + if (percent <= 0.0) continue; + x1 = 25 + (i*15); + x2 = x1 + 8; + y1 = 276 - (percent * 92); + gdImageFilledRectangle(im, x1, y1, x2, 276, VISITCOLOR); + gdImageRectangle(im, x1, y1, x2, 276, black); + } + + /* data 3 */ + for (i=0; i<31; i++) + { + percent = ((float)data3[i] / (float)maxval); + if (percent <= 0.0) continue; + x1 = 29 + (i*15); + x2 = x1 + 7; + y1 = 276 - (percent * 92); + gdImageFilledRectangle(im, x1, y1, x2, 276, SITECOLOR); + gdImageRectangle(im, x1, y1, x2, 276, black); + } + + /* data4 */ + fmaxval=0.0; + for (i=0; i<31; i++) + if (data4[i]>fmaxval) fmaxval = data4[i]; + if (fmaxval <= 0.0) fmaxval = 1.0; + sprintf(maxvaltxt, "%.0f", fmaxval/1024); + gdImageStringUp(im, gdFontSmall,8,280+(strlen(maxvaltxt)*6), + (unsigned char *)maxvaltxt, black); + + for (i=0; i<31; i++) + { + percent = data4[i] / fmaxval; + if (percent <= 0.0) continue; + x1 = 26 + (i*15); + x2 = x1 + 10; + y1 = 375 - ( percent * 91 ); + gdImageFilledRectangle(im, x1, y1, x2, 375, KBYTECOLOR); + gdImageRectangle(im, x1, y1, x2, 375, black); + } + + /* stat the file */ + if ( !(lstat(fname, &out_stat)) ) + { + /* check if the file a symlink */ + if ( S_ISLNK(out_stat.st_mode) ) + { + if (verbose) + fprintf(stderr,"%s %s (symlink)\n",msg_no_open,fname); + return(EBADF); + } + } + + /* save PNG image */ + if ((out = fopen(fname, "wb")) != NULL) + { + gdImagePng(im, out); + fclose(out); + } + /* deallocate memory */ + gdImageDestroy(im); + + return (0); +} + +/*****************************************************************/ +/* */ +/* DAY_GRAPH3 - Day graph with three data sets */ +/* */ +/*****************************************************************/ + +int day_graph3( char *fname, + char *title, + u_int64_t data1[24], + u_int64_t data2[24], + u_int64_t data3[24]) +{ + + /* local variables */ + int i,j,s,x1,y1,x2; + u_int64_t maxval=0; + + /* initalize the graph */ + init_graph(title,512,256); + + /* index lines? */ + if (graph_lines) + { + y1=210/(graph_lines+1); + for (i=0;i maxval) maxval = data1[i]; /* get max val */ + if (data2[i] > maxval) maxval = data2[i]; + if (data3[i] > maxval) maxval = data3[i]; + } + if (maxval <= 0) maxval = 1; + sprintf(maxvaltxt, "%llu", maxval); + gdImageStringUp(im, gdFontSmall, 8, 26+(strlen(maxvaltxt)*6), + (unsigned char *)maxvaltxt, black); + + if (graph_legend) /* print color coded legends? */ + { + /* Pages/Files/Hits Legend */ + s = ( i=(strlen(msg_h_pages)*6) )+ + ( j=(strlen(msg_h_files)*6) )+ + ( strlen(msg_h_hits)*6 )+ 52; + gdImageStringUp(im,gdFontSmall,494,s, + (unsigned char *)msg_h_pages,dkgrey); + gdImageStringUp(im,gdFontSmall,493,s-1, + (unsigned char *)msg_h_pages,PAGECOLOR); + gdImageStringUp(im,gdFontSmall,494,s-i-3,(unsigned char *)"/",dkgrey); + gdImageStringUp(im,gdFontSmall,493,s-i-4,(unsigned char *)"/",black); + gdImageStringUp(im,gdFontSmall,494,s-i-12, + (unsigned char *)msg_h_files,dkgrey); + gdImageStringUp(im,gdFontSmall,493,s-i-13, + (unsigned char *)msg_h_files,FILECOLOR); + gdImageStringUp(im,gdFontSmall,494,s-i-j-15,(unsigned char *)"/",dkgrey); + gdImageStringUp(im,gdFontSmall,493,s-i-j-16,(unsigned char *)"/",black); + gdImageStringUp(im,gdFontSmall,494,s-i-j-24, + (unsigned char *)msg_h_hits,dkgrey); + gdImageStringUp(im,gdFontSmall,493,s-i-j-25, + (unsigned char *)msg_h_hits,HITCOLOR); + } + + /* data1 */ + for (i=0; i<24; i++) + { + percent = ((float)data1[i] / (float)maxval); /* percent of 100% */ + if (percent <= 0.0) continue; + x1 = 29 + (i*19); + x2 = x1 + 10; + y1 = 232 - (percent * 203); + gdImageFilledRectangle(im, x1, y1, x2, 232, HITCOLOR); + gdImageRectangle(im, x1, y1, x2, 232, black); + } + + /* data2 */ + for (i=0; i<24; i++) + { + percent = ((float)data2[i] / (float)maxval); /* percent of 100% */ + if (percent <= 0.0) continue; + x1 = 32 + (i*19); + x2 = x1 + 10; + y1 = 232 - (percent * 203); + gdImageFilledRectangle(im, x1, y1, x2, 232, FILECOLOR); + gdImageRectangle(im, x1, y1, x2, 232, black); + } + + /* data3 */ + for (i=0; i<24; i++) + { + percent = ((float)data3[i] / (float)maxval); /* percent of 100% */ + if (percent <= 0.0) continue; + x1 = 35 + (i*19); + x2 = x1 + 10; + y1 = 232 - (percent * 203); + gdImageFilledRectangle(im, x1, y1, x2, 232, PAGECOLOR); + gdImageRectangle(im, x1, y1, x2, 232, black); + } + + /* stat the file */ + if ( !(lstat(fname, &out_stat)) ) + { + /* check if the file a symlink */ + if ( S_ISLNK(out_stat.st_mode) ) + { + if (verbose) + fprintf(stderr,"%s %s (symlink)\n",msg_no_open,fname); + return(EBADF); + } + } + + /* save PNG image */ + if ((out = fopen(fname, "wb")) != NULL) + { + gdImagePng(im, out); + fclose(out); + } + /* deallocate memory */ + gdImageDestroy(im); + + return (0); +} + +/*****************************************************************/ +/* */ +/* PIE_CHART - draw a pie chart (10 data items max) */ +/* */ +/*****************************************************************/ + +int pie_chart(char *fname, char *title, u_int64_t t_val, + u_int64_t data1[], char *legend[]) +{ + int i,x,percent,y=47; + double s_arc=0.0; + int purple_or_pie1, ltgreen_or_pie2, ltpurple_or_pie3, brown_or_pie4; + int r, g, b; + char buffer[128]; + + struct pie_data gdata; + + /* init graph and colors */ + init_graph(title,512,300); + r=getred(pie_color1); g=getgreen(pie_color1); b=getblue(pie_color1); + purple_or_pie1 = gdImageColorAllocate(im, r, g, b); + r=getred(pie_color2); g=getgreen(pie_color2); b=getblue(pie_color2); + ltgreen_or_pie2 = gdImageColorAllocate(im, r, g, b); + r=getred(pie_color3); g=getgreen(pie_color3); b=getblue(pie_color3); + ltpurple_or_pie3= gdImageColorAllocate(im, r, g, b); + r=getred(pie_color4); g=getgreen(pie_color4); b=getblue(pie_color4); + brown_or_pie4 = gdImageColorAllocate(im, r, g, b); + + /* do the circle... */ + gdImageArc(im, CX, CY, XRAD, YRAD, 0, 360, black); + gdImageArc(im, CX, CY+10, XRAD-2, YRAD-2, 2, 178, black); + gdImageFillToBorder(im, CX, CY+(YRAD/2)+1, black, black); + + /* slice the pie */ + gdata=*calc_arc(0.0,0.0); + gdImageLine(im,CX,CY,gdata.x,gdata.y,black); /* inital line */ + + for (i=0;i<10;i++) /* run through data array */ + { + if ((data1[i]!=0)&&(s_arc<1.0)) /* make sure valid slice */ + { + percent=(((double)data1[i]/t_val)+0.005)*100.0; + if (percent<1) break; + + if (s_arc+((double)percent/100.0)>=1.0) + { + gdata=*calc_arc(s_arc,1.0); + s_arc=1.0; + } + else + { + gdata=*calc_arc(s_arc,s_arc+((double)percent/100.0)); + s_arc+=(double)percent/100.0; + } + + gdImageLine(im, CX, CY, gdata.x, gdata.y, black); + gdImageFill(im, gdata.mx, gdata.my, i+5); + + snprintf(buffer,sizeof(buffer),"%s (%d%%)",legend[i], percent); + x=480-(strlen(buffer)*7); + gdImageString(im,gdFontMediumBold, x+1, y+1, + (unsigned char *)buffer, black); + gdImageString(im,gdFontMediumBold, x, y, + (unsigned char *)buffer, i+5); + y+=20; + } + } + + if (s_arc < 1.0) /* anything left over? */ + { + gdata=*calc_arc(s_arc,1.0); + + gdImageFill(im, gdata.mx, gdata.my, white); + snprintf(buffer,sizeof(buffer),"%s (%d%%)", + msg_h_other,100-(int)(s_arc*100)); + x=480-(strlen(buffer)*7); + gdImageString(im,gdFontMediumBold, x+1, y+1, + (unsigned char *)buffer, black); + gdImageString(im,gdFontMediumBold, x, y, + (unsigned char *)buffer, white); + } + + /* stat the file */ + if ( !(lstat(fname, &out_stat)) ) + { + /* check if the file a symlink */ + if ( S_ISLNK(out_stat.st_mode) ) + { + if (verbose) + fprintf(stderr,"%s %s (symlink)\n",msg_no_open,fname); + return(EBADF); + } + } + + /* save PNG image */ + if ((out = fopen(fname, "wb")) != NULL) + { + gdImagePng(im, out); + fclose(out); + } + /* deallocate memory */ + gdImageDestroy(im); + + return (0); +} + +/*****************************************************************/ +/* */ +/* CALC_ARC - generate x,y coordinates for pie chart */ +/* */ +/*****************************************************************/ + +struct pie_data *calc_arc(float min, float max) +{ + static struct pie_data data; + double d; + + /* Calculate max line */ + d=max; + data.x=cos(d*(2*PI))*((XRAD-2)/2)+CX; + data.y=sin(d*(2*PI))*((YRAD-2)/2)+CY; + /* Now get mid-point */ + d=((min+max)/2); + data.mx=cos(d*(2*PI))*(XRAD/3)+CX; + data.my=sin(d*(2*PI))*(YRAD/3)+CY; + return &data; +} + +/*****************************************************************/ +/* */ +/* INIT_GRAPH - initalize graph and draw borders */ +/* */ +/*****************************************************************/ + +void init_graph(char *title, int xsize, int ysize) +{ + int i, r, g, b; + + im = gdImageCreate(xsize,ysize); + + /* allocate color maps, background color first (grey) */ + grey = gdImageColorAllocate(im, 192, 192, 192); + dkgrey = gdImageColorAllocate(im, 128, 128, 128); + black = gdImageColorAllocate(im, 0, 0, 0); + white = gdImageColorAllocate(im, 255, 255, 255); + blue = gdImageColorAllocate(im, 0, 0, 255); + r=getred(hit_color); g=getgreen(hit_color); b=getblue(hit_color); + hit_or_green = gdImageColorAllocate(im, r, g, b); + r=getred(site_color); g=getgreen(site_color); b=getblue(site_color); + site_or_orange = gdImageColorAllocate(im, r, g, b); + r=getred(file_color); g=getgreen(file_color); b=getblue(file_color); + file_or_blue = gdImageColorAllocate(im, r, g, b); + r=getred(kbyte_color); g=getgreen(kbyte_color); b=getblue(kbyte_color); + kbyte_or_red = gdImageColorAllocate(im, r, g, b); + r=getred(page_color); g=getgreen(page_color); b=getblue(page_color); + page_or_cyan = gdImageColorAllocate(im, r, g, b); + r=getred(visit_color); g=getgreen(visit_color); b=getblue(visit_color); + visit_or_yellow = gdImageColorAllocate(im, r, g, b); + + /* black outside border */ + gdImageRectangle(im, 0, 0, xsize-1, ysize-1, black); + + /* do shadow effect (bevel) border */ + for (i=1; i<5 ;i++) + { + gdImageLine(im, i, i, xsize-i-2, i, white); + gdImageLine(im, i, i, i, ysize-i-2, white); + gdImageLine(im, i+1, ysize-i-1, xsize-i-1, ysize-i-1, dkgrey); + gdImageLine(im, xsize-i-1, i+1, xsize-i-1, ysize-i-1, dkgrey); + } + + /* generic inside shadow box */ + gdImageRectangle(im, 20, 25, xsize-21, ysize-21, black); + gdImageRectangle(im, 19, 24, xsize-22, ysize-22, white); + + /* display the graph title */ + gdImageString(im, gdFontMediumBold, 20, 8, + (unsigned char *)title, blue); + + return; +} + +/****************************************************************/ +/* */ +/* ASHEX2INT - ASCII HEX TO INT CONVERTER */ +/* */ +/****************************************************************/ + +int ashex2int(char *str) +{ + /* returns base-10 integer value from a 2 ASCII hex number */ + return from_hex(str[1])+(from_hex(str[0])*16); +} diff --git a/graphs.h b/graphs.h new file mode 100644 index 0000000..b75daa5 --- /dev/null +++ b/graphs.h @@ -0,0 +1,10 @@ +#ifndef _GRAPHS_H +#define _GRAPHS_H + +extern int month_graph6(char *, char *, int, int, u_int64_t *, + u_int64_t *, u_int64_t *, double *, u_int64_t *, u_int64_t *); +extern int year_graph6x(char *, char *, struct hist_rec *); +extern int day_graph3(char *, char *, u_int64_t *, u_int64_t *, u_int64_t *); +extern int pie_chart(char *, char *, u_int64_t, u_int64_t *, char **); + +#endif /* _GRAPHS_H */ diff --git a/hashtab.c b/hashtab.c new file mode 100644 index 0000000..af33591 --- /dev/null +++ b/hashtab.c @@ -0,0 +1,1284 @@ +/* + webalizer - a web server log analysis program + + Copyright (C) 1997-2011 Bradford L. Barrett + + This program 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 2 of the License, or + (at your option) any later version, and provided that the above + copyright and permission notice is included with all distributed + copies of this or derived software. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +*/ + +/*********************************************/ +/* STANDARD INCLUDES */ +/*********************************************/ + +#include +#include +#include +#include +#include /* normal stuff */ +#include +#include + +/* ensure sys/types */ +#ifndef _SYS_TYPES_H +#include +#endif + +/* some need for uint* */ +#ifdef HAVE_STDINT_H +#include +#endif + +/* need socket header? */ +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +/* some systems need this */ +#ifdef HAVE_MATH_H +#include +#endif + +#include "webalizer.h" /* main header */ +#include "lang.h" +#include "linklist.h" +#include "hashtab.h" + +/* internal function prototypes */ + +HNODEPTR new_hnode(char *); /* new host node */ +UNODEPTR new_unode(char *); /* new url node */ +RNODEPTR new_rnode(char *); /* new referrer node */ +ANODEPTR new_anode(char *); /* new user agent node */ +SNODEPTR new_snode(char *); /* new search string.. */ +INODEPTR new_inode(char *); /* new ident node */ +#ifdef USE_DNS +DNODEPTR new_dnode(char *); /* new DNS node */ +#endif /* USE_DNS */ + +void update_entry(char *); /* update entry/exit */ +void update_exit(char *); /* page totals */ + +unsigned int hash(char *); /* hash function */ + +/* local data */ + +HNODEPTR sm_htab[MAXHASH]; /* hash tables */ +HNODEPTR sd_htab[MAXHASH]; +UNODEPTR um_htab[MAXHASH]; /* for hits, sites, */ +RNODEPTR rm_htab[MAXHASH]; /* referrers and agents... */ +ANODEPTR am_htab[MAXHASH]; +SNODEPTR sr_htab[MAXHASH]; /* search string table */ +INODEPTR im_htab[MAXHASH]; /* ident table (username) */ +#ifdef USE_DNS +DNODEPTR host_table[MAXHASH]; /* DNS hash table */ +#endif /* USE_DNS */ + +/* Last node pointers */ +HNODEPTR lm_hnode=NULL; +HNODEPTR ld_hnode=NULL; +RNODEPTR l_rnode=NULL; + +/*********************************************/ +/* DEL_HTABS - clear out our hash tables */ +/*********************************************/ + +void del_htabs() +{ + del_hlist(sd_htab); /* Clear out our various */ + del_ulist(um_htab); /* hash tables here by */ + del_hlist(sm_htab); /* calling the appropriate */ + del_rlist(rm_htab); /* del_* fuction for each */ + del_alist(am_htab); + del_slist(sr_htab); + del_ilist(im_htab); +#ifdef USE_DNS +/* del_dlist(host_table); */ /* delete DNS hash table */ +#endif /* USE_DNS */ +} + +/*********************************************/ +/* NEW_HNODE - create host node */ +/*********************************************/ + +HNODEPTR new_hnode(char *str) +{ + HNODEPTR newptr; + char *sptr; + + if (strlen(str) >= MAXHOST) + { + if (verbose) + { + fprintf(stderr,"[new_hnode] %s (%d)",msg_big_one,strlen(str)); + if (debug_mode) + fprintf(stderr,":\n--> %s",str); + fprintf(stderr,"\n"); + } + str[MAXHOST-1]=0; + } + + if ( (sptr=malloc(strlen(str)+1))==NULL ) return (HNODEPTR)NULL; + strcpy(sptr,str); + + if (( newptr = malloc(sizeof(struct hnode))) != NULL) + { + newptr->string =sptr; + newptr->visit =0; + newptr->tstamp =0; + newptr->lasturl =blank_str; + } + else free(sptr); + return newptr; +} + +/*********************************************/ +/* PUT_HNODE - insert/update host node */ +/*********************************************/ + +int put_hnode( char *str, /* Hostname */ + int type, /* obj type */ + u_int64_t count, /* hit count */ + u_int64_t file, /* File flag */ + double xfer, /* xfer size */ + u_int64_t *ctr, /* counter */ + u_int64_t visit, /* visits */ + u_int64_t tstamp,/* timestamp */ + char *lasturl, /* lasturl */ + HNODEPTR *htab) /* ptr>next */ +{ + HNODEPTR cptr,nptr; + unsigned int hval; + + /* check if hashed */ + hval=hash(str); + if ( (cptr = htab[hval]) == NULL) + { + /* not hashed */ + if ( (nptr=new_hnode(str)) != NULL) + { + if (htab==sm_htab) lm_hnode=nptr; + else ld_hnode=nptr; + nptr->flag = type; + nptr->count = count; + nptr->files = file; + nptr->xfer = xfer; + nptr->next = NULL; + htab[hval] = nptr; + if (type!=OBJ_GRP) (*ctr)++; + + if (visit) + { + nptr->visit=(visit-1); + nptr->lasturl=find_url(lasturl); + nptr->tstamp=tstamp; + return 0; + } + else + { + if (ispage(log_rec.url)) + { + if (htab==sm_htab) update_entry(log_rec.url); + nptr->lasturl=find_url(log_rec.url); + nptr->tstamp=tstamp; + nptr->visit=1; + } + } + } + } + else + { + /* hashed (SPEEDUP) */ + if (htab==sm_htab) + { + if (lm_hnode!=NULL && strcmp(lm_hnode->string,str)==0) cptr=lm_hnode; + } + else + { + if (ld_hnode!=NULL && strcmp(ld_hnode->string,str)==0) cptr=ld_hnode; + } + + while (cptr != NULL) + { + if (strcmp(cptr->string,str)==0) + { + if ((type==cptr->flag)||((type!=OBJ_GRP)&&(cptr->flag!=OBJ_GRP))) + { + /* found... bump counter */ + cptr->count+=count; + cptr->files+=file; + cptr->xfer +=xfer; + + if (ispage(log_rec.url)) + { + if ((tstamp-cptr->tstamp)>=visit_timeout) + { + cptr->visit++; + if (htab==sm_htab) + { + update_exit(cptr->lasturl); + update_entry(log_rec.url); + } + } + cptr->lasturl=find_url(log_rec.url); + cptr->tstamp=tstamp; + } + if (htab==sm_htab) lm_hnode=cptr; + else ld_hnode=cptr; + return 0; + } + } + cptr = cptr->next; + } + /* not found... */ + if ( (nptr = new_hnode(str)) != NULL) + { + if (htab==sm_htab) lm_hnode=nptr; + else ld_hnode=nptr; + nptr->flag = type; + nptr->count = count; + nptr->files = file; + nptr->xfer = xfer; + nptr->next = htab[hval]; + htab[hval]=nptr; + if (type!=OBJ_GRP) (*ctr)++; + + if (visit) + { + nptr->visit = (visit-1); + nptr->lasturl=find_url(lasturl); + nptr->tstamp= tstamp; + return 0; + } + else + { + if (ispage(log_rec.url)) + { + if (htab==sm_htab) update_entry(log_rec.url); + nptr->lasturl=find_url(log_rec.url); + nptr->tstamp= tstamp; + nptr->visit=1; + } + } + } + } + + if (nptr!=NULL) + { + /* set object type */ + if (type==OBJ_GRP) nptr->flag=OBJ_GRP; /* is it a grouping? */ + else + { + /* check if it's a hidden object */ + if ((hide_sites)||(isinlist(hidden_sites,nptr->string)!=NULL)) + nptr->flag=OBJ_HIDE; + if (htab==sm_htab) lm_hnode=nptr; + else ld_hnode=nptr; + } + } + return nptr==NULL; +} + +/*********************************************/ +/* DEL_HLIST - delete host hash table */ +/*********************************************/ + +void del_hlist(HNODEPTR *htab) +{ + /* free memory used by hash table */ + HNODEPTR aptr,temp; + int i; + + for (i=0;inext; + free (aptr->string); /* free hostname string space */ + free (aptr); /* free hostname structure */ + aptr = temp; + } + htab[i]=NULL; + } + } + lm_hnode=NULL; + ld_hnode=NULL; +} + +/*********************************************/ +/* NEW_UNODE - URL node creation */ +/*********************************************/ + +UNODEPTR new_unode(char *str) +{ + UNODEPTR newptr; + char *sptr; + + if (strlen(str) >= MAXURLH) + { + if (verbose) + { + fprintf(stderr,"[new_unode] %s (%d)",msg_big_one,strlen(str)); + if (debug_mode) + fprintf(stderr,":\n--> %s",str); + fprintf(stderr,"\n"); + } + str[MAXURLH-1]=0; + } + + if ( (sptr=malloc(strlen(str)+1))==NULL) return (UNODEPTR)NULL; + strcpy(sptr,str); + + if (( newptr = malloc(sizeof(struct unode))) != NULL) + { + newptr->string=sptr; + newptr->count = 0; + newptr->flag = OBJ_REG; + } + else free(sptr); + return newptr; +} + +/*********************************************/ +/* PUT_UNODE - insert/update URL node */ +/*********************************************/ + +int put_unode(char *str, int type, u_int64_t count, double xfer, + u_int64_t *ctr, u_int64_t entry, u_int64_t exit, UNODEPTR *htab) +{ + UNODEPTR cptr,nptr; + unsigned int hval; + + if (str[0]=='-') return 0; + + hval = hash(str); + /* check if hashed */ + if ( (cptr = htab[hval]) == NULL) + { + /* not hashed */ + if ( (nptr=new_unode(str)) != NULL) + { + nptr->flag = type; + nptr->count= count; + nptr->xfer = xfer; + nptr->next = NULL; + nptr->entry= entry; + nptr->exit = exit; + htab[hval] = nptr; + if (type!=OBJ_GRP) (*ctr)++; + } + } + else + { + /* hashed */ + while (cptr != NULL) + { + if (strcmp(cptr->string,str)==0) + { + if ((type==cptr->flag)||((type!=OBJ_GRP)&&(cptr->flag!=OBJ_GRP))) + { + /* found... bump counter */ + cptr->count+=count; + cptr->xfer += xfer; + return 0; + } + } + cptr = cptr->next; + } + /* not found... */ + if ( (nptr = new_unode(str)) != NULL) + { + nptr->flag = type; + nptr->count= count; + nptr->xfer = xfer; + nptr->next = htab[hval]; + nptr->entry= entry; + nptr->exit = exit; + htab[hval] = nptr; + if (type!=OBJ_GRP) (*ctr)++; + } + } + if (nptr!=NULL) + { + if (type==OBJ_GRP) nptr->flag=OBJ_GRP; + else if (isinlist(hidden_urls,nptr->string)!=NULL) + nptr->flag=OBJ_HIDE; + } + return nptr==NULL; +} + +/*********************************************/ +/* DEL_ULIST - delete URL hash table */ +/*********************************************/ + +void del_ulist(UNODEPTR *htab) +{ + /* free memory used by hash table */ + UNODEPTR aptr,temp; + int i; + + for (i=0;inext; + free (aptr->string); /* free up URL string memory */ + free (aptr); /* free up URL struct node */ + aptr = temp; + } + htab[i]=NULL; + } + } +} + +/*********************************************/ +/* NEW_RNODE - Referrer node creation */ +/*********************************************/ + +RNODEPTR new_rnode(char *str) +{ + RNODEPTR newptr; + char *sptr; + + if (strlen(str) >= MAXREFH) + { + if (verbose) + { + fprintf(stderr,"[new_rnode] %s (%d)",msg_big_one,strlen(str)); + if (debug_mode) + fprintf(stderr,":\n--> %s",str); + fprintf(stderr,"\n"); + } + str[MAXREFH-1]=0; + } + + if ( (sptr=malloc(strlen(str)+1))==NULL ) return (RNODEPTR)NULL; + strcpy(sptr,str); + + if (( newptr = malloc(sizeof(struct rnode))) != NULL) + { + newptr->string= sptr; + newptr->count = 1; + newptr->flag = OBJ_REG; + } + else free(sptr); + return newptr; +} + +/*********************************************/ +/* PUT_RNODE - insert/update referrer node */ +/*********************************************/ + +int put_rnode(char *str, int type, u_int64_t count, + u_int64_t *ctr, RNODEPTR *htab) +{ + RNODEPTR cptr,nptr; + unsigned int hval; + + if (str[0]=='-') strcpy(str,"- (Direct Request)"); + + hval = hash(str); + /* check if hashed */ + if ( (cptr = htab[hval]) == NULL) + { + /* not hashed */ + if ( (nptr=new_rnode(str)) != NULL) + { + nptr->flag = type; + nptr->count = count; + nptr->next = NULL; + htab[hval] = nptr; + if (type!=OBJ_GRP) (*ctr)++; + } + } + else + { + /* hashed (SPEEDUP) */ + if (l_rnode!=NULL && strcmp(l_rnode->string,str)==0) cptr=l_rnode; + + while (cptr != NULL) + { + if (strcmp(cptr->string,str)==0) + { + if ((type==cptr->flag)||((type!=OBJ_GRP)&&(cptr->flag!=OBJ_GRP))) + { + /* found... bump counter */ + cptr->count+=count; + return 0; + } + } + cptr = cptr->next; + } + /* not found... */ + if ( (nptr = new_rnode(str)) != NULL) + { + nptr->flag = type; + nptr->count = count; + nptr->next = htab[hval]; + htab[hval] = nptr; + if (type!=OBJ_GRP) (*ctr)++; + } + } + if (nptr!=NULL) + { + if (type==OBJ_GRP) nptr->flag=OBJ_GRP; + else if (isinlist(hidden_refs,nptr->string)!=NULL) + nptr->flag=OBJ_HIDE; + l_rnode=nptr; + } + return nptr==NULL; +} + +/*********************************************/ +/* DEL_RLIST - delete referrer hash table */ +/*********************************************/ + +void del_rlist(RNODEPTR *htab) +{ + /* free memory used by hash table */ + RNODEPTR aptr,temp; + int i; + + for (i=0;inext; + free (aptr->string); + free (aptr); + aptr = temp; + } + htab[i]=NULL; + } + } + l_rnode=NULL; +} + +/*********************************************/ +/* NEW_ANODE - User Agent node creation */ +/*********************************************/ + +ANODEPTR new_anode(char *str) +{ + ANODEPTR newptr; + char *sptr; + + if (strlen(str) >= MAXAGENT) + { + if (verbose) + { + fprintf(stderr,"[new_anode] %s (%d)",msg_big_one,strlen(str)); + if (debug_mode) + fprintf(stderr,":\n--> %s",str); + fprintf(stderr,"\n"); + } + str[MAXAGENT-1]=0; + } + + if ( (sptr=malloc(strlen(str)+1))==NULL ) return (ANODEPTR)NULL; + strcpy(sptr,str); + + if (( newptr = malloc(sizeof(struct anode))) != NULL) + { + newptr->string= sptr; + newptr->count = 1; + newptr->flag = OBJ_REG; + } + else free(sptr); + return newptr; +} + +/*********************************************/ +/* PUT_ANODE - insert/update user agent node */ +/*********************************************/ + +int put_anode(char *str, int type, u_int64_t count, + u_int64_t *ctr, ANODEPTR *htab) +{ + ANODEPTR cptr,nptr; + unsigned int hval; + + if (str[0]=='-') return 0; /* skip bad user agents */ + + hval = hash(str); + /* check if hashed */ + if ( (cptr = htab[hval]) == NULL) + { + /* not hashed */ + if ( (nptr=new_anode(str)) != NULL) + { + nptr->flag = type; + nptr->count= count; + nptr->next = NULL; + htab[hval] = nptr; + if (type!=OBJ_GRP) (*ctr)++; + } + } + else + { + /* hashed */ + while (cptr != NULL) + { + if (strcmp(cptr->string,str)==0) + { + if ((type==cptr->flag)||((type!=OBJ_GRP)&&(cptr->flag!=OBJ_GRP))) + { + /* found... bump counter */ + cptr->count+=count; + return 0; + } + } + cptr = cptr->next; + } + /* not found... */ + if ( (nptr = new_anode(str)) != NULL) + { + nptr->flag = type; + nptr->count = count; + nptr->next = htab[hval]; + htab[hval] = nptr; + if (type!=OBJ_GRP) (*ctr)++; + } + } + if (type==OBJ_GRP) nptr->flag=OBJ_GRP; + else if (isinlist(hidden_agents,nptr->string)!=NULL) + nptr->flag=OBJ_HIDE; + return nptr==NULL; +} + +/*********************************************/ +/* DEL_ALIST - delete user agent hash table */ +/*********************************************/ + +void del_alist(ANODEPTR *htab) +{ + /* free memory used by hash table */ + ANODEPTR aptr,temp; + int i; + + for (i=0;inext; + free (aptr->string); + free (aptr); + aptr = temp; + } + htab[i]=NULL; + } + } +} + +/*********************************************/ +/* NEW_SNODE - Search str node creation */ +/*********************************************/ + +SNODEPTR new_snode(char *str) +{ + SNODEPTR newptr; + char *sptr; + + if (strlen(str) >= MAXSRCHH) + { + if (verbose) + { + fprintf(stderr,"[new_snode] %s (%d)",msg_big_one,strlen(str)); + if (debug_mode) + fprintf(stderr,":\n--> %s",str); + fprintf(stderr,"\n"); + } + str[MAXSRCHH-1]=0; + } + + if ( (sptr=malloc(strlen(str)+1))==NULL ) return (SNODEPTR)NULL; + strcpy(sptr,str); + + if (( newptr = malloc(sizeof(struct snode))) != NULL) + { + newptr->string= sptr; + newptr->count = 1; + } + else free(sptr); + return newptr; +} + +/*********************************************/ +/* PUT_SNODE - insert/update search str node */ +/*********************************************/ + +int put_snode(char *str, u_int64_t count, SNODEPTR *htab) +{ + SNODEPTR cptr,nptr; + unsigned int hval; + + if (str[0]==0 || str[0]==' ') return 0; /* skip bad search strs */ + + hval=hash(str); + /* check if hashed */ + if ( (cptr = htab[hval]) == NULL) + { + /* not hashed */ + if ( (nptr=new_snode(str)) != NULL) + { + nptr->count = count; + nptr->next = NULL; + htab[hval] = nptr; + } + } + else + { + /* hashed */ + while (cptr != NULL) + { + if (strcmp(cptr->string,str)==0) + { + /* found... bump counter */ + cptr->count+=count; + return 0; + } + cptr = cptr->next; + } + /* not found... */ + if ( (nptr = new_snode(str)) != NULL) + { + nptr->count = count; + nptr->next = htab[hval]; + htab[hval] = nptr; + } + } + return nptr==NULL; +} + +/*********************************************/ +/* DEL_SLIST - delete search str hash table */ +/*********************************************/ + +void del_slist(SNODEPTR *htab) +{ + /* free memory used by hash table */ + SNODEPTR aptr,temp; + int i; + + for (i=0;inext; + free (aptr->string); + free (aptr); + aptr = temp; + } + htab[i]=NULL; + } + } +} + +/*********************************************/ +/* NEW_INODE - create ident (username) node */ +/*********************************************/ + +INODEPTR new_inode(char *str) +{ + INODEPTR newptr; + char *sptr; + + if (strlen(str) >= MAXIDENT) + { + if (verbose) + { + fprintf(stderr,"[new_inode] %s (%d)",msg_big_one,strlen(str)); + if (debug_mode) + fprintf(stderr,":\n--> %s",str); + fprintf(stderr,"\n"); + } + str[MAXIDENT-1]=0; + } + + if ( (sptr=malloc(strlen(str)+1))==NULL ) return (INODEPTR)NULL; + strcpy(sptr,str); + + if (( newptr = malloc(sizeof(struct inode))) != NULL) + { + newptr->string =sptr; + newptr->visit =1; + newptr->tstamp =0; + } + else free(sptr); + return newptr; +} + +/*********************************************/ +/* PUT_INODE - insert/update ident node */ +/*********************************************/ + +int put_inode( char *str, /* ident str */ + int type, /* obj type */ + u_int64_t count, /* hit count */ + u_int64_t file, /* File flag */ + double xfer, /* xfer size */ + u_int64_t *ctr, /* counter */ + u_int64_t visit, /* visits */ + u_int64_t tstamp,/* timestamp */ + INODEPTR *htab) /* hashtable */ +{ + INODEPTR cptr,nptr; + unsigned int hval; + + if ((str[0]=='-') || (str[0]==0)) return 0; /* skip if no username */ + + hval = hash(str); + /* check if hashed */ + if ( (cptr = htab[hval]) == NULL) + { + /* not hashed */ + if ( (nptr=new_inode(str)) != NULL) + { + nptr->flag = type; + nptr->count = count; + nptr->files = file; + nptr->xfer = xfer; + nptr->next = NULL; + htab[hval] = nptr; + if (type!=OBJ_GRP) (*ctr)++; + + if (visit) + { + nptr->visit=(visit-1); + nptr->tstamp=tstamp; + return 0; + } + else + { + if (ispage(log_rec.url)) nptr->tstamp=tstamp; + } + } + } + else + { + /* hashed */ + while (cptr != NULL) + { + if (strcmp(cptr->string,str)==0) + { + if ((type==cptr->flag)||((type!=OBJ_GRP)&&(cptr->flag!=OBJ_GRP))) + { + /* found... bump counter */ + cptr->count+=count; + cptr->files+=file; + cptr->xfer +=xfer; + + if (ispage(log_rec.url)) + { + if ((tstamp-cptr->tstamp)>=visit_timeout) + cptr->visit++; + cptr->tstamp=tstamp; + } + return 0; + } + } + cptr = cptr->next; + } + /* not found... */ + if ( (nptr = new_inode(str)) != NULL) + { + nptr->flag = type; + nptr->count = count; + nptr->files = file; + nptr->xfer = xfer; + nptr->next = htab[hval]; + htab[hval] = nptr; + if (type!=OBJ_GRP) (*ctr)++; + + if (visit) + { + nptr->visit = (visit-1); + nptr->tstamp= tstamp; + return 0; + } + else + { + if (ispage(log_rec.url)) nptr->tstamp= tstamp; + } + } + } + + if (nptr!=NULL) + { + /* set object type */ + if (type==OBJ_GRP) nptr->flag=OBJ_GRP; /* is it a grouping? */ + else + { + /* check if it's a hidden object */ + if (isinlist(hidden_users,nptr->string)!=NULL) + nptr->flag=OBJ_HIDE; + } + } + return nptr==NULL; +} + +/*********************************************/ +/* DEL_ILIST - delete ident hash table */ +/*********************************************/ + +void del_ilist(INODEPTR *htab) +{ + /* free memory used by hash table */ + INODEPTR aptr,temp; + int i; + + for (i=0;inext; + free (aptr->string); /* free ident string space */ + free (aptr); /* free ident structure */ + aptr = temp; + } + htab[i]=NULL; + } + } +} + +#ifdef USE_DNS /* only add these for DNS */ + +/*********************************************/ +/* NEW_DNODE - DNS resolver node creation */ +/*********************************************/ + +DNODEPTR new_dnode(char *str) +{ + DNODEPTR newptr; + char *sptr; + + if (strlen(str) >= MAXHOST) + { + if (verbose) + { + fprintf(stderr,"[new_dnode] %s (%d)",msg_big_one,strlen(str)); + if (debug_mode) + fprintf(stderr,":\n--> %s",str); + fprintf(stderr,"\n"); + } + str[MAXHOST-1]=0; + } + + if ( (sptr=malloc(strlen(str)+1))==NULL ) return (DNODEPTR)NULL; + strcpy(sptr,str); + + if (( newptr = malloc(sizeof(struct dnode))) != NULL) + { + newptr->string= sptr; + } + else free(sptr); + return newptr; +} + +/*********************************************/ +/* PUT_DNODE - insert/update dns host node */ +/*********************************************/ + +int put_dnode(char *str, void *addr, int len, DNODEPTR *htab) +{ + DNODEPTR cptr,nptr; + unsigned int hval; + + if (str[0]==0 || str[0]==' ') return 0; /* skip bad hostnames */ + + hval = hash(str); + /* check if hashed */ + if ( (cptr = htab[hval]) == NULL) + { + /* not hashed */ + if ( (nptr=new_dnode(str)) != NULL) + { + if (addr) memcpy(&nptr->addr, addr, len); + else memset(&nptr->addr, 0, sizeof(struct sockaddr_storage)); + nptr->addrlen = len; + nptr->next = NULL; + htab[hval] = nptr; + } + } + else + { + /* hashed */ + while (cptr != NULL) + { + if (strcmp(cptr->string,str)==0) return 0; + cptr = cptr->next; + } + /* not found... */ + if ( (nptr = new_dnode(str)) != NULL) + { + if (addr) memcpy(&nptr->addr, addr, len); + else memset(&nptr->addr, 0, sizeof(struct sockaddr_storage)); + nptr->addrlen = len; + nptr->next = htab[hval]; + htab[hval] = nptr; + } + } + return nptr==NULL; +} + +/*********************************************/ +/* DEL_DLIST - delete dns hash table */ +/*********************************************/ + +void del_dlist(DNODEPTR *htab) +{ + /* free memory used by hash table */ + DNODEPTR dptr,temp; + int i; + + for (i=0;inext; + free (dptr->string); + free (dptr); + dptr = temp; + } + htab[i]=NULL; + } + } +} + +#endif /* USE_DNS */ + +/*********************************************/ +/* FIND_URL - Find URL in hash table */ +/*********************************************/ + +char *find_url(char *str) +{ + UNODEPTR cptr; + + if ( (cptr=um_htab[hash(str)]) != NULL) + { + while (cptr != NULL) + { + if (strcmp(cptr->string,str)==0) + return cptr->string; + cptr = cptr->next; + } + } + return blank_str; /* shouldn't get here */ +} + +/*********************************************/ +/* UPDATE_ENTRY - update entry page total */ +/*********************************************/ + +void update_entry(char *str) +{ + UNODEPTR uptr; + + if (str==NULL) return; + if ( (uptr = um_htab[hash(str)]) == NULL) return; + else + { + while (uptr != NULL) + { + if (strcmp(uptr->string,str)==0) + { + if (uptr->flag!=OBJ_GRP) + { + uptr->entry++; + return; + } + } + uptr=uptr->next; + } + } +} + +/*********************************************/ +/* UPDATE_EXIT - update exit page total */ +/*********************************************/ + +void update_exit(char *str) +{ + UNODEPTR uptr; + + if (str==NULL) return; + if ( (uptr = um_htab[hash(str)]) == NULL) return; + else + { + while (uptr != NULL) + { + if (strcmp(uptr->string,str)==0) + { + if (uptr->flag!=OBJ_GRP) + { + uptr->exit++; + return; + } + } + uptr=uptr->next; + } + } +} + +/*********************************************/ +/* MONTH_UPDATE_EXIT - eom exit page update */ +/*********************************************/ + +void month_update_exit(u_int64_t tstamp) +{ + HNODEPTR nptr; + int i; + + for (i=0;iflag!=OBJ_GRP) + { + if ((tstamp-nptr->tstamp)>=visit_timeout) + update_exit(nptr->lasturl); + } + nptr=nptr->next; + } + } +} + +/*********************************************/ +/* TOT_VISIT - calculate total visits */ +/*********************************************/ + +u_int64_t tot_visit(HNODEPTR *list) +{ + HNODEPTR hptr; + u_int64_t tot=0; + int i; + + for (i=0;iflag!=OBJ_GRP) tot+=hptr->visit; + hptr=hptr->next; + } + } + return tot; +} + +#ifdef USE_OLDHASH +/*********************************************/ +/* HASH - return hash value for string */ +/*********************************************/ + +unsigned int hash(char *str) +{ + uint32_t hashval=0; + + for (hashval = 0; *str != '\0'; str++) + hashval = *str + (hashval << 5) - hashval; + + return hashval % MAXHASH; +} + +#else /* USE_OLDHASH */ +/*********************************************/ +/* HASH (SuperFastHash by Paul Hsieh) */ +/*********************************************/ + +#undef get16bits +#if (defined(__GNUC__) && defined(__i386__)) || defined(__WATCOMC__) \ + || defined(_MSC_VER) || defined (__BORLANDC__) || defined (__TURBOC__) +#define get16bits(d) (*((const uint16_t *) (d))) +#endif + +#if !defined (get16bits) +#define get16bits(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)\ + +(uint32_t)(((const uint8_t *)(d))[0]) ) +#endif + +unsigned int hash(char *str) +{ + int len=strlen(str); + uint32_t hash = len, tmp; + int rem; + + if (len <= 0 || str == NULL) return 0; + + rem = len & 3; + len >>= 2; + + /* Main loop */ + for (;len > 0; len--) + { + hash += get16bits (str); + tmp = (get16bits (str+2) << 11) ^ hash; + hash = (hash << 16) ^ tmp; + str += 2*sizeof (uint16_t); + hash += hash >> 11; + } + + /* Handle end cases */ + switch (rem) + { + case 3: hash += get16bits (str); + hash ^= hash << 16; + hash ^= str[sizeof (uint16_t)] << 18; + hash += hash >> 11; + break; + case 2: hash += get16bits (str); + hash ^= hash << 11; + hash += hash >> 17; + break; + case 1: hash += *str; + hash ^= hash << 10; + hash += hash >> 1; + } + + /* Force "avalanching" of final 127 bits */ + hash ^= hash << 3; + hash += hash >> 5; + hash ^= hash << 4; + hash += hash >> 17; + hash ^= hash << 25; + hash += hash >> 6; + + return hash % MAXHASH; +} +#endif /* USE_OLDHASH */ diff --git a/hashtab.h b/hashtab.h new file mode 100644 index 0000000..df5d3cf --- /dev/null +++ b/hashtab.h @@ -0,0 +1,107 @@ +#ifndef _HASHTAB_H +#define _HASHTAB_H + +typedef struct hnode *HNODEPTR; /* site node (host) pointer */ +typedef struct unode *UNODEPTR; /* url node pointer */ +typedef struct rnode *RNODEPTR; /* referrer node */ +typedef struct anode *ANODEPTR; /* user agent node pointer */ +typedef struct snode *SNODEPTR; /* Search string node pointer */ +typedef struct inode *INODEPTR; /* user (ident) node pointer */ +#ifdef USE_DNS +typedef struct dnode *DNODEPTR; /* DNS hash table node struct */ +#endif + +/* Object flags */ +#define OBJ_REG 0 /* Regular object */ +#define OBJ_HIDE 1 /* Hidden object */ +#define OBJ_GRP 2 /* Grouped object */ + +#ifdef USE_DNS +struct dnode { char *string; /* DNS node hash table struct */ + struct sockaddr_storage addr; + int addrlen; + struct dnode *llist; + struct dnode *next; }; +#endif + +struct hnode { char *string; /* host hash table structure */ + int flag; + u_int64_t count; + u_int64_t files; + u_int64_t visit; /* visit information */ + u_int64_t tstamp; + char *lasturl; + double xfer; + struct hnode *next; }; + +struct unode { char *string; /* url hash table structure */ + int flag; /* Object type (REG, HIDE, GRP) */ + u_int64_t count; /* requests counter */ + u_int64_t files; /* files counter */ + u_int64_t entry; /* entry page counter */ + u_int64_t exit; /* exit page counter */ + double xfer; /* xfer size in bytes */ + struct unode *next; }; /* pointer to next node */ + +struct rnode { char *string; /* referrer hash table struct */ + int flag; + u_int64_t count; + struct rnode *next; }; + +struct anode { char *string; + int flag; + u_int64_t count; + struct anode *next; }; + +struct snode { char *string; /* search string struct */ + u_int64_t count; + struct snode *next; }; + +struct inode { char *string; /* host hash table struct */ + int flag; + u_int64_t count; + u_int64_t files; + u_int64_t visit; + u_int64_t tstamp; + double xfer; + struct inode *next; }; + +extern HNODEPTR sm_htab[MAXHASH]; /* hash tables */ +extern HNODEPTR sd_htab[MAXHASH]; +extern UNODEPTR um_htab[MAXHASH]; /* for hits, sites, */ +extern RNODEPTR rm_htab[MAXHASH]; /* referrers and agents... */ +extern ANODEPTR am_htab[MAXHASH]; +extern SNODEPTR sr_htab[MAXHASH]; /* search string table */ +extern INODEPTR im_htab[MAXHASH]; /* ident table (username) */ +#ifdef USE_DNS +extern DNODEPTR host_table[MAXHASH]; /* DNS resolver table */ +#endif + +extern int put_hnode(char *, int, u_int64_t, u_int64_t, double, + u_int64_t *, u_int64_t, u_int64_t, char *, HNODEPTR *); +extern int put_unode(char *, int, u_int64_t, double, u_int64_t *, + u_int64_t, u_int64_t, UNODEPTR *); +extern int put_inode(char *, int, u_int64_t, u_int64_t, double, + u_int64_t *, u_int64_t, u_int64_t, INODEPTR *); +extern int put_rnode(char *, int, u_int64_t, u_int64_t *, RNODEPTR *); +extern int put_anode(char *, int, u_int64_t, u_int64_t *, ANODEPTR *); +extern int put_snode(char *, u_int64_t, SNODEPTR *); + +#ifdef USE_DNS +extern int put_dnode(char *, void *, int, DNODEPTR *); +extern void del_dlist(DNODEPTR *); +#endif + +extern void del_htabs(); /* delete hash tables */ +extern void del_hlist(HNODEPTR *); /* delete host htab */ +extern void del_ulist(UNODEPTR *); /* delete url htab */ +extern void del_rlist(RNODEPTR *); /* delete referrer htab */ +extern void del_alist(ANODEPTR *); /* delete host htab */ +extern void del_slist(SNODEPTR *); /* delete host htab */ +extern void del_ilist(INODEPTR *); /* delete host htab */ + +extern void month_update_exit(u_int64_t); +extern u_int64_t tot_visit(HNODEPTR *); +extern char *find_url(char *); + +#endif /* _HASHTAB_H */ diff --git a/install-sh b/install-sh new file mode 100755 index 0000000..ebc6691 --- /dev/null +++ b/install-sh @@ -0,0 +1,250 @@ +#! /bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/lang.h b/lang.h new file mode 100644 index 0000000..88a3ecc --- /dev/null +++ b/lang.h @@ -0,0 +1,182 @@ +#ifndef _LANG_H +#define _LANG_H + +extern char *language ; +extern char *langcode ; + +extern char *msg_records ; +extern char *msg_addresses; +extern char *msg_ignored ; +extern char *msg_bad ; +extern char *msg_in ; +extern char *msg_seconds ; + +extern char *msg_log_err ; +extern char *msg_log_use ; +extern char *msg_dir_err ; +extern char *msg_dir_use ; +extern char *msg_cur_dir ; +extern char *msg_hostname; +extern char *msg_ign_hist; +extern char *msg_no_hist ; +extern char *msg_get_hist; +extern char *msg_put_hist; +extern char *msg_hist_err; +extern char *msg_bad_hist; +extern char *msg_bad_conf; +extern char *msg_bad_key ; +extern char *msg_bad_date; +extern char *msg_ign_nscp; +extern char *msg_bad_rec ; +extern char *msg_no_vrec ; +extern char *msg_gen_rpt ; +extern char *msg_gen_sum ; +extern char *msg_get_data; +extern char *msg_put_data; +extern char *msg_no_data ; +extern char *msg_bad_data; +extern char *msg_data_err; +extern char *msg_dup_data; + +extern char *msg_dns_nocf; +extern char *msg_dns_nodb; +extern char *msg_dns_nolk; +extern char *msg_dns_usec; +extern char *msg_dns_rslf; +extern char *msg_dns_none; +extern char *msg_dns_abrt; + +extern char *msg_geo_open; +extern char *msg_geo_use ; +extern char *msg_geo_nolu; +extern char *msg_geo_dflt; + +extern char *msg_nomem_ts; +extern char *msg_nomem_tr; +extern char *msg_nomem_tu; +extern char *msg_nomem_tc; +extern char *msg_nomem_ta; +extern char *msg_nomem_tsr; +extern char *msg_nomem_ti; +extern char *msg_nomem_dh; +extern char *msg_nomem_mh; +extern char *msg_nomem_u ; +extern char *msg_nomem_a ; +extern char *msg_nomem_r ; +extern char *msg_nomem_sc; +extern char *msg_nomem_i ; + +extern char *msg_big_rec ; +extern char *msg_big_host; +extern char *msg_big_date; +extern char *msg_big_req ; +extern char *msg_big_ref ; +extern char *msg_big_user; +extern char *msg_big_one ; + +extern char *msg_no_open ; + +extern char *h_usage1 ; +extern char *h_usage2 ; +extern char *h_msg[]; + +/* HTML Strings */ + +extern char *msg_hhdr_sp ; +extern char *msg_hhdr_gt ; + +extern char *msg_main_us ; +extern char *msg_main_per; +extern char *msg_main_sum; +extern char *msg_main_da ; +extern char *msg_main_mt ; + +extern char *msg_hmth_du ; +extern char *msg_hmth_hu ; + +extern char *msg_h_by ; +extern char *msg_h_avg ; +extern char *msg_h_max ; +extern char *msg_h_total ; +extern char *msg_h_totals; +extern char *msg_h_day ; +extern char *msg_h_mth ; +extern char *msg_h_hour ; +extern char *msg_h_hits ; +extern char *msg_h_pages ; +extern char *msg_h_visits; +extern char *msg_h_files ; +extern char *msg_h_sites ; +extern char *msg_h_xfer ; +extern char *msg_h_hname ; +extern char *msg_h_url ; +extern char *msg_h_agent ; +extern char *msg_h_ref ; +extern char *msg_h_ctry ; +extern char *msg_h_search; +extern char *msg_h_uname ; + +extern char *msg_hlnk_ds ; +extern char *msg_hlnk_hs ; +extern char *msg_hlnk_u ; +extern char *msg_hlnk_s ; +extern char *msg_hlnk_a ; +extern char *msg_hlnk_c ; +extern char *msg_hlnk_r ; +extern char *msg_hlnk_en ; +extern char *msg_hlnk_ex ; +extern char *msg_hlnk_sr ; +extern char *msg_hlnk_i ; + +extern char *msg_mtot_ms ; +extern char *msg_mtot_th ; +extern char *msg_mtot_tf ; +extern char *msg_mtot_tx ; +extern char *msg_mtot_us ; +extern char *msg_mtot_ur ; +extern char *msg_mtot_ua ; +extern char *msg_mtot_uu ; +extern char *msg_mtot_ui ; +extern char *msg_mtot_mhd; +extern char *msg_mtot_mhh; +extern char *msg_mtot_mfd; +extern char *msg_mtot_mpd; +extern char *msg_mtot_msd; +extern char *msg_mtot_mvd; +extern char *msg_mtot_mkd; +extern char *msg_mtot_rc ; + +extern char *msg_dtot_ds ; + +extern char *msg_htot_hs ; + +extern char *msg_ctry_use; + +extern char *msg_top_top ; +extern char *msg_top_of ; +extern char *msg_top_s ; +extern char *msg_top_u ; +extern char *msg_top_r ; +extern char *msg_top_a ; +extern char *msg_top_c ; +extern char *msg_top_en ; +extern char *msg_top_ex ; +extern char *msg_top_sr ; +extern char *msg_top_i ; +extern char *msg_v_sites ; +extern char *msg_v_urls ; +extern char *msg_v_refs ; +extern char *msg_v_agents; +extern char *msg_v_search; +extern char *msg_v_users ; + +extern char *msg_title ; +extern char *msg_h_other ; + +extern char *s_month[12]; +extern char *l_month[12]; + +extern struct response_code response[]; +extern struct country_code ctry[]; + +#endif /* _LANG_H */ diff --git a/lang/webalizer_lang.albanian b/lang/webalizer_lang.albanian new file mode 100644 index 0000000..76ce297 --- /dev/null +++ b/lang/webalizer_lang.albanian @@ -0,0 +1,616 @@ +/* + webalizer_lang.albanian + + Kartelë Mbulimi Gjuhësor për Shqipen për Webalizer V2.0x. + 06-Mar-2006 nga Besnik Bleta besnik@programeshqip.org) + 12-May-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +/* char *language = "Shqip"; */ +char *language = "Albanian"; +char *langcode = "sq"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "regjistrime"; +char *msg_addresses="vendndodhje"; +char *msg_ignored = "shpërfillur"; +char *msg_bad = "i dëmtuar"; +char *msg_in = "në"; +char *msg_seconds = "sekonda"; + +/* mesazhi gabimi gjatë rregullimit dhe ecurisë */ +char *msg_log_err = "Gabim: S'hap dot kartelë regjistrimesh"; +char *msg_log_use = "Po përdor kartelë regjistrimesh"; +char *msg_dir_err = "Gabim: S'ndryshoj dot drejtorinë në"; +char *msg_dir_use = "Po krijoj përfundimet në"; +char *msg_cur_dir = "drejtorinë e çastit"; +char *msg_hostname= "Strehëemri për raportime është"; +char *msg_ign_hist= "Po shpërfill historikun e mëparshëm..."; +char *msg_no_hist = "Nuk u gjet kartelë historiku..."; +char *msg_get_hist= "Po lexoj kartelë historiku..."; +char *msg_put_hist= "Po ruaj të dhëna historiku..."; +char *msg_hist_err= "Gabim: I pazoti të shkruaj kartelë historiku"; +char *msg_bad_hist= "Gabim: Po shpërfill regjistrime të pavlefshëm historiku"; +char *msg_bad_conf= "Gabim: I pazoti të hap kartelë formësimi"; +char *msg_bad_key = "Kujdes: Fjalëkyç i pavlefshëm"; +char *msg_bad_date= "Gabim: Po anashkaloj regjistrime (datë e gabuar)"; +char *msg_ign_nscp= "Po anashkaloj regjistrim titujsh Netscape"; +char *msg_bad_rec = "Po anashkaloj regjistrim të dëmtuar"; +char *msg_no_vrec = "Nuk u gjetën regjistrime të vlefshëm!"; +char *msg_gen_rpt = "Po prodhoj raport për"; +char *msg_gen_sum = "Po prodhoj raport përmbledhës"; +char *msg_get_data= "Po lexoj të dhëna të mëparshme xhirimi.."; +char *msg_put_data= "Po ruaj të dhëna të tanishme xhirimi..."; +char *msg_no_data = "nuk u gjetën të dhëna të mëparshme xhirimi..."; +char *msg_bad_data= "Gabim: I pazoti të rikthej të dhëna xhirimi"; +char *msg_data_err= "Gabim: I pazoti të ruaj të dhëna të tanishme xhirimi"; +char *msg_dup_data= "Kujdes: Ka gjasa të jenë gjendur të dhëna të përsëritura"; + +/* Gjëra DNS */ +char *msg_dns_nocf= "Nuk u tregua kartelë fshehtine, po e ndërpres..."; +char *msg_dns_nodb= "Error: I pazoti të hap kartelë fshehtine DNS"; +char *msg_dns_nolk= "Error: I pazoti të kyç kartelë fshehtine DNS"; +char *msg_dns_usec= "Po përdor kartelë fshehtine DNS"; +char *msg_dns_rslv= "Kërkim DNS"; +char *msg_dns_none= "Asnjë për t'u përpunuar"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* gabime sigurimi kujtese */ +char *msg_nomem_ts= "Nuk siguroj dot kujtesë të mjaftueshme, U çaktivizua \"Site\"-e Kryesues!"; +char *msg_nomem_tr= "Nuk siguroj dot kujtesë të mjaftueshme, U çaktivizua Përmendësa Kryesues!"; +char *msg_nomem_tu= "Nuk siguroj dot kujtesë të mjaftueshme, U çaktivizua URL-ra Kryesuese!"; +char *msg_nomem_tc= "Nuk siguroj dot kujtesë të mjaftueshme, U çaktivizua Vende Kryesues!"; +char *msg_nomem_ta= "Nuk siguroj dot kujtesë të mjaftueshme, U çaktivizua Agjentë Kryesues Përdoruesi!"; +char *msg_nomem_tsr="Nuk siguroj dot kujtesë të mjaftueshme, U çaktivizua Vargje Kryesuese Kërkimi!"; +char *msg_nomem_ti= "Nuk siguroj dot kujtesë të mjaftueshme, U çaktivizua Emra Kryesues Përdoruesi!"; +char *msg_nomem_dh= "Gabim gjatë shtimit të nyjes për strehë (përditë), po e anashkaloj"; +char *msg_nomem_mh= "Gabim gjatë shtimit të nyjes për strehë (çdo muaj), po e anashkaloj"; +char *msg_nomem_u = "Gabim gjatë shtimit të nyjes për URL, po e anashkaloj"; +char *msg_nomem_a = "Gabim gjatë shtimit të nyjes për Agjent Përdoruesi, po e anashkaloj"; +char *msg_nomem_r = "Gabim gjatë shtimit të nyjes për Përmendës, po e anashkaloj"; +char *msg_nomem_sc= "Gabim gjatë shtimit të nyjes për Varg Kërkimi, po e anashkaloj"; +char *msg_nomem_i = "Gabim gjatë shtimit të nyjes për Emër përdoruesi, po e anashkaloj"; + +/* gabime zërash regjistrimi */ +char *msg_big_rec = "Gabim: Po anashkolaj regjistrim më të madh se ç'duhet"; +char *msg_big_host= "Kujdes: Po cungoj emër strehe më të madh se ç'duhet"; +char *msg_big_date= "Kujdes: Po cungoj kuti date më të madhe se ç'duhet"; +char *msg_big_req = "Kujdes: Po cungoj kuti kërkese më të madhe se ç'duhet"; +char *msg_big_ref = "Kujdes: Po cungoj kuti përmendësi më të madhe se ç'duhet"; +char *msg_big_user= "Kujdes: Po cungoj emër përdoruesi më të madh se ç'duhet"; +char *msg_big_one = "Kujdes: Vargu tejkalon masën e lejuar"; + +/* gabime të ndryshëm */ +char *msg_no_open = "Gabim: I pazoti të hap kartelën"; + +/* Shfaqje e ndihmës... */ +char *h_usage1 = "Përdorimi"; +char *h_usage2 = "[mundësi] [kartelë regjistrimi]"; +char *h_msg[]= { + "-h = shtyp këtë mesazh ndihme" , + "-V = shtyp të dhëna versioni" , + "-v = be verbose" , + "-d = shtyp të dhëna shtesë diagnostikimi" , + "-F type = Tip regjistrimi. tipi= (clf | ftp | squid | w3c)", + "-f = Fold sequence errors" , + "-i = shpërfill kartelë historiku" , + "-p = ruaj gjendje (shtues)" , + "-b = ignore state (incremental)" , + "-q = pa mesazhe informues" , + "-Q = pa _ASNJË_ mesazh" , + "-Y = pa graf vendesh" , + "-G = pa graf të përorshëm" , + "-H = pa statistika të përorshme" , + "-L = pa legjenda me ngjyra për grafin" , + "-l num = përdor në graf rreshta sfondi numrash", + "-m num = Vlerë skadimi vizite (sekonda)" , + "-T = print timing information" , + "-c file = përdor kartelën e formësimit 'kartelë'", + "-n name = emër strehe për t'u përdorur" , + "-o dir = drejtori për t'u përdorur për përfundime", + "-t name = titull raporti 'emër'" , + "-a name = fshih agjentin e përdoruesi 'emër'" , + "-r name = fshih përmendësin 'emër'" , + "-s name = fshih \"site\"-in 'emër'" , + "-u name = fshih URL-në 'emër'" , + "-x name = Përdor zgjerim emër kartelash 'emër'", + "-O name = Omit page 'name'" , + "-P name = Zgjerim tipi faqesh 'emër'" , + "-I name = Alias treguesi 'emër'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Shfaq num agjentësh kryesues" , + "-C num = Shfaq num vendesh kryesuese" , + "-R num = Shfaq num përmendësish kryesues" , + "-S num = Shfaq num \"site\"-esh kryesues" , + "-U num = Shfaq num URL-sh kryesuese" , + "-e num = Shfaq num Faqesh Fillimi kryesuese" , + "-E num = Shfaq num Faqesh Daljeje kryesues" , + "-g num = Grupo Përkatësitë në 'num' nivele" , + "-X = Fshih \"site\"-e individualë" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Përdor kartelë fshehtine DNS 'emër'" , + "-N num = Numër procesesh DNS (0=çaktivizoje)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoIP database 'emër'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'emër'" , +#endif + NULL}; + +/***********************************************************************/ +/* */ +/* Vargje HTML */ +/* */ +/* Këta vargje përdoren si pjesë e përfundimit HTML të prodhuar nga */ +/* Webalizer-i. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Periudhë Përmbledhëse"; +char *msg_hhdr_gt = "Prodhuar"; + +/* main index strings */ +char *msg_main_us = "Përmbledhje përdorimi për"; +/* char *msg_main_per= "12 Muajt e Fundit"; */ +char *msg_main_per= "Përmbledhje sipas Muajsh"; +char *msg_main_sum= "Përmbledhje sipas Muajsh"; +char *msg_main_da = "Mes. Ditore"; +char *msg_main_mt = "Tërësi Përmujore"; + +/* month HTML page strings */ +char *msg_hmth_du = "Përdorim ditor për"; +char *msg_hmth_hu = "Përdorim i përorshëm për"; + +/* vargje titujsh tabelash */ +char *msg_h_by = "Nga"; +char *msg_h_avg = "Mes"; +char *msg_h_max = "Maks"; +char *msg_h_total = "Gjithsej"; +char *msg_h_totals= "Tërësi"; +char *msg_h_day = "Ditë"; +char *msg_h_mth = "Muaj"; +char *msg_h_hour = "Orë"; +char *msg_h_hits = "Hapje"; +char *msg_h_pages = "Faqe"; +char *msg_h_visits= "Vizita"; +char *msg_h_files = "Kartela"; +char *msg_h_sites = "\"Site\"-e"; +char *msg_h_xfer = "KBajt"; +char *msg_h_hname = "Emërstrehë"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Agjent Përdoruesi"; +char *msg_h_ref = "Përmendës"; +char *msg_h_ctry = "Vend"; +char *msg_h_search= "Varg Kërkimesh"; +char *msg_h_uname = "Emër Përdoruesi"; + +/* lidhje përgjatë kryesh faqeje */ +char *msg_hlnk_ds = "Statistika Ditore"; +char *msg_hlnk_hs = "Statistika çdo Orë"; +char *msg_hlnk_u = "URL-ra"; +char *msg_hlnk_s = "\"Site\"-e"; +char *msg_hlnk_a = "Agjentë"; +char *msg_hlnk_c = "Vende"; +char *msg_hlnk_r = "Përmendësa"; +char *msg_hlnk_en = "Hyrje"; +char *msg_hlnk_ex = "Dalje"; +char *msg_hlnk_sr = "Kërkim"; +char *msg_hlnk_i = "Përdoruesa"; + +/* tabelë tërësie mujore */ +char *msg_mtot_ms = "Statistika Mujore për"; +char *msg_mtot_th = "Hapje Gjithsej"; +char *msg_mtot_tf = "Kartela Gjithsej"; +char *msg_mtot_tx = "KBajt Gjithsej"; +char *msg_mtot_us = "\"Site\"-e Unikë Gjithsej"; +char *msg_mtot_ur = "Përmendësa Unikë Gjithsej"; +char *msg_mtot_ua = "Agjentë Unikë Përdoruesi Gjithsej"; +char *msg_mtot_uu = "URL Unike Gjithsej"; +char *msg_mtot_ui = "Emra Unikë përdoruesish Gjithsej"; +char *msg_mtot_mhd= "Hapje në Ditë"; +char *msg_mtot_mhh= "Hapje në Orë"; +char *msg_mtot_mfd= "Kartela në Ditë"; +char *msg_mtot_mpd= "Faqe në Ditë"; +char *msg_mtot_msd= "\"Site\"-e në Ditë"; +char *msg_mtot_mvd= "Vizita në Ditë"; +char *msg_mtot_mkd= "KBajt në Ditë"; +char *msg_mtot_rc = "Hapje sipas Kodi Përgjigjesh"; + +/* tabelë tërësie ditore */ +char *msg_dtot_ds = "Statistika Ditore për"; + +/* tabelë tërësie sipas orësh */ +char *msg_htot_hs = "Statistika të Përorshme për"; + +/* grafik sipas vendesh */ +char *msg_ctry_use= "Përdorim sipas Vendesh për"; + +/* tabela kryesimesh */ +/* Formatuar si "xxx kryesues e xxx Tërësisë së diçkaje" */ +char *msg_top_top = "Kryesues"; +char *msg_top_of = "për"; +char *msg_top_s = "\"Site\"-e Gjithsej"; +char *msg_top_u = "URL-ra Gjithsej"; +char *msg_top_r = "Përmendësa Gjithsej"; +char *msg_top_a = "Agjentë Përdoruesish Gjithsej"; +char *msg_top_c = "Vende Gjithsej"; +char *msg_top_en = "Faqe Hyrjesh Gjithsej"; +char *msg_top_ex = "Faqe Daljesh Gjithsej"; +char *msg_top_sr = "Vargje Kërkimesh Gjithsej"; +char *msg_top_i = "Emra përdoruesish Gjithsej"; +char *msg_v_sites = "Shihni Tërë \"Site\"-et"; +char *msg_v_urls = "Shihni Tërë URL-tës"; +char *msg_v_refs = "Shihni Tërë Përmendësit"; +char *msg_v_agents= "Shihni Tërë Agjentët e Përdoruesve"; +char *msg_v_search= "Shihni Tërë Vargjet e Kërkimeve"; +char *msg_v_users = "Shihni Tërë Emrat e përdoruesve"; + +/* emrat e shkurtër për muajt DUHET TË JENË 3 SHENJA si madhësi... pad if needed*/ +char *s_month[12]={ "Jan", "Shk", "Mar", + "Pri", "Maj", "Qer", + "Kor", "Gus", "Sht", + "Tet", "Nën", "Dhj"}; + +/* emra të gjatë muajsh - gjatësi çfarëdo */ +char *l_month[12]={ "Janar", "Shkurt", "Mars", "Prill", + "Maj", "Qershor", "Korrik", "Gusht", + "Shtator","Tetor", "Nëntor","Dhjetor"}; + +/* përshkrim kode përgjigjesh... renditja ËSHTË e rëndësishme! */ +struct response_code response[] = + { { "Kod përgjigjeje të papërcaktuar", 0 }, + { "Kod 100 - Vazhdo", 0 }, + { "Kod 101 - Po këmbehen Protokolle", 0 }, + { "Kod 200 - OK", 0 }, + { "Kod 201 - Krijuar", 0 }, + { "Kod 202 - Pranuar", 0 }, + { "Kod 203 - Informacion Jo Autoritativ", 0 }, + { "Kod 204 - Pa Përmbajtje", 0 }, + { "Kod 205 - Rimerr Përmbajtje", 0 }, + { "Kod 206 - Përmbajtje e Pjesshme", 0 }, + { "Kod 300 - Zgjedhje të Shumëfishta", 0 }, + { "Kod 301 - Ikur Përgjithmonë", 0 }, + { "Kod 302 - U gjet", 0 }, + { "Kod 303 - Shih Tjetër", 0 }, + { "Kod 304 - Pa Ndryshim", 0 }, + { "Kod 305 - Përdor Proxy", 0 }, + { "Kod 307 - Ikur Përkohësisht", 0 }, + { "Kod 400 - Kërkesë e Fabuar", 0 }, + { "Kod 401 - I paautorizuar", 0 }, + { "Kod 402 - Lipset Pagesë", 0 }, + { "Kod 403 - E ndaluar", 0 }, + { "Kod 404 - Nuk Gjendet", 0 }, + { "Kod 405 - Metodë e Palejuar", 0 }, + { "Kod 406 - E papranueshme", 0 }, + { "Kod 407 - Lipset Mirëfilltësim Proxy", 0 }, + { "Kod 408 - Skadim Kohe Kërkese", 0 }, + { "Kod 409 - Përplasje", 0 }, + { "Kod 410 - Ikur", 0 }, + { "Kod 411 - Gjatësi e Nevojshme", 0 }, + { "Kod 412 - Prakushti Dështoi", 0 }, + { "Kod 413 - Entitet Kërkese Shumë i Gjerë", 0 }, + { "Kod 414 - URI Kërkese Shumë I gjatë", 0 }, + { "Kod 415 - Tip I pambuluar Media", 0 }, + { "Kod 416 - U kërkua interval që s'mund të kënaqet", 0 }, + { "Kod 417 - Shpresa Nuk u Pwrmbush", 0 }, + { "Kod 500 - Gabim i Brendshëm Shërbyesi", 0 }, + { "Kod 501 - I pa vënë ende në jetë", 0 }, + { "Kod 502 - \"Gateway\" i Gabuar", 0 }, + { "Kod 503 - Shërbim jo i mundshëm", 0 }, + { "Kod 504 - Skadim Kohe \"Gateway\"-i", 0 }, + { "Kod 505 - Version HTTP i Pambuluar", 0 } }; + +char *msg_title = "Statistika Përdorimi për"; +char *msg_h_other = "Tjetër"; + +/* Kode Vendesh (dikur te ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "I paftilluar/I panjohur", 0,0,0 }, +{ IDX_3C('c','o','m'), "Tregtar (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Edukativ (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "US, Qeveritar (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "Ndërkombëtar (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "US, Ushtarak (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Rrjet (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Organizëm Jofitimprurës (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Arpanet stil i vjetër (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Fushë Nato (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "Emiratet e Bashkuar Arabë", 0,0,0 }, +{ IDX_2C('a','f'), "Afganistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua dhe Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguila", 0,0,0 }, +{ IDX_2C('a','l'), "Shqipëri", 0,0,0 }, +{ IDX_2C('a','m'), "Armeni", 0,0,0 }, +{ IDX_2C('a','n'), "Antilet Holandeze", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarktidë", 0,0,0 }, +{ IDX_2C('a','r'), "Argjentinë", 0,0,0 }, +{ IDX_2C('a','s'), "Samoa Amerikane", 0,0,0 }, +{ IDX_2C('a','t'), "Austri", 0,0,0 }, +{ IDX_2C('a','u'), "Australi", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaixhan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnjë dhe Hercegovinë", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgjikë", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bullgari", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrein", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivi", 0,0,0 }, +{ IDX_2C('b','r'), "Brazil", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Butan", 0,0,0 }, +{ IDX_2C('b','v'), "Ishulli Buve", 0,0,0 }, +{ IDX_2C('b','w'), "Botsvanë", 0,0,0 }, +{ IDX_2C('b','y'), "Bjellorusi", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Kanada", 0,0,0 }, +{ IDX_2C('c','c'), "Ishujt Kokos (Keeling)", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Republika e Afrikës Qendrore", 0,0,0 }, +{ IDX_2C('c','g'), "Kongo", 0,0,0 }, +{ IDX_2C('c','h'), "Zvicër", 0,0,0 }, +{ IDX_2C('c','i'), "Bregu i Fildishtë", 0,0,0 }, +{ IDX_2C('c','k'), "Ishujt Kuk", 0,0,0 }, +{ IDX_2C('c','l'), "Kili", 0,0,0 }, +{ IDX_2C('c','m'), "Kamerun", 0,0,0 }, +{ IDX_2C('c','n'), "Kinë", 0,0,0 }, +{ IDX_2C('c','o'), "Kolombi", 0,0,0 }, +{ IDX_2C('c','r'), "Kosta Rika", 0,0,0 }, +{ IDX_2C('c','u'), "Kubë", 0,0,0 }, +{ IDX_2C('c','v'), "Kepi i Gjelbër", 0,0,0 }, +{ IDX_2C('c','x'), "Ishulli i Krishtlindjes", 0,0,0 }, +{ IDX_2C('c','y'), "Qipro", 0,0,0 }, +{ IDX_2C('c','z'), "Republika Çeke", 0,0,0 }, +{ IDX_2C('d','e'), "Gjermani", 0,0,0 }, +{ IDX_2C('d','j'), "Xhibuti", 0,0,0 }, +{ IDX_2C('d','k'), "Danimarkë", 0,0,0 }, +{ IDX_2C('d','m'), "Dominika", 0,0,0 }, +{ IDX_2C('d','o'), "Republika Dominikane", 0,0,0 }, +{ IDX_2C('d','z'), "Algjeri", 0,0,0 }, +{ IDX_2C('e','c'), "Ekuador", 0,0,0 }, +{ IDX_2C('e','e'), "Estoni", 0,0,0 }, +{ IDX_2C('e','g'), "Egjipt", 0,0,0 }, +{ IDX_2C('e','h'), "Sahara Perëndimore", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Spanjë", 0,0,0 }, +{ IDX_2C('e','t'), "Etiopi", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finlandë", 0,0,0 }, +{ IDX_2C('f','j'), "Fixhi", 0,0,0 }, +{ IDX_2C('f','k'), "Ishujt Folkland (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Mikronezi", 0,0,0 }, +{ IDX_2C('f','o'), "Ishujt Faroe", 0,0,0 }, +{ IDX_2C('f','r'), "Francë", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Britani e Madhe (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Gjeorgji", 0,0,0 }, +{ IDX_2C('g','f'), "Guajana Franceze", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Gana", 0,0,0 }, +{ IDX_2C('g','i'), "Gjibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Groenlanda", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadalupi", 0,0,0 }, +{ IDX_2C('g','q'), "Guinea Ekuatoriale", 0,0,0 }, +{ IDX_2C('g','r'), "Greqi", 0,0,0 }, +{ IDX_2C('g','s'), "Ishujt S. Jorgjia dhe S. Sandwich", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bisau", 0,0,0 }, +{ IDX_2C('g','y'), "Gujanë", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Ishujt Heard dhe McDonald", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Kroaci", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Hungari", 0,0,0 }, +{ IDX_2C('i','d'), "Indonezi", 0,0,0 }, +{ IDX_2C('i','e'), "Irlandë", 0,0,0 }, +{ IDX_2C('i','l'), "Izrael", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "Indi", 0,0,0 }, +{ IDX_2C('i','o'), "Territoret Britanike të Oqeanit Indian", 0,0,0 }, +{ IDX_2C('i','q'), "Irak", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Islandë", 0,0,0 }, +{ IDX_2C('i','t'), "Itali", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Xhamaika", 0,0,0 }, +{ IDX_2C('j','o'), "Jordani", 0,0,0 }, +{ IDX_2C('j','p'), "Japoni", 0,0,0 }, +{ IDX_2C('k','e'), "Kenia", 0,0,0 }, +{ IDX_2C('k','g'), "Kirgizstan", 0,0,0 }, +{ IDX_2C('k','h'), "Kamboxhia", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Komoros", 0,0,0 }, +{ IDX_2C('k','n'), "Shën Kits dhe Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Korea (e Veriut)", 0,0,0 }, +{ IDX_2C('k','r'), "Korea (e Jugut)", 0,0,0 }, +{ IDX_2C('k','w'), "Kuvajt", 0,0,0 }, +{ IDX_2C('k','y'), "Ishujt Kajman", 0,0,0 }, +{ IDX_2C('k','z'), "Kazakistan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Liban", 0,0,0 }, +{ IDX_2C('l','c'), "Shën Luçia", 0,0,0 }, +{ IDX_2C('l','i'), "Lihtenshtejn", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesoto", 0,0,0 }, +{ IDX_2C('l','t'), "Lituani", 0,0,0 }, +{ IDX_2C('l','u'), "Luksemburg", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia", 0,0,0 }, +{ IDX_2C('l','y'), "Libia", 0,0,0 }, +{ IDX_2C('m','a'), "Marok", 0,0,0 }, +{ IDX_2C('m','c'), "Monako", 0,0,0 }, +{ IDX_2C('m','d'), "Moldavi", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagaskar", 0,0,0 }, +{ IDX_2C('m','h'), "Ishujt Marshall", 0,0,0 }, +{ IDX_2C('m','k'), "Maqedoni", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Mianmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongoli", 0,0,0 }, +{ IDX_2C('m','o'), "Makao", 0,0,0 }, +{ IDX_2C('m','p'), "Ishujt e Marianës Veriore", 0,0,0 }, +{ IDX_2C('m','q'), "Martinikë", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritani", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauricius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldive", 0,0,0 }, +{ IDX_2C('m','w'), "Malaui", 0,0,0 }, +{ IDX_2C('m','x'), "Meksikë", 0,0,0 }, +{ IDX_2C('m','y'), "Malajzia", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambik", 0,0,0 }, +{ IDX_2C('n','a'), "Namibi", 0,0,0 }, +{ IDX_2C('n','c'), "Kaledonia e Re", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Ishulli Norfolk", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nikaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Holandë", 0,0,0 }, +{ IDX_2C('n','o'), "Norvegji", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "Zelandë e Re", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "Polinezia Franceze", 0,0,0 }, +{ IDX_2C('p','g'), "Papua New Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Filipine", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Poloni", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pier dhe Mikelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitkern", 0,0,0 }, +{ IDX_2C('p','r'), "Porto Riko", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugali", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguaj", 0,0,0 }, +{ IDX_2C('q','a'), "Katar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Rumani", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Federata Ruse", 0,0,0 }, +{ IDX_2C('r','w'), "Ruanda", 0,0,0 }, +{ IDX_2C('s','a'), "Arabia Saudite", 0,0,0 }, +{ IDX_2C('s','b'), "Ishujt Solomon", 0,0,0 }, +{ IDX_2C('s','c'), "Sejshelle", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Suedi", 0,0,0 }, +{ IDX_2C('s','g'), "Singapor", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Sloveni", 0,0,0 }, +{ IDX_2C('s','j'), "Ishujt Svalbard dhe Jan Mayen", 0,0,0 }, +{ IDX_2C('s','k'), "Republika Slovake", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somali", 0,0,0 }, +{ IDX_2C('s','r'), "Surinam", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome dhe Principe", 0,0,0 }, +{ IDX_2C('s','u'), "USSR (të dikurshëm)", 0,0,0 }, +{ IDX_2C('s','v'), "Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Siri", 0,0,0 }, +{ IDX_2C('s','z'), "Svaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Ishujt Turq dhe Kaiko", 0,0,0 }, +{ IDX_2C('t','d'), "Çad", 0,0,0 }, +{ IDX_2C('t','f'), "Territoret Franceze Jugore", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Tailandë", 0,0,0 }, +{ IDX_2C('t','j'), "Taxhikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunizi", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Timori Lindor", 0,0,0 }, +{ IDX_2C('t','r'), "Turqi", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad dhe Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taivan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzani", 0,0,0 }, +{ IDX_2C('u','a'), "Ukrainë", 0,0,0 }, +{ IDX_2C('u','g'), "Ugandë", 0,0,0 }, +{ IDX_2C('u','k'), "Mbretëri e Bashkuar", 0,0,0 }, +{ IDX_2C('u','m'), "Ishujt e Vegjël jashtë US", 0,0,0 }, +{ IDX_2C('u','s'), "Shtetet e Bashkuar", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguaj", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan" , 0,0,0 }, +{ IDX_2C('v','a'), "Qytet Shteti i Vatikanit (Holy See)", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent dhe Grenadinet", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuelë", 0,0,0 }, +{ IDX_2C('v','g'), "Ishujt Virgjini (Britanikë)", 0,0,0 }, +{ IDX_2C('v','i'), "Ishujt Virgjini (U.S.)", 0,0,0 }, +{ IDX_2C('v','n'), "Viet Nam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Ishujt Vallis dhe Futuna", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Jemen", 0,0,0 }, +{ IDX_2C('y','t'), "Majote", 0,0,0 }, +{ IDX_2C('y','u'), "FSMZ", 0,0,0 }, +{ IDX_2C('z','a'), "Afrikë e Jugut", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabue", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0 , NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.arabic b/lang/webalizer_lang.arabic new file mode 100644 index 0000000..2eb2b7d --- /dev/null +++ b/lang/webalizer_lang.arabic @@ -0,0 +1,635 @@ +/* + webalizer_lang.english + + Webalizer V2.0x Language Support file for English. + 15-May-1998 by Bradford L. Barrett (brad@mrunix.net) + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 16-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 20-May-2008 Tranlated to Arabic by Mohamed SAAD + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Arabic"; +char *langcode = "ar"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "تسجيلات"; +char *msg_addresses="عناوين"; +char *msg_ignored = "غير مستعملة"; +char *msg_bad = "غير سليمة"; +char *msg_in = "في"; +char *msg_seconds = "ثانية"; + +/* progress and setup error messages */ +char *msg_log_err = "خطء: غير قادر على فتح ملف سجل الوقائع"; +char *msg_log_use = "جاري إستعمال ملف سجل الوقائع"; +char *msg_dir_err = "خطء غير قادر على الإنتقال إلى الدليل "; +char *msg_dir_use = "جاري إنشاء الخرج في"; +char *msg_cur_dir = "الدليل الحالي"; +char *msg_hostname= "إسم المضيف للتقارير هو"; +char *msg_ign_hist= "تجاهل ملف السجل الزمني السابق ..."; +char *msg_no_hist = "لم أجِد ملف السجل الزمني ..."; +char *msg_get_hist= "جاري قراءة ملف السجل الزمني..."; +char *msg_put_hist= "جاري حفظ معلومات السجل الزمني ..."; +char *msg_hist_err= "خطء: غير قادر على كتابة ملف السجل الزمني"; +char *msg_bad_hist= "خطء: تجاهل تسجيل زمني غير صالح"; +char *msg_bad_conf= "خطء: غير قادر على فتح ملف الإعداد"; +char *msg_bad_key = "تحذير: كلمة بحث غير صاليحة"; +char *msg_bad_date= "خطء: قفزة عن التسجيل (التاريخ غير صالح)"; +char *msg_ign_nscp= "جاري القفذ عن تسجيل ترويسة Netscape"; +char *msg_bad_rec = "قفزة عن تسجيل غير سليم"; +char *msg_no_vrec = "لم أجِد تسجيلات صالحة !"; +char *msg_gen_rpt = "جاري تكوين التقرير لِ "; +char *msg_gen_sum = "جاري تكوين التقرير الموجز"; +char *msg_get_data= "جاري قراءة معطيات التنفيذ السابق .."; +char *msg_put_data= "جاري حفظ معطيات التنفيذ الحالي ..."; +char *msg_no_data = "لم أجِد معطيات التنفيذ السابق ..."; +char *msg_bad_data= "خطء: غير قادر على إستعادة معطيات التنفيذ"; +char *msg_data_err= "خطء: غير قادر على حفظ معطيات التنفيذ الحالي"; +char *msg_dup_data= "تحذير: إحتمال وجود معطيات متكررة مرتين"; + +/* DNS Stuff */ +char *msg_dns_nocf= "No cache file specified, aborting..."; +char *msg_dns_nodb= "Error: Unable to open DNS cache file"; +char *msg_dns_nolk= "Error: Unable to lock DNS cache file"; +char *msg_dns_usec= "Using DNS cache file"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "None to process"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Can't allocate enough memory, Top Sites disabled!"; +char *msg_nomem_tr= "Can't allocate enough memory, Top Referrers disabled!"; +char *msg_nomem_tu= "Can't allocate enough memory, Top URLs disabled!"; +char *msg_nomem_tc= "Can't allocate enough memory, Top Countries disabled!"; +char *msg_nomem_ta= "Can't allocate enough memory, Top User Agents disabled!"; +char *msg_nomem_tsr="Can't allocate enough memory, Top Search Strings disabled!"; +char *msg_nomem_ti= "Can't allocate enough memory, Top Usernames disabled!"; +char *msg_nomem_dh= "Error adding host node (daily), skipping"; +char *msg_nomem_mh= "Error adding host node (monthly), skipping"; +char *msg_nomem_u = "Error adding URL node, skipping"; +char *msg_nomem_a = "Error adding User Agent node, skipping"; +char *msg_nomem_r = "Error adding Referrer node, skipping"; +char *msg_nomem_sc= "Error adding Search String Node, skipping"; +char *msg_nomem_i = "Error adding Username node, skipping"; + +/* log record errors */ +char *msg_big_rec = "Error: Skipping oversized log record"; +char *msg_big_host= "Warning: Truncating oversized hostname"; +char *msg_big_date= "Warning: Truncating oversized date field"; +char *msg_big_req = "Warning: Truncating oversized request field"; +char *msg_big_ref = "Warning: Truncating oversized referrer field"; +char *msg_big_user= "Warning: Truncating oversized username"; +char *msg_big_one = "Warning: String exceeds storage size"; + +/* misc errors */ +char *msg_no_open = "Error: Unable to open file"; + +/* Help display... */ +char *h_usage1 = "Usage"; +char *h_usage2 = "[options] [log file]"; +char *h_msg[]= { + "-h = print this help message" , + "-V = print version information" , + "-v = be verbose" , + "-d = print additional debug info" , + "-F type = Log type. type= (clf | ftp | squid | w3c)", + "-f = Fold sequence errors" , + "-i = ignore history file" , + "-p = preserve state (incremental)" , + "-b = ignore state (incremental)" , + "-q = supress informational messages" , + "-Q = supress _ALL_ messages" , + "-Y = supress country graph" , + "-G = supress hourly graph" , + "-H = supress hourly stats" , + "-L = supress color coded graph legends" , + "-l num = use num background lines on graph" , + "-m num = Visit timout value (seconds)" , + "-T = print timing information" , + "-c file = use configuration file 'file'" , + "-n name = hostname to use" , + "-o dir = output directory to use" , + "-t name = report title 'name'" , + "-a name = hide user agent 'name'" , + "-r name = hide referrer 'name'" , + "-s name = hide site 'name'" , + "-u name = hide URL 'name'" , + "-x name = Use filename extension 'name'" , + "-O name = Omit page 'name'" , + "-P name = Page type extension 'name'" , + "-I name = Index alias 'name'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Display num top agents" , + "-C num = Display num top countries" , + "-R num = Display num top referrers" , + "-S num = Display num top sites" , + "-U num = Display num top URLs" , + "-e num = Display num top Entry Pages" , + "-E num = Display num top Exit Pages" , + "-g num = Group Domains to 'num' levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Use DNS Cache file 'name'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "فترة الموجز"; +char *msg_hhdr_gt = "تمّ الإنشاء"; + +/* main index strings */ +char *msg_main_us = "ملخص الإستعمال لِ "; +/* char *msg_main_per= "الأشهر الإثني عشر السابقة"; */ +char *msg_main_per= "الملخص حسب الشهر"; +char *msg_main_sum= "الملخص حسب الشهر"; +char *msg_main_da = "المعدل اليومي"; +char *msg_main_mt = "المجموعات الشهرية"; + +/* month HTML page strings */ +char *msg_hmth_du = "الإستعمال اليومي لِ "; +char *msg_hmth_hu = "الإستعمال حسب الساعة لِ "; + +/* table header strings */ +char *msg_h_by = "حسب"; +char *msg_h_avg = "المعدل"; +char *msg_h_max = "الأقصى"; +char *msg_h_total = "المجموع"; +char *msg_h_totals= "المجموعات"; +char *msg_h_day = "اليوم"; +char *msg_h_mth = "الشهر"; +char *msg_h_hour = "الساعة"; +char *msg_h_hits = "الإصابات"; +char *msg_h_pages = "الصفحات"; +char *msg_h_visits= "الزيارات"; +char *msg_h_files = "الملفات"; +char *msg_h_sites = "المواقع"; +char *msg_h_xfer = "كيلو بايت"; +char *msg_h_hname = "إسم المضيف"; +char *msg_h_url = "عنوان المورد المنتظم URL"; +char *msg_h_agent = "عميل المستخدم"; +char *msg_h_ref = "المحوّل"; +char *msg_h_ctry = "البلد"; +char *msg_h_search= "جملة البحث"; +char *msg_h_uname = "إسم المستخدم"; + +/* links along top of page */ +char *msg_hlnk_ds = "الإحصاءات اليومية"; +char *msg_hlnk_hs = "الإحصاءات حسب الساعة"; +char *msg_hlnk_u = "عناوين الموارد المنتظمة URLs"; +char *msg_hlnk_s = "المواقع"; +char *msg_hlnk_a = "العملاء"; +char *msg_hlnk_c = "البلاد"; +char *msg_hlnk_r = "المحوّلون"; +char *msg_hlnk_en = "الدخول"; +char *msg_hlnk_ex = "الخروج"; +char *msg_hlnk_sr = "البحث"; +char *msg_hlnk_i = "المستخدمون"; + +/* monthly total table */ +char *msg_mtot_ms = "الإحصاءات الشهرية لِ "; +char *msg_mtot_th = "مجموع الإصابات"; +char *msg_mtot_tf = "مجموع الملفات"; +char *msg_mtot_tx = "مجموع الكيلو بايت"; +char *msg_mtot_us = "مجموع المواقع المنفردة"; +char *msg_mtot_ur = "مجموع المحولين المنفردة"; +char *msg_mtot_ua = "مجموع عملاء المستخدمين المنفردة"; +char *msg_mtot_uu = "مجموع عناوين الموارد المنتظمة المنفردة"; +char *msg_mtot_ui = "مجموع أسماء المستخدمين المنفردة"; +char *msg_mtot_mhd= "الإصابات حسب اليوم"; +char *msg_mtot_mhh= "الإصابات حسب الساعة"; +char *msg_mtot_mfd= "الملفات حسب اليوم"; +char *msg_mtot_mpd= "الصفحات حسب اليوم"; +char *msg_mtot_msd= "المواقع حسب اليوم"; +char *msg_mtot_mvd= "الزيارات حسب اليوم"; +char *msg_mtot_mkd= "كيلو بايت في اليوم"; +char *msg_mtot_rc = "الإصابات حسب رمز الإجابة"; + +/* daily total table */ +char *msg_dtot_ds = "الإحصاءات اليومية لِ "; + +/* hourly total table */ +char *msg_htot_hs = "الإحصاءات حسب الساعة لِ "; + +/* country pie chart */ +char *msg_ctry_use= "الإستعمال حسب البلد لِ "; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "الأعلى"; +char *msg_top_of = "من اصل"; +char *msg_top_s = "مجموع المواقع"; +char *msg_top_u = "مجموع عناوين الموارد المنتظمة URLs"; +char *msg_top_r = "مجموع المحولين"; +char *msg_top_a = "مجموع عملاء المستخدمين"; +char *msg_top_c = "مجموع البلاد"; +char *msg_top_en = "مجموع صفحات الدخول"; +char *msg_top_ex = "مجوع صفحات الخروج"; +char *msg_top_sr = "مجموع مفردات البحث"; +char *msg_top_i = "مجموع أسماء المستخدمين"; +char *msg_v_sites = "راجع كل المواقع"; +char *msg_v_urls = "راجع كل عناوين الموارد المنتظمة"; +char *msg_v_refs = "راجع كل المحولون"; +char *msg_v_agents= "راجع كل عملاء المستخدمين"; +char *msg_v_search= "راجع كل مفردات البحث"; +char *msg_v_users = "راجع كل أسماء المستخدمين"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Jan", "Feb", "Mar", + "Apr", "May", "Jun", + "Jul", "Aug", "Sep", + "Oct", "Nov", "Dec"}; + + +/* long month names - can be any length */ +char *l_month[12]={ "January", "February", "March", "April", + "May", "June", "July", "August", + "September","October", "November","December"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Undefined response code", 0 }, + { "Code 100 - Continue", 0 }, + { "Code 101 - Switching Protocols", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Created", 0 }, + { "Code 202 - Accepted", 0 }, + { "Code 203 - Non-Authoritative Information", 0 }, + { "Code 204 - No Content", 0 }, + { "Code 205 - Reset Content", 0 }, + { "Code 206 - Partial Content", 0 }, + { "Code 300 - Multiple Choices", 0 }, + { "Code 301 - Moved Permanently", 0 }, + { "Code 302 - Found", 0 }, + { "Code 303 - See Other", 0 }, + { "Code 304 - Not Modified", 0 }, + { "Code 305 - Use Proxy", 0 }, + { "Code 307 - Moved Temporarily", 0 }, + { "Code 400 - Bad Request", 0 }, + { "Code 401 - Unauthorized", 0 }, + { "Code 402 - Payment Required", 0 }, + { "Code 403 - Forbidden", 0 }, + { "Code 404 - Not Found", 0 }, + { "Code 405 - Method Not Allowed", 0 }, + { "Code 406 - Not Acceptable", 0 }, + { "Code 407 - Proxy Authentication Required", 0 }, + { "Code 408 - Request Timeout", 0 }, + { "Code 409 - Conflict", 0 }, + { "Code 410 - Gone", 0 }, + { "Code 411 - Length Required", 0 }, + { "Code 412 - Precondition Failed", 0 }, + { "Code 413 - Request Entity Too Large", 0 }, + { "Code 414 - Request-URI Too Long", 0 }, + { "Code 415 - Unsupported Media Type", 0 }, + { "Code 416 - Requested Range Not Satisfiable", 0 }, + { "Code 417 - Expectation Failed", 0 }, + { "Code 500 - Internal Server Error", 0 }, + { "Code 501 - Not Implemented", 0 }, + { "Code 502 - Bad Gateway", 0 }, + { "Code 503 - Service Unavailable", 0 }, + { "Code 504 - Gateway Timeout", 0 }, + { "Code 505 - HTTP Version Not Supported", 0 } }; + +char *msg_title = "Usage Statistics for"; +char *msg_h_other = "Other"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Unresolved/Unknown", 0,0,0 }, +{ IDX_3C('c','o','m'), "Commercial (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Educational (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "US Government (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "International (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "US Military (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Network (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Non-Profit (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Address Routing (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Nato field (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "United Arab Emirates", 0,0,0 }, +{ IDX_2C('a','f'), "Afghanistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua and Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armenia", 0,0,0 }, +{ IDX_2C('a','n'), "Netherlands Antilles", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarctica", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "American Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Austria", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaijan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia and Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgium", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brazil", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Island", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Belarus", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Canada", 0,0,0 }, +{ IDX_2C('c','c'), "Cocos (Keeling) Islands", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Central African Republic", 0,0,0 }, +{ IDX_2C('c','g'), "Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Switzerland", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire (Ivory Coast)", 0,0,0 }, +{ IDX_2C('c','k'), "Cook Islands", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Cameroon", 0,0,0 }, +{ IDX_2C('c','n'), "China", 0,0,0 }, +{ IDX_2C('c','o'), "Colombia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Christmas Island", 0,0,0 }, +{ IDX_2C('c','y'), "Cyprus", 0,0,0 }, +{ IDX_2C('c','z'), "Czech Republic", 0,0,0 }, +{ IDX_2C('d','e'), "Germany", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Denmark", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Dominican Republic", 0,0,0 }, +{ IDX_2C('d','z'), "Algeria", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador", 0,0,0 }, +{ IDX_2C('e','e'), "Estonia", 0,0,0 }, +{ IDX_2C('e','g'), "Egypt", 0,0,0 }, +{ IDX_2C('e','h'), "Western Sahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Spain", 0,0,0 }, +{ IDX_2C('e','t'), "Ethiopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finland", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Falkland Islands (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronesia", 0,0,0 }, +{ IDX_2C('f','o'), "Faroe Islands", 0,0,0 }, +{ IDX_2C('f','r'), "France", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Great Britain (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgia", 0,0,0 }, +{ IDX_2C('g','f'), "French Guiana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Greenland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Equatorial Guinea", 0,0,0 }, +{ IDX_2C('g','r'), "Greece", 0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia and S. Sandwich Isls.", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard and McDonald Islands", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Croatia", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Hungary", 0,0,0 }, +{ IDX_2C('i','d'), "Indonesia", 0,0,0 }, +{ IDX_2C('i','e'), "Ireland", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "India", 0,0,0 }, +{ IDX_2C('i','o'), "British Indian Ocean Territory", 0,0,0 }, +{ IDX_2C('i','q'), "Iraq", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Iceland", 0,0,0 }, +{ IDX_2C('i','t'), "Italy", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Jordan", 0,0,0 }, +{ IDX_2C('j','p'), "Japan", 0,0,0 }, +{ IDX_2C('k','e'), "Kenya", 0,0,0 }, +{ IDX_2C('k','g'), "Kyrgyzstan", 0,0,0 }, +{ IDX_2C('k','h'), "Cambodia", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts and Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Korea, Democratic Republic of", 0,0,0 }, +{ IDX_2C('k','r'), "Korea, Republic of", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Cayman Islands", 0,0,0 }, +{ IDX_2C('k','z'), "Kazakhstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Lebanon", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lithuania", 0,0,0 }, +{ IDX_2C('l','u'), "Luxembourg", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia", 0,0,0 }, +{ IDX_2C('l','y'), "Libya", 0,0,0 }, +{ IDX_2C('m','a'), "Morocco", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Marshall Islands", 0,0,0 }, +{ IDX_2C('m','k'), "Macedonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolia", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Northern Mariana Islands", 0,0,0 }, +{ IDX_2C('m','q'), "Martinique", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldives", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexico", 0,0,0 }, +{ IDX_2C('m','y'), "Malaysia", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambique", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "New Caledonia", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Island", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Netherlands", 0,0,0 }, +{ IDX_2C('n','o'), "Norway", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "New Zealand", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "French Polynesia", 0,0,0 }, +{ IDX_2C('p','g'), "Papua New Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Philippines", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Poland", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre and Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Romania", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Russian Federation", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saudi Arabia", 0,0,0 }, +{ IDX_2C('s','b'), "Solomon Islands", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Sweden", 0,0,0 }, +{ IDX_2C('s','g'), "Singapore", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenia", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbard and Jan Mayen Islands", 0,0,0 }, +{ IDX_2C('s','k'), "Slovakia", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Suriname", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome and Principe", 0,0,0 }, +{ IDX_2C('s','u'), "Soviet Union", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Turks and Caicos Islands", 0,0,0 }, +{ IDX_2C('t','d'), "Chad", 0,0,0 }, +{ IDX_2C('t','f'), "French Southern Territories", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Thailand", 0,0,0 }, +{ IDX_2C('t','j'), "Tajikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisia", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Portuguese Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turkey", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad and Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraine", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "United Kingdom", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying Islands", 0,0,0 }, +{ IDX_2C('u','s'), "United States", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatican City State (Holy See)", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent and the Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Virgin Islands (British)", 0,0,0 }, +{ IDX_2C('v','i'), "Virgin Islands (U.S.)", 0,0,0 }, +{ IDX_2C('v','n'), "Viet Nam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis and Futuna Islands", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Yugoslavia", 0,0,0 }, +{ IDX_2C('z','a'), "South Africa", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0 , NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.catalan b/lang/webalizer_lang.catalan new file mode 100644 index 0000000..d46442c --- /dev/null +++ b/lang/webalizer_lang.catalan @@ -0,0 +1,639 @@ +/* + webalizer_lang.catalan + + Webalizer V2.0x Language Support file for Catalan. + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 19-Aug-1998 Translated by Jordi Bruguera (jordi@t800.grn.es) + 21-Sep-1998 Additional corrections by Jordi Bruguera (jordi@t800.grn.es) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 05-Jul-1999 Additional corrections by Jordi Bruguera (jordi@t800.grn.es) + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 18-Oct-2000 Translated new strings for version 2.01-06 (jordi@t800.grn.es) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + 16-Jan-2011 Adapted to Softcatalà style by Jordi Mallach (jordi@debian.org) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Català"; +char *langcode = "ca"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "registres"; +char *msg_addresses="adreces"; +char *msg_ignored = "ignorats"; +char *msg_bad = "erronis"; +char *msg_in = "en"; +char *msg_seconds = "segons"; + +/* progress and setup error messages */ +char *msg_log_err = "Error: no s'ha pogut obrir el fitxer de registres"; +char *msg_log_use = "S'està emprant el registre"; +char *msg_dir_err = "Error: no es pot canviar al directori especificat"; +char *msg_dir_use = "S'està creant els resultats a"; +char *msg_cur_dir = "el directori actual"; +char *msg_hostname= "Informe per al servidor"; +char *msg_ign_hist= "S'està ignorant l'historial anterior..."; +char *msg_no_hist = "No s'ha trobat el fitxer de l'historial..."; +char *msg_get_hist= "S'està llegint el fitxer de l'historial..."; +char *msg_put_hist= "S'està desant la informació de l'historial..."; +char *msg_hist_err= "Error: no es pot escriure al fitxer de l'historial"; +char *msg_bad_hist= "Error: s'està descartant un registre no vàlid"; +char *msg_bad_conf= "Error: no es pot obrir el fitxer de configuració"; +char *msg_bad_key = "Avís: la paraula clau no és vàlida"; +char *msg_bad_date= "Error: s'està ometent el registre (data errònia)"; +char *msg_ign_nscp= "S'està ometent el registre de capcalera del Netscape"; +char *msg_bad_rec = "S'està ometent un registre erroni"; +char *msg_no_vrec = "No s'ha trobat cap registre vàlid!"; +char *msg_gen_rpt = "S'està generant l'informe per a"; +char *msg_gen_sum = "S'està generant l'informe resumit"; +char *msg_get_data= "S'estan llegint dades de l'execució anterior..."; +char *msg_put_data= "S'estan desant les dades de l'execució actual..."; +char *msg_no_data = "No s'han trobat les dades de l'execució anterior..."; +char *msg_bad_data= "Error: no es pot recuperar les dades de l'execució"; +char *msg_data_err= "Error: no es poden desar les dades de l'execució actual"; +char *msg_dup_data= "Avís: S'han trobat dades que potser són duplicades"; + +/* DNS Stuff */ +char *msg_dns_nocf= "No s'ha especificat el fitxer de memòria cau, s'està avortant..."; +char *msg_dns_nodb= "Error: no es pot obrir el fitxer de memòria cau de DNS"; +char *msg_dns_nolk= "Error: no es pot blocar el fitxer de memòria cau de DNS"; +char *msg_dns_usec= "S'està emprant el fitxer de memòria cau de DNS"; +char *msg_dns_rslv= "Recerca DNS"; +char *msg_dns_none= "Cap a processar"; +char *msg_dns_abrt= "El suport de DNS no és present, s'està avortant..."; + +/* Geolocation stuff */ +char *msg_geo_open= "S'ha produït un error en obrir el fitxer"; +char *msg_geo_use = "S'està emprant"; +char *msg_geo_nolu= "consultes inhabilitades"; +char *msg_geo_dflt= "predeterminat"; + +/* memory allocation errors */ +char *msg_nomem_ts= "No s'ha pogut assignar prou memòria, es desactiva l'opció «Llocs principals»"; +char *msg_nomem_tr= "No s'ha pogut assignar prou memòria, es desactiva l'opció «Referents principals»"; +char *msg_nomem_tu= "No s'ha pogut assignar prou memòria, es desactiva l'opció «URL més visitades»"; +char *msg_nomem_tc= "No s'ha pogut assignar prou memòria, es desactiva l'opció «Països d'origen principals"; +char *msg_nomem_ta= "No s'ha pogut assignar prou memòria, es desactiva l'opció «Navegadors principals»"; +char *msg_nomem_tsr="No s'ha pogut assignar prou memòria, es desactiva l'opció «Cadenes de recerca principals»"; +char *msg_nomem_ti= "No s'ha pogut assignar prou memòria, es desactiva l'opció «Noms d'usuari principals»"; +char *msg_nomem_dh= "S'ha produït un error en afegir el nom del node (diari), s'està ometent"; +char *msg_nomem_mh= "S'ha produït un error en afegir el nom del node (mensual), s'està ometent"; +char *msg_nomem_u = "S'ha produït un error en afegir el node de les URL, s'està ometent"; +char *msg_nomem_a = "S'ha produït un error en afegir el node dels navegadors, s'està ometent"; +char *msg_nomem_r = "S'ha produït un error en afegir el node dels referents, s'està ometent"; +char *msg_nomem_sc= "S'ha produït un error en afegir el node de cadenes de recerca, s'està ometent"; +char *msg_nomem_i = "S'ha produït un error en afegir el node de noms d'usuari, s'està ometent"; + +/* registre record errors */ +char *msg_big_rec = "Error: S'està ometent una entrada del registre massa gran"; +char *msg_big_host= "Avís: S'està truncant el nom del servidor, que és massa gran"; +char *msg_big_date= "Avís: S'està truncant el camp de la data, que és massa gran"; +char *msg_big_req = "Avís: S'està truncant el camp de la petició, que és massa gran"; +char *msg_big_ref = "Avís: S'està truncant el camp de l'enllaç d'origen, que és massa gran"; +char *msg_big_user= "Avís: S'està truncant un nom d'usuari massa llarg"; +char *msg_big_one = "Avís: La cadena supera la mida permesa"; + +/* misc errors */ +char *msg_no_open = "Error: No s'ha pogut obrir el fitxer"; + +/* Help display... */ +char *h_usage1 = "Funcionament"; +char *h_usage2 = "[opcions] [fitxer històric (log)]"; +char *h_msg[]= { + "-h = mostra aquest missatge d'ajuda" , + "-V = mostra la versió del programa" , + "-v = sigues detallat" , + "-d = mostra informació de depuració addicional" , + "-F tipus = tipus de registre. tipus=(clf | ftp | squid | w3c)", + "-f = omet els errors de seqüència" , + "-i = descarta el fitxer de l'historial" , + "-p = conserva l'estat (incremental)" , + "-b = omet l'estat (incremental)" , + "-q = suprimeix els missatges informatius" , + "-Q = suprimeix TOTS els misatges" , + "-Y = suprimeix la gràfica de països" , + "-G = suprimeix la gràfica per hores" , + "-H = suprimeix les estadístiques per hores" , + "-L = suprimeix les llegendes de color dels gràfics", + "-l num = empra num línies de fons a la gràfica)" , + "-m num = valor del temps d'una visita (segons)" , + "-T = mostra el temps de la temporització" , + "-c fitxer = empra el fitxer de configuració «fitxer»" , + "-n nom = nom de màquina a emprar" , + "-o dir = directori de sortida a emprar" , + "-t nom = empra el títol «nom» per a l'informe" , + "-a nom = amaga la informació relativa al navegador «nom»" , + "-r nom = amaga la informació relativa als referents «nom»", + "-s nom = amaga la informació relativa al lloc «nom»" , + "-u nom = amaga la informació relativa a les URL visitades «nom»", + "-x nom = empra l'extensió de fitxer «nom»" , + "-O nom = omet la pàgina «nom»" , + "-P nom = tipus de l'extensió de la pàgina «nom»" , + "-I nom = àlias de l'índex «nom»" , + "-K núm = mostra núm mesos a la taula de resum" , + "-k núm = mostra núm mesos a la gràfica de resum" , + "-A núm = mostra els núm primers navegadors" , + "-C núm = mostra els núm primers països" , + "-R núm = mostra els núm primers referents" , + "-S núm = mostra els núm primers servidors" , + "-U núm = mostra els núm primers URL" , + "-e núm = mostra les núm primeres pàgines d'entrada" , + "-E núm = mostra les núm primeres pàgines de sortida" , + "-g núm = agrupa els dominis a «núm» nivells" , + "-X = amaga els llocs individuals" , + "-z dir = empra les banderes nacionals de «dir»" , +#ifdef USE_DNS + "-D fitxer = empra el fitxer de memòria cau de DNS «fitxer»", + "-N num = nombre de processos DNS (0=inhabilita)" , + "-j = habilita les cerques GeoDB natives" , + "-J nom = empra la base de dades de GeoDB «fitxer»" , +#endif +#ifdef USE_GEOIP + "-w = habilita les cerques de GeoIP" , + "-W nom = empra la base de dades de GeoIP «fitxer»" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Període resumit"; +char *msg_hhdr_gt = "Generat el"; + +/* main index strings */ +char *msg_main_us = "Resum d'accessos per a"; +char *msg_main_per= "Resum per mesos"; +char *msg_main_sum= "Resum per mesos"; +char *msg_main_da = "Mitjana diària"; +char *msg_main_mt = "Totals del mes"; + +/* month HTML page strings */ +char *msg_hmth_du = "Ús diari per a"; +char *msg_hmth_hu = "Ús horari per a"; + +/* table header strings */ +char *msg_h_by = "Per"; +char *msg_h_avg = "Mitjana"; +char *msg_h_max = "Màx"; +char *msg_h_total = "Total"; +char *msg_h_totals= "Totals"; +char *msg_h_day = "Dia"; +char *msg_h_mth = "Mes"; +char *msg_h_hour = "Hora"; +char *msg_h_hits = "Accessos"; +char *msg_h_pages = "Pàgines"; +char *msg_h_visits= "Visites"; +char *msg_h_files = "Fitxers"; +char *msg_h_sites = "Navegadors"; +char *msg_h_xfer = "KBytes"; +char *msg_h_hname = "Visitant"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Navegador"; +char *msg_h_ref = "Referent"; +char *msg_h_ctry = "País"; +char *msg_h_search= "Cadena de recerca"; +char *msg_h_uname = "Nom d'usuari"; + +/* links along top of page */ +char *msg_hlnk_ds = "Estadístiques diàries"; +char *msg_hlnk_hs = "Estadístiques horàries"; +char *msg_hlnk_u = "URLs"; +char *msg_hlnk_s = "Visitants"; +char *msg_hlnk_a = "Navegadors"; +char *msg_hlnk_c = "Països"; +char *msg_hlnk_r = "Referents"; +char *msg_hlnk_en = "Entrada"; +char *msg_hlnk_ex = "Sortida"; +char *msg_hlnk_sr = "Recerca"; +char *msg_hlnk_i = "Usuaris"; + +/* monthly total table */ +char *msg_mtot_ms = "Estadístiques mensuals"; +char *msg_mtot_th = "Accessos totals"; +char *msg_mtot_tf = "Fitxers totals"; +char *msg_mtot_tx = "KBytes totals"; +char *msg_mtot_us = "Servidors totals"; +char *msg_mtot_ur = "Referents totals"; +char *msg_mtot_ua = "Navegadors totals"; +char *msg_mtot_uu = "URL totals"; +char *msg_mtot_ui = "Noms d'usuari totals"; +char *msg_mtot_mhd= "Accessos per dia"; +char *msg_mtot_mhh= "Accessos per hora"; +char *msg_mtot_mfd= "Fitxers per dia"; +char *msg_mtot_mpd= "Pàgines per dia"; +char *msg_mtot_msd= "Servidors per dia"; +char *msg_mtot_mvd= "Visites per dia"; +char *msg_mtot_mkd= "KBytes per dia"; +char *msg_mtot_rc = "Accessos segons codi de resposta"; + +/* daily total table */ +char *msg_dtot_ds = "Estadístiques diàries per a"; + +/* hourly total table */ +char *msg_htot_hs = "Estadístiques horàries per a"; + +/* country pie chart */ +char *msg_ctry_use= "Ús per països per a"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Els"; +char *msg_top_of = "primers d'un total de"; +char *msg_top_s = "visitants"; +char *msg_top_u = "URL"; +char *msg_top_r = "referents"; +char *msg_top_a = "navegadors"; +char *msg_top_c = "països"; +char *msg_top_en = "pàgines d'entrada"; +char *msg_top_ex = "pàgines de sortida"; +char *msg_top_sr = "cadenes de recerca"; +char *msg_top_i = "noms d'usuari"; +char *msg_v_sites = "Mostra tots els llocs visitats"; +char *msg_v_urls = "Mostra totes les URL"; +char *msg_v_refs = "Mostra tots els referents"; +char *msg_v_agents= "Mostra tots els navegadors"; +char *msg_v_search= "Mostra totes les cadenes de recerca"; +char *msg_v_users = "Mostra tots els noms d'usuari"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ + +char *s_month[12]={ "gen", "feb", "mar", + "abr", "mai", "jun", + "jul", "ago", "set", + "oct", "nov", "des"}; + +/* long month names - can be any length */ +char *l_month[12]={ "gener", "febrer", "març", "abril", + "maig", "juny", "juliol", "agost", + "setembre", "octubre", "novembre", "desembre"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Codi de resposta no definit", 0 }, + { "Codi 100 - Continua", 0 }, + { "Codi 101 - S'està commutant protocols", 0 }, + { "Codi 200 - D'acord", 0 }, + { "Codi 201 - Creat", 0 }, + { "Codi 202 - Acceptada", 0 }, + { "Codi 203 - Informació no autoritativa", 0 }, + { "Codi 204 - Sense contingut", 0 }, + { "Codi 205 - Recarregueu el contingut", 0 }, + { "Codi 206 - Contingut parcial", 0 }, + { "Codi 300 - Múltiples opcions", 0 }, + { "Codi 301 - Mogut permanentment", 0 }, + { "Codi 302 - Trobat", 0 }, + { "Codi 303 - Vegeu altres", 0 }, + { "Codi 304 - No modificat", 0 }, + { "Codi 305 - Empreu un servidor intermediari", 0 }, + { "Codi 307 - Mogut temporalment", 0 }, + { "Codi 400 - Petició errònia", 0 }, + { "Codi 401 - No autoritzat", 0 }, + { "Codi 402 - Es requereix pagament", 0 }, + { "Codi 403 - Prohibit", 0 }, + { "Codi 404 - No trobat", 0 }, + { "Codi 405 - Mètode no permès", 0 }, + { "Codi 406 - No acceptable", 0 }, + { "Codi 407 - Es requereix autenticació proxy", 0 }, + { "Codi 408 - Temps d'espera exhaurit", 0 }, + { "Codi 409 - Conflicte", 0 }, + { "Codi 410 - Ja no és disponible", 0 }, + { "Codi 411 - Mida requerida" , 0 }, + { "Codi 412 - Precondició fallida", 0 }, + { "Codi 413 - Petició massa gran", 0 }, + { "Codi 414 - URI de la petició massa llarga", 0 }, + { "Codi 415 - Tipus de medi no implementat", 0 }, + { "Codi 416 - Rang sol·licitat no disponible", 0 }, + { "Codi 417 - Expectativa fallida", 0 }, + { "Codi 500 - Error intern del servidor", 0 }, + { "Codi 501 - No implementat", 0 }, + { "Codi 502 - Passarel·la errònia", 0 }, + { "Codi 503 - Servei no disponible", 0 }, + { "Codi 504 - Temps d'espera de la pasarel·la exhaurit",0 }, + { "Codi 505 - Versió d'HTTP no implementada", 0 } }; + +char *msg_title = "Estadístiques d'accés per a"; +char *msg_h_other = "Altre"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "No resolt/Desconegut", 0,0,0 }, +{ IDX_3C('c','o','m'), "Commercial (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Educatiu (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "Govern dels EUA (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "Internacional (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "Exèrcit dels EUA (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Xarxa (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Org. sense ànim de lucre (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Negoci genèric (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Comunitat catalana (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Comunitat Àsia Pacífic (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Associació cooperativa (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"DPN genèric (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Recursos humans (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"DPN genèric mòbil (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individu (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Address Routing (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Camp OTAN (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museus (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Ind. viatges(travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Illa de l'Ascensió", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "Emirats Àrabs Units", 0,0,0 }, +{ IDX_2C('a','f'), "Afganistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua i Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguila", 0,0,0 }, +{ IDX_2C('a','l'), "Albània", 0,0,0 }, +{ IDX_2C('a','m'), "Armènia", 0,0,0 }, +{ IDX_2C('a','n'), "Antilles Holandeses", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antàrtida", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "Samoa Americanes", 0,0,0 }, +{ IDX_2C('a','t'), "Àustria", 0,0,0 }, +{ IDX_2C('a','u'), "Austràlia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Illes Åland", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaitjan", 0,0,0 }, +{ IDX_2C('b','a'), "Bòsnia i Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Bèlgica", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgària", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benín", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthélemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei", 0,0,0 }, +{ IDX_2C('b','o'), "Bolívia", 0,0,0 }, +{ IDX_2C('b','r'), "Brasil", 0,0,0 }, +{ IDX_2C('b','s'), "Bahames", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet", 0,0,0 }, +{ IDX_2C('b','w'), "Botsuana", 0,0,0 }, +{ IDX_2C('b','y'), "Bielorússia", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Canadà", 0,0,0 }, +{ IDX_2C('c','c'), "Illa de Cocos", 0,0,0 }, +{ IDX_2C('c','d'), "República Democràtica del Congo", 0,0,0 }, +{ IDX_2C('c','f'), "República Centrafricana", 0,0,0 }, +{ IDX_2C('c','g'), "República del Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Suïssa", 0,0,0 }, +{ IDX_2C('c','i'), "Costa de Vori", 0,0,0 }, +{ IDX_2C('c','k'), "Arxipèlag (Illes) de Cook", 0,0,0 }, +{ IDX_2C('c','l'), "Xile", 0,0,0 }, +{ IDX_2C('c','m'), "Camerun", 0,0,0 }, +{ IDX_2C('c','n'), "Xina", 0,0,0 }, +{ IDX_2C('c','o'), "Colòmbia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cap Verd", 0,0,0 }, +{ IDX_2C('c','x'), "Illa de Christmas", 0,0,0 }, +{ IDX_2C('c','y'), "Xipre", 0,0,0 }, +{ IDX_2C('c','z'), "Txèquia", 0,0,0 }, +{ IDX_2C('d','e'), "Alemanya", 0,0,0 }, +{ IDX_2C('d','j'), "Gibuti", 0,0,0 }, +{ IDX_2C('d','k'), "Dinamarca", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "República Dominicana", 0,0,0 }, +{ IDX_2C('d','z'), "Algèria", 0,0,0 }, +{ IDX_2C('e','c'), "Equador", 0,0,0 }, +{ IDX_2C('e','e'), "Estònia", 0,0,0 }, +{ IDX_2C('e','g'), "Egipte", 0,0,0 }, +{ IDX_2C('e','h'), "Sàhara Occidental", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Espanya", 0,0,0 }, +{ IDX_2C('e','t'), "Etiopia", 0,0,0 }, +{ IDX_2C('e','u'), "Unió Europea", 0,0,0 }, +{ IDX_2C('f','i'), "Finlàndia", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Illes Malvines (Falkland)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronèsia", 0,0,0 }, +{ IDX_2C('f','o'), "Illes Fer-óer", 0,0,0 }, +{ IDX_2C('f','r'), "França", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Gran Bretanya", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Geòrgia", 0,0,0 }, +{ IDX_2C('g','f'), "Guaiana Francesa", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Grenlàndia", 0,0,0 }, +{ IDX_2C('g','m'), "Gàmbia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadalupe", 0,0,0 }, +{ IDX_2C('g','q'), "Guinea Equatorial", 0,0,0 }, +{ IDX_2C('g','r'), "Grècia", 0,0,0 }, +{ IDX_2C('g','s'), "Illes Geòrgia del Sud i Sandwich del Sud", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guaiana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Illa Heard i Illes McDonald", 0,0,0 }, +{ IDX_2C('h','n'), "Hondures", 0,0,0 }, +{ IDX_2C('h','r'), "Croàcia", 0,0,0 }, +{ IDX_2C('h','t'), "Haití", 0,0,0 }, +{ IDX_2C('h','u'), "Hongria", 0,0,0 }, +{ IDX_2C('i','d'), "Indonèsia", 0,0,0 }, +{ IDX_2C('i','e'), "Irlanda", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Illa de Man", 0,0,0 }, +{ IDX_2C('i','n'), "Índia", 0,0,0 }, +{ IDX_2C('i','o'), "Territori Britànic de l'Oceà Índic",0,0,0 }, +{ IDX_2C('i','q'), "Iraq", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Islàndia", 0,0,0 }, +{ IDX_2C('i','t'), "Itàlia", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Jordània", 0,0,0 }, +{ IDX_2C('j','p'), "Japó", 0,0,0 }, +{ IDX_2C('k','e'), "Kenya", 0,0,0 }, +{ IDX_2C('k','g'), "Quirguisistan", 0,0,0 }, +{ IDX_2C('k','h'), "Cambotja", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comores", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts i Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Corea del Nord", 0,0,0 }, +{ IDX_2C('k','r'), "Corea del Sud", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Illes Caimà", 0,0,0 }, +{ IDX_2C('k','z'), "Casaquistan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Líban", 0,0,0 }, +{ IDX_2C('l','c'), "Santa Llúcia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Libèria", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lituània", 0,0,0 }, +{ IDX_2C('l','u'), "Luxemburg", 0,0,0 }, +{ IDX_2C('l','v'), "Letònia", 0,0,0 }, +{ IDX_2C('l','y'), "Líbia", 0,0,0 }, +{ IDX_2C('m','a'), "Marroc", 0,0,0 }, +{ IDX_2C('m','c'), "Mònaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldàvia", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Illa de Sant Martí (part francesa)",0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Illes Marshall", 0,0,0 }, +{ IDX_2C('m','k'), "Macedònia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Mianmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongòlia", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Illes Mariannes Septentrionals", 0,0,0 }, +{ IDX_2C('m','q'), "Martinica", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritània", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Maurici", 0,0,0 }, +{ IDX_2C('m','v'), "Maldives", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mèxic", 0,0,0 }, +{ IDX_2C('m','y'), "Malàisia", 0,0,0 }, +{ IDX_2C('m','z'), "Moçambic", 0,0,0 }, +{ IDX_2C('n','a'), "Namíbia", 0,0,0 }, +{ IDX_2C('n','c'), "Nova Caledònia", 0,0,0 }, +{ IDX_2C('n','e'), "Níger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk", 0,0,0 }, +{ IDX_2C('n','g'), "Nigèria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Països Baixos", 0,0,0 }, +{ IDX_2C('n','o'), "Noruega", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Naüru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "Nova Zelanda", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panamà", 0,0,0 }, +{ IDX_2C('p','e'), "Perú", 0,0,0 }, +{ IDX_2C('p','f'), "Polinèsia Francesa", 0,0,0 }, +{ IDX_2C('p','g'), "Nova Guinea Pàpua", 0,0,0 }, +{ IDX_2C('p','h'), "Filipines", 0,0,0 }, +{ IDX_2C('p','k'), "Paquistan", 0,0,0 }, +{ IDX_2C('p','l'), "Polònia", 0,0,0 }, +{ IDX_2C('p','m'), "Saint Pierre i Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Illes Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestina", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguai", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunió", 0,0,0 }, +{ IDX_2C('r','o'), "Romania", 0,0,0 }, +{ IDX_2C('r','s'), "Sèrbia", 0,0,0 }, +{ IDX_2C('r','u'), "Rússia", 0,0,0 }, +{ IDX_2C('r','w'), "Ruanda", 0,0,0 }, +{ IDX_2C('s','a'), "Aràbia Saudita", 0,0,0 }, +{ IDX_2C('s','b'), "Illes Salomó", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Suècia", 0,0,0 }, +{ IDX_2C('s','g'), "Singapur", 0,0,0 }, +{ IDX_2C('s','h'), "Santa Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Eslovènia", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbard i Jan Mayen", 0,0,0 }, +{ IDX_2C('s','k'), "Eslovàquia", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somàlia", 0,0,0 }, +{ IDX_2C('s','r'), "Surinam", 0,0,0 }, +{ IDX_2C('s','t'), "São Tome i Príncipe", 0,0,0 }, +{ IDX_2C('s','u'), "Unió Soviètica", 0,0,0 }, +{ IDX_2C('s','v'), "el Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Síria", 0,0,0 }, +{ IDX_2C('s','z'), "Suazilàndia", 0,0,0 }, +{ IDX_2C('t','c'), "Illes de Turks i Caicos", 0,0,0 }, +{ IDX_2C('t','d'), "Txad", 0,0,0 }, +{ IDX_2C('t','f'), "Territoris Francesos del Sud", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Tailànda", 0,0,0 }, +{ IDX_2C('t','j'), "Tatgiquistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor Oriental", 0,0,0 }, +{ IDX_2C('t','m'), "Turcmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunísia", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Timor (.tp)", 0,0,0 }, +{ IDX_2C('t','r'), "Turquia", 0,0,0 }, +{ IDX_2C('t','t'), "Trinitat i Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraine", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "Regne Unit", 0,0,0 }, +{ IDX_2C('u','m'), "Illes Perifèriques Menors dels EUA",0,0,0 }, +{ IDX_2C('u','s'), "Estats Units d'Amèrica", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguai", 0,0,0 }, +{ IDX_2C('u','z'), "Usbequistan", 0,0,0 }, +{ IDX_2C('v','a'), "la Ciutat del Vaticà", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent i les Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Veneçuela", 0,0,0 }, +{ IDX_2C('v','g'), "Illes Verges Britàniques", 0,0,0 }, +{ IDX_2C('v','i'), "Illes Verges Americanes", 0,0,0 }, +{ IDX_2C('v','n'), "Vietnam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis i Futuna", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Iemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Iugoslàvia", 0,0,0 }, +{ IDX_2C('z','a'), "República de Sud-àfrica", 0,0,0 }, +{ IDX_2C('z','m'), "Zàmbia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbàbue", 0,0,0 }, +{ IDX_2C('a','1'), "Servidor intermediari anònim", 0,0,0 }, +{ IDX_2C('a','2'), "Proveïdor satèl·lit", 0,0,0 }, +{ IDX_2C('o','1'), "Altres", 0,0,0 }, +{ IDX_2C('a','p'), "Regió Àsia/Pacífic", 0,0,0 }, +{ IDX_3C('l','a','n'), "Xarxa local (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.chinese b/lang/webalizer_lang.chinese new file mode 100644 index 0000000..9b23028 --- /dev/null +++ b/lang/webalizer_lang.chinese @@ -0,0 +1,633 @@ +/* + webalizer_lang.chinese + + Webalizer V2.0x Language Support file for Chinese. + 30-Apr-1999 Translated to Chinese by Daniel Gau + 29-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Chinese"; +char *langcode = "zh"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "°O¿ý"; +char *msg_addresses="addresses"; +char *msg_ignored = "©¿²¤"; +char *msg_bad = "bad"; +char *msg_in = "in"; +char *msg_seconds = "¬í"; + +/* progress and setup error messages */ +char *msg_log_err = "¿ù»~¡GµLªk¶}±Ò°O¿ýÀÉ"; +char *msg_log_use = "¨Ï¥Î°O¿ýÀÉ"; +char *msg_dir_err = "¿ù»~¡GµLªkÅܧó¥Ø¿ý"; +char *msg_dir_use = "²£¥Í¿é¥X©ó"; +char *msg_cur_dir = "¥Ø«eªº¥Ø¿ý"; +char *msg_hostname= "¥D¾÷¦WºÙ¬O"; +char *msg_ign_hist= "©¿²¤¤§«e¾ú¥v°O¿ý(history)"; +char *msg_no_hist = "¾ú¥v°O¿ý(history file)§ä¤£¨ì¡K"; +char *msg_get_hist= "Ū¨ú¾ú¥v°O¿ý"; +char *msg_put_hist= "Àx¦s¾ú¥v°O¿ý¸ê°T"; +char *msg_hist_err= "¿ù»~¡GµLªk¼g¤J¾ú¥v°O¿ý"; +char *msg_bad_hist= "¿ù»~¡G©¿²¤µL®Äªº¾ú¥v°O¿ý"; +char *msg_bad_conf= "¿ù»~¡GµLªk¶}±Ò³]©wÀÉ"; +char *msg_bad_key = "ĵ§i¡GµL®ÄªºÃöÁä¦r"; +char *msg_bad_date= "¿ù»~¡G¸õ¹L¸Óµ§°O¿ý¡]¤é´Á®æ¦¡¦³°ÝÃD¡^"; +char *msg_ign_nscp= "Skipping Netscape header record"; +char *msg_bad_rec = "Skipping bad record"; +char *msg_no_vrec = "§ä¤£¨ì¦³®Äªº°O¿ý¡I"; +char *msg_gen_rpt = "²£¥Í³øªíµ¹"; +char *msg_gen_sum = "²£¥Í·JÁ`³øªí"; +char *msg_get_data= "Reading previous run data.."; +char *msg_put_data= "Saving current run data..."; +char *msg_no_data = "Previous run data not found..."; +char *msg_bad_data= "Error: Unable to restore run data"; +char *msg_data_err= "Error: Unable to save current run data"; +char *msg_dup_data= "Warning: Possible duplicate data found"; + +/* DNS Stuff */ +char *msg_dns_nocf= "No cache file specified, aborting..."; +char *msg_dns_nodb= "Error: Unable to open DNS cache file"; +char *msg_dns_nolk= "Error: Unable to lock DNS cache file"; +char *msg_dns_usec= "Using DNS cache file"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "None to process"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Can't allocate enough memory, Top Sites disabled!"; +char *msg_nomem_tr= "Can't allocate enough memory, Top Referrers disabled!"; +char *msg_nomem_tu= "Can't allocate enough memory, Top URLs disabled!"; +char *msg_nomem_tc= "Can't allocate enough memory, Top Countries disabled!"; +char *msg_nomem_ta= "Can't allocate enough memory, Top User Agents disabled!"; +char *msg_nomem_tsr="Can't Allocate enough memory, Top Search Strings disabled!"; +char *msg_nomem_ti= "Can't allocate enough memory, Top Usernames disabled!"; +char *msg_nomem_dh= "Error adding host node (daily), skipping"; +char *msg_nomem_mh= "Error adding host node (monthly), skipping"; +char *msg_nomem_u = "Error adding URL node, skipping"; +char *msg_nomem_a = "Error adding User Agent node, skipping"; +char *msg_nomem_r = "Error adding Referrer node, skipping"; +char *msg_nomem_sc= "Error adding Search String node, skipping"; +char *msg_nomem_i = "Error adding Username node, skipping"; + +/* log record errors */ +char *msg_big_rec = "Error: Skipping oversized log record"; +char *msg_big_host= "Warning: Truncating oversized hostname"; +char *msg_big_date= "Warning: Truncating oversized date field"; +char *msg_big_req = "Warning: Truncating oversized request field"; +char *msg_big_ref = "Warning: Truncating oversized referrer field"; +char *msg_big_user= "Warning: Truncating oversized username"; +char *msg_big_one = "Warning: String exceeds storage size"; + +/* misc errors */ +char *msg_no_open = "Error: Unable to open file"; + +/* Help display... */ +char *h_usage1 = "Usage"; +char *h_usage2 = "[options] [log file]"; +char *h_msg[]= { + "-h = print this help message" , + "-V = print version information" , + "-v = be verbose" , + "-d = print additional debug info" , + "-F type = Log type. type= (clf | ftp | squid | w3c)", + "-f = fold sequence errors" , + "-i = ignore history file" , + "-p = preserve state (incremental)" , + "-b = ignore state (incremental)" , + "-q = supress informational messages" , + "-Q = supress _ALL_ messages" , + "-Y = supress country graph" , + "-G = supress hourly graph" , + "-H = supress hourly stats" , + "-L = supress color coded graph legends" , + "-l num = use num background lines on graph" , + "-m num = Visit timeout value (seconds)" , + "-T = print timing information" , + "-c file = use configuration file 'file'" , + "-n name = hostname to use" , + "-o dir = output directory to use" , + "-t name = report title 'name'" , + "-a name = hide user agent 'name'" , + "-r name = hide referrer 'name'" , + "-s name = hide site 'name'" , + "-u name = hide URL 'name'" , + "-x name = Use filename extension 'name'" , + "-O name = Omit page 'name'" , + "-P name = Page type extension 'name'" , + "-I name = Index alias 'name'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Display num top agents" , + "-C num = Display num top countries" , + "-R num = Display num top referrers" , + "-S num = Display num top sites" , + "-U num = Display num top URLs" , + "-e num = Display num top Entry Pages" , + "-E num = Display num top Exit Pages" , + "-g num = Group Domains to 'num' levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Use DNS Cache file 'name'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Summary Period"; +char *msg_hhdr_gt = "²£¥Í®É¶¡¡G"; + +/* main index strings */ +char *msg_main_us = "Usage Statistics for"; +/* char *msg_main_per= " 12 ­Ó¤ë"; */ +char *msg_main_per= "¨C¤ë·JÁ`²Î­p"; +char *msg_main_sum= "¨C¤ë·JÁ`²Î­p"; +char *msg_main_da = "¨C¤é¥­§¡"; +char *msg_main_mt = "¨C¤ëÁ`­p"; + +/* month HTML page strings */ +char *msg_hmth_du = "Daily usage for"; +char *msg_hmth_hu = "Hourly usage for"; + +/* table header strings */ +char *msg_h_by = "By"; +char *msg_h_avg = "¥­§¡"; +char *msg_h_max = "Max"; +char *msg_h_total = "Á`©M"; +char *msg_h_totals= "Á`©M"; +char *msg_h_day = "¤é"; +char *msg_h_mth = "¤ë"; +char *msg_h_hour = "¤p®É"; +char *msg_h_hits = "Ū¨ú¼Æ"; +char *msg_h_pages = "Pages"; +char *msg_h_visits= "Visits"; +char *msg_h_files = "ÀÉ®×"; +char *msg_h_sites = "ºô¯¸¼Æ"; +char *msg_h_xfer = "¶Ç°e¶q¡]KB¡^"; +char *msg_h_hname = "¥D¾÷¦WºÙ"; +char *msg_h_url = "ºô­¶¸ô®|"; +char *msg_h_agent = "ÂsÄý¾¹"; +char *msg_h_ref = "¨Ó·½ºô­¶"; +char *msg_h_ctry = "°ê®a"; +char *msg_h_search= "Search String"; +char *msg_h_uname = "Username"; + +/* links along top of page */ +char *msg_hlnk_ds = "¨C¤é²Î­p"; +char *msg_hlnk_hs = "¨C¤p®É²Î­p"; +char *msg_hlnk_u = "ºô­¶¸ô®|"; +char *msg_hlnk_s = "¨Ó·½ºô¯¸"; +char *msg_hlnk_a = "ÂsÄý¾¹"; +char *msg_hlnk_c = "°ê®a"; +char *msg_hlnk_r = "¨Ó·½ºô­¶"; +char *msg_hlnk_en = "Entry"; +char *msg_hlnk_ex = "Exit"; +char *msg_hlnk_sr = "Search"; +char *msg_hlnk_i = "Users"; + +/* monthly total table */ +char *msg_mtot_ms = "¨C¤ë²Î­p--"; +char *msg_mtot_th = "Á`Ū¨ú¼Æ"; +char *msg_mtot_tf = "Á`ÀÉ®×¼Æ"; +char *msg_mtot_tx = "Á`¶Ç°e¶q¡]KB¡^"; +char *msg_mtot_us = "¨Ó·½ºô¯¸Á`¼Æ¡]¤£¥]§t­«ÂЪ̡^"; +char *msg_mtot_ur = "¨Ó·½ºô­¶Á`¼Æ¡]¤£¥]§t­«ÂЪ̡^"; +char *msg_mtot_ua = "¨Ó·½ÂsÄý¾¹Á`¼Æ¡]¤£¥]§t­«ÂЪ̡^"; +char *msg_mtot_uu = "³QŪ¨úªººô­¶¸ô®|Á`¼Æ¡]¤£¥]§t­«ÂЪ̡^"; +char *msg_mtot_ui = "Total Unique Usernames"; +char *msg_mtot_mhd= "Hits per Day"; +char *msg_mtot_mhh= "Hits per Hour"; +char *msg_mtot_mfd= "Files per Day"; +char *msg_mtot_mpd= "Pages per Day"; +char *msg_mtot_msd= "Sites per Day"; +char *msg_mtot_mvd= "Visits per Day"; +char *msg_mtot_mkd= "KBytes per Day"; +char *msg_mtot_rc = "ºô­¶Åª¨ú®É¤§¦^À³¥N½X"; + +/* daily total table */ +char *msg_dtot_ds = "¨C¤é²Î­p "; + +/* hourly total table */ +char *msg_htot_hs = "¨C¤p®É²Î­p "; + +/* country pie chart */ +char *msg_ctry_use= "¨Ó·½°ê®a²Î­p "; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "¦C¥X«e"; +char *msg_top_of = "¦W¡A¦@¦³"; +char *msg_top_s = "­Óºô¯¸"; +char *msg_top_u = "ºô­¶¸ô®|"; +char *msg_top_r = "­Ó¨Ó·½ºô­¶"; +char *msg_top_a = "ºØÂsÄý¾¹"; +char *msg_top_c = "­Ó°ê®a"; +char *msg_top_en = "Total Entry Pages"; +char *msg_top_ex = "Total Exit Pages"; +char *msg_top_sr = "Total Search Strings"; +char *msg_top_i = "Total Usernames"; +char *msg_v_sites = "View All Sites"; +char *msg_v_urls = "View All URLs"; +char *msg_v_refs = "View All Referrers"; +char *msg_v_agents= "View All User Agents"; +char *msg_v_search= "View All Search Strings"; +char *msg_v_users = "View All Usernames"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "¤@¤ë", "¤G¤ë", "¤T¤ë", + "¥|¤ë", "¤­¤ë", "¤»¤ë", + "¤C¤ë", "¤K¤ë", "¤E¤ë", + "¤Q¤ë", "¤Q¤@¤ë", "¤Q¤G¤ë"}; + +/* long month names - can be any length */ +char *l_month[12]={ "¤@¤ë", "¤G¤ë", "¤T¤ë", + "¥|¤ë", "¤­¤ë", "¤»¤ë", + "¤C¤ë", "¤K¤ë", "¤E¤ë", + "¤Q¤ë", "¤Q¤@¤ë", "¤Q¤G¤ë"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Undefined response code", 0 }, + { "Code 100 - Continue", 0 }, + { "Code 101 - Switching Protocols", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Created", 0 }, + { "Code 202 - Accepted", 0 }, + { "Code 203 - Non-Authoritative Information", 0 }, + { "Code 204 - No Content", 0 }, + { "Code 205 - Reset Content", 0 }, + { "Code 206 - Partial Content", 0 }, + { "Code 300 - Multiple Choices", 0 }, + { "Code 301 - Moved Permanently", 0 }, + { "Code 302 - Found", 0 }, + { "Code 303 - See Other", 0 }, + { "Code 304 - Not Modified", 0 }, + { "Code 305 - Use Proxy", 0 }, + { "Code 307 - Moved Temporarily", 0 }, + { "Code 400 - Bad Request", 0 }, + { "Code 401 - Unauthorized", 0 }, + { "Code 402 - Payment Required", 0 }, + { "Code 403 - Forbidden", 0 }, + { "Code 404 - Not Found", 0 }, + { "Code 405 - Method Not Allowed", 0 }, + { "Code 406 - Not Acceptable", 0 }, + { "Code 407 - Proxy Authentication Required", 0 }, + { "Code 408 - Request Timeout", 0 }, + { "Code 409 - Conflict", 0 }, + { "Code 410 - Gone", 0 }, + { "Code 411 - Length Required", 0 }, + { "Code 412 - Precondition Failed", 0 }, + { "Code 413 - Request Entity Too Large", 0 }, + { "Code 414 - Request-URI Too Long", 0 }, + { "Code 415 - Unsupported Media Type", 0 }, + { "Code 416 - Requested Range Not Satisfiable", 0 }, + { "Code 417 - Expectation Failed", 0 }, + { "Code 500 - Internal Server Error", 0 }, + { "Code 501 - Not Implemented", 0 }, + { "Code 502 - Bad Gateway", 0 }, + { "Code 503 - Service Unavailable", 0 }, + { "Code 504 - Gateway Timeout", 0 }, + { "Code 505 - HTTP Version Not Supported", 0 } }; + +char *msg_title = "Usage Statistics for"; +char *msg_h_other = "Other"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Unresolved/Unknown", 0,0,0 }, +{ IDX_3C('c','o','m'), "Commercial (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Educational (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "US Government (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "International (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "US Military (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Network (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Non-Profit (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Address Routing (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Nato field (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "United Arab Emirates", 0,0,0 }, +{ IDX_2C('a','f'), "Afghanistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua and Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armenia", 0,0,0 }, +{ IDX_2C('a','n'), "Netherlands Antilles", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarctica", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "American Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Austria", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaijan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia and Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgium", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brazil", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Island", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Belarus", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Canada", 0,0,0 }, +{ IDX_2C('c','c'), "Cocos (Keeling) Islands", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Central African Republic", 0,0,0 }, +{ IDX_2C('c','g'), "Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Switzerland", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire (Ivory Coast)", 0,0,0 }, +{ IDX_2C('c','k'), "Cook Islands", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Cameroon", 0,0,0 }, +{ IDX_2C('c','n'), "China", 0,0,0 }, +{ IDX_2C('c','o'), "Colombia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Christmas Island", 0,0,0 }, +{ IDX_2C('c','y'), "Cyprus", 0,0,0 }, +{ IDX_2C('c','z'), "Czech Republic", 0,0,0 }, +{ IDX_2C('d','e'), "Germany", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Denmark", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Dominican Republic", 0,0,0 }, +{ IDX_2C('d','z'), "Algeria", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador", 0,0,0 }, +{ IDX_2C('e','e'), "Estonia", 0,0,0 }, +{ IDX_2C('e','g'), "Egypt", 0,0,0 }, +{ IDX_2C('e','h'), "Western Sahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Spain", 0,0,0 }, +{ IDX_2C('e','t'), "Ethiopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finland", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Falkland Islands (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronesia", 0,0,0 }, +{ IDX_2C('f','o'), "Faroe Islands", 0,0,0 }, +{ IDX_2C('f','r'), "France", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Great Britain (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgia", 0,0,0 }, +{ IDX_2C('g','f'), "French Guiana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Greenland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Equatorial Guinea", 0,0,0 }, +{ IDX_2C('g','r'), "Greece", 0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia and S. Sandwich Isls.", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard and McDonald Islands", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Croatia", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Hungary", 0,0,0 }, +{ IDX_2C('i','d'), "Indonesia", 0,0,0 }, +{ IDX_2C('i','e'), "Ireland", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "India", 0,0,0 }, +{ IDX_2C('i','o'), "British Indian Ocean Territory", 0,0,0 }, +{ IDX_2C('i','q'), "Iraq", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Iceland", 0,0,0 }, +{ IDX_2C('i','t'), "Italy", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Jordan", 0,0,0 }, +{ IDX_2C('j','p'), "Japan", 0,0,0 }, +{ IDX_2C('k','e'), "Kenya", 0,0,0 }, +{ IDX_2C('k','g'), "Kyrgyzstan", 0,0,0 }, +{ IDX_2C('k','h'), "Cambodia", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts and Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Korea, Democratic Republic of", 0,0,0 }, +{ IDX_2C('k','r'), "Korea, Republic of", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Cayman Islands", 0,0,0 }, +{ IDX_2C('k','z'), "Kazakhstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Lebanon", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lithuania", 0,0,0 }, +{ IDX_2C('l','u'), "Luxembourg", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia", 0,0,0 }, +{ IDX_2C('l','y'), "Libya", 0,0,0 }, +{ IDX_2C('m','a'), "Morocco", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Marshall Islands", 0,0,0 }, +{ IDX_2C('m','k'), "Macedonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolia", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Northern Mariana Islands", 0,0,0 }, +{ IDX_2C('m','q'), "Martinique", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldives", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexico", 0,0,0 }, +{ IDX_2C('m','y'), "Malaysia", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambique", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "New Caledonia", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Island", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Netherlands", 0,0,0 }, +{ IDX_2C('n','o'), "Norway", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "New Zealand", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "French Polynesia", 0,0,0 }, +{ IDX_2C('p','g'), "Papua New Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Philippines", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Poland", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre and Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Romania", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Russian Federation", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saudi Arabia", 0,0,0 }, +{ IDX_2C('s','b'), "Solomon Islands", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Sweden", 0,0,0 }, +{ IDX_2C('s','g'), "Singapore", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenia", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbard and Jan Mayen Islands", 0,0,0 }, +{ IDX_2C('s','k'), "Slovakia", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Suriname", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome and Principe", 0,0,0 }, +{ IDX_2C('s','u'), "Soviet Union", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Turks and Caicos Islands", 0,0,0 }, +{ IDX_2C('t','d'), "Chad", 0,0,0 }, +{ IDX_2C('t','f'), "French Southern Territories", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Thailand", 0,0,0 }, +{ IDX_2C('t','j'), "Tajikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisia", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Portuguese Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turkey", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad and Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraine", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "United Kingdom", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying Islands", 0,0,0 }, +{ IDX_2C('u','s'), "United States", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatican City State (Holy See)", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent and the Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Virgin Islands (British)", 0,0,0 }, +{ IDX_2C('v','i'), "Virgin Islands (U.S.)", 0,0,0 }, +{ IDX_2C('v','n'), "Viet Nam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis and Futuna Islands", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Yugoslavia", 0,0,0 }, +{ IDX_2C('z','a'), "South Africa", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.croatian b/lang/webalizer_lang.croatian new file mode 100644 index 0000000..cbd921d --- /dev/null +++ b/lang/webalizer_lang.croatian @@ -0,0 +1,629 @@ +/* + webalizer_lang.croatian + + Webalizer V2.0x Language Support file for Croatian. + 28-Jun-1999 Original translation by Dinko Korunic and Mia Carapina + 30-Apr-2001 updated for v2.0 by Dinko Korunic + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Croatian"; +char *langcode = "hr"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "records"; +char *msg_addresses="addresses"; +char *msg_ignored = "ignored"; +char *msg_bad = "bad"; +char *msg_in = "in"; +char *msg_seconds = "seconds"; + +/* progress and setup error messages */ +char *msg_log_err = "Error: Can't open log file"; +char *msg_log_use = "Using logfile"; +char *msg_dir_err = "Error: Can't change directory to"; +char *msg_dir_use = "Creating output in"; +char *msg_cur_dir = "current directory"; +char *msg_hostname= "Hostname for reports is"; +char *msg_ign_hist= "Ignoring previous history..."; +char *msg_no_hist = "History file not found..."; +char *msg_get_hist= "Reading history file..."; +char *msg_put_hist= "Saving history information..."; +char *msg_hist_err= "Error: Unable to write history file"; +char *msg_bad_hist= "Error: Ignoring invalid history record"; +char *msg_bad_conf= "Error: Unable to open configuration file"; +char *msg_bad_key = "Warning: Invalid keyword"; +char *msg_bad_date= "Error: Skipping record (bad date)"; +char *msg_ign_nscp= "Skipping Netscape header record"; +char *msg_bad_rec = "Skipping bad record"; +char *msg_no_vrec = "No valid records found!"; +char *msg_gen_rpt = "Generating report for"; +char *msg_gen_sum = "Generating summary report"; +char *msg_get_data= "Reading previous run data.."; +char *msg_put_data= "Saving current run data..."; +char *msg_no_data = "Previous run data not found..."; +char *msg_bad_data= "Error: Unable to restore run data"; +char *msg_data_err= "Error: Unable to save current run data"; +char *msg_dup_data= "Warning: Possible duplicate data found"; + +/* DNS Stuff */ +char *msg_dns_nocf= "No cache file specified, aborting..."; +char *msg_dns_nodb= "Error: Unable to open DNS cache file"; +char *msg_dns_nolk= "Error: Unable to lock DNS cache file"; +char *msg_dns_usec= "Using DNS cache file"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "None to process"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Can't allocate enough memory, Top Sites disabled!"; +char *msg_nomem_tr= "Can't allocate enough memory, Top Referrers disabled!"; +char *msg_nomem_tu= "Can't allocate enough memory, Top URLs disabled!"; +char *msg_nomem_tc= "Can't allocate enough memory, Top Countries disabled!"; +char *msg_nomem_ta= "Can't allocate enough memory, Top User Agents disabled!"; +char *msg_nomem_tsr="Can't allocate enough memory, Top Search Strings disabled!"; +char *msg_nomem_ti= "Can't allocate enough memory, Top Usernames disabled!"; +char *msg_nomem_dh= "Error adding host node (daily), skipping"; +char *msg_nomem_mh= "Error adding host node (monthly), skipping"; +char *msg_nomem_u = "Error adding URL node, skipping"; +char *msg_nomem_a = "Error adding User Agent node, skipping"; +char *msg_nomem_r = "Error adding Referrer node, skipping"; +char *msg_nomem_sc= "Error adding Search String Node, skipping"; +char *msg_nomem_i = "Error adding Username node, skipping"; + +/* log record errors */ +char *msg_big_rec = "Error: Skipping oversized log record"; +char *msg_big_host= "Warning: Truncating oversized hostname"; +char *msg_big_date= "Warning: Truncating oversized date field"; +char *msg_big_req = "Warning: Truncating oversized request field"; +char *msg_big_ref = "Warning: Truncating oversized referrer field"; +char *msg_big_user= "Warning: Truncating oversized username"; +char *msg_big_one = "Warning: String exceeds storage size"; + +/* misc errors */ +char *msg_no_open = "Error: Unable to open file"; + +/* Help display... */ +char *h_usage1 = "Usage"; +char *h_usage2 = "[options] [log file]"; +char *h_msg[]= { + "-h = print this help message" , + "-V = print version information" , + "-v = be verbose" , + "-d = print additional debug info" , + "-F type = Log type. type= (clf | ftp | squid | w3c)", + "-f = Fold sequence errors" , + "-i = ignore history file" , + "-p = preserve state (incremental)" , + "-b = ignore state (incremental)" , + "-q = supress informational messages" , + "-Q = supress _ALL_ messages" , + "-Y = supress country graph" , + "-G = supress hourly graph" , + "-H = supress hourly stats" , + "-L = supress color coded graph legends" , + "-l num = use num background lines on graph" , + "-m num = Visit timout value (seconds)" , + "-T = print timing information" , + "-c file = use configuration file 'file'" , + "-n name = hostname to use" , + "-o dir = output directory to use" , + "-t name = report title 'name'" , + "-a name = hide user agent 'name'" , + "-r name = hide referrer 'name'" , + "-s name = hide site 'name'" , + "-u name = hide URL 'name'" , + "-x name = Use filename extension 'name'" , + "-O name = Omit page 'name'" , + "-P name = Page type extension 'name'" , + "-I name = Index alias 'name'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Display num top agents" , + "-C num = Display num top countries" , + "-R num = Display num top referrers" , + "-S num = Display num top sites" , + "-U num = Display num top URLs" , + "-e num = Display num top Entry Pages" , + "-E num = Display num top Exit Pages" , + "-g num = Group Domains to 'num' levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Use DNS Cache file 'name'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Period zbrajanja"; +char *msg_hhdr_gt = "Generirano"; + +/* main index strings */ +char *msg_main_us = "Pregled pristupa za"; +/* char *msg_main_per= "Posljednjih 12 mjeseci"; */ +char *msg_main_per= "Pregled po mjesecima"; +char *msg_main_sum= "Pregled po mjesecima"; +char *msg_main_da = "Dnevni prosjek"; +char *msg_main_mt = "Mjesecni zbrojevi"; + +/* month HTML page strings */ +char *msg_hmth_du = "Pristupi po danu za"; +char *msg_hmth_hu = "Pristupi po satu za"; + +/* table header strings */ +char *msg_h_by = "po"; +char *msg_h_avg = "prosjek"; +char *msg_h_max = "Max"; +char *msg_h_total = "Ukupno"; +char *msg_h_totals= "Ukupno za sve"; +char *msg_h_day = "Dan"; +char *msg_h_mth = "Mjesec"; +char *msg_h_hour = "Sat"; +char *msg_h_hits = "Pristupa"; +char *msg_h_pages = "Stranica"; +char *msg_h_visits= "Posjeta"; +char *msg_h_files = "Datoteka"; +char *msg_h_sites = "Kompjutera"; +char *msg_h_xfer = "KB"; +char *msg_h_hname = "Kompjuter"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Korisnicki program"; +char *msg_h_ref = "Referer"; +char *msg_h_ctry = "Zemlja"; +char *msg_h_search= "Tekst pretrazivanja"; +char *msg_h_uname = "Korisnik"; + +/* links along top of page */ +char *msg_hlnk_ds = "Dnevna statistika"; +char *msg_hlnk_hs = "Statistika po satu"; +char *msg_hlnk_u = "URL-ovi"; +char *msg_hlnk_s = "Kompjuteri"; +char *msg_hlnk_a = "Browseri"; +char *msg_hlnk_c = "Zemlje"; +char *msg_hlnk_r = "Referiranja"; +char *msg_hlnk_en = "Ulaz"; +char *msg_hlnk_ex = "Izlaz"; +char *msg_hlnk_sr = "Pretraga"; +char *msg_hlnk_i = "Korisnici"; + +/* monthly total table */ +char *msg_mtot_ms = "Mjesecna statistika za"; +char *msg_mtot_th = "Ukupno pristupa"; +char *msg_mtot_tf = "Ukupno datoteka"; +char *msg_mtot_tx = "Ukupno KBajta"; +char *msg_mtot_us = "Ukupno razlicitih kompjutera"; +char *msg_mtot_ur = "Ukupno razlicitih referiranja"; +char *msg_mtot_ua = "Ukupno razlicitih browsera"; +char *msg_mtot_uu = "Ukupno razlicitih URL-ova"; +char *msg_mtot_ui = "Ukupno razlicitih korisnickih imena"; +char *msg_mtot_mhd= "Pristupa na dan"; +char *msg_mtot_mhh= "Pristupa na sat"; +char *msg_mtot_mfd= "Datoteka na dan"; +char *msg_mtot_mpd= "Datoteka na sat"; +char *msg_mtot_msd= "Kompjutera na dan"; +char *msg_mtot_mvd= "Posjeta na dan"; +char *msg_mtot_mkd= "KBajta na dan"; +char *msg_mtot_rc = "Pristupa po kodu"; + +/* daily total table */ +char *msg_dtot_ds = "Dnevna statistika za"; + +/* hourly total table */ +char *msg_htot_hs = "Statistika po satu za"; + +/* country pie chart */ +char *msg_ctry_use= "Pristup po zemljama za"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Prvih"; +char *msg_top_of = "od"; +char *msg_top_s = "kompjutera"; +char *msg_top_u = "URL-ova"; +char *msg_top_r = "referiranja"; +char *msg_top_a = "korisnickih programa"; +char *msg_top_c = "zemalja"; +char *msg_top_en = "ulaznih stranica"; +char *msg_top_ex = "izlaznih stranica"; +char *msg_top_sr = "tekstova pretrazivanja"; +char *msg_top_i = "korisnickih imena"; +char *msg_v_sites = "Pregled svih kompjutera"; +char *msg_v_urls = "Pregled svih URL-ova"; +char *msg_v_refs = "Pregled svih referisanja"; +char *msg_v_agents= "Pregled svih korisnickih programa"; +char *msg_v_search= "Pregled svih tekstova pretrazivanja"; +char *msg_v_users = "Pregled svih korisnickih imena"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Sij", "Vel", "Ozu", + "Tra", "Svi", "Lip", + "Srp", "Kol", "Ruj", + "Lis", "Stu", "Pro"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Sijecanj", "Veljaca", "Ozujak", "Travanj", + "Svibanj", "Lipanj", "Srpanj", "Kolovoz", + "Rujan", "Listopad", "Studeni", "Prosinac"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Undefined response code", 0 }, + { "Code 100 - Continue", 0 }, + { "Code 101 - Switching Protocols", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Created", 0 }, + { "Code 202 - Accepted", 0 }, + { "Code 203 - Non-Authoritative Information", 0 }, + { "Code 204 - No Content", 0 }, + { "Code 205 - Reset Content", 0 }, + { "Code 206 - Partial Content", 0 }, + { "Code 300 - Multiple Choices", 0 }, + { "Code 301 - Moved Permanently", 0 }, + { "Code 302 - Found", 0 }, + { "Code 303 - See Other", 0 }, + { "Code 304 - Not Modified", 0 }, + { "Code 305 - Use Proxy", 0 }, + { "Code 307 - Moved Temporarily", 0 }, + { "Code 400 - Bad Request", 0 }, + { "Code 401 - Unauthorized", 0 }, + { "Code 402 - Payment Required", 0 }, + { "Code 403 - Forbidden", 0 }, + { "Code 404 - Not Found", 0 }, + { "Code 405 - Method Not Allowed", 0 }, + { "Code 406 - Not Acceptable", 0 }, + { "Code 407 - Proxy Authentication Required", 0 }, + { "Code 408 - Request Timeout", 0 }, + { "Code 409 - Conflict", 0 }, + { "Code 410 - Gone", 0 }, + { "Code 411 - Length Required", 0 }, + { "Code 412 - Precondition Failed", 0 }, + { "Code 413 - Request Entity Too Large", 0 }, + { "Code 414 - Request-URI Too Long", 0 }, + { "Code 415 - Unsupported Media Type", 0 }, + { "Code 416 - Requested Range Not Satisfiable", 0 }, + { "Code 417 - Expectation Failed", 0 }, + { "Code 500 - Internal Server Error", 0 }, + { "Code 501 - Not Implemented", 0 }, + { "Code 502 - Bad Gateway", 0 }, + { "Code 503 - Service Unavailable", 0 }, + { "Code 504 - Gateway Timeout", 0 }, + { "Code 505 - HTTP Version Not Supported", 0 } }; + +char *msg_title = "Statistika pristupa za"; +char *msg_h_other = "Ostalo"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Nedefinirano/Nepoznato", 0,0,0 }, +{ IDX_3C('c','o','m'), "Komercijalni (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Obrazovni (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "SAD vlada (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "Medjunarodni (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "SAD vojni (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Mrezne domene (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Organizacije (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Stari Arpanet (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"NATO (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andora", 0,0,0 }, +{ IDX_2C('a','e'), "Ujedinjeni Arapski Emirati", 0,0,0 }, +{ IDX_2C('a','f'), "Afganistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua i Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguila", 0,0,0 }, +{ IDX_2C('a','l'), "Albanija", 0,0,0 }, +{ IDX_2C('a','m'), "Armenija", 0,0,0 }, +{ IDX_2C('a','n'), "Nizozemski Antili", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antartik", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "Americka Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Austrija", 0,0,0 }, +{ IDX_2C('a','u'), "Australija", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbedzan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosna i Hercegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Banglades", 0,0,0 }, +{ IDX_2C('b','e'), "Belgija", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bugarska", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermude", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivija", 0,0,0 }, +{ IDX_2C('b','r'), "Brazil", 0,0,0 }, +{ IDX_2C('b','s'), "Bahami", 0,0,0 }, +{ IDX_2C('b','t'), "Butan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet otok", 0,0,0 }, +{ IDX_2C('b','w'), "Bocvana", 0,0,0 }, +{ IDX_2C('b','y'), "Belarus", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Kanada", 0,0,0 }, +{ IDX_2C('c','c'), "Cocos (Keeling) otoci", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Centralnoafricka republika", 0,0,0 }, +{ IDX_2C('c','g'), "Kongo", 0,0,0 }, +{ IDX_2C('c','h'), "Svicarska", 0,0,0 }, +{ IDX_2C('c','i'), "Obala bjelokosti", 0,0,0 }, +{ IDX_2C('c','k'), "Cookovi otoci", 0,0,0 }, +{ IDX_2C('c','l'), "Cile", 0,0,0 }, +{ IDX_2C('c','m'), "Kamerun", 0,0,0 }, +{ IDX_2C('c','n'), "Kina", 0,0,0 }, +{ IDX_2C('c','o'), "Kolumbija", 0,0,0 }, +{ IDX_2C('c','r'), "Kostarika", 0,0,0 }, +{ IDX_2C('c','u'), "Kuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Bozicni otok", 0,0,0 }, +{ IDX_2C('c','y'), "Cipar", 0,0,0 }, +{ IDX_2C('c','z'), "Ceska republika", 0,0,0 }, +{ IDX_2C('d','e'), "Njemacka", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Danska", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Dominikanska republika", 0,0,0 }, +{ IDX_2C('d','z'), "Algerija", 0,0,0 }, +{ IDX_2C('e','c'), "Ekvador", 0,0,0 }, +{ IDX_2C('e','e'), "Estonija", 0,0,0 }, +{ IDX_2C('e','g'), "Egipat", 0,0,0 }, +{ IDX_2C('e','h'), "Zapadna Sahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritreja", 0,0,0 }, +{ IDX_2C('e','s'), "Spanjolska", 0,0,0 }, +{ IDX_2C('e','t'), "Etiopija", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finska", 0,0,0 }, +{ IDX_2C('f','j'), "Fidzi", 0,0,0 }, +{ IDX_2C('f','k'), "Falklandski otoci (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Mikronezija", 0,0,0 }, +{ IDX_2C('f','o'), "Faroe otoci", 0,0,0 }, +{ IDX_2C('f','r'), "Francuska", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Velika Britanija (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgia", 0,0,0 }, +{ IDX_2C('g','f'), "Francuska Guiana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Gana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Grenland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Gvineja", 0,0,0 }, +{ IDX_2C('g','p'), "Gvadelopa", 0,0,0 }, +{ IDX_2C('g','q'), "Ekvatorijalna Gvineja", 0,0,0 }, +{ IDX_2C('g','r'), "Grcka", 0,0,0 }, +{ IDX_2C('g','s'), "Juzna Georgia and Juzni Sandwich otoci", 0,0,0 }, +{ IDX_2C('g','t'), "Gvatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Gvinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Gvajana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard i McDonald otoci", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Hrvatska", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Madjarska", 0,0,0 }, +{ IDX_2C('i','d'), "Indonezija", 0,0,0 }, +{ IDX_2C('i','e'), "Irska", 0,0,0 }, +{ IDX_2C('i','l'), "Izrael", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "Indija", 0,0,0 }, +{ IDX_2C('i','o'), "Britanski Indijski oceanski teritorij", 0,0,0 }, +{ IDX_2C('i','q'), "Irak", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Iceland", 0,0,0 }, +{ IDX_2C('i','t'), "Italija", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamajka", 0,0,0 }, +{ IDX_2C('j','o'), "Jordan", 0,0,0 }, +{ IDX_2C('j','p'), "Japan", 0,0,0 }, +{ IDX_2C('k','e'), "Kenija", 0,0,0 }, +{ IDX_2C('k','g'), "Kirgistan", 0,0,0 }, +{ IDX_2C('k','h'), "Kambodza", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Komoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts i Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Koreja (Sjeverna)", 0,0,0 }, +{ IDX_2C('k','r'), "Koreja (Juzna)", 0,0,0 }, +{ IDX_2C('k','w'), "Kuvajt", 0,0,0 }, +{ IDX_2C('k','y'), "Kajmanski otoci", 0,0,0 }, +{ IDX_2C('k','z'), "Kazahstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Libanon", 0,0,0 }, +{ IDX_2C('l','c'), "Sveta Lucija", 0,0,0 }, +{ IDX_2C('l','i'), "Lihtenstajn", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberija", 0,0,0 }, +{ IDX_2C('l','s'), "Lesoto", 0,0,0 }, +{ IDX_2C('l','t'), "Litva", 0,0,0 }, +{ IDX_2C('l','u'), "Luksemburg", 0,0,0 }, +{ IDX_2C('l','v'), "Latvija", 0,0,0 }, +{ IDX_2C('l','y'), "Libija", 0,0,0 }, +{ IDX_2C('m','a'), "Maroko", 0,0,0 }, +{ IDX_2C('m','c'), "Monako", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagaskar", 0,0,0 }, +{ IDX_2C('m','h'), "Marshall otoci", 0,0,0 }, +{ IDX_2C('m','k'), "Makedonija", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolija", 0,0,0 }, +{ IDX_2C('m','o'), "Makao", 0,0,0 }, +{ IDX_2C('m','p'), "Sjeverni Marijanski otoci", 0,0,0 }, +{ IDX_2C('m','q'), "Martinik", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritanija", 0,0,0 }, +{ IDX_2C('m','s'), "Monserat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauricij", 0,0,0 }, +{ IDX_2C('m','v'), "Maldivi", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Meksiko", 0,0,0 }, +{ IDX_2C('m','y'), "Malezija", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambija", 0,0,0 }, +{ IDX_2C('n','a'), "Namibija", 0,0,0 }, +{ IDX_2C('n','c'), "Nova Kaledonija", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk otok", 0,0,0 }, +{ IDX_2C('n','g'), "Nigerija", 0,0,0 }, +{ IDX_2C('n','i'), "Nikaragva", 0,0,0 }, +{ IDX_2C('n','l'), "Nizozemska", 0,0,0 }, +{ IDX_2C('n','o'), "Norveska", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "Novi Zeland", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "Francuska Polinezija", 0,0,0 }, +{ IDX_2C('p','g'), "Papua Nova Gvineja", 0,0,0 }, +{ IDX_2C('p','h'), "Filipini", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Poljska", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre i Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Portoriko", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paragvaj", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Rumunjska", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Ruska federacija", 0,0,0 }, +{ IDX_2C('r','w'), "Ruanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saudijska Arabija", 0,0,0 }, +{ IDX_2C('s','b'), "Solomonski otoci", 0,0,0 }, +{ IDX_2C('s','c'), "Sejseli", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Svedska", 0,0,0 }, +{ IDX_2C('s','g'), "Singapur", 0,0,0 }, +{ IDX_2C('s','h'), "Sveta Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenija", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbard i Jan Mayen otoci", 0,0,0 }, +{ IDX_2C('s','k'), "Slovacka republika", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalija", 0,0,0 }, +{ IDX_2C('s','r'), "Surinam", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome i Principe", 0,0,0 }, +{ IDX_2C('s','u'), "SSSR (bivsi)", 0,0,0 }, +{ IDX_2C('s','v'), "Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Svazilend", 0,0,0 }, +{ IDX_2C('t','c'), "Turks i Caicos otoci", 0,0,0 }, +{ IDX_2C('t','d'), "Chad", 0,0,0 }, +{ IDX_2C('t','f'), "Francuski juzni teritoriji", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Tajland", 0,0,0 }, +{ IDX_2C('t','j'), "Tadjikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunizija", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Istocni Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turska", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad i Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Tajvan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzanija", 0,0,0 }, +{ IDX_2C('u','a'), "Ukrajina", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "Ujedinjeno kraljevstvo (UK)", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying otoci", 0,0,0 }, +{ IDX_2C('u','s'), "Sjedinjene americke drzave", 0,0,0 }, +{ IDX_2C('u','y'), "Urugvaj", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatican City State (Holy See)", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent i Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venecuela", 0,0,0 }, +{ IDX_2C('v','g'), "Djevicanski otoci (British)", 0,0,0 }, +{ IDX_2C('v','i'), "Djevicanski otoci (U.S.)", 0,0,0 }, +{ IDX_2C('v','n'), "Vijetnam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis i Futuna otoci", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Jemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Jugoslavija", 0,0,0 }, +{ IDX_2C('z','a'), "Juzna Afrika", 0,0,0 }, +{ IDX_2C('z','m'), "Zambija", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabve", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0 , NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.czech b/lang/webalizer_lang.czech new file mode 100644 index 0000000..647c057 --- /dev/null +++ b/lang/webalizer_lang.czech @@ -0,0 +1,640 @@ +/* + webalizer_lang.czech + + Webalizer V2.0x Language Support file for Czech. + 15-May-1998 by Bradford L. Barrett (brad@mrunix.net) + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 15-Oct-1998 Translation by Jiri T. Pelech (pes@inway.cz) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 07-Jun-2000 translation added words (Jindrich.Fucik@sh.cvut.cz) + 28-Mar-2002 Fixes/corrections by Pavel Kolesnikov (k@les.cz) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + 30-Mar-2009 translations/fixes by Vitezslav Samel (vita@samel.cz) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Czech"; +char *langcode = "cs"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "zaznamu"; +char *msg_addresses="adres"; +char *msg_ignored = "ignorovano"; +char *msg_bad = "chybnych"; +char *msg_in = "za"; +char *msg_seconds = "vterin"; + +/* progress and setup error messages */ +char *msg_log_err = "Chyba: Nemohu otevrit log soubor"; +char *msg_log_use = "Pouzivam log soubor"; +char *msg_dir_err = "Chyba: Nemohu prejit do adresare"; +char *msg_dir_use = "Vytvarim vystup v"; +char *msg_cur_dir = "aktualnim adresari"; +char *msg_hostname= "Jmeno pocitace pro sestavy je"; +char *msg_ign_hist= "Ignoruji predchozi historii..."; +char *msg_no_hist = "Nemohu najit soubor historie..."; +char *msg_get_hist= "Ctu soubor historie..."; +char *msg_put_hist= "Ukladam soubor historie..."; +char *msg_hist_err= "Chyba: Nemohu zapsat soubor historie"; +char *msg_bad_hist= "Chyba: Ignoruji chybny zaznam v historii"; +char *msg_bad_conf= "Chyba: Nemohu otevrit konfiguracni soubor"; +char *msg_bad_key = "Pozor: Neplatne klicove slovo"; +char *msg_bad_date= "Chyba: Preskakuji zaznam (spatne datum)"; +char *msg_ign_nscp= "Preskakuji hlavickovy zaznam z Netscape"; +char *msg_bad_rec = "Preskakuji spatny zaznam"; +char *msg_no_vrec = "Nenalezeny platne zaznamy!"; +char *msg_gen_rpt = "Vytvarim sestavu pro"; +char *msg_gen_sum = "Vytvarim sumarni sestavu"; +char *msg_get_data= "Ctu udaje z minuleho zpracovani..."; +char *msg_put_data= "Ukladam udaje aktualniho zpracovani..."; +char *msg_no_data = "Nemohu najit udaje z minuleho zpracovani..."; +/*char *msg_bad_data= "Neplatny datovy zaznam"; */ +char *msg_bad_data= "Chyba: Nemohu obnovit data aktualniho zpracovani"; +char *msg_data_err= "Chyba: Nemohu ulozit udaje aktualniho zpracovani"; +char *msg_dup_data= "Pozor: Nalezeny pravdepodobne duplicitni udaje"; + +/* DNS Stuff */ +char *msg_dns_nocf= "Nejsou specifikovany zadne cache soubory, koncim..."; +char *msg_dns_nodb= "Chyba: Nemohu otevrit soubory DNS cache"; +char *msg_dns_nolk= "Chyba: Nemohu zamknout soubory DNS cache"; +char *msg_dns_usec= "Pouzivam soubory DNS cache"; +char *msg_dns_rslv= "DNS Kontrola"; +char *msg_dns_none= "Neni co zpracovat"; +char *msg_dns_abrt= "Neni podpora pro DNS, koncim..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Nemohu otevrit soubor"; +char *msg_geo_use = "Pouzivam"; +char *msg_geo_nolu= "vyhledavani vypnuto"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Nemohu alokovat dost pameti, Nej mista jsou nefunkcni!"; +char *msg_nomem_tr= "Nemohu alokovat dost pameti, Nej odkazovace jsou nefunkcni!"; +char *msg_nomem_tu= "Nemohu alokovat dost pameti, Nej URL jsou nefunkcni!"; +char *msg_nomem_tc= "Nemohu alokovat dost pameti, Nej zeme jsou nefunkcni!"; +char *msg_nomem_ta= "Nemohu alokovat dost pameti, Nej prohlizece jsou nefunkcni!"; +char *msg_nomem_tsr="Nemohu alokovat dost pameti, Nej hledane retezce jsou nefunkcni!"; +char *msg_nomem_ti= "Nemohu alokovat dost pameti, Nej uzivatele jsou nefunkcni!"; +char *msg_nomem_dh= "Chyba doplneni bloku pocitace (denni), preskakuji"; +char *msg_nomem_mh= "Chyba doplneni bloku pocitace (mesicni), preskakuji"; +char *msg_nomem_u = "Chyba doplneni bloku URL, preskakuji"; +char *msg_nomem_a = "Chyba doplneni bloku prohlizece, preskakuji"; +char *msg_nomem_r = "Chyba doplneni bloku odkazovace, preskakuji"; +char *msg_nomem_sc= "Chyba doplneni hledanych retezcu, preskakuji"; +char *msg_nomem_i = "Chyba doplneni uzivatelu, preskakuji"; + +/* log record errors */ +char *msg_big_rec = "Chyba: Preskakuji prilis dlouhy zaznam v logu"; +char *msg_big_host= "Pozor: Orezavam prilis dlouhe jmeno pocitace"; +char *msg_big_date= "Pozor: Orezavam prilis dlouhe pole datumu"; +char *msg_big_req = "Pozor: Orezavam prilis dlouhe pole zadosti"; +char *msg_big_ref = "Pozor: Orezavam prilis dlouhe pole odkazovace"; +char *msg_big_user= "Pozor: Orezavam prilis dlouhe jmeno uzivatele"; +char *msg_big_one = "Pozor: Retezec prekrocil velikost ukladaciho mista"; + +/* misc errors */ +char *msg_no_open = "Chyba: Nemohu otevrit soubor"; + +/* Help display... */ +char *h_usage1 = "Pouzivani"; +char *h_usage2 = "[volby] [log soubor]"; +char *h_msg[]= { + "-h = vypis tento help" , + "-V = vypis informaci o verzi" , + "-v = bud upovidany" , + "-d = vypis dalsi ladici informace" , + "-F type = typ logu. type= (clf | ftp | squid | w3c)", + "-f = chyby v prekladu stranek" , + "-i = ignoruj soubor historie" , + "-p = zapamatuj stav (inkrementalne)" , + "-b = ignoruj stav (inkrementalne)" , + "-q = potlac informativni zpravy" , + "-Q = potlac VSECHNY zpravy" , + "-Y = potlac graf statu" , + "-G = potlac hodinovy graf" , + "-H = potlac hodinove statistiky" , + "-L = potlac barevne kody v legendach grafu" , + "-l poc = pouzij 'num' radek v podkladu grafu" , + "-m poc = cas pro navstevu (seconds)" , + "-T = vypis casove informace" , + "-c file = pouzij konfig. soubor 'file'" , + "-n name = pouzij jmeno pocitace" , + "-o adr = vystupni adresar" , + "-t name = nazev sestavy 'name'" , + "-a name = skryj prohlizec 'name'" , + "-r name = skryj odkazovac 'name'" , + "-s name = skryj misto 'name'" , + "-u name = skryj URL 'name'" , + "-x name = pouzij priponu souboru 'name'" , + "-O name = vynechej stranku 'name'" , + "-P name = stranky maji priponu 'name'" , + "-I name = nazev Index(u) 'name'" , + "-K poc = zobraz 'poc' mesicu v prehledu" , + "-k poc = zobraz 'poc' mesicu v prehledovem grafu", + "-A poc = zobraz 'poc' Nej prohlizecu" , + "-C poc = zobraz 'poc' Nej zemi" , + "-R poc = zobraz 'poc' Nej odkazovacu" , + "-S poc = zobraz 'poc' Nej mist" , + "-U poc = zobraz 'poc' Nej URL" , + "-e poc = zobraz 'poc' vstupnich stranek" , + "-E poc = zobraz 'poc' odchozich stranek" , + "-g poc = seskup domeny do 'poc' urovni" , + "-X = skryt jednotlive site" , + "-z dir = vlajky zemi jsou v adresari 'dir'" , +#ifdef USE_DNS + "-D name = pouzij DNS Cache 'name'" , + "-N poc = pocet DNS procesu (0=zakazat)" , + "-j = pouzij vestavene vyhledavani v GeoDB" , + "-J name = pouzij GeoDB databazi 'name'" , +#endif +#ifdef USE_GEOIP + "-w = pouzij vyhledavani pomoci GeoIP" , + "-W name = pouzij GeoIP databazi 'name'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Období statistiky"; +char *msg_hhdr_gt = "Generováno"; + +/* main index strings */ +char *msg_main_us = "Statistiky pøístupù pro"; +/* char *msg_main_per= "Posledních 12 mìsícù"; */ +char *msg_main_per= "Mìsíèní pøehled"; +char *msg_main_sum= "Mìsíèní pøehled"; +char *msg_main_da = "Denní prùmìr"; +char *msg_main_mt = "Mìsíèní souèty"; + +/* month HTML page strings */ +char *msg_hmth_du = "Denní vyu¾ití za"; +char *msg_hmth_hu = "Hodinové vyu¾ití za"; + +/* table header strings */ +char *msg_h_by = "podle"; +char *msg_h_avg = "Prùm"; +char *msg_h_max = "Max"; +char *msg_h_total = "Celkem"; +char *msg_h_totals= "Celkem"; +char *msg_h_day = "Den"; +char *msg_h_mth = "Mìsíc"; +char *msg_h_hour = "Hodina"; +char *msg_h_hits = "Pøístupù"; +char *msg_h_pages = "Stránek"; +char *msg_h_visits= "Náv¹tìv"; +char *msg_h_files = "Souborù"; +char *msg_h_sites = "Míst"; +char *msg_h_xfer = "KBytù"; +char *msg_h_hname = "Poèítaè"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Prohlí¾eè"; +char *msg_h_ref = "Odkazovaè"; +char *msg_h_ctry = "Zemì"; +char *msg_h_search= "Hledání"; +char *msg_h_uname = "U¾ivatel"; + +/* links along top of page */ +char *msg_hlnk_ds = "Denní statistiky"; +char *msg_hlnk_hs = "Hodinové statistiky"; +char *msg_hlnk_u = "URL"; +char *msg_hlnk_s = "Místa"; +char *msg_hlnk_a = "Prohlí¾eèe"; +char *msg_hlnk_c = "Zemì"; +char *msg_hlnk_r = "Odkazovaèe"; +char *msg_hlnk_en = "Vstupy"; +char *msg_hlnk_ex = "Výstupy"; +char *msg_hlnk_sr = "Hledání"; +char *msg_hlnk_i = "U¾ivatelé"; + +/* monthly total table */ +char *msg_mtot_ms = "Mìsíèní statistiky za"; +char *msg_mtot_th = "Celkem náv¹tìv"; +char *msg_mtot_tf = "Celkem souborù"; +char *msg_mtot_tx = "Celkem KBytù"; +char *msg_mtot_us = "Celkem jedineèných míst"; +char *msg_mtot_ur = "Celkem jedineèných odkazovaèù"; +char *msg_mtot_ua = "Celkem jedineèných Prohlí¾eèù"; +char *msg_mtot_uu = "Celkem jedineèných URL"; +char *msg_mtot_ui = "Celkem jedineèných u¾ivatelù"; +char *msg_mtot_mhd= "Objektù za den"; +char *msg_mtot_mhh= "Objektù za hodinu"; +char *msg_mtot_mfd= "Souborù za den"; +char *msg_mtot_mpd= "Stránek za den"; +char *msg_mtot_msd= "Míst za den"; +char *msg_mtot_mvd= "Náv¹tìv za den"; +char *msg_mtot_mkd= "KBytù za den"; +char *msg_mtot_rc = "Náv¹tìvy podle kódu odpovìdi"; + +/* daily total table */ +char *msg_dtot_ds = "Denní statistiky za"; + +/* hourly total table */ +char *msg_htot_hs = "Hodinové statistiky za"; + +/* country pie chart */ +char *msg_ctry_use= "Vyu¾ití podle zemì"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Nej"; +char *msg_top_of = "z"; +char *msg_top_s = "míst celkem"; +char *msg_top_u = "URL celkem"; +char *msg_top_r = "odkazovaèù celkem"; +char *msg_top_a = "prohlí¾eèù celkem"; +char *msg_top_c = "zemí celkem"; +char *msg_top_en = "vstupních stránek celkem"; +char *msg_top_ex = "výstupních stránek celkem"; +char *msg_top_sr = "hledaných øetìzcù celkem"; +char *msg_top_i = "u¾ivatelù celkem"; +char *msg_v_sites = "zobrazit v¹echny sítì"; +char *msg_v_urls = "zobrazit v¹echny URL"; +char *msg_v_refs = "zobrazit v¹echny referery"; +char *msg_v_agents= "zobrazit v¹echny u¾ivatelské prohlí¾eèe"; +char *msg_v_search= "zobrazit v¹echny hledané stránky"; +char *msg_v_users = "zobrazit v¹echna u¾ivatelská jména"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Led", "Úno", "Bøe", + "Dub", "Kvì", "Èer", + "Èvc", "Srp", "Záø", + "Øíj", "Lis", "Pro"}; + +/* long month names - can be any length */ +char *l_month[12]={ "leden", "únor", "bøezen", "duben", + "kvìten", "èerven", "èervenec", "srpen", + "záøí", "øíjen", "listopad", "prosinec"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Nedefinovaný kód odpovìdi", 0 }, + { "Kód 100 - Pokraèovat", 0 }, + { "Kód 101 - Pøepínání protokolù", 0 }, + { "Kód 200 - OK", 0 }, + { "Kód 201 - Vytvoøeno", 0 }, + { "Kód 202 - Pøijato", 0 }, + { "Kód 203 - Neautoritativní informace", 0 }, + { "Kód 204 - ®ádný obsah", 0 }, + { "Kód 205 - Obnovit obsah", 0 }, + { "Kód 206 - Èásteèný obsah", 0 }, + { "Kód 300 - Vícenásobné volby", 0 }, + { "Kód 301 - Pøesunuto trvale", 0 }, + { "Kód 302 - Pøítomno", 0 }, + { "Kód 303 - Viz dal¹í", 0 }, + { "Kód 304 - Nezmìnìno", 0 }, + { "Kód 305 - Pou¾ij proxy", 0 }, + { "Kód 307 - Pøesunuto doèasnì", 0 }, + { "Kód 400 - ©patný po¾adavek", 0 }, + { "Kód 401 - Neautorizován", 0 }, + { "Kód 402 - Vy¾adována platba", 0 }, + { "Kód 403 - Zakázáno", 0 }, + { "Kód 404 - Nenalezeno", 0 }, + { "Kód 405 - Nepovolená Metoda", 0 }, + { "Kód 406 - Nepøípustné", 0 }, + { "Kód 407 - Vy¾adována autentikace proxy", 0 }, + { "Kód 408 - Pøekroèen èasový limit", 0 }, + { "Kód 409 - Konflikt", 0 }, + { "Kód 410 - Zru¹eno", 0 }, + { "Kód 411 - ®ádost o délku", 0 }, + { "Kód 412 - Podmínka nesplnìna", 0 }, + { "Kód 413 - Po¾adavek je pøíli¹ velký", 0 }, + { "Kód 414 - URI je pøíli¹ dlouhé", 0 }, + { "Kód 415 - Nepodporovaný typ média", 0 }, + { "Kód 416 - Po¾adovaný rozsah neodpovídá", 0 }, + { "Kód 417 - Oèekávání selhalo", 0 }, + { "Kód 500 - Intenrní chyba serveru", 0 }, + { "Kód 501 - Nezavedeno", 0 }, + { "Kód 502 - ©patná brána", 0 }, + { "Kód 503 - Slu¾ba nedostupná", 0 }, + { "Kód 504 - Brána neodpovìdìla", 0 }, + { "Kód 505 - Nepodporovaná verze HTTP", 0 } }; + +char *msg_title = "Statistiky pøístupù pro"; +char *msg_h_other = "Jiné"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Nezji¹tìná/neznámá", 0,0,0 }, +{ IDX_3C('c','o','m'), "Komerèní (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Akademická (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "US vládní (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "Mezinárodní (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "US vojenská (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Sí» (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Nezisková organizace (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Obchodní spoleènosti (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Katalánská komunita (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Globální adresáø kontaktù (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Letecký prùmysl (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asijsko/pacifická komunita (asia)",0,0,0 }, +{ IDX_4C('c','o','o','p'),"Dru¾stva (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Obecné TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Lidské zdroje (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Obecné mobilní TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Osobní (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Pùvodní Arpanet (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"NATO (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Muzea (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Cestovní ruch (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ostrov Ascension", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "Spojené arabské emiráty", 0,0,0 }, +{ IDX_2C('a','f'), "Afghánistán", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua a Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albánie", 0,0,0 }, +{ IDX_2C('a','m'), "Arménie", 0,0,0 }, +{ IDX_2C('a','n'), "Nizozemské Antily", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarktida", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "Americká Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Rakousko", 0,0,0 }, +{ IDX_2C('a','u'), "Austrálie", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Alandy", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbajd¾án", 0,0,0 }, +{ IDX_2C('b','a'), "Bosna a Hercegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladé¹", 0,0,0 }, +{ IDX_2C('b','e'), "Belgie", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulharsko", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrajn", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Svatý Bartolomìj", 0,0,0 }, +{ IDX_2C('b','m'), "Bermudy", 0,0,0 }, +{ IDX_2C('b','n'), "Brunej", 0,0,0 }, +{ IDX_2C('b','o'), "Bolívie", 0,0,0 }, +{ IDX_2C('b','r'), "Brazílie", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamy", 0,0,0 }, +{ IDX_2C('b','t'), "Bhùtán", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Island", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Bìlorusko", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Kanada", 0,0,0 }, +{ IDX_2C('c','c'), "Kokosové (Keelingovy) ostrovy", 0,0,0 }, +{ IDX_2C('c','d'), "Kongo", 0,0,0 }, +{ IDX_2C('c','f'), "Støedoafrická republika", 0,0,0 }, +{ IDX_2C('c','g'), "Kongo", 0,0,0 }, +{ IDX_2C('c','h'), "©výcarsko", 0,0,0 }, +{ IDX_2C('c','i'), "Pobøe¾í slonoviny", 0,0,0 }, +{ IDX_2C('c','k'), "Cookovy ostrovy", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Kamerun", 0,0,0 }, +{ IDX_2C('c','n'), "Èína", 0,0,0 }, +{ IDX_2C('c','o'), "Kolumbie", 0,0,0 }, +{ IDX_2C('c','r'), "Kostarika", 0,0,0 }, +{ IDX_2C('c','u'), "Kuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Vánoèní ostrovy", 0,0,0 }, +{ IDX_2C('c','y'), "Kypr", 0,0,0 }, +{ IDX_2C('c','z'), "Èeská republika", 0,0,0 }, +{ IDX_2C('d','e'), "Nìmecko", 0,0,0 }, +{ IDX_2C('d','j'), "D¾ibuti", 0,0,0 }, +{ IDX_2C('d','k'), "Dánsko", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Dominikánská republika", 0,0,0 }, +{ IDX_2C('d','z'), "Al¾írsko", 0,0,0 }, +{ IDX_2C('e','c'), "Ekvádor", 0,0,0 }, +{ IDX_2C('e','e'), "Estonsko", 0,0,0 }, +{ IDX_2C('e','g'), "Egypt", 0,0,0 }, +{ IDX_2C('e','h'), "Západní Sahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "©panìlsko", 0,0,0 }, +{ IDX_2C('e','t'), "Etiopie", 0,0,0 }, +{ IDX_2C('e','u'), "Evropská unie", 0,0,0 }, +{ IDX_2C('f','i'), "Finsko", 0,0,0 }, +{ IDX_2C('f','j'), "Fid¾i", 0,0,0 }, +{ IDX_2C('f','k'), "Falklandské ostrovy (Malvíny)", 0,0,0 }, +{ IDX_2C('f','m'), "Mikronézie", 0,0,0 }, +{ IDX_2C('f','o'), "Faerské ostrovy", 0,0,0 }, +{ IDX_2C('f','r'), "Francie", 0,0,0 }, +{ IDX_2C('g','a'), "Gabun", 0,0,0 }, +{ IDX_2C('g','b'), "Velká Británie (GB)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Gruzie", 0,0,0 }, +{ IDX_2C('g','f'), "Francouzská Guajana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Grónsko", 0,0,0 }, +{ IDX_2C('g','m'), "Gambie", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Rovníková Guinea", 0,0,0 }, +{ IDX_2C('g','r'), "Øecko", 0,0,0 }, +{ IDX_2C('g','s'), "Ji¾ní Georgia a Ji¾ní Sandwichovy ostrovy", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hongkong", 0,0,0 }, +{ IDX_2C('h','m'), "Heardovy a McDonaldovy ostrovy", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Chorvatsko", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Maïarsko", 0,0,0 }, +{ IDX_2C('i','d'), "Indonésie", 0,0,0 }, +{ IDX_2C('i','e'), "Irsko", 0,0,0 }, +{ IDX_2C('i','l'), "Izrael", 0,0,0 }, +{ IDX_2C('i','m'), "Ostrov Man", 0,0,0 }, +{ IDX_2C('i','n'), "Indie", 0,0,0 }, +{ IDX_2C('i','o'), "Britské indickooceánské území", 0,0,0 }, +{ IDX_2C('i','q'), "Irák", 0,0,0 }, +{ IDX_2C('i','r'), "Írán", 0,0,0 }, +{ IDX_2C('i','s'), "Island", 0,0,0 }, +{ IDX_2C('i','t'), "Itálie", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamajka", 0,0,0 }, +{ IDX_2C('j','o'), "Jordánsko", 0,0,0 }, +{ IDX_2C('j','p'), "Japonsko", 0,0,0 }, +{ IDX_2C('k','e'), "Keòa", 0,0,0 }, +{ IDX_2C('k','g'), "Kyrgyzstán", 0,0,0 }, +{ IDX_2C('k','h'), "Kambod¾a", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Komory", 0,0,0 }, +{ IDX_2C('k','n'), "Svatý Kry¹tof a Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Severní Korea", 0,0,0 }, +{ IDX_2C('k','r'), "Ji¾ní Korea", 0,0,0 }, +{ IDX_2C('k','w'), "Kuvajt", 0,0,0 }, +{ IDX_2C('k','y'), "Kajmanské ostrovy", 0,0,0 }, +{ IDX_2C('k','z'), "Kazachstán", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Libanon", 0,0,0 }, +{ IDX_2C('l','c'), "Svatá Lucie", 0,0,0 }, +{ IDX_2C('l','i'), "Lichten¹tejnsko", 0,0,0 }, +{ IDX_2C('l','k'), "Srí Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Libérie", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Litva", 0,0,0 }, +{ IDX_2C('l','u'), "Lucembursko", 0,0,0 }, +{ IDX_2C('l','v'), "Loty¹sko", 0,0,0 }, +{ IDX_2C('l','y'), "Libye", 0,0,0 }, +{ IDX_2C('m','a'), "Maroko", 0,0,0 }, +{ IDX_2C('m','c'), "Monako", 0,0,0 }, +{ IDX_2C('m','d'), "Moldavsko", 0,0,0 }, +{ IDX_2C('m','e'), "Èerná hora", 0,0,0 }, +{ IDX_2C('m','f'), "Svatý Martin (francouzská èást)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagaskar", 0,0,0 }, +{ IDX_2C('m','h'), "Marshallovy ostrovy", 0,0,0 }, +{ IDX_2C('m','k'), "Makedonie", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolsko", 0,0,0 }, +{ IDX_2C('m','o'), "Macao", 0,0,0 }, +{ IDX_2C('m','p'), "Severní Mariany", 0,0,0 }, +{ IDX_2C('m','q'), "Martinik", 0,0,0 }, +{ IDX_2C('m','r'), "Mauretánie", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauricius", 0,0,0 }, +{ IDX_2C('m','v'), "Maledivy", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexiko", 0,0,0 }, +{ IDX_2C('m','y'), "Malajsie", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambik", 0,0,0 }, +{ IDX_2C('n','a'), "Namibie", 0,0,0 }, +{ IDX_2C('n','c'), "Nová Kaledonie", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk", 0,0,0 }, +{ IDX_2C('n','g'), "Nigérie", 0,0,0 }, +{ IDX_2C('n','i'), "Nikaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Nizozemsko", 0,0,0 }, +{ IDX_2C('n','o'), "Norsko", 0,0,0 }, +{ IDX_2C('n','p'), "Nepál", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "Nový Zéland", 0,0,0 }, +{ IDX_2C('o','m'), "Omán", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "Francouzská Polynésie", 0,0,0 }, +{ IDX_2C('p','g'), "Papua-Nová Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Filipíny", 0,0,0 }, +{ IDX_2C('p','k'), "Pákistán", 0,0,0 }, +{ IDX_2C('p','l'), "Polsko", 0,0,0 }, +{ IDX_2C('p','m'), "Saint-Pierre a Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairnovy ostrovy", 0,0,0 }, +{ IDX_2C('p','r'), "Portoriko", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinská autonomie", 0,0,0 }, +{ IDX_2C('p','t'), "Portugalsko", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Katar", 0,0,0 }, +{ IDX_2C('r','e'), "Réunion", 0,0,0 }, +{ IDX_2C('r','o'), "Rumunsko", 0,0,0 }, +{ IDX_2C('r','s'), "Srbsko", 0,0,0 }, +{ IDX_2C('r','u'), "Ruská federace", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saúdská Arábie", 0,0,0 }, +{ IDX_2C('s','b'), "©alamounovy ostrovy", 0,0,0 }, +{ IDX_2C('s','c'), "Seychely", 0,0,0 }, +{ IDX_2C('s','d'), "Súdán", 0,0,0 }, +{ IDX_2C('s','e'), "©védsko", 0,0,0 }, +{ IDX_2C('s','g'), "Singapur", 0,0,0 }, +{ IDX_2C('s','h'), "Sv. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovinsko", 0,0,0 }, +{ IDX_2C('s','j'), "©picberky a ostrov Jan Mayen", 0,0,0 }, +{ IDX_2C('s','k'), "Slovenská republika", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somálsko", 0,0,0 }, +{ IDX_2C('s','r'), "Surinam", 0,0,0 }, +{ IDX_2C('s','t'), "Svatý Tomá¹ a Princùv ostrov", 0,0,0 }, +{ IDX_2C('s','u'), "Sovìtský svaz", 0,0,0 }, +{ IDX_2C('s','v'), "Salvádor", 0,0,0 }, +{ IDX_2C('s','y'), "Sýrie", 0,0,0 }, +{ IDX_2C('s','z'), "Svazijsko", 0,0,0 }, +{ IDX_2C('t','c'), "Turks a Caicos", 0,0,0 }, +{ IDX_2C('t','d'), "Èad", 0,0,0 }, +{ IDX_2C('t','f'), "Francouzská ji¾ní teritoria-Antarktida", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Thajsko", 0,0,0 }, +{ IDX_2C('t','j'), "Tád¾ikistán", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Východní Timor", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistán", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisko", 0,0,0 }, +{ IDX_2C('t','o'), "Tongo", 0,0,0 }, +{ IDX_2C('t','p'), "Východní Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turecko", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad a Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzánie", 0,0,0 }, +{ IDX_2C('u','a'), "Ukrajina", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "Velká Británie (UK)", 0,0,0 }, +{ IDX_2C('u','m'), "Men¹í odlehlé ostrovy USA", 0,0,0 }, +{ IDX_2C('u','s'), "USA (US)", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistán", 0,0,0 }, +{ IDX_2C('v','a'), "Vatikán", 0,0,0 }, +{ IDX_2C('v','c'), "Svatý Vincenc a Grenadiny", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Britské Panenské ostrovy", 0,0,0 }, +{ IDX_2C('v','i'), "Americké Panenské ostrovy", 0,0,0 }, +{ IDX_2C('v','n'), "Vietnam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis a Futuna", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Jemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Jugoslávie", 0,0,0 }, +{ IDX_2C('z','a'), "Jihoafrická republika", 0,0,0 }, +{ IDX_2C('z','m'), "Zambie", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymní proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satelitní poskytovatelé", 0,0,0 }, +{ IDX_2C('o','1'), "Ostatní", 0,0,0 }, +{ IDX_2C('a','p'), "Asijskopacifický region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Lokální sí» (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.danish b/lang/webalizer_lang.danish new file mode 100644 index 0000000..7cbfab9 --- /dev/null +++ b/lang/webalizer_lang.danish @@ -0,0 +1,632 @@ +/* + webalizer_lang.danish + + Webalizer V2.0x Language Support file for Danish. + 13-Jul-1999 by Michael B. Jenner (mj@kom.auc.dk) + 13-Nov-1999 Major update by Jonas Koch Bentzen (post@jonaskochbentzen.dk) + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Danish"; +char *langcode = "da"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "poster"; +char *msg_addresses="addresses"; +char *msg_ignored = "ignorerede"; +char *msg_bad = "fejlagtige"; +char *msg_in = "på"; +char *msg_seconds = "sekunder"; + +/* progress and setup error messages */ +char *msg_log_err = "Fejl: kan ikke åbne logfil"; +char *msg_log_use = "Anvender logfil"; +char *msg_dir_err = "Fejl: kan ikke skifte bibliotek til"; +char *msg_dir_use = "Opretter output i biblioteket"; +char *msg_cur_dir = "aktivt bibliotek"; +char *msg_hostname= "Rapporterne ligger på maskinen med værtsnavnet"; +char *msg_ign_hist= "Ignorerer tidligere historie ..."; +char *msg_no_hist = "Historiefilen findes ikke..."; +char *msg_get_hist= "Læser historiefil ..."; +char *msg_put_hist= "Gemmer historie-information ..."; +char *msg_hist_err= "Fejl: Kan ikke skrive til historiefil"; +char *msg_bad_hist= "Fejl: Ignorerer forkert historiepost"; +char *msg_bad_conf= "Fejl: Kan ikke åbne konfigurationsfil"; +char *msg_bad_key = "Advarsel: Forkert nøgleord"; +char *msg_bad_date= "Fejl: Springer over post (forkert dato)"; +char *msg_ign_nscp= "Springer over post med Netscapes hoved"; +char *msg_bad_rec = "Springer over forkert post"; +char *msg_no_vrec = "Fandt ingen korrekte poster!"; +char *msg_gen_rpt = "Genererer rapport for"; +char *msg_gen_sum = "Genererer opsummerende rapport"; +char *msg_get_data= "Læser tidligere kørselsdata.."; +char *msg_put_data= "Gemmer aktive kørselsdata..."; +char *msg_no_data = "Tidligere kørselsdata ikke fundet..."; +char *msg_bad_data= "Fejl: Kan ikke genindlæse kørselsdata"; +char *msg_data_err= "Fejl: Kan ikke gemme aktive kørselsdata"; +char *msg_dup_data= "Advarsel: Mulige dobbelte data fundet"; + +/* DNS Stuff */ +char *msg_dns_nocf= "No cache file specified, aborting..."; +char *msg_dns_nodb= "Error: Unable to open DNS cache file"; +char *msg_dns_nolk= "Error: Unable to lock DNS cache file"; +char *msg_dns_usec= "Using DNS cache file"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "None to process"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Kan ikke allokere nok hukommelse, Top Gæster slås fra!"; +char *msg_nomem_tr= "Kan ikke allokere nok hukommelse, Top Referer slås fra!"; +char *msg_nomem_tu= "Kan ikke allokere nok hukommelse, Top URL slås fra!"; +char *msg_nomem_tc= "Kan ikke allokere nok hukommelse, Top Lande slås fra!"; +char *msg_nomem_ta= "Kan ikke allokere nok hukommelse, Top Web browsere slås fra!"; +char *msg_nomem_tsr="Kan ikke allokere nok hukommelse, Top Søgestrenge slåes fra!"; +char *msg_nomem_ti= "Can't allocate enough memory, Top Usernames disabled!"; +char *msg_nomem_dh= "Fejl ved tilføjelse af host-node (daglig), skipping"; +char *msg_nomem_mh= "Fejl ved tilføjelse af host-node (månedlig), skipping"; +char *msg_nomem_u = "Fejl ved tilføjelse af URL-node, skipping"; +char *msg_nomem_a = "Fejl ved tilføjelse af Web browsere node, skipping"; +char *msg_nomem_r = "Fejl ved tilføjelse af Referer node, skipping"; +char *msg_nomem_sc= "Fejl ved tilføjelse af Søgestrenge Node, skipping"; +char *msg_nomem_i = "Error adding Username node, skipping"; + +/* log record errors */ +char *msg_big_rec = "Fejl: Springer over streng (for stor log-post)"; +char *msg_big_host= "Advarsel: Afkorter strengen (for stort værtsnavn)"; +char *msg_big_date= "Advarsel: Afkorter strengen (for stort datofelt)"; +char *msg_big_req = "Advarsel: Afkorter strengen (for stort forespørgsel-felt)"; +char *msg_big_ref = "Advarsel: Afkorter strengen (for stort henvisende side-felt)"; +char *msg_big_user= "Warning: Truncating oversized username"; +char *msg_big_one = "Advarsel: Strengen overstiger maksimum"; + +/* misc errors */ +char *msg_no_open = "Fejl: Kan ikke åbne filen"; + +/* Help display... */ +char *h_usage1 = "Anvendelse"; +char *h_usage2 = "[parametre] [logfil]"; +char *h_msg[]= { + "-h = udskriv denne hjælpebesked" , + "-V = udskriv versionsoplysninger" , + "-v = be verbose" , + "-d = udskriv ekstra fejlsøgningsinformation", + "-F type = Log type. type= (clf | ftp | squid | w3c)", + "-f = Fold sekvensfejl" , + "-i = ignorer historiefil" , + "-p = bevar tilstand (inkremental)" , + "-b = ignorer tilstand (inkremental)" , + "-q = undertryk informationsrelaterede beskeder", + "-Q = undertryk _ALLE_ beskeder" , + "-Y = undertryk landegrafer" , + "-G = undertryk timegrafer" , + "-H = undertryk timestatistikker" , + "-L = undertryk farvekodede grafertekst" , + "-l num = brug numeriske baggrundslinier på graf", + "-m num = Undersøg timeout-værdi (seconds)" , + "-T = udskriv timing-information" , + "-c file = brug konfigurationsfilen 'file'" , + "-n name = værtsnavn som anvendes" , + "-o dir = Output bibliotek som anvendes" , + "-t name = rapport titel 'name'" , + "-a name = gem browser 'name'" , + "-r name = gem henvisende side 'name'" , + "-s name = gem gæste 'name'" , + "-u name = gem URL 'name'" , + "-x name = Brug filefternavn 'name'" , + "-O name = Omit page 'name'" , + "-P name = Side type-efternavn 'name'" , + "-I name = Indeks alias 'name'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Vis antal top browsere" , + "-C num = Vis antal top lande" , + "-R num = Vis antal top henvisende sider" , + "-S num = Vis antal top gæster" , + "-U num = Vis antal top URL" , + "-e num = Vis antal top indgangsadresser" , + "-E num = Vis antal top udgangsadresser" , + "-g num = Group Domains to 'num' levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Use DNS Cache file 'name'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoIP lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Opsummeringsperiode"; +char *msg_hhdr_gt = "Sidst opdateret"; + +/* main index strings */ +char *msg_main_us = "Tilgang til"; +/* char *msg_main_per= "De sidste 12 måneder"; */ +char *msg_main_per= "Opsummering / måned"; +char *msg_main_sum= "Opsummering / måned"; +char *msg_main_da = "Dagligt gennemsnit"; +char *msg_main_mt = "Sammenlagt pr. måned"; + +/* month HTML page strings */ +char *msg_hmth_du = "Daglig tilgang -"; +char *msg_hmth_hu = "Timefordelt tilgang -"; + +/* table header strings */ +char *msg_h_by = "-"; +char *msg_h_avg = "Gn.snit"; +char *msg_h_max = "Maks"; +char *msg_h_total = ""; +char *msg_h_totals= ""; +char *msg_h_day = "Dag"; +char *msg_h_mth = "Måned"; +char *msg_h_hour = "Time"; +char *msg_h_hits = "Forespørgsler"; +char *msg_h_pages = "Sider"; +char *msg_h_visits= "Besøg"; +char *msg_h_files = "Filer"; +char *msg_h_sites = "Gæster"; +char *msg_h_xfer = "kB"; +char *msg_h_hname = "Navn/IP-adresse"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Browser"; +char *msg_h_ref = "Henvisende side"; +char *msg_h_ctry = "Land"; +char *msg_h_search= "Søgestreng"; +char *msg_h_uname = "Username"; + +/* links along top of page */ +char *msg_hlnk_ds = "Daglig statistik"; +char *msg_hlnk_hs = "Timestatistik"; +char *msg_hlnk_u = "URL"; +char *msg_hlnk_s = "Gæster"; +char *msg_hlnk_a = "Browsere"; +char *msg_hlnk_c = "Lande"; +char *msg_hlnk_r = "Henvisende sider"; +char *msg_hlnk_en = "Indgangsadresse"; +char *msg_hlnk_ex = "Udgangsadresse"; +char *msg_hlnk_sr = "Søg"; +char *msg_hlnk_i = "Users"; + +/* monthly total table */ +char *msg_mtot_ms = "Månedlig statistik for"; +char *msg_mtot_th = "Forespørgsler"; +char *msg_mtot_tf = "Filer"; +char *msg_mtot_tx = "kB"; +char *msg_mtot_us = "Unikke gæster"; +char *msg_mtot_ur = "Unikke henvisende sider"; +char *msg_mtot_ua = "Unikke browsere"; +char *msg_mtot_uu = "Unikke adresser"; +char *msg_mtot_ui = "Total Unique Usernames"; +char *msg_mtot_mhd= "Forespørgsler pr. dag"; +char *msg_mtot_mhh= "Forespørgsler pr. time"; +char *msg_mtot_mfd= "Filer pr. dag"; +char *msg_mtot_mpd= "Sider pr. dag"; +char *msg_mtot_msd= "Gæster pr. dag"; +char *msg_mtot_mvd= "Besøg pr. dag"; +char *msg_mtot_mkd= "kB pr. dag"; +char *msg_mtot_rc = "Forespørgsler fordelt på svarkoder"; + +/* daily total table */ +char *msg_dtot_ds = "Daglig statistik for"; + +/* hourly total table */ +char *msg_htot_hs = "Timestatistik for"; + +/* country pie chart */ +char *msg_ctry_use= "Forespørgsler fordelt på lande for"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total by something" */ +char *msg_top_top = "Top"; +char *msg_top_of = "af"; +char *msg_top_s = "gæster"; +char *msg_top_u = "adresser"; +char *msg_top_r = "henvisende sider"; +char *msg_top_a = "browsere"; +char *msg_top_c = "Lande"; +char *msg_top_en = "indgangsadresser"; +char *msg_top_ex = "udgangsadresser"; +char *msg_top_sr = "søgestrenge"; +char *msg_top_i = "Total Usernames"; +char *msg_v_sites = "View All Sites"; +char *msg_v_urls = "View All URLs"; +char *msg_v_refs = "View All Referrers"; +char *msg_v_agents= "View All User Agents"; +char *msg_v_search= "View All Search Strings"; +char *msg_v_users = "View All Usernames"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Jan", "Feb", "Mar", + "Apr", "Maj", "Jun", + "Jul", "Aug", "Sep", + "Okt", "Nov", "Dec"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Januar", "Februar", "Marts", "April", + "Maj", "Juni", "Juli", "August", + "September","Oktober", "November","December"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Uidentificeret svar Kode", 0 }, + { "Kode 100 - Fortsæt", 0 }, + { "Kode 101 - Skift protokoller", 0 }, + { "Kode 200 - OK", 0 }, + { "Kode 201 - Oprettet", 0 }, + { "Kode 202 - Accepteret", 0 }, + { "Kode 203 - Ikke-autoritativ information", 0 }, + { "Kode 204 - Intet indhold", 0 }, + { "Kode 205 - Nulstil indhold", 0 }, + { "Kode 206 - Delvist indhold", 0 }, + { "Kode 300 - Dobbelte data", 0 }, + { "Kode 301 - Flyttet permanent", 0 }, + { "Kode 302 - Fundet", 0 }, + { "Kode 303 - Se andet", 0 }, + { "Kode 304 - Ikke ændret", 0 }, + { "Kode 305 - Brug proxy", 0 }, + { "Kode 307 - Flyttet midlertidigt", 0 }, + { "Kode 400 - Forkert forespørgsel", 0 }, + { "Kode 401 - Ingen adgang", 0 }, + { "Kode 402 - Betaling påkrævet", 0 }, + { "Kode 403 - Forbudt", 0 }, + { "Kode 404 - Findes ikke", 0 }, + { "Kode 405 - Metoden ikke tilladt", 0 }, + { "Kode 406 - Ikke acceptabelt", 0 }, + { "Kode 407 - Proxygodkendelse påkrævet", 0 }, + { "Kode 408 - Tiden er udløbet for forespørgslen", 0 }, + { "Kode 409 - Konflikt", 0 }, + { "Kode 410 - Forsvundet", 0 }, + { "Kode 411 - Længde påkrævet", 0 }, + { "Kode 412 - Forudsætning ikke opfyldt", 0 }, + { "Kode 413 - Forespørgselsenhed for stor", 0 }, + { "Kode 414 - Adresse for lang", 0 }, + { "Kode 415 - Medietypen understøttes ikke", 0 }, + { "Kode 416 - Forespurgt område ikke tilfredsstillende", 0 }, + { "Kode 417 - Det forventede skete ikke", 0 }, + { "Kode 500 - Intern serverfejl", 0 }, + { "Kode 501 - Ikke indbygget", 0 }, + { "Kode 502 - Forkert gateway", 0 }, + { "Kode 503 - Tjenesten ikke tilgængelig", 0 }, + { "Kode 504 - Tiden er udløbet for gateway'en", 0 }, + { "Kode 505 - HTTP-versionen understøttes ikke", 0 } }; + +char *msg_title = "Webstatistik for"; +char *msg_h_other = "Andre"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Ukendt", 0,0,0 }, +{ IDX_3C('c','o','m'), "Kommerciel (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Uddannelsesinstitution (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "USA (regeringen)", 0,0,0 }, +{ IDX_3C('i','n','t'), "International (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "USA (militæret)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Netværk (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Almennyttig organisation", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Gammel Stil Arpanet (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"NATO-felt (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "De Forenede Arabiske Emirater", 0,0,0 }, +{ IDX_2C('a','f'), "Afghanistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua og Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albanien", 0,0,0 }, +{ IDX_2C('a','m'), "Armenien", 0,0,0 }, +{ IDX_2C('a','n'), "De Hollandske Antiller", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarktis", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "Amerikansk Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Østrig", 0,0,0 }, +{ IDX_2C('a','u'), "Australien", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaijan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnien og Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgien", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgarien", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brasilien", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Island", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Belarus", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Canada", 0,0,0 }, +{ IDX_2C('c','c'), "Cocos (Keeling)-øerne", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Den Centralafrikanske Republik", 0,0,0 }, +{ IDX_2C('c','g'), "Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Schweitz", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire (Elfenbenskysten)", 0,0,0 }, +{ IDX_2C('c','k'), "Cook-øerne", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Cameroon", 0,0,0 }, +{ IDX_2C('c','n'), "Kina", 0,0,0 }, +{ IDX_2C('c','o'), "Colombia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Kap Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Juleøerne", 0,0,0 }, +{ IDX_2C('c','y'), "Cypern", 0,0,0 }, +{ IDX_2C('c','z'), "Tjekkiet", 0,0,0 }, +{ IDX_2C('d','e'), "Tyskland", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Danmark", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Den Dominikanske Republik", 0,0,0 }, +{ IDX_2C('d','z'), "Algeriet", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador", 0,0,0 }, +{ IDX_2C('e','e'), "Estland", 0,0,0 }, +{ IDX_2C('e','g'), "Egypten", 0,0,0 }, +{ IDX_2C('e','h'), "Vest-Sahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Spanien", 0,0,0 }, +{ IDX_2C('e','t'), "Etiopien", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finland", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Falklandsøerne (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Mikronesien", 0,0,0 }, +{ IDX_2C('f','o'), "Færøerne", 0,0,0 }, +{ IDX_2C('f','r'), "Frankrig", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Storbritannien (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Granada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgien", 0,0,0 }, +{ IDX_2C('g','f'), "Fransk Guiana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Grønland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Equatorial Guinea", 0,0,0 }, +{ IDX_2C('g','r'), "Grækenland", 0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia- og S. Sandwich-øerne", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard- og McDonald-øerne", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Kroatien", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Ungarn", 0,0,0 }, +{ IDX_2C('i','d'), "Indonesien", 0,0,0 }, +{ IDX_2C('i','e'), "Irland", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "Indien", 0,0,0 }, +{ IDX_2C('i','o'), "Det britiske indiske ocean-territorium", 0,0,0 }, +{ IDX_2C('i','q'), "Irak", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Island", 0,0,0 }, +{ IDX_2C('i','t'), "Italien", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Jordan", 0,0,0 }, +{ IDX_2C('j','p'), "Japan", 0,0,0 }, +{ IDX_2C('k','e'), "Kenya", 0,0,0 }, +{ IDX_2C('k','g'), "Kyrgyzstan", 0,0,0 }, +{ IDX_2C('k','h'), "Cambodia", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts og Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Korea (Nord-)", 0,0,0 }, +{ IDX_2C('k','r'), "Korea (Syd-)", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Cayman-øerne", 0,0,0 }, +{ IDX_2C('k','z'), "Kazakhstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Libanon", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Litauen", 0,0,0 }, +{ IDX_2C('l','u'), "Luxembourg", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia", 0,0,0 }, +{ IDX_2C('l','y'), "Libyen", 0,0,0 }, +{ IDX_2C('m','a'), "Marokko", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagaskar", 0,0,0 }, +{ IDX_2C('m','h'), "Marshall-øerne", 0,0,0 }, +{ IDX_2C('m','k'), "Makedonien", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolien", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Nord-Mariana-øerne", 0,0,0 }, +{ IDX_2C('m','q'), "Martinique", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritanien", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldiverne", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexico", 0,0,0 }, +{ IDX_2C('m','y'), "Malaysien", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambique", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "Ny Kaledonien", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Island", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Holland", 0,0,0 }, +{ IDX_2C('n','o'), "Norge", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "New Zealand", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "Fransk Polynesien", 0,0,0 }, +{ IDX_2C('p','g'), "Papua New Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Filippinerne", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Polen", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre og Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Rumænien", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Rusland", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saudi Arabien", 0,0,0 }, +{ IDX_2C('s','b'), "Salomon-øerne", 0,0,0 }, +{ IDX_2C('s','c'), "Seychellerne", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Sverige", 0,0,0 }, +{ IDX_2C('s','g'), "Singapore", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenien", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbard og Jan Mayen-øerne", 0,0,0 }, +{ IDX_2C('s','k'), "Slovakiet", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalien", 0,0,0 }, +{ IDX_2C('s','r'), "Suriname", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome og Principe", 0,0,0 }, +{ IDX_2C('s','u'), "USSR (det tidligere)", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrien", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Turks og Caicos-øerne", 0,0,0 }, +{ IDX_2C('t','d'), "Chad", 0,0,0 }, +{ IDX_2C('t','f'), "De franske, sydlige territorier", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Thailand", 0,0,0 }, +{ IDX_2C('t','j'), "Tajikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisien", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Øst-Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Tyrkiet", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad og Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraine", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "England", 0,0,0 }, +{ IDX_2C('u','m'), "USA's mindre, ydre øer", 0,0,0 }, +{ IDX_2C('u','s'), "USA", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatikanstaten", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent og the Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Jomfruøerne (de britiske)", 0,0,0 }, +{ IDX_2C('v','i'), "Jomfruøerne (de amerikanske)", 0,0,0 }, +{ IDX_2C('v','n'), "Vietnam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis og Futuna-øerne", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Jugoslavien", 0,0,0 }, +{ IDX_2C('z','a'), "Sydafrika", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.dutch b/lang/webalizer_lang.dutch new file mode 100644 index 0000000..cdc0cea --- /dev/null +++ b/lang/webalizer_lang.dutch @@ -0,0 +1,651 @@ +/* + webalizer_lang.dutch + + Webalizer V2.0x Language Support file for Dutch. + 02-Jun-1998 Translated by J.Q. la Poutre (jlpoutre@inter.nl.net) + 02-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 03-Jun-1998 Translation Level 1.1 by J.Q. La Poutre + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 15-Jul-1999 Changes in translation by M. Mackenbach (marcom@websource.nl) + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 02-May-2000 Translation level 2.0 by Richard Huveneers (richard@hacom.nl) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + ### Nederlandstalige versie aangepast vanwege de snelle vertaling + ### M. Mackenbach (marcom@websource.nl) + ### versie 1.2/01 + + ### Nederlandse versie (1.00 - 2 juni 1998) + ### J.Q. la Poutre' of + ### versie 1.1/01 - 03 jun 1998 + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Nederlands"; +char *langcode = "nl"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "records"; +char *msg_addresses="adressen"; +char *msg_ignored = "genegeerd"; +char *msg_bad = "fout"; +char *msg_in = "in"; +char *msg_seconds = "seconden"; + +/* progress and setup error messages */ +char *msg_log_err = "Fout: kan het logbestand niet openen"; +char *msg_log_use = "Gebruik logbestand"; +char *msg_dir_err = "Fout: kan werk-directory niet veranderen naar"; +char *msg_dir_use = "Schrijf gegevens naar"; +char *msg_cur_dir = "werk-directory"; +char *msg_hostname= "De 'Hostname' voor het rapport is"; +char *msg_ign_hist= "Negeer oude history..."; +char *msg_no_hist = "History bestand niet gevonden..."; +char *msg_get_hist= "Lees history bestand..."; +char *msg_put_hist= "Bewaar history informatie..."; +char *msg_hist_err= "Fout: kan history bestand niet schrijven"; +char *msg_bad_hist= "Fout: ongeldig history record (wordt genegeerd)"; +char *msg_bad_conf= "Fout: kan configuratie-bestand niet openen"; +char *msg_bad_key = "Waarschuwing: ongeldig 'keyword'"; +char *msg_bad_date= "Fout: foute datum (record overgeslagen)"; +char *msg_ign_nscp= "Netscape header record (wordt genegeerd)"; +char *msg_bad_rec = "Foutief record (wordt genegeerd)"; +char *msg_no_vrec = "Geen geldige records gevonden!"; +char *msg_gen_rpt = "Genereer rapport voor"; +char *msg_gen_sum = "Genereer samenvattingsrapport"; +char *msg_get_data= "Lees gegevens van eerdere sessie..."; +char *msg_put_data= "Bewaar gegevens huidige sessie..."; +char *msg_no_data = "Gegevens eerdere sessie niet gevonden..."; +/*char *msg_bad_data= "Ongeldig record (gegevenstype)";*/ +char *msg_bad_data= "Fout: kan sessie (gegevens) niet inlezen"; +char *msg_data_err= "Fout: kan sessie (gegevens) niet bewaren"; +char *msg_dup_data= "Waarschuwing: mogelijk dubbele gegevens gevonden"; + +/* DNS Stuff */ +char *msg_dns_nocf= "Geen cache bestand opgegeven, programma wordt afgebroken..."; +char *msg_dns_nodb= "Fout: kan het DNS cache bestand niet openen"; +char *msg_dns_nolk= "Fout: kan het DNS cache bestand niet reserveren"; +char *msg_dns_usec= "Het DNS cache bestand wordt gebruikt"; +char *msg_dns_rslv= "DNS Aanvraag"; +char *msg_dns_none= "Niets te verwerken"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Onvoldoende geheugen beschikbaar, Top hosts overgeslagen!"; +char *msg_nomem_tr= "Onvoldoende geheugen beschikbaar, Top verwijzende pagina's overgeslagen!"; +char *msg_nomem_tu= "Onvoldoende geheugen beschikbaar, Top URL's overgeslagen!"; +char *msg_nomem_tc= "Onvoldoende geheugen beschikbaar, Top landen overgeslagen!"; +char *msg_nomem_ta= "Onvoldoende geheugen beschikbaar, Top browsers overgeslagen!"; +char *msg_nomem_tsr="Onvoldoende geheugen beschikbaar, Top zoekopdrachten overgeslagen!"; +char *msg_nomem_ti= "Onvoldoende geheugen beschikbaar, Top gebruikersnamen overgeslagen!"; +char *msg_nomem_dh= "Fout bij toevoegen van host (dagrapport), overgeslagen!"; +char *msg_nomem_mh= "Fout bij toevoegen van host (maandrapport), overgeslagen!"; +char *msg_nomem_u = "Fout bij toevoegen van URL, overgeslagen!"; +char *msg_nomem_a = "Fout bij toevoegen van browser, overgeslagen!"; +char *msg_nomem_r = "Fout bij toevoegen van verwijzende pagina, overgeslagen!"; +char *msg_nomem_sc= "Fout bij toevoegen van tekst-node, overgeslagen!"; +char *msg_nomem_i = "Fout bij toevoegen van Gebruikersnaam, overgeslagen!"; + +/* log record errors */ +char *msg_big_rec = "Fout: te groot log-record (overgeslagen)"; +char *msg_big_host= "Waarschuwing: te lange hostnaam: ingekort"; +char *msg_big_date= "Waarschuwing: te lang datum veld: ingekort"; +char *msg_big_req = "Waarschuwing: te lang aanvraag veld: ingekort"; +char *msg_big_ref = "Waarschuwing: te lang veld voor verwijzende pagina: ingekort"; +char *msg_big_user= "Waarschuwing: te lang veld voor gebruikersnaam: ingekort"; +char *msg_big_one = "Waarschuwing: regel past niet in beschikbare geheugenruimte"; + +/* misc errors */ +char *msg_no_open = "Fout: kan bestand niet openen!"; + +/* Help display... */ +char *h_usage1 = "Gebruiksaanwijzing"; +char *h_usage2 = "[opties] [log-bestand]"; +char *h_msg[]= { + "-h = Deze helptekst", + "-V = Toon versie-informatie", + "-v = be verbose", + "-d = Debug informatie", + "-F type = Log type. type= (clf | ftp | squid | w3c)", + "-f = Forceer chronologische volgorde", + "-i = Negeer 'history' bestand", + "-p = Bewaar status (incremental)", + "-b = Negeer status (incremental)", + "-q = Geen informatieve info, wel foutmeldingen", + "-Q = Geen enkele info, ook geen foutmeldingen", + "-Y = Geen land-grafieken", + "-G = Geen uur-grafieken", + "-H = Geen uur-statistieken", + "-L = Geen legenda", + "-l num = Gebruik [num] achtergrondregels in grafiek", + "-m num = Bezoeker-onderbreking waarde (seconds)", + "-T = Geef verwerkingstijd informatie", + "-c bestand = Gebruik configuratie 'bestand'", + "-n naam = Gebruik host 'naam'", + "-o dir = Schrijf bestanden naar directory 'dir'", + "-t naam = Rapporttitel 'naam'", + "-a naam = Laat browser 'naam' weg", + "-r naam = Laat verwijzende pagina 'naam' weg", + "-s naam = Laat host 'naam' weg", + "-u naam = Laat URL 'naam' weg", + "-x naam = Gebruik bestands-extensie 'naam'", + "-O naam = Omit page 'naam'" , + "-P naam = Paginatype-extensie 'naam'", + "-I naam = Index alias 'naam'", + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Toon top 'num' browsers", + "-C num = Toon top 'num' landen", + "-R num = Toon top 'num' verwijzende pagina's", + "-S num = Toon top 'num' hosts", + "-U num = Toon top 'num' URL's", + "-e num = Toon top 'num' eerste pagina's van bezoekers", + "-E num = Toon top 'num' laatste pagina's van bezoekers", + "-g num = Groepeer Domeinen op 'num' niveaus", + "-X = Laat alle individuele hosts weg", + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D naam = Gebruik DNS Cache bestand 'naam'", + "-N num = Aantal DNS processen (0=uitschakelen)", + "-j = Enable native GeoDB lookups" , + "-J naam = Use GeoDB database 'naam'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W naam = Use GeoIP database 'naam'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Samenvatting periode"; +char *msg_hhdr_gt = "Gegenereerd op"; + +/* main index strings */ +char *msg_main_us = "Samenvatting -"; +/* char *msg_main_per= "afgelopen 12 maanden"; */ +char *msg_main_per= "Samenvatting per maand"; +char *msg_main_sum= "Samenvatting per maand"; +char *msg_main_da = "Dagelijks gemiddelde"; +char *msg_main_mt = "Totalen per maand"; + +/* month HTML page strings */ +char *msg_hmth_du = "Dagelijks bezoek -"; +char *msg_hmth_hu = "Bezoek per uur -"; + +/* table header strings */ +char *msg_h_by = "gesorteerd op"; +char *msg_h_avg = "Gem."; +char *msg_h_max = "Max."; +char *msg_h_total = "Totaal"; +char *msg_h_totals= "Totalen"; +char *msg_h_day = "Dag"; +char *msg_h_mth = "Maand"; +char *msg_h_hour = "Uur"; +char *msg_h_hits = "Hits"; /* "Aanvragen" is te lang en minder duidelijk */ +char *msg_h_pages = "Pagina's"; +char *msg_h_visits= "Bezoeken"; +char *msg_h_files = "Bestanden"; +char *msg_h_sites = "Hosts"; +char *msg_h_xfer = "kB"; /* afgekort i.v.m. onderschrift grafiek */ +char *msg_h_hname = "Host(naam)"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Browser"; +char *msg_h_ref = "Verwijzing"; +char *msg_h_ctry = "Land"; +char *msg_h_search= "Zoekopdracht"; +char *msg_h_uname = "Gebruikersnaam"; + +/* links along top of page */ +char *msg_hlnk_ds = "Overzicht per dag"; +char *msg_hlnk_hs = "Overzicht per uur"; +char *msg_hlnk_u = "URL's"; +char *msg_hlnk_s = "Hosts"; +char *msg_hlnk_a = "Browsers"; +char *msg_hlnk_c = "Landen"; +char *msg_hlnk_r = "Verwijzers"; +char *msg_hlnk_en = "Eerste"; +char *msg_hlnk_ex = "Laatste"; +char *msg_hlnk_sr = "Zoekopdrachten"; +char *msg_hlnk_i = "Gebruikersnamen"; + +/* monthly total table */ +char *msg_mtot_ms = "Maandoverzicht -"; +char *msg_mtot_th = "Totaal hits"; +char *msg_mtot_tf = "Totaal bestanden"; +char *msg_mtot_tx = "Totaal kilobytes"; +char *msg_mtot_us = "Totaal verschillende hosts"; +char *msg_mtot_ur = "Totaal verschillende verwijzers"; +char *msg_mtot_ua = "Totaal verschillende browsers"; +char *msg_mtot_uu = "Totaal verschillende URL's"; +char *msg_mtot_ui = "Totaal verschillende gebruikersnamen"; +char *msg_mtot_mhd= "Hits per dag"; +char *msg_mtot_mhh= "Hits per uur"; +char *msg_mtot_mfd= "Bestanden per dag"; +char *msg_mtot_mpd= "Pagina's per dag"; +char *msg_mtot_msd= "Hosts per dag"; +char *msg_mtot_mvd= "Bezoeken per dag"; +char *msg_mtot_mkd= "Kilobytes per dag"; +char *msg_mtot_rc = "Hits per 'Response Code'"; + +/* daily total table */ +char *msg_dtot_ds = "Overzicht per dag -"; + +/* hourly total table */ +char *msg_htot_hs = "Overzicht per uur -"; + +/* country pie chart */ +char *msg_ctry_use= "Overzicht per land -"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Top"; +char *msg_top_of = "van"; +char *msg_top_s = "hosts"; +char *msg_top_u = "URL's"; +char *msg_top_r = "verwijzende pagina's"; +char *msg_top_a = "browsers"; +char *msg_top_c = "landen"; +char *msg_top_en = "eerste pagina's"; +char *msg_top_ex = "laatste pagina's"; +char *msg_top_sr = "zoekopdrachten"; +char *msg_top_i = "gebruikersnamen"; +char *msg_v_sites = "Toon alle hosts"; +char *msg_v_urls = "Toon alle URL's"; +char *msg_v_refs = "Toon alle verwijzende pagina's"; +char *msg_v_agents= "Toon alle browsers"; +char *msg_v_search= "Toon alle zoekopdrachten"; +char *msg_v_users = "Toon alle gebruikersnamen"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "jan", "feb", "mar", + "apr", "mei", "jun", + "jul", "aug", "sep", + "okt", "nov", "dec"}; + +/* long month names - can be any length */ +char *l_month[12]={ "januari", "februari", "maart", "april", + "mei", "juni", "juli", "augustus", + "september","oktober", "november","december"}; + +/* response code descriptions... order IS important! */ +/* NIET vertaald omdat m.i. de Engelse benaming meer + bekendheid heeft dan een mogelijk onduidelijke + Nederlandse vertaling - Joe, 05 jun 1998 */ +struct response_code response[] = + { { "Onbekende 'response code'", 0 }, + { "Code 100 - Continue", 0 }, + { "Code 101 - Switching Protocols", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Created", 0 }, + { "Code 202 - Accepted", 0 }, + { "Code 203 - Non-Authoritative Information", 0 }, + { "Code 204 - No Content", 0 }, + { "Code 205 - Reset Content", 0 }, + { "Code 206 - Partial Content", 0 }, + { "Code 300 - Multiple Choices", 0 }, + { "Code 301 - Moved Permanently", 0 }, + { "Code 302 - Found", 0 }, + { "Code 303 - See Other", 0 }, + { "Code 304 - Not Modified", 0 }, + { "Code 305 - Use Proxy", 0 }, + { "Code 307 - Moved Temporarily", 0 }, + { "Code 400 - Bad Request", 0 }, + { "Code 401 - Unauthorized", 0 }, + { "Code 402 - Payment Required", 0 }, + { "Code 403 - Forbidden", 0 }, + { "Code 404 - Not Found", 0 }, + { "Code 405 - Method Not Allowed", 0 }, + { "Code 406 - Not Acceptable", 0 }, + { "Code 407 - Proxy Authentication Required", 0 }, + { "Code 408 - Request Timeout", 0 }, + { "Code 409 - Conflict", 0 }, + { "Code 410 - Gone", 0 }, + { "Code 411 - Length Required", 0 }, + { "Code 412 - Precondition Failed", 0 }, + { "Code 413 - Request Entity Too Large", 0 }, + { "Code 414 - Request-URI Too Long", 0 }, + { "Code 415 - Unsupported Media Type", 0 }, + { "Code 416 - Requested Range Not Satisfiable", 0 }, + { "Code 417 - Expectation Failed", 0 }, + { "Code 500 - Internal Server Error", 0 }, + { "Code 501 - Not Implemented", 0 }, + { "Code 502 - Bad Gateway", 0 }, + { "Code 503 - Service Unavailable", 0 }, + { "Code 504 - Gateway Timeout", 0 }, + { "Code 505 - HTTP Version Not Supported", 0 } }; + +char *msg_title = "Rapport voor website"; +char *msg_h_other = "Anders"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Numeriek IP/onbekend", 0,0,0 }, +{ IDX_3C('c','o','m'), "Commercieel (.com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Onderwijs/onderzoek (.edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "Overheid (.gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "Internationaal (.int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "Militair (.mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "'Netwerk' (.net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Non-Profit (.org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Arpanet (arpa, oude stijl)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Nato (.nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra (.ad)", 0,0,0 }, +{ IDX_2C('a','e'), "Ver. Arab. Emiraten (.ae)", 0,0,0 }, +{ IDX_2C('a','f'), "Afghanistan (.af)", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua en Barbuda (.ag)", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla (.ai)", 0,0,0 }, +{ IDX_2C('a','l'), "Albanie (.al)", 0,0,0 }, +{ IDX_2C('a','m'), "Armenie (.am)", 0,0,0 }, +{ IDX_2C('a','n'), "Nederlandse Antillen (.an)", 0,0,0 }, +{ IDX_2C('a','o'), "Angola (.ao)", 0,0,0 }, +{ IDX_2C('a','q'), "Antarctica (.aq)", 0,0,0 }, +{ IDX_2C('a','r'), "Argentinie (.ar)", 0,0,0 }, +{ IDX_2C('a','s'), "Amerikaans Samoa (.as)", 0,0,0 }, +{ IDX_2C('a','t'), "Oostenrijk (.at)", 0,0,0 }, +{ IDX_2C('a','u'), "Australie (.au)", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba (.aw)", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azarbadzjan (.az)", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnie / Herzegovina (.ba)", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados (.bb)", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh (.bd)", 0,0,0 }, +{ IDX_2C('b','e'), "Belgie (.be)", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso (.bf)", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgarije (.bg)", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrijn (.bh)", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi (.bi)", 0,0,0 }, +{ IDX_2C('b','j'), "Benin (.bj)", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda (.bm)", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam (.bn)", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivie (.bo)", 0,0,0 }, +{ IDX_2C('b','r'), "Brazilie (.br)", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas (.bs)", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan (.bt)", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Eiland (.bv)", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana (.bw)", 0,0,0 }, +{ IDX_2C('b','y'), "Belarus (.by)", 0,0,0 }, +{ IDX_2C('b','z'), "Belize(.bz)", 0,0,0 }, +{ IDX_2C('c','a'), "Canada (.ca)", 0,0,0 }, +{ IDX_2C('c','c'), "Cocos (Keeling) Eilanden (.cc)", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Central Afrikaanse Republiek (.cf)",0,0,0 }, +{ IDX_2C('c','g'), "Congo (.cg)", 0,0,0 }, +{ IDX_2C('c','h'), "Zwitserland (.ch)", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire (Ivoorkust) (.ci)", 0,0,0 }, +{ IDX_2C('c','k'), "Cook Eilanden (.ck)", 0,0,0 }, +{ IDX_2C('c','l'), "Chili (.cl)", 0,0,0 }, +{ IDX_2C('c','m'), "Kameroen (.cm)", 0,0,0 }, +{ IDX_2C('c','n'), "China (.cn)", 0,0,0 }, +{ IDX_2C('c','o'), "Colombia (.co)", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica (.cr)", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba (.cu)", 0,0,0 }, +{ IDX_2C('c','v'), "Kaapverdie (.cv)", 0,0,0 }, +{ IDX_2C('c','x'), "Christmas Island (.cx)", 0,0,0 }, +{ IDX_2C('c','y'), "Cyprus (.cy)", 0,0,0 }, +{ IDX_2C('c','z'), "Tsjechische republiek (.cz)", 0,0,0 }, +{ IDX_2C('d','e'), "Duitsland (.de)", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti (.dj)", 0,0,0 }, +{ IDX_2C('d','k'), "Denemarken (.dk)", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica (.dm)", 0,0,0 }, +{ IDX_2C('d','o'), "Dominikaanse Republiek (.do)", 0,0,0 }, +{ IDX_2C('d','z'), "Algarije (.dz)", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador (.ec)", 0,0,0 }, +{ IDX_2C('e','e'), "Estland (.ee)", 0,0,0 }, +{ IDX_2C('e','g'), "Egypte (.eg)", 0,0,0 }, +{ IDX_2C('e','h'), "Westelijke Sahara (.eh)", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea (.er)", 0,0,0 }, +{ IDX_2C('e','s'), "Spanje (.es)", 0,0,0 }, +{ IDX_2C('e','t'), "Ethiopie (.et)", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finland (.fi)", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji (.fj)", 0,0,0 }, +{ IDX_2C('f','k'), "Falkland Eilanden (Malvinas, .fk)",0,0,0 }, +{ IDX_2C('f','m'), "Micronesie (.fm)", 0,0,0 }, +{ IDX_2C('f','o'), "Faroe Eilanden (.fo)", 0,0,0 }, +{ IDX_2C('f','r'), "Frankrijk (.fr)", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon (.ga)", 0,0,0 }, +{ IDX_2C('g','b'), "Groot Britannie (UK, .gb)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada (.gd)", 0,0,0 }, +{ IDX_2C('g','e'), "Georgie (.ge)", 0,0,0 }, +{ IDX_2C('g','f'), "Frans Guiana (.gf)", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana (.gh)", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar (.gi)", 0,0,0 }, +{ IDX_2C('g','l'), "Groenland (.gl)", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia (.gm)", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea (.gn)", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe (.gp)", 0,0,0 }, +{ IDX_2C('g','q'), "Equatoriaal Guinea (.gq)", 0,0,0 }, +{ IDX_2C('g','r'), "Griekenland (.gr)", 0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia en S. Sandwich Eil. (.gs)",0,0,0 }, +{ IDX_2C('g','t'), "Guatemala (.gt)", 0,0,0 }, +{ IDX_2C('g','u'), "Guam (.gu)", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau (.gw)", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana (.gy)", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong (.hk)", 0,0,0 }, +{ IDX_2C('h','m'), "Heard en McDonald Eilanden (.hm)", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras (.hn)", 0,0,0 }, +{ IDX_2C('h','r'), "Kroatie (.hr)", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti (.ht)", 0,0,0 }, +{ IDX_2C('h','u'), "Hongarije (.hu)", 0,0,0 }, +{ IDX_2C('i','d'), "Indonesie (.id)", 0,0,0 }, +{ IDX_2C('i','e'), "Ierland (.ie)", 0,0,0 }, +{ IDX_2C('i','l'), "Israel (.il)", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "India (.in)", 0,0,0 }, +{ IDX_2C('i','o'), "British Indian Ocean Territory (.io)",0,0,0 }, +{ IDX_2C('i','q'), "Iraq (.iq)", 0,0,0 }, +{ IDX_2C('i','r'), "Iran (.ir)", 0,0,0 }, +{ IDX_2C('i','s'), "IJsland (.is)", 0,0,0 }, +{ IDX_2C('i','t'), "Italie (.it)", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica (.jm)", 0,0,0 }, +{ IDX_2C('j','o'), "Jordanie (.jo)", 0,0,0 }, +{ IDX_2C('j','p'), "Japan (.jp)", 0,0,0 }, +{ IDX_2C('k','e'), "Kenia (.ke)", 0,0,0 }, +{ IDX_2C('k','g'), "Kyrgyzstan (.kg)", 0,0,0 }, +{ IDX_2C('k','h'), "Cambodja (.kh)", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati (.ki)", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros (.km)", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts en Nevis (.kn)", 0,0,0 }, +{ IDX_2C('k','p'), "Korea (Noord, .kp)", 0,0,0 }, +{ IDX_2C('k','r'), "Korea (Zuid, .kr)", 0,0,0 }, +{ IDX_2C('k','w'), "Koeweit (.kw)", 0,0,0 }, +{ IDX_2C('k','y'), "Kaaiman Eilanden (.ky)", 0,0,0 }, +{ IDX_2C('k','z'), "Kazachstan (.kz)", 0,0,0 }, +{ IDX_2C('l','a'), "Laos (.la)", 0,0,0 }, +{ IDX_2C('l','b'), "Libanon (.lb)", 0,0,0 }, +{ IDX_2C('l','c'), "Sint Lucia (.lc)", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein (.li)", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka (.lk)", 0,0,0 }, +{ IDX_2C('l','r'), "Liberie (.lr)", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho (.ls)", 0,0,0 }, +{ IDX_2C('l','t'), "Litauwen (.lt)", 0,0,0 }, +{ IDX_2C('l','u'), "Luxemburg (.lu)", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia (.lv)", 0,0,0 }, +{ IDX_2C('l','y'), "Libie (.ly)", 0,0,0 }, +{ IDX_2C('m','a'), "Marokko (.ma)", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco (.mc)", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova (.md)", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar (.mg)", 0,0,0 }, +{ IDX_2C('m','h'), "Marshall Eilanden (.mh)", 0,0,0 }, +{ IDX_2C('m','k'), "Macedonie (.mk)", 0,0,0 }, +{ IDX_2C('m','l'), "Mali (.ml)", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar (.mm)", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolie (.mn)", 0,0,0 }, +{ IDX_2C('m','o'), "Macau (.mo)", 0,0,0 }, +{ IDX_2C('m','p'), "Noordelijke Mariana Eilanden (.mp)",0,0,0 }, +{ IDX_2C('m','q'), "Martinique (.mq)", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritanie (.mr)", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat (.ms)", 0,0,0 }, +{ IDX_2C('m','t'), "Malta (.mt)", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius (.mu)", 0,0,0 }, +{ IDX_2C('m','v'), "Maldiven (.mv)", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi (.mw)", 0,0,0 }, +{ IDX_2C('m','x'), "Mexico (.mx)", 0,0,0 }, +{ IDX_2C('m','y'), "Maleisie (.my)", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambique (.mz)", 0,0,0 }, +{ IDX_2C('n','a'), "Namibie (.na)", 0,0,0 }, +{ IDX_2C('n','c'), "New Caledonia (.nc)", 0,0,0 }, +{ IDX_2C('n','e'), "Niger (.ne)", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Eiland (.nf)", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria (.ng)", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua (.ni)", 0,0,0 }, +{ IDX_2C('n','l'), "Nederland (.nl)", 0,0,0 }, +{ IDX_2C('n','o'), "Noorwegen (.no)", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal (.np)", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru (.nr)", 0,0,0 }, +{ IDX_2C('n','u'), "Niue (.nu)", 0,0,0 }, +{ IDX_2C('n','z'), "Nieuw Zeeland (.nz)", 0,0,0 }, +{ IDX_2C('o','m'), "Oman (.om)", 0,0,0 }, +{ IDX_2C('p','a'), "Panama (.pa)", 0,0,0 }, +{ IDX_2C('p','e'), "Peru (.pe)", 0,0,0 }, +{ IDX_2C('p','f'), "Frans Polynesie (.pf)", 0,0,0 }, +{ IDX_2C('p','g'), "Papua Nieuw Guinea (.pg)", 0,0,0 }, +{ IDX_2C('p','h'), "Philippijnen (.ph)", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan (.pk)", 0,0,0 }, +{ IDX_2C('p','l'), "Polen (.pl)", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre en Miquelon (.pm)", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn (.pn)", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico (.pr)", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal (.pt)", 0,0,0 }, +{ IDX_2C('p','w'), "Palau (.pw)", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay (.py)", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar (.qa)", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion (.re)", 0,0,0 }, +{ IDX_2C('r','o'), "Romania (.ro)", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Russische Federatie (.ru)", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda (.rs)", 0,0,0 }, +{ IDX_2C('s','a'), "Saudi Arabie (.sa)", 0,0,0 }, +{ IDX_2C('s','b'), "Solomon Eilanden (.sb)", 0,0,0 }, +{ IDX_2C('s','c'), "Seychellen (.sc)", 0,0,0 }, +{ IDX_2C('s','d'), "Soedan (.sd)", 0,0,0 }, +{ IDX_2C('s','e'), "Zweden (.se)", 0,0,0 }, +{ IDX_2C('s','g'), "Singapore (.sg)", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena (.sh)", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenie (.si)", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbard en Jan Mayen Eilanden (.sj)",0,0,0 }, +{ IDX_2C('s','k'), "Slovakije (.sk)", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone (.sl)", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino (.sm)", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal (.sn)", 0,0,0 }, +{ IDX_2C('s','o'), "Somalie (.so)", 0,0,0 }, +{ IDX_2C('s','r'), "Suriname (.sr)", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome en Principe (.st)", 0,0,0 }, +{ IDX_2C('s','u'), "USSR (voorheen, .su)", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador (.sv)", 0,0,0 }, +{ IDX_2C('s','y'), "Syrie (.sy)", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland (.sz)", 0,0,0 }, +{ IDX_2C('t','c'), "Turkse- en Caicos Eilanden (.tc)", 0,0,0 }, +{ IDX_2C('t','d'), "Tsjaad (.td)", 0,0,0 }, +{ IDX_2C('t','f'), "Zuidelijke Franse Terr. (.tf)", 0,0,0 }, +{ IDX_2C('t','g'), "Togo (.tg)", 0,0,0 }, +{ IDX_2C('t','h'), "Thailand (.th)", 0,0,0 }, +{ IDX_2C('t','j'), "Tadzjikistan (.tj)", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau (.tk)", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan (.tm)", 0,0,0 }, +{ IDX_2C('t','n'), "Tunesie (.tn)", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga (.to)", 0,0,0 }, +{ IDX_2C('t','p'), "Oost Timor (.tp)", 0,0,0 }, +{ IDX_2C('t','r'), "Turkije (.tr)", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad en Tobago (.tt)", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu (.tv)", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan (.tw)", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania (.tz)", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraine (.ua)", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda (.ug)", 0,0,0 }, +{ IDX_2C('u','k'), "Ver. Koninkrijk (UK, .uk)", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor buitenliggende eilanden (.um)",0,0,0 }, +{ IDX_2C('u','s'), "Verenigde Staten (USA, .us)", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay (.uy)", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan (.uz)", 0,0,0 }, +{ IDX_2C('v','a'), "Vatikaanstad (.va)", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent en de Grenadinen (.vc)",0,0,0 }, +{ IDX_2C('v','e'), "Venezuela (.ve)", 0,0,0 }, +{ IDX_2C('v','g'), "Virgin Islands (British, .vg)", 0,0,0 }, +{ IDX_2C('v','i'), "Virgin Islands (U.S., .vi)", 0,0,0 }, +{ IDX_2C('v','n'), "Vietnam (.vn)", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu (.vu)", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis en Futuna Eilanden (.wf)", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa (.ws)", 0,0,0 }, +{ IDX_2C('y','e'), "Jemen (.ye)", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte (.yt)", 0,0,0 }, +{ IDX_2C('y','u'), "Joegoslavie (.yu)", 0,0,0 }, +{ IDX_2C('z','a'), "Zuid Africa (.za)", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia (.zm)", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe (.zw)", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.english b/lang/webalizer_lang.english new file mode 100644 index 0000000..bda83d9 --- /dev/null +++ b/lang/webalizer_lang.english @@ -0,0 +1,633 @@ +/* + webalizer_lang.english + + Webalizer V2.0x Language Support file for English. + 15-May-1998 by Bradford L. Barrett (brad@mrunix.net) + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 16-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "English"; +char *langcode = "en"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "records"; +char *msg_addresses="addresses"; +char *msg_ignored = "ignored"; +char *msg_bad = "bad"; +char *msg_in = "in"; +char *msg_seconds = "seconds"; + +/* progress and setup error messages */ +char *msg_log_err = "Error: Can't open log file"; +char *msg_log_use = "Using logfile"; +char *msg_dir_err = "Error: Can't change directory to"; +char *msg_dir_use = "Creating output in"; +char *msg_cur_dir = "current directory"; +char *msg_hostname= "Hostname for reports is"; +char *msg_ign_hist= "Ignoring previous history..."; +char *msg_no_hist = "History file not found..."; +char *msg_get_hist= "Reading history file..."; +char *msg_put_hist= "Saving history information..."; +char *msg_hist_err= "Error: Unable to write history file"; +char *msg_bad_hist= "Error: Ignoring invalid history record"; +char *msg_bad_conf= "Error: Unable to open configuration file"; +char *msg_bad_key = "Warning: Invalid keyword"; +char *msg_bad_date= "Error: Skipping record (bad date)"; +char *msg_ign_nscp= "Skipping Netscape header record"; +char *msg_bad_rec = "Skipping bad record"; +char *msg_no_vrec = "No valid records found!"; +char *msg_gen_rpt = "Generating report for"; +char *msg_gen_sum = "Generating summary report"; +char *msg_get_data= "Reading previous run data.."; +char *msg_put_data= "Saving current run data..."; +char *msg_no_data = "Previous run data not found..."; +char *msg_bad_data= "Error: Unable to restore run data"; +char *msg_data_err= "Error: Unable to save current run data"; +char *msg_dup_data= "Warning: Possible duplicate data found"; + +/* DNS Stuff */ +char *msg_dns_nocf= "No cache file specified, aborting..."; +char *msg_dns_nodb= "Error: Unable to open DNS cache file"; +char *msg_dns_nolk= "Error: Unable to lock DNS cache file"; +char *msg_dns_usec= "Using DNS cache file"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "None to process"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Can't allocate enough memory, Top Sites disabled!"; +char *msg_nomem_tr= "Can't allocate enough memory, Top Referrers disabled!"; +char *msg_nomem_tu= "Can't allocate enough memory, Top URLs disabled!"; +char *msg_nomem_tc= "Can't allocate enough memory, Top Countries disabled!"; +char *msg_nomem_ta= "Can't allocate enough memory, Top User Agents disabled!"; +char *msg_nomem_tsr="Can't allocate enough memory, Top Search Strings disabled!"; +char *msg_nomem_ti= "Can't allocate enough memory, Top Usernames disabled!"; +char *msg_nomem_dh= "Error adding host node (daily), skipping"; +char *msg_nomem_mh= "Error adding host node (monthly), skipping"; +char *msg_nomem_u = "Error adding URL node, skipping"; +char *msg_nomem_a = "Error adding User Agent node, skipping"; +char *msg_nomem_r = "Error adding Referrer node, skipping"; +char *msg_nomem_sc= "Error adding Search String Node, skipping"; +char *msg_nomem_i = "Error adding Username node, skipping"; + +/* log record errors */ +char *msg_big_rec = "Error: Skipping oversized log record"; +char *msg_big_host= "Warning: Truncating oversized hostname"; +char *msg_big_date= "Warning: Truncating oversized date field"; +char *msg_big_req = "Warning: Truncating oversized request field"; +char *msg_big_ref = "Warning: Truncating oversized referrer field"; +char *msg_big_user= "Warning: Truncating oversized username"; +char *msg_big_one = "Warning: String exceeds storage size"; + +/* misc errors */ +char *msg_no_open = "Error: Unable to open file"; + +/* Help display... */ +char *h_usage1 = "Usage"; +char *h_usage2 = "[options] [log file]"; +char *h_msg[]= { + "-h = print this help message" , + "-V = print version information" , + "-v = be verbose" , + "-d = print additional debug info" , + "-F type = Log type. type= (clf | ftp | squid | w3c)", + "-f = Fold sequence errors" , + "-i = ignore history file" , + "-p = preserve state (incremental)" , + "-b = ignore state (incremental)" , + "-q = supress informational messages" , + "-Q = supress _ALL_ messages" , + "-Y = supress country graph" , + "-G = supress hourly graph" , + "-H = supress hourly stats" , + "-L = supress color coded graph legends" , + "-l num = use num background lines on graph" , + "-m num = Visit timout value (seconds)" , + "-T = print timing information" , + "-c file = use configuration file 'file'" , + "-n name = hostname to use" , + "-o dir = output directory to use" , + "-t name = report title 'name'" , + "-a name = hide user agent 'name'" , + "-r name = hide referrer 'name'" , + "-s name = hide site 'name'" , + "-u name = hide URL 'name'" , + "-x name = Use filename extension 'name'" , + "-O name = Omit page 'name'" , + "-P name = Page type extension 'name'" , + "-I name = Index alias 'name'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Display num top agents" , + "-C num = Display num top countries" , + "-R num = Display num top referrers" , + "-S num = Display num top sites" , + "-U num = Display num top URLs" , + "-e num = Display num top Entry Pages" , + "-E num = Display num top Exit Pages" , + "-g num = Group Domains to 'num' levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Use DNS Cache file 'name'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Summary Period"; +char *msg_hhdr_gt = "Generated"; + +/* main index strings */ +char *msg_main_us = "Usage summary for"; +/* char *msg_main_per= "Summary by Month"; */ +char *msg_main_per= "Summary by Month"; +char *msg_main_sum= "Summary by Month"; +char *msg_main_da = "Daily Avg"; +char *msg_main_mt = "Monthly Totals"; + +/* month HTML page strings */ +char *msg_hmth_du = "Daily usage for"; +char *msg_hmth_hu = "Hourly usage for"; + +/* table header strings */ +char *msg_h_by = "By"; +char *msg_h_avg = "Avg"; +char *msg_h_max = "Max"; +char *msg_h_total = "Total"; +char *msg_h_totals= "Totals"; +char *msg_h_day = "Day"; +char *msg_h_mth = "Month"; +char *msg_h_hour = "Hour"; +char *msg_h_hits = "Hits"; +char *msg_h_pages = "Pages"; +char *msg_h_visits= "Visits"; +char *msg_h_files = "Files"; +char *msg_h_sites = "Sites"; +char *msg_h_xfer = "KBytes"; +char *msg_h_hname = "Hostname"; +char *msg_h_url = "URL"; +char *msg_h_agent = "User Agent"; +char *msg_h_ref = "Referrer"; +char *msg_h_ctry = "Country"; +char *msg_h_search= "Search String"; +char *msg_h_uname = "Username"; + +/* links along top of page */ +char *msg_hlnk_ds = "Daily Statistics"; +char *msg_hlnk_hs = "Hourly Statistics"; +char *msg_hlnk_u = "URLs"; +char *msg_hlnk_s = "Sites"; +char *msg_hlnk_a = "Agents"; +char *msg_hlnk_c = "Countries"; +char *msg_hlnk_r = "Referrers"; +char *msg_hlnk_en = "Entry"; +char *msg_hlnk_ex = "Exit"; +char *msg_hlnk_sr = "Search"; +char *msg_hlnk_i = "Users"; + +/* monthly total table */ +char *msg_mtot_ms = "Monthly Statistics for"; +char *msg_mtot_th = "Total Hits"; +char *msg_mtot_tf = "Total Files"; +char *msg_mtot_tx = "Total KBytes"; +char *msg_mtot_us = "Total Unique Sites"; +char *msg_mtot_ur = "Total Unique Referrers"; +char *msg_mtot_ua = "Total Unique User Agents"; +char *msg_mtot_uu = "Total Unique URLs"; +char *msg_mtot_ui = "Total Unique Usernames"; +char *msg_mtot_mhd= "Hits per Day"; +char *msg_mtot_mhh= "Hits per Hour"; +char *msg_mtot_mfd= "Files per Day"; +char *msg_mtot_mpd= "Pages per Day"; +char *msg_mtot_msd= "Sites per Day"; +char *msg_mtot_mvd= "Visits per Day"; +char *msg_mtot_mkd= "KBytes per Day"; +char *msg_mtot_rc = "Hits by Response Code"; + +/* daily total table */ +char *msg_dtot_ds = "Daily Statistics for"; + +/* hourly total table */ +char *msg_htot_hs = "Hourly Statistics for"; + +/* country pie chart */ +char *msg_ctry_use= "Usage by Country for"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Top"; +char *msg_top_of = "of"; +char *msg_top_s = "Total Sites"; +char *msg_top_u = "Total URLs"; +char *msg_top_r = "Total Referrers"; +char *msg_top_a = "Total User Agents"; +char *msg_top_c = "Total Countries"; +char *msg_top_en = "Total Entry Pages"; +char *msg_top_ex = "Total Exit Pages"; +char *msg_top_sr = "Total Search Strings"; +char *msg_top_i = "Total Usernames"; +char *msg_v_sites = "View All Sites"; +char *msg_v_urls = "View All URLs"; +char *msg_v_refs = "View All Referrers"; +char *msg_v_agents= "View All User Agents"; +char *msg_v_search= "View All Search Strings"; +char *msg_v_users = "View All Usernames"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Jan", "Feb", "Mar", + "Apr", "May", "Jun", + "Jul", "Aug", "Sep", + "Oct", "Nov", "Dec"}; + +/* long month names - can be any length */ +char *l_month[12]={ "January", "February", "March", "April", + "May", "June", "July", "August", + "September","October", "November","December"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Undefined response code", 0 }, + { "Code 100 - Continue", 0 }, + { "Code 101 - Switching Protocols", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Created", 0 }, + { "Code 202 - Accepted", 0 }, + { "Code 203 - Non-Authoritative Information", 0 }, + { "Code 204 - No Content", 0 }, + { "Code 205 - Reset Content", 0 }, + { "Code 206 - Partial Content", 0 }, + { "Code 300 - Multiple Choices", 0 }, + { "Code 301 - Moved Permanently", 0 }, + { "Code 302 - Found", 0 }, + { "Code 303 - See Other", 0 }, + { "Code 304 - Not Modified", 0 }, + { "Code 305 - Use Proxy", 0 }, + { "Code 307 - Moved Temporarily", 0 }, + { "Code 400 - Bad Request", 0 }, + { "Code 401 - Unauthorized", 0 }, + { "Code 402 - Payment Required", 0 }, + { "Code 403 - Forbidden", 0 }, + { "Code 404 - Not Found", 0 }, + { "Code 405 - Method Not Allowed", 0 }, + { "Code 406 - Not Acceptable", 0 }, + { "Code 407 - Proxy Authentication Required", 0 }, + { "Code 408 - Request Timeout", 0 }, + { "Code 409 - Conflict", 0 }, + { "Code 410 - Gone", 0 }, + { "Code 411 - Length Required", 0 }, + { "Code 412 - Precondition Failed", 0 }, + { "Code 413 - Request Entity Too Large", 0 }, + { "Code 414 - Request-URI Too Long", 0 }, + { "Code 415 - Unsupported Media Type", 0 }, + { "Code 416 - Requested Range Not Satisfiable", 0 }, + { "Code 417 - Expectation Failed", 0 }, + { "Code 500 - Internal Server Error", 0 }, + { "Code 501 - Not Implemented", 0 }, + { "Code 502 - Bad Gateway", 0 }, + { "Code 503 - Service Unavailable", 0 }, + { "Code 504 - Gateway Timeout", 0 }, + { "Code 505 - HTTP Version Not Supported", 0 } }; + +char *msg_title = "Usage Statistics for"; +char *msg_h_other = "Other"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Unresolved/Unknown", 0,0,0 }, +{ IDX_3C('c','o','m'), "Commercial (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Educational (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "US Government (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "International (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "US Military (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Network (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Non-Profit (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Address Routing (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Nato field (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "United Arab Emirates", 0,0,0 }, +{ IDX_2C('a','f'), "Afghanistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua and Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armenia", 0,0,0 }, +{ IDX_2C('a','n'), "Netherlands Antilles", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarctica", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "American Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Austria", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaijan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia and Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgium", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brazil", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Island", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Belarus", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Canada", 0,0,0 }, +{ IDX_2C('c','c'), "Cocos (Keeling) Islands", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Central African Republic", 0,0,0 }, +{ IDX_2C('c','g'), "Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Switzerland", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire (Ivory Coast)", 0,0,0 }, +{ IDX_2C('c','k'), "Cook Islands", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Cameroon", 0,0,0 }, +{ IDX_2C('c','n'), "China", 0,0,0 }, +{ IDX_2C('c','o'), "Colombia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Christmas Island", 0,0,0 }, +{ IDX_2C('c','y'), "Cyprus", 0,0,0 }, +{ IDX_2C('c','z'), "Czech Republic", 0,0,0 }, +{ IDX_2C('d','e'), "Germany", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Denmark", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Dominican Republic", 0,0,0 }, +{ IDX_2C('d','z'), "Algeria", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador", 0,0,0 }, +{ IDX_2C('e','e'), "Estonia", 0,0,0 }, +{ IDX_2C('e','g'), "Egypt", 0,0,0 }, +{ IDX_2C('e','h'), "Western Sahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Spain", 0,0,0 }, +{ IDX_2C('e','t'), "Ethiopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finland", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Falkland Islands (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronesia", 0,0,0 }, +{ IDX_2C('f','o'), "Faroe Islands", 0,0,0 }, +{ IDX_2C('f','r'), "France", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Great Britain (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgia", 0,0,0 }, +{ IDX_2C('g','f'), "French Guiana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Greenland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Equatorial Guinea", 0,0,0 }, +{ IDX_2C('g','r'), "Greece", 0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia and S. Sandwich Isls.", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard and McDonald Islands", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Croatia", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Hungary", 0,0,0 }, +{ IDX_2C('i','d'), "Indonesia", 0,0,0 }, +{ IDX_2C('i','e'), "Ireland", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "India", 0,0,0 }, +{ IDX_2C('i','o'), "British Indian Ocean Territory", 0,0,0 }, +{ IDX_2C('i','q'), "Iraq", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Iceland", 0,0,0 }, +{ IDX_2C('i','t'), "Italy", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Jordan", 0,0,0 }, +{ IDX_2C('j','p'), "Japan", 0,0,0 }, +{ IDX_2C('k','e'), "Kenya", 0,0,0 }, +{ IDX_2C('k','g'), "Kyrgyzstan", 0,0,0 }, +{ IDX_2C('k','h'), "Cambodia", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts and Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Korea, Democratic Republic of", 0,0,0 }, +{ IDX_2C('k','r'), "Korea, Republic of", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Cayman Islands", 0,0,0 }, +{ IDX_2C('k','z'), "Kazakhstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Lebanon", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lithuania", 0,0,0 }, +{ IDX_2C('l','u'), "Luxembourg", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia", 0,0,0 }, +{ IDX_2C('l','y'), "Libya", 0,0,0 }, +{ IDX_2C('m','a'), "Morocco", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Marshall Islands", 0,0,0 }, +{ IDX_2C('m','k'), "Macedonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolia", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Northern Mariana Islands", 0,0,0 }, +{ IDX_2C('m','q'), "Martinique", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldives", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexico", 0,0,0 }, +{ IDX_2C('m','y'), "Malaysia", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambique", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "New Caledonia", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Island", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Netherlands", 0,0,0 }, +{ IDX_2C('n','o'), "Norway", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "New Zealand", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "French Polynesia", 0,0,0 }, +{ IDX_2C('p','g'), "Papua New Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Philippines", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Poland", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre and Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Romania", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Russian Federation", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saudi Arabia", 0,0,0 }, +{ IDX_2C('s','b'), "Solomon Islands", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Sweden", 0,0,0 }, +{ IDX_2C('s','g'), "Singapore", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenia", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbard and Jan Mayen Islands", 0,0,0 }, +{ IDX_2C('s','k'), "Slovakia", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Suriname", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome and Principe", 0,0,0 }, +{ IDX_2C('s','u'), "Soviet Union", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Turks and Caicos Islands", 0,0,0 }, +{ IDX_2C('t','d'), "Chad", 0,0,0 }, +{ IDX_2C('t','f'), "French Southern Territories", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Thailand", 0,0,0 }, +{ IDX_2C('t','j'), "Tajikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisia", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Portuguese Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turkey", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad and Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraine", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "United Kingdom", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying Islands", 0,0,0 }, +{ IDX_2C('u','s'), "United States", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatican City State (Holy See)", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent and the Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Virgin Islands (British)", 0,0,0 }, +{ IDX_2C('v','i'), "Virgin Islands (U.S.)", 0,0,0 }, +{ IDX_2C('v','n'), "Viet Nam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis and Futuna Islands", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Yugoslavia", 0,0,0 }, +{ IDX_2C('z','a'), "South Africa", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0 , NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.estonian b/lang/webalizer_lang.estonian new file mode 100644 index 0000000..e260368 --- /dev/null +++ b/lang/webalizer_lang.estonian @@ -0,0 +1,632 @@ +/* + webalizer_lang.estonian + + Webalizer V2.0x Language Support file for Estonian. + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 11-Aug-1999 Translation into estonian by Märt Laak + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Estonian"; +char *langcode = "et"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "kirjet"; +char *msg_addresses="addresses"; +char *msg_ignored = "ignoreeritud"; +char *msg_bad = "vigast"; +char *msg_in = ""; +char *msg_seconds = "sekundi jooksul"; + +/* progress and setup error messages */ +char *msg_log_err = "Viga: Ei suuda avada logifaili(e)"; +char *msg_log_use = "logifail"; +char *msg_dir_err = "Viga: Ei suuda vahetada töökataloogi"; +char *msg_dir_use = "kasutades kataloogi"; +char *msg_cur_dir = "jooksev kataloog"; +char *msg_hostname= "Serveri nimi"; +char *msg_ign_hist= "Ignoreerin eelnevat ajalooinfot..."; +char *msg_no_hist = "Ajaloofaili ei leitud..."; +char *msg_get_hist= "Loen ajaloofaili..."; +char *msg_put_hist= "Salvestan ajaloofaili..."; +char *msg_hist_err= "Viga: Ei suuda salvestada ajaloofaili"; +char *msg_bad_hist= "Viga: Ignoreerin vigast ajalookirjet"; +char *msg_bad_conf= "Viga: Ei suuda avada konfiguratsioonifaili"; +char *msg_bad_key = "Hoiatus: Vigane võtmesõna"; +char *msg_bad_date= "Viga: Ignoreerin kirjet (vigane kuupäev)"; +char *msg_ign_nscp= "Ignoreerin Netscape päiskirjet"; +char *msg_bad_rec = "Ignoreerin vigast kirjet"; +char *msg_no_vrec = "Ei leitud ühtegi arusaadavat logikirjet!"; +char *msg_gen_rpt = "Genereerin raportit"; +char *msg_gen_sum = "Genereerin kokkuvõtterapotit"; +char *msg_get_data= "Loen eelmise käivitamise andmeid..."; +char *msg_put_data= "Salvestan antud (jooksva) käivitamise andmeid..."; +char *msg_no_data = "Eelmise käivitamise andmeid ei leitud..."; +char *msg_bad_data= "Viga: Ei suuda lugeda eelmise käivitamise andmeid"; +char *msg_data_err= "Viga: Ei suuda salvestada käivitamise andmeid"; +char *msg_dup_data= "Hoiatus: Tõenäoliselt leitud topeltkirjed"; + +/* DNS Stuff */ +char *msg_dns_nocf= "No cache file specified, aborting..."; +char *msg_dns_nodb= "Error: Unable to open DNS cache file"; +char *msg_dns_nolk= "Error: Unable to lock DNS cache file"; +char *msg_dns_usec= "Using DNS cache file"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "None to process"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Ei suuda reserveerida piisavalt mälu, Arvutite edetabelit ei tee!"; +char *msg_nomem_tr= "Ei suuda reserveerida piisavalt mälu, Linkijate edetabelit ei tee!"; +char *msg_nomem_tu= "Ei suuda reserveerida piisavalt mälu, Aadresside edetabelit ei tee!"; +char *msg_nomem_tc= "Ei suuda reserveerida piisavalt mälu, Maade edetabelit ei tee!"; +char *msg_nomem_ta= "Ei suuda reserveerida piisavalt mälu, Lehitsejate edetabelit ei tee!"; +char *msg_nomem_tsr="Ei suuda reserveerida piisavalt mälu, Otsistringide edetabelit ei tee!"; +char *msg_nomem_ti= "Can't allocate enough memory, Top Usernames disabled!"; +char *msg_nomem_dh= "Arvuti lisamisel (päevade kaupa) viga, jätan vahele"; +char *msg_nomem_mh= "Arvuti lisamisel (kuude kaupa) viga, jätan vahele"; +char *msg_nomem_u = "URLi lisamisel viga, jätan vahele"; +char *msg_nomem_a = "Lehitseja lisamisel viga, jätan vahele"; +char *msg_nomem_r = "Linkija lisamisel viga, jätan vahele"; +char *msg_nomem_sc= "Otsistringi lisamisel viga, jätan vahele"; +char *msg_nomem_i = "Error adding Username node, skipping"; + +/* log record errors */ +char *msg_big_rec = "Viga: jätan vahele liigpika logikirje"; +char *msg_big_host= "Hoiatus: Teen lühemaks liigpika arvutinime"; +char *msg_big_date= "Hoiatus: Teen lühemaks liigpika kuupäevavälja"; +char *msg_big_req = "Hoiatus: Teen lühemaks liigpika päringuvälja"; +char *msg_big_ref = "Hoiatus: Teen lühemaks liigpika linkija-välja"; +char *msg_big_user= "Warning: Truncating oversized username"; +char *msg_big_one = "Hoiatus: Stringi pikkus ületab lubatud mälumahu"; + +/* misc errors */ +char *msg_no_open = "Viga: Ei suuda avada faili"; + +/* Help display... */ +char *h_usage1 = "Usage"; +char *h_usage2 = "[options] [log file]"; +char *h_msg[]= { + "-h = kuva see help" , + "-V = kuva versiooniinfo" , + "-v = be verbose" , + "-d = kuva täiendav debug info" , + "-F type = Log type. type= (clf | ftp | squid | w3c)", + "-f = ignoreeri kirjete järjestuse vigu" , + "-i = ignoreeri ajaloofaili" , + "-p = säilita olek (inkrementaalne rezhiim)", + "-b = ignoreeri olek (inkrementaalne rezhiim)", + "-q = keela informatiivsed teated" , + "-Q = keela KÕIK teated" , + "-Y = keela maade graafik" , + "-G = keela tunnigraafik" , + "-H = keela tunnistatistika" , + "-L = keela värvilegendide kuva" , + "-l num = kasuta graafikutel {num} horisontaaljoont", + "-m num = viisidi timeout väärtus (seconds)" , + "-T = kuva ajakulu info" , + "-c file = kasuta konfiguratsioonifaili 'file'" , + "-n name = kasuta nime {hostname}" , + "-o dir = kasuta väljundiks kataloogi {dir}" , + "-t name = raportite pealkiri on 'name'" , + "-a name = peida ära lehitseja 'name'" , + "-r name = peida ära linkija 'name'" , + "-s name = peida ära arvuti 'name'" , + "-u name = peida ära URL 'name'" , + "-x name = kasuta faililaiendit 'name'" , + "-O name = Omit page 'name'" , + "-P name = leheküljeks loetakse faili laiendiga 'name'", + "-I name = indexfaili nimi on 'name'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = kuva esimesed {num} lehitsejat" , + "-C num = kuva esimesed {num} maad" , + "-R num = kuva esimesed {num} linkijat" , + "-S num = kuva esimesed {num} arvutit" , + "-U num = kuva esimesed {num} URL-i" , + "-e num = kuva esimesed {num} sisendpunkti" , + "-E num = kuva esimesed {num} väljundpunkti" , + "-g num = Group Domains to 'num' levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Use DNS Cache file 'name'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Kokkuvõte perioodile"; +char *msg_hhdr_gt = "genereeritud"; + +/* main index strings */ +char *msg_main_us = "Kasutuse kokkuvõte"; +/* char *msg_main_per= "Viimased 12 kuud"; */ +char *msg_main_per= "Kokkuvõtted kuude kaupa"; +char *msg_main_sum= "Kokkuvõtted kuude kaupa"; +char *msg_main_da = "Päeva keskm."; +char *msg_main_mt = "Kuu kokku"; + +/* month HTML page strings */ +char *msg_hmth_du = "Kasutuspäevad"; +char *msg_hmth_hu = "Kasutustunnid"; + +/* table header strings */ +char *msg_h_by = ""; +char *msg_h_avg = "Keskm"; +char *msg_h_max = "Maks"; +char *msg_h_total = "Kokku"; +char *msg_h_totals= "Kokku"; +char *msg_h_day = "Päev"; +char *msg_h_mth = "Kuu"; +char *msg_h_hour = "Tund"; +char *msg_h_hits = "Pöördumisi"; +char *msg_h_pages = "Lehekülgi"; +char *msg_h_visits= "Külastusi"; +char *msg_h_files = "Faile"; +char *msg_h_sites = "Arvuteid"; +char *msg_h_xfer = "KBaite"; +char *msg_h_hname = "Server"; +char *msg_h_url = "Aadress"; +char *msg_h_agent = "Lehitseja"; +char *msg_h_ref = "Linkija"; +char *msg_h_ctry = "Maa"; +char *msg_h_search= "Otsistring"; +char *msg_h_uname = "Username"; + +/* links along top of page */ +char *msg_hlnk_ds = "Päevade statistika"; +char *msg_hlnk_hs = "Tundide statistika"; +char *msg_hlnk_u = "Aadressid"; +char *msg_hlnk_s = "Arvutid"; +char *msg_hlnk_a = "Lehitsejad"; +char *msg_hlnk_c = "Maad"; +char *msg_hlnk_r = "Linkijad"; +char *msg_hlnk_en = "Sisendpunkt"; +char *msg_hlnk_ex = "Väljundpunkt"; +char *msg_hlnk_sr = "Otsisõna"; +char *msg_hlnk_i = "Users"; + +/* monthly total table */ +char *msg_mtot_ms = "Kuu statistika"; +char *msg_mtot_th = "Kokku Pöördumisi"; +char *msg_mtot_tf = "Kokku Faile"; +char *msg_mtot_tx = "Kokku KBaite"; +char *msg_mtot_us = "Kokku Erinevaid Kasutajaid"; +char *msg_mtot_ur = "Kokku Erinevaid Viitajaid"; +char *msg_mtot_ua = "Kokku Erinevaid Lehitsejaid"; +char *msg_mtot_uu = "Kokku Erinevaid Aadresse"; +char *msg_mtot_ui = "Kokku Erinevaid Kasutajaid"; +char *msg_mtot_mhd= "Pöördumisi Päevas"; +char *msg_mtot_mhh= "Pöördumisi Tunnis"; +char *msg_mtot_mfd= "Faile Päevas"; +char *msg_mtot_mpd= "Lehekülgi Päevas"; +char *msg_mtot_msd= "Külastajaarvutist Päevas"; +char *msg_mtot_mvd= "Visiite Päevas"; +char *msg_mtot_mkd= "KBaite Päevas"; +char *msg_mtot_rc = "Pöördumisi vastusetüüpide kaupa"; + +/* daily total table */ +char *msg_dtot_ds = "Päevade statistika"; + +/* hourly total table */ +char *msg_htot_hs = "Tundide statistika"; + +/* country pie chart */ +char *msg_ctry_use= "Kasutus maade kaupa"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Esimesed"; +char *msg_top_of = "kõigist"; +char *msg_top_s = "külastajaarvutist"; +char *msg_top_u = "külastatud aadressist"; +char *msg_top_r = "ettetulnud linkijast"; +char *msg_top_a = "kasutatud lehitsejast"; +char *msg_top_c = "külastajamaast"; +char *msg_top_en = "sisendpunktist"; +char *msg_top_ex = "väljundpunktist"; +char *msg_top_sr = "kasutatud otsisõnast"; +char *msg_top_i = "erinevatest kasutajatest"; +char *msg_v_sites = "View All Sites"; +char *msg_v_urls = "View All URLs"; +char *msg_v_refs = "View All Referrers"; +char *msg_v_agents= "View All User Agents"; +char *msg_v_search= "View All Search Strings"; +char *msg_v_users = "View All Usernames"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Jan", "Veb", "Mär", + "Apr", "Mai", "Jun", + "Jul", "Aug", "Sep", + "Okt", "Nov", "Det"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Jaanuar", "Veebruar", "Märts", "Aprill", + "Mai", "Juuni", "Juuli", "August", + "September","Oktoober", "November","Detsember"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Defineerimata vastuskood", 0 }, + { "Kood 100 - Continue", 0 }, + { "Kood 101 - Switching Protocols", 0 }, + { "Kood 200 - OK", 0 }, + { "Kood 201 - Created", 0 }, + { "Kood 202 - Accepted", 0 }, + { "Kood 203 - Non-Authoritative Information", 0 }, + { "Kood 204 - No Content", 0 }, + { "Kood 205 - Reset Content", 0 }, + { "Kood 206 - Partial Content", 0 }, + { "Kood 300 - Multiple Choices", 0 }, + { "Kood 301 - Moved Permanently", 0 }, + { "Kood 302 - Found", 0 }, + { "Kood 303 - See Other", 0 }, + { "Kood 304 - Not Modified", 0 }, + { "Kood 305 - Use Proxy", 0 }, + { "Kood 307 - Moved Temporarily", 0 }, + { "Kood 400 - Bad Request", 0 }, + { "Kood 401 - Unauthorized", 0 }, + { "Kood 402 - Payment Required", 0 }, + { "Kood 403 - Forbidden", 0 }, + { "Kood 404 - Not Found", 0 }, + { "Kood 405 - Method Not Allowed", 0 }, + { "Kood 406 - Not Acceptable", 0 }, + { "Kood 407 - Proxy Authentication Required", 0 }, + { "Kood 408 - Request Timeout", 0 }, + { "Kood 409 - Conflict", 0 }, + { "Kood 410 - Gone", 0 }, + { "Kood 411 - Length Required", 0 }, + { "Kood 412 - Precondition Failed", 0 }, + { "Kood 413 - Request Entity Too Large", 0 }, + { "Kood 414 - Request-URI Too Long", 0 }, + { "Kood 415 - Unsupported Media Type", 0 }, + { "Kood 416 - Requested Range Not Satisfiable", 0 }, + { "Kood 417 - Expectation Failed", 0 }, + { "Kood 500 - Internal Server Error", 0 }, + { "Kood 501 - Not Implemented", 0 }, + { "Kood 502 - Bad Gateway", 0 }, + { "Kood 503 - Service Unavailable", 0 }, + { "Kood 504 - Gateway Timeout", 0 }, + { "Kood 505 - HTTP Version Not Supported", 0 } }; + +char *msg_title = "Kasutusstatistika"; +char *msg_h_other = "Muu"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Numbriline/Tundmatu maa", 0,0,0 }, +{ IDX_3C('c','o','m'), "Äridomeenid (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Haridusdomeenid (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "USA Riiklikud (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "Rahvusvaheline (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "USA Sõjaline (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Interneti organisatsioonid (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Mittekommertsiaalorganisatsioonid (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Address Routing (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Nato", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "Ühendatud Araabia Emiraadid", 0,0,0 }, +{ IDX_2C('a','f'), "Afganistaan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua ja Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albaania", 0,0,0 }, +{ IDX_2C('a','m'), "Armeenia", 0,0,0 }, +{ IDX_2C('a','n'), "Hollandi Antillid", 0,0,0 }, +{ IDX_2C('a','o'), "Angoola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarktika", 0,0,0 }, +{ IDX_2C('a','r'), "Argentiina", 0,0,0 }, +{ IDX_2C('a','s'), "Ameerika Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Austria", 0,0,0 }, +{ IDX_2C('a','u'), "Austraalia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaidzan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia ja Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgia", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Boliivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brasiilia", 0,0,0 }, +{ IDX_2C('b','s'), "Bahama saared", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Saar", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Valgevene", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Kanada", 0,0,0 }, +{ IDX_2C('c','c'), "Cocos (Keeling) Saared", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Kesk-Aafrika Vabariik", 0,0,0 }, +{ IDX_2C('c','g'), "Kongo", 0,0,0 }, +{ IDX_2C('c','h'), "Shveits", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire (Ivory Coast)", 0,0,0 }, +{ IDX_2C('c','k'), "Cooki Saared", 0,0,0 }, +{ IDX_2C('c','l'), "Tshiili", 0,0,0 }, +{ IDX_2C('c','m'), "Kameron", 0,0,0 }, +{ IDX_2C('c','n'), "Hiina", 0,0,0 }, +{ IDX_2C('c','o'), "Kolumbia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Kuuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Jõulusaared", 0,0,0 }, +{ IDX_2C('c','y'), "Küpros", 0,0,0 }, +{ IDX_2C('c','z'), "Tsehhi Vabariik", 0,0,0 }, +{ IDX_2C('d','e'), "Saksamaa", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Taani", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Dominican Republic", 0,0,0 }, +{ IDX_2C('d','z'), "Alzheeria", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador", 0,0,0 }, +{ IDX_2C('e','e'), "Eesti", 0,0,0 }, +{ IDX_2C('e','g'), "Egiptus", 0,0,0 }, +{ IDX_2C('e','h'), "Lääne Sahhaara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Hispaania", 0,0,0 }, +{ IDX_2C('e','t'), "Etioopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Soome", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Falkland Islands (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronesia", 0,0,0 }, +{ IDX_2C('f','o'), "Faroe Islands", 0,0,0 }, +{ IDX_2C('f','r'), "Prantsusmaa", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Suurbritannia", 0,0,0 }, +{ IDX_2C('g','d'), "Grenaada", 0,0,0 }, +{ IDX_2C('g','e'), "Gruusia", 0,0,0 }, +{ IDX_2C('g','f'), "Prantsuse Guiana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Gaana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Greenland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Ginea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Ekvatoriaal-Ginea", 0,0,0 }, +{ IDX_2C('g','r'), "Kreeka", 0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia and S. Sandwich Isls.", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard and McDonald Islands", 0,0,0 }, +{ IDX_2C('h','n'), "Honduuras", 0,0,0 }, +{ IDX_2C('h','r'), "Horvaatia", 0,0,0 }, +{ IDX_2C('h','t'), "Haiiti", 0,0,0 }, +{ IDX_2C('h','u'), "Ungari", 0,0,0 }, +{ IDX_2C('i','d'), "Indoneesia", 0,0,0 }, +{ IDX_2C('i','e'), "Iirimaa", 0,0,0 }, +{ IDX_2C('i','l'), "Iisrael", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "India", 0,0,0 }, +{ IDX_2C('i','o'), "British Indian Ocean Territory", 0,0,0 }, +{ IDX_2C('i','q'), "Iraak", 0,0,0 }, +{ IDX_2C('i','r'), "Iraan", 0,0,0 }, +{ IDX_2C('i','s'), "Island", 0,0,0 }, +{ IDX_2C('i','t'), "Itaalia", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Jordaania", 0,0,0 }, +{ IDX_2C('j','p'), "Jaapan", 0,0,0 }, +{ IDX_2C('k','e'), "Kenya", 0,0,0 }, +{ IDX_2C('k','g'), "Kõrgõzstan", 0,0,0 }, +{ IDX_2C('k','h'), "Kampuchea", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts ja Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Põhja-Korea", 0,0,0 }, +{ IDX_2C('k','r'), "Lõuna-Korea", 0,0,0 }, +{ IDX_2C('k','w'), "Kuveit", 0,0,0 }, +{ IDX_2C('k','y'), "Kaimani saared", 0,0,0 }, +{ IDX_2C('k','z'), "Kasahstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Liibanon", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Libeeria", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Leedu", 0,0,0 }, +{ IDX_2C('l','u'), "Luksemburg", 0,0,0 }, +{ IDX_2C('l','v'), "Läti", 0,0,0 }, +{ IDX_2C('l','y'), "Liibüa", 0,0,0 }, +{ IDX_2C('m','a'), "Maroko", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagaskar", 0,0,0 }, +{ IDX_2C('m','h'), "Marshalli saared", 0,0,0 }, +{ IDX_2C('m','k'), "Makedoonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongoolia", 0,0,0 }, +{ IDX_2C('m','o'), "Macao", 0,0,0 }, +{ IDX_2C('m','p'), "Northern Mariana Islands", 0,0,0 }, +{ IDX_2C('m','q'), "Martinique", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritaania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Malediivid", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mehhiko", 0,0,0 }, +{ IDX_2C('m','y'), "Malaisia", 0,0,0 }, +{ IDX_2C('m','z'), "Mosambiik", 0,0,0 }, +{ IDX_2C('n','a'), "Namiibia", 0,0,0 }, +{ IDX_2C('n','c'), "Uus-Kaledoonia", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolki saar", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Holland", 0,0,0 }, +{ IDX_2C('n','o'), "Norra", 0,0,0 }, +{ IDX_2C('n','p'), "Nepaal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "Uus-Meremaa", 0,0,0 }, +{ IDX_2C('o','m'), "Omaan", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peruu", 0,0,0 }, +{ IDX_2C('p','f'), "Prantsuse Polüneesia", 0,0,0 }, +{ IDX_2C('p','g'), "Paapua Uus-Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Filipiinid", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Poola", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre ja Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Katar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Rumeenia", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Vene Föderatsioon", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saudi Araabia", 0,0,0 }, +{ IDX_2C('s','b'), "Solomoni saared", 0,0,0 }, +{ IDX_2C('s','c'), "Seishellid", 0,0,0 }, +{ IDX_2C('s','d'), "Sudaan", 0,0,0 }, +{ IDX_2C('s','e'), "Rootsi", 0,0,0 }, +{ IDX_2C('s','g'), "Singapur", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Sloveenia", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbard ja Jan Mayen saared", 0,0,0 }, +{ IDX_2C('s','k'), "Slovakkia", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somaalia", 0,0,0 }, +{ IDX_2C('s','r'), "Suriname", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome ja Principe", 0,0,0 }, +{ IDX_2C('s','u'), "NSVL (endine)", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Süüria", 0,0,0 }, +{ IDX_2C('s','z'), "Svaasimaa", 0,0,0 }, +{ IDX_2C('t','c'), "Turks ja Caicos saared", 0,0,0 }, +{ IDX_2C('t','d'), "Tshaad", 0,0,0 }, +{ IDX_2C('t','f'), "French Southern Territories", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Tai", 0,0,0 }, +{ IDX_2C('t','j'), "Tadzhikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmeenia", 0,0,0 }, +{ IDX_2C('t','n'), "Tuneesia", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Ida Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Türgi", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad ja Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tansaania", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraina", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "Suur Britannia", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying Islands", 0,0,0 }, +{ IDX_2C('u','s'), "Ameerika Ühendriigid", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Usbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatikan", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent ja the Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Neitsi saared (Briti)", 0,0,0 }, +{ IDX_2C('v','i'), "Neitsi saared (U.S.)", 0,0,0 }, +{ IDX_2C('v','n'), "Vietnam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis ja Futuna saared", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Jeemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Jugoslaavia", 0,0,0 }, +{ IDX_2C('z','a'), "Lõuna-Aafrika Vabariik", 0,0,0 }, +{ IDX_2C('z','m'), "Sambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.finnish b/lang/webalizer_lang.finnish new file mode 100644 index 0000000..d99fbd0 --- /dev/null +++ b/lang/webalizer_lang.finnish @@ -0,0 +1,640 @@ +/* + webalizer_lang.finnish + + Webalizer V2.0x Language Support file for Finnish. + 15-May-1998 by Bradford L. Barrett (brad@mrunix.net) + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 25-Feb-2000 Translate to Finnish by Eero Martikainen + (eero.martikainen@flamenet.com) + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 05-Feb-2001 Grammar and spelling corrections by Osma Suominen (ozone@iki.fi) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Finnish"; +char *langcode = "fi"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ +/* Errors, help and setup messages not translated by finnish. */ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "records"; +char *msg_addresses="addresses"; +char *msg_ignored = "ignored"; +char *msg_bad = "bad"; +char *msg_in = "in"; +char *msg_seconds = "seconds"; + +/* progress and setup error messages */ +char *msg_log_err = "Error: Can't open log file"; +char *msg_log_use = "Using logfile"; +char *msg_dir_err = "Error: Can't change directory to"; +char *msg_dir_use = "Creating output in"; +char *msg_cur_dir = "current directory"; +char *msg_hostname= "Hostname for reports is"; +char *msg_ign_hist= "Ignoring previous history..."; +char *msg_no_hist = "History file not found..."; +char *msg_get_hist= "Reading history file..."; +char *msg_put_hist= "Saving history information..."; +char *msg_hist_err= "Error: Unable to write history file"; +char *msg_bad_hist= "Error: Ignoring invalid history record"; +char *msg_bad_conf= "Error: Unable to open configuration file"; +char *msg_bad_key = "Warning: Invalid keyword"; +char *msg_bad_date= "Error: Skipping record (bad date)"; +char *msg_ign_nscp= "Skipping Netscape header record"; +char *msg_bad_rec = "Skipping bad record"; +char *msg_no_vrec = "No valid records found!"; +char *msg_gen_rpt = "Generating report for"; +char *msg_gen_sum = "Generating summary report"; +char *msg_get_data= "Reading previous run data.."; +char *msg_put_data= "Saving current run data..."; +char *msg_no_data = "Previous run data not found..."; +char *msg_bad_data= "Error: Unable to restore run data"; +char *msg_data_err= "Error: Unable to save current run data"; +char *msg_dup_data= "Warning: Possible duplicate data found"; + +/* DNS Stuff */ +char *msg_dns_nocf= "No cache file specified, aborting..."; +char *msg_dns_nodb= "Error: Unable to open DNS cache file"; +char *msg_dns_nolk= "Error: Unable to lock DNS cache file"; +char *msg_dns_usec= "Using DNS cache file"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "None to process"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Can't allocate enough memory, Top Sites disabled!"; +char *msg_nomem_tr= "Can't allocate enough memory, Top Referrers disabled!"; +char *msg_nomem_tu= "Can't allocate enough memory, Top URLs disabled!"; +char *msg_nomem_tc= "Can't allocate enough memory, Top Countries disabled!"; +char *msg_nomem_ta= "Can't allocate enough memory, Top User Agents disabled!"; +char *msg_nomem_tsr="Can't allocate enough memory, Top Search Strings disabled!"; +char *msg_nomem_ti= "Can't allocate enough memory, Top Usernames disabled!"; +char *msg_nomem_dh= "Error adding host node (daily), skipping"; +char *msg_nomem_mh= "Error adding host node (monthly), skipping"; +char *msg_nomem_u = "Error adding URL node, skipping"; +char *msg_nomem_a = "Error adding User Agent node, skipping"; +char *msg_nomem_r = "Error adding Referrer node, skipping"; +char *msg_nomem_sc= "Error adding Search String Node, skipping"; +char *msg_nomem_i = "Error adding Username node, skipping"; + +/* log record errors */ +char *msg_big_rec = "Error: Skipping oversized log record"; +char *msg_big_host= "Warning: Truncating oversized hostname"; +char *msg_big_date= "Warning: Truncating oversized date field"; +char *msg_big_req = "Warning: Truncating oversized request field"; +char *msg_big_ref = "Warning: Truncating oversized referrer field"; +char *msg_big_user= "Warning: Truncating oversized username"; +char *msg_big_one = "Warning: String exceeds storage size"; + +/* misc errors */ +char *msg_no_open = "Virhe: Tiedostoa ei voi avata:"; + +/* Help display... */ +char *h_usage1 = "Usage"; +char *h_usage2 = "[options] [log file]"; +char *h_msg[]= { + "-h = print this help message" , + "-V = print version information" , + "-v = be verbose" , + "-d = print additional debug info" , + "-F type = Log type. type= (clf | ftp | squid | w3c)", + "-f = Fold sequence errors" , + "-i = ignore history file" , + "-p = preserve state (incremental)" , + "-b = ignore state (incremental)" , + "-q = supress informational messages" , + "-Q = supress _ALL_ messages" , + "-Y = supress country graph" , + "-G = supress hourly graph" , + "-H = supress hourly stats" , + "-L = supress color coded graph legends" , + "-l num = use num background lines on graph" , + "-m num = Visit timout value (seconds)" , + "-T = print timing information" , + "-c file = use configuration file 'file'" , + "-n name = hostname to use" , + "-o dir = output directory to use" , + "-t name = report title 'name'" , + "-a name = hide user agent 'name'" , + "-r name = hide referrer 'name'" , + "-s name = hide site 'name'" , + "-u name = hide URL 'name'" , + "-x name = Use filename extension 'name'" , + "-O name = Omit page 'name'" , + "-P name = Page type extension 'name'" , + "-I name = Index alias 'name'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Display num top agents" , + "-C num = Display num top countries" , + "-R num = Display num top referrers" , + "-S num = Display num top sites" , + "-U num = Display num top URLs" , + "-e num = Display num top Entry Pages" , + "-E num = Display num top Exit Pages" , + "-g num = Group Domains to 'num' levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Use DNS Cache file 'name'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* Tästä alkaa suomennos. Finnish translation starts here. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Yhteenveto ajalta"; +char *msg_hhdr_gt = "Luotu"; + +/* main index strings */ +char *msg_main_us = "Käyttöyhteenveto:"; +/* char *msg_main_per= "Viimeisimmät 12 kuukautta"; */ +char *msg_main_per= "Kuukausittainen yhteenveto"; +char *msg_main_sum= "Kuukausittainen yhteenveto"; +char *msg_main_da = "Päivien keskiarvo"; +char *msg_main_mt = "Yhteensä kuukaudessa"; + +/* month HTML page strings */ +char *msg_hmth_du = "Päivittäinen käyttö"; +char *msg_hmth_hu = "Tunnittainen käyttö"; + +/* table header strings */ +char *msg_h_by = "/"; +char *msg_h_avg = "Keskiarvo"; +char *msg_h_max = "Max"; +char *msg_h_total = "Yhteensä"; +char *msg_h_totals= "Kaikki yhteensä"; +char *msg_h_day = "Päivä"; +char *msg_h_mth = "Kuukausi"; +char *msg_h_hour = "Tunti"; +char *msg_h_hits = "osumia"; +char *msg_h_pages = "sivuja"; +char *msg_h_visits= "vierailuja"; +char *msg_h_files = "tiedostoja"; +char *msg_h_sites = "koneita"; +char *msg_h_xfer = "kilotavuja"; +char *msg_h_hname = "Välityspalvelin"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Käytetyt selaimet"; +char *msg_h_ref = "Hakupalvelimet / Linkit sivuille"; +char *msg_h_ctry = "Valtiot"; +char *msg_h_search= "Hakusana"; +char *msg_h_uname = "Käyttäjänimi"; + +/* links along top of page */ +char *msg_hlnk_ds = "Päivätilastot"; +char *msg_hlnk_hs = "Tuntitilastot"; +char *msg_hlnk_u = "URL:t"; +char *msg_hlnk_s = "Koneet"; +char *msg_hlnk_a = "Selaimet"; +char *msg_hlnk_c = "Valtiot"; +char *msg_hlnk_r = "Hakupalvelimet"; +char *msg_hlnk_en = "Sisääntulosivut"; +char *msg_hlnk_ex = "Ulosmenosivut"; +char *msg_hlnk_sr = "Hakusanat"; +char *msg_hlnk_i = "Käyttäjät"; + +/* monthly total table */ +char *msg_mtot_ms = "Kuukausitilastot"; +char *msg_mtot_th = "Osumia yhteensä"; +char *msg_mtot_tf = "Tiedostoja yhteensä"; +char *msg_mtot_tx = "Kilotavuja yhteensä"; +char *msg_mtot_us = "Yhteensä erilaisia koneita"; +char *msg_mtot_ur = "Yhteensä erilaisia hakupalvelimia"; +char *msg_mtot_ua = "Yhteensä erilaisia selaimia"; +char *msg_mtot_uu = "Yhteensä erilaisia URL:iä"; +char *msg_mtot_ui = "Yhteensä erilaisia käyttäjänimiä"; +char *msg_mtot_mhd= "Osumia / päivä"; +char *msg_mtot_mhh= "Osumia / tunti"; +char *msg_mtot_mfd= "Tiedostoja / päivä"; +char *msg_mtot_mpd= "Sivuja / päivä"; +char *msg_mtot_msd= "Koneita / päivä"; +char *msg_mtot_mvd= "Vierailuja / päivä"; +char *msg_mtot_mkd= "Kilotavuja / päivä"; +char *msg_mtot_rc = "Osumien vastauskoodit"; + +/* daily total table */ +char *msg_dtot_ds = "Päivittäiset tilastot"; + +/* hourly total table */ +char *msg_htot_hs = "Tuntitilastot"; + +/* country pie chart */ +char *msg_ctry_use= "Käyttäjiä valtioittain"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Parhaat "; +char *msg_top_of = "yht."; +char *msg_top_s = "koneesta"; +char *msg_top_u = "URL:stä"; +char *msg_top_r = "hakupalvelimesta"; +char *msg_top_a = "selaimesta"; +char *msg_top_c = "valtiosta"; +char *msg_top_en = "sisääntulosivusta"; +char *msg_top_ex = "ulosmenosivusta"; +char *msg_top_sr = "hakusanasta"; +char *msg_top_i = "käyttäjänimestä"; +char *msg_v_sites = "Katso kaikki koneet"; +char *msg_v_urls = "Katso kaikki URL:t"; +char *msg_v_refs = "Katso kaikki linkit sivuille"; +char *msg_v_agents= "Katso kaikki selaimet"; +char *msg_v_search= "Katso kaikki hakusanat"; +char *msg_v_users = "Katso kaikki käyttäjänimet"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Tam", "Hel", "Maa", + "Huh", "Tou", "Kes", + "Hei", "Elo", "Syy", + "Lok", "Mar", "Jou"}; + +/* long month names - can be any length */ +char *l_month[12]={ "tammikuussa", "helmikuussa", "maaliskuussa", "huhtikuussa", + "toukokuussa", "kesäkuussa", "heinäkuussa", "elokuussa", + "syyskuussa", "lokakuussa", "marraskuussa", "joulukuussa"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Tuntematon vastauskoodi", 0 }, + { "Code 100 - Jatka", 0 }, + { "Code 101 - Vaihda Protokollaa", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Luotu", 0 }, + { "Code 202 - Hyväksytty", 0 }, + { "Code 203 - Non-Authoritative Information", 0 }, + { "Code 204 - Ei sisältöä", 0 }, + { "Code 205 - Tyhjennä sisältö", 0 }, + { "Code 206 - Osittainen sisältö", 0 }, + { "Code 300 - Useita vaihtoehtoja", 0 }, + { "Code 301 - Siirretty pysyvästi", 0 }, + { "Code 302 - Löytyi", 0 }, + { "Code 303 - Katso toinen", 0 }, + { "Code 304 - Ei muutettu", 0 }, + { "Code 305 - Käytä välityspalvelinta", 0 }, + { "Code 307 - Siirretty tilapäisesti", 0 }, + { "Code 400 - Huono pyyntö", 0 }, + { "Code 401 - Ei käyttöoikeutta", 0 }, + { "Code 402 - Maksu vaaditaan", 0 }, + { "Code 403 - Kielletty", 0 }, + { "Code 404 - Ei löytynyt", 0 }, + { "Code 405 - Metodi ei ole sallittu", 0 }, + { "Code 406 - Ei hyväksyttävää", 0 }, + { "Code 407 - Proxy Authentication Required", 0 }, + { "Code 408 - Request Timeout", 0 }, + { "Code 409 - Konflikti", 0 }, + { "Code 410 - Mennyttä", 0 }, + { "Code 411 - Pituus vaaditaan", 0 }, + { "Code 412 - Precondition Failed", 0 }, + { "Code 413 - Request Entity Too Large", 0 }, + { "Code 414 - Pyydetty URL liian pitkä", 0 }, + { "Code 415 - Mediatyyppiä ei tueta", 0 }, + { "Code 416 - Requested Range Not Satisfiable", 0 }, + { "Code 417 - Expectation Failed", 0 }, + { "Code 500 - Palvelimen sisäinen virhe", 0 }, + { "Code 501 - Not Implemented", 0 }, + { "Code 502 - Bad Gateway", 0 }, + { "Code 503 - Palvelu ei ole saatavilla", 0 }, + { "Code 504 - Gateway Timeout", 0 }, + { "Code 505 - HTTP-versiota ei tueta", 0 } }; + +char *msg_title = "Käyttötilastot"; +char *msg_h_other = "Muut"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Tuntematon", 0,0,0 }, +{ IDX_3C('c','o','m'), "Kaupallinen (.com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Educational (.edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "USA Hallitus (.gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "Kansainvälinen (.int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "USA Armeija (.mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Verkko (.net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Ei-kaupallinen yhteisö (.org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Vanhan tyylin Arpanet (.arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Naton tukikohta (.nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "Yhdistyneet Arabiemiraatit", 0,0,0 }, +{ IDX_2C('a','f'), "Afganistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua and Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armenia", 0,0,0 }, +{ IDX_2C('a','n'), "Hollannin Antillit", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Etelänapamantere", 0,0,0 }, +{ IDX_2C('a','r'), "Argentiina", 0,0,0 }, +{ IDX_2C('a','s'), "Amerikan Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Itävalta", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaijan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia ja Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgia", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brasilia", 0,0,0 }, +{ IDX_2C('b','s'), "Bahama", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Island", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Valko-Venäjä", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Kanada", 0,0,0 }, +{ IDX_2C('c','c'), "Cocos (Keeling) Islands", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Central African Republic", 0,0,0 }, +{ IDX_2C('c','g'), "Kongo", 0,0,0 }, +{ IDX_2C('c','h'), "Sveitsi", 0,0,0 }, +{ IDX_2C('c','i'), "Norsunluurannikko", 0,0,0 }, +{ IDX_2C('c','k'), "Cook Islands", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Camerun", 0,0,0 }, +{ IDX_2C('c','n'), "Kiina", 0,0,0 }, +{ IDX_2C('c','o'), "Kolumbia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Kuuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Joulusaaret", 0,0,0 }, +{ IDX_2C('c','y'), "Kypros", 0,0,0 }, +{ IDX_2C('c','z'), "Tsekki", 0,0,0 }, +{ IDX_2C('d','e'), "Saksa", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Tanska", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Dominikaaninen Tasavalta", 0,0,0 }, +{ IDX_2C('d','z'), "Algeria", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador", 0,0,0 }, +{ IDX_2C('e','e'), "Viro", 0,0,0 }, +{ IDX_2C('e','g'), "Egypti", 0,0,0 }, +{ IDX_2C('e','h'), "Läntinen Sahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Espanja", 0,0,0 }, +{ IDX_2C('e','t'), "Etiopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Suomi", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Falklandin Saaret (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Mikronesia", 0,0,0 }, +{ IDX_2C('f','o'), "Färsaaret", 0,0,0 }, +{ IDX_2C('f','r'), "Ranska", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Iso-Britannia (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgia", 0,0,0 }, +{ IDX_2C('g','f'), "Ranskan Guiana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Greenland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Equatorial Guinea", 0,0,0 }, +{ IDX_2C('g','r'), "Kreikka", 0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia and S. Sandwich Isls.", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guajana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard and McDonald Islands", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Kroatia", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Unkari", 0,0,0 }, +{ IDX_2C('i','d'), "Indonesia", 0,0,0 }, +{ IDX_2C('i','e'), "Irlanti", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "Intia", 0,0,0 }, +{ IDX_2C('i','o'), "British Indian Ocean Territory", 0,0,0 }, +{ IDX_2C('i','q'), "Irak", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Islanti", 0,0,0 }, +{ IDX_2C('i','t'), "Italia", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Jordania", 0,0,0 }, +{ IDX_2C('j','p'), "Japani", 0,0,0 }, +{ IDX_2C('k','e'), "Kenia", 0,0,0 }, +{ IDX_2C('k','g'), "Kyrgyzstan", 0,0,0 }, +{ IDX_2C('k','h'), "Kambodza", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts and Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Pohjois-Korea", 0,0,0 }, +{ IDX_2C('k','r'), "Etelä-Korea", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Cayman Saaret", 0,0,0 }, +{ IDX_2C('k','z'), "Kazakhstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Libanon", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Liettua", 0,0,0 }, +{ IDX_2C('l','u'), "Luxemburg", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia", 0,0,0 }, +{ IDX_2C('l','y'), "Libya", 0,0,0 }, +{ IDX_2C('m','a'), "Marokko", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Marshall Islands", 0,0,0 }, +{ IDX_2C('m','k'), "Makedonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolia", 0,0,0 }, +{ IDX_2C('m','o'), "Macao", 0,0,0 }, +{ IDX_2C('m','p'), "Northern Mariana Islands", 0,0,0 }, +{ IDX_2C('m','q'), "Martinique", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Malediivit", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Meksiko", 0,0,0 }, +{ IDX_2C('m','y'), "Malesia", 0,0,0 }, +{ IDX_2C('m','z'), "Mosambik", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "Uusi Caledonia", 0,0,0 }, +{ IDX_2C('n','e'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Island", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Hollanti", 0,0,0 }, +{ IDX_2C('n','o'), "Norja", 0,0,0 }, +{ IDX_2C('n','p'), "Nepali", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "Uusi-Seelanti", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "Ranskan Polynesia", 0,0,0 }, +{ IDX_2C('p','g'), "Papua Uusi Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Filippiinit", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Puola", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre and Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugali", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguai", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Romania", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Venäjä", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saudi Arabia", 0,0,0 }, +{ IDX_2C('s','b'), "Solomon Islands", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Ruotsi", 0,0,0 }, +{ IDX_2C('s','g'), "Singapore", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenia", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbard and Jan Mayen Islands", 0,0,0 }, +{ IDX_2C('s','k'), "Slovakian Tasavalta", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegali", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Surinam", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome and Principe", 0,0,0 }, +{ IDX_2C('s','u'), "Neuvostoliitto (ent.)", 0,0,0 }, +{IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{IDX_2C('s','y'), "Syyria", 0,0,0 }, +{IDX_2C('s','z'), "Swazimaa", 0,0,0 }, +{IDX_2C('t','c'), "Turks and Caicos Islands", 0,0,0 }, +{IDX_2C('t','d'), "Chad", 0,0,0 }, +{IDX_2C('t','f'), "French Southern Territories", 0,0,0 }, +{IDX_2C('t','g'), "Togo", 0,0,0 }, +{IDX_2C('t','h'), "Thaimaa", 0,0,0 }, +{IDX_2C('t','j'), "Tajikistan", 0,0,0 }, +{IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{IDX_2C('t','n'), "Tunisia", 0,0,0 }, +{IDX_2C('t','o'), "Tonga", 0,0,0 }, +{IDX_2C('t','p'), "Itä Timori", 0,0,0 }, +{IDX_2C('t','r'), "Turkki", 0,0,0 }, +{IDX_2C('t','t'), "Trinidad ja Tobago", 0,0,0 }, +{IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{IDX_2C('t','z'), "Tansania", 0,0,0 }, +{IDX_2C('u','a'), "Ukraina", 0,0,0 }, +{IDX_2C('u','g'), "Uganda", 0,0,0 }, +{IDX_2C('u','k'), "Iso-Britannia", 0,0,0 }, +{IDX_2C('u','m'), "US Minor Outlying Islands", 0,0,0 }, +{IDX_2C('u','s'), "Yhdysvallat", 0,0,0 }, +{IDX_2C('u','y'), "Uruguai", 0,0,0 }, +{IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{IDX_2C('v','a'), "Vatikaani", 0,0,0 }, +{IDX_2C('v','c'), "Saint Vincent and the Grenadines", 0,0,0 }, +{IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{IDX_2C('v','g'), "Virgin Islands (British)", 0,0,0 }, +{IDX_2C('v','i'), "Virgin Islands (U.S.)", 0,0,0 }, +{IDX_2C('v','n'), "Vietnam", 0,0,0 }, +{IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{IDX_2C('w','f'), "Wallis and Futuna Islands", 0,0,0 }, +{IDX_2C('w','s'), "Samoa", 0,0,0 }, +{IDX_2C('y','e'), "Jemen", 0,0,0 }, +{IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{IDX_2C('y','u'), "Jugoslavia", 0,0,0 }, +{IDX_2C('z','a'), "Etelä-Afrikka", 0,0,0 }, +{IDX_2C('z','m'), "Sambia", 0,0,0 }, +{IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.french b/lang/webalizer_lang.french new file mode 100644 index 0000000..843f8df --- /dev/null +++ b/lang/webalizer_lang.french @@ -0,0 +1,676 @@ +/* + webalizer_lang.french + + Webalizer V2.0x Language Support file for French. + 04-Jun-1998 Translation by Sylvain Avril (savril@oceanet.fr) + 04-Jun-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 20-Feb-1999 Added non-extended char l_month array (brad@mrunix.net) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 27-Jan-2000 Translation complements by Christophe Aubert (ca@tgi.fr) + 11-Fev-2000 Minor complements by Laurent Monin(lmonin@metaconcept.com) + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 17-Mar-2000 French support for level 2.0 (lmonin@metaconcept.com) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net + +*/ + +/* + Traduit par Sylvain AVRIL (savril@oceanet.fr, + http://www.coucounet.com/sylvain/) + - Oceanet (http://www.oceanet.fr/) + + Je n'ai pas traduit les messages d'erreurs qui me paraissaient etre plus + clairs en anglais +*/ + +/* + Complements de traduction par Christophe AUBERT (ca@tgi.fr) + - TGI (http://www.tgi.fr/) + + J'ai traduit les noms de pays ainsi que differents titres ... + Les messages d'erreurs restent en anglais +*/ + +/* + Complements mineurs de traduction par Laurent MONIN + - lmonin@metaconcept.com + + J'ai traduit Kbytes --> KOctets + et certains pays conformement à DNS/BIND 3eme edition + Les messages d'erreurs restent en anglais + Adaptation pour version 2.0 +*/ + + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "French"; +char *langcode = "fr"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "records"; +char *msg_addresses="addresses"; +char *msg_ignored = "ignored"; +char *msg_bad = "bad"; +char *msg_in = "in"; +char *msg_seconds = "seconds"; + +/* progress and setup error messages */ +char *msg_log_err = "Error: Can't open log file"; +char *msg_log_use = "Using logfile"; +char *msg_dir_err = "Error: Can't change directory to"; +char *msg_dir_use = "Creating output in"; +char *msg_cur_dir = "current directory"; +char *msg_hostname= "Hostname for reports is"; +char *msg_ign_hist= "Ignoring previous history..."; +char *msg_no_hist = "History file not found..."; +char *msg_get_hist= "Reading history file..."; +char *msg_put_hist= "Saving history information..."; +char *msg_hist_err= "Error: Unable to write history file"; +char *msg_bad_hist= "Error: Ignoring invalid history record"; +char *msg_bad_conf= "Error: Unable to open configuration file"; +char *msg_bad_key = "Warning: Invalid keyword"; +char *msg_bad_date= "Error: Skipping record (bad date)"; +char *msg_ign_nscp= "Skipping Netscape header record"; +char *msg_bad_rec = "Skipping bad record"; +char *msg_no_vrec = "No valid records found!"; +char *msg_gen_rpt = "Generating report for"; +char *msg_gen_sum = "Generating summary report"; +char *msg_get_data= "Reading previous run data..."; +char *msg_put_data= "Saving current run data..."; +char *msg_no_data = "Previous run data not found..."; +char *msg_bad_data= "Error: Unable to restore run data"; +char *msg_data_err= "Error: Unable to save current run data"; +char *msg_dup_data= "Warning: Possible duplicate data found"; + +/* DNS Stuff */ +char *msg_dns_nocf= "No cache file specified, aborting..."; +char *msg_dns_nodb= "Error: Unable to open DNS cache file"; +char *msg_dns_nolk= "Error: Unable to lock DNS cache file"; +char *msg_dns_usec= "Using DNS cache file"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "None to process"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Can't allocate enough memory, Top Sites disabled!"; +char *msg_nomem_tr= "Can't allocate enough memory, Top Referrers disabled!"; +char *msg_nomem_tu= "Can't allocate enough memory, Top URLs disabled!"; +char *msg_nomem_tc= "Can't allocate enough memory, Top Countries disabled!"; +char *msg_nomem_ta= "Can't allocate enough memory, Top User Agents disabled!"; +char *msg_nomem_tsr="Can't allocate enough memory, Top Search Strings disabled!"; +char *msg_nomem_ti= "Can't allocate enough memory, Top Usernames disabled!"; +char *msg_nomem_dh= "Error adding host node (daily), skipping"; +char *msg_nomem_mh= "Error adding host node (monthly), skipping"; +char *msg_nomem_u = "Error adding URL node, skipping"; +char *msg_nomem_a = "Error adding User Agent node, skipping"; +char *msg_nomem_r = "Error adding Referrer node, skipping"; +char *msg_nomem_sc= "Error adding Search String node, skipping"; +char *msg_nomem_i = "Error adding Username node, skipping"; + +/* log record errors */ +char *msg_big_rec = "Error: Skipping oversized log record"; +char *msg_big_host= "Warning: Truncating oversized hostname"; +char *msg_big_date= "Warning: Truncating oversized date field"; +char *msg_big_req = "Warning: Truncating oversized request field"; +char *msg_big_ref = "Warning: Truncating oversized referrer field"; +char *msg_big_user= "Warning: Truncating oversized username"; +char *msg_big_one = "Warning: String exceeds storage size"; + +/* misc errors */ +char *msg_no_open = "Error: Unable to open file"; + +/* Help display... */ +char *h_usage1 = "Usage"; +char *h_usage2 = "[options] [log file]"; +char *h_msg[]= { + "-h = print this help message" , + "-V = print version information" , + "-v = be verbose" , + "-d = print additional debug info" , + "-F type = Log type. type= (clf | ftp | squid | w3c)", + "-f = fold sequence errors" , + "-i = ignore history file" , + "-p = preserve state (incremental)" , + "-b = ignore state (incremental)" , + "-q = supress informational messages" , + "-Q = supress _ALL_ messages" , + "-Y = supress country graph" , + "-G = supress hourly graph" , + "-H = supress hourly stats" , + "-L = supress color coded graph legends" , + "-l num = use num background lines on graph" , + "-m num = Visit timeout value (seconds)" , + "-T = print timing information" , + "-c file = use configuration file 'file'" , + "-n name = hostname to use" , + "-o dir = output directory to use" , + "-t name = report title 'name'" , + "-a name = hide user agent 'name'" , + "-r name = hide referrer 'name'" , + "-s name = hide site 'name'" , + "-u name = hide URL 'name'" , + "-x name = use filename extension 'name'" , + "-O name = Omit page 'name'" , + "-P name = Page type extension 'name'" , + "-I name = Index alias 'name'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Display num top agents" , + "-C num = Display num top countries" , + "-R num = Display num top referrers" , + "-S num = Display num top sites" , + "-U num = Display num top URLs" , + "-e num = Display num top Entry Pages" , + "-E num = Display num top Exit Pages" , + "-g num = Group Domains to 'num' levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Use DNS Cache file 'name'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Période du résumé"; +char *msg_hhdr_gt = "Généré le"; + +/* main index strings */ +char *msg_main_us = "Resume des acces pour"; +/* char *msg_main_per= "12 derniers mois"; */ +char *msg_main_per= "Résumé par mois"; +char *msg_main_sum= "Résumé par mois"; +char *msg_main_da = "Moyenne journalière"; +char *msg_main_mt = "Totaux mensuels"; + +/* month HTML page strings */ +char *msg_hmth_du = "Acces journalier pour"; +char *msg_hmth_hu = "Acces horaire pour"; + +/* table header strings */ +char *msg_h_by = "par"; +char *msg_h_avg = "Moy."; +char *msg_h_max = "Max"; +char *msg_h_total = "Total"; +char *msg_h_totals= "Totaux"; +char *msg_h_day = "Jour"; +char *msg_h_mth = "Mois"; +char *msg_h_hour = "Heure"; +char *msg_h_hits = "Hits"; +char *msg_h_pages = "Pages"; +char *msg_h_visits= "Visites"; +char *msg_h_files = "Fichiers"; +char *msg_h_sites = "Sites"; +char *msg_h_xfer = "Ko"; +char *msg_h_hname = "Nom d'hôte"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Navigateur"; +char *msg_h_ref = "Référent"; +char *msg_h_ctry = "Pays"; +char *msg_h_search= "Mots-clés"; +char *msg_h_uname = "Utilisateur"; + +/* links along top of page */ +char *msg_hlnk_ds = "Statistiques journalières"; +char *msg_hlnk_hs = "Statistiques horaires"; +char *msg_hlnk_u = "URLs"; +char *msg_hlnk_s = "Sites"; +char *msg_hlnk_a = "Navigateurs"; +char *msg_hlnk_c = "Pays"; +char *msg_hlnk_r = "Référents"; +char *msg_hlnk_en = "Pages d'entrée"; +char *msg_hlnk_ex = "Pages de sortie"; +char *msg_hlnk_sr = "Mots-clés"; +char *msg_hlnk_i = "Utilisateurs"; + +/* monthly total table */ +char *msg_mtot_ms = "Statistiques mensuelles pour"; +char *msg_mtot_th = "Total des Hits"; +char *msg_mtot_tf = "Total des Fichiers"; +char *msg_mtot_tx = "Total des Ko"; +char *msg_mtot_us = "Total des Sites uniques"; +char *msg_mtot_ur = "Total des Référents uniques"; +char *msg_mtot_ua = "Total des Navigateurs"; +char *msg_mtot_uu = "Total des URLs uniques"; +char *msg_mtot_ui = "Total des utilisateurs uniques"; +char *msg_mtot_mhd= "Hits par Jour"; +char *msg_mtot_mhh= "Hits par Heure"; +char *msg_mtot_mfd= "Fichiers par Jour"; +char *msg_mtot_mpd= "Pages par Jour"; +char *msg_mtot_msd= "Sites par Jour"; +char *msg_mtot_mvd= "Visites par Jour"; +char *msg_mtot_mkd= "KOctets par Jour"; +char *msg_mtot_rc = "Hits par code de réponse"; + +/* daily total table */ +char *msg_dtot_ds = "Statistiques journalières pour"; + +/* hourly total table */ +char *msg_htot_hs = "Statistiques horaires pour"; + +/* country pie chart */ +char *msg_ctry_use= "Acces par pays pour"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Top"; +char *msg_top_of = "sur un total de"; +char *msg_top_s = "sites"; +char *msg_top_u = "URLs"; +char *msg_top_r = "référents"; +char *msg_top_a = "navigateurs"; +char *msg_top_c = "pays"; +char *msg_top_en = "pages d'entrée"; +char *msg_top_ex = "pages de sortie"; +char *msg_top_sr = "groupes de mots-clés"; +char *msg_top_i = "utilisateurs"; +char *msg_v_sites = "Voir tous les sites"; +char *msg_v_urls = "Voir toutes les URLs"; +char *msg_v_refs = "Voir tous les référents"; +char *msg_v_agents= "Voir tous les navigateurs"; +char *msg_v_search= "Voir tous les mots-clés"; +char *msg_v_users = "Voir tous les utilisateurs"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Jan", "Fev", "Mar", + "Avr", "Mai", "Juin", + "Juil", "Aou", "Sep", + "Oct", "Nov", "Dec"}; + +/* long month names - can be any length */ +/* +char *l_month[12]={ "Janvier", "Février", "Mars", "Avril", + "Mai", "Juin", "Juillet", "Août", + "Septembre","Octobre", "Novembre","Décembre"}; +*/ + +/* Some installations may need to use this one instead */ +char *l_month[12]={ "Janvier", "Fevrier", "Mars", "Avril", + "Mai", "Juin", "Juillet", "Aout", + "Septembre","Octobre", "Novembre","Decembre"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Undefined response code", 0 }, + { "Code 100 - Continue", 0 }, + { "Code 101 - Switching Protocols", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Created", 0 }, + { "Code 202 - Accepted", 0 }, + { "Code 203 - Non-Authoritative Information", 0 }, + { "Code 204 - No Content", 0 }, + { "Code 205 - Reset Content", 0 }, + { "Code 206 - Partial Content", 0 }, + { "Code 300 - Multiple Choices", 0 }, + { "Code 301 - Moved Permanently", 0 }, + { "Code 302 - Found", 0 }, + { "Code 303 - See Other", 0 }, + { "Code 304 - Not Modified", 0 }, + { "Code 305 - Use Proxy", 0 }, + { "Code 307 - Moved Temporarily", 0 }, + { "Code 400 - Bad Request", 0 }, + { "Code 401 - Unauthorized", 0 }, + { "Code 402 - Payment Required", 0 }, + { "Code 403 - Forbidden", 0 }, + { "Code 404 - Not Found", 0 }, + { "Code 405 - Method Not Allowed", 0 }, + { "Code 406 - Not Acceptable", 0 }, + { "Code 407 - Proxy Authentication Required", 0 }, + { "Code 408 - Request Timeout", 0 }, + { "Code 409 - Conflict", 0 }, + { "Code 410 - Gone", 0 }, + { "Code 411 - Length Required", 0 }, + { "Code 412 - Precondition Failed", 0 }, + { "Code 413 - Request Entity Too Large", 0 }, + { "Code 414 - Request-URI Too Long", 0 }, + { "Code 415 - Unsupported Media Type", 0 }, + { "Code 416 - Requested Range Not Satisfiable", 0 }, + { "Code 417 - Expectation Failed", 0 }, + { "Code 500 - Internal Server Error", 0 }, + { "Code 501 - Not Implemented", 0 }, + { "Code 502 - Bad Gateway", 0 }, + { "Code 503 - Service Unavailable", 0 }, + { "Code 504 - Gateway Timeout", 0 }, + { "Code 505 - HTTP Version Not Supported", 0 } }; + +char *msg_title = "Statistiques d'accès à"; +char *msg_h_other = "Autre"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Non-resolu/Inconnu", 0,0,0 }, +{ IDX_3C('c','o','m'), "Commercial (.com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Enseignement (.edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "US Gouvernement (.gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "International (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "US Militaire (.mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Network (.net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Non-commerciales (.org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Ancien style Arpanet (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"OTAN (.nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','c'), "Ile Ascension", 0,0,0 }, +{ IDX_2C('a','d'), "Andorre", 0,0,0 }, +{ IDX_2C('a','e'), "Emirats Arabes Unis", 0,0,0 }, +{ IDX_2C('a','f'), "Afghanistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua et Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albanie", 0,0,0 }, +{ IDX_2C('a','m'), "Armenie", 0,0,0 }, +{ IDX_2C('a','n'), "Antilles Neerlandaises", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarctique", 0,0,0 }, +{ IDX_2C('a','r'), "Argentine", 0,0,0 }, +{ IDX_2C('a','s'), "Samoa Americaines", 0,0,0 }, +{ IDX_2C('a','t'), "Autriche", 0,0,0 }, +{ IDX_2C('a','u'), "Australie", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaidjan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnie Herzegovine", 0,0,0 }, +{ IDX_2C('b','b'), "Barbades", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgique", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgarie", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrein", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermudes", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivie", 0,0,0 }, +{ IDX_2C('b','r'), "Bresil", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhoutan", 0,0,0 }, +{ IDX_2C('b','v'), "Ile Bouvet", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Bielorussie", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Canada", 0,0,0 }, +{ IDX_2C('c','c'), "Iles Cocos (Keeling)", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','d'), "Rep. Democr. Congo (Kinshasa)", 0,0,0 }, +{ IDX_2C('c','f'), "Republique Centrafricaine", 0,0,0 }, +{ IDX_2C('c','g'), "Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Suisse", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire", 0,0,0 }, +{ IDX_2C('c','k'), "Iles Cook", 0,0,0 }, +{ IDX_2C('c','l'), "Chili", 0,0,0 }, +{ IDX_2C('c','m'), "Cameroun", 0,0,0 }, +{ IDX_2C('c','n'), "Chine", 0,0,0 }, +{ IDX_2C('c','o'), "Colombie", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cap Vert", 0,0,0 }, +{ IDX_2C('c','x'), "Ile Christmas", 0,0,0 }, +{ IDX_2C('c','y'), "Chypre", 0,0,0 }, +{ IDX_2C('c','z'), "Republique Tcheque", 0,0,0 }, +{ IDX_2C('d','e'), "Allemagne", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Danemark", 0,0,0 }, +{ IDX_2C('d','m'), "Dominique", 0,0,0 }, +{ IDX_2C('d','o'), "Republique Dominicaine", 0,0,0 }, +{ IDX_2C('d','z'), "Algerie", 0,0,0 }, +{ IDX_2C('e','c'), "Equateur", 0,0,0 }, +{ IDX_2C('e','e'), "Estonie", 0,0,0 }, +{ IDX_2C('e','g'), "Egypte", 0,0,0 }, +{ IDX_2C('e','h'), "Sahara Occidental", 0,0,0 }, +{ IDX_2C('e','r'), "Erythree", 0,0,0 }, +{ IDX_2C('e','s'), "Espagne", 0,0,0 }, +{ IDX_2C('e','t'), "Ethiopie", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finlande", 0,0,0 }, +{ IDX_2C('f','j'), "Fidji", 0,0,0 }, +{ IDX_2C('f','k'), "Iles Falkland (Malouines)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronesie", 0,0,0 }, +{ IDX_2C('f','o'), "Iles Feroes", 0,0,0 }, +{ IDX_2C('f','r'), "France", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Grande Bretagne (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenade", 0,0,0 }, +{ IDX_2C('g','e'), "Georgie", 0,0,0 }, +{ IDX_2C('g','f'), "Guyane Francaise", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Groenland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambie", 0,0,0 }, +{ IDX_2C('g','n'), "Guinee", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Guinee Equatoriale", 0,0,0 }, +{ IDX_2C('g','r'), "Grece", 0,0,0 }, +{ IDX_2C('g','s'), "Georgie et Iles Sandwich du Sud", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinee-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyane", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Iles Heard et McDonald", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Croatie", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Hongrie", 0,0,0 }, +{ IDX_2C('i','d'), "Indonesie", 0,0,0 }, +{ IDX_2C('i','e'), "Irlande", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Ile de Man", 0,0,0 }, +{ IDX_2C('i','n'), "Inde", 0,0,0 }, +{ IDX_2C('i','o'), "Territ. Britannique Ocean Indien", 0,0,0 }, +{ IDX_2C('i','q'), "Iraq", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Islande", 0,0,0 }, +{ IDX_2C('i','t'), "Italie", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaique", 0,0,0 }, +{ IDX_2C('j','o'), "Jordanie", 0,0,0 }, +{ IDX_2C('j','p'), "Japon", 0,0,0 }, +{ IDX_2C('k','e'), "Kenya", 0,0,0 }, +{ IDX_2C('k','g'), "Kirghizistan", 0,0,0 }, +{ IDX_2C('k','h'), "Cambodge", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comores", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Christophe et Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Coree (Nord)", 0,0,0 }, +{ IDX_2C('k','r'), "Coree (Sud)", 0,0,0 }, +{ IDX_2C('k','w'), "Koweit", 0,0,0 }, +{ IDX_2C('k','y'), "Iles Caimans", 0,0,0 }, +{ IDX_2C('k','z'), "Kazakhstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Liban", 0,0,0 }, +{ IDX_2C('l','c'), "Sainte Lucie", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lituanie", 0,0,0 }, +{ IDX_2C('l','u'), "Luxembourg", 0,0,0 }, +{ IDX_2C('l','v'), "Lettonie (Latvija)", 0,0,0 }, +{ IDX_2C('l','y'), "Libye", 0,0,0 }, +{ IDX_2C('m','a'), "Maroc", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldavie", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Iles Marshall", 0,0,0 }, +{ IDX_2C('m','k'), "Macedoine", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Birmanie (Myanmar)", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolie", 0,0,0 }, +{ IDX_2C('m','o'), "Macao", 0,0,0 }, +{ IDX_2C('m','p'), "Iles Mariannes Nord", 0,0,0 }, +{ IDX_2C('m','q'), "Martinique", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritanie", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malte", 0,0,0 }, +{ IDX_2C('m','u'), "Ile Maurice", 0,0,0 }, +{ IDX_2C('m','v'), "Maldives", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexique", 0,0,0 }, +{ IDX_2C('m','y'), "Malaisie", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambique", 0,0,0 }, +{ IDX_2C('n','a'), "Namibie", 0,0,0 }, +{ IDX_2C('n','c'), "Nouvelle Caledonie", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Ile Norfolk", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Pays Bas", 0,0,0 }, +{ IDX_2C('n','o'), "Norvege", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Nioue", 0,0,0 }, +{ IDX_2C('n','z'), "Nouvelle Zelande", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Perou", 0,0,0 }, +{ IDX_2C('p','f'), "Polynesie Francaise", 0,0,0 }, +{ IDX_2C('p','g'), "Papouasie Nouvelle Guinee", 0,0,0 }, +{ IDX_2C('p','h'), "Philippines", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Pologne", 0,0,0 }, +{ IDX_2C('p','m'), "Saint Pierre et Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Porto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Roumanie", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Russie", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Arabie Saoudite", 0,0,0 }, +{ IDX_2C('s','b'), "Iles Salomon", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Soudan", 0,0,0 }, +{ IDX_2C('s','e'), "Suede", 0,0,0 }, +{ IDX_2C('s','g'), "Singapour", 0,0,0 }, +{ IDX_2C('s','h'), "Sainte Helene", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenie", 0,0,0 }, +{ IDX_2C('s','j'), "Iles Svalbard et Jan Mayen", 0,0,0 }, +{ IDX_2C('s','k'), "Slovaquie", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "Saint Marin", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalie", 0,0,0 }, +{ IDX_2C('s','r'), "Suriname", 0,0,0 }, +{ IDX_2C('s','t'), "Saint Thomas et Prince", 0,0,0 }, +{ IDX_2C('s','u'), "URSS (ancien)", 0,0,0 }, +{ IDX_2C('s','v'), "Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrie", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Iles Turks et Caiques", 0,0,0 }, +{ IDX_2C('t','d'), "Tchad", 0,0,0 }, +{ IDX_2C('t','f'), "Terres Australes Antarctiques Fr", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Thailande", 0,0,0 }, +{ IDX_2C('t','j'), "Tadjikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisie", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Timor Oriental", 0,0,0 }, +{ IDX_2C('t','r'), "Turquie", 0,0,0 }, +{ IDX_2C('t','t'), "Trinite et Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzanie", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraine", 0,0,0 }, +{ IDX_2C('u','g'), "Ouganda", 0,0,0 }, +{ IDX_2C('u','k'), "Royaume-Uni", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying Islands", 0,0,0 }, +{ IDX_2C('u','s'), "Etats Unis", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Ouzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Cite du Vatican", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent et Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Iles Vierges Britanniques", 0,0,0 }, +{ IDX_2C('v','i'), "Iles Vierges Americaines", 0,0,0 }, +{ IDX_2C('v','n'), "Vietnam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Iles Wallis et Futuna", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa Occidentales", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Yougoslavie", 0,0,0 }, +{ IDX_2C('z','a'), "Afrique du Sud", 0,0,0 }, +{ IDX_2C('z','m'), "Zambie", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.galician b/lang/webalizer_lang.galician new file mode 100644 index 0000000..faf0ee9 --- /dev/null +++ b/lang/webalizer_lang.galician @@ -0,0 +1,639 @@ +/* + webalizer_lang.galician + + Webalizer V2.0x Language Support file for Galician + 15-May-1998 by Bradford L. Barrett (brad@mrunix.net) + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 16-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 22-Apr-2001 Galician translation by Alberto Cifuentes (balea@arrakis.es) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Galician"; +char *langcode = "gl"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "rexistros"; +char *msg_addresses="addresses"; +char *msg_ignored = "ignorados"; +char *msg_bad = "erróneos"; +char *msg_in = "en"; +char *msg_seconds = "segundos"; + +/* progress and setup erro messages */ +char *msg_log_err = "Erro: Non podo abrir histórico"; +char *msg_log_use = "Utilizando histórico"; +char *msg_dir_err = "Erro: non se pode cambiar ó directorio"; +char *msg_dir_use = "Creando informe en"; +char *msg_cur_dir = "directorio actual"; +char *msg_hostname= "O nome da máquina no informe é"; +char *msg_ign_hist= "Ignorando rexistro anterior..."; +char *msg_no_hist = "Non atopo o arquivo histórico..."; +char *msg_get_hist= "Lendo arquivo..."; +char *msg_put_hist= "Gardando informacion de arquivo..."; +char *msg_hist_err= "Erro: Non podo abri-lo arquivo de arquivo"; +char *msg_bad_hist= "Erro: Ignorando un rexistro non válido no arquivo"; +char *msg_bad_conf= "Erro: non podo abri-lo arquivo de configuración"; +char *msg_bad_key = "Aviso: palabra chave errónea"; +char *msg_bad_date= "Erro: ignorando rexistro (data errónea)"; +char *msg_ign_nscp= "Saltando rexistro de cabeceira Netscape"; +char *msg_bad_rec = "Saltando rexistro erróneo"; +char *msg_no_vrec = "Non atopo ningun rexistro válido"; +char *msg_gen_rpt = "Xerando informe de"; +char *msg_gen_sum = "Xerando informe resumido"; +char *msg_get_data= "Lendo datos dunha execución previa..."; +char *msg_put_data= "Grabando datos da execución actual..."; +char *msg_no_data = "Datos de execución previa non atopados..."; +/*char *msg_bad_data= "Rexistro de datos inválidos";*/ +char *msg_bad_data= "Erro: Non podo carga-os datos da execución"; +char *msg_data_err= "Erro: Non podo graba-os datos da execución actual"; +char *msg_dup_data= "Aviso: Posibles datos duplicados atopados"; + +/* DNS Stuff */ +char *msg_dns_nocf= "Non cache file specified, aborting..."; +char *msg_dns_nodb= "Erro: Unable to open DNS cache file"; +char *msg_dns_nolk= "Erro: Unable to lock DNS cache file"; +char *msg_dns_usec= "Using DNS cache file"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "None to process"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Non podo reservar suficiente memoria, quito os principais sitios"; +char *msg_nomem_tr= "Non podo reservar suficiente memoria, quito as principais ligazóns"; +char *msg_nomem_tu= "Non podo reservar suficiente memoria, quito os principais URLs"; +char *msg_nomem_tc= "Non podo reservar suficiente memoria, quito os principais países"; +char *msg_nomem_ta= "Non podo reservar suficiente memoria, quito os principais programas cliente"; +char *msg_nomem_tsr="Non podo reservar suficiente memoria, quito as principais cadeas de busca"; +char *msg_nomem_ti= "Can't allocate enough memory, Top Usernames disabled!"; +char *msg_nomem_dh= "Erro engadindo nodo de servidor (díario), mo salto"; +char *msg_nomem_mh= "Erro engadindo nodo de servidor (mensual), mo salto"; +char *msg_nomem_u = "Erro engadindo nodo de URL, mo salto"; +char *msg_nomem_a = "Erro engadindo nodo de programa visor, mo salto"; +char *msg_nomem_r = "Erro engadindo nodo de ligazón orixe, mo salto"; +char *msg_nomem_sc= "Erro engadindo nodo de caenas de busca, mo salto"; +char *msg_nomem_i = "Erro adding Username node, skipping"; + +/* log record errors */ +char *msg_big_rec = "Erro: Saltando rexistro de histórico grande de abondoh"; +char *msg_big_host= "Aviso: Cortando nome de máquina grande de abondo"; +char *msg_big_date= "Aviso: Cortando campo de data grande de abondo"; +char *msg_big_req = "Aviso: Cortando campo de peticion grande de abondo"; +char *msg_big_ref = "Aviso: Cortando campo de ligazón orixe grande de abondo"; +char *msg_big_user= "Warning: Truncating oversized username"; +char *msg_big_one = "Aviso: Una cadena sobrepasa o almacenamento disponible"; + +/* misc errors */ +char *msg_no_open = "Erro: Non podo abrir un arquivo"; + +/* Help display... */ +char *h_usage1 = "Forma de uso"; +char *h_usage2 = "[opcións] [arquivo histórico]"; +char *h_msg[]= { + "-h = sacar esta mensaxe" , + "-V = ver informacion de versión" , + "-v = be verbose" , + "-d = sacar información adicional para depuración" , + "-F type = Log type. type= (clf | ftp | squid | w3c)" , + "-f = procesa historicos fóra de secuencia (ver man)", + "-i = ignorar arquivo" , + "-p = lembrar estado (incremental)" , + "-b = ignorar estado (incremental)" , + "-q = suprimir mensaxes de informacion" , + "-Q = suprimir TÓDALAS mensaxes" , + "-Y = suprimir grafico de países" , + "-G = suprimir gráfico horario" , + "-H = suprimir estatísticas horarias" , + "-L = suprimir lendas coloreadas dos gráficos" , + "-l num = usar num líñas de fondo nos gráficos" , + "-m num = especificar temporizador de visitas (seconds)", + "-T = sacar informacion de horario" , + "-c arquivo= usar arquivo de configuracion 'arquivo'" , + "-n nome = nome de máquina" , + "-o dir = directorio de saída" , + "-t nome = titula-lo informe 'nome'" , + "-a nome = acocha-lo programa cliente 'nome'" , + "-r nome = acocha-la ligazón orixe 'nome'" , + "-s nome = acocha-lo servidor 'nome'" , + "-u nome = acocha-lo URL 'nome'" , + "-x nome = usa extensión de arquivos 'nome'" , + "-O nome = Omit page 'nome'" , + "-P nome = usa extensión de páxinas 'nome'" , + "-I nome = Alias do índice 'nome'" , + "-K n = n months in summary table" , + "-k n = n months in summary graph" , + "-A n = Mostra-los n primeiros programas visores" , + "-C n = Mostra-los n primeiros países" , + "-R n = Mostra-las n primeiras ligazóns orixe" , + "-S n = Mostra-los n primeiros clientes" , + "-U n = Mostra-los n primeiros URLs" , + "-e n = Mostra-las n primeiras páxinas de entrada" , + "-E n = Mostra-las n primeiras páxinas de saída" , + "-g n = Group Domains to n levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D nome = Use DNS Cache file 'nome'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoDB database 'nome'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W nome = Use GeoIP database 'nome'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Período resumido"; +char *msg_hhdr_gt = "Xerado o"; + +/* main index strings */ +char *msg_main_us = "Resumo de uso de"; +/* char *msg_main_per= "Últimos 12 meses"; */ +char *msg_main_per= "Resumo por meses"; +char *msg_main_sum= "Resumo por meses"; +char *msg_main_da = "Medía díaria"; +char *msg_main_mt = "Totais mensuais"; + +/* month HTML page strings */ +char *msg_hmth_du = "Uso díario en"; +char *msg_hmth_hu = "Uso por horas en"; + +/* table header strings */ +char *msg_h_by = "Por"; +char *msg_h_avg = "Medía"; +char *msg_h_max = "Máx."; +char *msg_h_total = "Total"; +char *msg_h_totals= "Totais"; +char *msg_h_day = "Día"; +char *msg_h_mth = "Mes"; +char *msg_h_hour = "Hora"; +char *msg_h_hits = "Accesos"; +char *msg_h_pages = "Páxinas"; +char *msg_h_visits= "Visitas"; +char *msg_h_files = "Arquivos"; +char *msg_h_sites = "Clientes"; +char *msg_h_xfer = "KBytes"; +char *msg_h_hname = "Máquina"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Programa cliente"; +char *msg_h_ref = "Ligazón orixe"; +char *msg_h_ctry = "Países"; +char *msg_h_search= "Cadea de Búsca"; +char *msg_h_uname = "Username"; + +/* links along top of page */ +char *msg_hlnk_ds = "Estatísiticas díarias"; +char *msg_hlnk_hs = "Estatísticas por horas"; +char *msg_hlnk_u = "URLs"; +char *msg_hlnk_s = "Clientes"; +char *msg_hlnk_a = "Programas visores"; +char *msg_hlnk_c = "Países"; +char *msg_hlnk_r = "Ligazóns orixe"; +char *msg_hlnk_en = "Entrada"; +char *msg_hlnk_ex = "Saída"; +char *msg_hlnk_sr = "Busca"; +char *msg_hlnk_i = "Users"; + +/* monthly total table */ +char *msg_mtot_ms = "Estatísticas mensuais de"; +char *msg_mtot_th = "Total Accesos"; +char *msg_mtot_tf = "Total Arquivos"; +char *msg_mtot_tx = "Total KBytes"; +char *msg_mtot_us = "Total Clientes"; +char *msg_mtot_ur = "Total Ligazóns orixe"; +char *msg_mtot_ua = "Total Programas visores"; +char *msg_mtot_uu = "Total URLs"; +char *msg_mtot_ui = "Total Unique Usernames"; +char *msg_mtot_mhd= "Accesos por Día"; +char *msg_mtot_mhh= "Accesos por Hora"; +char *msg_mtot_mfd= "Arquivos por Día"; +char *msg_mtot_mpd= "Páxinas por Día"; +char *msg_mtot_msd= "Clientes por Día"; +char *msg_mtot_mvd= "Visitas por Día"; +char *msg_mtot_mkd= "KBytes por Día"; +char *msg_mtot_rc = "Accesos por código de resposta"; + +/* daily total table */ +char *msg_dtot_ds = "Estatísticas diarias de"; + +/* hourly total table */ +char *msg_htot_hs = "Estatísticas horarias de"; + +/* country pie chart */ +char *msg_ctry_use= "Accesos por países en"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Os"; +char *msg_top_of = "primeiros dun total de"; +char *msg_top_s = "clientes"; +char *msg_top_u = "URLs"; +char *msg_top_r = "ligazóns orixe"; +char *msg_top_a = "programas de cliente"; +char *msg_top_c = "países"; +char *msg_top_en = "Total Páxinas de Entrada"; +char *msg_top_ex = "Total Páxinas de Saída"; +char *msg_top_sr = "Total Cadeas de Busca"; +char *msg_top_i = "Total Usernames"; +char *msg_v_sites = "View All Sites"; +char *msg_v_urls = "View All URLs"; +char *msg_v_refs = "View All Referrers"; +char *msg_v_agents= "View All User Agents"; +char *msg_v_search= "View All Search Strings"; +char *msg_v_users = "View All Usernames"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ + +char *s_month[12]={ "Xan", "Feb", "Mar", + "Abr", "Mai", "Xuñ", + "Xul", "Ago", "Set", + "Out", "Nov", "Dec"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Xaneiro", "Febreiro", "Marzo", "Abril", + "Maio", "Xuño", "Xullo", "Agosto", + "Setembro","Outubro", "Novembro","Decembro"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Código de resposta indefinido", 0 }, + { "100 - Contínua", 0 }, + { "101 - Cambiando de protocolo", 0 }, + { "200 - OK", 0 }, + { "201 - Creado", 0 }, + { "202 - Aceptado", 0 }, + { "203 - Información non autorizada", 0 }, + { "204 - Non hai contido", 0 }, + { "205 - Contido renovado", 0 }, + { "206 - Contido parcial", 0 }, + { "300 - Varias opcións", 0 }, + { "301 - Movido permanentemente", 0 }, + { "302 - Atopado", 0 }, + { "303 - Ver outros", 0 }, + { "304 - Non modificado", 0 }, + { "305 - Utilizar proxy", 0 }, + { "307 - Movido temporalmente", 0 }, + { "400 - Petición errónea", 0 }, + { "401 - Non autorizado", 0 }, + { "402 - É precisoun pago", 0 }, + { "403 - Prohibido", 0 }, + { "404 - Non se atopa", 0 }, + { "405 - Método non permitido", 0 }, + { "406 - Non aceptable", 0 }, + { "407 - É precisa a autentificación de proxy", 0 }, + { "408 - Fín de tempo de espera", 0 }, + { "409 - Conflicto", 0 }, + { "410 - Abandoado", 0 }, + { "411 - É precisa a lonxitude", 0 }, + { "412 - Falla a condición previa", 0 }, + { "413 - Entidad de petición grande de abondo", 0 }, + { "414 - URL de petición demasiado longa", 0 }, + { "415 - Medio non soportado", 0 }, + { "416 - Non se pode satisface-lo rango pedido", 0 }, + { "417 - Falla o que agardábase", 0 }, + { "500 - Erro interno do servidor", 0 }, + { "501 - Non implementado", 0 }, + { "502 - Porta de ligazón incorrecta", 0 }, + { "503 - Servicio non disponible", 0 }, + { "504 - Fín de tempo de espera para a porta de ligazón", 0 }, + { "505 - Versión de HTTP non soportada", 0 } }; + +char *msg_title = "Estatísticas de uso para"; +char *msg_h_other = "Outro"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Non resolve/descoñecido", 0,0,0 }, +{ IDX_3C('c','o','m'), "Comercial (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Educación (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "Goberno EUA (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "Internacional (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "Exército EUA (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Redo (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Organizacións sen fins de lucro (org)",0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Arpanet (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"OTAN", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "Emiratos Árabes Unidos", 0,0,0 }, +{ IDX_2C('a','f'), "Afganistán", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua e Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armenia", 0,0,0 }, +{ IDX_2C('a','n'), "Antillas Holandesas", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antártida", 0,0,0 }, +{ IDX_2C('a','r'), "Arxentina", 0,0,0 }, +{ IDX_2C('a','s'), "Samoa Americana", 0,0,0 }, +{ IDX_2C('a','t'), "Austria", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaixán", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia e Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Bélxica", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brasil", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhután", 0,0,0 }, +{ IDX_2C('b','v'), "Illa Bouvet", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Bielorusia", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Canadá", 0,0,0 }, +{ IDX_2C('c','c'), "Illas Cocos (Keeling)", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "República Centroafricana", 0,0,0 }, +{ IDX_2C('c','g'), "Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Suíza", 0,0,0 }, +{ IDX_2C('c','i'), "Costa de Marfil", 0,0,0 }, +{ IDX_2C('c','k'), "Illas Cook", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Camerún", 0,0,0 }, +{ IDX_2C('c','n'), "China", 0,0,0 }, +{ IDX_2C('c','o'), "Colombia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cabo Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Illa de Pascua", 0,0,0 }, +{ IDX_2C('c','y'), "Chipre", 0,0,0 }, +{ IDX_2C('c','z'), "República Checa", 0,0,0 }, +{ IDX_2C('d','e'), "Alemaña", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Dinamarca", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "República Dominicana", 0,0,0 }, +{ IDX_2C('d','z'), "Arxelia", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador", 0,0,0 }, +{ IDX_2C('e','e'), "Estonia", 0,0,0 }, +{ IDX_2C('e','g'), "Exipto", 0,0,0 }, +{ IDX_2C('e','h'), "Sáhara Occidental", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "España", 0,0,0 }, +{ IDX_2C('e','t'), "Etiopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finlandía", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Malvinas", 0,0,0 }, +{ IDX_2C('f','m'), "Micronesia", 0,0,0 }, +{ IDX_2C('f','o'), "Illas Faroe", 0,0,0 }, +{ IDX_2C('f','r'), "Francia", 0,0,0 }, +{ IDX_2C('g','a'), "Gabón", 0,0,0 }, +{ IDX_2C('g','b'), "Gran Bretaña (RU)", 0,0,0 }, +{ IDX_2C('g','d'), "Granada", 0,0,0 }, +{ IDX_2C('g','e'), "Xeorxia", 0,0,0 }, +{ IDX_2C('g','f'), "Guinea francesa", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Greenland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadalupe", 0,0,0 }, +{ IDX_2C('g','q'), "Guinea Ecuatorial", 0,0,0 }, +{ IDX_2C('g','r'), "Grecia", 0,0,0 }, +{ IDX_2C('g','s'), "Illas S. Georgia e S. Sandwich", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guiana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Illas Heard e McDonald", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Croacia", 0,0,0 }, +{ IDX_2C('h','t'), "Haití", 0,0,0 }, +{ IDX_2C('h','u'), "Hungria", 0,0,0 }, +{ IDX_2C('i','d'), "Indonesia", 0,0,0 }, +{ IDX_2C('i','e'), "Irlanda", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "Índia", 0,0,0 }, +{ IDX_2C('i','o'), "Territorios Britanicos do Océano índico", 0,0,0 }, +{ IDX_2C('i','q'), "Iraq", 0,0,0 }, +{ IDX_2C('i','r'), "Irán", 0,0,0 }, +{ IDX_2C('i','s'), "Islandía", 0,0,0 }, +{ IDX_2C('i','t'), "Italia", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Xamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Xordania", 0,0,0 }, +{ IDX_2C('j','p'), "Xapón", 0,0,0 }, +{ IDX_2C('k','e'), "Quenia", 0,0,0 }, +{ IDX_2C('k','g'), "Quirxizstán", 0,0,0 }, +{ IDX_2C('k','h'), "Cambodia", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts e Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Corea (Norte)", 0,0,0 }, +{ IDX_2C('k','r'), "Corea (Sur)", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Illas Caimán", 0,0,0 }, +{ IDX_2C('k','z'), "Cazacstán", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Libano", 0,0,0 }, +{ IDX_2C('l','c'), "Santa Lucía", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lituania", 0,0,0 }, +{ IDX_2C('l','u'), "Luxemburgo", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia", 0,0,0 }, +{ IDX_2C('l','y'), "Libia", 0,0,0 }, +{ IDX_2C('m','a'), "Marrocos", 0,0,0 }, +{ IDX_2C('m','c'), "Mónaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldavia", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Illas Marshall", 0,0,0 }, +{ IDX_2C('m','k'), "Macedonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolia", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Illas Marianas do Norte", 0,0,0 }, +{ IDX_2C('m','q'), "Martinica", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauricio", 0,0,0 }, +{ IDX_2C('m','v'), "Maldivas", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "México", 0,0,0 }, +{ IDX_2C('m','y'), "Malaisia", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambique", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "Nova Caledonia", 0,0,0 }, +{ IDX_2C('n','e'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','f'), "Illa Norfolk", 0,0,0 }, +{ IDX_2C('n','g'), "Nixeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Holanda", 0,0,0 }, +{ IDX_2C('n','o'), "Noruega", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "Nova Celandia", 0,0,0 }, +{ IDX_2C('o','m'), "Omán", 0,0,0 }, +{ IDX_2C('p','a'), "Panamá", 0,0,0 }, +{ IDX_2C('p','e'), "Perú", 0,0,0 }, +{ IDX_2C('p','f'), "Polinesia francesa", 0,0,0 }, +{ IDX_2C('p','g'), "Papua Nova Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Filipinas", 0,0,0 }, +{ IDX_2C('p','k'), "Paquistán", 0,0,0 }, +{ IDX_2C('p','l'), "Polonia", 0,0,0 }, +{ IDX_2C('p','m'), "Santos Pierre e Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguai", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunión", 0,0,0 }, +{ IDX_2C('r','o'), "Rumania", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Federación rusa", 0,0,0 }, +{ IDX_2C('r','w'), "Ruanda", 0,0,0 }, +{ IDX_2C('s','a'), "Arabia Saudí", 0,0,0 }, +{ IDX_2C('s','b'), "Illas Sólomon", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudán", 0,0,0 }, +{ IDX_2C('s','e'), "Suecia", 0,0,0 }, +{ IDX_2C('s','g'), "Singapur", 0,0,0 }, +{ IDX_2C('s','h'), "Sta. Elena", 0,0,0 }, +{ IDX_2C('s','i'), "Eslovenia", 0,0,0 }, +{ IDX_2C('s','j'), "Illas Svalbard e Jan Mayen", 0,0,0 }, +{ IDX_2C('s','k'), "República Eslovaca", 0,0,0 }, +{ IDX_2C('s','l'), "Serra Leona", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Surinam", 0,0,0 }, +{ IDX_2C('s','t'), "San Tomé e Principe", 0,0,0 }, +{ IDX_2C('s','u'), "URSS (ant.)", 0,0,0 }, +{ IDX_2C('s','v'), "O Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Siria", 0,0,0 }, +{ IDX_2C('s','z'), "Swazilandía", 0,0,0 }, +{ IDX_2C('t','c'), "Illas Turcos e Caicos", 0,0,0 }, +{ IDX_2C('t','d'), "Chad", 0,0,0 }, +{ IDX_2C('t','f'), "Territorios Franceses do Sur", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Tailandía", 0,0,0 }, +{ IDX_2C('t','j'), "Taxiquistán", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turcmenistán", 0,0,0 }, +{ IDX_2C('t','n'), "Tunez", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Portuguese Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turquía", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidade e Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ucrania", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "Reino Unido", 0,0,0 }, +{ IDX_2C('u','m'), "Illas Menores Exteriores Norteamericanas", 0,0,0 }, +{ IDX_2C('u','s'), "Estados Unidos", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguai", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbequistán", 0,0,0 }, +{ IDX_2C('v','a'), "Cidade Estado Vaticano (Sta. Se)", 0,0,0 }, +{ IDX_2C('v','c'), "San Vincente e as Granadinas", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Illas Vírxenes (Británicas)", 0,0,0 }, +{ IDX_2C('v','i'), "Illas Vírxenes (U.S.A)", 0,0,0 }, +{ IDX_2C('v','n'), "Viet Nam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Illas Wallis e Futuna", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Iemen", 0,0,0 }, +{ IDX_2C('y','t'), "Maiotte", 0,0,0 }, +{ IDX_2C('y','u'), "Iugoslavia", 0,0,0 }, +{ IDX_2C('z','a'), "Sudáfrica", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; + diff --git a/lang/webalizer_lang.german b/lang/webalizer_lang.german new file mode 100644 index 0000000..4e3b68d --- /dev/null +++ b/lang/webalizer_lang.german @@ -0,0 +1,666 @@ +/* + webalizer_lang.german + + Webalizer V2.0x language support file for German. + 28-May-1998 translated by Dirk Meyer + 31-May-1998 portions by Bernd Dau + 31-May-1998 modified for level 1.1 support + 02-Jun-1998 translation level 1.1 by Dirk Meyer + 30-Jun-1998 typing errors fixed by Dirk Kocherscheidt + 23-Jul-1998 modified for level 1.2 support + 01-Aug-1998 translation redone by SysWolf + 09-Oct-1998 changes added by Soren Gust + 09-Oct-1998 changes added by Martin Kraemer + 24-Dec-1998 names of countries by Dirk Kocherscheidt + 24-Dec-1998 grammar and spelling by Dirk Meyer + 10-Jan-1999 improvements by Winfried Trümper + 05-Mrz-1999 improvements by Winfried Trümper + 06-Mrz-1999 new usage by Dirk Meyer + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 09-Mrz-1999 new result codes by Dirk Meyer + 24-May-1999 fixed umlaut coding by Arne Blankerts + 11-Jun-1999 clean-up by Wolfgang Schemmel + 12-Jun-1999 remove english terms by Dirk Meyer + 28-Jun-1999 Modified for level 1.3 support (Brad@mrunix.net) + 05-Jul-1999 Add. German translations by Gerald Erdmann (gerald@stepman.com) + 28-Jul-1999 fixed umlaut coding by Dirk Meyer + 04-Feb-2000 Minor fixes by Marcus Schommer + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 05-Feb-2000 level 2.0 by Dirk Meyer + 16-Jun-2003 grammar and spelling by Dirk Randhahn + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + 05-Jul-2008 level 2.2 by Dirk Meyer + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "German"; +char *langcode = "de"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "Einträge"; +char *msg_addresses="Adressen"; +char *msg_ignored = "ignoriert"; +char *msg_bad = "ungültig"; +char *msg_in = "in"; +char *msg_seconds = "Sekunden"; + +/* progress and setup error messages */ +char *msg_log_err = "Fehler: Kann die Protokolldatei nicht öffnen."; +char *msg_log_use = "Verwende Protokolldatei"; +char *msg_dir_err = "Fehler: Kann nicht in das Verzeichnis wechseln."; +char *msg_dir_use = "Erzeuge Dateien in"; +char *msg_cur_dir = "dem aktuellen Verzeichnis"; +char *msg_hostname= "Der Rechnername für den Bericht ist"; +char *msg_ign_hist= "Ignoriere die vorhandenen historischen Daten..."; +char *msg_no_hist = "Datei mit historischen Daten wurde nicht gefunden..."; +char *msg_get_hist= "Lese die Datei mit den historischen Daten..."; +char *msg_put_hist= "Speichere die historischen Daten..."; +char *msg_hist_err= "Fehler: Kann die Datei mit den historischen Daten nicht schreiben."; +char *msg_bad_hist= "Fehler: Ignoriere den ungültigen historischen Eintrag."; +char *msg_bad_conf= "Fehler: Kann die Konfigurations-Datei nicht lesen."; +char *msg_bad_key = "Warnung: unbekanntes Schlüsselwort"; +char *msg_bad_date= "Fehler: Der Eintrag wird übersprungen (Datum ungültig)."; +char *msg_ign_nscp= "Überspringe den Netscape Kopfeintrag."; +char *msg_bad_rec = "Überspringe den ungültigen Eintrag."; +char *msg_no_vrec = "Keine gültigen Einträge gefunden!"; +char *msg_gen_rpt = "Erzeuge den Bericht für"; +char *msg_gen_sum = "Erzeuge die Zusammenfassung"; +char *msg_get_data= "Lese die Daten vom letzten Programmlauf..."; +char *msg_put_data= "Speichere die Daten des aktuellen Programmlaufs..."; +char *msg_no_data = "Daten des letzten Programmlaufs wurden nicht gefunden..."; +char *msg_bad_data= "Fehler: Kann die Daten des letzten Programmlaufs nicht wiederherstellen"; +char *msg_data_err= "Fehler: Kann die Daten des letzten Programmlaufs nicht speichern"; +char *msg_dup_data= "Warnung: Möglicherweise wurden Daten doppelt gelesen."; + +/* DNS Stuff */ +char *msg_dns_nocf= "Es wurde keine Datei für den DNS-Cache angegeben, breche ab..."; +char *msg_dns_nodb= "Fehler: Die Datei für den DNS-Cache konnte nicht geöffnet werden."; +char *msg_dns_nolk= "Fehler: Die Datei für den DNS-Cache konnte nicht verriegelt werden."; +char *msg_dns_usec= "Benutze die Datei für den DNS-Cache"; +char *msg_dns_rslv= "DNS Abfrage"; +char *msg_dns_none= "Nichts zu bearbeiten"; +char *msg_dns_abrt= "DNS Unterstüzung nicht vorhanden, breche ab..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Fehler beim Öffnen der Datei"; +char *msg_geo_use = "Benutze"; +char *msg_geo_nolu= "Abfragen deaktiviert"; +char *msg_geo_dflt= "Standard"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Nicht genug Speicher vorhanden, Top Sites wurden deaktiviert!"; +char *msg_nomem_tr= "Nicht genug Speicher vorhanden, Top Verweised wurden eaktiviert!"; +char *msg_nomem_tu= "Nicht genug Speicher vorhanden, Top URLs wurden deaktiviert!"; +char *msg_nomem_tc= "Nicht genug Speicher vorhanden, Top Countries wurden deaktiviert!"; +char *msg_nomem_ta= "Nicht genug Speicher vorhanden, Top User Agents wurden deaktiviert!"; +char *msg_nomem_tsr="Nicht genug Speicher vorhanden, Top Suchausdrücke wurden deaktiviert!"; +char *msg_nomem_ti= "Nicht genug Speicher vorhanden, Top Benutzer wurden deaktiviert!"; +char *msg_nomem_dh= "Fehler beim Hinzufügen Rechner-node (daily), überspringe den Eintrag."; +char *msg_nomem_mh= "Fehler beim Hinzufügen Rechner-node (monthly), überspringe den Eintrag."; +char *msg_nomem_u = "Fehler beim Hinzufügen URL-node, überspringe den Eintrag."; +char *msg_nomem_a = "Fehler beim Hinzufügen User-Agent-node, überspringe den Eintrag."; +char *msg_nomem_r = "Fehler beim Hinzufügen Verweis-node, überspringe den Eintrag."; +char *msg_nomem_sc= "Fehler beim Hinzufügen Suchausdrucks-node, überspringe den Eintrag."; +char *msg_nomem_i = "Fehler beim Hinzufügen Benutzer-node, überspringe den Eintrag."; + +/* log record errors */ +char *msg_big_rec = "Fehler: Überspringe einen überlangen Eintrag"; +char *msg_big_host= "Warnung: Überlanges Rechner-Feld wurde abgeschnitten"; +char *msg_big_date= "Warnung: Überlanges Datums-Feld wurde abgeschnitten"; +char *msg_big_req = "Warnung: Überlanges Request-Feld wurde abgeschnitten"; +char *msg_big_ref = "Warnung: Überlanges Verweis-Feld wurde abgeschnitten"; +char *msg_big_user= "Warnung: Überlanges Benutzer-Feld wurde abgeschnitten"; +char *msg_big_one = "Warnung: Überlangen Text wurde abgeschnitten"; + +/* misc errors */ +char *msg_no_open = "Fehler: Kann die Datei nicht öffnen."; + +/* Help display... */ +char *h_usage1 = "Syntax"; +char *h_usage2 = "[Optionen] [Protokolldatei]"; +char *h_msg[]= { + "-h = diese Hilfe ausgeben" , + "-V = Version ausgeben" , + "-v = mehr Ausgaben zum Programablauf" , + "-d = zusätzliche Kontrolldaten ausgeben" , + "-F type = Art der Protokolldatei. type= (clf | ftp | squid | w3c)", + "-f = Ignoriere zeitliche Fehler bei Besuchen", + "-i = Datei mit historischen Daten ignorieren", + "-p = sichere den Programmzustand (inkrementell)", + "-b = Ignoriere den gespeicherten Zwischenstand (incremental)", + "-q = Statusmeldungen unterdrücken" , + "-Q = alle Meldungen unterdrücken" , + "-Y = Ländergrafik unterdrücken" , + "-G = Stundengrafik unterdrücken" , + "-H = Stundenstatistik unterdrücken" , + "-L = Farbige Länderlegende unterdrücken" , + "-l anz = 'Anz' Hintergrundlinien in Grafik verwenden", + "-m num = Timeout für Besuch (seconds)" , + "-T = Laufzeit ausgeben" , + "-c datei = Konfigurationsdatei 'datei' verwenden", + "-n name = 'name' als Namen des Servers verwenden", + "-o dir = Dateien im Verzeichnis 'dir' speichern", + "-t name = Überschrift 'name' setzen" , + "-a name = Anwenderprogramm 'name' unterdrücken", + "-r name = Verweiser 'name' unterdrücken" , + "-s name = Rechner 'name' unterdrücken" , + "-u name = URL 'name' unterdrücken" , + "-x name = Dateiendung 'name' verwenden" , + "-O name = Lasse die Seite 'name' weg." , + "-P name = Seitenendung 'name' verwenden" , + "-I name = weiteren Name für den Index setzen" , + "-K anz = anz months in summary table" , + "-k anz = anz months in summary graph" , + "-A anz = die Top 'anz' Anwenderprogramme darstellen", + "-C anz = die Top 'anz' Länder darstellen" , + "-R anz = die Top 'anz' Verweiser darstellen" , + "-S anz = die Top 'anz' Rechner (IPs) darstellen", + "-U anz = die Top 'anz' URLs darstellen" , + "-e anz = die Top 'anz' Startseiten darstellen", + "-E anz = die Top 'anz' Endseiten darstellen" , + "-g anz = Gruppiere Domänen zu 'anz' Ebenen" , + "-X = Verstecke einzelne Rechner" , + "-z dir = Verwende Fahnen für die Länder in 'dir'", +#ifdef USE_DNS + "-D name = Benutze die Datei 'name' für DNS-Cache" , + "-N num = Anzahl Prozesse für DNS Abfragen (0=deaktiviert)", + "-j = Aktiviere interne GeoDB Abfragen" , + "-J name = Benutze GeoDB Datenbank 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Aktiviere GeoIP Abfragen" , + "-W name = Benutze GeoIP Datenbank 'name'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Auslastungsstatistik für den Zeitraum"; +char *msg_hhdr_gt = "Erstellt am"; + +/* main index strings */ +char *msg_main_us = "Zusammenfassung der Anfragen an"; +/* char *msg_main_per= "Letzte 12 Monate"; */ +char *msg_main_per= "Zusammenfassung nach Monaten"; +char *msg_main_sum= "Zusammenfassung nach Monaten"; +char *msg_main_da = "Tagesdurchschnitt"; +char *msg_main_mt = "Monats-Summe"; + +/* month HTML page strings */ +char *msg_hmth_du = "Tages-Statistik im Monat"; +char *msg_hmth_hu = "Stunden-Statistik im Monat"; + +/* table header strings */ +/* Keine Umlaute, gd 1.3 kann sie nicht darstellen */ +char *msg_h_by = "sortiert nach"; +char *msg_h_avg = "Schnitt"; +char *msg_h_max = "Maximum"; +char *msg_h_total = "Summe"; +char *msg_h_totals= "Summen"; +char *msg_h_day = "Tag"; +char *msg_h_mth = "Monat"; +char *msg_h_hour = "Stunde"; +char *msg_h_hits = "Anfragen"; +char *msg_h_pages = "Seiten"; +char *msg_h_visits= "Besuche"; +char *msg_h_files = "Dateien"; +char *msg_h_sites = "Rechner"; +char *msg_h_xfer = "kb"; +char *msg_h_hname = "Rechnername"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Anwenderprogramm"; +char *msg_h_ref = "Verweise"; +char *msg_h_ctry = "Land"; +char *msg_h_search= "Suche"; +char *msg_h_uname = "Benutzer"; + +/* links along top of page */ +char *msg_hlnk_ds = "Tages-Statistik"; +char *msg_hlnk_hs = "Stunden-Statistik"; +char *msg_hlnk_u = "URLs"; +char *msg_hlnk_s = "Rechner (IP-Adressen)"; +char *msg_hlnk_a = "Anwenderprogramme"; +char *msg_hlnk_c = "Länder"; +char *msg_hlnk_r = "Verweise"; +char *msg_hlnk_en = "Eingang"; +char *msg_hlnk_ex = "Ausgang"; +char *msg_hlnk_sr = "Suche"; +char *msg_hlnk_i = "Benutzer"; + +/* monthly total table */ +char *msg_mtot_ms = "Monats-Statistik für"; +char *msg_mtot_th = "Summe der Anfragen"; +char *msg_mtot_tf = "Summe der Dateien"; +char *msg_mtot_tx = "Summe in kb"; +char *msg_mtot_us = "Summe der unterschiedlichen Rechner (IP-Adressen)"; +char *msg_mtot_ur = "Summe der unterschiedlichen Verweise"; +char *msg_mtot_ua = "Summe der unterschiedlichen Anwenderprogramme"; +char *msg_mtot_uu = "Summe der unterschiedlichen URLs"; +char *msg_mtot_ui = "Summe der unterschiedlichen Benutzer"; +char *msg_mtot_mhd= "Anfragen pro Tag"; +char *msg_mtot_mhh= "Anfragen pro Stunde"; +char *msg_mtot_mfd= "Dateien pro Tag"; +char *msg_mtot_mpd= "Seiten pro Tag"; +char *msg_mtot_msd= "Rechner (IP-Adressen) pro Tag"; +char *msg_mtot_mvd= "Besuche pro Tag"; +char *msg_mtot_mkd= "kb pro Tag"; +char *msg_mtot_rc = "Anfragen nach Status-Codes"; + +/* daily total table */ +/* Keine Umlaute, gd 1.3 kann sie nicht darstellen */ +char *msg_dtot_ds = "Tages-Statistik im Monat"; + +/* hourly total table */ +/* Keine Umlaute, gd 1.3 kann sie nicht darstellen */ +char *msg_htot_hs = "Stunden-Statistik im Monat"; + +/* country pie chart */ +/* Keine Umlaute, gd 1.3 kann sie nicht darstellen */ +char *msg_ctry_use= "Anfragen aus Laendern im Monat"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Top"; +char *msg_top_of = "von"; +char *msg_top_s = "Rechnern (IP-Adressen)"; +char *msg_top_u = "URLs"; +char *msg_top_r = "Verweise"; +char *msg_top_a = "Anwenderprogramme"; +char *msg_top_c = "Ländern"; +char *msg_top_en = "Eingangsseiten Gesamt"; +char *msg_top_ex = "Ausgangsseiten Gesamt"; +char *msg_top_sr = "Suchausdrücke Gesamt"; +char *msg_top_i = "Benutzer Gesamt"; +char *msg_v_sites = "Zeige alle Rechner (IP-Adressen)"; +char *msg_v_urls = "Zeige alle URLs"; +char *msg_v_refs = "Zeige alle Verweise"; +char *msg_v_agents= "Zeige alle Anwenderprogramme"; +char *msg_v_search= "Zeige alle Suchausdrücke"; +char *msg_v_users = "Zeige alle Benutzer"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +/* Keine Umlaute, gd 1.3 kann sie nicht darstellen */ +char *s_month[12]={ "Jan", "Feb", "Mar", + "Apr", "Mai", "Jun", + "Jul", "Aug", "Sep", + "Okt", "Nov", "Dez"}; + +/* long month names - can be any length */ +/* Keine Umlaute, gd 1.3 kann sie nicht darstellen */ +char *l_month[12]={ "Januar", "Februar", "Maerz", "April", + "Mai", "Juni", "Juli", "August", + "September", "Oktober", "November", "Dezember"}; + +/* Nur Ligaturen verwenden, viele Browser haben nicht ISO_8859-1 */ +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Unbekannter Antwort-Code", 0 }, + { "Code 100 - Weiter", 0 }, + { "Code 101 - Wechsel des Protokolls", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Erzeugt", 0 }, + { "Code 202 - Angenommen", 0 }, + { "Code 203 - Keine endgültige Information", 0 }, + { "Code 204 - Kein Inhalt", 0 }, + { "Code 205 - Lösche Inhalt", 0 }, + { "Code 206 - Unvollständiger Inhalt", 0 }, + { "Code 300 - Mehrere Auswahlmöglichkeiten", 0 }, + { "Code 301 - Die Seite wurde dauerhaft an einen andere Stelle verlegt", 0 }, + { "Code 302 - Die Seite wurde an einer anderer Stelle gefunden", 0 }, + { "Code 303 - Hole die Seite von einer anderen Position", 0 }, + { "Code 304 - Die Seite wurde nicht geändert", 0 }, + { "Code 305 - Die Benutzung des Proxys ist erforderlich", 0 }, + { "Code 307 - Die Seite wurde vorübergehend an eine andere Stelle verlegt", 0 }, + { "Code 400 - Ungültige Anfrage", 0 }, + { "Code 401 - Die Authentifizierung fehlt oder ist ungültig", 0 }, + { "Code 402 - Bezahlung ist erforderlich", 0 }, + { "Code 403 - Die Antwort wurde verweigert", 0 }, + { "Code 404 - Die Seite wurde nicht gefunden!", 0 }, + { "Code 405 - Die Methode ist nicht erlaubt", 0 }, + { "Code 406 - Nicht akzeptabel", 0 }, + { "Code 407 - Eine Proxy-Autorisierung ist erforderlich", 0 }, + { "Code 408 - Eine Zeitüberschreitung erfolgte durch das Anwenderprogramm ...", 0 }, + { "Code 409 - Konflikt", 0 }, + { "Code 410 - Verloren", 0 }, + { "Code 411 - Eine Längenangabe ist erforderlich", 0 }, + { "Code 412 - Fehlende Voraussetzung", 0 }, + { "Code 413 - Request-Entity zu groß", 0 }, + { "Code 414 - Request-URI zu lang", 0 }, + { "Code 415 - Nicht unterstützter Medientyp", 0 }, + { "Code 416 - Angegebener Bereich nicht in Ordnung", 0 }, + { "Code 417 - Die Erwartung ist fehlgeschlagen", 0 }, + { "Code 500 - Interner Server-Fehler ist aufgetreten (CGI?)", 0 }, + { "Code 501 - Nicht implementiert", 0 }, + { "Code 502 - Fehlerhaftes Gateway", 0 }, + { "Code 503 - Der Service ist nicht verfügbar", 0 }, + { "Code 504 - Gateway Zeitüberschreitung...", 0 }, + { "Code 505 - Die HTTP-Version wird nicht unterstützt", 0 } }; + +/* New for 1.1 */ + +char *msg_title = "Aufruf-Statistik für"; +char *msg_h_other = "Sonstige"; +/* Country codes (previously in ctry.h header file) */ + +/* Plural konstant beibehalten */ +/* Keine Umlaute, gd 1.3 kann sie nicht darstellen */ +struct country_code ctry[] = { +{ 0, "Unbekannte Adressen", 0,0,0 }, +{ IDX_3C('c','o','m'), "Firmen (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Univers./Schulen (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "USA-Behoerden (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "Internationale Einrichtungen (int)",0,0,0 }, +{ IDX_3C('m','i','l'), "USA-Militaer (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Netzwerke (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Organisationen (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Allgemeine Firmen (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Katalanische Gemeinschaft (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Adressregister (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Organisationen der Luftfahrt (aero)",0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asien/Pazifik Gemeinschaft (asia)",0,0,0 }, +{ IDX_4C('c','o','o','p'),"Gesellschaften (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Informationsanbieter (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Stellenangebote (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Mobile Geräte (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Privatpersonen (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Alte Arpanet-Adressen (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"NATO-Adressen (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museen (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Reise-Industrie (travel)",0,0,0 }, +{ IDX_2C('a','c'), "Ascension", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "Arabische Emirate", 0,0,0 }, +{ IDX_2C('a','f'), "Afghanistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua und Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albanien", 0,0,0 }, +{ IDX_2C('a','m'), "Armenien", 0,0,0 }, +{ IDX_2C('a','n'), "Niederlaendische Antillen", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarktis", 0,0,0 }, +{ IDX_2C('a','r'), "Argentinien", 0,0,0 }, +{ IDX_2C('a','s'), "Amerikanisch Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Oesterreich", 0,0,0 }, +{ IDX_2C('a','u'), "Australien", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Åland", 0,0,0 }, +{ IDX_2C('a','z'), "Aserbaidschan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnien und Herzegowina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesch", 0,0,0 }, +{ IDX_2C('b','e'), "Belgien", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgarien", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint-Barthélemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivien", 0,0,0 }, +{ IDX_2C('b','r'), "Brasilien", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Insel", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Weissrussland", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Kanada", 0,0,0 }, +{ IDX_2C('c','c'), "Kokos-Inseln", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Zentralafrikanische Republik", 0,0,0 }, +{ IDX_2C('c','g'), "Kongo", 0,0,0 }, +{ IDX_2C('c','h'), "Schweiz", 0,0,0 }, +{ IDX_2C('c','i'), "Elfenbeinkueste", 0,0,0 }, +{ IDX_2C('c','k'), "Cook-Inseln", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Kamerun", 0,0,0 }, +{ IDX_2C('c','n'), "China", 0,0,0 }, +{ IDX_2C('c','o'), "Kolumbien", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Kuba", 0,0,0 }, +{ IDX_2C('c','v'), "Kapverden", 0,0,0 }, +{ IDX_2C('c','x'), "Weihnachtsinsel", 0,0,0 }, +{ IDX_2C('c','y'), "Zypern", 0,0,0 }, +{ IDX_2C('c','z'), "Tschechien", 0,0,0 }, +{ IDX_2C('d','e'), "Deutschland", 0,0,0 }, +{ IDX_2C('d','j'), "Djibuti", 0,0,0 }, +{ IDX_2C('d','k'), "Daenemark", 0,0,0 }, +{ IDX_2C('d','m'), "Dominika", 0,0,0 }, +{ IDX_2C('d','o'), "Dominikanische Republik", 0,0,0 }, +{ IDX_2C('d','z'), "Algerien", 0,0,0 }, +{ IDX_2C('e','c'), "Ekuador", 0,0,0 }, +{ IDX_2C('e','e'), "Estland", 0,0,0 }, +{ IDX_2C('e','g'), "Aegypten", 0,0,0 }, +{ IDX_2C('e','h'), "West-Sahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Spanien", 0,0,0 }, +{ IDX_2C('e','t'), "Aethiopien", 0,0,0 }, +{ IDX_2C('e','u'), "Europäische Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finnland", 0,0,0 }, +{ IDX_2C('f','j'), "Fidschi-Inseln", 0,0,0 }, +{ IDX_2C('f','k'), "Falkland Inseln", 0,0,0 }, +{ IDX_2C('f','m'), "Mikronesien", 0,0,0 }, +{ IDX_2C('f','o'), "Faeroeer Inseln", 0,0,0 }, +{ IDX_2C('f','r'), "Frankreich", 0,0,0 }, +{ IDX_2C('g','a'), "Gabun", 0,0,0 }, +{ IDX_2C('g','b'), "Grossbritannien (alt)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgien", 0,0,0 }, +{ IDX_2C('g','f'), "Franz. Guayana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Groenland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Aequatorial Guinea", 0,0,0 }, +{ IDX_2C('g','r'), "Griechenland", 0,0,0 }, +{ IDX_2C('g','s'), "Georgien und Sandwich Inseln", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard und McDonald Inseln", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Kroatien", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Ungarn", 0,0,0 }, +{ IDX_2C('i','d'), "Indonesien", 0,0,0 }, +{ IDX_2C('i','e'), "Irland", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "Indien", 0,0,0 }, +{ IDX_2C('i','o'), "Brit. Indischer Ozean", 0,0,0 }, +{ IDX_2C('i','q'), "Irak", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Island", 0,0,0 }, +{ IDX_2C('i','t'), "Italien", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaika", 0,0,0 }, +{ IDX_2C('j','o'), "Jordanien", 0,0,0 }, +{ IDX_2C('j','p'), "Japan", 0,0,0 }, +{ IDX_2C('k','e'), "Kenia", 0,0,0 }, +{ IDX_2C('k','g'), "Kirgistan", 0,0,0 }, +{ IDX_2C('k','h'), "Kambodscha", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Komoren", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts und Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Nordkorea", 0,0,0 }, +{ IDX_2C('k','r'), "Suedkorea", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Cayman Inseln", 0,0,0 }, +{ IDX_2C('k','z'), "Kasachstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Libanon", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Luzia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Litauen", 0,0,0 }, +{ IDX_2C('l','u'), "Luxemburg", 0,0,0 }, +{ IDX_2C('l','v'), "Lettland", 0,0,0 }, +{ IDX_2C('l','y'), "Libyen", 0,0,0 }, +{ IDX_2C('m','a'), "Marokko", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldawien", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (französisch)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagaskar", 0,0,0 }, +{ IDX_2C('m','h'), "Marshall Inseln", 0,0,0 }, +{ IDX_2C('m','k'), "Mazedonien", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar (Birma)", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolei", 0,0,0 }, +{ IDX_2C('m','o'), "Makao", 0,0,0 }, +{ IDX_2C('m','p'), "Nord-Marianen", 0,0,0 }, +{ IDX_2C('m','q'), "Martinique", 0,0,0 }, +{ IDX_2C('m','r'), "Mauretanien", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Malediven", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexiko", 0,0,0 }, +{ IDX_2C('m','y'), "Malaysien", 0,0,0 }, +{ IDX_2C('m','z'), "Mosambik", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "Neukaledonien", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Insel", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nikaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Niederlande", 0,0,0 }, +{ IDX_2C('n','o'), "Norwegen", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "Neuseeland", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "Franz. Polynesien", 0,0,0 }, +{ IDX_2C('p','g'), "Papua Neu-Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Philippinen", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Polen", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre und Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palästinas", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau (Belau)", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Katar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Rumaenien", 0,0,0 }, +{ IDX_2C('r','s'), "Serbien", 0,0,0 }, +{ IDX_2C('r','u'), "Russische Foederation", 0,0,0 }, +{ IDX_2C('r','w'), "Ruanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saudi Arabien", 0,0,0 }, +{ IDX_2C('s','b'), "Solomonen", 0,0,0 }, +{ IDX_2C('s','c'), "Seychellen", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Schweden", 0,0,0 }, +{ IDX_2C('s','g'), "Singapur", 0,0,0 }, +{ IDX_2C('s','h'), "Sankt Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slowenien", 0,0,0 }, +{ IDX_2C('s','j'), "Spitzbergen und Jan Mayen Inseln", 0,0,0 }, +{ IDX_2C('s','k'), "Slowakei", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Surinam", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome und Principe", 0,0,0 }, +{ IDX_2C('s','u'), "UdSSR (alt)", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrien", 0,0,0 }, +{ IDX_2C('s','z'), "Swasiland", 0,0,0 }, +{ IDX_2C('t','c'), "Turks und Caicos Inseln", 0,0,0 }, +{ IDX_2C('t','d'), "Tschad", 0,0,0 }, +{ IDX_2C('t','f'), "Franz. Sued-Territorien", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Thailand", 0,0,0 }, +{ IDX_2C('t','j'), "Tadschikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunesien", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Ost-Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Tuerkei", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad und Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tansania", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraine", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda (alt)", 0,0,0 }, +{ IDX_2C('u','k'), "Grossbritannien", 0,0,0 }, +{ IDX_2C('u','m'), "USA Inseln", 0,0,0 }, +{ IDX_2C('u','s'), "USA", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Usbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatikan", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent und Grenadinen", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Jungferninseln (Britisch)", 0,0,0 }, +{ IDX_2C('v','i'), "Jungferninseln (U.S.)", 0,0,0 }, +{ IDX_2C('v','n'), "Vietnam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu (Neue Hebriden)", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis und Futuna Inseln", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Jemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Jugoslawien (Serbien)", 0,0,0 }, +{ IDX_2C('z','a'), "Suedafrika", 0,0,0 }, +{ IDX_2C('z','m'), "Sambia", 0,0,0 }, +{ IDX_2C('z','w'), "Simbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymisierter Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satelliten Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Sonstige", 0,0,0 }, +{ IDX_2C('a','p'), "Gebiet Asien/Pacifik", 0,0,0 }, +{ IDX_3C('l','a','n'), "Loakales Netzwerk (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.greek b/lang/webalizer_lang.greek new file mode 100644 index 0000000..f127db9 --- /dev/null +++ b/lang/webalizer_lang.greek @@ -0,0 +1,631 @@ +/* + webalizer_lang.greek + + Webalizer V2.0x Language Support file for Greek + 19-Aug-1999 Translated in Greek by Christos Cheretakis (xalkina@otenet.gr) + 22-Feb-2000 Modified for level 2.0x support (brad@mrunix.net) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Greek"; +char *langcode = "el"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "åããñáöÝò"; +char *msg_addresses="addresses"; +char *msg_ignored = "áãíïÞèçêáí"; +char *msg_bad = "ëÜèïò"; +char *msg_in = "óå"; +char *msg_seconds = "äåõôåñüëåðôá"; + +/* progress and setup error messages */ +char *msg_log_err = "Error: Can't open log file"; +char *msg_log_use = "Using logfile"; +char *msg_dir_err = "Error: Can't change directory to"; +char *msg_dir_use = "Creating output in"; +char *msg_cur_dir = "current directory"; +char *msg_hostname= "Hostname for reports is"; +char *msg_ign_hist= "Ignoring previous history..."; +char *msg_no_hist = "History file not found..."; +char *msg_get_hist= "Reading history file..."; +char *msg_put_hist= "Saving history information..."; +char *msg_hist_err= "Error: Unable to write history file"; +char *msg_bad_hist= "Error: Ignoring invalid history record"; +char *msg_bad_conf= "Error: Unable to open configuration file"; +char *msg_bad_key = "Warning: Invalid keyword"; +char *msg_bad_date= "Error: Skipping record (bad date)"; +char *msg_ign_nscp= "Skipping Netscape header record"; +char *msg_bad_rec = "Skipping bad record"; +char *msg_no_vrec = "No valid records found!"; +char *msg_gen_rpt = "Generating report for"; +char *msg_gen_sum = "Generating summary report"; +char *msg_get_data= "Reading previous run data.."; +char *msg_put_data= "Saving current run data..."; +char *msg_no_data = "Previous run data not found..."; +char *msg_bad_data= "Error: Unable to restore run data"; +char *msg_data_err= "Error: Unable to save current run data"; +char *msg_dup_data= "Warning: Possible duplicate data found"; + +/* DNS Stuff */ +char *msg_dns_nocf= "No cache file specified, aborting..."; +char *msg_dns_nodb= "Error: Unable to open DNS cache file"; +char *msg_dns_nolk= "Error: Unable to lock DNS cache file"; +char *msg_dns_usec= "Using DNS cache file"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "None to process"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Can't allocate enough memory, Top Sites disabled!"; +char *msg_nomem_tr= "Can't allocate enough memory, Top Referrers disabled!"; +char *msg_nomem_tu= "Can't allocate enough memory, Top URLs disabled!"; +char *msg_nomem_tc= "Can't allocate enough memory, Top Countries disabled!"; +char *msg_nomem_ta= "Can't allocate enough memory, Top User Agents disabled!"; +char *msg_nomem_tsr="Can't allocate enough memory, Top Search Strings disabled!"; +char *msg_nomem_ti= "Can't allocate enough memory, Top Usernames disabled!"; +char *msg_nomem_dh= "Error adding host node (daily), skipping"; +char *msg_nomem_mh= "Error adding host node (monthly), skipping"; +char *msg_nomem_u = "Error adding URL node, skipping"; +char *msg_nomem_a = "Error adding User Agent node, skipping"; +char *msg_nomem_r = "Error adding Referrer node, skipping"; +char *msg_nomem_sc= "Error adding Search String Node, skipping"; +char *msg_nomem_i = "Error adding Username node, skipping"; + +/* log record errors */ +char *msg_big_rec = "Error: Skipping oversized log record"; +char *msg_big_host= "Warning: Truncating oversized hostname"; +char *msg_big_date= "Warning: Truncating oversized date field"; +char *msg_big_req = "Warning: Truncating oversized request field"; +char *msg_big_ref = "Warning: Truncating oversized referrer field"; +char *msg_big_user= "Warning: Truncating oversized username field"; +char *msg_big_one = "Warning: String exceeds storage size"; + +/* misc errors */ +char *msg_no_open = "Error: Unable to open file"; + +/* Help display... */ +char *h_usage1 = "Usage"; +char *h_usage2 = "[options] [log file]"; +char *h_msg[]= { + "-h = print this help message" , + "-V = print version information" , + "-v = be verbose" , + "-d = print additional debug info" , + "-F = Log type. type= (clf | ftp | squid | w3c)", + "-f = Fold sequence errors" , + "-i = ignore history file" , + "-p = preserve state (incremental)" , + "-b = ignore state (incremental)" , + "-q = supress informational messages" , + "-Q = supress _ALL_ messages" , + "-Y = supress country graph" , + "-G = supress hourly graph" , + "-H = supress hourly stats" , + "-L = supress color coded graph legends" , + "-l num = use num background lines on graph" , + "-m num = Visit timout value (seconds)" , + "-T = print timing information" , + "-c file = use configuration file 'file'" , + "-n name = hostname to use" , + "-o dir = output directory to use" , + "-t name = report title 'name'" , + "-a name = hide user agent 'name'" , + "-r name = hide referrer 'name'" , + "-s name = hide site 'name'" , + "-u name = hide URL 'name'" , + "-x name = Use filename extension 'name'" , + "-O name = Omit page 'name'" , + "-P name = Page type extension 'name'" , + "-I name = Index alias 'name'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Display num top agents" , + "-C num = Display num top countries" , + "-R num = Display num top referrers" , + "-S num = Display num top sites" , + "-U num = Display num top URLs" , + "-e num = Display num top Entry Pages" , + "-E num = Display num top Exit Pages" , + "-g num = Group Domains to 'num' levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Use DNS Cache file 'name'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Ðåñßïäïò áíáöïñÜò"; +char *msg_hhdr_gt = "Çìåñïìçíßá ðáñáãùãÞò"; + +/* main index strings */ +char *msg_main_us = "ÓôáôéóôéêÜ ãéá ôï óýóôçìá"; +/* char *msg_main_per= "ïé ôåëåõôáßïé 12 ìÞíåò"; */ +char *msg_main_per= "ÓõãêåíôñùôéêÜ óôïé÷åßá áíÜ ìÞíá"; +char *msg_main_sum= "ÓõãêåíôñùôéêÜ óôïé÷åßá áíÜ ìÞíá"; +char *msg_main_da = "ÌÝóïé üñïé áíÜ çìÝñá"; +char *msg_main_mt = "Ìçíéáßá óýíïëá"; + +/* month HTML page strings */ +char *msg_hmth_du = "Óôïé÷åßá áíÜ çìÝñá ãéá: "; +char *msg_hmth_hu = "Óôïé÷åßá áíÜ þñá ãéá: "; + +/* table header strings */ +char *msg_h_by = "ÁíÜ"; +char *msg_h_avg = "ÌÝóï"; +char *msg_h_max = "ÌÝãéóôï"; +char *msg_h_total = "Óýíïëï"; +char *msg_h_totals= "Óýíïëá"; +char *msg_h_day = "ÇìÝñá"; +char *msg_h_mth = "ÌÞíáò"; +char *msg_h_hour = "¿ñá"; +char *msg_h_hits = "Hits"; +char *msg_h_pages = "Óåëßäåò"; +char *msg_h_visits= "ÅðéóêÝøåéò"; +char *msg_h_files = "Áñ÷åßá"; +char *msg_h_sites = "ÓõóôÞìáôá"; +char *msg_h_xfer = "KBytes"; +char *msg_h_hname = "Óýóôçìá"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Ðñüãñáììá"; +char *msg_h_ref = "ÁíáöÝñùí"; +char *msg_h_ctry = "×þñá"; +char *msg_h_search= "ÁíáæÞôçóç"; +char *msg_h_uname = "Username"; + +/* links along top of page */ +char *msg_hlnk_ds = "ÁíÜ çìÝñá"; +char *msg_hlnk_hs = "ÁíÜ þñá"; +char *msg_hlnk_u = "URLs"; +char *msg_hlnk_s = "ÓõóôÞìáôá"; +char *msg_hlnk_a = "ÐñïãñÜììáôá"; +char *msg_hlnk_c = "×þñåò"; +char *msg_hlnk_r = "ÁíáöÝñïíôåò"; +char *msg_hlnk_en = "Óçìåßá åéóüäïõ"; +char *msg_hlnk_ex = "Óçìåßá åîüäïõ"; +char *msg_hlnk_sr = "ÁíáæçôÞóåéò"; +char *msg_hlnk_i = "Users"; + +/* monthly total table */ +char *msg_mtot_ms = "ÓõãêåíôñùôéêÜ óôïé÷åßá ãéá ôï ìÞíá"; +char *msg_mtot_th = "ÓõíïëéêÜ Hits"; +char *msg_mtot_tf = "Óýíïëï áñ÷åßùí"; +char *msg_mtot_tx = "Óýíïëï KBytes"; +char *msg_mtot_us = "Óýíïëï äéáöïñåôéêþí óõóôçìÜôùí"; +char *msg_mtot_ur = "Óýíïëï äéáöïñåôéêþí áíáöåñüíôùí"; +char *msg_mtot_ua = "Óýíïëï äéáöïñåôéêþí ðñïãñáììÜôùí"; +char *msg_mtot_uu = "Óýíïëï äéáöïñåôéêþí URLs"; +char *msg_mtot_ui = "Total Unique Usernames"; +char *msg_mtot_mhd= "Hits áíÜ çìÝñá"; +char *msg_mtot_mhh= "Hits áíÜ þñá"; +char *msg_mtot_mfd= "Áñ÷åßá áíÜ çìÝñá"; +char *msg_mtot_mpd= "Óåëßäåò áíÜ çìÝñá"; +char *msg_mtot_msd= "Sites per Day"; +char *msg_mtot_mvd= "ÅðéóêÝøåéò áíÜ çìÝñá"; +char *msg_mtot_mkd= "KBytes áíÜ çìÝñá"; +char *msg_mtot_rc = "Hits áðü ôï áðïôÝëåóìá"; + +/* daily total table */ +char *msg_dtot_ds = "ÓõãêåíôñùôéêÜ óôïé÷åßá áíÜ çìÝñá -"; + +/* hourly total table */ +char *msg_htot_hs = "ÓõãêåíôñùôéêÜ óôïé÷åßá áíÜ þñá -"; + +/* country pie chart */ +char *msg_ctry_use= "ÓõãêåíôñùôéêÜ óôïé÷åßá áíÜ ÷þñá -"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Ðñþôá"; +char *msg_top_of = "áðü"; +char *msg_top_s = "óõóôÞìáôá"; +char *msg_top_u = "URLs"; +char *msg_top_r = "áíáöÝñïíôåò"; +char *msg_top_a = "ðñïãñÜììáôá"; +char *msg_top_c = "÷þñåò"; +char *msg_top_en = "óçìåßá åéóüäïõ"; +char *msg_top_ex = "óçìåßá åîüäïõ"; +char *msg_top_sr = "áíáæçôÞóåéò"; +char *msg_top_i = "Total Usernames"; +char *msg_v_sites = "View All Sites"; +char *msg_v_urls = "View All URLs"; +char *msg_v_refs = "View All Referrers"; +char *msg_v_agents= "View All User Agents"; +char *msg_v_search= "View All Search Strings"; +char *msg_v_users = "View All Usernames"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Éáí", "Öåâ", "ÌÜñ", + "Áðñ", "ÌÜé", "Éïí", + "Éïë", "Áýã", "Óåð", + "Ïêô", "ÍïÝ", "Äåê"}; + +/* long month names - can be any length */ +char *l_month[12]={ "ÉáíïõÜñéïò", "ÖåâñïõÜñéïò", "ÌÜñôéïò", "Áðñßëéïò", + "ÌÜéïò", "Éïýíéïò", "Éïýëéïò", "Áýãïõóôïò", + "ÓåðôÝìâñéïò", "Ïêôþâñéïò", "ÍïÝìâñéïò", "ÄåêÝìâñéïò"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Undefined response code", 0 }, + { "Code 100 - Continue", 0 }, + { "Code 101 - Switching Protocols", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Created", 0 }, + { "Code 202 - Accepted", 0 }, + { "Code 203 - Non-Authoritative Information", 0 }, + { "Code 204 - No Content", 0 }, + { "Code 205 - Reset Content", 0 }, + { "Code 206 - Partial Content", 0 }, + { "Code 300 - Multiple Choices", 0 }, + { "Code 301 - Moved Permanently", 0 }, + { "Code 302 - Found", 0 }, + { "Code 303 - See Other", 0 }, + { "Code 304 - Not Modified", 0 }, + { "Code 305 - Use Proxy", 0 }, + { "Code 307 - Moved Temporarily", 0 }, + { "Code 400 - Bad Request", 0 }, + { "Code 401 - Unauthorized", 0 }, + { "Code 402 - Payment Required", 0 }, + { "Code 403 - Forbidden", 0 }, + { "Code 404 - Not Found", 0 }, + { "Code 405 - Method Not Allowed", 0 }, + { "Code 406 - Not Acceptable", 0 }, + { "Code 407 - Proxy Authentication Required", 0 }, + { "Code 408 - Request Timeout", 0 }, + { "Code 409 - Conflict", 0 }, + { "Code 410 - Gone", 0 }, + { "Code 411 - Length Required", 0 }, + { "Code 412 - Precondition Failed", 0 }, + { "Code 413 - Request Entity Too Large", 0 }, + { "Code 414 - Request-URI Too Long", 0 }, + { "Code 415 - Unsupported Media Type", 0 }, + { "Code 416 - Requested Range Not Satisfiable", 0 }, + { "Code 417 - Expectation Failed", 0 }, + { "Code 500 - Internal Server Error", 0 }, + { "Code 501 - Not Implemented", 0 }, + { "Code 502 - Bad Gateway", 0 }, + { "Code 503 - Service Unavailable", 0 }, + { "Code 504 - Gateway Timeout", 0 }, + { "Code 505 - HTTP Version Not Supported", 0 } }; + +char *msg_title = "ÓôáôéóôéêÜ óôïé÷åßá ãéá ôï óýóôçìá"; +char *msg_h_other = "¶ëëï"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "¶ãíùóôç", 0,0,0 }, +{ IDX_3C('c','o','m'), "Åôáéñåßá (Ç.Ð.Á.)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Åêðáéäåõôéêü ºäñõìá (Ç.Ð.Á.)", 0,0,0 }, +{ IDX_3C('g','o','v'), "ÊñáôéêÞ Õðçñåóßá (Ç.Ð.Á.)", 0,0,0 }, +{ IDX_3C('i','n','t'), "ÄéåèíÞò Ïñãáíéóìüò", 0,0,0 }, +{ IDX_3C('m','i','l'), "Óôñáôéùôéêü Óýóôçìá (Ç.Ð.Á.)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Äéêôõáêüò Ïñãáíéóìüò", 0,0,0 }, +{ IDX_3C('o','r','g'), "¶ëëïò Ïñãáíéóìüò", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"ÐáëéÝò äéåõèýíóåéò (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Í.Á.Ô.Ï.", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Áíäüñá", 0,0,0 }, +{ IDX_2C('a','e'), "ÇìùíÝíá ÁñáâéêÜ ÅìéñÜôá", 0,0,0 }, +{ IDX_2C('a','f'), "ÁöãáíéóôÜí", 0,0,0 }, +{ IDX_2C('a','g'), "Áíôßãêïõá êáé Ìðáñìðïýíôá", 0,0,0 }, +{ IDX_2C('a','i'), "Áíãêïõßëá", 0,0,0 }, +{ IDX_2C('a','l'), "Áëâáíßá", 0,0,0 }, +{ IDX_2C('a','m'), "Áñìåíßá", 0,0,0 }, +{ IDX_2C('a','n'), "ÏëëáíäéêÝò Áíôßëåò", 0,0,0 }, +{ IDX_2C('a','o'), "Áíãêüëá", 0,0,0 }, +{ IDX_2C('a','q'), "ÁíôáñêôéêÞ", 0,0,0 }, +{ IDX_2C('a','r'), "ÁñãåíôéíÞ", 0,0,0 }, +{ IDX_2C('a','s'), "ÁìåñéêáíéêÞ Óáìüá", 0,0,0 }, +{ IDX_2C('a','t'), "Áõóôñßá", 0,0,0 }, +{ IDX_2C('a','u'), "Áõóôñáëßá", 0,0,0 }, +{ IDX_2C('a','w'), "Áñïýìðá", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "ÁæåñìðáúôæÜí", 0,0,0 }, +{ IDX_2C('b','a'), "Âïóíßá êáé Åñæåãïâßíç", 0,0,0 }, +{ IDX_2C('b','b'), "Ìðáñìðáíôüò", 0,0,0 }, +{ IDX_2C('b','d'), "ÌðáãêëáíôÝò", 0,0,0 }, +{ IDX_2C('b','e'), "ÂÝëãéï", 0,0,0 }, +{ IDX_2C('b','f'), "Ìðïõñêßíá ÖÜóï", 0,0,0 }, +{ IDX_2C('b','g'), "Âïõëãáñßá", 0,0,0 }, +{ IDX_2C('b','h'), "Ìðá÷ñÝéí", 0,0,0 }, +{ IDX_2C('b','i'), "Ìðïõñïýíôé", 0,0,0 }, +{ IDX_2C('b','j'), "Ìðåíßí", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Âåñìïýäåò", 0,0,0 }, +{ IDX_2C('b','n'), "ÌðñïõíÝé Íôáñïýóáëáì", 0,0,0 }, +{ IDX_2C('b','o'), "Âïëéâßá", 0,0,0 }, +{ IDX_2C('b','r'), "Âñáæéëßá", 0,0,0 }, +{ IDX_2C('b','s'), "Ìðá÷Üìåò", 0,0,0 }, +{ IDX_2C('b','t'), "ÌðïõôÜí", 0,0,0 }, +{ IDX_2C('b','v'), "ÌðïõâÝô", 0,0,0 }, +{ IDX_2C('b','w'), "ÌðïôóïõÜíá", 0,0,0 }, +{ IDX_2C('b','y'), "Ëåõêïñùóßá", 0,0,0 }, +{ IDX_2C('b','z'), "Ìðåëßæ", 0,0,0 }, +{ IDX_2C('c','a'), "ÊáíáäÜò", 0,0,0 }, +{ IDX_2C('c','c'), "ÍçóéÜ Êüêïò", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "ÊåíôñéêÞ ÁöñéêáíéêÞ Äçìïêñáôßá", 0,0,0 }, +{ IDX_2C('c','g'), "Êïãêü", 0,0,0 }, +{ IDX_2C('c','h'), "Åëâåôßá", 0,0,0 }, +{ IDX_2C('c','i'), "ÁêôÞ Åëåöáíôïóôïý", 0,0,0 }, +{ IDX_2C('c','k'), "ÍçóéÜ Êïýê", 0,0,0 }, +{ IDX_2C('c','l'), "×éëÞ", 0,0,0 }, +{ IDX_2C('c','m'), "Êáìåñïýí", 0,0,0 }, +{ IDX_2C('c','n'), "Êßíá", 0,0,0 }, +{ IDX_2C('c','o'), "Êïëïìâßá", 0,0,0 }, +{ IDX_2C('c','r'), "Êüóôá Ñßêá", 0,0,0 }, +{ IDX_2C('c','u'), "Êïýâá", 0,0,0 }, +{ IDX_2C('c','v'), "ÐñÜóéíï ÁêñùôÞñéï", 0,0,0 }, +{ IDX_2C('c','x'), "ÍçóéÜ ôùí ×ñéóôïõãÝííùí", 0,0,0 }, +{ IDX_2C('c','y'), "Êýðñïò", 0,0,0 }, +{ IDX_2C('c','z'), "Ôóå÷ßá", 0,0,0 }, +{ IDX_2C('d','e'), "Ãåñìáíßá", 0,0,0 }, +{ IDX_2C('d','j'), "Ôæéìðïõôß", 0,0,0 }, +{ IDX_2C('d','k'), "Äáíßá", 0,0,0 }, +{ IDX_2C('d','m'), "Äïìéíßêá", 0,0,0 }, +{ IDX_2C('d','o'), "ÄïìéíéêáíéêÞ Äçìïêñáôßá", 0,0,0 }, +{ IDX_2C('d','z'), "Áëãåñßá", 0,0,0 }, +{ IDX_2C('e','c'), "Åêïõáäüñ", 0,0,0 }, +{ IDX_2C('e','e'), "Åóèïíßá", 0,0,0 }, +{ IDX_2C('e','g'), "Áßãõðôïò", 0,0,0 }, +{ IDX_2C('e','h'), "ÄõôéêÞ Óá÷Üñá", 0,0,0 }, +{ IDX_2C('e','r'), "Åñõèñáßá", 0,0,0 }, +{ IDX_2C('e','s'), "Éóðáíßá", 0,0,0 }, +{ IDX_2C('e','t'), "Áéèéïðßá", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Öéëáíäßá", 0,0,0 }, +{ IDX_2C('f','j'), "Ößôæé", 0,0,0 }, +{ IDX_2C('f','k'), "ÍçóéÜ Öüêëáíô", 0,0,0 }, +{ IDX_2C('f','m'), "Ìéêñïíçóßá", 0,0,0 }, +{ IDX_2C('f','o'), "ÍçóéÜ Öáñüå", 0,0,0 }, +{ IDX_2C('f','r'), "Ãáëëßá", 0,0,0 }, +{ IDX_2C('g','a'), "Ãêáìðüí", 0,0,0 }, +{ IDX_2C('g','b'), "ÌåãÜëç Âñåôáíßá", 0,0,0 }, +{ IDX_2C('g','d'), "ÃñåíÜäá", 0,0,0 }, +{ IDX_2C('g','e'), "Ãåùñãßá", 0,0,0 }, +{ IDX_2C('g','f'), "ÃáëëéêÞ ÃïõéÜíá", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "ÃêÜíá", 0,0,0 }, +{ IDX_2C('g','i'), "ÃéâñáëôÜñ", 0,0,0 }, +{ IDX_2C('g','l'), "Ãñéëáíäßá", 0,0,0 }, +{ IDX_2C('g','m'), "ÃêÜìðéá", 0,0,0 }, +{ IDX_2C('g','n'), "ÃïõéíÝá", 0,0,0 }, +{ IDX_2C('g','p'), "Ãïõáäåëïýðç", 0,0,0 }, +{ IDX_2C('g','q'), "ÉóçìåñéíÞ ÃïõéíÝá", 0,0,0 }, +{ IDX_2C('g','r'), "ÅëëÜäá", 0,0,0 }, +{ IDX_2C('g','s'), "ÍçóéÜ ÓÜíôïõéôò", 0,0,0 }, +{ IDX_2C('g','t'), "ÃïõáôåìÜëá", 0,0,0 }, +{ IDX_2C('g','u'), "ÃêïõÜì", 0,0,0 }, +{ IDX_2C('g','w'), "ÃïõéíÝá ÌðéóÜïõ", 0,0,0 }, +{ IDX_2C('g','y'), "ÃïõéÜíá", 0,0,0 }, +{ IDX_2C('h','k'), "×ïãê Êïãê", 0,0,0 }, +{ IDX_2C('h','m'), "ÍçóéÜ ÌáêÍôüíáëíô", 0,0,0 }, +{ IDX_2C('h','n'), "Ïíäïýñá", 0,0,0 }, +{ IDX_2C('h','r'), "Êñïáôßá", 0,0,0 }, +{ IDX_2C('h','t'), "ÁúôÞ", 0,0,0 }, +{ IDX_2C('h','u'), "Ïõãêáñßá", 0,0,0 }, +{ IDX_2C('i','d'), "Éíäïíçóßá", 0,0,0 }, +{ IDX_2C('i','e'), "Éñëáíäßá", 0,0,0 }, +{ IDX_2C('i','l'), "ÉóñáÞë", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "Éíäßá", 0,0,0 }, +{ IDX_2C('i','o'), "ÂñåôáíéêÝò ÊôÞóåéò Éíäéêïý", 0,0,0 }, +{ IDX_2C('i','q'), "ÉñÜê", 0,0,0 }, +{ IDX_2C('i','r'), "ÉñÜí", 0,0,0 }, +{ IDX_2C('i','s'), "Éóëáíäßá", 0,0,0 }, +{ IDX_2C('i','t'), "Éôáëßá", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "ÔæáìÜéêá", 0,0,0 }, +{ IDX_2C('j','o'), "Éïñäáíßá", 0,0,0 }, +{ IDX_2C('j','p'), "Éáðùíßá", 0,0,0 }, +{ IDX_2C('k','e'), "ÊÝíõá", 0,0,0 }, +{ IDX_2C('k','g'), "Êéñãéæßá", 0,0,0 }, +{ IDX_2C('k','h'), "Êáìðüíôéá", 0,0,0 }, +{ IDX_2C('k','i'), "ÊéñéìðÜôé", 0,0,0 }, +{ IDX_2C('k','m'), "Êïìüñïò", 0,0,0 }, +{ IDX_2C('k','n'), "Óáßíô Êßôò", 0,0,0 }, +{ IDX_2C('k','p'), "Âüñåéá ÊïñÝá", 0,0,0 }, +{ IDX_2C('k','r'), "Íüôéá ÊïñÝá", 0,0,0 }, +{ IDX_2C('k','w'), "ÊïõâÝéô", 0,0,0 }, +{ IDX_2C('k','y'), "ÍçóéÜ ÊÜéìáí", 0,0,0 }, +{ IDX_2C('k','z'), "ÊáæáêóôÜí", 0,0,0 }, +{ IDX_2C('l','a'), "ËÜïò", 0,0,0 }, +{ IDX_2C('l','b'), "Ëßâáíïò", 0,0,0 }, +{ IDX_2C('l','c'), "Óáßíô Ëïýôóéá", 0,0,0 }, +{ IDX_2C('l','i'), "Ëé÷ôåíóôÜéí", 0,0,0 }, +{ IDX_2C('l','k'), "Óñé ËÜíêá", 0,0,0 }, +{ IDX_2C('l','r'), "Ëéâåñßá", 0,0,0 }, +{ IDX_2C('l','s'), "Ëåóüôï", 0,0,0 }, +{ IDX_2C('l','t'), "Ëéèïõáíßá", 0,0,0 }, +{ IDX_2C('l','u'), "Ëïõîåìâïýñãï", 0,0,0 }, +{ IDX_2C('l','v'), "Ëéèïõáíßá", 0,0,0 }, +{ IDX_2C('l','y'), "Ëéâýç", 0,0,0 }, +{ IDX_2C('m','a'), "Ìáñüêï", 0,0,0 }, +{ IDX_2C('m','c'), "Ìïíáêü", 0,0,0 }, +{ IDX_2C('m','d'), "Ìüëíôïâá", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "ÌáäáãáóêÜñç", 0,0,0 }, +{ IDX_2C('m','h'), "ÍçóéÜ ÌÜñóáë", 0,0,0 }, +{ IDX_2C('m','k'), "Óêüðéá", 0,0,0 }, +{ IDX_2C('m','l'), "ÌÜëé", 0,0,0 }, +{ IDX_2C('m','m'), "ÌéáíìÜñ", 0,0,0 }, +{ IDX_2C('m','n'), "Ìïãêïëßá", 0,0,0 }, +{ IDX_2C('m','o'), "ÌáêÜïõ", 0,0,0 }, +{ IDX_2C('m','p'), "ÍçóéÜ Âüñåéá ÌáñéÜíá", 0,0,0 }, +{ IDX_2C('m','q'), "Ìáñôéíßêá", 0,0,0 }, +{ IDX_2C('m','r'), "Ìáõñéôáíßá", 0,0,0 }, +{ IDX_2C('m','s'), "ÌïíôóåñÜô", 0,0,0 }, +{ IDX_2C('m','t'), "ÌÜëôá", 0,0,0 }, +{ IDX_2C('m','u'), "Ìáõñßêéïò", 0,0,0 }, +{ IDX_2C('m','v'), "Ìáëäßâåò", 0,0,0 }, +{ IDX_2C('m','w'), "ÌáëÜïõé", 0,0,0 }, +{ IDX_2C('m','x'), "Ìåîéêü", 0,0,0 }, +{ IDX_2C('m','y'), "Ìáëáéóßá", 0,0,0 }, +{ IDX_2C('m','z'), "Ìïáæìâßêç", 0,0,0 }, +{ IDX_2C('n','a'), "Íáìßìðéá", 0,0,0 }, +{ IDX_2C('n','c'), "ÍÝá Êáëçäïíßá", 0,0,0 }, +{ IDX_2C('n','e'), "Íßãçñ", 0,0,0 }, +{ IDX_2C('n','f'), "ÍçóéÜ Íüñöïëê", 0,0,0 }, +{ IDX_2C('n','g'), "Íéãçñßá", 0,0,0 }, +{ IDX_2C('n','i'), "ÍéêáñÜãïõá", 0,0,0 }, +{ IDX_2C('n','l'), "Ïëëáíäßá", 0,0,0 }, +{ IDX_2C('n','o'), "Íïñâçãßá", 0,0,0 }, +{ IDX_2C('n','p'), "ÍåðÜë", 0,0,0 }, +{ IDX_2C('n','r'), "Íáïýñïõ", 0,0,0 }, +{ IDX_2C('n','u'), "Íéïýå", 0,0,0 }, +{ IDX_2C('n','z'), "ÍÝá Æçëáíäßá", 0,0,0 }, +{ IDX_2C('o','m'), "ÏìÜí", 0,0,0 }, +{ IDX_2C('p','a'), "ÐáíáìÜò", 0,0,0 }, +{ IDX_2C('p','e'), "Ðåñïý", 0,0,0 }, +{ IDX_2C('p','f'), "ÃáëëéêÞ Ðïëõíçóßá", 0,0,0 }, +{ IDX_2C('p','g'), "Ðáðïýá ÍÝá ÃïõéíÝá", 0,0,0 }, +{ IDX_2C('p','h'), "Öéëéððßíåò", 0,0,0 }, +{ IDX_2C('p','k'), "ÐáêéóôÜí", 0,0,0 }, +{ IDX_2C('p','l'), "Ðïëùíßá", 0,0,0 }, +{ IDX_2C('p','m'), "Óáßíô ÐéÝñ", 0,0,0 }, +{ IDX_2C('p','n'), "Ðßôêáéñí", 0,0,0 }, +{ IDX_2C('p','r'), "Ðüñôï Ñßêï", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Ðïñôïãáëßá", 0,0,0 }, +{ IDX_2C('p','w'), "ÐáëÜïõ", 0,0,0 }, +{ IDX_2C('p','y'), "ÐáñáãïõÜç", 0,0,0 }, +{ IDX_2C('q','a'), "ÊáôÜñ", 0,0,0 }, +{ IDX_2C('r','e'), "ÅðáíÝíùóç", 0,0,0 }, +{ IDX_2C('r','o'), "Ñïõìáíßá", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Ñùóßá", 0,0,0 }, +{ IDX_2C('r','w'), "ÑïõÜíôá", 0,0,0 }, +{ IDX_2C('s','a'), "ÓáïõäéêÞ Áñáâßá", 0,0,0 }, +{ IDX_2C('s','b'), "ÍçóéÜ Óïëïìþíôá", 0,0,0 }, +{ IDX_2C('s','c'), "Óåû÷Ýëåò", 0,0,0 }, +{ IDX_2C('s','d'), "ÓïõäÜí", 0,0,0 }, +{ IDX_2C('s','e'), "Óïõçäßá", 0,0,0 }, +{ IDX_2C('s','g'), "Óéãêáðïýñç", 0,0,0 }, +{ IDX_2C('s','h'), "Áãßá ÅëÝíç", 0,0,0 }, +{ IDX_2C('s','i'), "Óëïâåíßá", 0,0,0 }, +{ IDX_2C('s','j'), "ÍçóéÜ ÓâÜëìðáñíô", 0,0,0 }, +{ IDX_2C('s','k'), "Óëïâáêßá", 0,0,0 }, +{ IDX_2C('s','l'), "Óßåñá Ëåüíå", 0,0,0 }, +{ IDX_2C('s','m'), "Óáí Ìáñßíï", 0,0,0 }, +{ IDX_2C('s','n'), "ÓåíåãÜëç", 0,0,0 }, +{ IDX_2C('s','o'), "Óïìáëßá", 0,0,0 }, +{ IDX_2C('s','r'), "ÓïõñéíÜì", 0,0,0 }, +{ IDX_2C('s','t'), "ÓÜï Ôüìå êáé Ðñéíôóßðå", 0,0,0 }, +{ IDX_2C('s','u'), "Ðñþçí Å.Ó.Ó.Ä.", 0,0,0 }, +{ IDX_2C('s','v'), "Åë Óáëâáäüñ", 0,0,0 }, +{ IDX_2C('s','y'), "Óõñßá", 0,0,0 }, +{ IDX_2C('s','z'), "ÓïõáæéëÜíäç", 0,0,0 }, +{ IDX_2C('t','c'), "ÍçóéÜ ÊÜéêïò", 0,0,0 }, +{ IDX_2C('t','d'), "ÔóÜíô", 0,0,0 }, +{ IDX_2C('t','f'), "ÃáëëéêÝò ÊôÞóåéò", 0,0,0 }, +{ IDX_2C('t','g'), "Ôüãêï", 0,0,0 }, +{ IDX_2C('t','h'), "ÔáúëÜíäç", 0,0,0 }, +{ IDX_2C('t','j'), "ÔáôæéêéóôÜí", 0,0,0 }, +{ IDX_2C('t','k'), "ÔïêåëÜïõ", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "ÔïõñêìåíéóôÜí", 0,0,0 }, +{ IDX_2C('t','n'), "Ôõíçóßá", 0,0,0 }, +{ IDX_2C('t','o'), "Ôüãêá", 0,0,0 }, +{ IDX_2C('t','p'), "Áíáôëéêü Ôéìüñ", 0,0,0 }, +{ IDX_2C('t','r'), "Ôïõñêßá", 0,0,0 }, +{ IDX_2C('t','t'), "Ôñßíéíôáíô êáé ÔïìðÜãêï", 0,0,0 }, +{ IDX_2C('t','v'), "Ôïõâáëïý", 0,0,0 }, +{ IDX_2C('t','w'), "ÔáúâÜí", 0,0,0 }, +{ IDX_2C('t','z'), "Ôáíæáíßá", 0,0,0 }, +{ IDX_2C('u','a'), "Ïõêñáíßá", 0,0,0 }, +{ IDX_2C('u','g'), "ÏõãêÜíôá", 0,0,0 }, +{ IDX_2C('u','k'), "ÇíùìÝíï Âáóßëåéï", 0,0,0 }, +{ IDX_2C('u','m'), "ÍçóéÜ Ç.Ð.Á.", 0,0,0 }, +{ IDX_2C('u','s'), "Ç.Ð.Á.", 0,0,0 }, +{ IDX_2C('u','y'), "ÏõñïõãïõÜç", 0,0,0 }, +{ IDX_2C('u','z'), "ÏõæìðåêéóôÜí", 0,0,0 }, +{ IDX_2C('v','a'), "Âáôéêáíü", 0,0,0 }, +{ IDX_2C('v','c'), "Óáßíô Âßíóåíô", 0,0,0 }, +{ IDX_2C('v','e'), "ÂåíåæïõÝëá", 0,0,0 }, +{ IDX_2C('v','g'), "ÂñåôáíéêÝò ÐáñèÝíåò ÍÞóïé", 0,0,0 }, +{ IDX_2C('v','i'), "ÐáñèÝíåò ÍÞóïé (Ç.Ð.Á.)", 0,0,0 }, +{ IDX_2C('v','n'), "ÂéåôíÜì", 0,0,0 }, +{ IDX_2C('v','u'), "ÂáíïõÜôïõ", 0,0,0 }, +{ IDX_2C('w','f'), "ÍçóéÜ ÃïõÜëéò", 0,0,0 }, +{ IDX_2C('w','s'), "Óáìüá", 0,0,0 }, +{ IDX_2C('y','e'), "ÕåìÝíç", 0,0,0 }, +{ IDX_2C('y','t'), "Ìáãéüô", 0,0,0 }, +{ IDX_2C('y','u'), "Ãéïõãêïóëáâßá", 0,0,0 }, +{ IDX_2C('z','a'), "Íüôéá ÁöñéêÞ", 0,0,0 }, +{ IDX_2C('z','m'), "ÆÜìðéá", 0,0,0 }, +{ IDX_2C('z','w'), "ÆéìðÜìðïõå", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.hungarian b/lang/webalizer_lang.hungarian new file mode 100644 index 0000000..9504f2a --- /dev/null +++ b/lang/webalizer_lang.hungarian @@ -0,0 +1,638 @@ +/* + webalizer_lang.hungarian + + Webalizer V2.0x Language Support file for Hungarian. + 15-May-1998 by Bradford L. Barrett (brad@mrunix.net) + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 20-Jul-1999 Translated by Viktor Haas (haasviki@hotmail.com) + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 27-Mar-2000 Modified hungarian translation for level 2.0 by + Viktor Haas (haasviki@hotmail.com) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Magyar"; +char *langcode = "hu"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "rekord"; +char *msg_addresses="addresses"; +char *msg_ignored = "mellõzött"; +char *msg_bad = "rossz"; +char *msg_in = ""; +char *msg_seconds = "másodperc alatt"; + +/* progress and setup error messages */ +char *msg_log_err = "Hiba: Nem tudom megnyitni a log file-t"; +char *msg_log_use = "Használom a logfile-t"; +char *msg_dir_err = "Hiba: Nem tudom megváltoztatni a könyvtárat erre: "; +char *msg_dir_use = "Készítem a kimenetet:"; +char *msg_cur_dir = "jelenlegi könyvtár"; +char *msg_hostname= "A jelentésnek a hostneve:"; +char *msg_ign_hist= "Mellõzöm az elözõ history-t..."; +char *msg_no_hist = "History file-t nem találom..."; +char *msg_get_hist= "Olvasom a history file-t..."; +char *msg_put_hist= "Mentem a history információt..."; +char *msg_hist_err= "Hiba: Nem tudom írni a history file-t"; +char *msg_bad_hist= "Hiba: Mellõzöm érvénytelen history rekordot"; +char *msg_bad_conf= "Hiba: Nem tudom megnyitni a konfigurációs file-t"; +char *msg_bad_key = "Figyelmeztetés: Érvénytelen kulcsszó"; +char *msg_bad_date= "Hiba: Kihagyom a rekordot (rossz dátum)"; +char *msg_ign_nscp= "Kihagyom Netscape header rekordot"; +char *msg_bad_rec = "Kihagyom a rossz rekordot"; +char *msg_no_vrec = "Nem találtam érvényes rekordokat!"; +char *msg_gen_rpt = "Készítem a jelentés:"; +char *msg_gen_sum = "Készítem az összefoglalt jelentést"; +char *msg_get_data= "Olvasom az elözõ futatott adatokat.."; +char *msg_put_data= "Mentem a jelenlegi futatott adatokat..."; +char *msg_no_data = "Az elözõ futatott adatokat nem találom..."; +char *msg_bad_data= "Hiba: Nem tudom helyreállítani a futatott adatokat"; +char *msg_data_err= "Hiba: Nem tudom menteni a jelenlegi futatott adatokat"; +char *msg_dup_data= "Figyelmeztetés: Lehetséges ismételt adatot találtam"; + +/* DNS Stuff */ +char *msg_dns_nocf= "Nincs cache file elõírva, megszakítás..."; +char *msg_dns_nodb= "Hiba: Nem lehet megnyitni a DNS cache file-t"; +char *msg_dns_nolk= "Hiba: Nem lehet zárni a DNS cache file-t"; +char *msg_dns_usec= "Használom a DNS cache file-t"; +char *msg_dns_rslv= "DNS kikeresés"; +char *msg_dns_none= "Nincs mit feldolgozni"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Nem tudok elegendõ memóriát lefoglalni, Top Oldal tiltva!"; +char *msg_nomem_tr= "Nem tudok elegendõ memóriát lefoglalni, Top Hivatkozás tiltva!"; +char *msg_nomem_tu= "Nem tudok elegendõ memóriát lefoglalni, Top URL tiltva!"; +char *msg_nomem_tc= "Nem tudok elegendõ memóriát lefoglalni, Top Ország tiltva!"; +char *msg_nomem_ta= "Nem tudok elegendõ memóriát lefoglalni, Top Felhasználó böngészõje tiltva!"; +char *msg_nomem_tsr="Nem tudok elegendõ memóriát lefoglalni, Top Keresési string tiltva!"; +char *msg_nomem_ti= "Nem tudok elegendõ memóriát lefoglalni, Top Felhasználónevek tiltva!"; +char *msg_nomem_dh= "Hiba a hozzáadásnál host node (napi), kihagyom"; +char *msg_nomem_mh= "Hiba a hozzáadásnál host node (havi), kihagyom"; +char *msg_nomem_u = "Hiba a hozzáadásnál URL node, kihagyom"; +char *msg_nomem_a = "Hiba a hozzáadásnál Agent node, kihagyom"; +char *msg_nomem_r = "Hiba a hozzáadásnál Hivatkozás node, kihagyom"; +char *msg_nomem_sc= "Hiba a hozzáadásnál Keresési string Node, kihagyom"; +char *msg_nomem_i = "Hiba a felhasználónév node hozzáadásánál, kihagyom"; + +/* log record errors */ +char *msg_big_rec = "Hiba: Kihagyom a túl nagy log rekordot"; +char *msg_big_host= "Figyelmeztetés: Lerövidítem a túl hosszú hostnevet"; +char *msg_big_date= "Figyelmeztetés: Levágom a túl nagy adat mezõt"; +char *msg_big_req = "Figyelmeztetés: Levágom a túl nagy kérés mezõt"; +char *msg_big_ref = "Figyelmeztetés: Levágom a túl nagy hivatkozás mezõt"; +char *msg_big_user= "Figyelmeztetés: Levágom a túl nagy felhasználónevet"; +char *msg_big_one = "Figyelmeztetés: String nagyob a tárolható méretnél"; + +/* misc errors */ +char *msg_no_open = "Hiba: Nem tudom megnyítni a file-t"; + +/* Help display... */ +char *h_usage1 = "Használat"; +char *h_usage2 = "[options] [log file]"; +char *h_msg[]= { + "-h = Kiírja ezt a sugó üzenetet" , + "-V = Kiírja a verziószámot" , + "-v = be verbose" , + "-d = Kiírja a további debug infót" , + "-F type = Log type. type= (clf | ftp | squid | w3c)", + "-f = Összefogja a sorozatos hibákat" , + "-i = Mellõzi a history file-t" , + "-p = Megõrzi az állapotott (incremental)", + "-b = ignore state (incremental)" , + "-q = supress informational messages" , + "-Q = supress _ALL_ messages" , + "-Y = supress country graph" , + "-G = supress hourly graph" , + "-H = supress hourly stats" , + "-L = supress color coded graph legends" , + "-l num = use num background lines on graph" , + "-m num = Visit timout value (seconds)" , + "-T = print timing information" , + "-c file = Használja a konfigurációs file-t 'file'", + "-n name = Hostnév amit használjon" , + "-o dir = Kimeneti könyvtár" , + "-t name = Report címe 'name'" , + "-a name = Rejtse a felhasználó böngészõjét 'name'", + "-r name = Rejtse a hivatkozást 'name'" , + "-s name = Rejtse az oldalt 'name'" , + "-u name = Rejtse az URL-t 'name'" , + "-x name = Használja a filenév kiterjesztését 'name'", + "-O name = Omit page 'name'" , + "-P name = Oldal tipusának a kiterjesztése 'name'", + "-I name = Index alias 'name'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Display num top agents" , + "-C num = Display num top countries" , + "-R num = Display num top referrers" , + "-S num = Display num top sites" , + "-U num = Display num top URLs" , + "-e num = Display num top Entry Pages" , + "-E num = Display num top Exit Pages" , + "-g num = Group Domains to 'num' levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Használja a DNS Cache file-t 'name'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Vizsgálati idõszak"; +char *msg_hhdr_gt = "Készült:"; + +/* main index strings */ +char *msg_main_us = "Használat összegzése:"; +/* char *msg_main_per= "Elmúlt 12 Hónap"; */ +char *msg_main_per= "Havi összefoglalás"; +char *msg_main_sum= "Havi összefoglalás"; +char *msg_main_da = "Napi átlag"; +char *msg_main_mt = "Havi összegzés"; + +/* month HTML page strings */ +char *msg_hmth_du = "Napi használat:"; +char *msg_hmth_hu = "Óránkénti használat:"; + +/* table header strings */ +char *msg_h_by = "By"; +char *msg_h_avg = "Átlag"; +char *msg_h_max = "Maximum"; +char *msg_h_total = "Összes"; +char *msg_h_totals= "Összegzés"; +char *msg_h_day = "Nap"; +char *msg_h_mth = "Hónap"; +char *msg_h_hour = "Óra"; +char *msg_h_hits = "Találatok"; +char *msg_h_pages = "Lapok"; +char *msg_h_visits= "Látogatók"; +char *msg_h_files = "File-ok"; +char *msg_h_sites = "Oldalak"; +char *msg_h_xfer = "KByte"; +char *msg_h_hname = "Hostnév"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Felhasználó böngészõje"; +char *msg_h_ref = "Hivatkozás"; +char *msg_h_ctry = "Ország"; +char *msg_h_search= "Keresési String"; +char *msg_h_uname = "Felhasználónév"; + +/* links along top of page */ +char *msg_hlnk_ds = "Napi Statisztika"; +char *msg_hlnk_hs = "Óránkénti Statisztika"; +char *msg_hlnk_u = "URLs"; +char *msg_hlnk_s = "Oldalak"; +char *msg_hlnk_a = "Böngészõk"; +char *msg_hlnk_c = "Országok"; +char *msg_hlnk_r = "Hivatkozások"; +char *msg_hlnk_en = "Belépés"; +char *msg_hlnk_ex = "Kilépés"; +char *msg_hlnk_sr = "Keresés"; +char *msg_hlnk_i = "Felhasználók"; + +/* monthly total table */ +char *msg_mtot_ms = "Havi Statisztika:"; +char *msg_mtot_th = "Összes Találat"; +char *msg_mtot_tf = "Összes File"; +char *msg_mtot_tx = "Összes KByte"; +char *msg_mtot_us = "Összes különbözõ Oldal"; +char *msg_mtot_ur = "Összes különbözõ Hivatkozás"; +char *msg_mtot_ua = "Összes különbözõ Felhasználó böngészõje"; +char *msg_mtot_uu = "Összes különbözõ URL"; +char *msg_mtot_ui = "Összes különbözõ Felhasználónevek"; +char *msg_mtot_mhd= "Találat/nap"; +char *msg_mtot_mhh= "Találat/óra"; +char *msg_mtot_mfd= "File/nap"; +char *msg_mtot_mpd= "Lap/nap"; +char *msg_mtot_msd= "Oldal/nap"; +char *msg_mtot_mvd= "Látogató/nap"; +char *msg_mtot_mkd= "KByte/nap"; +char *msg_mtot_rc = "Válaszkódok általi találatok"; + +/* daily total table */ +char *msg_dtot_ds = "Napi Statisztika:"; + +/* hourly total table */ +char *msg_htot_hs = "Óránkénti Statisztika:"; + +/* country pie chart */ +char *msg_ctry_use= "Országok általi használat:"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Top"; +char *msg_top_of = "of"; +char *msg_top_s = "Összes Oldal"; +char *msg_top_u = "Összes URL"; +char *msg_top_r = "Összes Hivatkozás"; +char *msg_top_a = "Összes Felhasználó böngészõje"; +char *msg_top_c = "Összes Ország"; +char *msg_top_en = "Összes Belépési lap"; +char *msg_top_ex = "Összes Kilépési lap"; +char *msg_top_sr = "Összes Keresési string"; +char *msg_top_i = "Összes Felhasználónevek"; +char *msg_v_sites = "Összes Oldal megtekintése"; +char *msg_v_urls = "Összes URL megtekintése"; +char *msg_v_refs = "Összes Hivatkozás megtekintése"; +char *msg_v_agents= "Összes Felhasználó böngészõje megtekintése"; +char *msg_v_search= "Összes Keresési string megtekintése"; +char *msg_v_users = "Összes Felhasználó megtekintése"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Jan", "Feb", "Már", + "Ápr", "Máj", "Jún", + "Júl", "Aug", "Sep", + "Okt", "Nov", "Dec"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Január", "Február", "Március", "Április", + "Május", "Június", "Július", "Augusztus", + "Szeptember","Október", "November","December"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Undefined response code", 0 }, + { "Code 100 - Continue", 0 }, + { "Code 101 - Switching Protocols", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Created", 0 }, + { "Code 202 - Accepted", 0 }, + { "Code 203 - Non-Authoritative Information", 0 }, + { "Code 204 - No Content", 0 }, + { "Code 205 - Reset Content", 0 }, + { "Code 206 - Partial Content", 0 }, + { "Code 300 - Multiple Choices", 0 }, + { "Code 301 - Moved Permanently", 0 }, + { "Code 302 - Found", 0 }, + { "Code 303 - See Other", 0 }, + { "Code 304 - Not Modified", 0 }, + { "Code 305 - Use Proxy", 0 }, + { "Code 307 - Moved Temporarily", 0 }, + { "Code 400 - Bad Request", 0 }, + { "Code 401 - Unauthorized", 0 }, + { "Code 402 - Payment Required", 0 }, + { "Code 403 - Forbidden", 0 }, + { "Code 404 - Not Found", 0 }, + { "Code 405 - Method Not Allowed", 0 }, + { "Code 406 - Not Acceptable", 0 }, + { "Code 407 - Proxy Authentication Required", 0 }, + { "Code 408 - Request Timeout", 0 }, + { "Code 409 - Conflict", 0 }, + { "Code 410 - Gone", 0 }, + { "Code 411 - Length Required", 0 }, + { "Code 412 - Precondition Failed", 0 }, + { "Code 413 - Request Entity Too Large", 0 }, + { "Code 414 - Request-URI Too Long", 0 }, + { "Code 415 - Unsupported Media Type", 0 }, + { "Code 416 - Requested Range Not Satisfiable", 0 }, + { "Code 417 - Expectation Failed", 0 }, + { "Code 500 - Internal Server Error", 0 }, + { "Code 501 - Not Implemented", 0 }, + { "Code 502 - Bad Gateway", 0 }, + { "Code 503 - Service Unavailable", 0 }, + { "Code 504 - Gateway Timeout", 0 }, + { "Code 505 - HTTP Version Not Supported", 0 } }; + +char *msg_title = "Használati Statisztika:"; +char *msg_h_other = "Más"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Ismeretlen", 0,0,0 }, +{ IDX_3C('c','o','m'), "Commercial (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Educational (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "US Government (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "International (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "US Military (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Network (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Non-Profit (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Address Routing (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Nato field (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "United Arab Emirates", 0,0,0 }, +{ IDX_2C('a','f'), "Afghanistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua and Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armenia", 0,0,0 }, +{ IDX_2C('a','n'), "Netherlands Antilles", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarctica", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "American Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Austria", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaijan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia and Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgium", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brazil", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Island", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Belarus", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Canada", 0,0,0 }, +{ IDX_2C('c','c'), "Cocos (Keeling) Islands", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Central African Republic", 0,0,0 }, +{ IDX_2C('c','g'), "Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Switzerland", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire (Ivory Coast)", 0,0,0 }, +{ IDX_2C('c','k'), "Cook Islands", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Cameroon", 0,0,0 }, +{ IDX_2C('c','n'), "China", 0,0,0 }, +{ IDX_2C('c','o'), "Colombia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Christmas Island", 0,0,0 }, +{ IDX_2C('c','y'), "Cyprus", 0,0,0 }, +{ IDX_2C('c','z'), "Czech Republic", 0,0,0 }, +{ IDX_2C('d','e'), "Germany", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Denmark", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Dominican Republic", 0,0,0 }, +{ IDX_2C('d','z'), "Algeria", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador", 0,0,0 }, +{ IDX_2C('e','e'), "Estonia", 0,0,0 }, +{ IDX_2C('e','g'), "Egypt", 0,0,0 }, +{ IDX_2C('e','h'), "Western Sahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Spain", 0,0,0 }, +{ IDX_2C('e','t'), "Ethiopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finland", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Falkland Islands (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronesia", 0,0,0 }, +{ IDX_2C('f','o'), "Faroe Islands", 0,0,0 }, +{ IDX_2C('f','r'), "France", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Great Britain (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgia", 0,0,0 }, +{ IDX_2C('g','f'), "French Guiana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Greenland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Equatorial Guinea", 0,0,0 }, +{ IDX_2C('g','r'), "Greece", 0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia and S. Sandwich Isls.", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard and McDonald Islands", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Croatia", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Magyarország", 0,0,0 }, +{ IDX_2C('i','d'), "Indonesia", 0,0,0 }, +{ IDX_2C('i','e'), "Ireland", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "India", 0,0,0 }, +{ IDX_2C('i','o'), "British Indian Ocean Territory", 0,0,0 }, +{ IDX_2C('i','q'), "Iraq", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Iceland", 0,0,0 }, +{ IDX_2C('i','t'), "Italy", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Jordan", 0,0,0 }, +{ IDX_2C('j','p'), "Japan", 0,0,0 }, +{ IDX_2C('k','e'), "Kenya", 0,0,0 }, +{ IDX_2C('k','g'), "Kyrgyzstan", 0,0,0 }, +{ IDX_2C('k','h'), "Cambodia", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts and Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Korea, Democratic Republic of", 0,0,0 }, +{ IDX_2C('k','r'), "Korea, Republic of", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Cayman Islands", 0,0,0 }, +{ IDX_2C('k','z'), "Kazakhstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Lebanon", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lithuania", 0,0,0 }, +{ IDX_2C('l','u'), "Luxembourg", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia", 0,0,0 }, +{ IDX_2C('l','y'), "Libya", 0,0,0 }, +{ IDX_2C('m','a'), "Morocco", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Marshall Islands", 0,0,0 }, +{ IDX_2C('m','k'), "Macedonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolia", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Northern Mariana Islands", 0,0,0 }, +{ IDX_2C('m','q'), "Martinique", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldives", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexico", 0,0,0 }, +{ IDX_2C('m','y'), "Malaysia", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambique", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "New Caledonia", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Island", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Netherlands", 0,0,0 }, +{ IDX_2C('n','o'), "Norway", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "New Zealand", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "French Polynesia", 0,0,0 }, +{ IDX_2C('p','g'), "Papua New Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Philippines", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Poland", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre and Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Romania", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Russian Federation", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saudi Arabia", 0,0,0 }, +{ IDX_2C('s','b'), "Solomon Islands", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Sweden", 0,0,0 }, +{ IDX_2C('s','g'), "Singapore", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenia", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbard and Jan Mayen Islands", 0,0,0 }, +{ IDX_2C('s','k'), "Slovakia", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Suriname", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome and Principe", 0,0,0 }, +{ IDX_2C('s','u'), "Soviet Union", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Turks and Caicos Islands", 0,0,0 }, +{ IDX_2C('t','d'), "Chad", 0,0,0 }, +{ IDX_2C('t','f'), "French Southern Territories", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Thailand", 0,0,0 }, +{ IDX_2C('t','j'), "Tajikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisia", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Portuguese Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turkey", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad and Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraine", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "United Kingdom", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying Islands", 0,0,0 }, +{ IDX_2C('u','s'), "United States", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatican City State (Holy See)", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent and the Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Virgin Islands (British)", 0,0,0 }, +{ IDX_2C('v','i'), "Virgin Islands (U.S.)", 0,0,0 }, +{ IDX_2C('v','n'), "Viet Nam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis and Futuna Islands", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Yugoslavia", 0,0,0 }, +{ IDX_2C('z','a'), "South Africa", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.icelandic b/lang/webalizer_lang.icelandic new file mode 100644 index 0000000..387d9a0 --- /dev/null +++ b/lang/webalizer_lang.icelandic @@ -0,0 +1,640 @@ +/* + webalizer_lang.icelandic + + Webalizer V2.0x Language Support file for Icelandic. + 15-May-1998 by Bradford L. Barrett (brad@mrunix.net) + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 16-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 15-Dec-2000 Translated to icelandic (isak@snerpa.is] + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + I used as a guide an older file that Kristofer & Veigar had + Translated for 1.3. + This was originally the english version...i just translated it. + Still a few lines i didn't have time do dig up translations on maybe + i'll do it later...or maybe someone else will? ;) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Icelandic"; +char *langcode = "is"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "skráningar"; +char *msg_addresses="frá"; +char *msg_ignored = "hunsaðar"; +char *msg_bad = "gallaðar"; +char *msg_in = "á"; +char *msg_seconds = "sekúndum"; + +/* progress and setup error messages */ +char *msg_log_err = "Villa: Get ekki opnað annála"; +char *msg_log_use = "Nota annála"; +char *msg_dir_err = "Villa: Get ekki farið í möppuna:"; +char *msg_dir_use = "Bý til úttak í"; +char *msg_cur_dir = "Núverandi mappa"; +char *msg_hostname= "Nafn þjóns fyrir skýrslur er:"; +char *msg_ign_hist= "Hunsa fyrri atburði..."; +char *msg_no_hist = "Finn ekki atburðaskrá..."; +char *msg_get_hist= "Les atburðaskrá..."; +char *msg_put_hist= "Vista atburðaskrá..."; +char *msg_hist_err= "Villa: Get ekki skrifað í atburðaskrá"; +char *msg_bad_hist= "Villa: Gölluð atburðaskráning"; +char *msg_bad_conf= "Villa: Get ekki opnað stillingaskrá"; +char *msg_bad_key = "Varúð: Rangt lykilorð"; +char *msg_bad_date= "Villa: Sleppi skráningu, gölluð dagsetning"; +char *msg_ign_nscp= "Sleppi Netscape hausskráningu"; +char *msg_bad_rec = "Sleppi gallaðri skráningu"; +char *msg_no_vrec = "Engar skráningar fundnar í lagi!"; +char *msg_gen_rpt = "Bý til skráningu fyrir"; +char *msg_gen_sum = "Bý til stutta skráningu"; +char *msg_get_data= "Les eldri gögn.."; +char *msg_put_data= "Vista núverandi gögn..."; +char *msg_no_data = "Eldri gögn fundust ekki..."; +char *msg_bad_data= "Villa: Get ekki endurheimt gögn"; +char *msg_data_err= "Villa: Get ekki vistað núverandi gögn"; +char *msg_dup_data= "Aðvörun: Möguleiki á tvískráðum gögnum"; + +/* DNS Stuff */ +char *msg_dns_nocf= "Enginn cache skrá skilgreind, hætti við..."; +char *msg_dns_nodb= "Villa: Get ekki opnað DNS cache skrá"; +char *msg_dns_nolk= "Villa: Get get ekki læsta DNS cache skrá"; +char *msg_dns_usec= "Nota DNS cache skrá"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "Enginn til að vinna"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Get ekki fundið nóg minni, sleppi Top Sites!"; +char *msg_nomem_tr= "Get ekki fundið nóg minni, Top Referrers!"; +char *msg_nomem_tu= "Get ekki fundið nóg minni, Top URLs!"; +char *msg_nomem_tc= "Get ekki fundið nóg minni, Top Countries!"; +char *msg_nomem_ta= "Get ekki fundið nóg minni, Top User Agents!"; +char *msg_nomem_tsr="Get ekki fundið nóg minni, Top Search Strings!"; +char *msg_nomem_ti= "Get ekki fundið nóg minni, Top Usernames!"; +char *msg_nomem_dh= "Error adding host node (daily), skipping"; +char *msg_nomem_mh= "Error adding host node (monthly), skipping"; +char *msg_nomem_u = "Error adding URL node, skipping"; +char *msg_nomem_a = "Error adding User Agent node, skipping"; +char *msg_nomem_r = "Error adding Referrer node, skipping"; +char *msg_nomem_sc= "Error adding Search String Node, skipping"; +char *msg_nomem_i = "Error adding Username node, skipping"; + +/* log record errors */ +char *msg_big_rec = "Villa: Sleppi of stórum annálum"; +char *msg_big_host= "Aðvörun: Minnka of stórt host nafn"; +char *msg_big_date= "Aðvörun: Minnka of stóra dags. línu"; +char *msg_big_req = "Aðvörun: Minnka of stóra request línu"; +char *msg_big_ref = "Aðvörun: Minnka of stóra referrer línu"; +char *msg_big_user= "Aðvörun: Minnka of stórt notandanafn"; +char *msg_big_one = "Aðvörun: Strengur er stærri en geymslupláss"; + +/* misc errors */ +char *msg_no_open = "Villa: Get ekki opnað skrá"; + +/* Help display... */ +char *h_usage1 = "notkun"; +char *h_usage2 = "[rofar] [log file]"; +char *h_msg[]= { + "-h = prentar þessa hjálp" , + "-V = prentar útgáfu upplýsingar" , + "-v = be verbose" , + "-d = print additional debug info" , + "-F tegund = Annála tegund. tegund= (clf | ftp | squid | w3c)", + "-f = Fold sequence errors" , + "-i = hunsa history skrá" , + "-p = preserve state (incremental)" , + "-b = ignore state (incremental)" , + "-q = supress informational messages" , + "-Q = supress _ALL_ messages" , + "-Y = supress country graph" , + "-G = supress hourly graph" , + "-H = supress hourly stats" , + "-L = supress color coded graph legends" , + "-l num = use num background lines on graph" , + "-m num = Visit timout value (seconds)" , + "-T = print timing information" , + "-c file = use configuration file 'file'" , + "-n name = hostname to use" , + "-o dir = output directory to use" , + "-t name = report title 'name'" , + "-a name = hide user agent 'name'" , + "-r name = hide referrer 'name'" , + "-s name = hide site 'name'" , + "-u name = hide URL 'name'" , + "-x name = Use filename extension 'name'" , + "-O name = Omit page 'name'" , + "-P name = Page type extension 'name'" , + "-I name = Index alias 'name'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Display num top agents" , + "-C num = Display num top countries" , + "-R num = Display num top referrers" , + "-S num = Display num top sites" , + "-U num = Display num top URLs" , + "-e num = Display num top Entry Pages" , + "-E num = Display num top Exit Pages" , + "-g num = Group Domains to 'num' levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Use DNS Cache file 'name'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Tímabil"; +char *msg_hhdr_gt = "Skýrsla gerð"; + +/* main index strings */ +char *msg_main_us = "Yfirlit heimsókn fyrir"; +/* char *msg_main_per= "Síðustu 12 mánuðir "; */ +char *msg_main_per= "Yfirlit eftir mánuðum"; +char *msg_main_sum= "Yfirlit eftir mánuðum"; +char *msg_main_da = "Dags meðaltal"; +char *msg_main_mt = "Samtals á mánuði"; + +/* month HTML page strings */ +char *msg_hmth_du = "Notkun á dag fyrir"; +char *msg_hmth_hu = "Notkun á klukkustund fyrir"; + +/* table header strings */ +char *msg_h_by = "By"; +char *msg_h_avg = "Meðaltal"; +char *msg_h_max = "Mest"; +char *msg_h_total = "Samtals"; +char *msg_h_totals= "Samtals"; +char *msg_h_day = "Dagur"; +char *msg_h_mth = "Mánuður"; +char *msg_h_hour = "Klukkustund"; +char *msg_h_hits = "Beiðnir"; +char *msg_h_pages = "Síður"; +char *msg_h_visits= "Heimsóknir"; +char *msg_h_files = "Skrár"; +char *msg_h_sites = "Sites"; +char *msg_h_xfer = "KBæti"; +char *msg_h_hname = "Host nafn"; +char *msg_h_url = "Slóð"; +char *msg_h_agent = "User Agent"; +char *msg_h_ref = "Referrer"; +char *msg_h_ctry = "Land"; +char *msg_h_search= "Leitarstrengur"; +char *msg_h_uname = "Notandanafn"; + +/* links along top of page */ +char *msg_hlnk_ds = "Daglegar samtölur"; +char *msg_hlnk_hs = "Klukkustundar samtölur"; +char *msg_hlnk_u = "Slóðir"; +char *msg_hlnk_s = "Síður"; +char *msg_hlnk_a = "Agents"; +char *msg_hlnk_c = "Lönd"; +char *msg_hlnk_r = "Referrers"; +char *msg_hlnk_en = "Byrjunar"; +char *msg_hlnk_ex = "loka"; +char *msg_hlnk_sr = "Leita"; +char *msg_hlnk_i = "Notendur"; + +/* monthly total table */ +char *msg_mtot_ms = "Mánaðar Samtölur fyrir"; +char *msg_mtot_th = "Samtals Beiðnir"; +char *msg_mtot_tf = "Samtals Skrár"; +char *msg_mtot_tx = "Samtals KBæti"; +char *msg_mtot_us = "Samtals Einstakar Síður"; +char *msg_mtot_ur = "Samtals Unique Referrers"; +char *msg_mtot_ua = "Samtals Unique User Agents"; +char *msg_mtot_uu = "Samtals Einstakar Slóðir"; +char *msg_mtot_ui = "Samtals Einstök Notandanöfn"; +char *msg_mtot_mhd= "Beiðnir á Dag"; +char *msg_mtot_mhh= "Beiðnir á Klukkustund"; +char *msg_mtot_mfd= "Skrár á Dag"; +char *msg_mtot_mpd= "Síður á Dag"; +char *msg_mtot_msd= "Síður (sites) á Dag"; +char *msg_mtot_mvd= "Heimsóknir á Dag"; +char *msg_mtot_mkd= "KBæti á Dag"; +char *msg_mtot_rc = "Hits by Response Code"; + +/* daily total table */ +char *msg_dtot_ds = "Daglegar Samtölur fyrir"; + +/* hourly total table */ +char *msg_htot_hs = "Klukkustundar Samtölur fyrir"; + +/* country pie chart */ +char *msg_ctry_use= "Notkun eftir Landi fyrir"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Efstu"; +char *msg_top_of = "af"; +char *msg_top_s = "Heildar Síður"; +char *msg_top_u = "Heildar slóðir"; +char *msg_top_r = "Heildar Referrers"; +char *msg_top_a = "Heildar User Agents"; +char *msg_top_c = "Heildar Lönd"; +char *msg_top_en = "Heildar Byrjunarsíðum"; +char *msg_top_ex = "Heildar Lokasíðum"; +char *msg_top_sr = "Heildar Leitarstrengir"; +char *msg_top_i = "Heildar Notendanöfn"; +char *msg_v_sites = "Skoða Allar síður"; +char *msg_v_urls = "Skoða Allar Slóðir"; +char *msg_v_refs = "Skoða Allar Referrers"; +char *msg_v_agents= "Skoða Alla User Agents"; +char *msg_v_search= "Skoða Alla Leitarstrengi"; +char *msg_v_users = "Skoða Öll Notandanöfn"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Jan", "Feb", "Mar", + "Apr", "Maí", "Jún", + "Júl", "Agú", "Sep", + "Okt", "Nóv", "Des"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Janúar", "Febrúar", "Mars", "Apríl", + "Maí", "Júní", "Júlý", "Ágúst", + "September","Október", "Nóvember","Desember"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Undefined response code", 0 }, + { "Code 100 - Áfram", 0 }, + { "Code 101 - Switching Protocols", 0 }, + { "Code 200 - I Lagi", 0 }, + { "Code 201 - Búið til", 0 }, + { "Code 202 - Samþykkt", 0 }, + { "Code 203 - Non-Authoritative Information", 0 }, + { "Code 204 - Ekkert Innihald", 0 }, + { "Code 205 - Reset Content", 0 }, + { "Code 206 - Partial Content", 0 }, + { "Code 300 - Margir Möguleikar", 0 }, + { "Code 301 - Fært", 0 }, + { "Code 302 - Fundið", 0 }, + { "Code 303 - Sjá Annað", 0 }, + { "Code 304 - Ekki Breytt", 0 }, + { "Code 305 - Nota Proxy", 0 }, + { "Code 307 - Fært Um Stundarsakir", 0 }, + { "Code 400 - Slæm Beiðni", 0 }, + { "Code 401 - Óleyfilegt", 0 }, + { "Code 402 - Greiðslu Krafist", 0 }, + { "Code 403 - Óleyfilegt", 0 }, + { "Code 404 - Fannst Ekki", 0 }, + { "Code 405 - Aðferð Ekki Leyfð", 0 }, + { "Code 406 - Ekki Ásættanlegt", 0 }, + { "Code 407 - Proxy Auðkenning Nauðsynleg", 0 }, + { "Code 408 - Request Timeout", 0 }, + { "Code 409 - Árekstur", 0 }, + { "Code 410 - Gone", 0 }, + { "Code 411 - Length Required", 0 }, + { "Code 412 - Precondition Failed", 0 }, + { "Code 413 - Request Entity Of Stórt", 0 }, + { "Code 414 - Request-URI Of Langt", 0 }, + { "Code 415 - Óstudd Media Tegund", 0 }, + { "Code 416 - Umbeðið svæði Ekki Ásættanlegt", 0 }, + { "Code 417 - Expectation Failed", 0 }, + { "Code 500 - Innlæg þjóna villa", 0 }, + { "Code 501 - Not Implemented", 0 }, + { "Code 502 - Rangur Gateway", 0 }, + { "Code 503 - Þjónusta Ekki Fyrir Hendi", 0 }, + { "Code 504 - Gateway Timeout", 0 }, + { "Code 505 - HTTP Útgáfa Ekki Studd", 0 } }; + +char *msg_title = "Yfirlit Heimsókna fyrir"; +char *msg_h_other = "Annað"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "óþekkt", 0,0,0 }, +{ IDX_3C('c','o','m'), "Commercial (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Menntanet (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "US Ríkisnet (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "International (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "US Her (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Network (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Non-Profit (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Gamla Arpanet (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Nato (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "Sameiginlegu Arabísku Furstadæmin",0,0,0 }, +{ IDX_2C('a','f'), "Afganistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua og Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albanía", 0,0,0 }, +{ IDX_2C('a','m'), "Armenía", 0,0,0 }, +{ IDX_2C('a','n'), "Holland", 0,0,0 }, +{ IDX_2C('a','o'), "Angóla", 0,0,0 }, +{ IDX_2C('a','q'), "Antarctica", 0,0,0 }, +{ IDX_2C('a','r'), "Argentína", 0,0,0 }, +{ IDX_2C('a','s'), "Amerísku Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Austurríki", 0,0,0 }, +{ IDX_2C('a','u'), "Ástralía", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaijan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnía and Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgía", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Búlgaría", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermúda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bólivía", 0,0,0 }, +{ IDX_2C('b','r'), "Brasilía", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Island", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Belarus", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Kanada", 0,0,0 }, +{ IDX_2C('c','c'), "Kókos (Keeling) Eyjur", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Mið Afríkulýðveldið ", 0,0,0 }, +{ IDX_2C('c','g'), "Kongó", 0,0,0 }, +{ IDX_2C('c','h'), "Swiss", 0,0,0 }, +{ IDX_2C('c','i'), "Fílabeinsströndin (Ivory Coast)", 0,0,0 }, +{ IDX_2C('c','k'), "Cook Islands", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Kamerún", 0,0,0 }, +{ IDX_2C('c','n'), "Kína", 0,0,0 }, +{ IDX_2C('c','o'), "Kólumbía", 0,0,0 }, +{ IDX_2C('c','r'), "Kosta Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Kúba", 0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Jólaeyja", 0,0,0 }, +{ IDX_2C('c','y'), "Kýpur", 0,0,0 }, +{ IDX_2C('c','z'), "Tékkneska Lýðveldið", 0,0,0 }, +{ IDX_2C('d','e'), "Þýskaland", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Danmörk", 0,0,0 }, +{ IDX_2C('d','m'), "Dóminíka", 0,0,0 }, +{ IDX_2C('d','o'), "Dóminíska Lýðveldið", 0,0,0 }, +{ IDX_2C('d','z'), "Algeria", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador", 0,0,0 }, +{ IDX_2C('e','e'), "Estónía", 0,0,0 }, +{ IDX_2C('e','g'), "Egyptaland", 0,0,0 }, +{ IDX_2C('e','h'), "Vestur Sahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Spánn", 0,0,0 }, +{ IDX_2C('e','t'), "Eþíópía", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finland", 0,0,0 }, +{ IDX_2C('f','j'), "Fíjí", 0,0,0 }, +{ IDX_2C('f','k'), "Fálkeyjur (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Míkrónesía", 0,0,0 }, +{ IDX_2C('f','o'), "Faroe Islands", 0,0,0 }, +{ IDX_2C('f','r'), "Frakkland", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Stóra Bretland (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgía", 0,0,0 }, +{ IDX_2C('g','f'), "Franska Guiana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gíbraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Grænland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Equatorial Guinea", 0,0,0 }, +{ IDX_2C('g','r'), "Grikkland", 0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia og S. Samloku Eyjur.", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard og McDonald Eyjur", 0,0,0 }, +{ IDX_2C('h','n'), "Hondúras", 0,0,0 }, +{ IDX_2C('h','r'), "Króatía", 0,0,0 }, +{ IDX_2C('h','t'), "Haítí", 0,0,0 }, +{ IDX_2C('h','u'), "Ungverjaland", 0,0,0 }, +{ IDX_2C('i','d'), "Indónesía", 0,0,0 }, +{ IDX_2C('i','e'), "Írland", 0,0,0 }, +{ IDX_2C('i','l'), "Ísrael", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "Indía", 0,0,0 }, +{ IDX_2C('i','o'), "British Indian Ocean Territory", 0,0,0 }, +{ IDX_2C('i','q'), "Írak", 0,0,0 }, +{ IDX_2C('i','r'), "Íran", 0,0,0 }, +{ IDX_2C('i','s'), "Ísland", 0,0,0 }, +{ IDX_2C('i','t'), "Ítalía", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Jordan", 0,0,0 }, +{ IDX_2C('j','p'), "Japan", 0,0,0 }, +{ IDX_2C('k','e'), "Kenya", 0,0,0 }, +{ IDX_2C('k','g'), "Kyrgyzstan", 0,0,0 }, +{ IDX_2C('k','h'), "Kambódía", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts and Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Kórea (Norður)", 0,0,0 }, +{ IDX_2C('k','r'), "Kórea (Suður)", 0,0,0 }, +{ IDX_2C('k','w'), "Kúweit", 0,0,0 }, +{ IDX_2C('k','y'), "Cayman Eyjur", 0,0,0 }, +{ IDX_2C('k','z'), "Kazakhstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Lebanon", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lithuania", 0,0,0 }, +{ IDX_2C('l','u'), "Lúxembourg", 0,0,0 }, +{ IDX_2C('l','v'), "Lettland", 0,0,0 }, +{ IDX_2C('l','y'), "Libýa", 0,0,0 }, +{ IDX_2C('m','a'), "Marokko", 0,0,0 }, +{ IDX_2C('m','c'), "Mónakó", 0,0,0 }, +{ IDX_2C('m','d'), "Moldóvía", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagaskar", 0,0,0 }, +{ IDX_2C('m','h'), "Marshall Eyjur", 0,0,0 }, +{ IDX_2C('m','k'), "Makedónía", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongólía", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Norður Mariana eyjur", 0,0,0 }, +{ IDX_2C('m','q'), "Martinique", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritanía", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldives", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexíko", 0,0,0 }, +{ IDX_2C('m','y'), "Malasía", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambík", 0,0,0 }, +{ IDX_2C('n','a'), "Namibía", 0,0,0 }, +{ IDX_2C('n','c'), "Nýja Caledonia", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Island", 0,0,0 }, +{ IDX_2C('n','g'), "Nigería", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Netherlands", 0,0,0 }, +{ IDX_2C('n','o'), "Noregur", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "Nýja Sjáland", 0,0,0 }, +{ IDX_2C('o','m'), "Óman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "Franska Pólýnesía", 0,0,0 }, +{ IDX_2C('p','g'), "Papua Nýja Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Filippseyjar", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Pólland", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre og Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Púerto Ríko", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portúgal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Rúmenía", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Rússneska Sambandið", 0,0,0 }, +{ IDX_2C('r','w'), "Rúanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saudi Arabía", 0,0,0 }, +{ IDX_2C('s','b'), "Solomon Eyjur", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Súdan", 0,0,0 }, +{ IDX_2C('s','e'), "Svíþjóð", 0,0,0 }, +{ IDX_2C('s','g'), "Singapúr", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slóvenía", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbarði og Jan Mayen Eyjarnar", 0,0,0 }, +{ IDX_2C('s','k'), "Slóvenska lýðveldið", 0,0,0 }, +{ IDX_2C('s','l'), "Síerra Léone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marinó", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Sómalía", 0,0,0 }, +{ IDX_2C('s','r'), "Suriname", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome og Principe", 0,0,0 }, +{ IDX_2C('s','u'), "USSR (fyrrverandi)", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Sýrland", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Turks and Caicos Eyjurnar", 0,0,0 }, +{ IDX_2C('t','d'), "Chad", 0,0,0 }, +{ IDX_2C('t','f'), "French Southern Territories", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Taíland", 0,0,0 }, +{ IDX_2C('t','j'), "Tajikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Túrkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Túnis", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Portuguese Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Tyrkland", 0,0,0 }, +{ IDX_2C('t','t'), "Trinídad og Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taíwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Úkraíne", 0,0,0 }, +{ IDX_2C('u','g'), "Úganda", 0,0,0 }, +{ IDX_2C('u','k'), "Bretland", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying Islands", 0,0,0 }, +{ IDX_2C('u','s'), "USA", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Úsbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatikanið (Holy See)", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent og Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venesúela", 0,0,0 }, +{ IDX_2C('v','g'), "Jómfreyjar-eyjar (Bresku)", 0,0,0 }, +{ IDX_2C('v','i'), "Jómfreyjar-eyjar (U.S.)", 0,0,0 }, +{ IDX_2C('v','n'), "Víet Nam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis og Futuna Islands", 0,0,0 }, +{ IDX_2C('w','s'), "Samóa", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "júgóslavía", 0,0,0 }, +{ IDX_2C('z','a'), "Suður Africa", 0,0,0 }, +{ IDX_2C('z','m'), "Zambía", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0 , NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.indonesian b/lang/webalizer_lang.indonesian new file mode 100644 index 0000000..6f04f5d --- /dev/null +++ b/lang/webalizer_lang.indonesian @@ -0,0 +1,636 @@ +/* + webalizer_lang.indonesian + + Webalizer V2.0x Language Support file for Indonesian. + 15-May-1998 by Bradford L. Barrett (brad@mrunix.net) + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 08-Oct-1999 Translated to Indonesian by Adhi eN (webmaster@adhi.findhere.com) + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Indonesian"; +char *langcode = "id"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "record"; +char *msg_addresses="addresses"; +char *msg_ignored = "diabaikan"; +char *msg_bad = "buruk"; +char *msg_in = "dalam"; +char *msg_seconds = "detik"; + +/* progress and setup error messages */ +char *msg_log_err = "Salah: Tak dapat membuka file log"; +char *msg_log_use = "Menggunakan file log"; +char *msg_dir_err = "Salah: Tak dapat berpindah ke direktori"; +char *msg_dir_use = "Membuat keluaran dalam"; +char *msg_cur_dir = "direktori saat ini"; +char *msg_hostname= "Nama host yang akan dilaporkan adalah"; +char *msg_ign_hist= "Abaikan history sebelumnya..."; +char *msg_no_hist = "File history tak dapat ditemukan..."; +char *msg_get_hist= "Sedang membaca file history..."; +char *msg_put_hist= "Menyimpan informasi history..."; +char *msg_hist_err= "Salah: Tak dapat menulisi file history"; +char *msg_bad_hist= "Salah: Abaikan record history yang cacat"; +char *msg_bad_conf= "Salah: Tak dapat membuka file konfigurasi"; +char *msg_bad_key = "Peringatan: Kata kunci tidak valid"; +char *msg_bad_date= "Salah: Melompati record (tanggal salah)"; +char *msg_ign_nscp= "Melompati record header Netscape"; +char *msg_bad_rec = "Melompati record yang salah"; +char *msg_no_vrec = "Tak ditemukan record yang valid!"; +char *msg_gen_rpt = "Sedang memproses laporan untuk"; +char *msg_gen_sum = "Sedang membuat laporan singkat"; +char *msg_get_data= "Sedang membaca data yang dijalankan sebelumnya.."; +char *msg_put_data= "Sedang menyimpan data yang dijalankan saat ini..."; +char *msg_no_data = "Data yang dijalankan sebelumnya tak ditemukan..."; +char *msg_bad_data= "Salah: Tak dapat memulihkan data yang dijalankan"; +char *msg_data_err= "Salah: Tak dapat menyimpan data yang dijalankan saat ini"; +char *msg_dup_data= "Peringatan: Kemungkinan ditemukan data yang terduplikasi"; + +/* DNS Stuff */ +char *msg_dns_nocf= "No cache file specified, aborting..."; +char *msg_dns_nodb= "Error: Unable to open DNS cache file"; +char *msg_dns_nolk= "Error: Unable to lock DNS cache file"; +char *msg_dns_usec= "Using DNS cache file"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "None to process"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Tak dapat mengalokasikan cukup memori, Situs-situs urutan teratas tidak diaktifkan!"; +char *msg_nomem_tr= "Tak dapat mengalokasikan cukup memori, Acuan-acuan urutan teratas tidak diaktifkan!"; +char *msg_nomem_tu= "Tak dapat mengalokasikan cukup memori, URL-URL urutan teratas tidak diaktifkan!"; +char *msg_nomem_tc= "Tak dapat mengalokasikan cukup memori, Negara-negara urutan teratas tidak diaktifkan!"; +char *msg_nomem_ta= "Tak dapat mengalokasikan cukup memori, Browser-browser urutan teratas tidak diaktifkan!"; +char *msg_nomem_tsr="Tak dapat mengalokasikan cukup memori, String-string pencarian urutan teratas tidak diaktifkan!"; +char *msg_nomem_ti= "Can't allocate enough memory, Top Usernames disabled!"; +char *msg_nomem_dh= "Terjadi kesalahan saat menambahkan node host (harian), dilewati"; +char *msg_nomem_mh= "Terjadi kesalahan saat menambahkan node host (bulanan), dilewati"; +char *msg_nomem_u = "Terjadi kesalahan saat menambahkan node URL, dilewati"; +char *msg_nomem_a = "Terjadi kesalahan saat menambahkan node User Agent, dilewati"; +char *msg_nomem_r = "Terjadi kesalahan saat menambahkan node acuan, dilewati"; +char *msg_nomem_sc= "Terjadi kesalahan saat menambahkan node string pencarian, dilewati"; +char *msg_nomem_i = "Error adding Username node, skipping"; + +/* log record errors */ +char *msg_big_rec = "Salah: Melompati rekaman log yang oversize"; +char *msg_big_host= "Peringatan: Memotong nama host yang oversize"; +char *msg_big_date= "Peringatan: Memotong field tanggal yang oversize"; +char *msg_big_req = "Peringatan: Memotong field permintaan yang oversize"; +char *msg_big_ref = "Peringatan: Memotong acuan yang oversize"; +char *msg_big_user= "Warning: Truncating oversized username"; +char *msg_big_one = "Peringatan: String melampaui ukuran penyimpanan"; + +/* misc errors */ +char *msg_no_open = "Salah: Tak dapat membuka file"; + +/* Help display... */ +char *h_usage1 = "Penggunaan"; +char *h_usage2 = "[opsi] [file log]"; +char *h_msg[]= { + "-h = cetak pesan bantuan ini" , + "-V = cetak informasi versi" , + "-v = be verbose" , + "-d = cetak informasi debug tambahan" , + "-F type = Log type. type= (clf | ftp | squid | w3c)" , + "-f = kesalahan urutan Fold" , + "-i = abaikan file history" , + "-p = menjaga pernyataan (penambahan)" , + "-b = abaikan pernyataan (penambahan)" , + "-q = mengeluarkan pesan informasional" , + "-Q = mengeluarkan _SEMUA_ pesan" , + "-Y = mengeluarkan grafik negara" , + "-G = mengeluarkan grafik per jam" , + "-H = mengeluarkan statistik per jam" , + "-L = mengeluarkan legenda grafik terkode yang berwarna" , + "-l num = memakai num garis background di atas grafik" , + "-m num = Harga timeout kunjungan (seconds)" , + "-T = cetak informasi pewaktuan" , + "-c file = memakai file konfigurasi 'file'" , + "-n nama = nama host yang dipakai" , + "-o dir = direktori keluaran yang dipakai" , + "-t nama = judul laporan bernama 'nama'" , + "-a nama = sembunyikan browser bernama 'nama'" , + "-r nama = sembunyikan acuan bernama 'nama'" , + "-s nama = sembunyikan situs bernama 'nama'" , + "-u nama = sembunyikan URL bernama 'nama'" , + "-x nama = Pergunakan ekstensi nama file 'nama'" , + "-O nama = Omit page 'nama'" , + "-P nama = Ektensi tipe halaman bernama 'nama'" , + "-I nama = Alias indeks bernama 'nama'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Tampilkan browser teratas sejumlah num" , + "-C num = Tampilkan negara teratas sejumlah num" , + "-R num = Tampilkan acuan teratas sejumlah num" , + "-S num = Tampilkan situs teratas sejumlah num" , + "-U num = Tampilkan URL teratas sejumlah num" , + "-e num = Tampilkan Halaman Masuk teratas sejumlah num" , + "-E num = Tampilkan Halaman Keluar teratas sejumlah num" , + "-g num = Group Domains to 'num' levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D nama = Use DNS Cache file 'nama'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoDB lookups" , + "-J nama = Use GeoDB database 'nama'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W nama = Use GeoIP database 'nama'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Periode Ringkasan"; +char *msg_hhdr_gt = "Dibuat:"; + +/* main index strings */ +char *msg_main_us = "Grafik Akses untuk"; +/* char *msg_main_per= "12 bulan terakhir"; */ +char *msg_main_per= "Ringkasan berdasarkan bulan"; +char *msg_main_sum= "Ringkasan berdasarkan bulan"; +char *msg_main_da = "Rata-rata harian"; +char *msg_main_mt = "Total bulanan"; + +/* month HTML page strings */ +char *msg_hmth_du = "Pengaksesan harian untuk"; +char *msg_hmth_hu = "Pengaksesan per jam untuk"; + +/* table header strings */ +char *msg_h_by = "berdasarkan"; +char *msg_h_avg = "Rata-rata"; +char *msg_h_max = "Maks"; +char *msg_h_total = "Jumlah"; +char *msg_h_totals= "Total"; +char *msg_h_day = "Hari"; +char *msg_h_mth = "Bulan"; +char *msg_h_hour = "Jam"; +char *msg_h_hits = "Hit"; +char *msg_h_pages = "Halaman"; +char *msg_h_visits= "Kunjungan"; +char *msg_h_files = "File"; +char *msg_h_sites = "Situs"; +char *msg_h_xfer = "KByte"; +char *msg_h_hname = "Nama Host"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Browser/User Agent"; +char *msg_h_ref = "Acuan"; +char *msg_h_ctry = "Negara"; +char *msg_h_search= "String pencarian"; +char *msg_h_uname = "Username"; + +/* links along top of page */ +char *msg_hlnk_ds = "Statistik harian"; +char *msg_hlnk_hs = "Statistik per jam"; +char *msg_hlnk_u = "URL"; +char *msg_hlnk_s = "Situs"; +char *msg_hlnk_a = "Browser"; +char *msg_hlnk_c = "Negara"; +char *msg_hlnk_r = "Acuan"; +char *msg_hlnk_en = "Masuk"; +char *msg_hlnk_ex = "Keluar"; +char *msg_hlnk_sr = "Cari"; +char *msg_hlnk_i = "Users"; + +/* monthly total table */ +char *msg_mtot_ms = "Statistik bulanan untuk"; +char *msg_mtot_th = "Jumlah Hit"; +char *msg_mtot_tf = "Jumlah File"; +char *msg_mtot_tx = "Jumlah KByte"; +char *msg_mtot_us = "Jumlah Situs unik"; +char *msg_mtot_ur = "Jumlah Acuan unik"; +char *msg_mtot_ua = "Jumlah Browser unik"; +char *msg_mtot_uu = "Jumlah URL unik"; +char *msg_mtot_ui = "Total Unique Usernames"; +char *msg_mtot_mhd= "Hit per hari"; +char *msg_mtot_mhh= "Hit per jam"; +char *msg_mtot_mfd= "File per hari"; +char *msg_mtot_mpd= "Halaman per hari"; +char *msg_mtot_msd= "Situs per hari"; +char *msg_mtot_mvd= "Kunjungan per hari"; +char *msg_mtot_mkd= "KByte per hari"; +char *msg_mtot_rc = "Hit oleh kode respon"; + +/* daily total table */ +char *msg_dtot_ds = "Statistik harian untuk"; + +/* hourly total table */ +char *msg_htot_hs = "Statistik per jam untuk"; + +/* country pie chart */ +char *msg_ctry_use= "Pengaksesan oleh negara untuk"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = ""; +char *msg_top_of = "urutan teratas dari sejumlah"; +char *msg_top_s = "situs"; +char *msg_top_u = "URL"; +char *msg_top_r = "acuan"; +char *msg_top_a = "browser/user agents"; +char *msg_top_c = "negara"; +char *msg_top_en = "halaman masuk"; +char *msg_top_ex = "halaman keluar"; +char *msg_top_sr = "string pencarian"; +char *msg_top_i = "Total Usernames"; +char *msg_v_sites = "View All Sites"; +char *msg_v_urls = "View All URLs"; +char *msg_v_refs = "View All Referrers"; +char *msg_v_agents= "View All User Agents"; +char *msg_v_search= "View All Search Strings"; +char *msg_v_users = "View All Usernames"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Jan", "Feb", "Mar", + "Apr", "Mei", "Jun", + "Jul", "Agt", "Sep", + "Okt", "Nov", "Des"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Januari", "Februari", "Maret", "April", + "Mei", "Juni", "Juli", "Agustus", + "September","Oktober", "November","Desember"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Kode respon tak terdefinisi", 0 }, + { "Kode 100 - Teruskan", 0 }, + { "Kode 101 - Pertukaran Protokol", 0 }, + { "Kode 200 - OK", 0 }, + { "Kode 201 - Dibuat", 0 }, + { "Kode 202 - Diterima", 0 }, + { "Kode 203 - Informasi Non-Authoritatif", 0 }, + { "Kode 204 - Tak Ada Isi", 0 }, + { "Kode 205 - Reset Isi", 0 }, + { "Kode 206 - Berisi sebagian", 0 }, + { "Kode 300 - Multi Pilihan", 0 }, + { "Kode 301 - Pindah Permanen", 0 }, + { "Kode 302 - Ditemukan", 0 }, + { "Kode 303 - Lihat lainnya", 0 }, + { "Kode 304 - Tak dimodifikasi", 0 }, + { "Kode 305 - Memakai Proxy", 0 }, + { "Kode 307 - Dipindahkan secara Temporer", 0 }, + { "Kode 400 - Permintaan yang Buruk", 0 }, + { "Kode 401 - Tidak terotorisasi", 0 }, + { "Kode 402 - Mensyaratkan Pembayaran", 0 }, + { "Kode 403 - Terlarang", 0 }, + { "Kode 404 - Tidak ditemukan", 0 }, + { "Kode 405 - Metode Tidak Diizinkan", 0 }, + { "Kode 406 - Tak dapat diterima", 0 }, + { "Kode 407 - Otentikasi Proxy Diperlukan", 0 }, + { "Kode 408 - Permintaan Timeout", 0 }, + { "Kode 409 - Konflik", 0 }, + { "Kode 410 - Hilang", 0 }, + { "Kode 411 - Panjang Disyaratkan", 0 }, + { "Kode 412 - Prakondisi Gagal", 0 }, + { "Kode 413 - Entitas Permintaan Terlalu Besar", 0 }, + { "Kode 414 - Permintaan-URI Terlalu Panjang", 0 }, + { "Kode 415 - Tipe Media Tidak Didukung", 0 }, + { "Kode 416 - Kisaran yang Diminta Tidak Memuaskan", 0 }, + { "Kode 417 - Harapan Gagal", 0 }, + { "Kode 500 - Kesalahan Internal Server", 0 }, + { "Kode 501 - Tidak Diimplementasikan", 0 }, + { "Kode 502 - Gateway Jelek", 0 }, + { "Kode 503 - Layanan Tidak Tersedia", 0 }, + { "Kode 504 - Gateway Timeout", 0 }, + { "Kode 505 - Versi HTTP Tidak Didukung", 0 } }; + +char *msg_title = "Statistik pengaksesan untuk"; +char *msg_h_other = "Lainnya"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Tak Dapat Dilacak/Tidak Diketahui",0,0,0 }, +{ IDX_3C('c','o','m'), "Komersial (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Edukasi (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "Pemerintahan dari US (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "Internasional (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "Militer dari US (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Jaringan Komputer (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Non-Profit (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Arpanet Gaya Lama (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Field Nato (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "United Arab Emirates", 0,0,0 }, +{ IDX_2C('a','f'), "Afghanistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua dan Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armenia", 0,0,0 }, +{ IDX_2C('a','n'), "Netherlands Antilles", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarctica", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "American Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Austria", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaijan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia dan Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgia", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brazil", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Island", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Belarus", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Kanada", 0,0,0 }, +{ IDX_2C('c','c'), "Kepulauan Cocos (Keeling)", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Republik Afrika Tengah", 0,0,0 }, +{ IDX_2C('c','g'), "Kongo", 0,0,0 }, +{ IDX_2C('c','h'), "Swiss", 0,0,0 }, +{ IDX_2C('c','i'), "Pantai Gading", 0,0,0 }, +{ IDX_2C('c','k'), "Kepulauan Cook", 0,0,0 }, +{ IDX_2C('c','l'), "Chili", 0,0,0 }, +{ IDX_2C('c','m'), "Kamerun", 0,0,0 }, +{ IDX_2C('c','n'), "Cina", 0,0,0 }, +{ IDX_2C('c','o'), "Kolumbia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Kuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Pulau Christmas", 0,0,0 }, +{ IDX_2C('c','y'), "Siprus", 0,0,0 }, +{ IDX_2C('c','z'), "Republik Ceko", 0,0,0 }, +{ IDX_2C('d','e'), "Jerman", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Denmark", 0,0,0 }, +{ IDX_2C('d','m'), "Dominika", 0,0,0 }, +{ IDX_2C('d','o'), "Republik Dominika", 0,0,0 }, +{ IDX_2C('d','z'), "Algeria", 0,0,0 }, +{ IDX_2C('e','c'), "Equador", 0,0,0 }, +{ IDX_2C('e','e'), "Estonia", 0,0,0 }, +{ IDX_2C('e','g'), "Mesir", 0,0,0 }, +{ IDX_2C('e','h'), "Sahara Barat", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Spanyol", 0,0,0 }, +{ IDX_2C('e','t'), "Ethiopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finlandia", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Kepulauan Falkland (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronesia", 0,0,0 }, +{ IDX_2C('f','o'), "Kepulauan Faroe", 0,0,0 }, +{ IDX_2C('f','r'), "Perancis", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Great Britain (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgia", 0,0,0 }, +{ IDX_2C('g','f'), "French Guiana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Greenland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Equatorial Guinea", 0,0,0 }, +{ IDX_2C('g','r'), "Yunani", 0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia dan S. Sandwich Isls.", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard dan McDonald Islands", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Kroasia", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Hungaria", 0,0,0 }, +{ IDX_2C('i','d'), "Indonesia", 0,0,0 }, +{ IDX_2C('i','e'), "Irlandia", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "India", 0,0,0 }, +{ IDX_2C('i','o'), "British Indian Ocean Territory", 0,0,0 }, +{ IDX_2C('i','q'), "Iraq", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Islandia", 0,0,0 }, +{ IDX_2C('i','t'), "Italia", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaika", 0,0,0 }, +{ IDX_2C('j','o'), "Yordania", 0,0,0 }, +{ IDX_2C('j','p'), "Jepang", 0,0,0 }, +{ IDX_2C('k','e'), "Kenya", 0,0,0 }, +{ IDX_2C('k','g'), "Kyrgyzstan", 0,0,0 }, +{ IDX_2C('k','h'), "Kamboja", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Komoro", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts dan Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Korea (Utara)", 0,0,0 }, +{ IDX_2C('k','r'), "Korea (Selatan)", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Kepulauan Cayman", 0,0,0 }, +{ IDX_2C('k','z'), "Kazakhstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Libanon", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lithuania", 0,0,0 }, +{ IDX_2C('l','u'), "Luxembourg", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia", 0,0,0 }, +{ IDX_2C('l','y'), "Libya", 0,0,0 }, +{ IDX_2C('m','a'), "Maroko", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagaskar", 0,0,0 }, +{ IDX_2C('m','h'), "Kepulauan Marshall", 0,0,0 }, +{ IDX_2C('m','k'), "Makedonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolia", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Kepulauan Northern Mariana", 0,0,0 }, +{ IDX_2C('m','q'), "Martinique", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldives", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexico", 0,0,0 }, +{ IDX_2C('m','y'), "Malaysia", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambique", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "New Caledonia", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Kepulauan Norfolk", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nikaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Netherlands", 0,0,0 }, +{ IDX_2C('n','o'), "Norwegia", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "New Zealand", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "French Polynesia", 0,0,0 }, +{ IDX_2C('p','g'), "Papua Nugini", 0,0,0 }, +{ IDX_2C('p','h'), "Filipina", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Polandia", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre dan Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Rumania", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Federasi Rusia", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saudi Arabia", 0,0,0 }, +{ IDX_2C('s','b'), "Kepulauan Solomon", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Swedia", 0,0,0 }, +{ IDX_2C('s','g'), "Singapura", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenia", 0,0,0 }, +{ IDX_2C('s','j'), "Kepulauan Svalbard dan Jan Mayen", 0,0,0 }, +{ IDX_2C('s','k'), "Republik Slovakia", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Suriname", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome dan Principe", 0,0,0 }, +{ IDX_2C('s','u'), "Soviet Union", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Kepulauan Turks dan Caicos", 0,0,0 }, +{ IDX_2C('t','d'), "Chad", 0,0,0 }, +{ IDX_2C('t','f'), "French Southern Territories", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Thailand", 0,0,0 }, +{ IDX_2C('t','j'), "Tajikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisia", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Timor Timur", 0,0,0 }, +{ IDX_2C('t','r'), "Turki", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad dan Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraine", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "United Kingdom", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying Islands", 0,0,0 }, +{ IDX_2C('u','s'), "United States", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatican City State (Holy See)", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent dan the Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Virgin Islands (British)", 0,0,0 }, +{ IDX_2C('v','i'), "Virgin Islands (U.S.)", 0,0,0 }, +{ IDX_2C('v','n'), "Vietnam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis and Futuna Islands", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Yugoslavia", 0,0,0 }, +{ IDX_2C('z','a'), "Africa Selatan", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.italian b/lang/webalizer_lang.italian new file mode 100644 index 0000000..370bbcb --- /dev/null +++ b/lang/webalizer_lang.italian @@ -0,0 +1,635 @@ +/* + webalizer_lang.italian + + Webalizer V2.0x Language Support file for Italian. + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 12-Jun-1998 Translation Level 1.1 by Alberto Benati (a_benati@4net.com) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 10-Jul-1999 Update for 1.3 by Massimiliano Masserelli (masserelli@interim.it) + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 25-Sep-2000 Total Rewrite by Mattia Coatti (xkaos@galactica.it) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Italian"; +char *langcode = "it"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "record"; +char *msg_addresses="indirizzi"; +char *msg_ignored = "ignorato/i"; +char *msg_bad = "errato/i"; +char *msg_in = "in"; +char *msg_seconds = "secondi"; + +/* progress and setup error messages */ +char *msg_log_err = "Errore: Impossibile elaborare il file di log"; +char *msg_log_use = "Utilizzo il file di log"; +char *msg_dir_err = "Errore: Impossibile accedere alla directory"; +char *msg_dir_use = "Creo i file di output nella directory"; +char *msg_cur_dir = "Directory attuale"; +char *msg_hostname= "Il nome dell'host per il riepilogo e'"; +char *msg_ign_hist= "Ignoro il precedente file di history"; +char *msg_no_hist = "Impossibile trovare il file di history"; +char *msg_get_hist= "Elaboro il file di history"; +char *msg_put_hist= "Salvo le statistiche degli accessi nel file di history"; +char *msg_hist_err= "Errore: Impossibile modificare il file di history"; +char *msg_bad_hist= "Errore: Tralascio il record non valido nel file di history"; +char *msg_bad_conf= "Errore: Impossibile accedere al file di configurazione"; +char *msg_bad_key = "Attenzione: Keyword non valida"; +char *msg_bad_date= "Errore: Tralascio il record (data errata)"; +char *msg_ign_nscp= "Tralascio il record dell'header di Netscape"; +char *msg_bad_rec = "Tralascio il record errato"; +char *msg_no_vrec = "Nessun record valido rilevato"; +char *msg_gen_rpt = "Creo l'analisi statistica per"; +char *msg_gen_sum = "Creo il riassunto statistico"; +char *msg_get_data= "Elaboro i dati sull'esecuzione precedente"; +char *msg_put_data= "Salvo i dati sull'esecuzione attuale"; +char *msg_no_data = "Impossibile trovare i dati sull'esecuzione precedente"; +char *msg_bad_data= "Errore: Impossibile ripristinare i dati dell'esecuzione precedente"; +char *msg_data_err= "Errore: Impossibile salvare i dati dell'esecuzione attuale"; +char *msg_dup_data= "Attenzione: Possibile individuazione di dati duplicati"; + +/* DNS Stuff */ +char *msg_dns_nocf= "Nessun file di cache specificato"; +char *msg_dns_nodb= "Errore: Impossibile accedere al file contenente la cache DNS"; +char *msg_dns_nolk= "Errore: Impossibile effettuare il locking del file contenente la cache DNS"; +char *msg_dns_usec= "Utilizzo il file di cache DNS"; +char *msg_dns_rslv= "Risoluzione DNS"; +char *msg_dns_none= "Nessun dato da elaborare"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Impossibile allocare abbastanza memoria, classifica degli host disabilitata"; +char *msg_nomem_tr= "Impossibile allocare abbastanza memoria, classifica dei referrer disabilitata"; +char *msg_nomem_tu= "Impossibile allocare abbastanza memoria, classifica degli URL disabilitata"; +char *msg_nomem_tc= "Impossibile allocare abbastanza memoria, classifica dei paesi disabilitata"; +char *msg_nomem_ta= "Impossibile allocare abbastanza memoria, classifica dei browser disabilitata"; +char *msg_nomem_tsr="Impossibile allocare abbastanza memoria, classifica dei termini di ricerca disabilitata"; +char *msg_nomem_ti= "Impossibile allocare abbastanza memoria, classifica degli username disabilitata"; +char *msg_nomem_dh= "Errore nell'aggiungere il nome dell'host (giornaliero), tralasciato"; +char *msg_nomem_mh= "Errore nell'aggiungere il nome dell'host (mensile), tralasciato"; +char *msg_nomem_u = "Errore nell'aggiungere l'URL, tralasciato"; +char *msg_nomem_a = "Errore nell'aggiungere il browser, tralasciato"; +char *msg_nomem_r = "Errore nell'aggiungere il referrer, tralasciato"; +char *msg_nomem_sc= "Errore nell'aggiungere la stringa di ricerca, tralasciato"; +char *msg_nomem_i = "Errore nell'aggiungere l'username, tralasciato"; + +/* log record errors */ +char *msg_big_rec = "Attenzione: Tralascio il record di dimensione eccessiva"; +char *msg_big_host= "Attenzione: Troncato il record dell'hostname in quanto di dimensione eccessiva"; +char *msg_big_date= "Attenzione: Troncata il record della data in quanto di dimensione eccessiva"; +char *msg_big_req = "Attenzione: Troncato il record della richiesta in quanto di dimensione eccessiva"; +char *msg_big_ref = "Attenzione: Troncato il record del referrer in quanto di dimensione eccessiva"; +char *msg_big_user= "Attenzione: Troncato il record dell'username in quanto di dimensione eccessiva"; +char *msg_big_one = "Attenzione: La stringa e' di dimensione eccessiva"; + +/* misc errors */ +char *msg_no_open = "Errore: Impossibile accedere al file"; + +/* Help display... */ +char *h_usage1 = "Sintassi"; +char *h_usage2 = "[parametri] [file di log]"; +char *h_msg[]= { + "-h = visualizza questa schermata" , + "-V = mostra il numero di versione" , + "-v = be verbose" , + "-d = visualizza informazioni di debug addizionali", + "-F tipo = specifica il tipo di log (clf | ftp | squid | w3c)", + "-f = elenca sequenzialmente gli errori" , + "-i = tralascia il file di history" , + "-p = conserva le statistiche (modalita' incrementale)", + "-b = ignore state (incremental)" , + "-q = non visualizza i messaggi informativi", + "-Q = non visualizza alcun messaggio" , + "-Y = non visualizza il grafico relativo ai paesi", + "-G = non visualizza il grafico orario" , + "-H = non visualizza le statistiche orarie", + "-L = non visualizza le legende policromatiche nei grafici" , + "-l num = utilizza num linee nello sfondo dei grafici", + "-m num = valore di timeout per gli accessi (seconds)", + "-T = visualizza informazioni sul tempo di esecuzione", + "-c file = utilizza 'file' per le impostazioni di configurazione", + "-n nome = nome dell'host da utilizzare" , + "-o dir = directory in cui collocare i file di output", + "-t nome = nome da utilizzare per il titolo del rapporto statistico", + "-a nome = ignora il browser specificato" , + "-r nome = ignora il referrer specificato" , + "-s nome = ignora l'host specificato" , + "-u nome = ignora l'URL specificato" , + "-x ext = utilizza 'ext' come estensione per i file", + "-O nome = Omit page 'nome'" , + "-P ext = utilizza 'ext' come estensione per le pagine", + "-I nome = utilizza 'nome' come file di indice" , + "-K num = 'num' months in summary table" , + "-k num = 'num' months in summary graph" , + "-A num = visualizza 'num' browser nella classifica", + "-C num = visualizza 'num' paesi nella classifica", + "-R num = visualizza 'num' referrer nella classifica", + "-S num = visualizza 'num' nomi di host nella classifica", + "-U num = visualizza 'num' URL nella classifica", + "-e num = visualizza 'num' pagine in ingresso nella classifica", + "-E num = visualizza 'num' pagine in uscita nella classifica", + "-g num = raggruppa i domini fino a 'num' livelli", + "-X = non visualizza i singoli hostname" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D nome = utilizza 'nome' come file di cache DNS", + "-N num = numero massimo di thread per la risoluzione DNS (0=non abilitata)", + "-j = Enable native GeoDB lookups" , + "-J nome = Use GeoDB database 'nome'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W nome = Use GeoIP database 'nome'" , +#endif + NULL}; + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Riepilogo per il periodo"; +char *msg_hhdr_gt = "Generato"; + +/* main index strings */ +char *msg_main_us = "Riepilogo statistico per"; +/* char *msg_main_per= "Ultimi 12 mesi"; */ +char *msg_main_per= "Riepilogo mensile"; +char *msg_main_sum= "Riepilogo mensile"; +char *msg_main_da = "Media giornaliera"; +char *msg_main_mt = "Totale mensile"; + +/* month HTML page strings */ +char *msg_hmth_du = "Contatti giornalieri per"; +char *msg_hmth_hu = "Contatti orari per"; + +/* table header strings */ +char *msg_h_by = "Per"; +char *msg_h_avg = "Media"; +char *msg_h_max = "Max"; +char *msg_h_total = "Totale"; +char *msg_h_totals= "Totali"; +char *msg_h_day = "Giorno"; +char *msg_h_mth = "Mese"; +char *msg_h_hour = "Ora"; +char *msg_h_hits = "Contatti"; +char *msg_h_pages = "Pagine"; +char *msg_h_visits= "Visite"; +char *msg_h_files = "File"; +char *msg_h_sites = "Siti"; +char *msg_h_xfer = "KBytes"; +char *msg_h_hname = "Nomi di Host"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Browser"; +char *msg_h_ref = "Referrer"; +char *msg_h_ctry = "Paese"; +char *msg_h_search= "Termini di Ricerca"; +char *msg_h_uname = "Username"; + +/* links along top of page */ +char *msg_hlnk_ds = "Statistiche Giornaliere"; +char *msg_hlnk_hs = "Statistiche Orarie"; +char *msg_hlnk_u = "URL"; +char *msg_hlnk_s = "Nomi di Host"; +char *msg_hlnk_a = "Browser"; +char *msg_hlnk_c = "Paesi"; +char *msg_hlnk_r = "Referrer"; +char *msg_hlnk_en = "Ingressi"; +char *msg_hlnk_ex = "Uscite"; +char *msg_hlnk_sr = "Ricerca"; +char *msg_hlnk_i = "Utenti"; + +/* monthly total table */ +char *msg_mtot_ms = "Statistiche Mensili per"; +char *msg_mtot_th = "Contatti"; +char *msg_mtot_tf = "File"; +char *msg_mtot_tx = "KBytes"; +char *msg_mtot_us = "Nomi di Host"; +char *msg_mtot_ur = "Referrer"; +char *msg_mtot_ua = "Browser"; +char *msg_mtot_uu = "URL"; +char *msg_mtot_ui = "Username"; +char *msg_mtot_mhd= "Contatti Giornalieri"; +char *msg_mtot_mhh= "Contatti Orari"; +char *msg_mtot_mfd= "File Giornalieri"; +char *msg_mtot_mpd= "Pagine Giornaliere"; +char *msg_mtot_msd= "Host Giornaliere"; +char *msg_mtot_mvd= "Visite Giornaliere"; +char *msg_mtot_mkd= "KBytes Giornalieri"; +char *msg_mtot_rc = "Contatti per Codice di Risposta"; + +/* daily total table */ +char *msg_dtot_ds = "Statistiche Giornaliere per"; + +/* hourly total table */ +char *msg_htot_hs = "Statistiche Orarie per"; + +/* country pie chart */ +char *msg_ctry_use= "Riepilogo dei Paesi per"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Top"; +char *msg_top_of = "di"; +char *msg_top_s = "Nomi di Host Totali"; +char *msg_top_u = "URL Totali"; +char *msg_top_r = "Referrer Totali"; +char *msg_top_a = "Browser Totali"; +char *msg_top_c = "Paesi Totali"; +char *msg_top_en = "Pagine in Ingresso Totali"; +char *msg_top_ex = "Pagine in Uscita Totali"; +char *msg_top_sr = "Total Search Strings"; +char *msg_top_i = "Total Usernames"; +char *msg_v_sites = "Visualizza ogni Nome di Host"; +char *msg_v_urls = "Visualizza ogni URL"; +char *msg_v_refs = "Visualizza ogni Referrer"; +char *msg_v_agents= "Visualizza ogni Browser"; +char *msg_v_search= "Visualizza ogni Termine di Ricerca"; +char *msg_v_users = "Visualizza ogni Username"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Gen", "Feb", "Mar", + "Apr", "Mag", "Giu", + "Lug", "Ago", "Set", + "Ott", "Nov", "Dic"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Gennaio", "Febbraio", "Marzo", "Aprile", + "Maggio", "Giugno", "Luglio", "Agosto", + "Settembre","Ottobre", "Novembre","Dicembre"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Undefined response code", 0 }, + { "Code 100 - Continua", 0 }, + { "Code 101 - Scambio di Protocollo", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Creato", 0 }, + { "Code 202 - Accettato", 0 }, + { "Code 203 - Informazione non Autoritativa", 0 }, + { "Code 204 - Nessun Contenuto", 0 }, + { "Code 205 - Contenuto Reimpostato", 0 }, + { "Code 206 - Contenuto Parziale", 0 }, + { "Code 300 - Scelta Multipla", 0 }, + { "Code 301 - Spostato Permanentemente", 0 }, + { "Code 302 - Trovato", 0 }, + { "Code 303 - Vedere Altro", 0 }, + { "Code 304 - Non Modificato", 0 }, + { "Code 305 - Utilizzare Proxy", 0 }, + { "Code 307 - Spostato Temporaneamente", 0 }, + { "Code 400 - Richiesta Errata", 0 }, + { "Code 401 - Non Autorizzato", 0 }, + { "Code 402 - Richiesto Pagamento", 0 }, + { "Code 403 - Proibito", 0 }, + { "Code 404 - Non Trovato", 0 }, + { "Code 405 - Metodo Non Permesso", 0 }, + { "Code 406 - Non Accettabile", 0 }, + { "Code 407 - Il Proxy Richiede Autenticazione",0 }, + { "Code 408 - Richiesta Scaduta", 0 }, + { "Code 409 - Conflitto", 0 }, + { "Code 410 - Abbandonato", 0 }, + { "Code 411 - Lunghezza Richiesta", 0 }, + { "Code 412 - Prerequisito Fallito", 0 }, + { "Code 413 - Entita' Richiesta Troppo Estesa", 0 }, + { "Code 414 - Indirizzo Richiesto Troppo Lungo",0 }, + { "Code 415 - Media Non Supportato", 0 }, + { "Code 416 - Intervallo di Richiesta Non Soddisfabile", 0 }, + { "Code 417 - Aspettativa non Soddisfatta", 0 }, + { "Code 500 - Errore Interno del Server", 0 }, + { "Code 501 - Non Implementato", 0 }, + { "Code 502 - Gateway Errato", 0 }, + { "Code 503 - Servizio non Disponibile", 0 }, + { "Code 504 - Timeout nell'Accesso al Gateway", 0 }, + { "Code 505 - Versione HTTP Non Supportata", 0 } }; + +char *msg_title = "Statistiche per"; +char *msg_h_other = "Altri"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Non Risolto/Sconosciuto", 0,0,0 }, +{ IDX_3C('c','o','m'), "Commerciali (.com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Universita' (.edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "Enti Governativo (.gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "Enti Internazionali (.int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "Enti Militari (.mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Reti (.net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Organizzazioni Generiche (.org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Arpanet (.arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Nato (.nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "Emirati Arabi", 0,0,0 }, +{ IDX_2C('a','f'), "Afghanistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua e Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armenia", 0,0,0 }, +{ IDX_2C('a','n'), "Antille Olandesi", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antartica", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "Samoa Americana", 0,0,0 }, +{ IDX_2C('a','t'), "Austria", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaijan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia e Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgio", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Sultanato del Brunei", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brasile", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Isole Bouvet", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Belarus", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Canada", 0,0,0 }, +{ IDX_2C('c','c'), "Isole Cocos", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Africa Centrale", 0,0,0 }, +{ IDX_2C('c','g'), "Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Svizzera", 0,0,0 }, +{ IDX_2C('c','i'), "Costa D'Avorio", 0,0,0 }, +{ IDX_2C('c','k'), "Isole Cook", 0,0,0 }, +{ IDX_2C('c','l'), "Cile", 0,0,0 }, +{ IDX_2C('c','m'), "Camerun", 0,0,0 }, +{ IDX_2C('c','n'), "Cina", 0,0,0 }, +{ IDX_2C('c','o'), "Colombia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Capo Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Isola di Natale", 0,0,0 }, +{ IDX_2C('c','y'), "Cipro", 0,0,0 }, +{ IDX_2C('c','z'), "Repubblica Ceca", 0,0,0 }, +{ IDX_2C('d','e'), "Germania", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Danimarca", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Repubblica Dominicana", 0,0,0 }, +{ IDX_2C('d','z'), "Algeria", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador", 0,0,0 }, +{ IDX_2C('e','e'), "Estonia", 0,0,0 }, +{ IDX_2C('e','g'), "Egitto", 0,0,0 }, +{ IDX_2C('e','h'), "Sahara Occidentale", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Spagna", 0,0,0 }, +{ IDX_2C('e','t'), "Etiopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finlandia", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Isole Falkland (Malvine)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronesia", 0,0,0 }, +{ IDX_2C('f','o'), "Isole Faroe", 0,0,0 }, +{ IDX_2C('f','r'), "Francia", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Gran Bretagna", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgia", 0,0,0 }, +{ IDX_2C('g','f'), "Guiana Francese", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibilterra", 0,0,0 }, +{ IDX_2C('g','l'), "Groenlandia", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadalupa", 0,0,0 }, +{ IDX_2C('g','q'), "Guinea Equatoriale", 0,0,0 }, +{ IDX_2C('g','r'), "Grecia", 0,0,0 }, +{ IDX_2C('g','s'), "Isole di S. Georgia e S. Sandwich",0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Isole Heard e McDonald", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Croazia", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Ungaria", 0,0,0 }, +{ IDX_2C('i','d'), "Indonesia", 0,0,0 }, +{ IDX_2C('i','e'), "Irlanda", 0,0,0 }, +{ IDX_2C('i','l'), "Israele", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "India", 0,0,0 }, +{ IDX_2C('i','o'), "Territori Britannici nell'Oceano Indiano",0,0,0 }, +{ IDX_2C('i','q'), "Iraq", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Islanda", 0,0,0 }, +{ IDX_2C('i','t'), "Italia", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Giordania", 0,0,0 }, +{ IDX_2C('j','p'), "Giappone", 0,0,0 }, +{ IDX_2C('k','e'), "Kenya", 0,0,0 }, +{ IDX_2C('k','g'), "Kyrgyzstan", 0,0,0 }, +{ IDX_2C('k','h'), "Cambodia", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts e Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Corea (Nord)", 0,0,0 }, +{ IDX_2C('k','r'), "Corea (Sud)", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Isole Cayman", 0,0,0 }, +{ IDX_2C('k','z'), "Kazakhstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Libano", 0,0,0 }, +{ IDX_2C('l','c'), "Santa Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lituania", 0,0,0 }, +{ IDX_2C('l','u'), "Lussemburgo", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia", 0,0,0 }, +{ IDX_2C('l','y'), "Libia", 0,0,0 }, +{ IDX_2C('m','a'), "Marocco", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Isole Marshall", 0,0,0 }, +{ IDX_2C('m','k'), "Macedonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolia", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Isole Mariana del Nord", 0,0,0 }, +{ IDX_2C('m','q'), "Martinica", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldive", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Messico", 0,0,0 }, +{ IDX_2C('m','y'), "Malaysia", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambico", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "Nuova Caledonia", 0,0,0 }, +{ IDX_2C('n','e'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','f'), "Isole Norfolk", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Olanda", 0,0,0 }, +{ IDX_2C('n','o'), "Norvegia", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "Nuova Zealanda", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "Polinesia Francese", 0,0,0 }, +{ IDX_2C('p','g'), "Papua e Nuova Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Filippine", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Polonia", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre and Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Porto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portogallo", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Romania", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Federazione Russa", 0,0,0 }, +{ IDX_2C('r','w'), "Ruanda", 0,0,0 }, +{ IDX_2C('s','a'), "Arabia Saudita", 0,0,0 }, +{ IDX_2C('s','b'), "Isole Solomon", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Svezia", 0,0,0 }, +{ IDX_2C('s','g'), "Singapore", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenia", 0,0,0 }, +{ IDX_2C('s','j'), "Isole Svalbard e Jan Mayen", 0,0,0 }, +{ IDX_2C('s','k'), "Repubblica Slovacca", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Suriname", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome e Principe", 0,0,0 }, +{ IDX_2C('s','u'), "Ex USSR", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Isole Turks e Caicos", 0,0,0 }, +{ IDX_2C('t','d'), "Chad", 0,0,0 }, +{ IDX_2C('t','f'), "Territori Francesi Meridionali", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Thailandia", 0,0,0 }, +{ IDX_2C('t','j'), "Tajikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisia", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Portuguese Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turchia", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad e Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ucraina", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "Regno Unito", 0,0,0 }, +{ IDX_2C('u','m'), "Isole US Minori", 0,0,0 }, +{ IDX_2C('u','s'), "Stati Uniti", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Citta' del Vaticano", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent e Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Isole Vergini (Britanniche)", 0,0,0 }, +{ IDX_2C('v','i'), "Isole Vergini (Statunitensi)", 0,0,0 }, +{ IDX_2C('v','n'), "Vietnam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Isole Wallis e Futuna", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Yugoslavia", 0,0,0 }, +{ IDX_2C('z','a'), "Sud Africa", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0 , NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.japanese b/lang/webalizer_lang.japanese new file mode 100644 index 0000000..9ac229a --- /dev/null +++ b/lang/webalizer_lang.japanese @@ -0,0 +1,629 @@ +/* + webalizer_lang.japanese + + Webalizer V2.0x Language Support file for Japanese. + 09-Jun-2001 by Yasuhiko Takahashi + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Japanese"; +char *langcode = "ja"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "records"; +char *msg_addresses="addresses"; +char *msg_ignored = "ignored"; +char *msg_bad = "bad"; +char *msg_in = "in"; +char *msg_seconds = "seconds"; + +/* progress and setup error messages */ +char *msg_log_err = "Error: Can't open log file"; +char *msg_log_use = "Using logfile"; +char *msg_dir_err = "Error: Can't change directory to"; +char *msg_dir_use = "Creating output in"; +char *msg_cur_dir = "current directory"; +char *msg_hostname= "Hostname for reports is"; +char *msg_ign_hist= "Ignoring previous history..."; +char *msg_no_hist = "History file not found..."; +char *msg_get_hist= "Reading history file..."; +char *msg_put_hist= "Saving history information..."; +char *msg_hist_err= "Error: Unable to write history file"; +char *msg_bad_hist= "Error: Ignoring invalid history record"; +char *msg_bad_conf= "Error: Unable to open configuration file"; +char *msg_bad_key = "Warning: Invalid keyword"; +char *msg_bad_date= "Error: Skipping record (bad date)"; +char *msg_ign_nscp= "Skipping Netscape header record"; +char *msg_bad_rec = "Skipping bad record"; +char *msg_no_vrec = "No valid records found!"; +char *msg_gen_rpt = "Generating report for"; +char *msg_gen_sum = "Generating summary report"; +char *msg_get_data= "Reading previous run data.."; +char *msg_put_data= "Saving current run data..."; +char *msg_no_data = "Previous run data not found..."; +char *msg_bad_data= "Error: Unable to restore run data"; +char *msg_data_err= "Error: Unable to save current run data"; +char *msg_dup_data= "Warning: Possible duplicate data found"; + +/* DNS Stuff */ +char *msg_dns_nocf= "No cache file specified, aborting..."; +char *msg_dns_nodb= "Error: Unable to open DNS cache file"; +char *msg_dns_nolk= "Error: Unable to lock DNS cache file"; +char *msg_dns_usec= "Using DNS cache file"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "None to process"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Can't allocate enough memory, Top Sites disabled!"; +char *msg_nomem_tr= "Can't allocate enough memory, Top Referrers disabled!"; +char *msg_nomem_tu= "Can't allocate enough memory, Top URLs disabled!"; +char *msg_nomem_tc= "Can't allocate enough memory, Top Countries disabled!"; +char *msg_nomem_ta= "Can't allocate enough memory, Top User Agents disabled!"; +char *msg_nomem_tsr="Can't allocate enough memory, Top Search Strings disabled!"; +char *msg_nomem_ti= "Can't allocate enough memory, Top Usernames disabled!"; +char *msg_nomem_dh= "Error adding host node (daily), skipping"; +char *msg_nomem_mh= "Error adding host node (monthly), skipping"; +char *msg_nomem_u = "Error adding URL node, skipping"; +char *msg_nomem_a = "Error adding User Agent node, skipping"; +char *msg_nomem_r = "Error adding Referrer node, skipping"; +char *msg_nomem_sc= "Error adding Search String Node, skipping"; +char *msg_nomem_i = "Error adding Username node, skipping"; + +/* log record errors */ +char *msg_big_rec = "Error: Skipping oversized log record"; +char *msg_big_host= "Warning: Truncating oversized hostname"; +char *msg_big_date= "Warning: Truncating oversized date field"; +char *msg_big_req = "Warning: Truncating oversized request field"; +char *msg_big_ref = "Warning: Truncating oversized referrer field"; +char *msg_big_user= "Warning: Truncating oversized username"; +char *msg_big_one = "Warning: String exceeds storage size"; + +/* misc errors */ +char *msg_no_open = "Error: Unable to open file"; + +/* Help display... */ +char *h_usage1 = "Usage"; +char *h_usage2 = "[options] [log file]"; +char *h_msg[]= { + "-h = print this help message" , + "-V = print version information" , + "-v = be verbose" , + "-d = print additional debug info" , + "-F type = Log type. type= (clf | ftp | squid | w3c)", + "-f = Fold sequence errors" , + "-i = ignore history file" , + "-p = preserve state (incremental)" , + "-b = ignore state (incremental)" , + "-q = supress informational messages" , + "-Q = supress _ALL_ messages" , + "-Y = supress country graph" , + "-G = supress hourly graph" , + "-H = supress hourly stats" , + "-L = supress color coded graph legends" , + "-l num = use num background lines on graph" , + "-m num = Visit timout value (seconds)" , + "-T = print timing information" , + "-c file = use configuration file 'file'" , + "-n name = hostname to use" , + "-o dir = output directory to use" , + "-t name = report title 'name'" , + "-a name = hide user agent 'name'" , + "-r name = hide referrer 'name'" , + "-s name = hide site 'name'" , + "-u name = hide URL 'name'" , + "-x name = Use filename extension 'name'" , + "-O name = Omit page 'name'" , + "-P name = Page type extension 'name'" , + "-I name = Index alias 'name'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Display num top agents" , + "-C num = Display num top countries" , + "-R num = Display num top referrers" , + "-S num = Display num top sites" , + "-U num = Display num top URLs" , + "-e num = Display num top Entry Pages" , + "-E num = Display num top Exit Pages" , + "-g num = Group Domains to 'num' levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Use DNS Cache file 'name'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoIP lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +/* char *msg_hhdr_sp = "Summary Period";*/ +char *msg_hhdr_sp = "Åý·×´ü´Ö"; +char *msg_hhdr_gt = "ºîÀ®Æü»þ"; + +/* main index strings */ +char *msg_main_us = "Usage summary for"; +/* char *msg_main_per= "²áµî12¥ö·î"; */ +char *msg_main_per= "·î¤ÎÅý·×"; +char *msg_main_sum= "·î¤ÎÅý·×"; +char *msg_main_da = "°ìÆü¤¢¤¿¤ê¤ÎÊ¿¶Ñ"; +char *msg_main_mt = "·î¹ç·×"; + +/* month HTML page strings */ +char *msg_hmth_du = "Daily usage for"; +char *msg_hmth_hu = "Hourly usage for"; + +/* table header strings */ +char *msg_h_by = "By"; +char *msg_h_avg = "Ê¿¶Ñ"; +char *msg_h_max = "ºÇÂç"; +char *msg_h_total = "¹ç·×"; +char *msg_h_totals= "Áí¹ç·×"; +char *msg_h_day = "Æü"; +char *msg_h_mth = "·î"; +char *msg_h_hour = "»þ"; +char *msg_h_hits = "Hits"; +char *msg_h_pages = "Pages"; +char *msg_h_visits= "Visits"; +char *msg_h_files = "Files"; +char *msg_h_sites = "Sites"; +char *msg_h_xfer = "KBytes"; +char *msg_h_hname = "¥Û¥¹¥È̾"; +char *msg_h_url = "URL"; +char *msg_h_agent = "¥æ¡¼¥¶¥¨¡¼¥¸¥§¥ó¥È"; +char *msg_h_ref = "¥ê¥Õ¥¡¥é¡¼"; +char *msg_h_ctry = "¹ñ"; +char *msg_h_search= "¸¡º÷ʸ»úÎó"; +char *msg_h_uname = "¥æ¡¼¥¶Ì¾"; + +/* links along top of page */ +char *msg_hlnk_ds = "Æü¤´¤È¤ÎÅý·×"; +char *msg_hlnk_hs = "»þ´Ö¤´¤È¤ÎÅý·×"; +char *msg_hlnk_u = "URL"; +char *msg_hlnk_s = "¥µ¥¤¥È"; +char *msg_hlnk_a = "¥¨¡¼¥¸¥§¥ó¥È"; +char *msg_hlnk_c = "¹ñ"; +char *msg_hlnk_r = "¥ê¥Õ¥¡¥é¡¼"; +char *msg_hlnk_en = "¥¨¥ó¥È¥ê¡¼"; +char *msg_hlnk_ex = "Exit"; +char *msg_hlnk_sr = "¸¡º÷ʸ»úÎó"; +char *msg_hlnk_i = "¥æ¡¼¥¶¿ô"; + +/* monthly total table */ +char *msg_mtot_ms = "·î¤ÎÅý·×"; +char *msg_mtot_th = "Á´¥Ò¥Ã¥È¿ô"; +char *msg_mtot_tf = "Á´¥Õ¥¡¥¤¥ë¿ô"; +char *msg_mtot_tx = "Á´ KBytes¿ô"; +char *msg_mtot_us = "¸ÄÊÌ¥µ¥¤¥È¿ô"; +char *msg_mtot_ur = "¸ÄÊÌ¥ê¥Õ¥¡¥é¡¼¿ô"; +char *msg_mtot_ua = "¸ÄÊ̥桼¥¶¥¨¡¼¥¸¥§¥ó¥È¿ô"; +char *msg_mtot_uu = "¸ÄÊÌURL¿ô"; +char *msg_mtot_ui = "¸ÄÊ̥桼¥¶¿ô"; +char *msg_mtot_mhd= "°ìÆü¤¢¤¿¤ê¤Î¥Ò¥Ã¥È¿ô"; +char *msg_mtot_mhh= "°ì»þ´Ö¤¢¤¿¤ê¤Î¥Ò¥Ã¥È¿ô"; +char *msg_mtot_mfd= "°ìÆü¤¢¤¿¤ê¤Î¥Õ¥¡¥¤¥ë¿ô"; +char *msg_mtot_mpd= "°ìÆü¤¢¤¿¤ê¤Î¥Ú¡¼¥¸¿ô"; +char *msg_mtot_msd= "Sites per Day"; +char *msg_mtot_mvd= "°ìÆü¤¢¤¿¤ê¤ÎˬÌä¼Ô¿ô"; +char *msg_mtot_mkd= "°ìÆü¤¢¤¿¤ê¤ÎKBytes¿ô"; +char *msg_mtot_rc = "¥ì¥¹¥Ý¥ó¥¹¥³¡¼¥É¤´¤È¤Î¥Ò¥Ã¥È¿ô"; + +/* daily total table */ +char *msg_dtot_ds = "Æü¤´¤È¤ÎÅý·×"; + +/* hourly total table */ +char *msg_htot_hs = "»þ´Ö¤´¤È¤ÎÅý·×"; + +/* country pie chart */ +char *msg_ctry_use= "Usage by Country for"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "¥È¥Ã¥×"; +char *msg_top_of = "of"; +char *msg_top_s = "¥µ¥¤¥È"; +char *msg_top_u = "Á´URL"; +char *msg_top_r = "¥ê¥Õ¥¡¥é¡¼"; +char *msg_top_a = "¥æ¡¼¥¶¥¨¡¼¥¸¥§¥ó¥È"; +char *msg_top_c = "¹ñ"; +char *msg_top_en = "Total Entry Pages"; +char *msg_top_ex = "Total Exit Pages"; +char *msg_top_sr = "Total Search Strings"; +char *msg_top_i = "Total Usernames"; +char *msg_v_sites = "View All Sites"; +char *msg_v_urls = "View All URLs"; +char *msg_v_refs = "View All Referrers"; +char *msg_v_agents= "View All User Agents"; +char *msg_v_search= "View All Search Strings"; +char *msg_v_users = "View All Usernames"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Jan", "Feb", "Mar", + "Apr", "May", "Jun", + "Jul", "Aug", "Sep", + "Oct", "Nov", "Dec"}; + +/* long month names - can be any length */ +char *l_month[12]={ "January", "February", "March", "April", + "May", "June", "July", "August", + "September","October", "November","December"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Undefined response code", 0 }, + { "Code 100 - Continue", 0 }, + { "Code 101 - Switching Protocols", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Created", 0 }, + { "Code 202 - Accepted", 0 }, + { "Code 203 - Non-Authoritative Information", 0 }, + { "Code 204 - No Content", 0 }, + { "Code 205 - Reset Content", 0 }, + { "Code 206 - Partial Content", 0 }, + { "Code 300 - Multiple Choices", 0 }, + { "Code 301 - Moved Permanently", 0 }, + { "Code 302 - Found", 0 }, + { "Code 303 - See Other", 0 }, + { "Code 304 - Not Modified", 0 }, + { "Code 305 - Use Proxy", 0 }, + { "Code 307 - Moved Temporarily", 0 }, + { "Code 400 - Bad Request", 0 }, + { "Code 401 - Unauthorized", 0 }, + { "Code 402 - Payment Required", 0 }, + { "Code 403 - Forbidden", 0 }, + { "Code 404 - Not Found", 0 }, + { "Code 405 - Method Not Allowed", 0 }, + { "Code 406 - Not Acceptable", 0 }, + { "Code 407 - Proxy Authentication Required", 0 }, + { "Code 408 - Request Timeout", 0 }, + { "Code 409 - Conflict", 0 }, + { "Code 410 - Gone", 0 }, + { "Code 411 - Length Required", 0 }, + { "Code 412 - Precondition Failed", 0 }, + { "Code 413 - Request Entity Too Large", 0 }, + { "Code 414 - Request-URI Too Long", 0 }, + { "Code 415 - Unsupported Media Type", 0 }, + { "Code 416 - Requested Range Not Satisfiable", 0 }, + { "Code 417 - Expectation Failed", 0 }, + { "Code 500 - Internal Server Error", 0 }, + { "Code 501 - Not Implemented", 0 }, + { "Code 502 - Bad Gateway", 0 }, + { "Code 503 - Service Unavailable", 0 }, + { "Code 504 - Gateway Timeout", 0 }, + { "Code 505 - HTTP Version Not Supported", 0 } }; + +char *msg_title = "ÍøÍÑÅý·×"; +char *msg_h_other = "Other"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Unresolved/Unknown", 0,0,0 }, +{ IDX_3C('c','o','m'), "Commercial (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Educational (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "US Government (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "International (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "US Military (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Network (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Non-Profit (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Address Routing (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Nato field (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "United Arab Emirates", 0,0,0 }, +{ IDX_2C('a','f'), "Afghanistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua and Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armenia", 0,0,0 }, +{ IDX_2C('a','n'), "Netherlands Antilles", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarctica", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "American Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Austria", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaijan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia and Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgium", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brazil", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Island", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Belarus", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Canada", 0,0,0 }, +{ IDX_2C('c','c'), "Cocos (Keeling) Islands", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Central African Republic", 0,0,0 }, +{ IDX_2C('c','g'), "Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Switzerland", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire (Ivory Coast)", 0,0,0 }, +{ IDX_2C('c','k'), "Cook Islands", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Cameroon", 0,0,0 }, +{ IDX_2C('c','n'), "China", 0,0,0 }, +{ IDX_2C('c','o'), "Colombia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Christmas Island", 0,0,0 }, +{ IDX_2C('c','y'), "Cyprus", 0,0,0 }, +{ IDX_2C('c','z'), "Czech Republic", 0,0,0 }, +{ IDX_2C('d','e'), "Germany", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Denmark", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Dominican Republic", 0,0,0 }, +{ IDX_2C('d','z'), "Algeria", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador", 0,0,0 }, +{ IDX_2C('e','e'), "Estonia", 0,0,0 }, +{ IDX_2C('e','g'), "Egypt", 0,0,0 }, +{ IDX_2C('e','h'), "Western Sahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Spain", 0,0,0 }, +{ IDX_2C('e','t'), "Ethiopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finland", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Falkland Islands (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronesia", 0,0,0 }, +{ IDX_2C('f','o'), "Faroe Islands", 0,0,0 }, +{ IDX_2C('f','r'), "France", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Great Britain (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgia", 0,0,0 }, +{ IDX_2C('g','f'), "French Guiana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Greenland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Equatorial Guinea", 0,0,0 }, +{ IDX_2C('g','r'), "Greece", 0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia and S. Sandwich Isls.", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard and McDonald Islands", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Croatia", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Hungary", 0,0,0 }, +{ IDX_2C('i','d'), "Indonesia", 0,0,0 }, +{ IDX_2C('i','e'), "Ireland", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "India", 0,0,0 }, +{ IDX_2C('i','o'), "British Indian Ocean Territory", 0,0,0 }, +{ IDX_2C('i','q'), "Iraq", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Iceland", 0,0,0 }, +{ IDX_2C('i','t'), "Italy", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Jordan", 0,0,0 }, +{ IDX_2C('j','p'), "Japan", 0,0,0 }, +{ IDX_2C('k','e'), "Kenya", 0,0,0 }, +{ IDX_2C('k','g'), "Kyrgyzstan", 0,0,0 }, +{ IDX_2C('k','h'), "Cambodia", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts and Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Korea, Democratic Republic of", 0,0,0 }, +{ IDX_2C('k','r'), "Korea, Republic of", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Cayman Islands", 0,0,0 }, +{ IDX_2C('k','z'), "Kazakhstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Lebanon", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lithuania", 0,0,0 }, +{ IDX_2C('l','u'), "Luxembourg", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia", 0,0,0 }, +{ IDX_2C('l','y'), "Libya", 0,0,0 }, +{ IDX_2C('m','a'), "Morocco", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Marshall Islands", 0,0,0 }, +{ IDX_2C('m','k'), "Macedonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolia", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Northern Mariana Islands", 0,0,0 }, +{ IDX_2C('m','q'), "Martinique", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldives", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexico", 0,0,0 }, +{ IDX_2C('m','y'), "Malaysia", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambique", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "New Caledonia", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Island", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Netherlands", 0,0,0 }, +{ IDX_2C('n','o'), "Norway", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "New Zealand", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "French Polynesia", 0,0,0 }, +{ IDX_2C('p','g'), "Papua New Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Philippines", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Poland", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre and Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Romania", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Russian Federation", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saudi Arabia", 0,0,0 }, +{ IDX_2C('s','b'), "Solomon Islands", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Sweden", 0,0,0 }, +{ IDX_2C('s','g'), "Singapore", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenia", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbard and Jan Mayen Islands", 0,0,0 }, +{ IDX_2C('s','k'), "Slovakia", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Suriname", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome and Principe", 0,0,0 }, +{ IDX_2C('s','u'), "Soviet Union", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Turks and Caicos Islands", 0,0,0 }, +{ IDX_2C('t','d'), "Chad", 0,0,0 }, +{ IDX_2C('t','f'), "French Southern Territories", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Thailand", 0,0,0 }, +{ IDX_2C('t','j'), "Tajikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisia", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Portuguese Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turkey", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad and Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraine", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "United Kingdom", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying Islands", 0,0,0 }, +{ IDX_2C('u','s'), "United States", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatican City State (Holy See)", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent and the Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Virgin Islands (British)", 0,0,0 }, +{ IDX_2C('v','i'), "Virgin Islands (U.S.)", 0,0,0 }, +{ IDX_2C('v','n'), "Viet Nam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis and Futuna Islands", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Yugoslavia", 0,0,0 }, +{ IDX_2C('z','a'), "South Africa", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0 , NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.korean b/lang/webalizer_lang.korean new file mode 100644 index 0000000..d857f85 --- /dev/null +++ b/lang/webalizer_lang.korean @@ -0,0 +1,633 @@ +/* + webalizer_lang.korean + + Webalizer V2.0x Language Support file for Korean. + 10-Arp-1999 Translated by Seung-young Kim (nobreak@nobreak.com) + 20-Arp-1999 Corrections/updates by Seung-young Kim (nobreak@nobreak.com) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Korean"; +char *langcode = "ko"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "·¹ÄÚµå"; +char *msg_addresses="addresses"; +char *msg_ignored = "¹«½Ã"; +char *msg_bad = "ºÒ·®"; +char *msg_in = "µ¿À۽ð£"; +char *msg_seconds = "ÃÊ"; + +/* progress and setup error messages */ +char *msg_log_err = "¿À·ù: ·Î±×ÆÄÀÏÀ» ãÀ» ¼ö ¾øÀ½"; +char *msg_log_use = "´ë»ó ·Î±× ÆÄÀÏ:"; +char *msg_dir_err = "¿À·ù: µð·ºÅ丮¸¦ º¯°æÇÒ ¼ö ¾øÀ½"; +char *msg_dir_use = "Ãâ·Â µð·ºÅ丮:"; +char *msg_cur_dir = "ÇöÀç µð·ºÅ丮"; +char *msg_hostname= "È£½ºÆ®¸í:"; +char *msg_ign_hist= "±âÁ¸ÀÇ È÷½ºÅ丮 Á¤º¸ ¹«½Ã"; +char *msg_no_hist = "È÷½ºÅ丮 ÆÄÀÏÀ» ãÀ» ¼ö ¾øÀ½"; +char *msg_get_hist= "±âÁ¸ È÷½ºÅ丮 Á¤º¸ Çؼ®:"; +char *msg_put_hist= "È÷½ºÅ丮 Á¤º¸ ÀúÀå"; +char *msg_hist_err= "¿À·ù: È÷½ºÅ丮 ÆÄÀÏÀ» ÀúÀåÇÒ ¼ö ¾øÀ½"; +char *msg_bad_hist= "¿À·ù: ÀûÇÕÇÏÁö ¾ÊÀº È÷½ºÅ丮 ·¹ÄÚµå ¹«½Ã"; +char *msg_bad_conf= "¿À·ù: ¼³Á¤ ÆÄÀÏÀ» ãÀ» ¼ö ¾øÀ½"; +char *msg_bad_key = "ÁÖÀÇ: ¾Ë¼ö¾ø´Â Å°¿öµå"; +char *msg_bad_date= "¿À·ù: ·¹ÄÚµå ¹«½Ã (À߸øµÈ ³¯Â¥)"; +char *msg_ign_nscp= "³Ý½ºÄÉÀÌÇÁ Çì´õ ·¹ÄÚµå ¹«½Ã"; +char *msg_bad_rec = "ºÎÀûÀýÇÑ ·¹ÄÚµå ¹«½Ã"; +char *msg_no_vrec = "ó¸®ÇÒ ·¹ÄÚµå ¾øÀ½!"; +char *msg_gen_rpt = "¸®Æ÷Æ® »ý¼º:"; +char *msg_gen_sum = "¸®Æ÷Æ® Ãâ·Â"; +char *msg_get_data= "±âÁ¸ Åë°è Á¤º¸ Çؼ®:"; +char *msg_put_data= "Åë°è Á¤º¸ ÀúÀå"; +char *msg_no_data = "Åë°è Á¤º¸ ÆÄÀÏÀ» ãÀ» ¼ö ¾øÀ½"; +char *msg_bad_data= "¿À·ù: Åë°è Á¤º¸¸¦ Çؼ®ÇÒ ¼ö ¾øÀ½"; +char *msg_data_err= "¿À·ù: Åë°è Á¤º¸¸¦ ÀúÀåÇÒ ¼ö ¾øÀ½"; +char *msg_dup_data= "ÁÖÀÇ: Áߺ¹µÈ Á¤º¸°¡ ÀÖÀ½"; + +/* DNS Stuff */ +char *msg_dns_nocf= "No cache file specified, aborting..."; +char *msg_dns_nodb= "Error: Unable to open DNS cache file"; +char *msg_dns_nolk= "Error: Unable to lock DNS cache file"; +char *msg_dns_usec= "Using DNS cache file"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "None to process"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "¸Þ¸ð¸® ºÎÁ·, '»óÀ§ »çÀÌÆ®' °Ç³Ê¶Ü!"; +char *msg_nomem_tr= "¸Þ¸ð¸® ºÎÁ·, '»óÀ§ ·¹ÆÛ·²' °Ç³Ê¶Ü!"; +char *msg_nomem_tu= "¸Þ¸ð¸® ºÎÁ·, '»óÀ§ URL' °Ç³Ê¶Ü!"; +char *msg_nomem_tc= "¸Þ¸ð¸® ºÎÁ·, '»óÀ§ ±¹°¡' °Ç³Ê¶Ü!"; +char *msg_nomem_ta= "¸Þ¸ð¸® ºÎÁ·, '»óÀ§ ¿¡ÀÌÀüÆ®' °Ç³Ê¶Ü!"; +char *msg_nomem_tsr="Can't allocate enough memory, Top Search Strings disabled!"; +char *msg_nomem_ti= "Can't allocate enough memory, Top Usernames disabled!"; +char *msg_nomem_dh= "È£½ºÆ® Ãß°¡ ½ÇÆÐ (ÀϺ°), ¹«½Ã"; +char *msg_nomem_mh= "È£½ºÆ® Ãß°¡ ½ÇÆÐ (¿ùº°), ¹«½Ã"; +char *msg_nomem_u = "URL Ãß°¡ ½ÇÆÐ, ¹«½Ã"; +char *msg_nomem_a = "¿¡ÀÌÀüÆ® Ãß°¡ ½ÇÆÐ, ¹«½Ã"; +char *msg_nomem_r = "·¹ÆÛ·² Ãß°¡ ½ÇÆÐ, ¹«½Ã"; +char *msg_nomem_sc= "Error adding Search String node, skipping"; +char *msg_nomem_i = "Error adding Username node, skipping"; + +/* log record errors */ +char *msg_big_rec = "¿À·ù: ÃÊ°ú ·Î±× ·¹ÄÚµå ¹«½Ã"; +char *msg_big_host= "ÁÖÀÇ: ±ä È£½ºÆ®³×ÀÓ Â¥¸§"; +char *msg_big_date= "ÁÖÀÇ: ±ä ³¯Â¥ Çʵå Â¥¸§"; +char *msg_big_req = "ÁÖÀÇ: ±ä ¿äû Çʵå Â¥¸§"; +char *msg_big_ref = "ÁÖÀÇ: ±ä ·¹ÆÛ·² Çʵå Â¥¸§"; +char *msg_big_user= "Warning: Truncating oversized username"; +char *msg_big_one = "ÁÖÀÇ: ¹®ÀÚ¿­ ±æÀÌ ÃÊ°ú"; + +/* misc errors */ +char *msg_no_open = "¿À·ù: ÆÄÀÏÀ» ãÀ» ¼ö ¾øÀ½"; + +/* Help display... */ +char *h_usage1 = "»ç¿ë¹ý"; +char *h_usage2 = "[¿É¼Ç] [·Î±× ÆÄÀÏ]"; +char *h_msg[]= { + "-h = µµ¿ò¸» È­¸é Ãâ·Â" , + "-V = ÆǹøÈ£ Ãâ·Â" , + "-v = be verbose" , + "-d = Ãß°¡ µð¹ö±ë Á¤º¸ Ãâ·Â" , + "-F type = Log type. type= (clf | ftp | squid | w3c)", + "-f = fold sequence errors" , + "-i = È÷½ºÅ丮 ÆÄÀÏ ¹«½Ã" , + "-p = Åë°è Á¤º¸ ÀúÀå (incremental)" , + "-b = ignore state (incremental)" , + "-q = ÀÏ¹Ý Á¤º¸ Ãâ·Â »ý·«" , + "-Q = ¸ðµç Á¤º¸ Ãâ·Â »ý·«" , + "-Y = supress country graph" , + "-G = ÀϺ° ±×·¡ÇÁ »ý·«" , + "-H = ½Ã°£º° Åë°è »ý·«" , + "-L = supress color coded graph legends" , + "-l num = use num background lines on graph" , + "-m num = Visit timeout value (seconds)" , + "-T = µ¿ÀÛ ½Ã°£ Ãâ·Â" , + "-c file = ¼³Á¤ ÆÄÀÏ" , + "-n name = È£½ºÆ®¸í" , + "-o dir = Ãâ·Â µð·ºÅ丮" , + "-t name = Ãâ·Â ŸÀÌƲ" , + "-a name = ÇØ´ç ¿¡ÀÌÀüÆ® °¨Ãã" , + "-r name = ÇØ´ç ·¹ÆÛ·² °¨Ãã" , + "-s name = ÇØ´ç »çÀÌÆ® °¨Ãã" , + "-u name = ÇØ´ç URL °¨Ãã" , + "-x name = Ãâ·Â ÆÄÀÏÀÇ È®ÀåÀÚ" , + "-O name = Omit page 'name'" , + "-P name = Page type extension 'name'" , + "-I name = Ãâ·Â ÆÄÀÏÀÇ ÆÄÀϸí" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Ãâ·ÂÇÒ '»óÀ§ ¿¡ÀÌÀüÆ®' °³¼ö" , + "-C num = Ãâ·ÂÇÒ '»óÀ§ ±¹°¡' °³¼ö" , + "-R num = Ãâ·ÂÇÒ '»óÀ§ ·¹ÆÛ·²' °³¼ö" , + "-S num = Ãâ·ÂÇÒ '»óÀ§ »çÀÌÆ®' °³¼ö" , + "-U num = Ãâ·ÂÇÒ '»óÀ§ URL' °³¼ö" , + "-e num = Display num top Entry Pages" , + "-E num = Display num top Exit Pages" , + "-g num = Group Domains to 'num' levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Use DNS Cache file 'name'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Åë°è ±â°£"; +char *msg_hhdr_gt = "ÃÖÁ¾ °»½ÅÀÏ"; + +/* main index strings */ +char *msg_main_us = "Usage summary for"; +/* char *msg_main_per= "Last 12 Months"; */ +char *msg_main_per= "ÃÖÁ¾ 12°³¿ù"; +char *msg_main_sum= "ÃÖÁ¾ 12°³¿ù"; +char *msg_main_da = "ÀÏ Æò±Õ"; +char *msg_main_mt = "¿ù ÃÑ°è"; + +/* month HTML page strings */ +char *msg_hmth_du = "Daily usage for"; +char *msg_hmth_hu = "Hourly usage for"; + +/* table header strings */ +char *msg_h_by = "By"; +char *msg_h_avg = "Æò±Õ"; +char *msg_h_max = "Max"; +char *msg_h_total = "Àüü"; +char *msg_h_totals= "ÃÑ°è"; +char *msg_h_day = "ÀÏ"; +char *msg_h_mth = "¿ù"; +char *msg_h_hour = "½Ã°£"; +char *msg_h_hits = "Hits"; +char *msg_h_pages = "Pages"; +char *msg_h_visits= "Visits"; +char *msg_h_files = "Files"; +char *msg_h_sites = "Sites"; +char *msg_h_xfer = "KBytes"; +char *msg_h_hname = "È£½ºÆ®¸í"; +char *msg_h_url = "URL"; +char *msg_h_agent = "¿¡ÀÌÀüÆ®"; +char *msg_h_ref = "·¹ÆÛ·²"; +char *msg_h_ctry = "±¹°¡"; +char *msg_h_search= "Search String"; +char *msg_h_uname = "Username"; + +/* links along top of page */ +char *msg_hlnk_ds = "ÀϺ° Åë°è"; +char *msg_hlnk_hs = "½Ã°£´ëº° Åë°è"; +char *msg_hlnk_u = "URL"; +char *msg_hlnk_s = "»çÀÌÆ®"; +char *msg_hlnk_a = "¿¡ÀÌÀüÆ®"; +char *msg_hlnk_c = "±¹°¡"; +char *msg_hlnk_r = "·¹ÆÛ·²"; +char *msg_hlnk_en = "Entry"; +char *msg_hlnk_ex = "Exit"; +char *msg_hlnk_sr = "Search"; +char *msg_hlnk_i = "Users"; + +/* monthly total table */ +char *msg_mtot_ms = "¿ùº° Åë°è"; +char *msg_mtot_th = "ÃÑ È÷Æ®¼ö"; +char *msg_mtot_tf = "ÃÑ ÆÄÀϼö"; +char *msg_mtot_tx = "ÃÑ KByte"; +char *msg_mtot_us = "ÃÑ °³º° »çÀÌÆ®"; +char *msg_mtot_ur = "ÃÑ °³º° ·¹ÆÛ·²"; +char *msg_mtot_ua = "ÃÑ °³º° ¿¡ÀÌÀüÆ®"; +char *msg_mtot_uu = "ÃÑ °³º° URL"; +char *msg_mtot_ui = "Total Unique Usernames"; +char *msg_mtot_mhd= "Hits per Day"; +char *msg_mtot_mhh= "Hits per Hour"; +char *msg_mtot_mfd= "Files per Day"; +char *msg_mtot_mpd= "Pages per Day"; +char *msg_mtot_msd= "Sites per Day"; +char *msg_mtot_mvd= "Visits per Day"; +char *msg_mtot_mkd= "KBytes per Day"; +char *msg_mtot_rc = "ÀÀ´ä Äڵ庰 È÷Æ®¼ö"; + +/* daily total table */ +char *msg_dtot_ds = "ÀϺ° Åë°è"; + +/* hourly total table */ +char *msg_htot_hs = "½Ã°£´ëº° Åë°è"; + +/* country pie chart */ +char *msg_ctry_use= "Usage by Country for"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "»óÀ§"; +char *msg_top_of = "/"; +char *msg_top_s = "»çÀÌÆ®"; +char *msg_top_u = "URL"; +char *msg_top_r = "·¹ÆÛ·²"; +char *msg_top_a = "¿¡ÀÌÀüÆ®"; +char *msg_top_c = "±¹°¡"; +char *msg_top_en = "Total Entry Pages"; +char *msg_top_ex = "Total Exit Pages"; +char *msg_top_sr = "Total Search Strings"; +char *msg_top_i = "Total Usernames"; +char *msg_v_sites = "View All Sites"; +char *msg_v_urls = "View All URLs"; +char *msg_v_refs = "View All Referrers"; +char *msg_v_agents= "View All User Agents"; +char *msg_v_search= "View All Search Strings"; +char *msg_v_users = "View All Usernames"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Jan", "Feb", "Mar", + "Apr", "May", "Jun", + "Jul", "Aug", "Sep", + "Oct", "Nov", "Dec"}; + +/* long month names - can be any length */ +char *l_month[12]={ "January", "February", "March", "April", + "May", "June", "July", "August", + "September","October", "November","December"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Undefined response code", 0 }, + { "Code 100 - Continue", 0 }, + { "Code 101 - Switching Protocols", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Created", 0 }, + { "Code 202 - Accepted", 0 }, + { "Code 203 - Non-Authoritative Information", 0 }, + { "Code 204 - No Content", 0 }, + { "Code 205 - Reset Content", 0 }, + { "Code 206 - Partial Content", 0 }, + { "Code 300 - Multiple Choices", 0 }, + { "Code 301 - Moved Permanently", 0 }, + { "Code 302 - Found", 0 }, + { "Code 303 - See Other", 0 }, + { "Code 304 - Not Modified", 0 }, + { "Code 305 - Use Proxy", 0 }, + { "Code 307 - Moved Temporarily", 0 }, + { "Code 400 - Bad Request", 0 }, + { "Code 401 - Unauthorized", 0 }, + { "Code 402 - Payment Required", 0 }, + { "Code 403 - Forbidden", 0 }, + { "Code 404 - Not Found", 0 }, + { "Code 405 - Method Not Allowed", 0 }, + { "Code 406 - Not Acceptable", 0 }, + { "Code 407 - Proxy Authentication Required", 0 }, + { "Code 408 - Request Timeout", 0 }, + { "Code 409 - Conflict", 0 }, + { "Code 410 - Gone", 0 }, + { "Code 411 - Length Required", 0 }, + { "Code 412 - Precondition Failed", 0 }, + { "Code 413 - Request Entity Too Large", 0 }, + { "Code 414 - Request-URI Too Long", 0 }, + { "Code 415 - Unsupported Media Type", 0 }, + { "Code 416 - Requested Range Not Satisfiable", 0 }, + { "Code 417 - Expectation Failed", 0 }, + { "Code 500 - Internal Server Error", 0 }, + { "Code 501 - Not Implemented", 0 }, + { "Code 502 - Bad Gateway", 0 }, + { "Code 503 - Service Unavailable", 0 }, + { "Code 504 - Gateway Timeout", 0 }, + { "Code 505 - HTTP Version Not Supported", 0 } }; + +char *msg_title = "»ç¿ë·® Åë°è:"; +char *msg_h_other = "±âŸ"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Unresolved/Unknown", 0,0,0 }, +{ IDX_3C('c','o','m'), "Commercial (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Educational (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "US Government (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "International (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "US Military (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Network (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Non-Profit (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Address Routing (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Nato field (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "United Arab Emirates", 0,0,0 }, +{ IDX_2C('a','f'), "Afghanistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua and Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armenia", 0,0,0 }, +{ IDX_2C('a','n'), "Netherlands Antilles", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarctica", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "American Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Austria", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaijan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia and Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgium", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brazil", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Island", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Belarus", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Canada", 0,0,0 }, +{ IDX_2C('c','c'), "Cocos (Keeling) Islands", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Central African Republic", 0,0,0 }, +{ IDX_2C('c','g'), "Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Switzerland", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire (Ivory Coast)", 0,0,0 }, +{ IDX_2C('c','k'), "Cook Islands", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Cameroon", 0,0,0 }, +{ IDX_2C('c','n'), "China", 0,0,0 }, +{ IDX_2C('c','o'), "Colombia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Christmas Island", 0,0,0 }, +{ IDX_2C('c','y'), "Cyprus", 0,0,0 }, +{ IDX_2C('c','z'), "Czech Republic", 0,0,0 }, +{ IDX_2C('d','e'), "Germany", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Denmark", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Dominican Republic", 0,0,0 }, +{ IDX_2C('d','z'), "Algeria", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador", 0,0,0 }, +{ IDX_2C('e','e'), "Estonia", 0,0,0 }, +{ IDX_2C('e','g'), "Egypt", 0,0,0 }, +{ IDX_2C('e','h'), "Western Sahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Spain", 0,0,0 }, +{ IDX_2C('e','t'), "Ethiopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finland", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Falkland Islands (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronesia", 0,0,0 }, +{ IDX_2C('f','o'), "Faroe Islands", 0,0,0 }, +{ IDX_2C('f','r'), "France", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Great Britain (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgia", 0,0,0 }, +{ IDX_2C('g','f'), "French Guiana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Greenland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Equatorial Guinea", 0,0,0 }, +{ IDX_2C('g','r'), "Greece", 0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia and S. Sandwich Isls.", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard and McDonald Islands", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Croatia", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Hungary", 0,0,0 }, +{ IDX_2C('i','d'), "Indonesia", 0,0,0 }, +{ IDX_2C('i','e'), "Ireland", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "India", 0,0,0 }, +{ IDX_2C('i','o'), "British Indian Ocean Territory", 0,0,0 }, +{ IDX_2C('i','q'), "Iraq", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Iceland", 0,0,0 }, +{ IDX_2C('i','t'), "Italy", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Jordan", 0,0,0 }, +{ IDX_2C('j','p'), "Japan", 0,0,0 }, +{ IDX_2C('k','e'), "Kenya", 0,0,0 }, +{ IDX_2C('k','g'), "Kyrgyzstan", 0,0,0 }, +{ IDX_2C('k','h'), "Cambodia", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts and Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Korea, Democratic Republic of", 0,0,0 }, +{ IDX_2C('k','r'), "Korea, Republic of", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Cayman Islands", 0,0,0 }, +{ IDX_2C('k','z'), "Kazakhstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Lebanon", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lithuania", 0,0,0 }, +{ IDX_2C('l','u'), "Luxembourg", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia", 0,0,0 }, +{ IDX_2C('l','y'), "Libya", 0,0,0 }, +{ IDX_2C('m','a'), "Morocco", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Marshall Islands", 0,0,0 }, +{ IDX_2C('m','k'), "Macedonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolia", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Northern Mariana Islands", 0,0,0 }, +{ IDX_2C('m','q'), "Martinique", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldives", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexico", 0,0,0 }, +{ IDX_2C('m','y'), "Malaysia", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambique", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "New Caledonia", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Island", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Netherlands", 0,0,0 }, +{ IDX_2C('n','o'), "Norway", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "New Zealand", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "French Polynesia", 0,0,0 }, +{ IDX_2C('p','g'), "Papua New Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Philippines", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Poland", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre and Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Romania", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Russian Federation", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saudi Arabia", 0,0,0 }, +{ IDX_2C('s','b'), "Solomon Islands", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Sweden", 0,0,0 }, +{ IDX_2C('s','g'), "Singapore", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenia", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbard and Jan Mayen Islands", 0,0,0 }, +{ IDX_2C('s','k'), "Slovakia", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Suriname", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome and Principe", 0,0,0 }, +{ IDX_2C('s','u'), "Soviet Union", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Turks and Caicos Islands", 0,0,0 }, +{ IDX_2C('t','d'), "Chad", 0,0,0 }, +{ IDX_2C('t','f'), "French Southern Territories", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Thailand", 0,0,0 }, +{ IDX_2C('t','j'), "Tajikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisia", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Portuguese Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turkey", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad and Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraine", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "United Kingdom", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying Islands", 0,0,0 }, +{ IDX_2C('u','s'), "United States", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatican City State (Holy See)", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent and the Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Virgin Islands (British)", 0,0,0 }, +{ IDX_2C('v','i'), "Virgin Islands (U.S.)", 0,0,0 }, +{ IDX_2C('v','n'), "Viet Nam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis and Futuna Islands", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Yugoslavia", 0,0,0 }, +{ IDX_2C('z','a'), "South Africa", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.latvian b/lang/webalizer_lang.latvian new file mode 100644 index 0000000..413cee6 --- /dev/null +++ b/lang/webalizer_lang.latvian @@ -0,0 +1,634 @@ +/* + webalizer_lang.latvian + + Webalizer V2.0x Language Support file for Latvian. + 15-May-1998 by Bradford L. Barrett (brad@mrunix.net) + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 16-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 06-Jul-2000 Latvian translation by Andis (andis@millenium.lv) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Latvian"; +char *langcode = "lv"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "ieraksti"; +char *msg_addresses="addreses"; +char *msg_ignored = "ignorçti"; +char *msg_bad = "slikti"; +char *msg_in = "ienâkoðie"; +char *msg_seconds = "sekundes"; + +/* progress and setup error messages */ +char *msg_log_err = "Error: Nevaru atvçrt Log failu"; +char *msg_log_use = "Izmantojam logfailu"; +char *msg_dir_err = "Error: Nepareiza direktorija"; +char *msg_dir_use = "Izvietojam Statistiku iekð"; +char *msg_cur_dir = "Esoðâ Direktorija"; +char *msg_hostname= "Ðî pârskata Hostname ir"; +char *msg_ign_hist= "Ignorçjam iepriekðçjos datus..."; +char *msg_no_hist = "Nav informâcijas par vçsturi..."; +char *msg_get_hist= "Lasâm vçstures failus..."; +char *msg_put_hist= "Saglabâjam vçstures informâciju..."; +char *msg_hist_err= "Error: Nevar saglabât vçstures failus"; +char *msg_bad_hist= "Error: Bojâti vçstures ieraksti"; +char *msg_bad_conf= "Error: Nevar atvçrt konfigurâcijas failu"; +char *msg_bad_key = "Warning: Nepareizs keyword"; +char *msg_bad_date= "Error: Izlaiþam ierakstu (kïûda datumâ)"; +char *msg_ign_nscp= "Izlaiþam Netscape header ierakstu"; +char *msg_bad_rec = "Izlaiþam sliktu ierakstu"; +char *msg_no_vrec = "Nav atrasti derîgi ieraksti!"; +char *msg_gen_rpt = "Veidojam pârskatu par"; +char *msg_gen_sum = "Veidojam summâro pârskatu par"; +char *msg_get_data= "Lasâm iepriekðçjos datus.."; +char *msg_put_data= "Saglabâjam paðreizçjos datus..."; +char *msg_no_data = "Iepriekðçjie dati nav atrasti..."; +char *msg_bad_data= "Error: Nav iespçjams atjaunot iepriekðçjos datus"; +char *msg_data_err= "Error: Nav iespçjams saglabât paðreizçjos datus"; +char *msg_dup_data= "Warning: Iespçjams, ka dati atkârtojas"; + +/* DNS Stuff */ +char *msg_dns_nocf= "Cache fails nav atrasts, pârtraucam..."; +char *msg_dns_nodb= "Error: Nevar atvçrt DNS cache failu"; +char *msg_dns_nolk= "Error: Nevar noslçgt DNS cache failu"; +char *msg_dns_usec= "Lietojam DNS cache file"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "None to process"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Can't allocate enough memory, Top Sites disabled!"; +char *msg_nomem_tr= "Can't allocate enough memory, Top Referrers disabled!"; +char *msg_nomem_tu= "Can't allocate enough memory, Top URLs disabled!"; +char *msg_nomem_tc= "Can't allocate enough memory, Top Countries disabled!"; +char *msg_nomem_ta= "Can't allocate enough memory, Top User Agents disabled!"; +char *msg_nomem_tsr="Can't allocate enough memory, Top Search Strings disabled!"; +char *msg_nomem_ti= "Can't allocate enough memory, Top Usernames disabled!"; +char *msg_nomem_dh= "Error adding host node (daily), skipping"; +char *msg_nomem_mh= "Error adding host node (monthly), skipping"; +char *msg_nomem_u = "Error adding URL node, skipping"; +char *msg_nomem_a = "Error adding User Agent node, skipping"; +char *msg_nomem_r = "Error adding Referrer node, skipping"; +char *msg_nomem_sc= "Error adding Search String Node, skipping"; +char *msg_nomem_i = "Error adding Username node, skipping"; + +/* log record errors */ +char *msg_big_rec = "Error: Skipping oversized log record"; +char *msg_big_host= "Warning: Truncating oversized hostname"; +char *msg_big_date= "Warning: Truncating oversized date field"; +char *msg_big_req = "Warning: Truncating oversized request field"; +char *msg_big_ref = "Warning: Truncating oversized referrer field"; +char *msg_big_user= "Warning: Truncating oversized username"; +char *msg_big_one = "Warning: String exceeds storage size"; + +/* misc errors */ +char *msg_no_open = "Error: Unable to open file"; + +/* Help display... */ +char *h_usage1 = "Usage"; +char *h_usage2 = "[options] [log file]"; +char *h_msg[]= { + "-h = print this help message" , + "-V = print version information" , + "-v = be verbose" , + "-d = print additional debug info" , + "-F type = Log type. type= (clf | ftp | squid | w3c)", + "-f = Fold sequence errors" , + "-i = ignore history file" , + "-p = preserve state (incremental)" , + "-b = ignore state (incremental)" , + "-q = supress informational messages" , + "-Q = supress _ALL_ messages" , + "-Y = supress country graph" , + "-G = supress hourly graph" , + "-H = supress hourly stats" , + "-L = supress color coded graph legends" , + "-l num = use num background lines on graph" , + "-m num = Visit timout value (HHMMSS format)" , + "-T = print timing information" , + "-c file = use configuration file 'file'" , + "-n name = hostname to use" , + "-o dir = output directory to use" , + "-t name = report title 'name'" , + "-a name = hide user agent 'name'" , + "-r name = hide referrer 'name'" , + "-s name = hide site 'name'" , + "-u name = hide URL 'name'" , + "-x name = Use filename extension 'name'" , + "-O name = Omit page 'name'" , + "-P name = Page type extension 'name'" , + "-I name = Index alias 'name'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Display num top agents" , + "-C num = Display num top countries" , + "-R num = Display num top referrers" , + "-S num = Display num top sites" , + "-U num = Display num top URL's" , + "-e num = Display num top Entry Pages" , + "-E num = Display num top Exit Pages" , + "-g num = Group Domains to 'num' levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Use DNS Cache file 'name'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Sumârais Periods"; +char *msg_hhdr_gt = "Izveidots"; + +/* main index strings */ +char *msg_main_us = "Apmeklçjumu pârskats pâr"; +/* char *msg_main_per= "Pçdçjie 12 Mçneði"; */ +char *msg_main_per= "Pârskati par mçneðiem"; +char *msg_main_sum= "Pârskati par mçneðiem"; +char *msg_main_da = "Ikdienas pârskati"; +char *msg_main_mt = "Mçneðu kopsummas"; + +/* month HTML page strings */ +char *msg_hmth_du = "Dienas pârskati par "; +char *msg_hmth_hu = "Stundu pârskati par"; + +/* table header strings */ +char *msg_h_by = "By"; +char *msg_h_avg = "Avg"; +char *msg_h_max = "Max"; +char *msg_h_total = "Total"; +char *msg_h_totals= "Totals"; +char *msg_h_day = "Diena"; +char *msg_h_mth = "Mçneði"; +char *msg_h_hour = "Stundas"; +char *msg_h_hits = "Hits"; +char *msg_h_pages = "Lapas"; +char *msg_h_visits= "Apmeklçjumi"; +char *msg_h_files = "Faili"; +char *msg_h_sites = "Sites"; +char *msg_h_xfer = "KBytes"; +char *msg_h_hname = "Hostname"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Lietotâja programma"; +char *msg_h_ref = "Referrer"; +char *msg_h_ctry = "Valsts"; +char *msg_h_search= "Search String"; +char *msg_h_uname = "Lietotâja vârds"; + +/* links along top of page */ +char *msg_hlnk_ds = "Dienas statistika"; +char *msg_hlnk_hs = "Stundu statistika"; +char *msg_hlnk_u = "URL's"; +char *msg_hlnk_s = "Saites"; +char *msg_hlnk_a = "Programmas"; +char *msg_hlnk_c = "Valstis"; +char *msg_hlnk_r = "Referrers"; +char *msg_hlnk_en = "Ieraksti"; +char *msg_hlnk_ex = "Exit"; +char *msg_hlnk_sr = "Meklçt"; +char *msg_hlnk_i = "Lietotâji"; + +/* monthly total table */ +char *msg_mtot_ms = "Mçneðu pârskats pâr"; +char *msg_mtot_th = "Kopçjie Apmeklçjumi"; +char *msg_mtot_tf = "Kopçjie Faili"; +char *msg_mtot_tx = "Kopçjie KBaiti"; +char *msg_mtot_us = "Kopçjâs Unikâlâs Saites"; +char *msg_mtot_ur = "Kopçjie Unikâlie Referreri"; +char *msg_mtot_ua = "Kopçjâs Unikâlâs Lietotâju Programmas"; +char *msg_mtot_uu = "Kopçjie Unikâlie URL"; +char *msg_mtot_ui = "Total Unique Usernames"; +char *msg_mtot_mhd= "Pieprasîjumi Dienâ"; +char *msg_mtot_mhh= "Pieprasîjumi Stundâs"; +char *msg_mtot_mfd= "Faili Dienâ"; +char *msg_mtot_mpd= "Lapas Dienâ"; +char *msg_mtot_msd= "Saites Dienâ"; +char *msg_mtot_mvd= "Apmeklçjumi Dienâ"; +char *msg_mtot_mkd= "KBaiti Dienâ"; +char *msg_mtot_rc = "Hits by Response Code"; + +/* daily total table */ +char *msg_dtot_ds = "Ikdienas statistika par"; + +/* hourly total table */ +char *msg_htot_hs = "Stundu statistika par"; + +/* country pie chart */ +char *msg_ctry_use= "Ârvalstu apmeklçtâju statistika par"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Top"; +char *msg_top_of = "par"; +char *msg_top_s = "Visas Saites"; +char *msg_top_u = "Visi URL"; +char *msg_top_r = "Visi Reffereri"; +char *msg_top_a = "Visas apmeklçtâju pârlûkprogrammas"; +char *msg_top_c = "Visas valstis"; +char *msg_top_en = "Total Entry Pages"; +char *msg_top_ex = "Total Exit Pages"; +char *msg_top_sr = "Total Search Strings"; +char *msg_top_i = "Total Usernames"; +char *msg_v_sites = "Apskatît visas saites"; +char *msg_v_urls = "Apskatît visus URL"; +char *msg_v_refs = "Apskatît visus Referrerus"; +char *msg_v_agents= "Apskatît visas pârlûkprogrammas"; +char *msg_v_search= "View All Search Strings"; +char *msg_v_users = "View All Usernames"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Jan", "Feb", "Mar", + "Apr", "May", "Jun", + "Jul", "Aug", "Sep", + "Oct", "Nov", "Dec"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Janvâris", "Februâris", "Marts", "Aprîlis", + "Maijs", "Jûnijs", "Jûlijs", "Augusts", + "Septembris","Oktobris", "Novembris","Decembris"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Undefined response code", 0 }, + { "Code 100 - Continue", 0 }, + { "Code 101 - Switching Protocols", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Created", 0 }, + { "Code 202 - Accepted", 0 }, + { "Code 203 - Non-Authoritative Information", 0 }, + { "Code 204 - No Content", 0 }, + { "Code 205 - Reset Content", 0 }, + { "Code 206 - Partial Content", 0 }, + { "Code 300 - Multiple Choices", 0 }, + { "Code 301 - Moved Permanently", 0 }, + { "Code 302 - Found", 0 }, + { "Code 303 - See Other", 0 }, + { "Code 304 - Not Modified", 0 }, + { "Code 305 - Use Proxy", 0 }, + { "Code 307 - Moved Temporarily", 0 }, + { "Code 400 - Bad Request", 0 }, + { "Code 401 - Unauthorized", 0 }, + { "Code 402 - Payment Required", 0 }, + { "Code 403 - Forbidden", 0 }, + { "Code 404 - Not Found", 0 }, + { "Code 405 - Method Not Allowed", 0 }, + { "Code 406 - Not Acceptable", 0 }, + { "Code 407 - Proxy Authentication Required", 0 }, + { "Code 408 - Request Timeout", 0 }, + { "Code 409 - Conflict", 0 }, + { "Code 410 - Gone", 0 }, + { "Code 411 - Length Required", 0 }, + { "Code 412 - Precondition Failed", 0 }, + { "Code 413 - Request Entity Too Large", 0 }, + { "Code 414 - Request-URI Too Long", 0 }, + { "Code 415 - Unsupported Media Type", 0 }, + { "Code 416 - Requested Range Not Satisfiable", 0 }, + { "Code 417 - Expectation Failed", 0 }, + { "Code 500 - Internal Server Error", 0 }, + { "Code 501 - Not Implemented", 0 }, + { "Code 502 - Bad Gateway", 0 }, + { "Code 503 - Service Unavailable", 0 }, + { "Code 504 - Gateway Timeout", 0 }, + { "Code 505 - HTTP Version Not Supported", 0 } }; + +char *msg_title = "Usage Statistics for"; +char *msg_h_other = "Other"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Unresolved/Unknown", 0,0,0 }, +{ IDX_3C('c','o','m'), "Commercial (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Educational (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "US Government (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "International (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "US Military (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Network (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Non-Profit (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Address Routing (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Nato field (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "United Arab Emirates", 0,0,0 }, +{ IDX_2C('a','f'), "Afghanistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua and Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armenia", 0,0,0 }, +{ IDX_2C('a','n'), "Netherlands Antilles", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarctica", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "American Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Austria", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaijan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia and Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgium", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brazil", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Island", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Belarus", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Canada", 0,0,0 }, +{ IDX_2C('c','c'), "Cocos (Keeling) Islands", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Central African Republic", 0,0,0 }, +{ IDX_2C('c','g'), "Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Switzerland", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire (Ivory Coast)", 0,0,0 }, +{ IDX_2C('c','k'), "Cook Islands", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Cameroon", 0,0,0 }, +{ IDX_2C('c','n'), "China", 0,0,0 }, +{ IDX_2C('c','o'), "Colombia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Christmas Island", 0,0,0 }, +{ IDX_2C('c','y'), "Cyprus", 0,0,0 }, +{ IDX_2C('c','z'), "Czech Republic", 0,0,0 }, +{ IDX_2C('d','e'), "Germany", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Denmark", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Dominican Republic", 0,0,0 }, +{ IDX_2C('d','z'), "Algeria", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador", 0,0,0 }, +{ IDX_2C('e','e'), "Estonia", 0,0,0 }, +{ IDX_2C('e','g'), "Egypt", 0,0,0 }, +{ IDX_2C('e','h'), "Western Sahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Spain", 0,0,0 }, +{ IDX_2C('e','t'), "Ethiopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finland", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Falkland Islands (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronesia", 0,0,0 }, +{ IDX_2C('f','o'), "Faroe Islands", 0,0,0 }, +{ IDX_2C('f','r'), "France", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Great Britain (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgia", 0,0,0 }, +{ IDX_2C('g','f'), "French Guiana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Greenland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Equatorial Guinea", 0,0,0 }, +{ IDX_2C('g','r'), "Greece", 0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia and S. Sandwich Isls.", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard and McDonald Islands", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Croatia", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Hungary", 0,0,0 }, +{ IDX_2C('i','d'), "Indonesia", 0,0,0 }, +{ IDX_2C('i','e'), "Ireland", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "India", 0,0,0 }, +{ IDX_2C('i','o'), "British Indian Ocean Territory", 0,0,0 }, +{ IDX_2C('i','q'), "Iraq", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Iceland", 0,0,0 }, +{ IDX_2C('i','t'), "Italy", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Jordan", 0,0,0 }, +{ IDX_2C('j','p'), "Japan", 0,0,0 }, +{ IDX_2C('k','e'), "Kenya", 0,0,0 }, +{ IDX_2C('k','g'), "Kyrgyzstan", 0,0,0 }, +{ IDX_2C('k','h'), "Cambodia", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts and Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Korea, Democratic Republic of", 0,0,0 }, +{ IDX_2C('k','r'), "Korea, Republic of", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Cayman Islands", 0,0,0 }, +{ IDX_2C('k','z'), "Kazakhstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Lebanon", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lithuania", 0,0,0 }, +{ IDX_2C('l','u'), "Luxembourg", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia", 0,0,0 }, +{ IDX_2C('l','y'), "Libya", 0,0,0 }, +{ IDX_2C('m','a'), "Morocco", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Marshall Islands", 0,0,0 }, +{ IDX_2C('m','k'), "Macedonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolia", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Northern Mariana Islands", 0,0,0 }, +{ IDX_2C('m','q'), "Martinique", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldives", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexico", 0,0,0 }, +{ IDX_2C('m','y'), "Malaysia", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambique", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "New Caledonia", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Island", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Netherlands", 0,0,0 }, +{ IDX_2C('n','o'), "Norway", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "New Zealand", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "French Polynesia", 0,0,0 }, +{ IDX_2C('p','g'), "Papua New Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Philippines", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Poland", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre and Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Romania", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Russian Federation", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saudi Arabia", 0,0,0 }, +{ IDX_2C('s','b'), "Solomon Islands", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Sweden", 0,0,0 }, +{ IDX_2C('s','g'), "Singapore", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenia", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbard and Jan Mayen Islands", 0,0,0 }, +{ IDX_2C('s','k'), "Slovakia", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Suriname", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome and Principe", 0,0,0 }, +{ IDX_2C('s','u'), "Soviet Union", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Turks and Caicos Islands", 0,0,0 }, +{ IDX_2C('t','d'), "Chad", 0,0,0 }, +{ IDX_2C('t','f'), "French Southern Territories", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Thailand", 0,0,0 }, +{ IDX_2C('t','j'), "Tajikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisia", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Portuguese Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turkey", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad and Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraine", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "United Kingdom", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying Islands", 0,0,0 }, +{ IDX_2C('u','s'), "United States", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatican City State (Holy See)", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent and the Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Virgin Islands (British)", 0,0,0 }, +{ IDX_2C('v','i'), "Virgin Islands (U.S.)", 0,0,0 }, +{ IDX_2C('v','n'), "Viet Nam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis and Futuna Islands", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Yugoslavia", 0,0,0 }, +{ IDX_2C('z','a'), "South Africa", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0 , NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.lithuanian b/lang/webalizer_lang.lithuanian new file mode 100644 index 0000000..e3d5292 --- /dev/null +++ b/lang/webalizer_lang.lithuanian @@ -0,0 +1,628 @@ +/* + webalizer_lang.lithuanian + + Webalizer V2.0x Language Support file for Lithuanian. + 24-Sep-2004 by Justas Butkus (justasbutkus@takas.lt) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Lithuanian"; +char *langcode = "lt"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "áraðai"; +char *msg_addresses="adresai"; +char *msg_ignored = "ignoruojami"; +char *msg_bad = "blogi"; +char *msg_in = "per"; +char *msg_seconds = "sekundes"; + +/* progress and setup error messages */ +char *msg_log_err = "Klaida: Nepavyko atidaryti áraðø failo"; +char *msg_log_use = "Naudojamas áraðø failas"; +char *msg_dir_err = "Klaida: Nepavyko pereiti á katalogà"; +char *msg_dir_use = "Kuriama iðvestis"; +char *msg_cur_dir = "dabartinis katalogas"; +char *msg_hostname= "Áraðai apie tarnybinæ stotá pavadinimu"; +char *msg_ign_hist= "Ignoruojami ankstesni istorijos áraðai..."; +char *msg_no_hist = "Nerastas istorijos failas..."; +char *msg_get_hist= "Skaitomas istorijos failas..."; +char *msg_put_hist= "Iðsaugomi istorijos áraðai..."; +char *msg_hist_err= "Klaida: Nepavyko áraðyti istorijos failo"; +char *msg_bad_hist= "Klaida: Ignoruojamas klaidingas istorijos áraðas"; +char *msg_bad_conf= "Klaida: Nepavyko atverti nuostatø failo"; +char *msg_bad_key = "Perspëjimas: Neteisingas raktaþodis"; +char *msg_bad_date= "Klaida: Praleidþiamas áraðas (neteisinga data)"; +char *msg_ign_nscp= "Praleidþiami Netscape antraðèiø áraðai"; +char *msg_bad_rec = "Praleidþiami blogi áraðai"; +char *msg_no_vrec = "Taisyklingi áraðai nerasti!"; +char *msg_gen_rpt = "Kuriamas áraðas"; +char *msg_gen_sum = "Kuriamas áraðo sàvadas"; +char *msg_get_data= "Nuskaitomi ankstesnio veikimo laikotarpiu sukurti duomenys.."; +char *msg_put_data= "Iðsaugomi ðio veikimo laikotarpiu sukurti duomenys..."; +char *msg_no_data = "Ankstesnio veikimo duomenys nerasti..."; +char *msg_bad_data= "Klaida: Nepavyko atstatyti veikimo duomenø"; +char *msg_data_err= "Klaida: Nepavyko iðsaugoti ðio veikimo duomenø"; +char *msg_dup_data= "Perspëjimas: Spëjama, jog rasti pasikartojantys duomenys"; + +/* DNS Stuff */ +char *msg_dns_nocf= "Nenurodytas spartinanèiosios atmintinës failas, atðaukiama..."; +char *msg_dns_nodb= "Klaida: Nepavyko atverti DNS spartinanèiosios atmintinës failo"; +char *msg_dns_nolk= "Klaida: Nepavyko uþrakinti DNS spartinanèiosios atmintinës failo"; +char *msg_dns_usec= "Naudojamas DNS spartinanèiosios atmintinës failas"; +char *msg_dns_rslv= "DNS paieðka"; +char *msg_dns_none= "Nëra kà vykdyti"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Nepavyksta paskirti pakankamai atminties, Populiariausi Puslapiai uþdrausti!"; +char *msg_nomem_tr= "Nepavyksta paskirti pakankamai atminties, Daþniausi Nukreipëjai uþdrausti!"; +char *msg_nomem_tu= "Nepavyksta paskirti pakankamai atminties, Daþniausi URL uþdrausti!"; +char *msg_nomem_tc= "Nepavyksta paskirti pakankamai atminties, Daþniausios Valstybës uþdraustos!"; +char *msg_nomem_ta= "Nepavyksta paskirti pakankamai atminties, Daþniausios Klientø Programos uþdraustos!"; +char *msg_nomem_tsr="Nepavyksta paskirti pakankamai atminties, Daþniausios Paieðkos uþdraustos!"; +char *msg_nomem_ti= "Nepavyksta paskirti pakankamai atminties, Daþniausi Vartotojø Vardai uþdrausti!"; +char *msg_nomem_dh= "Klaida pridedant kompiuterio vardo jungtá (kasdiená), praleidþiama"; +char *msg_nomem_mh= "Klaida pridedant kompiuterio vardo jungtá (kas mënesiná), praleidþiama"; +char *msg_nomem_u = "Klaida pridedant URL jungtá, praleidþiama"; +char *msg_nomem_a = "Klaida pridedant Kliento Programos jungtá, praleidþiama"; +char *msg_nomem_r = "Klaida pridedant Nukreipëjo jungtá, praleidþiama"; +char *msg_nomem_sc= "Klaida pridedant Paieðkos jungtá, praleidþiama"; +char *msg_nomem_i = "Klaida pridedant Vartotojo Vardo jungtá, praleidþiama"; + +/* log record errors */ +char *msg_big_rec = "Klaida: Praleidþiamas virðijæs dydþio limità áraðas"; +char *msg_big_host= "Perspëjimas: Trumpinamas per ilgas kompiuterio vardas"; +char *msg_big_date= "Perspëjimas: Trumpinamas per ilgas datos laukas"; +char *msg_big_req = "Perspëjimas: Trumpinamas per ilgas uþklausos laukas"; +char *msg_big_ref = "Perspëjimas: Trumpinamas per ilgas nukreipëjo laukas"; +char *msg_big_user= "Perspëjimas: Trumpinamas per ilgas vartotojo vardas"; +char *msg_big_one = "Perspëjimas: Áraðo reikðmë yra didesnë nei ámanoma vieta"; + +/* misc errors */ +char *msg_no_open = "Klaida: Nepavyko atidaryti failo"; + +/* Help display... */ +char *h_usage1 = "Naudojimas"; +char *h_usage2 = "[pasirinktys] [áraðo failas]"; +char *h_msg[]= { + "-h = atvaizduoti ðià pagalbos þinutæ" , + "-V = atvaizduoti versijos informacijà" , + "-v = be verbose" , + "-d = atvaizduoti papildomà derinimo informacijà" , + "-F type = Áraðo tipas. tipas= (clf | ftp | squid | w3c)" , + "-f = Eilës nuoseklumo klaida" , + "-i = ignoruoti istorijos failà" , + "-p = iðlaikyti bûsenà (didëjanèià)" , + "-b = ignore state (incremental)" , + "-q = atidëti informacines þinutes" , + "-Q = atidëti _VISAS_ þinutes" , + "-Y = atidëti ðaliø grafikà" , + "-G = atidëti valandiná grafikà" , + "-H = atidëti valandinæ statistikà" , + "-L = atidëti spalvomis koduotà grafikø legendà" , + "-l num = rodyti numeruotas fono linijas grafikuose" , + "-m num = Apsilankymo laiko limito reikðmë (sekundëmis)" , + "-T = iðvesti laiko matavimo informacijà" , + "-c file = naudoti pasirinkèiø failà 'failas'" , + "-n pavadinimas = vartotinas kompiuterio vardas" , + "-o dir = iðvesties katalogas" , + "-t pavadinimas = ataskaitos pavadinimas 'pavadinimas'" , + "-a pavadinimas = slëpti kliento programà 'pavadinimas'" , + "-r pavadinimas = slëpti nukreipëjà 'pavadinimas'" , + "-s pavadinimas = slëpti puslapá 'pavadinimas'" , + "-u pavadinimas = slëpti URL 'pavadinimas'" , + "-x pavadinimas = Naudoti rinkmenos plëtiná 'pavadinimas'" , + "-O pavadinimas = Omit page 'pavadinimas'" , + "-P pavadinimas = Puslapio tipo plëtinys 'pavadinimas'" , + "-I pavadinimas = Indekso pavadinimas 'pavadinimas'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Rodyti daþniausiø programø (kiekis)" , + "-C num = Rodyti daþniausiø ðaliø (kiekis)" , + "-R num = Rodyti daþniausiø nukreipëjø (kiekis)" , + "-S num = Rodyti daþniausiø puslapiø (kiekis)" , + "-U num = Rodyti daþniausiø URL (kiekis)" , + "-e num = Rodyti daþniausiø Áëjimo Puslapiø (kiekis)" , + "-E num = Rodyti daþniausiø Iðëjimo puslapiø (kiekis)" , + "-g num = Grupuoti adresø sritis á 'kieká' lygiø" , + "-X = Slëpti asmeninius puslapius" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D pavadinimas = Naudoti DNS Spartinanèiosios atmintinës failà 'pavadinimas'" , + "-N num = DNS procesø kiekis (0=iðjungta)" , + "-j = Enable native GeoDB lookups" , + "-J pavadinimas = Use GeoDB database 'pavadinimas'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W pavadinimas = Use GeoIP database 'pavadinimas'" , +#endif + NULL}; + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Sàvado periodas"; +char *msg_hhdr_gt = "Sugeneruota"; + +/* main index strings */ +char *msg_main_us = "Naudojimo sàvadas"; +/* char *msg_main_per= "Paskutinius 12 mënesiø"; */ +char *msg_main_per= "Sàvadas pagal mënesius"; +char *msg_main_sum= "Sàvadas pagal mënesius"; +char *msg_main_da = "Dieninis vidurkis"; +char *msg_main_mt = "Mënesio suminis"; + +/* month HTML page strings */ +char *msg_hmth_du = "Dieninis naudojimas"; +char *msg_hmth_hu = "Valandinis naudojimas"; + +/* table header strings */ +char *msg_h_by = "Pagal"; +char *msg_h_avg = "Vidurkis"; +char *msg_h_max = "Didþiausias"; +char *msg_h_total = "Bendras"; +char *msg_h_totals= "Suminiai"; +char *msg_h_day = "DIena"; +char *msg_h_mth = "Mënesis"; +char *msg_h_hour = "Valanda"; +char *msg_h_hits = "Jungèiø"; +char *msg_h_pages = "Puslapiø"; +char *msg_h_visits= "Apsilankymø"; +char *msg_h_files = "Rinkmenø"; +char *msg_h_sites = "Tinklalapiø"; +char *msg_h_xfer = "KBaitø"; +char *msg_h_hname = "Kompiuterio vardas"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Kliento programa"; +char *msg_h_ref = "Nukreipëjas"; +char *msg_h_ctry = "Ðalis"; +char *msg_h_search= "Paieðka"; +char *msg_h_uname = "Vartotojo vardas"; + +/* links along top of page */ +char *msg_hlnk_ds = "Dieninë statistika"; +char *msg_hlnk_hs = "Valandinë statistika"; +char *msg_hlnk_u = "URL"; +char *msg_hlnk_s = "Puslapiai"; +char *msg_hlnk_a = "Klientø programos"; +char *msg_hlnk_c = "Ðalys"; +char *msg_hlnk_r = "Nukreipëjai"; +char *msg_hlnk_en = "Áëjimai"; +char *msg_hlnk_ex = "Iðëjimai"; +char *msg_hlnk_sr = "Paieðka"; +char *msg_hlnk_i = "Vartotojø vardai"; + +/* monthly total table */ +char *msg_mtot_ms = "Mënesinë statistika"; +char *msg_mtot_th = "Viso jungèiø"; +char *msg_mtot_tf = "Viso rinkmenø"; +char *msg_mtot_tx = "Viso KBaitø"; +char *msg_mtot_us = "Viso unikaliø puslapiø"; +char *msg_mtot_ur = "Viso unikaliø nukreipëjø"; +char *msg_mtot_ua = "Viso unikaliø klientø programø"; +char *msg_mtot_uu = "Viso unikaliø URL"; +char *msg_mtot_ui = "Viso unikaliø vartotojø vardø"; +char *msg_mtot_mhd= "Jungèiø per dienà"; +char *msg_mtot_mhh= "Jungèiø per valandà"; +char *msg_mtot_mfd= "Failø per dienà"; +char *msg_mtot_mpd= "Puslapiø per dienà"; +char *msg_mtot_msd= "Puslapiø (sites) per dienà"; +char *msg_mtot_mvd= "Apsilankymø per dienà"; +char *msg_mtot_mkd= "KBaitø per dienà"; +char *msg_mtot_rc = "Jungèiø pagal atsako kodà"; + +/* daily total table */ +char *msg_dtot_ds = "Dieninë statistika"; + +/* hourly total table */ +char *msg_htot_hs = "Valandinë statistika"; + +/* country pie chart */ +char *msg_ctry_use= "Vartojimas pagal ðalá"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Daþniausiai"; +char *msg_top_of = "ið"; +char *msg_top_s = "Viso puslapiø"; +char *msg_top_u = "Viso URL"; +char *msg_top_r = "Viso Nukreipëjø"; +char *msg_top_a = "Viso Vartotojø programø"; +char *msg_top_c = "Viso Ðaliø"; +char *msg_top_en = "Viso Áëjimo puslapiø"; +char *msg_top_ex = "Viso Iðëjimo puslapiø"; +char *msg_top_sr = "Viso Paieðkø"; +char *msg_top_i = "Viso Vartotojø vardø"; +char *msg_v_sites = "Perþiûrëti visus Puslapius"; +char *msg_v_urls = "Perþiûrëti visus URL"; +char *msg_v_refs = "Perþiûrëti visus Nukreipëjus"; +char *msg_v_agents= "Perþiûrëti visus Vartotojø programas"; +char *msg_v_search= "Perþiûrëti visus Paieðkas"; +char *msg_v_users = "Perþiûrëti visus Vartotojø vardus"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Sau", "Vas", "Kov", + "Bal", "Geg", "Bir", + "Lie", "Rgp", "Rgs", + "Spa", "Lap", "Gru"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Sausis", "Vasaris", "Kovas", "Balandis", + "Geguþë", "Birþelis", "Liepa", "Rugpjûtis", + "Rugsëjis","Spalis", "Lapkritis","Gruodis"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Neapibrëþtas atsako kodas", 0 }, + { "Kodas 100 - Tæsiama", 0 }, + { "Kodas 101 - Keièiami protokolai", 0 }, + { "Kodas 200 - Gerai", 0 }, + { "Kodas 201 - Sukurta", 0 }, + { "Kodas 202 - Priimta", 0 }, + { "Kodas 203 - Ne autorizuojamoji informacija", 0 }, + { "Kodas 204 - Nëra turinio", 0 }, + { "Kodas 205 - Perkrauti turiná", 0 }, + { "Kodas 206 - Dalinis turinys", 0 }, + { "Kodas 300 - Keli pasirinkimai", 0 }, + { "Kodas 301 - Perkelta ilgam", 0 }, + { "Kodas 302 - Rasta", 0 }, + { "Kodas 303 - Mato kiti", 0 }, + { "Kodas 304 - Nepakeista", 0 }, + { "Kodas 305 - Naudojamas proxy", 0 }, + { "Kodas 307 - Perkelta laikinai", 0 }, + { "Kodas 400 - Bloga uþklausa", 0 }, + { "Kodas 401 - Neautorizuota", 0 }, + { "Kodas 402 - Reikalingas apmokëjimas", 0 }, + { "Kodas 403 - Uþdrausta", 0 }, + { "Kodas 404 - Nerasta", 0 }, + { "Kodas 405 - Metodas neleistas", 0 }, + { "Kodas 406 - Nepriimtina", 0 }, + { "Kodas 407 - Bûtina proxy autentifikacija", 0 }, + { "Kodas 408 - Baigësi uþklausai skirtas laikas", 0 }, + { "Kodas 409 - Konfliktas", 0 }, + { "Kodas 410 - Perkeltas", 0 }, + { "Kodas 411 - Ilgis bûtinas", 0 }, + { "Kodas 412 - Prieð-parengtis nepavyko", 0 }, + { "Kodas 413 - Per ilga uþklausa", 0 }, + { "Kodas 414 - Uþklausos-URI per ilgas", 0 }, + { "Kodas 415 - Nepalaikomas terpës tipas", 0 }, + { "Kodas 416 - Uþklausos ribos nepatenkinamos", 0 }, + { "Kodas 417 - Laukimas nepavyko", 0 }, + { "Kodas 500 - Vidinë serverio klaida", 0 }, + { "Kodas 501 - Neádiegta", 0 }, + { "Kodas 502 - Neteisingas ðliuzas", 0 }, + { "Kodas 503 - Paslauga neprieinama", 0 }, + { "Kodas 504 - Ðliuzas neatsakë per paskirtà laiko intervalà", 0 }, + { "Kodas 505 - HTTP versija nepalaikoma", 0 } }; + +char *msg_title = "Naudojimo statistika"; +char *msg_h_other = "Kitkas"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Neapspræsta/Neþinoma", 0,0,0 }, +{ IDX_3C('c','o','m'), "Komercinë (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Mokomoji (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "US Valstybinë (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "Tarptautinë (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "US Karinë", 0,0,0 }, +{ IDX_3C('n','e','t'), "Tinklo (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Ne pelno siekianèiø organizacijø", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Seno stiliaus Arpaneto (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Nato lauko (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andora", 0,0,0 }, +{ IDX_2C('a','e'), "Jungitniai arabø emiratai", 0,0,0 }, +{ IDX_2C('a','f'), "Afganistanas", 0,0,0 }, +{ IDX_2C('a','g'), "Antigva ir Barbadua", 0,0,0 }, +{ IDX_2C('a','i'), "Angila", 0,0,0 }, +{ IDX_2C('a','l'), "Albanija", 0,0,0 }, +{ IDX_2C('a','m'), "Armënija", 0,0,0 }, +{ IDX_2C('a','n'), "Nyderlandø Antilø salos", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarktika", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "Amerikos Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Austrija", 0,0,0 }, +{ IDX_2C('a','u'), "Australija", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaidþanas", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnija ir Hercogovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbadosas", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladeðas", 0,0,0 }, +{ IDX_2C('b','e'), "Beglija", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Fasas", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgarija", 0,0,0 }, +{ IDX_2C('b','h'), "Bahreinas", 0,0,0 }, +{ IDX_2C('b','i'), "Burundis", 0,0,0 }, +{ IDX_2C('b','j'), "Beninai", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermudai", 0,0,0 }, +{ IDX_2C('b','n'), "Brunëjus Daruslamas", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivija", 0,0,0 }, +{ IDX_2C('b','r'), "Brazilija", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamai", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutanas", 0,0,0 }, +{ IDX_2C('b','v'), "Buveto salos", 0,0,0 }, +{ IDX_2C('b','w'), "Botsvana", 0,0,0 }, +{ IDX_2C('b','y'), "Gudija", 0,0,0 }, +{ IDX_2C('b','z'), "Belizija", 0,0,0 }, +{ IDX_2C('c','a'), "Kanada", 0,0,0 }, +{ IDX_2C('c','c'), "Kokoso (Kylingo) salos", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Centrinës Afrikos respublika", 0,0,0 }, +{ IDX_2C('c','g'), "Kongas", 0,0,0 }, +{ IDX_2C('c','h'), "Ðveicarija", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire (Dramblio kaulo kranto)", 0,0,0 }, +{ IDX_2C('c','k'), "Kuko salos", 0,0,0 }, +{ IDX_2C('c','l'), "Èilë", 0,0,0 }, +{ IDX_2C('c','m'), "Kemrûnas", 0,0,0 }, +{ IDX_2C('c','n'), "Kinija", 0,0,0 }, +{ IDX_2C('c','o'), "Kolumbija", 0,0,0 }, +{ IDX_2C('c','r'), "Kosta Rika", 0,0,0 }, +{ IDX_2C('c','u'), "Kuba", 0,0,0 }, +{ IDX_2C('c','v'), "Þaliasis Kyðulys (Cape Verde)", 0,0,0 }, +{ IDX_2C('c','x'), "Kalëdø salos", 0,0,0 }, +{ IDX_2C('c','y'), "Kipras", 0,0,0 }, +{ IDX_2C('c','z'), "Èekijos respublika", 0,0,0 }, +{ IDX_2C('d','e'), "Vokietija", 0,0,0 }, +{ IDX_2C('d','j'), "Dþibutis", 0,0,0 }, +{ IDX_2C('d','k'), "Danija", 0,0,0 }, +{ IDX_2C('d','m'), "Dominika", 0,0,0 }, +{ IDX_2C('d','o'), "Dominikos respublika", 0,0,0 }, +{ IDX_2C('d','z'), "Alþyras", 0,0,0 }, +{ IDX_2C('e','c'), "Ekvadoras", 0,0,0 }, +{ IDX_2C('e','e'), "Estija", 0,0,0 }, +{ IDX_2C('e','g'), "Egiptas", 0,0,0 }, +{ IDX_2C('e','h'), "Vakarø sahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrëja", 0,0,0 }, +{ IDX_2C('e','s'), "Ispanija", 0,0,0 }, +{ IDX_2C('e','t'), "Etiopija", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Suomija", 0,0,0 }, +{ IDX_2C('f','j'), "Fijis", 0,0,0 }, +{ IDX_2C('f','k'), "Falklando salos (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Mikronezija", 0,0,0 }, +{ IDX_2C('f','o'), "Farerø salos", 0,0,0 }, +{ IDX_2C('f','r'), "Prancûzija", 0,0,0 }, +{ IDX_2C('g','a'), "Gabonas", 0,0,0 }, +{ IDX_2C('g','b'), "Didþioji Britanija (JK)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Gruzija", 0,0,0 }, +{ IDX_2C('g','f'), "Prancûzijos Gviana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltaras", 0,0,0 }, +{ IDX_2C('g','l'), "Grenlandija", 0,0,0 }, +{ IDX_2C('g','m'), "Gambija", 0,0,0 }, +{ IDX_2C('g','n'), "Gvinëja", 0,0,0 }, +{ IDX_2C('g','p'), "Gvadelupë", 0,0,0 }, +{ IDX_2C('g','q'), "Ekvatorinë Gvinëja", 0,0,0 }, +{ IDX_2C('g','r'), "Graikija", 0,0,0 }, +{ IDX_2C('g','s'), "Ðv. Dþordþijos ir Ðv. Sandvièiø salos.", 0,0,0 }, +{ IDX_2C('g','t'), "Gvatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guama", 0,0,0 }, +{ IDX_2C('g','w'), "Gvinëja-Bisau", 0,0,0 }, +{ IDX_2C('g','y'), "Gujana", 0,0,0 }, +{ IDX_2C('h','k'), "Honkongas", 0,0,0 }, +{ IDX_2C('h','m'), "Herdo ir McDonaldo salos", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Kroatija", 0,0,0 }, +{ IDX_2C('h','t'), "Haitis", 0,0,0 }, +{ IDX_2C('h','u'), "Vengrija", 0,0,0 }, +{ IDX_2C('i','d'), "Indonezija", 0,0,0 }, +{ IDX_2C('i','e'), "Airija", 0,0,0 }, +{ IDX_2C('i','l'), "Izraelis", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "Indija", 0,0,0 }, +{ IDX_2C('i','o'), "Britø Indijos vandenyno teritorija", 0,0,0 }, +{ IDX_2C('i','q'), "Irakas", 0,0,0 }, +{ IDX_2C('i','r'), "Iranas", 0,0,0 }, +{ IDX_2C('i','s'), "Islandija", 0,0,0 }, +{ IDX_2C('i','t'), "Italija", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaika", 0,0,0 }, +{ IDX_2C('j','o'), "Jordanija", 0,0,0 }, +{ IDX_2C('j','p'), "Japonija", 0,0,0 }, +{ IDX_2C('k','e'), "Kenija", 0,0,0 }, +{ IDX_2C('k','g'), "Kirgiztanas", 0,0,0 }, +{ IDX_2C('k','h'), "Kambodþa", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribatis", 0,0,0 }, +{ IDX_2C('k','m'), "Komorai", 0,0,0 }, +{ IDX_2C('k','n'), "Ðventas Kitsas ir Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Korëja (Ðiaurës)", 0,0,0 }, +{ IDX_2C('k','r'), "Korëja (Pietø)", 0,0,0 }, +{ IDX_2C('k','w'), "Kuveitas", 0,0,0 }, +{ IDX_2C('k','y'), "Kaimanø salos", 0,0,0 }, +{ IDX_2C('k','z'), "Kazakstanas", 0,0,0 }, +{ IDX_2C('l','a'), "Laosas", 0,0,0 }, +{ IDX_2C('l','b'), "Lebanonas", 0,0,0 }, +{ IDX_2C('l','c'), "Ðventa Liucija", 0,0,0 }, +{ IDX_2C('l','i'), "Lichtenðteinas", 0,0,0 }, +{ IDX_2C('l','k'), "Ðri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberija", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotas", 0,0,0 }, +{ IDX_2C('l','t'), "Lietuva", 0,0,0 }, +{ IDX_2C('l','u'), "Liuksemburgas", 0,0,0 }, +{ IDX_2C('l','v'), "Latvija", 0,0,0 }, +{ IDX_2C('l','y'), "Libija", 0,0,0 }, +{ IDX_2C('m','a'), "Marokas", 0,0,0 }, +{ IDX_2C('m','c'), "Monakas", 0,0,0 }, +{ IDX_2C('m','d'), "Moldavija", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagaskaras", 0,0,0 }, +{ IDX_2C('m','h'), "Marðalo salos", 0,0,0 }, +{ IDX_2C('m','k'), "Makedojina", 0,0,0 }, +{ IDX_2C('m','l'), "Malis", 0,0,0 }, +{ IDX_2C('m','m'), "Mianmaras", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolija", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Ðiaurinës Marianos salos", 0,0,0 }, +{ IDX_2C('m','q'), "Martinika", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritanija", 0,0,0 }, +{ IDX_2C('m','s'), "Montseratis", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritis", 0,0,0 }, +{ IDX_2C('m','v'), "Maldivai", 0,0,0 }, +{ IDX_2C('m','w'), "Malavis", 0,0,0 }, +{ IDX_2C('m','x'), "Meksika", 0,0,0 }, +{ IDX_2C('m','y'), "Malaizija", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambikas", 0,0,0 }, +{ IDX_2C('n','a'), "Namibija", 0,0,0 }, +{ IDX_2C('n','c'), "Naujoji Kaledonija", 0,0,0 }, +{ IDX_2C('n','e'), "Nigerija", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolko salos", 0,0,0 }, +{ IDX_2C('n','g'), "Nigerija", 0,0,0 }, +{ IDX_2C('n','i'), "Nikaragva", 0,0,0 }, +{ IDX_2C('n','l'), "Nyderlandai", 0,0,0 }, +{ IDX_2C('n','o'), "Norvegija", 0,0,0 }, +{ IDX_2C('n','p'), "Napalas", 0,0,0 }, +{ IDX_2C('n','r'), "Naurutis", 0,0,0 }, +{ IDX_2C('n','u'), "Nevis", 0,0,0 }, +{ IDX_2C('n','z'), "Naujoji Zelandija", 0,0,0 }, +{ IDX_2C('o','m'), "Omanas", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "Prancûzø Polinezija", 0,0,0 }, +{ IDX_2C('p','g'), "Papua ir Naujoji Gvinëja", 0,0,0 }, +{ IDX_2C('p','h'), "Filipinai", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistanas", 0,0,0 }, +{ IDX_2C('p','l'), "Lenkija", 0,0,0 }, +{ IDX_2C('p','m'), "Ðv. Pieras ir Mikelonas", 0,0,0 }, +{ IDX_2C('p','n'), "Pitkaimas", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rikas", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugalija", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Parugvajus", 0,0,0 }, +{ IDX_2C('q','a'), "Kataras", 0,0,0 }, +{ IDX_2C('r','e'), "Susijungimas", 0,0,0 }, +{ IDX_2C('r','o'), "Rumunija", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Rusijos federacija", 0,0,0 }, +{ IDX_2C('r','w'), "Randa", 0,0,0 }, +{ IDX_2C('s','a'), "Saudo Arabija", 0,0,0 }, +{ IDX_2C('s','b'), "Solomono salos", 0,0,0 }, +{ IDX_2C('s','c'), "Seiðelai", 0,0,0 }, +{ IDX_2C('s','d'), "Sudanas", 0,0,0 }, +{ IDX_2C('s','e'), "Ðvedija", 0,0,0 }, +{ IDX_2C('s','g'), "Singapûras", 0,0,0 }, +{ IDX_2C('s','h'), "Ðv. Elena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovënija", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbardo ir Þano Majeno salos", 0,0,0 }, +{ IDX_2C('s','k'), "Slovakijos respublika", 0,0,0 }, +{ IDX_2C('s','l'), "Siera Leonë", 0,0,0 }, +{ IDX_2C('s','m'), "San Marinas", 0,0,0 }, +{ IDX_2C('s','n'), "Senegalas", 0,0,0 }, +{ IDX_2C('s','o'), "Somalis", 0,0,0 }, +{ IDX_2C('s','r'), "Surinamis", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tomë ir Principë", 0,0,0 }, +{ IDX_2C('s','u'), "TSRS (buvusi)", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvadoras", 0,0,0 }, +{ IDX_2C('s','y'), "Sirija", 0,0,0 }, +{ IDX_2C('s','z'), "Svazilandas", 0,0,0 }, +{ IDX_2C('t','c'), "Turkijos ir Kaikijos salos", 0,0,0 }, +{ IDX_2C('t','d'), "Èadas", 0,0,0 }, +{ IDX_2C('t','f'), "Prancûzijos pietinës teritorijos", 0,0,0 }, +{ IDX_2C('t','g'), "Togas", 0,0,0 }, +{ IDX_2C('t','h'), "Tailandas", 0,0,0 }, +{ IDX_2C('t','j'), "Tadþikistanas", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmënistanas", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisas", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Rytø Timoras", 0,0,0 }, +{ IDX_2C('t','r'), "Turkija", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidadas ir Tobagas", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taivanas", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzanija", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraina", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "Jungtinë Karalystë", 0,0,0 }, +{ IDX_2C('u','m'), "US maþosios sàlos", 0,0,0 }, +{ IDX_2C('u','s'), "Jungtinës Valstijos", 0,0,0 }, +{ IDX_2C('u','y'), "Urugvajus", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistanas", 0,0,0 }, +{ IDX_2C('v','a'), "Vatikano miestas-valstybë (Ðventasis Sostas)",0,0,0 }, +{ IDX_2C('v','c'), "Ðventas Vincentas ir Grenadinai", 0,0,0 }, +{ IDX_2C('v','e'), "Venesuela", 0,0,0 }, +{ IDX_2C('v','g'), "Mergelës salos (Britø)", 0,0,0 }, +{ IDX_2C('v','i'), "Mergelës salos (JAV)", 0,0,0 }, +{ IDX_2C('v','n'), "Vietnamas", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Valio ir Futunos salos", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Jemenis", 0,0,0 }, +{ IDX_2C('y','t'), "Majotis", 0,0,0 }, +{ IDX_2C('y','u'), "Jugoslavija", 0,0,0 }, +{ IDX_2C('z','a'), "Pietø Afrika", 0,0,0 }, +{ IDX_2C('z','m'), "Zambija", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabvë", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0 , NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.malay b/lang/webalizer_lang.malay new file mode 100644 index 0000000..3fb9013 --- /dev/null +++ b/lang/webalizer_lang.malay @@ -0,0 +1,634 @@ +/* + webalizer_lang.malay + + Webalizer V2.0x Language Support file for Malay + 15-May-1998 by Bradford L. Barrett (brad@mrunix.net) + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 16-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 30-Oct-2000 Malay translation by Nazri Hussain (nazrih@mimos.my) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Malay"; +char *langcode = "ms"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "rekod"; +char *msg_addresses="alamat"; +char *msg_ignored = "diabaikan"; +char *msg_bad = "rosak"; +char *msg_in = "dalam"; +char *msg_seconds = "saat"; + +/* progress and setup error messages */ +char *msg_log_err = "Ralat: Saya rasa log fail anda tiada"; +char *msg_log_use = "Menggunakan fail log"; +char *msg_dir_err = "Ralat: Saya tidak dapat menukar ke direktori"; +char *msg_dir_use = "Menjana hasil di dalam"; +char *msg_cur_dir = "direktori terkini"; +char *msg_hostname= "Nama Host untuk laporan ini ialah"; +char *msg_ign_hist= "Mengabaikan fail terdahulu..."; +char *msg_no_hist = "Fail terdahulu tiada..."; +char *msg_get_hist= "Baca fail terdahulu..."; +char *msg_put_hist= "Simpan maklumat terdahulu..."; +char *msg_hist_err= "Ralat: Saya tidak dapat menyimpan fail terdahulu"; +char *msg_bad_hist= "Ralat: Saya mengabaikan rekod terdahulu yang rosak"; +char *msg_bad_conf= "Ralat: Saya tidak dapat membuka fail konfigurasi"; +char *msg_bad_key = "Amaran: katakunci tidak sah"; +char *msg_bad_date= "Ralat: Satu rekod diabaikan (tarikh salah)"; +char *msg_ign_nscp= "Satu kepala rekod Netscape diabaikan"; +char *msg_bad_rec = "Satu rekod salah diabaikan"; +char *msg_no_vrec = "Tiada rekod sah dijumpai!"; +char *msg_gen_rpt = "Menjana laporan untuk"; +char *msg_gen_sum = "Menjana ringkasan laporan"; +char *msg_get_data= "Membaca data larian terdahulu.."; +char *msg_put_data= "Menimpan data larian terkini..."; +char *msg_no_data = "Data larian terdahulu tidak dijumpai..."; +char *msg_bad_data= "Ralat: Saya tidak dapat mengambil-semula data larian"; +char *msg_data_err= "Ralat: Saya tidak dapat menyimpan data larian"; +char *msg_dup_data= "Amaran: Kemungkinan data yang sama dijumpai"; + +/* DNS Stuff */ +char *msg_dns_nocf= "Fail cache tidak dinyatakan, proses dibatalkan..."; +char *msg_dns_nodb= "Ralat: Saya tidak dapat membuka fail cache DNS"; +char *msg_dns_nolk= "Ralat: Saya tidak dapat mengunci fail cache DNS"; +char *msg_dns_usec= "Fail cache DNS sedang digunakan"; +char *msg_dns_rslv= "Carian DNS"; +char *msg_dns_none= "Tiada apa untuk diproses"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Tidak dapat memperuntukkan ingatan, Halaman Terbaik diabaikan!"; +char *msg_nomem_tr= "Tidak dapat memperuntukkan ingatan, Perujuk Terbaik diabaikan!"; +char *msg_nomem_tu= "Tidak dapat memperuntukkan ingatan, URL Terbaik diabaikan!"; +char *msg_nomem_tc= "Tidak dapat memperuntukkan ingatan, Negara Terbaik diabaikan!"; +char *msg_nomem_ta= "Tidak dapat memperuntukkan ingatan, Agen Pengguna Terbaik diabaikan!"; +char *msg_nomem_tsr="Tidak dapat memperuntukkan ingatan, Katakunci Carian Terbaik diabaikan!"; +char *msg_nomem_ti= "Tidak dapat memperuntukkan ingatan, Katanama Pengguna Terbaik diabaikan!"; +char *msg_nomem_dh= "Ralat untuk menambah nod hos (harian), proses diabaikan"; +char *msg_nomem_mh= "Ralat untuk menambah nod hos (bulanan), proses diabaikan"; +char *msg_nomem_u = "Ralat untuk menambah nod URL, proses diabaikan"; +char *msg_nomem_a = "Ralat untuk menambah nod Agen Pengguna, proses diabaikan"; +char *msg_nomem_r = "Ralat untuk menambah nod Perujuk, proses diabaikan"; +char *msg_nomem_sc= "Ralat untuk menambah nod Katakunci Carian, proses diabaikan"; +char *msg_nomem_i = "Ralat untuk menambah nod Katanama Pengguna, proses diabaikan"; + +/* log record errors */ +char *msg_big_rec = "Ralat: Rekod log anda terlalu besar, proses diabaikan"; +char *msg_big_host= "Amaran: Nama hos yang terlalu panjang telah dipotong"; +char *msg_big_date= "Amaran: Ruangan tarikh yang terlalu panjang telah dipotong"; +char *msg_big_req = "Amaran: Ruangan pertanyaan yang terlalu panjang telah dipotong"; +char *msg_big_ref = "Amaran: Ruangan perujuk yang terlalu panjang telah dipotong"; +char *msg_big_user= "Amaran: Katanama yang terlalu panjang telah dipotong"; +char *msg_big_one = "Amaran: Perkataan melebihi saiz simpanan"; + +/* misc errors */ +char *msg_no_open = "Ralat: Tidak dapat membuka fail"; + +/* Help display... */ +char *h_usage1 = "Penggunaan"; +char *h_usage2 = "[pilihan] [fail log]"; +char *h_msg[]= { + "-h = cetak mesej pertolongan ini" , + "-V = cetak maklumat versi" , + "-v = be verbose" , + "-d = cetak maklumat tambahan berkenaan dengan debug" , + "-F type = jenis Log. jenis= (clf | ftp | squid | w3c)", + "-f = Alas turutan ralat" , + "-i = abaikan fail terdahulu" , + "-p = kekalkan keadaan (secara menaik)" , + "-b = ignore state (incremental)" , + "-q = abaikan maklumat mesej" , + "-Q = abaikan _SEMUA_ mesej" , + "-Y = abaikan graf negara" , + "-G = abaikan graf ikut jam" , + "-H = abaikan statistik ikut jam" , + "-L = abaikan graf yang berdasarkan petunjuk warna" , + "-l num = gunakan sejumlah garisan latarbelakang pada graf" , + "-m num = Nilai masa tamat untuk Lawatan (dalam saat)" , + "-T = cetak maklumat berkenaan masa jangkaan" , + "-c file = gunakan fail konfigurasi ini" , + "-n name = gunakan nama hos ini" , + "-o dir = gunakan direktori ini untuk hasil janaan" , + "-t name = nama laporan" , + "-a name = sorokkan nama agen pengguna" , + "-r name = sorokkan nama perujuk" , + "-s name = sorokkan nama halaman" , + "-u name = sorokkan nama URL" , + "-x name = gunakan pengakhir ini bagi nama fail" , + "-O name = Omit page 'name'" , + "-P name = Jenis pengakhir bagi nama fail ini" , + "-I name = Nama lain bagi fail Index" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Paparkan bilangan agen terbaik" , + "-C num = Paparkan bilangan negara terbaik" , + "-R num = Paparkan bilangan perujuk terbaik" , + "-S num = Paparkan bilangan halaman terbaik" , + "-U num = Paparkan bilangan URL terbaik" , + "-e num = Paparkan bilangan Halaman Utama yang terbaik" , + "-E num = Paparkan bilangan Hamalan Keluar yang terbaik" , + "-g num = Kumpulkan tahap Domain kepada" , + "-X = Sorokkan halaman individu ini" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Gunakan fail cache DNS ini" , + "-N num = Nombor proses bagi DNS (0=abaikan)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Jangkamasa Ringkasan"; +char *msg_hhdr_gt = "Dijanakan"; + +/* main index strings */ +char *msg_main_us = "Ringkasan Penggunaan untuk"; +/* char *msg_main_per= "12 bulan yang lepas"; */ +char *msg_main_per= "Ringkasan Bulanan"; +char *msg_main_sum= "Ringkasan Bulanan"; +char *msg_main_da = "Purata harian"; +char *msg_main_mt = "Jumlah Bulanan"; + +/* month HTML page strings */ +char *msg_hmth_du = "Pengunaan Harian bagi"; +char *msg_hmth_hu = "Pengunaan ikut Jam bagi"; + +/* table header strings */ +char *msg_h_by = "Ikut"; +char *msg_h_avg = "Purata"; +char *msg_h_max = "Maksima"; +char *msg_h_total = "Jumlah"; +char *msg_h_totals= "Jumlah"; +char *msg_h_day = "Hari"; +char *msg_h_mth = "Bulan"; +char *msg_h_hour = "Jam"; +char *msg_h_hits = "Capaian"; +char *msg_h_pages = "Muka"; +char *msg_h_visits= "Lawatan"; +char *msg_h_files = "Fail"; +char *msg_h_sites = "Halaman"; +char *msg_h_xfer = "KBait"; +char *msg_h_hname = "Nama Hos"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Agen Pengguna"; +char *msg_h_ref = "Perujuk"; +char *msg_h_ctry = "Negara"; +char *msg_h_search= "Perkataan Carian"; +char *msg_h_uname = "Katanama"; + +/* links along top of page */ +char *msg_hlnk_ds = "Statistik Harian"; +char *msg_hlnk_hs = "Statistik ikut Jam"; +char *msg_hlnk_u = "URL"; +char *msg_hlnk_s = "Halaman"; +char *msg_hlnk_a = "Agen"; +char *msg_hlnk_c = "Negara"; +char *msg_hlnk_r = "Perujuk"; +char *msg_hlnk_en = "Masuk dari"; +char *msg_hlnk_ex = "Keluar dari"; +char *msg_hlnk_sr = "Carian"; +char *msg_hlnk_i = "Pengguna"; + +/* monthly total table */ +char *msg_mtot_ms = "Statistik Bulanan Untuk"; +char *msg_mtot_th = "Jumlah Capaian"; +char *msg_mtot_tf = "Jumlah Fail"; +char *msg_mtot_tx = "Jumlah KBait"; +char *msg_mtot_us = "Jumlah Halaman Unik"; +char *msg_mtot_ur = "Jumlah Perujuk Unik"; +char *msg_mtot_ua = "Jumlah Agen Pengguna Unik"; +char *msg_mtot_uu = "Jumlah URL unik"; +char *msg_mtot_ui = "Jumlah Katanama Unik"; +char *msg_mtot_mhd= "Purata Capaian Sehari"; +char *msg_mtot_mhh= "Purata Capaian Sejam"; +char *msg_mtot_mfd= "Purata Fail Sehari"; +char *msg_mtot_mpd= "Purata Halaman Sehari"; +char *msg_mtot_msd= "Sites per Day"; +char *msg_mtot_mvd= "Purata Lawatan Sehari"; +char *msg_mtot_mkd= "Purata KBait Sehari"; +char *msg_mtot_rc = "Purata Capaian mengikut Kod Respon"; + +/* daily total table */ +char *msg_dtot_ds = "Statistik Harian untuk"; + +/* hourly total table */ +char *msg_htot_hs = "Statistik mengikut Jam bagi"; + +/* country pie chart */ +char *msg_ctry_use= "Penggunaan mengikut Negara bagi"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Antara"; +char *msg_top_of = "yang Terbaik dari"; +char *msg_top_s = "Jumlah Halaman"; +char *msg_top_u = "Jumlah URL"; +char *msg_top_r = "Jumlah Penujuk"; +char *msg_top_a = "Jumlah Agen Pengguna"; +char *msg_top_c = "Jumlah Negara"; +char *msg_top_en = "Jumlah Halaman Masukan"; +char *msg_top_ex = "Jumlah Halaman Keluar"; +char *msg_top_sr = "Jumlah Katakunci Carian"; +char *msg_top_i = "Jumlah Katanama"; +char *msg_v_sites = "Lihat Semua Halaman"; +char *msg_v_urls = "Lihat Semua URL"; +char *msg_v_refs = "Lihat Semua Penunjuk"; +char *msg_v_agents= "Lihat Semua Agen Pengguna"; +char *msg_v_search= "Lihat Semua Katakunci Carian"; +char *msg_v_users = "Lihat Semua Katanama"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Jan", "Feb", "Mar", + "Apr", "Mei", "Jun", + "Jul", "Ogo", "Sep", + "Okt", "Nov", "Dis"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Januari", "Februari", "March", "April", + "Mei", "Jun", "July", "Ogos", + "September","Oktober", "November","Disember"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Kod Respon tidak dapat ditakrif", 0 }, + { "Code 100 - Teruskan", 0 }, + { "Code 101 - Bertukar Protokol", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Dihasilkan", 0 }, + { "Code 202 - Diterima", 0 }, + { "Code 203 - Maklumat yang tidak dapat disahkan", 0 }, + { "Code 204 - Maklumat Tiada", 0 }, + { "Code 205 - Maklumat diset semula", 0 }, + { "Code 206 - Maklumat tidak lengkap", 0 }, + { "Code 300 - Pilihan Pelbagai", 0 }, + { "Code 301 - Telah berpindah secara tetap", 0 }, + { "Code 302 - Dijumpai", 0 }, + { "Code 303 - Lihat yang lain", 0 }, + { "Code 304 - Tidak Diubah", 0 }, + { "Code 305 - Gunakan Proxy", 0 }, + { "Code 307 - Telah berpindah sementara", 0 }, + { "Code 400 - Permintaan Salah", 0 }, + { "Code 401 - Tidak dibenarkan", 0 }, + { "Code 402 - Bayaran diperlukan", 0 }, + { "Code 403 - Capaian Disekat", 0 }, + { "Code 404 - Tidak Dijumpai", 0 }, + { "Code 405 - Method Tidak Dibenarkan", 0 }, + { "Code 406 - Tidak Boleh Diterima", 0 }, + { "Code 407 - Pengesahan Proxy Diperlukan", 0 }, + { "Code 408 - Masa Permintaan Tamat", 0 }, + { "Code 409 - Konflik", 0 }, + { "Code 410 - Hilang", 0 }, + { "Code 411 - Panjang Diperlukan", 0 }, + { "Code 412 - Keadaan Awal Gagal", 0 }, + { "Code 413 - Permintaan Entiti Terlalu Besar", 0 }, + { "Code 414 - Permintaan URI Terlalu Panjang", 0 }, + { "Code 415 - Jenis Media Tidak Disokong", 0 }, + { "Code 416 - Julat Permintaan Tidak Dibenarkan", 0 }, + { "Code 417 - Anggapan Gagal", 0 }, + { "Code 500 - Ralat Dalaman Bagi Pelayan", 0 }, + { "Code 501 - Tidak Diimplemen", 0 }, + { "Code 502 - Gateway Gagal", 0 }, + { "Code 503 - Perkhidmatan Tiada", 0 }, + { "Code 504 - Masa Tamat Bagi Gateway", 0 }, + { "Code 505 - Versi HTTP Tidak Disokong", 0 } }; + +char *msg_title = "Statistik Penggunaan bagi"; +char *msg_h_other = "Lain-lain"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Tidak Diketahui", 0,0,0 }, +{ IDX_3C('c','o','m'), "Komersil (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Pendidikan (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "Kerajaan US (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "Antarabangsa (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "Ketenteraan US (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Rangkaian (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Organisasi Tidak Komersil (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Gaya Lama Arpanet (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Nato field (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "United Arab Emirates", 0,0,0 }, +{ IDX_2C('a','f'), "Afghanistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua and Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armenia", 0,0,0 }, +{ IDX_2C('a','n'), "Netherlands Antilles", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarctica", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "American Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Austria", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaijan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia and Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgium", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brazil", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Island", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Belarus", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Canada", 0,0,0 }, +{ IDX_2C('c','c'), "Pulau Cocos (Keeling)", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Republik Tengah Afrika", 0,0,0 }, +{ IDX_2C('c','g'), "Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Switzerland", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire (Ivory Coast)", 0,0,0 }, +{ IDX_2C('c','k'), "Cook Islands", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Cameroon", 0,0,0 }, +{ IDX_2C('c','n'), "China", 0,0,0 }, +{ IDX_2C('c','o'), "Colombia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Christmas Island", 0,0,0 }, +{ IDX_2C('c','y'), "Cyprus", 0,0,0 }, +{ IDX_2C('c','z'), "Czech Republic", 0,0,0 }, +{ IDX_2C('d','e'), "Germany", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Denmark", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Dominican Republic", 0,0,0 }, +{ IDX_2C('d','z'), "Algeria", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador", 0,0,0 }, +{ IDX_2C('e','e'), "Estonia", 0,0,0 }, +{ IDX_2C('e','g'), "Egypt", 0,0,0 }, +{ IDX_2C('e','h'), "Western Sahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Spain", 0,0,0 }, +{ IDX_2C('e','t'), "Ethiopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finland", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Falkland Islands (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronesia", 0,0,0 }, +{ IDX_2C('f','o'), "Faroe Islands", 0,0,0 }, +{ IDX_2C('f','r'), "France", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Great Britain (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgia", 0,0,0 }, +{ IDX_2C('g','f'), "French Guiana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Greenland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Equatorial Guinea", 0,0,0 }, +{ IDX_2C('g','r'), "Greece", 0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia and S. Sandwich Isls.", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard and McDonald Islands", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Croatia", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Hungary", 0,0,0 }, +{ IDX_2C('i','d'), "Indonesia", 0,0,0 }, +{ IDX_2C('i','e'), "Ireland", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "India", 0,0,0 }, +{ IDX_2C('i','o'), "British Indian Ocean Territory", 0,0,0 }, +{ IDX_2C('i','q'), "Iraq", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Iceland", 0,0,0 }, +{ IDX_2C('i','t'), "Italy", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Jordan", 0,0,0 }, +{ IDX_2C('j','p'), "Japan", 0,0,0 }, +{ IDX_2C('k','e'), "Kenya", 0,0,0 }, +{ IDX_2C('k','g'), "Kyrgyzstan", 0,0,0 }, +{ IDX_2C('k','h'), "Cambodia", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts and Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Korea, Democratic Republic of", 0,0,0 }, +{ IDX_2C('k','r'), "Korea, Republic of", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Cayman Islands", 0,0,0 }, +{ IDX_2C('k','z'), "Kazakhstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Lebanon", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lithuania", 0,0,0 }, +{ IDX_2C('l','u'), "Luxembourg", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia", 0,0,0 }, +{ IDX_2C('l','y'), "Libya", 0,0,0 }, +{ IDX_2C('m','a'), "Morocco", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Marshall Islands", 0,0,0 }, +{ IDX_2C('m','k'), "Macedonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolia", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Northern Mariana Islands", 0,0,0 }, +{ IDX_2C('m','q'), "Martinique", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldives", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexico", 0,0,0 }, +{ IDX_2C('m','y'), "Malaysia", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambique", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "New Caledonia", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Island", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Netherlands", 0,0,0 }, +{ IDX_2C('n','o'), "Norway", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "New Zealand", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "French Polynesia", 0,0,0 }, +{ IDX_2C('p','g'), "Papua New Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Philippines", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Poland", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre and Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Romania", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Russian Federation", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saudi Arabia", 0,0,0 }, +{ IDX_2C('s','b'), "Solomon Islands", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Sweden", 0,0,0 }, +{ IDX_2C('s','g'), "Singapore", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenia", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbard and Jan Mayen Islands", 0,0,0 }, +{ IDX_2C('s','k'), "Slovakia", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Suriname", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome and Principe", 0,0,0 }, +{ IDX_2C('s','u'), "Soviet Union", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Turks and Caicos Islands", 0,0,0 }, +{ IDX_2C('t','d'), "Chad", 0,0,0 }, +{ IDX_2C('t','f'), "French Southern Territories", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Thailand", 0,0,0 }, +{ IDX_2C('t','j'), "Tajikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisia", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Portuguese Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turkey", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad and Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraine", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "United Kingdom", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying Islands", 0,0,0 }, +{ IDX_2C('u','s'), "United States", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatican City State (Holy See)", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent and the Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Virgin Islands (British)", 0,0,0 }, +{ IDX_2C('v','i'), "Virgin Islands (U.S.)", 0,0,0 }, +{ IDX_2C('v','n'), "Viet Nam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis and Futuna Islands", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Yugoslavia", 0,0,0 }, +{ IDX_2C('z','a'), "South Africa", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0 , NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.norwegian b/lang/webalizer_lang.norwegian new file mode 100644 index 0000000..beb9524 --- /dev/null +++ b/lang/webalizer_lang.norwegian @@ -0,0 +1,645 @@ +/* + webalizer_lang.norwegian + + Webalizer V2.0x Language Support file for norwegian. + 15-May-1998 by Bradford L. Barrett (brad@mrunix.net) + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 03-Oct-1998 Swedish Translation by Daniel Bergstrom (daniel@bergstrom.net) + 28-Oct-1998 Lots of typos fixed, Daniel Bergstrom (daniel@bergstrom.net) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 26-Apr-1999 More typos fixed, thanks to "Mika Perälä" + (daniel@bergstrom.net) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 14-Oct-1999 Additional translation by Daved Cross (daved.cross@forefront.net) + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 01-Jun-2000 Modified/corrected by Joaquim Homrighausen (joho@webbplatsen.se) + 10-Nov-1999 Translated to Norwegian Håkon Flatøy (hakon@flatoy.com) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + Please fix all typos, or drop me a note and i will fix it and submit + patches upstream. /daniel + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Norwegian"; +char *langcode = "no"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "poster"; +char *msg_addresses="adresser"; +char *msg_ignored = "ignorerte"; +char *msg_bad = "feilaktige"; +char *msg_in = "i"; +char *msg_seconds = "sekunder"; + +/* progress and setup error messages */ +char *msg_log_err = "Feil: kan ikke åpne loggfilen"; +char *msg_log_use = "Bruker loggfil"; +char *msg_dir_err = "Feil: kan ikke skifte katalog til"; +char *msg_dir_use = "Oppretter utdata i"; +char *msg_cur_dir = "aktuell katalog"; +char *msg_hostname= "Maskinnavn for rapportene er"; +char *msg_ign_hist= "Ignorerer tidigere historie..."; +char *msg_no_hist = "Fant ikke historiefilen..."; +char *msg_get_hist= "Leser historiefil..."; +char *msg_put_hist= "Lagrer historieinformasjon..."; +char *msg_hist_err= "Feil: kan ikke skrive til historefil"; +char *msg_bad_hist= "Feil: Ignorerer feilaktig historiepost"; +char *msg_bad_conf= "Feil: Kan ikke åpne konfigurasjonsfilen"; +char *msg_bad_key = "Advarsel: ugyldig nøkkelord"; +char *msg_bad_date= "Feil: hopper over post (feilaktig dato)"; +char *msg_ign_nscp= "Hopper over Netscape-spesifikk innledningsrad"; +char *msg_bad_rec = "Hopper over feilaktig post"; +char *msg_no_vrec = "Fant ingen gyldige poster!"; +char *msg_gen_rpt = "Genererer rapport for"; +char *msg_gen_sum = "Genererar oversiktsinformasjon"; +char *msg_get_data= "Leser tidligere genererte data..."; +char *msg_put_data= "Lagrer data fra denne generering..."; +char *msg_no_data = "Fant ikke tidligere genererte data..."; +char *msg_bad_data= "Feil: kan ikke gjenopprette lagret data"; +char *msg_data_err= "Feil: kan ikke lagre data for denne genereringen"; +char *msg_dup_data= "Advarsel: Mulige dobble oppføringer funnet"; + +/* DNS Stuff */ +char *msg_dns_nocf= "Ingen cachefil spesifisert..."; +char *msg_dns_nodb= "Feil: Kan ikke åpne DNS-cachefilen"; +char *msg_dns_nolk= "Feil: Kan ikke låse DNS-cachefilen"; +char *msg_dns_usec= "Bruker DNS-cachefilen"; +char *msg_dns_rslv= "DNS Anrop"; +char *msg_dns_none= "Ingen ting å bearbeide"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Kan ikke allokere minne, stenger av 'Top sites'"; +char *msg_nomem_tr= "Kan ikke allokere minne, stenger av 'Top referrers'"; +char *msg_nomem_tu= "Kan ikke allokere minne, stenger av 'Top URLs'"; +char *msg_nomem_tc= "Kan ikke allokere minne, stenger av 'Top Countries'"; +char *msg_nomem_ta= "Kan ikke allokere minne, stenger av 'Top User Agents'"; +char *msg_nomem_tsr="Kan ikke allokere minne, stenger av 'Top Search Strings'"; +char *msg_nomem_ti= "Kan ikke allokere minne, stenger av 'Top Usernames'"; +char *msg_nomem_dh= "Feil ved tillegging av dato i listen (daglig), hopper over"; +char *msg_nomem_mh= "Feil ved tillegging av dato i listen (månedlig), hopper over"; +char *msg_nomem_u = "Feil ved tillegging av URL i listen, hopper over"; +char *msg_nomem_a = "Feil ved tillegging av klienttype i listen, hopper over"; +char *msg_nomem_r = "Feil ved tillegging av henvisning i listen, hopper over"; +char *msg_nomem_sc= "Feil ved tillegging av søkestreng, hopper over"; +char *msg_nomem_i = "Feil ved tillegging av brukernavn, hopper over"; + +/* log record errors */ +char *msg_big_rec = "Feil: hopper over for stor post i loggfil"; +char *msg_big_host= "Advarsel: Tilpasser (kapper) for langt datonavn"; +char *msg_big_date= "Advarsel: Tilpasser (kapper) for langt datofelt"; +char *msg_big_req = "Advarsel: Tilpasser (kapper) for langt spørrefelt"; +char *msg_big_ref = "Advarsel: Tilpasser (kapper) for langt henvisningsfelt"; +char *msg_big_user= "Advarsel: Tilpasser (kapper) for langt brukernavn"; +char *msg_big_one = "Advarsel: Streng overskrider størrelsen på lagringsplass"; + +/* misc errors */ +char *msg_no_open = "Feil: kan ikke åpne fil"; + +/* Help display... */ +char *h_usage1 = "Bruk"; +char *h_usage2 = "[flaggor] [loggfil]"; +char *h_msg[]= { + "-h = skriv hjelpetekst" , + "-V = skriv versjonsinforasjon" , + "-v = be verbose" , + "-d = skriv ytterligere debuginformasjon" , + "-F typ = Loggtype. type= (clf | ftp | squid | w3c)" , + "-f = hantere sekvensfeil" , + "-i = ignorerer historiefilen" , + "-p = bevar tillstand (inkrementell)" , + "-b = ignore state (incremental)" , + "-q = vis ikke informasjonsbeskjeder" , + "-Q = vis ikke noe informasjon" , + "-Y = ikke opprettgraf for land" , + "-G = ikke opprett graf for timmar" , + "-H = ikke opprett statistikk for timmar" , + "-L = ikke opprett fargekodet grafer" , + "-l num = opprett 'num' referenslinjer for grafer" , + "-m num = Verdi for timeout for besøk (sekunder)" , + "-T = skriv informasjon om tidsbruk" , + "-c fil = bruk konfigurasjonsfilen 'fil'" , + "-n navn = datonavn som skal brukes" , + "-o katalog = katalog for utskrift" , + "-t navn = bruk 'navn' som tittel" , + "-a navn = skjul brukernavn 'navn'" , + "-r navn = skjul henvisning 'navn'" , + "-s navn = skjul klientadresse 'navn'" , + "-u navn = skjul URL 'navn'" , + "-x navn = Bruk filnavnsending 'navn'" , + "-O navn = Omit page 'navn'" , + "-P navn = Endelse for sidefiler 'navn'" , + "-I navn = ha 'navn' som alias till index.html" , + "-K antall = vis 'antall' months in summary table" , + "-k antall = vis 'andall' months in summary graph" , + "-A antall = vis 'antall' i listen over klienter" , + "-C antall = vis 'antall' i listen over land" , + "-R antall = vis 'antall' i listen over henvisninger" , + "-S antall = vis 'antall' i fraadresse-listen" , + "-U antall = vis 'antall' i listen over URL-er" , + "-e antall = Vis 'antall' i listen over startsider" , + "-E antall = Vis 'antall' i listen over sluttsider" , + "-g antall = Group Domains to 'antall' levels" , + "-X = Skjul indiveduelle plasser" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D navn = Bruk DNS-cachfil 'navn'" , + "-N num = Antall DNS-processer (0=stäng av)" , + "-j = Enable native GeoDB lookups" , + "-J navn = Use GeoDB database 'navn'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W navn = Use GeoIP database 'navn'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Periode for summering"; +char *msg_hhdr_gt = "Opprettet"; + +/* main index strings */ +char *msg_main_us = "Summering for"; +/* char *msg_main_per= "Siste 12 månedene"; */ +char *msg_main_per= "Summering måned for måned"; +char *msg_main_sum= "Summering måned for måned"; +char *msg_main_da = "Snitt over dagen"; +char *msg_main_mt = "Summer pr. måned"; + +/* month HTML page strings */ +char *msg_hmth_du = "Daglig bruk for"; +char *msg_hmth_hu = "Bruk time for time for"; + +/* table header strings */ +char *msg_h_by = "Av"; +char *msg_h_avg = "Snitt"; +char *msg_h_max = "Maks"; +char *msg_h_total = "Total"; +char *msg_h_totals= "Totaler"; +char *msg_h_day = "Dag"; +char *msg_h_mth = "Måned"; +char *msg_h_hour = "Time"; +char *msg_h_hits = "Treff"; +char *msg_h_pages = "Sider"; +char *msg_h_visits= "Besøk"; +char *msg_h_files = "Filer"; +char *msg_h_sites = "Klientadresser"; +char *msg_h_xfer = "kilobyte"; +char *msg_h_hname = "Servernavn"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Klienttype"; +char *msg_h_ref = "Referent"; +char *msg_h_ctry = "Land"; +char *msg_h_search= "Søkstreng"; +char *msg_h_uname = "Brukernavn"; + +/* links along top of page */ +char *msg_hlnk_ds = "Daglig statistikkk"; +char *msg_hlnk_hs = "Statistikkk time for time"; +char *msg_hlnk_u = "URLer"; +char *msg_hlnk_s = "Klientadresser"; +char *msg_hlnk_a = "Klienttyper"; +char *msg_hlnk_c = "Land"; +char *msg_hlnk_r = "Referanser"; +char *msg_hlnk_en = "Inngang"; +char *msg_hlnk_ex = "Utgang"; +char *msg_hlnk_sr = "Søk"; +char *msg_hlnk_i = "Brukere"; + +/* monthly total table */ +char *msg_mtot_ms = "Månedlig statistikk for"; +char *msg_mtot_th = "Totalt antall treff"; +char *msg_mtot_tf = "Totalt antall filer"; +char *msg_mtot_tx = "Totalt antall kilobytes"; +char *msg_mtot_us = "Totalt antall unike klientadresser"; +char *msg_mtot_ur = "Totalt antall unike henvisninger"; +char *msg_mtot_ua = "Totalt antall unike klienttyper"; +char *msg_mtot_uu = "Totalt antall unike URLer"; +char *msg_mtot_ui = "Totalt antall unike brukernavn"; +char *msg_mtot_mhd= "Treff per dag"; +char *msg_mtot_mhh= "Treff per time"; +char *msg_mtot_mfd= "Filer per dag"; +char *msg_mtot_mpd= "Sider per dag"; +char *msg_mtot_msd= "Klientadresser per dag"; +char *msg_mtot_mvd= "Besök per dag"; +char *msg_mtot_mkd= "Kilobytes per dag"; +char *msg_mtot_rc = "Treff sortert etter responskode"; + +/* daily total table */ +char *msg_dtot_ds = "Daglig statistikk for"; + +/* hourly total table */ +char *msg_htot_hs = "Statistikk time for time for"; + +/* country pie chart */ +char *msg_ctry_use= "Statsistik sortert etter land for"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Vanligste"; +char *msg_top_of = "utav totalt"; +char *msg_top_s = "sider"; +char *msg_top_u = "URLer"; +char *msg_top_r = "henvisniger"; +char *msg_top_a = "klienttyper"; +char *msg_top_c = "land"; +char *msg_top_en = "totalt inngangssider"; +char *msg_top_ex = "totalt utgangssider"; +char *msg_top_sr = "totalt søkestrenger"; +char *msg_top_i = "totalt brukernavn"; +char *msg_v_sites = "View All Sites"; +char *msg_v_urls = "View All URLs"; +char *msg_v_refs = "View All Referrers"; +char *msg_v_agents= "View All User Agents"; +char *msg_v_search= "View All Search Strings"; +char *msg_v_users = "View All Usernames"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Jan", "Feb", "Mar", + "Apr", "Mai", "Jun", + "Jul", "Aug", "Sep", + "Okt", "Nov", "Des"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Januar", "Februar", "Mars", "April", + "Mai", "Juni", "Juli", "August", + "September","Oktober", "November","Desember"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Oidentifierad svarskod", 0 }, + { "Kode 100 - Fortsett", 0 }, + { "Kode 101 - Bytter protokoll", 0 }, + { "Kode 200 - OK", 0 }, + { "Kode 201 - Opprettet", 0 }, + { "Kode 202 - Akseptert", 0 }, + { "Kode 203 - Ikke-authorativ informasjon", 0 }, + { "Kode 204 - Ikke noe innehold", 0 }, + { "Kode 205 - Tilbakestiller innehold", 0 }, + { "Kode 206 - Partiellt innehold", 0 }, + { "Kode 300 - Flervalg", 0 }, + { "Kode 301 - Permanent flyttet", 0 }, + { "Kode 302 - Funnet", 0 }, + { "Kode 303 - Se annen", 0 }, + { "Kode 304 - Uforandret", 0 }, + { "Kode 305 - Bruk proxy", 0 }, + { "Kode 307 - Tilfeldig flyttet", 0 }, + { "Kode 400 - Feilaktig forespørsel", 0 }, + { "Kode 401 - Ikke autorisert", 0 }, + { "Kode 402 - Betaling kreves", 0 }, + { "Kode 403 - ikke tillatt", 0 }, + { "Kode 404 - Ikke funnet", 0 }, + { "Kode 405 - Metode ikke tillatt", 0 }, + { "Kode 406 - Ikke aksepterbar", 0 }, + { "Kode 407 - Verifiering fra proxy kreves", 0 }, + { "Kode 408 - Forespørselen gikk over tiden", 0 }, + { "Kode 409 - Konflikt", 0 }, + { "Kode 410 - Borte", 0 }, + { "Kode 411 - Trenger lengde", 0 }, + { "Kode 412 - Vilkår misslyktes", 0 }, + { "Kode 413 - Forespørselsenhet for stor", 0 }, + { "Kode 414 - Forespørrsels-URL for lang", 0 }, + { "Kode 415 - Medietype ikke støttet", 0 }, + { "Kode 416 - Forespurt intervall ikke tilgjengelig", 0 }, + { "Kode 417 - Expectation Failed", 0 }, + { "Kode 500 - Intern serverfeil", 0 }, + { "Kode 501 - Ikke implementert", 0 }, + { "Kode 502 - Feil gateway", 0 }, + { "Kode 503 - Tjenesten utilgjengelig", 0 }, + { "Kode 504 - Gateway gikk over tiden", 0 }, + { "Kode 505 - denne HTTP-versionen støttes ikke", 0 } }; + +char *msg_title = "Statistikk over bruk for"; +char *msg_h_other = "Annen"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Ikke oppslått/ukjent", 0,0,0 }, +{ IDX_3C('c','o','m'), "Kommersiell (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Utdanning (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "USA, staten (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "Internasjonalt (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "USA, militær (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Nettverk (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Ideell organisasjon (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Arpanet (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Nato (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "Forenede Arabiske Emirater", 0,0,0 }, +{ IDX_2C('a','f'), "Afghanistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua and Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armenia", 0,0,0 }, +{ IDX_2C('a','n'), "Nederland", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarktis", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "Amerikansk Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Østerrike", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbadjan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgia", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brazil", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Island", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Belarus", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Canada", 0,0,0 }, +{ IDX_2C('c','c'), "Cocosøyene", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Sentralafrikanske republikk", 0,0,0 }, +{ IDX_2C('c','g'), "Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Sveits", 0,0,0 }, +{ IDX_2C('c','i'), "Elfensbenkysten", 0,0,0 }, +{ IDX_2C('c','k'), "Cook Islands", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Kamerun", 0,0,0 }, +{ IDX_2C('c','n'), "Kina", 0,0,0 }, +{ IDX_2C('c','o'), "Colombia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Julön", 0,0,0 }, +{ IDX_2C('c','y'), "Cypros", 0,0,0 }, +{ IDX_2C('c','z'), "Tsjekkia", 0,0,0 }, +{ IDX_2C('d','e'), "Tyskland", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Danmark", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Dominikanske Republikk", 0,0,0 }, +{ IDX_2C('d','z'), "Algeri", 0,0,0 }, +{ IDX_2C('e','c'), "Equador", 0,0,0 }, +{ IDX_2C('e','e'), "Estland", 0,0,0 }, +{ IDX_2C('e','g'), "Egypt", 0,0,0 }, +{ IDX_2C('e','h'), "Vestsahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Spania", 0,0,0 }, +{ IDX_2C('e','t'), "Etiopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finland", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Falklandsøyene", 0,0,0 }, +{ IDX_2C('f','m'), "Mikronesia", 0,0,0 }, +{ IDX_2C('f','o'), "Faraoøyene", 0,0,0 }, +{ IDX_2C('f','r'), "Frankrike", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "England", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgia", 0,0,0 }, +{ IDX_2C('g','f'), "Franska Guiana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Grønnland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Ekvatorialguinea", 0,0,0 }, +{ IDX_2C('g','r'), "Hellas", 0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia och S. Sandwichøyene", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard- och McDonaldøyene", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Kroatia", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Ungarn" , 0,0,0 }, +{ IDX_2C('i','d'), "Indonesia", 0,0,0 }, +{ IDX_2C('i','e'), "Irland", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "India", 0,0,0 }, +{ IDX_2C('i','o'), "British Indian Ocean Territory", 0,0,0 }, +{ IDX_2C('i','q'), "Irak", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Island", 0,0,0 }, +{ IDX_2C('i','t'), "Italia", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Jordanien", 0,0,0 }, +{ IDX_2C('j','p'), "Japan", 0,0,0 }, +{ IDX_2C('k','e'), "Kenya", 0,0,0 }, +{ IDX_2C('k','g'), "Kirgistan", 0,0,0 }, +{ IDX_2C('k','h'), "Kambodja", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts och Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Nordkorea", 0,0,0 }, +{ IDX_2C('k','r'), "Sydkorea", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Caymanøyene", 0,0,0 }, +{ IDX_2C('k','z'), "Kazachstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Libanon", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Litauen", 0,0,0 }, +{ IDX_2C('l','u'), "Luxembourg", 0,0,0 }, +{ IDX_2C('l','v'), "Lettland", 0,0,0 }, +{ IDX_2C('l','y'), "Libya", 0,0,0 }, +{ IDX_2C('m','a'), "Marocco", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldavia", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Malagasy", 0,0,0 }, +{ IDX_2C('m','h'), "Marshalløyene", 0,0,0 }, +{ IDX_2C('m','k'), "Makedonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolia", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Norra Marianaøyene", 0,0,0 }, +{ IDX_2C('m','q'), "Martinique", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldivene", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexico", 0,0,0 }, +{ IDX_2C('m','y'), "Malaysia", 0,0,0 }, +{ IDX_2C('m','z'), "Moçambique", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "Nye Caledonia", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Island", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Nederland", 0,0,0 }, +{ IDX_2C('n','o'), "Norge", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "Nye Zeeland", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "Fransk Polynesia", 0,0,0 }, +{ IDX_2C('p','g'), "Papua Nya Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Filippinene", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Polen", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre och Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Romania", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Russland", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saudiarabia", 0,0,0 }, +{ IDX_2C('s','b'), "Solomonøyene", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Sverige", 0,0,0 }, +{ IDX_2C('s','g'), "Singapore", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenien", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbard och Jan Mayen-øyene", 0,0,0 }, +{ IDX_2C('s','k'), "Slovakien", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Surinam", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome och Principe", 0,0,0 }, +{ IDX_2C('s','u'), "Sovjet (tidligere)", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Turks och Caicosøyene", 0,0,0 }, +{ IDX_2C('t','d'), "Chad", 0,0,0 }, +{ IDX_2C('t','f'), "Søndre Fransk territorier", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Thailand", 0,0,0 }, +{ IDX_2C('t','j'), "Tajikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisien", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Øst-timor", 0,0,0 }, +{ IDX_2C('t','r'), "Tyrkia", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad og Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraina", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "Storbritannia", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying Islands", 0,0,0 }, +{ IDX_2C('u','s'), "USA", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatikanstaten", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent och Grenadinerna", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Virgin-øyene (Britiske)", 0,0,0 }, +{ IDX_2C('v','i'), "Virgin-øyene (Amerikanske)", 0,0,0 }, +{ IDX_2C('v','n'), "Vietnam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis och Futunaøyene", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Jugoslavia", 0,0,0 }, +{ IDX_2C('z','a'), "Sydafrika", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.polish b/lang/webalizer_lang.polish new file mode 100644 index 0000000..a6c12bd --- /dev/null +++ b/lang/webalizer_lang.polish @@ -0,0 +1,640 @@ +/* + webalizer_lang.polish + + Webalizer V2.0x Language Support file for Polish. + 15-May-1998 by Bradford L. Barrett (brad@mrunix.net) + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 08-Jun-1998 Translated by Dariusz P. Pawlak (darekp@lib.amu.edu.pl) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 27-Jan-2000 Some translation fixes and updates by Jerzy Hodor (jh@rsi.pl) + 30-Jan-2000 Country code corrections by Bohdan Horst (nexus@hoth.amu.edu.pl) + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 20-Mar-2000 Translation updates by Piotr Klaban (makler@man.torun.pl) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Polish"; +char *langcode = "pl"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* te s± u¿ywane tylko w podsumowaniach */ +/* Format: XXX rekordów (XXX zignorowano, XXX z³ych) w ci±gu X.XX sekund */ +char *msg_records = "zapisów"; +char *msg_addresses="adres(ów)"; +char *msg_ignored = "opuszczono"; +char *msg_bad = "z³y(ch)"; +char *msg_in = "w"; +char *msg_seconds = "sekund"; + +/* progress and setup error messages */ +char *msg_log_err = "B³±d: Nie mogê otworzyæ pliku logu"; +char *msg_log_use = "U¿ywam pliku logu"; +char *msg_dir_err = "B³±d: Nie mogê zmieniæ katalogu na"; +char *msg_dir_use = "Tworzê wynik w"; +char *msg_cur_dir = "bie¿±cym katalogu"; +char *msg_hostname= "Raport tworzony dla hosta"; +char *msg_ign_hist= "Ignorujê poprzedni± historiê..."; +char *msg_no_hist = "Nie znalaz³em pliku historii..."; +char *msg_get_hist= "Czytam plik historii..."; +char *msg_put_hist= "Zapisujê informacjê historii..."; +char *msg_hist_err= "B³±d: Nie mogê zapisaæ pliku historii"; +char *msg_bad_hist= "B³±d: Pomijam b³êdny zapis historii"; +char *msg_bad_conf= "B³±d: Nie mogê otworzyæ pliku konfiguracyjnego"; +char *msg_bad_key = "Ostrze¿enie: B³êdne s³owo kluczowe"; +char *msg_bad_date= "B³±d: Pomijam rekord (b³êdna data)"; +char *msg_ign_nscp= "Pomijam nag³ówek rekordu Netscepe'a"; +char *msg_bad_rec = "Pomijam b³êdny zapis"; +char *msg_no_vrec = "Nie znalaz³em prawid³owych rekordów!"; +char *msg_gen_rpt = "Generujê raport dla"; +char *msg_gen_sum = "Generujê raport sumaryczny"; +char *msg_get_data= "Czytam dane z poprzedniego uruchomienia..."; +char *msg_put_data= "Zapisujê dane z bie¿±cego uruchomienia..."; +char *msg_no_data = "Nie znalaz³em danych z poprzedniego uruchomienia..."; +char *msg_bad_data= "B³±d: Nie mogê odczytaæ danych z poprzedniego uruchomienia"; +char *msg_data_err= "B³±d: Nie mogê zapisaæ danych z bie¿±cego uruchomienia"; +char *msg_dup_data= "Ostrze¿enie: Prawdopodobnie znalaz³em zdublowane dane"; + +/* DNS Stuff */ +char *msg_dns_nocf= "Nie podano pliku buforuj±cego, przerywam dzia³anie..."; +char *msg_dns_nodb= "B³±d: Nie mogê otworzyæ pliku buforuj±cego DNS"; +char *msg_dns_nolk= "B³±d: Nie mogê zablokowaæ pliku buforuj±cego DNS"; +char *msg_dns_usec= "Wykorzystujê plik buforuj±cy DNS"; +char *msg_dns_rslv= "Przeszukujê DNS"; +char *msg_dns_none= "Brak adresów IP do przetworzenia"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Nie mogê przydzieliæ pamiêci, najczêstsze lokalizacje anulowane!"; +char *msg_nomem_tr= "Nie mogê przydzieliæ pamiêci, najczêstsze odno¶niki anulowane!"; +char *msg_nomem_tu= "Nie mogê przydzieliæ pamiêci, najczêstsze URLe anulowane!"; +char *msg_nomem_tc= "Nie mogê przydzieliæ pamiêci, najczêstsze kraje anulowane!"; +char *msg_nomem_ta= "Nie mogê przydzieliæ pamiêci, najczê¶ciej u¿ywane przegl±darki anulowane!"; +char *msg_nomem_tsr="Nie mogê przydzieliæ pamiêci, najczê¶ciej szukane s³owa anulowane!"; +char *msg_nomem_ti= "Nie mogê przydzieliæ pamiêci, najczêstsze po³±czenia u¿ytkowników anulowane!"; +char *msg_nomem_dh= "B³±d w trakcie dodawania kolejnego hosta (dzienne), pomijam"; +char *msg_nomem_mh= "B³±d w trakcie dodawania kolejnego hosta (miesiêczne), pomijam"; +char *msg_nomem_u = "B³±d w trakcie dodawania kolejnego URLa, pomijam"; +char *msg_nomem_a = "B³±d w trakcie dodawania kolejnego przegl±darki, pomijam"; +char *msg_nomem_r = "B³±d w trakcie dodawania kolejnego odno¶nika, pomijam"; +char *msg_nomem_sc= "B³±d w trakcie dodawania kolejnego szukanego s³owa, pomijam"; +char *msg_nomem_i = "B³±d w trakcie dodawania kolejnego u¿ytkownika, pomijam"; + +/* log record errors */ +char *msg_big_rec = "B³±d: Pomijam zbyt du¿y zapis logu"; +char *msg_big_host= "Ostrze¿enie: Obcinam, przekroczona wielko¶æ nazwy hosta"; +char *msg_big_date= "Ostrze¿enie: Obcinam, przekroczona wielko¶æ pola daty"; +char *msg_big_req = "Ostrze¿enie: Obcinam, przekroczona wielko¶æ pola ¿±dania"; +char *msg_big_ref = "Ostrze¿enie: Obcinam, przekroczona wielko¶æ pola odno¶nika"; +char *msg_big_user= "Ostrze¿enie: Obcinam, przekroczona d³ugo¶æ nazwy u¿ytkownika"; +char *msg_big_one = "Ostrze¿enie: Napis przekracza dopuszczaln± wielko¶æ"; + +/* misc errors */ +char *msg_no_open = "B³±d: Nie mogê otworzyæ pliku"; + +/* Help display... */ +char *h_usage1 = "U¿ycie"; +char *h_usage2 = "[opcje] [plik logu]"; +char *h_msg[]= { + "-h = wy¶wietla te informacje" , + "-V = wy¶wietla informacje o wersji" , + "-v = be verbose" , + "-d = wy¶wietla dodatkowe informacje" , + "-F typ = typ logu. typ= (clf | ftp | squid | w3c)", + "-f = zignoruj b³êdy czasu kolejnych wywo³añ", + "-i = pomija plik historii" , + "-p = zachowuje stan (przyrostowy)" , + "-b = ignore state (incremental)" , + "-q = wy³±cza komunikaty informacyjne" , + "-Q = wy³±cza wszystkie komunikaty" , + "-Y = wy³±cza wykres krajów" , + "-G = wy³±cza wykres godzinny" , + "-H = wy³±cza statystykê godzinn±" , + "-L = wy³±cza kolorowe s³upki ledendy" , + "-l num = w³±cza num linii w tle wykresów" , + "-m num = czas pojedynczej wizyty (seconds)" , + "-T = wy¶wietla informacje czasowe" , + "-c plik = u¿ywa pliku konfiguracyjnego 'plik'" , + "-n nazwa = u¿ywana nazwa hosta" , + "-o katalog= katalog u¿ywany do zapisu" , + "-t nazwa = tytu³ 'nazwa' dla raportu" , + "-a nazwa = ukrywa program klienta 'nazwa'" , + "-r nazwa = ukrywa odno¶nik 'nazwa'" , + "-s nazwa = ukrywa lokalizacjê 'nazwa'" , + "-u nazwa = ukrywa URL 'nazwa'" , + "-x nazwa = stosuje pliki o rozszerzeniu 'nazwa'", + "-O nazwa = Omit page 'nazwa'" , + "-P nazwa = strony o rozszerzeniu 'nazwa'" , + "-I nazwa = inna nazwa plików index.*: 'nazwa'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = wy¶wietla num najczêstszych przegl±darek", + "-C num = wy¶wietla num najczêstszych krajów" , + "-R num = wy¶wietla num najczêstszych odno¶ników", + "-S num = wy¶wietla num najczêstszych lokalizacji", + "-U num = wy¶wietla num najczêstszych URLi" , + "-e num = wy¶wietla num najczêstszych stron wej¶ciowych" , + "-E num = wy¶wietla num najczêstszych stron wyj¶ciowych" , + "-g num = grupuj domeny do poziomu 'num'" , + "-X = ukryj pojedyncze lokalizacje" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D nazwa = u¿ywaj pliku buforuj±cego DNS 'nazwa'", + "-N num = liczba procesów DNS (0=wy³±cz)" , + "-j = Enable native GeoDB lookups" , + "-J nazwa = Use GeoDB database 'nazwa'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W nazwa = Use GeoIP database 'nazwa'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Prezentowany okres"; +char *msg_hhdr_gt = "Wygenerowano"; + + +/* main index strings */ +char *msg_main_us = "Raport sumaryczny"; +/* char *msg_main_per= "Ostatnie 12 miesiêcy"; */ +char *msg_main_per= "Sumarycznie w miesi±cu:"; +char *msg_main_sum= "Sumarycznie w miesi±cu:"; +char *msg_main_da = "¦rednio dziennie"; +char *msg_main_mt = "Ogólnie w miesi±cu: "; + +/* month HTML page strings */ +char *msg_hmth_du = "Raport Dzienny - "; +char *msg_hmth_hu = "Raport Godzinowy - "; + +/* table header strings */ +char *msg_h_by = "uszeregowane wg"; +char *msg_h_avg = "¦rednio"; +char *msg_h_max = "Maks."; +char *msg_h_total = "Wszystkie"; +char *msg_h_totals= "Suma"; +char *msg_h_day = "Dzieñ"; +char *msg_h_mth = "Miesi±c"; +char *msg_h_hour = "Godzina"; +char *msg_h_hits = "Wywo³ania"; +char *msg_h_pages = "Strony"; +char *msg_h_visits= "Wizyty"; +char *msg_h_files = "Pliki"; +char *msg_h_sites = "Lokalizacje"; +char *msg_h_xfer = "KB"; +char *msg_h_hname = "Nazwa hosta"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Przegl±darka"; +char *msg_h_ref = "Odno¶niki"; +char *msg_h_ctry = "Kraj"; +char *msg_h_search= "Wyszukiwany ci±g znaków"; +char *msg_h_uname = "U¿ytkownik"; + +/* links along top of page */ +char *msg_hlnk_ds = "Statystyki dzienne"; +char *msg_hlnk_hs = "Statystyki godzinne"; +char *msg_hlnk_u = "URL'e"; +char *msg_hlnk_s = "Lokalizacje"; +char *msg_hlnk_a = "Przegl±darki"; +char *msg_hlnk_c = "Kraje"; +char *msg_hlnk_r = "Odno¶niki"; +char *msg_hlnk_en = "Wej¶cia"; +char *msg_hlnk_ex = "Wyj¶cia"; +char *msg_hlnk_sr = "Poszukiwane"; +char *msg_hlnk_i = "U¿ytkownicy"; + +/* monthly total table */ +char *msg_mtot_ms = "Statystyka w miesi±cu:"; +char *msg_mtot_th = "Ca³kowita liczba wywo³añ"; +char *msg_mtot_tf = "Ca³kowita liczba plików"; +char *msg_mtot_tx = "Ca³kowita liczba KB"; +char *msg_mtot_us = "Ca³kowita liczba unikalnych lokalizacji"; +char *msg_mtot_ur = "Ca³kowita liczba unikalnych odno¶ników"; +char *msg_mtot_ua = "Ca³kowita liczba unikalnych przegl±darek"; +char *msg_mtot_uu = "Ca³kowita liczba unikalnych URLi"; +char *msg_mtot_ui = "Ca³kowita liczba unikalnych u¿ytkowników"; +char *msg_mtot_mhd= "Wywo³añ dziennie"; +char *msg_mtot_mhh= "Wywo³añ na godzinê"; +char *msg_mtot_mfd= "Plików dziennie"; +char *msg_mtot_mpd= "Stron dziennie"; +char *msg_mtot_msd= "Lokalizacji dziennie"; +char *msg_mtot_mvd= "Wizyt dziennie"; +char *msg_mtot_mkd= "Kilobajtów dziennie"; +char *msg_mtot_rc = "Wywo³ania wed³ug kodu odpowiedzi"; + +/* daily total table */ +char *msg_dtot_ds = "Dzienne statystyki - "; + +/* hourly total table */ +char *msg_htot_hs = "Godzinowe statystyki - "; + +/* country pie chart */ +char *msg_ctry_use= "Odwo³ania wg krajów - "; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Pierwsze"; +char *msg_top_of = "z ogólnej liczby"; +char *msg_top_s = "lokalizacji"; +char *msg_top_u = "URLi"; +char *msg_top_r = "odno¶ników"; +char *msg_top_a = "przegl±darek"; +char *msg_top_c = "krajów"; +char *msg_top_en = "stron wej¶ciowych"; +char *msg_top_ex = "stron wyj¶ciowych"; +char *msg_top_sr = "szukanych ci±gów znaków"; +char *msg_top_i = "u¿ytkowników"; +char *msg_v_sites = "Podgl±d wszystkich lokalizacji"; +char *msg_v_urls = "Podgl±d wszystkich URL'i"; +char *msg_v_refs = "Podgl±d wszystkich odno¶ników"; +char *msg_v_agents= "Podgl±d wszystkich przegl±darek"; +char *msg_v_search= "Podgl±d wszystkich ci±gów znaków"; +char *msg_v_users = "Podgl±d wszystkich u¿ytkowników"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Sty", "Lut", "Mar", + "Kwi", "Maj", "Cze", + "Lip", "Sie", "Wrz", + "Pa¼", "Lis", "Gru"}; + +/* long month names - can be any length */ +char *l_month[12]={ "styczeñ", "luty", "marzec", "kwiecieñ", + "maj", "czerwiec", "lipiec", "sierpieñ", + "wrzesieñ", "pa¼dziernik", "listopad", "grudzieñ"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Niezdefiniowany kod odpowiedzi", 0 }, + { "Code 100 - Kontynuuj", 0 }, + { "Code 101 - Zmieniam protoko³y", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Utworzono", 0 }, + { "Code 202 - Zaakceptowano", 0 }, + { "Code 203 - Niewiarygodna informacja", 0 }, + { "Code 204 - Brak zawarto¶ci", 0 }, + { "Code 205 - Kasujê zawarto¶æ", 0 }, + { "Code 206 - Czê¶ciowa zawarto¶æ", 0 }, + { "Code 300 - Wielokrotny wybór", 0 }, + { "Code 301 - Przeniesiono na sta³e", 0 }, + { "Code 302 - Przeniesiono tymczasowo", 0 }, + { "Code 303 - Zobacz inne", 0 }, + { "Code 304 - Niezmodyfikowany", 0 }, + { "Code 305 - U¿yj proxy", 0 }, + { "Code 307 - Tymczasowe przekierowanie", 0 }, + { "Code 400 - B³êdne ¿±danie", 0 }, + { "Code 401 - Nieautoryzowany", 0 }, + { "Code 402 - ¯±dana zap³ata", 0 }, + { "Code 403 - Zakazane", 0 }, + { "Code 404 - Nie znaleziono", 0 }, + { "Code 405 - Nieuznawana metoda", 0 }, + { "Code 406 - Nie akceptowane", 0 }, + { "Code 407 - Niezbêdna autentykacja przez proxy", 0 }, + { "Code 408 - Czas zapytania min±³", 0 }, + { "Code 409 - Konflikt", 0 }, + { "Code 410 - Ju¿ niedostêpne", 0 }, + { "Code 411 - Wymagana d³ugo¶æ", 0 }, + { "Code 412 - Warunki niespe³nione", 0 }, + { "Code 413 - Zapytanie za du¿e", 0 }, + { "Code 414 - Zapytanie URI za d³ugie", 0 }, + { "Code 415 - Nieobs³ugiwany typ no¶nika", 0 }, + { "Code 416 - Zapytanie-Zakres niedostêpny", 0 }, + { "Code 417 - Warunek niespe³niony", 0 }, + { "Code 500 - Wewnêtrzny b³±d serwera", 0 }, + { "Code 501 - Niezaimplementowane", 0 }, + { "Code 502 - Z³a brama", 0 }, + { "Code 503 - Serwis niedostêpny", 0 }, + { "Code 504 - Up³yn±³ czas bramkowania", 0 }, + { "Code 505 - Nieobs³ugiwana wersja HTTP", 0 } }; + +char *msg_title = "Statystyki serwera dla"; +char *msg_h_other = "Inne"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Nieznany", 0,0,0 }, +{ IDX_3C('c','o','m'), "Komercyjna (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Edukacyjna (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "Rz±dowa USA (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "Miêdzynarodowa (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "Wojskowa USA (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Sieæ (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Organizacja niekomercyjna (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Stara Arpanet (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Sieæ NATO", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "Zjednoczone Emiraty Arabskie", 0,0,0 }, +{ IDX_2C('a','f'), "Afganistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua i Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armenia", 0,0,0 }, +{ IDX_2C('a','n'), "Antyle Holenderskie", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarktyka", 0,0,0 }, +{ IDX_2C('a','r'), "Argentyna", 0,0,0 }, +{ IDX_2C('a','s'), "Samoa Amerykañskie", 0,0,0 }, +{ IDX_2C('a','t'), "Austria", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbejd¿an", 0,0,0 }, +{ IDX_2C('b','a'), "Bo¶nia i Hercegowina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesz", 0,0,0 }, +{ IDX_2C('b','e'), "Belgia", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bu³garia", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermudy", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei", 0,0,0 }, +{ IDX_2C('b','o'), "Boliwia", 0,0,0 }, +{ IDX_2C('b','r'), "Brazylia", 0,0,0 }, +{ IDX_2C('b','s'), "Wyspy Bahama", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Wyspa Bouvet", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Bia³oru¶", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Kanada", 0,0,0 }, +{ IDX_2C('c','c'), "Wyspy Kokosowe", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Republika ¦rodkowoafrykañska", 0,0,0 }, +{ IDX_2C('c','g'), "Kongo", 0,0,0 }, +{ IDX_2C('c','h'), "Szwajcaria", 0,0,0 }, +{ IDX_2C('c','i'), "Wybrze¿e Ko¶ci S³oniowej", 0,0,0 }, +{ IDX_2C('c','k'), "Wyspy Cooka", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Kamerun", 0,0,0 }, +{ IDX_2C('c','n'), "Chiny", 0,0,0 }, +{ IDX_2C('c','o'), "Kolumbia", 0,0,0 }, +{ IDX_2C('c','r'), "Kostaryka", 0,0,0 }, +{ IDX_2C('c','u'), "Kuba", 0,0,0 }, +{ IDX_2C('c','v'), "Wyspy Zielonego Przyl±dka", 0,0,0 }, +{ IDX_2C('c','x'), "Wyspa Bo¿ego Narodzenia", 0,0,0 }, +{ IDX_2C('c','y'), "Cypr", 0,0,0 }, +{ IDX_2C('c','z'), "Czechy", 0,0,0 }, +{ IDX_2C('d','e'), "Niemcy", 0,0,0 }, +{ IDX_2C('d','j'), "D¿ibuti", 0,0,0 }, +{ IDX_2C('d','k'), "Dania", 0,0,0 }, +{ IDX_2C('d','m'), "Dominika", 0,0,0 }, +{ IDX_2C('d','o'), "Dominikana", 0,0,0 }, +{ IDX_2C('d','z'), "Algieria", 0,0,0 }, +{ IDX_2C('e','c'), "Ekwador", 0,0,0 }, +{ IDX_2C('e','e'), "Estonia", 0,0,0 }, +{ IDX_2C('e','g'), "Egipt", 0,0,0 }, +{ IDX_2C('e','h'), "Sahara Zachodnia", 0,0,0 }, +{ IDX_2C('e','r'), "Erytrea", 0,0,0 }, +{ IDX_2C('e','s'), "Hiszpania", 0,0,0 }, +{ IDX_2C('e','t'), "Etiopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finlandia", 0,0,0 }, +{ IDX_2C('f','j'), "Fid¿i", 0,0,0 }, +{ IDX_2C('f','k'), "Falklandy", 0,0,0 }, +{ IDX_2C('f','m'), "Mikronezja", 0,0,0 }, +{ IDX_2C('f','o'), "Wyspy Owcze", 0,0,0 }, +{ IDX_2C('f','r'), "Francja", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Wielka Brytania", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Gruzja", 0,0,0 }, +{ IDX_2C('g','f'), "Gujana Francuska", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Grenlandia", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Gwinea", 0,0,0 }, +{ IDX_2C('g','p'), "Gwadelupa", 0,0,0 }, +{ IDX_2C('g','q'), "Gwinea Równikowa", 0,0,0 }, +{ IDX_2C('g','r'), "Grecja", 0,0,0 }, +{ IDX_2C('g','s'), "Georgia P³d. i Wyspy Sandwicha P³d.", 0,0,0 }, +{ IDX_2C('g','t'), "Gwatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Gwinea Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Gujana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Wyspy Heard i McDonald", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Chorwacja", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Wêgry", 0,0,0 }, +{ IDX_2C('i','d'), "Indonezja", 0,0,0 }, +{ IDX_2C('i','e'), "Irlandia", 0,0,0 }, +{ IDX_2C('i','l'), "Izrael", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "Indie", 0,0,0 }, +{ IDX_2C('i','o'), "Bryt. Teryt. Oceanu Indyjskiego", 0,0,0 }, +{ IDX_2C('i','q'), "Irak", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Islandia", 0,0,0 }, +{ IDX_2C('i','t'), "W³ochy", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamajka", 0,0,0 }, +{ IDX_2C('j','o'), "Jordania", 0,0,0 }, +{ IDX_2C('j','p'), "Japonia", 0,0,0 }, +{ IDX_2C('k','e'), "Kenia", 0,0,0 }, +{ IDX_2C('k','g'), "Kirgistan", 0,0,0 }, +{ IDX_2C('k','h'), "Kambod¿a", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Komory", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts i Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Korea Pó³nocna", 0,0,0 }, +{ IDX_2C('k','r'), "Korea Po³udniowa", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwejt", 0,0,0 }, +{ IDX_2C('k','y'), "Kajmany", 0,0,0 }, +{ IDX_2C('k','z'), "Kazachstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Liban", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Lichtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Litwa", 0,0,0 }, +{ IDX_2C('l','u'), "Luksemburg", 0,0,0 }, +{ IDX_2C('l','v'), "£otwa", 0,0,0 }, +{ IDX_2C('l','y'), "Libia", 0,0,0 }, +{ IDX_2C('m','a'), "Maroko", 0,0,0 }, +{ IDX_2C('m','c'), "Monako", 0,0,0 }, +{ IDX_2C('m','d'), "Mo³dawia", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagaskar", 0,0,0 }, +{ IDX_2C('m','h'), "Wyspy Marshalla", 0,0,0 }, +{ IDX_2C('m','k'), "Macedonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolia", 0,0,0 }, +{ IDX_2C('m','o'), "Makao", 0,0,0 }, +{ IDX_2C('m','p'), "Mariany Pó³nocne", 0,0,0 }, +{ IDX_2C('m','q'), "Martynika", 0,0,0 }, +{ IDX_2C('m','r'), "Mauretania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Malediwy", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Meksyk", 0,0,0 }, +{ IDX_2C('m','y'), "Malezja", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambik", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "Nowa Kaledonia", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nikaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Holandia", 0,0,0 }, +{ IDX_2C('n','o'), "Norwegia", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "Nowa Zelandia", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "Polinezja Francuska", 0,0,0 }, +{ IDX_2C('p','g'), "Papua Nowa Gwinea", 0,0,0 }, +{ IDX_2C('p','h'), "Filipiny", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Polska", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre i Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugalia", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paragwaj", 0,0,0 }, +{ IDX_2C('q','a'), "Katar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Rumunia", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Rosja", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Arabia Saudyjska", 0,0,0 }, +{ IDX_2C('s','b'), "Wyspy Salomona", 0,0,0 }, +{ IDX_2C('s','c'), "Seszele", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Szwecja", 0,0,0 }, +{ IDX_2C('s','g'), "Singapur", 0,0,0 }, +{ IDX_2C('s','h'), "¦w. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "S³owenia", 0,0,0 }, +{ IDX_2C('s','j'), "Wyspy Svalbard i Jan Mayen", 0,0,0 }, +{ IDX_2C('s','k'), "S³owacja", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Surinam", 0,0,0 }, +{ IDX_2C('s','t'), "Wyspy ¦w. Tomasza i Ksi±¿êca", 0,0,0 }, +{ IDX_2C('s','u'), "ZSRR (by³y)", 0,0,0 }, +{ IDX_2C('s','v'), "Salwador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Suazi", 0,0,0 }, +{ IDX_2C('t','c'), "Turks i Caicos", 0,0,0 }, +{ IDX_2C('t','d'), "Czad", 0,0,0 }, +{ IDX_2C('t','f'), "Francuskie Terytoria Po³udniowe", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Tajlandia", 0,0,0 }, +{ IDX_2C('t','j'), "Tad¿ykistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunezja", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Wschodni Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turcja", 0,0,0 }, +{ IDX_2C('t','t'), "Trynidad i Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Tajwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraina", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "Wielka Brytania", 0,0,0 }, +{ IDX_2C('u','m'), "Mniejsze Wyspy USA", 0,0,0 }, +{ IDX_2C('u','s'), "Stany Zjednoczone", 0,0,0 }, +{ IDX_2C('u','y'), "Urugwaj", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Watykan", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent i Grenadyny", 0,0,0 }, +{ IDX_2C('v','e'), "Wenezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Brytyjskie Wyspy Dziewicze", 0,0,0 }, +{ IDX_2C('v','i'), "Wyspy Dziewicze (USA)", 0,0,0 }, +{ IDX_2C('v','n'), "Wietnam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wyspy Wallis i Futuna", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Jemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Jugos³awia", 0,0,0 }, +{ IDX_2C('z','a'), "Republika Po³udniowej Afryki", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.portuguese b/lang/webalizer_lang.portuguese new file mode 100644 index 0000000..3d3d46f --- /dev/null +++ b/lang/webalizer_lang.portuguese @@ -0,0 +1,639 @@ +/* + webalizer_lang.portuguese + + Webalizer V2.0x Language Support file for Portuguese. + 15-May-1998 by Bradford L. Barrett (brad@mrunix.net) + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 12-Feb-1999 Translated to Portuguese by Michele America + (micheleamerica@mail.geocities.com) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 08-Mar-2002 Updated by Nuno Loureiro (nuno@eth.pt) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Portuguese"; +char *langcode = "pt"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "registos"; +char *msg_addresses="enderecos"; +char *msg_ignored = "ignorados"; +char *msg_bad = "maus"; +char *msg_in = "em"; +char *msg_seconds = "segundos"; + +/* progress and setup error messages */ +char *msg_log_err = "Erro: Nao foi possivel abrir ficheiro de registo"; +char *msg_log_use = "A usar registo"; +char *msg_dir_err = "Erro: Nao foi possivel mudar directorio para"; +char *msg_dir_use = "A gerar saida no"; +char *msg_cur_dir = "directorio corrente"; +char *msg_hostname= "Hostname para relatorios e'"; +char *msg_ign_hist= "A ignorar historico anterior..."; +char *msg_no_hist = "Ficheiro de historico nao encontrado..."; +char *msg_get_hist= "A ler ficheiro de historico..."; +char *msg_put_hist= "A guardar informacao no historico..."; +char *msg_hist_err= "Erro: Impossivel escrever no ficheiro de historico"; +char *msg_bad_hist= "Erro: A ignorar registo invalido no ficheiro de historico"; +char *msg_bad_conf= "Erro: Impossivel abrir ficheiro de configuracao"; +char *msg_bad_key = "Aviso: Parametro invalido"; +char *msg_bad_date= "Erro: A ignorar registo (data invalida)"; +char *msg_ign_nscp= "A ignorar registo com cabecalho do Netscape"; +char *msg_bad_rec = "A ignorar registo invalido"; +char *msg_no_vrec = "Nao foram encontrado registo validos!"; +char *msg_gen_rpt = "A gerar relatorio de"; +char *msg_gen_sum = "A gerar relatorio sumario"; +char *msg_get_data= "A ler dados da execucao anterior..."; +char *msg_put_data= "A guardar dados da execucao currente..."; +char *msg_no_data = "Dados da execucao anterior nao encontrados..."; +/*char *msg_bad_data= "Registo de dados invalido";*/ +char *msg_bad_data= "Error: Unable to restore run data"; +char *msg_data_err= "Erro: Impossivel guardar dados da execucao currente"; +char *msg_dup_data= "Aviso: Encontrados dados possivelmente duplicados"; + +/* DNS Stuff */ +char *msg_dns_nocf= "No cache file specified, aborting..."; +char *msg_dns_nodb= "Error: Unable to open DNS cache file"; +char *msg_dns_nolk= "Error: Unable to lock DNS cache file"; +char *msg_dns_usec= "Using DNS cache file"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "None to process"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Impossivel alocar memoria suficiente, Top Sites desligado!"; +char *msg_nomem_tr= "Impossivel alocar memoria suficiente, Top Referrers desligado!"; +char *msg_nomem_tu= "Impossivel alocar memoria suficiente, Top URLs desligado!"; +char *msg_nomem_tc= "Impossivel alocar memoria suficiente, Top Countries desligado!"; +char *msg_nomem_ta= "Impossivel alocar memoria suficiente, Top User Agents desligado!"; +char *msg_nomem_tsr="Can't allocate enough memory, Top Search Strings disabled!"; +char *msg_nomem_ti= "Can't allocate enough memory, Top Usernames disabled!"; +char *msg_nomem_dh= "Erro ao adicionar host (diario), a ignorar"; +char *msg_nomem_mh= "Erro ao adicionar host (mensal), a ignorar"; +char *msg_nomem_u = "Erro ao adicionar URL, a ignorar"; +char *msg_nomem_a = "Erro ao adicionar User Agent, a ignorar"; +char *msg_nomem_r = "Erro ao adicionar Referrer, a ignorar"; +char *msg_nomem_sc= "Error adding Search String node, skipping"; +char *msg_nomem_i = "Error adding Username node, skipping"; + +/* log record errors */ +char *msg_big_rec = "Erro: A ignorar registo grande de mais"; +char *msg_big_host= "Aviso: A truncar hostname grande de mais"; +char *msg_big_date= "Aviso: A truncar campo de data grande de mais"; +char *msg_big_req = "Aviso: A truncar campo de pedido grande de mais"; +char *msg_big_ref = "Aviso: A truncar campo de referrer grande de mais"; +char *msg_big_user= "Warning: Truncating oversized username"; +char *msg_big_one = "Aviso: Cadeia de caracteres excede tamanho de armazenamento"; + +/* misc errors */ +char *msg_no_open = "Erro: Impossivel abrir ficheiro"; + +/* Help display... */ +char *h_usage1 = "Utilizacao"; +char *h_usage2 = "[opcoes] [ficheiro de log]"; +char *h_msg[]= { + "-h = mostra esta mensagem de ajuda" , + "-V = mostra info sobre versao" , + "-v = be verbose" , + "-d = mostra info adicional para debug" , + "-F type = Log type. type= (clf | ftp | squid | w3c)", + "-f = fold sequence errors" , + "-i = ignorar ficheiro de historico" , + "-p = preservar estado (incremental)" , + "-b = ignorar estado (incremental)" , + "-q = suprimir mensagens de informacao" , + "-Q = suprimir _TODAS_ as mensagens" , + "-Y = supress country graph" , + "-G = suprimir grafico por horas" , + "-H = suprimir estatisticas por horas" , + "-L = supress color coded graph legends" , + "-l num = use num background lines on graph" , + "-m num = Visit timeout value (seconds)" , + "-T = mostra informacao de timing" , + "-c fich = usar ficheiro de configuracao 'fich'", + "-n nome = usar hostname 'nome'" , + "-o dir = directorio de output a usar" , + "-t nome = titulo do relatorio" , + "-a nome = esconder user agent 'nome'" , + "-r nome = esconder referrer 'nome'" , + "-s nome = esconder site 'nome'" , + "-u nome = esconder URL 'nome'" , + "-x nome = Use filename extension 'name'" , + "-O nome = Omit page 'name'" , + "-P nome = Page type extension 'name'" , + "-I nome = alias para Index 'nome'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Mostrar num top agents" , + "-C num = Mostrar num top countries" , + "-R num = Mostrar num top referrers" , + "-S num = Mostrar num top sites" , + "-U num = Mostrar num top URLs" , + "-e num = Mostrar num top Entry Pages" , + "-E num = Mostrar num top Exit Pages" , + "-g num = Group Domains to 'num' levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D nome = Use DNS Cache file 'nome'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoDB lookups" , + "-J nome = Use GeoDB database 'nome'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W nome = Use GeoIP database 'nome'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Sumário do Periodo"; +char *msg_hhdr_gt = "Gerado em"; + +/* main index strings */ +char *msg_main_us = "Sumário de utilização de"; +/* char *msg_main_per= "Últimos 12 Meses"; */ +char *msg_main_per= "Sumário por Mês"; +char *msg_main_sum= "Sumário por Mês"; +char *msg_main_da = "Média Diária"; +char *msg_main_mt = "Totais Mensais"; + +/* month HTML page strings */ +char *msg_hmth_du = "Uso diário de"; +char *msg_hmth_hu = "Uso por hora de"; + +/* table header strings */ +char *msg_h_by = "By"; +char *msg_h_avg = "Med"; +char *msg_h_max = "Max"; +char *msg_h_total = "Total"; +char *msg_h_totals= "Totais"; +char *msg_h_day = "Dia"; +char *msg_h_mth = "Mês"; +char *msg_h_hour = "Hora"; +char *msg_h_hits = "Hits"; +char *msg_h_pages = "Pages"; +char *msg_h_visits= "Visitas"; +char *msg_h_files = "Ficheiros"; +char *msg_h_sites = "Sites"; +char *msg_h_xfer = "KBytes"; +char *msg_h_hname = "Hostname"; +char *msg_h_url = "URL"; +char *msg_h_agent = "User Agent"; +char *msg_h_ref = "Referrer"; +char *msg_h_ctry = "Pais"; +char *msg_h_search= "String de Pesquisa"; +char *msg_h_uname = "Username"; + +/* links along top of page */ +char *msg_hlnk_ds = "Estatística Diária"; +char *msg_hlnk_hs = "Estatística por Hora"; +char *msg_hlnk_u = "URLs"; +char *msg_hlnk_s = "Sites"; +char *msg_hlnk_a = "Agents"; +char *msg_hlnk_c = "Paises"; +char *msg_hlnk_r = "Referrers"; +char *msg_hlnk_en = "Entrada"; +char *msg_hlnk_ex = "Saida"; +char *msg_hlnk_sr = "Pesquisa"; +char *msg_hlnk_i = "Utilizadores"; + +/* monthly total table */ +char *msg_mtot_ms = "Estatística Mensal de"; +char *msg_mtot_th = "Total de Hits"; +char *msg_mtot_tf = "Total de Ficheiros"; +char *msg_mtot_tx = "Total de KBytes"; +char *msg_mtot_us = "Total de Sites Únicos"; +char *msg_mtot_ur = "Total de Referrers Únicos"; +char *msg_mtot_ua = "Total de User Agents Únicos"; +char *msg_mtot_uu = "Total de URLs Únicos"; +char *msg_mtot_ui = "Total de Usernames unicos"; +char *msg_mtot_mhd= "Hits por Dia"; +char *msg_mtot_mhh= "Hits por Hora"; +char *msg_mtot_mfd= "Files por Dia"; +char *msg_mtot_mpd= "Paginas por Dia"; +char *msg_mtot_msd= "Sites por Dia"; +char *msg_mtot_mvd= "Visitas por Dia"; +char *msg_mtot_mkd= "KBytes por Dia"; +char *msg_mtot_rc = "Hits por Código de Resposta"; + +/* daily total table */ +char *msg_dtot_ds = "Estatística Diária de"; + +/* hourly total table */ +char *msg_htot_hs = "Estatística por Hora de"; + +/* country pie chart */ +char *msg_ctry_use= "Utilização por País de"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Top"; +char *msg_top_of = "de"; +char *msg_top_s = "Sites"; +char *msg_top_u = "URLs"; +char *msg_top_r = "Referrers"; +char *msg_top_a = "User Agents"; +char *msg_top_c = "Paises"; +char *msg_top_en = "Total Páginas de Entrada"; +char *msg_top_ex = "Total Páginas de Saída"; +char *msg_top_sr = "Total Strings de Pesquisa"; +char *msg_top_i = "Total Usernames"; +char *msg_v_sites = "Ver todos os Sites"; +char *msg_v_urls = "Ver todos os URLs"; +char *msg_v_refs = "Ver todos os Referrers"; +char *msg_v_agents= "Ver todos os User Agents"; +char *msg_v_search= "Ver todas as Strings de Pesquisa"; +char *msg_v_users = "Ver todos os Usernames"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Jan", "Fev", "Mar", + "Abr", "Mai", "Jun", + "Jul", "Ago", "Set", + "Out", "Nov", "Dez"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Janeiro", "Fevereiro", "Março", "Abril", + "Maio", "Junho", "Julho", "Agosto", + "Setembro","Outubro", "Novembro","Dezembro"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Undefined response code", 0 }, + { "Code 100 - Continuar", 0 }, + { "Code 101 - Mudança de Protocolos", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Criado", 0 }, + { "Code 202 - Aceite", 0 }, + { "Code 203 - Informação não Autoritária", 0 }, + { "Code 204 - Sem Conteúdo", 0 }, + { "Code 205 - Reinicializa Conteúdo", 0 }, + { "Code 206 - Conteúdo Parcial", 0 }, + { "Code 300 - Várias Opções", 0 }, + { "Code 301 - Mudança Permanente", 0 }, + { "Code 302 - Found", 0 }, + { "Code 303 - Ver Outro", 0 }, + { "Code 304 - Não Modificado", 0 }, + { "Code 305 - Use Proxy", 0 }, + { "Code 307 - Mudança Temporária", 0 }, + { "Code 400 - Pedido Inválido", 0 }, + { "Code 401 - Não Autorizado", 0 }, + { "Code 402 - Pagamento Necessário", 0 }, + { "Code 403 - Proibido", 0 }, + { "Code 404 - Não Encontrado", 0 }, + { "Code 405 - Metodo não Permitido", 0 }, + { "Code 406 - Não Aceitável", 0 }, + { "Code 407 - Necessária Autenticação pelo Proxy", 0 }, + { "Code 408 - Timeout do Pedido", 0 }, + { "Code 409 - Conflito", 0 }, + { "Code 410 - Desapareceu", 0 }, + { "Code 411 - Necessário Tamanho", 0 }, + { "Code 412 - Precondição Falhou", 0 }, + { "Code 413 - Entidade de Pedido muito Grande", 0 }, + { "Code 414 - Entidade de URI muito Granda", 0 }, + { "Code 415 - Tipo de Media Não Suportado", 0 }, + { "Code 416 - Requested Range Not Satisfiable", 0 }, + { "Code 417 - Expectation Failed", 0 }, + { "Code 500 - Erro Interno do Servidor", 0 }, + { "Code 501 - Não Implementado", 0 }, + { "Code 502 - Gateway Errado", 0 }, + { "Code 503 - Serviço Não Disponivel", 0 }, + { "Code 504 - Timeout do Gateway", 0 }, + { "Code 505 - Versão de HTTP Não Suportada", 0 } }; + +char *msg_title = "Estatísticas de Utilização de"; +char *msg_h_other = "Outros"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Unresolved/Unknown", 0,0,0 }, +{ IDX_3C('c','o','m'), "Commercial (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Educational (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "US Government (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "International (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "US Military (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Network (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Non-Profit (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Address Routing (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Nato field (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "United Arab Emirates", 0,0,0 }, +{ IDX_2C('a','f'), "Afghanistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua and Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armenia", 0,0,0 }, +{ IDX_2C('a','n'), "Netherlands Antilles", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarctica", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "American Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Austria", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaijan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia and Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgium", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brazil", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Island", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Belarus", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Canada", 0,0,0 }, +{ IDX_2C('c','c'), "Cocos (Keeling) Islands", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Central African Republic", 0,0,0 }, +{ IDX_2C('c','g'), "Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Switzerland", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire (Ivory Coast)", 0,0,0 }, +{ IDX_2C('c','k'), "Cook Islands", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Cameroon", 0,0,0 }, +{ IDX_2C('c','n'), "China", 0,0,0 }, +{ IDX_2C('c','o'), "Colombia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Christmas Island", 0,0,0 }, +{ IDX_2C('c','y'), "Cyprus", 0,0,0 }, +{ IDX_2C('c','z'), "Czech Republic", 0,0,0 }, +{ IDX_2C('d','e'), "Germany", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Denmark", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Dominican Republic", 0,0,0 }, +{ IDX_2C('d','z'), "Algeria", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador", 0,0,0 }, +{ IDX_2C('e','e'), "Estonia", 0,0,0 }, +{ IDX_2C('e','g'), "Egypt", 0,0,0 }, +{ IDX_2C('e','h'), "Western Sahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Spain", 0,0,0 }, +{ IDX_2C('e','t'), "Ethiopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finland", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Falkland Islands (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronesia", 0,0,0 }, +{ IDX_2C('f','o'), "Faroe Islands", 0,0,0 }, +{ IDX_2C('f','r'), "France", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Great Britain (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgia", 0,0,0 }, +{ IDX_2C('g','f'), "French Guiana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Greenland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Equatorial Guinea", 0,0,0 }, +{ IDX_2C('g','r'), "Greece", 0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia and S. Sandwich Isls.", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard and McDonald Islands", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Croatia", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Hungary", 0,0,0 }, +{ IDX_2C('i','d'), "Indonesia", 0,0,0 }, +{ IDX_2C('i','e'), "Ireland", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "India", 0,0,0 }, +{ IDX_2C('i','o'), "British Indian Ocean Territory", 0,0,0 }, +{ IDX_2C('i','q'), "Iraq", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Iceland", 0,0,0 }, +{ IDX_2C('i','t'), "Italy", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Jordan", 0,0,0 }, +{ IDX_2C('j','p'), "Japan", 0,0,0 }, +{ IDX_2C('k','e'), "Kenya", 0,0,0 }, +{ IDX_2C('k','g'), "Kyrgyzstan", 0,0,0 }, +{ IDX_2C('k','h'), "Cambodia", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts and Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Korea, Democratic Republic of", 0,0,0 }, +{ IDX_2C('k','r'), "Korea, Republic of", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Cayman Islands", 0,0,0 }, +{ IDX_2C('k','z'), "Kazakhstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Lebanon", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lithuania", 0,0,0 }, +{ IDX_2C('l','u'), "Luxembourg", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia", 0,0,0 }, +{ IDX_2C('l','y'), "Libya", 0,0,0 }, +{ IDX_2C('m','a'), "Morocco", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Marshall Islands", 0,0,0 }, +{ IDX_2C('m','k'), "Macedonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolia", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Northern Mariana Islands", 0,0,0 }, +{ IDX_2C('m','q'), "Martinique", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldives", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexico", 0,0,0 }, +{ IDX_2C('m','y'), "Malaysia", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambique", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "New Caledonia", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Island", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Netherlands", 0,0,0 }, +{ IDX_2C('n','o'), "Norway", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "New Zealand", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "French Polynesia", 0,0,0 }, +{ IDX_2C('p','g'), "Papua New Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Philippines", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Poland", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre and Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Romania", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Russian Federation", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saudi Arabia", 0,0,0 }, +{ IDX_2C('s','b'), "Solomon Islands", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Sweden", 0,0,0 }, +{ IDX_2C('s','g'), "Singapore", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenia", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbard and Jan Mayen Islands", 0,0,0 }, +{ IDX_2C('s','k'), "Slovakia", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Suriname", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome and Principe", 0,0,0 }, +{ IDX_2C('s','u'), "Soviet Union", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Turks and Caicos Islands", 0,0,0 }, +{ IDX_2C('t','d'), "Chad", 0,0,0 }, +{ IDX_2C('t','f'), "French Southern Territories", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Thailand", 0,0,0 }, +{ IDX_2C('t','j'), "Tajikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisia", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Portuguese Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turkey", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad and Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraine", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "United Kingdom", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying Islands", 0,0,0 }, +{ IDX_2C('u','s'), "United States", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatican City State (Holy See)", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent and the Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Virgin Islands (British)", 0,0,0 }, +{ IDX_2C('v','i'), "Virgin Islands (U.S.)", 0,0,0 }, +{ IDX_2C('v','n'), "Viet Nam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis and Futuna Islands", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Yugoslavia", 0,0,0 }, +{ IDX_2C('z','a'), "South Africa", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.portuguese_brazil b/lang/webalizer_lang.portuguese_brazil new file mode 100644 index 0000000..2d6a55c --- /dev/null +++ b/lang/webalizer_lang.portuguese_brazil @@ -0,0 +1,640 @@ +/* + webalizer_lang.portuguese_brazil + + Webalizer V2.0x Language Support file for Portuguese (Brazilian dialect) + 15-May-1998 by Bradford L. Barrett (brad@mrunix.net) + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 06-Aug-1999 Translation by Arquimedes M.da Silva + (software.developer@mailbr.com.br) + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 12-Mar-2000 Huge Correction/Translation by Fabio B. Oliva + (fboliva@safenetworks.com) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Portuguese_Brazil"; +char *langcode = "pt-br"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "registros"; +char *msg_addresses="endereços"; +char *msg_ignored = "desprezados"; +char *msg_bad = "ruins"; +char *msg_in = "em"; +char *msg_seconds = "segundos"; + +/* progress and setup error messages */ +char *msg_log_err = "Erro: Não foi possível abrir o arquivo"; +char *msg_log_use = "Usando arquivo"; +char *msg_dir_err = "Erro: Não possível alterar o diretório para"; +char *msg_dir_use = "Criando resultado em"; +char *msg_cur_dir = "Diretório corrente"; +char *msg_hostname= "Nome do servidor para os relatórios é"; +char *msg_ign_hist= "Ignorando registro inválido no arquivo..."; +char *msg_no_hist = "Arquivo de histórico não encontrado..."; +char *msg_get_hist= "Lendo arquivo de histórico..."; +char *msg_put_hist= "Salvando histórico..."; +char *msg_hist_err= "Erro: Não foi possível escrever o arquivo de histórico"; +char *msg_bad_hist= "Erro: Desprezando registro de histórico inválido"; +char *msg_bad_conf= "Erro: Não foi possível abrir arquivo de configuração"; +char *msg_bad_key = "Atenção: palavra chave inválida"; +char *msg_bad_date= "Erro: Desprezando registro (Data inválida)"; +char *msg_ign_nscp= "Ignorando registro cabeçalho Netscape"; +char *msg_bad_rec = "Ignorando registro com problema"; +char *msg_no_vrec = "Registros válidos não encontrados!"; +char *msg_gen_rpt = "Gerando relatório para"; +char *msg_gen_sum = "Gerando relatório de sumário"; +char *msg_get_data= "Lendo os dados da execução anterior..."; +char *msg_put_data= "Salvando os dados da execução atual..."; +char *msg_no_data = "Dados da execução anterior não encontrados..."; +/*char *msg_bad_data= "Registro de dados inválido";*/ +char *msg_bad_data= "Erro: Não foi possível recuperar os dados"; +char *msg_data_err= "Erro: Não foi possível salvar os dados da execução atual"; +char *msg_dup_data= "Atenção: Possível duplicação de dados encontrada"; + +/* DNS Stuff */ +char *msg_dns_nocf= "Arquivo Cache não encontrado. Abortando..."; +char *msg_dns_nodb= "Erro: Não foi possível abrir o arquivo cache do DNS"; +char *msg_dns_nolk= "Erro: Não foi possível travar (lock) o arquivo cache do DNS"; +char *msg_dns_usec= "Usando o arquivo cache do DNS"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "Nada para processar"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Não foi possível alocar memória, Lista Endereços desabilitada!"; +char *msg_nomem_tr= "Não foi possível alocar memória, Lista Referências desabilitada!"; +char *msg_nomem_tu= "Não foi possível alocar memória, Lista URLs disabilitado!"; +char *msg_nomem_tc= "Não foi possível alocar memória, Lista Países desabilitada!"; +char *msg_nomem_ta= "Não foi possível alocar memória, Lista Clientes desabilitada!"; +char *msg_nomem_tsr="Não foi possível alocar memória,,Lista Strings de busca desabilitada!"; +char *msg_nomem_ti= "Não foi possível alocar memória suficiente, Lista de usuários desabilitada!"; +char *msg_nomem_dh= "Erro ao adicionar nó de servidor (diário), desprezado"; +char *msg_nomem_mh= "Erro ao adicionar nó de servidor (mensal), desprezado"; +char *msg_nomem_u = "Erro ao adicionar nó de URL, desprezado"; +char *msg_nomem_a = "Erro ao adicionar nó de programa cliente, desprezado"; +char *msg_nomem_r = "Erro ao adicionar nó de Referência, desprezado"; +char *msg_nomem_sc= "Erro ao adicionar nó de String de busca, desprezado"; +char *msg_nomem_i = "Erro ao acicionar nó de usuário, desprezando..."; + +/* log record errors */ +char *msg_big_rec = "Erro: Ignorando registro muito longo"; +char *msg_big_host= "Atenção: Truncando nome de servidor muito longo"; +char *msg_big_date= "Atenção: Truncando campo data muito longo"; +char *msg_big_req = "Atenção: Truncando campo de solicitação muito longo"; +char *msg_big_ref = "Atenção: Truncando campo de referência muito longo"; +char *msg_big_user= "Warning: truncando nome de usuário muito longo"; +char *msg_big_one = "Atenção: Texto excede a área de armazenamento disponível"; + +/* misc errors */ +char *msg_no_open = "Erro: Não foi possível abrir arquivo"; + +/* Help display... */ +char *h_usage1 = "Forma de utilização"; +char *h_usage2 = "[opções] [arquivo de histórico]"; +char *h_msg[]= { + "-h = imprime esta mensagem de ajuda" , + "-V = imprime a versão" , + "-v = be verbose" , + "-d = imprime informação adicional de depuração" , + "-F type = Log type. type= (clf | ftp | squid | w3c)" , + "-f = cruzar sequência de erros" , + "-i = ignorar arquivo de histórico" , + "-p = recuperar processamento anterior (incremento)" , + "-b = ignorar incremento" , + "-q = suprimir mensagens de informação" , + "-Q = suprimir TODAS as mensagens" , + "-Y = suprimir gráfico sobre os Países" , + "-G = suprimir gráfico sobre o horário" , + "-H = suprimir estatística sobre horário" , + "-L = suprimir legendas sobre as cores do gráfico" , + "-l num = usar linhas de background no gráfico" , + "-m num = Valor de timeout para visita (seconds)" , + "-T = imprime informação sobre horário" , + "-c arq = usar arquivo de configuração 'arq'" , + "-n nome = nome do servidor" , + "-o dir = diretório de saída" , + "-t nome = título do relatório 'nome'" , + "-a nome = ocultar programa cliente 'nome'" , + "-r nome = ocultar refêrencoa 'nome'" , + "-s nome = ocultar endereço 'nome'" , + "-u nome = ocultar URL 'nome'" , + "-x nome = Indica extensão para nome de arquivo 'nome'" , + "-O nome = Omit page 'nome'" , + "-P nome = Indica extensão para tipo de página 'nome'" , + "-I nome = apelido do índice 'nome'" , + "-K n = n months in summary table" , + "-k n = n months in summary graph" , + "-A n = imprime os n primeiros programas clientes" , + "-C n = imprime os n primeiros países" , + "-R n = imprime as n primeiras referências" , + "-S n = imprime os n primeiros endereços" , + "-U n = imprime as n primeiras URLs" , + "-e n = imprime as n primeiras páginas entrada" , + "-E n = imprime as n primeiras páginas saída" , + "-g n = Grupos de Domínio para n níveis" , + "-X = Ocultar sites individuais" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D nome = Usar arquivo cache de DNS 'nome'" , + "-N num = Número de processos DNS (0=desabilitado)" , + "-j = Enable native GeoIP lookups" , + "-J nome = Use GeoDB database 'nome'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W nome = Use GeoIP database 'nome'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Resumo do Período"; +char *msg_hhdr_gt = "Gerado em"; + +/* main index strings */ +char *msg_main_us = "Resumo de utilização para"; +/* char *msg_main_per= "Últimos 12 Meses"; */ +char *msg_main_per= "Resumo Mensal"; +char *msg_main_sum= "Resumo Mensal"; +char *msg_main_da = "Média diária"; +char *msg_main_mt = "Total Mensal"; + +/* month HTML page strings */ +char *msg_hmth_du = "Utilização diária em"; +char *msg_hmth_hu = "Utilização por hora em"; + +/* table header strings */ +char *msg_h_by = "por"; +char *msg_h_avg = "Média"; +char *msg_h_max = "Max"; +char *msg_h_total = "Total"; +char *msg_h_totals= "Totais"; +char *msg_h_day = "Dia"; +char *msg_h_mth = "Mês"; +char *msg_h_hour = "Hora"; +char *msg_h_hits = "Hits"; +char *msg_h_pages = "Páginas"; +char *msg_h_visits= "Visitas"; +char *msg_h_files = "Arquivos"; +char *msg_h_sites = "Endereços"; +char *msg_h_xfer = "KBytes"; +char *msg_h_hname = "Servidores"; +char *msg_h_url = "URLs"; +char *msg_h_agent = "Programa cliente"; +char *msg_h_ref = "Referência"; +char *msg_h_ctry = "País"; +char *msg_h_search= "String de busca"; +char *msg_h_uname = "Nomes de Usuários"; + +/* links along top of page */ +char *msg_hlnk_ds = "Estatísticas diárias"; +char *msg_hlnk_hs = "Estatísticas por hora"; +char *msg_hlnk_u = "URLs"; +char *msg_hlnk_s = "Endereço"; +char *msg_hlnk_a = "Clientes"; +char *msg_hlnk_c = "Países"; +char *msg_hlnk_r = "Referências"; +char *msg_hlnk_en = "Entrada"; +char *msg_hlnk_ex = "Saída"; +char *msg_hlnk_sr = "Busca"; +char *msg_hlnk_i = "Usuários"; + +/* monthly total table */ +char *msg_mtot_ms = "Estatísticas Mensais para"; +char *msg_mtot_th = "Total de hits"; +char *msg_mtot_tf = "Total de arquivos"; +char *msg_mtot_tx = "Total de KBytes"; +char *msg_mtot_us = "Total de servidores"; +char *msg_mtot_ur = "Total de referências"; +char *msg_mtot_ua = "Total de programas clientes"; +char *msg_mtot_uu = "Total de URLs"; +char *msg_mtot_ui = "Total de Nomes de Usuários"; +char *msg_mtot_mhd= "Hits por Dia"; +char *msg_mtot_mhh= "Hits por Hora"; +char *msg_mtot_mfd= "Arquivos por Dia"; +char *msg_mtot_mpd= "Páginas por Dia"; +char *msg_mtot_msd= "Servidores por Dia"; +char *msg_mtot_mvd= "Visitas por Dia"; +char *msg_mtot_mkd= "KBytes por Dia"; +char *msg_mtot_rc = "Hits por código de resposta"; + +/* daily total table */ +char *msg_dtot_ds = "Estatísticas diária para"; + +/* hourly total table */ +char *msg_htot_hs = "Estatísticas por hora para"; + +/* country pie chart */ +char *msg_ctry_use= "Hits por país para"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Lista"; +char *msg_top_of = "de"; +char *msg_top_s = "Total de endereços"; +char *msg_top_u = "Total de URLs"; +char *msg_top_r = "Total de referências"; +char *msg_top_a = "Total de programas clientes"; +char *msg_top_c = "Total de países"; +char *msg_top_en = "Total de Páginas de entrada"; +char *msg_top_ex = "Total de Páginas de saída"; +char *msg_top_sr = "Total de Strings de busca"; +char *msg_top_i = "Total de nomes de usuários"; +char *msg_v_sites = "Visualizar todos sites"; +char *msg_v_urls = "Visualizar todas URLs"; +char *msg_v_refs = "Visualizar todas Referências"; +char *msg_v_agents= "Visualizar todos Agentes de usuário"; +char *msg_v_search= "Visualizar todas strings de procura"; +char *msg_v_users = "Visualizar todos nomes de usuários"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Jan", "Fev", "Mar", + "Abr", "Mai", "Jun", + "Jul", "Ago", "Set", + "Out", "Nov", "Dez"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Janeiro", "Fevereiro", "Março", "Abril", + "Maio", "Junho", "Julho", "Agosto", + "Setembro", "Outubro", "Novembro", "Dezembro"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Código de resposta indefinido", 0 }, + { "100 - Continua", 0 }, + { "101 - Trocando de protocolo", 0 }, + { "200 - OK", 0 }, + { "201 - Criado", 0 }, + { "202 - Aceito", 0 }, + { "203 - Informação não autorizada", 0 }, + { "204 - Não existe conteúdo", 0 }, + { "205 - Conteúdo renovado", 0 }, + { "206 - Conteúdo parcial", 0 }, + { "300 - Múltiplas escolhas", 0 }, + { "301 - Movido permanentemente", 0 }, + { "302 - Encontrado", 0 }, + { "303 - Ver outros", 0 }, + { "304 - Não modificado", 0 }, + { "305 - Utilizar Proxy", 0 }, + { "307 - Movido temporariamente", 0 }, + { "400 - Requisição errada", 0 }, + { "401 - Acesso negado", 0 }, + { "402 - Requer pagamento", 0 }, + { "403 - Proibido", 0 }, + { "404 - Não encontrada", 0 }, + { "405 - Método não permitido", 0 }, + { "406 - Não aceitável", 0 }, + { "407 - Autenticação de Proxy requerida", 0 }, + { "408 - Fim do tempo de espera", 0 }, + { "409 - Conflito", 0 }, + { "410 - Abadonado", 0 }, + { "411 - Tamanho requerido", 0 }, + { "412 - Falta condição prévia", 0 }, + { "413 - Entidade de requisição muito longa", 0 }, + { "414 - URI de requisicção muito longa", 0 }, + { "415 - Meio não suportado", 0 }, + { "416 - Limite solicitado não satisfeito", 0 }, + { "417 - Expectation Failed", 0 }, + { "500 - Erro interno no servidor", 0 }, + { "501 - Não implementado", 0 }, + { "502 - Erro no Gateway", 0 }, + { "503 - Serviço indisponível", 0 }, + { "504 - Fim do tempo de espera para Gateway", 0 }, + { "505 - HTTP Versão não suportada", 0 } }; + +char *msg_title = "Estatísticas de utilização para"; +char *msg_h_other = "Outros"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Não Resolvido/Desconhecido", 0,0,0 }, +{ IDX_3C('c','o','m'), "Comercial (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Educacional (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "EUA - Governo (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "Internacional (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "EUA - Militar (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Network (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Organização sem fins lucrativos (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Estilo antigo - Arpanet (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"OTAN (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "Emirados Árabes Unidos", 0,0,0 }, +{ IDX_2C('a','f'), "Afeganistão", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua and Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armênia", 0,0,0 }, +{ IDX_2C('a','n'), "Holanda - Antilha", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarctica", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "American Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Austria", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaijão", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia e Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgica", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolívia", 0,0,0 }, +{ IDX_2C('b','r'), "Brasil", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Butão", 0,0,0 }, +{ IDX_2C('b','v'), "Ilha Bouvet", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Belarus", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Canadá", 0,0,0 }, +{ IDX_2C('c','c'), "Cocos (Keeling) Islands", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "República Central Africana", 0,0,0 }, +{ IDX_2C('c','g'), "Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Suiça", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire (Costa do Marfim)", 0,0,0 }, +{ IDX_2C('c','k'), "Ilhas Cook", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Camarões", 0,0,0 }, +{ IDX_2C('c','n'), "China", 0,0,0 }, +{ IDX_2C('c','o'), "Colômbia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cabo Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Ilhas Natal", 0,0,0 }, +{ IDX_2C('c','y'), "Cyprus", 0,0,0 }, +{ IDX_2C('c','z'), "República Tcheca", 0,0,0 }, +{ IDX_2C('d','e'), "Alemanha", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Dinamarca", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "República Dominicana", 0,0,0 }, +{ IDX_2C('d','z'), "Argélia", 0,0,0 }, +{ IDX_2C('e','c'), "Equador", 0,0,0 }, +{ IDX_2C('e','e'), "Estônia", 0,0,0 }, +{ IDX_2C('e','g'), "Egito", 0,0,0 }, +{ IDX_2C('e','h'), "Sahara do Oeste", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Espanha", 0,0,0 }, +{ IDX_2C('e','t'), "Etiópia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finlândia", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Ilhas Falkland (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronésia", 0,0,0 }, +{ IDX_2C('f','o'), "Faroe Islands", 0,0,0 }, +{ IDX_2C('f','r'), "França", 0,0,0 }, +{ IDX_2C('g','a'), "Gabão", 0,0,0 }, +{ IDX_2C('g','b'), "Grã Bretanha (Reino Unido)", 0,0,0 }, +{ IDX_2C('g','d'), "Granada", 0,0,0 }, +{ IDX_2C('g','e'), "Geórgia", 0,0,0 }, +{ IDX_2C('g','f'), "Guiana Francesa", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Gana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Greenland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guiné", 0,0,0 }, +{ IDX_2C('g','p'), "Guadalupe" , 0,0,0 }, +{ IDX_2C('g','q'), "Guiné Equatorial", 0,0,0 }, +{ IDX_2C('g','r'), "Grécia", 0,0,0 }, +{ IDX_2C('g','s'), "S. Geórgia e S. Ilhas Sandwich.", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guiana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Ilhas Heard e McDonald", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Croácia", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Hungria", 0,0,0 }, +{ IDX_2C('i','d'), "Indonésia", 0,0,0 }, +{ IDX_2C('i','e'), "Irlanda", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "Índia", 0,0,0 }, +{ IDX_2C('i','o'), "Território Oceânico Anglo-Indiano",0,0,0 }, +{ IDX_2C('i','q'), "Iraque", 0,0,0 }, +{ IDX_2C('i','r'), "Irã", 0,0,0 }, +{ IDX_2C('i','s'), "Iceland", 0,0,0 }, +{ IDX_2C('i','t'), "Itália", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Jordânia", 0,0,0 }, +{ IDX_2C('j','p'), "Japão", 0,0,0 }, +{ IDX_2C('k','e'), "Quênia", 0,0,0 }, +{ IDX_2C('k','g'), "Kyrgyzstan", 0,0,0 }, +{ IDX_2C('k','h'), "Cambodia", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts and Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Coréia (Norte)", 0,0,0 }, +{ IDX_2C('k','r'), "Coréia (Sul)", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Ilhas Cayman", 0,0,0 }, +{ IDX_2C('k','z'), "Kazaquistão", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Líbano", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Libéria", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lituânia", 0,0,0 }, +{ IDX_2C('l','u'), "Luxemburgo", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia", 0,0,0 }, +{ IDX_2C('l','y'), "Líbia", 0,0,0 }, +{ IDX_2C('m','a'), "Marrocos", 0,0,0 }, +{ IDX_2C('m','c'), "Mônaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Ilhas Marshall", 0,0,0 }, +{ IDX_2C('m','k'), "Macedônia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongólia", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Ilhas Mariana do Norte", 0,0,0 }, +{ IDX_2C('m','q'), "Martiníca", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritânia", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldives", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "México", 0,0,0 }, +{ IDX_2C('m','y'), "Malasia", 0,0,0 }, +{ IDX_2C('m','z'), "Moçambique", 0,0,0 }, +{ IDX_2C('n','a'), "Namíbia", 0,0,0 }, +{ IDX_2C('n','c'), "Nova Caledônia", 0,0,0 }, +{ IDX_2C('n','e'), "Nigéria", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Island", 0,0,0 }, +{ IDX_2C('n','g'), "Nigéria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicarágua", 0,0,0 }, +{ IDX_2C('n','l'), "Holanda", 0,0,0 }, +{ IDX_2C('n','o'), "Noruega", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "Nova Zelândia", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panamá", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "Polinésia Francesa", 0,0,0 }, +{ IDX_2C('p','g'), "Papua Nova Guiné", 0,0,0 }, +{ IDX_2C('p','h'), "Filipinas", 0,0,0 }, +{ IDX_2C('p','k'), "Paquistão", 0,0,0 }, +{ IDX_2C('p','l'), "Polônia", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre e Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Pprto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguai", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunião", 0,0,0 }, +{ IDX_2C('r','o'), "Romênia", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Federação Russa", 0,0,0 }, +{ IDX_2C('r','w'), "Ruanda", 0,0,0 }, +{ IDX_2C('s','a'), "Arábia Saudita", 0,0,0 }, +{ IDX_2C('s','b'), "Ilhas Salomão", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudão", 0,0,0 }, +{ IDX_2C('s','e'), "Suécia", 0,0,0 }, +{ IDX_2C('s','g'), "Singapura", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Eslovênia", 0,0,0 }, +{ IDX_2C('s','j'), "Ilhas Svalbard e Jan Mayen", 0,0,0 }, +{ IDX_2C('s','k'), "Repíblica Eslovaca", 0,0,0 }, +{ IDX_2C('s','l'), "Serra Leoa", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somália", 0,0,0 }, +{ IDX_2C('s','r'), "Suriname", 0,0,0 }, +{ IDX_2C('s','t'), "São Tomé e Príncipe", 0,0,0 }, +{ IDX_2C('s','u'), "URSS (Antiga)", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Ilhas Turcas e Caicos", 0,0,0 }, +{ IDX_2C('t','d'), "Chad", 0,0,0 }, +{ IDX_2C('t','f'), "Territórios Franceses do Sul", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Tailândia", 0,0,0 }, +{ IDX_2C('t','j'), "Tajaquistão", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunísia", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Portuguese Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turquia", 0,0,0 }, +{ IDX_2C('t','t'), "Trindade e Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzânia", 0,0,0 }, +{ IDX_2C('u','a'), "Ucrânia", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "Reino Unido", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying Islands", 0,0,0 }, +{ IDX_2C('u','s'), "Estados Unidos da América", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguai", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbequistão", 0,0,0 }, +{ IDX_2C('v','a'), "Estado/Cidade do Vaticano (Santa Sé)", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent e the Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Ilhas Virgens (Inglesas)", 0,0,0 }, +{ IDX_2C('v','i'), "Ilhas Virgens (E.U.A.)", 0,0,0 }, +{ IDX_2C('v','n'), "Vietnã", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Ilhas Wallis e Futuna", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Iêmen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Iuguslávia", 0,0,0 }, +{ IDX_2C('z','a'), "Africa do Sul", 0,0,0 }, +{ IDX_2C('z','m'), "Zâmbia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabue", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.romanian b/lang/webalizer_lang.romanian new file mode 100644 index 0000000..db88f4a --- /dev/null +++ b/lang/webalizer_lang.romanian @@ -0,0 +1,634 @@ +/* + webalizer_lang.romanian + + Webalizer V2.0x Language Support file for Romanian. + 17-May-1999 Translation by Mircea Ilie (mirceax@tep.ro) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 04-Feb-2000 Level 1.3 translation by Iulian Radu (iulian_r@starnets.ro) + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 16-Jan-2001 Level 2.0 translation by Mircea Ilie (mirceax@tep.ro) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.french for french). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "in romana"; +char *langcode = "ro"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "inregistrari"; +char *msg_addresses="adrese"; +char *msg_ignored = "ignorat"; +char *msg_bad = "gresit"; +char *msg_in = "in"; +char *msg_seconds = "secunde"; + +/* progress and setup error messages */ +char *msg_log_err = "Eroare: Nu pot deschide fisierul jurnal"; +char *msg_log_use = "Accesez fisierul jurnal"; +char *msg_dir_err = "Eroare: Nu pot sa ajung in directorul"; +char *msg_dir_use = "Rezultatul este salvat in"; +char *msg_cur_dir = "directorul curent"; +char *msg_hostname= "Hostname-ul pentru rapoarte este"; +char *msg_ign_hist= "Ignor fisierul de istoric precedent..."; +char *msg_no_hist = "Nu pot gasi fisierul de istoric..."; +char *msg_get_hist= "Citesc fisierul de istoric..."; +char *msg_put_hist= "Salvez informatiile in fisierul de istoric..."; +char *msg_hist_err= "Eroare: Nu pot sa scriu in fisierul de istoric"; +char *msg_bad_hist= "Eroare: Ignor inregistrarile invalide din fisierul de istoric"; +char *msg_bad_conf= "Eroare: Nu pot deschide fisierul de configurare"; +char *msg_bad_key = "Avertisment: Cuvint cheie invalid"; +char *msg_bad_date= "Eroare: Sar inregistrarea (date incorecte)"; +char *msg_ign_nscp= "Sar inregistrarea antetului Netscape"; +char *msg_bad_rec = "Sar o inregistrare gresita"; +char *msg_no_vrec = "Nu am gasit nici o inregsitare corecta!"; +char *msg_gen_rpt = "Generez un raport pentru"; +char *msg_gen_sum = "Generez cuprinsul raportului"; +char *msg_get_data= "Citesc datele rulate inainte..."; +char *msg_put_data= "Salvez datele rulate acum..."; +char *msg_no_data = "Datele rulate inainte nu au fost gasite..."; +char *msg_bad_data= "Eroare: Nu pot reface datele rulate"; +char *msg_data_err= "Eroare: Nu pot salva datele rulate acum"; +char *msg_dup_data= "Avertisment: S-ar putea sa fi gasit date duplicate"; + +/* DNS Stuff */ +char *msg_dns_nocf= "Nu s-a specificat nici un fisier cache, renunt..."; +char *msg_dns_nodb= "Eroare: Nu pot deschide fisierul cache al DNS"; +char *msg_dns_nolk= "Eroare: Nu pot bloca fisierul cache al DNS"; +char *msg_dns_usec= "Folosesc fisierul cache al DNS"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "Nimic de prelucrat"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Nu pot aloca suficienta memorie, dezactivez Top Situri!"; +char *msg_nomem_tr= "Nu pot aloca suficienta memorie, dezactivez Top Pagini referente!"; +char *msg_nomem_tu= "Nu pot aloca suficienta memorie, dezactivez Top URL-uri!"; +char *msg_nomem_tc= "Nu pot aloca suficienta memorie, dezactivez Top Tari!"; +char *msg_nomem_ta= "Nu pot aloca suficienta memorie, dezactivez Top Navigatoare vizitatori!"; +char *msg_nomem_tsr="Nu pot aloca suficienta memorie, dezactivez Top Siruri cautate!"; +char *msg_nomem_ti= "Nu pot aloca suficienta memorie, dezactivez Top Utilizatori!"; +char *msg_nomem_dh= "Eroare adaugare nod host (zilnic), sar"; +char *msg_nomem_mh= "Eroare adaugare nod host (lunar), sar"; +char *msg_nomem_u = "Eroare adaugare nod URL, sar"; +char *msg_nomem_a = "Eroare adaugare nod Navigator client, sar"; +char *msg_nomem_r = "Eroare adaugare nod de Pagina referenta, sar"; +char *msg_nomem_sc= "Eroare adaugare nod Sir de cautare, sar"; +char *msg_nomem_i = "Eroare adaugare nod Utilizatori, sar"; + +/* log record errors */ +char *msg_big_rec = "Eroare: Sar o inregistrare de jurnal supradimensionata"; +char *msg_big_host= "Avertisment: Trunchiez hostname supradimensionat"; +char *msg_big_date= "Avertisment: Trunchiez cimpul data supradimensionat"; +char *msg_big_req = "Avertisment: Trunchiez cimpul cerere supradimensionat"; +char *msg_big_ref = "Avertisment: Trunchiez cimpul paginii referente supradimensionat"; +char *msg_big_user= "Avertisment: Trunchiez cimpul utilizator supradimensionat"; +char *msg_big_one = "Avertisment: Sirul depaseste dimensiunea spatiului de stocare"; + +/* misc errors */ +char *msg_no_open = "Eroare: Nu pot deschide fisierul"; + +/* Help display... */ +char *h_usage1 = "Utilizare"; +char *h_usage2 = "[optiuni] [fisier jurnal]"; +char *h_msg[]= { + "-h = afiseaza acest mesaj de ajutor" , + "-V = afiseaza informatii despre versiune" , + "-v = be verbose" , + "-d = afiseaza informatii de depanare suplimentare" , + "-F type = Tip jurnal. type= (clf | ftp | squid | w3c)" , + "-f = eroare la secventa de fold" , + "-i = ignora fisierul de istoric" , + "-p = pastreaza starea (incremental)" , + "-b = ignora starea (incremental)" , + "-q = elimina mesajele de informare" , + "-Q = elimina _TOATE_ mesajele" , + "-Y = elimina graficul tarilor" , + "-G = elimina graficul orelor" , + "-H = elimina starea pe ore" , + "-L = elimina legenda graficelor color" , + "-l num = foloseste linii numerotate pe fundalul graficelor" , + "-m num = valoarea timeout-ului pentru vizite (secunde)" , + "-T = afiseaza informatiile despre temporizare" , + "-c file = foloseste fisierul de configurare 'file'" , + "-n name = hostname-ul de folosit" , + "-o dir = directorul folosit pentru rezultate" , + "-t name = titlul raportului va fi 'name'" , + "-a name = ascunde navigatoarele clientilor de tipul 'name'" , + "-r name = ascunde pagina referenta cu numele 'name'" , + "-s name = ascunde situl 'name'" , + "-u name = ascunde URL-ul 'name'" , + "-x name = foloseste extensia de nume fisier 'name'" , + "-O name = Omit page 'name'" , + "-P name = extensia tipului de pagina va fi 'name'" , + "-I name = aliasul index-ului va fi 'name'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = afiseaza numeric topul navigatoarelor clientilor" , + "-C num = afiseaza numeric topul tarilor" , + "-R num = afiseaza numeric topul referentilor" , + "-S num = afiseaza numeric topul siturilor" , + "-U num = afiseaza numeric topul URL-urilor" , + "-e num = afiseaza numeric topul Paginilor de intrare", + "-E num = afiseaza numeric topul Paginilor de iesire", + "-X = Ascunde siturile individuale" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Foloseste fisierul cache DNS 'name'" , + "-N num = Numarul de procese DNS (0=dezactivat)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoIP database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Perioada analizata"; +char *msg_hhdr_gt = "Generat in"; + +/* main index strings */ +char *msg_main_us = "Sumarul utilizarii lui"; +/* char *msg_main_per= "ultimele 12 luni"; */ +char *msg_main_per= "Sumarul pe luna"; +char *msg_main_sum= "Sumarul pe luna"; +char *msg_main_da = "Media zilnica"; +char *msg_main_mt = "Totaluri lunare"; + +/* month HTML page strings */ +char *msg_hmth_du = "Utilizarea zilnica pe luna"; +char *msg_hmth_hu = "Utilizarea orara pe luna"; + +/* table header strings */ +char *msg_h_by = "dupa"; +char *msg_h_avg = "Medie"; +char *msg_h_max = "Maxim"; +char *msg_h_total = "Total"; +char *msg_h_totals= "Totaluri"; +char *msg_h_day = "Zi"; +char *msg_h_mth = "Luna"; +char *msg_h_hour = "Ora"; +char *msg_h_hits = "Accesari"; +char *msg_h_pages = "Pagini"; +char *msg_h_visits= "Vizite"; +char *msg_h_files = "Fisiere"; +char *msg_h_sites = "Situri"; +char *msg_h_xfer = "KBytes"; +char *msg_h_hname = "Nume"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Navigator"; +char *msg_h_ref = "Pagina referenta"; +char *msg_h_ctry = "Tara"; +char *msg_h_search= "Sir de cautare"; +char *msg_h_uname = "Utilizator"; + +/* links along top of page */ +char *msg_hlnk_ds = "Statistici zilnice"; +char *msg_hlnk_hs = "Statistici orare"; +char *msg_hlnk_u = "URL-uri"; +char *msg_hlnk_s = "Situri"; +char *msg_hlnk_a = "Navigator"; +char *msg_hlnk_c = "Tari"; +char *msg_hlnk_r = "Pagini referente"; +char *msg_hlnk_en = "Intrari"; +char *msg_hlnk_ex = "Iesiri"; +char *msg_hlnk_sr = "Cautare"; +char *msg_hlnk_i = "Utilizatori"; + +/* monthly total table */ +char *msg_mtot_ms = "Statistici lunare pentru"; +char *msg_mtot_th = "Total accesari"; +char *msg_mtot_tf = "Total fisiere"; +char *msg_mtot_tx = "Total Kbytes"; +char *msg_mtot_us = "Total situri unice"; +char *msg_mtot_ur = "Total pagini referente unice"; +char *msg_mtot_ua = "Total navigatoare"; +char *msg_mtot_uu = "Total URL-uri unice"; +char *msg_mtot_ui = "Total Utilizatori unici"; +char *msg_mtot_mhd= "Vizitari pe zi"; +char *msg_mtot_mhh= "Vizitari pe ora"; +char *msg_mtot_mfd= "Fisiere pe zi"; +char *msg_mtot_mpd= "Pagini pe zi"; +char *msg_mtot_msd= "Situri pe zi"; +char *msg_mtot_mvd= "Vizite pe zi"; +char *msg_mtot_mkd= "KBytes pe zi"; +char *msg_mtot_rc = "Accesari dupa codul de raspuns"; + +/* daily total table */ +char *msg_dtot_ds = "Statistici zilnice pe luna"; + +/* hourly total table */ +char *msg_htot_hs = "Statistici orare pe luna"; + +/* country pie chart */ +char *msg_ctry_use= "Utilizarea dupa tara pe luna"; + +/* top tables */ +/* Formatted as "Topul xxx din xxx total ceva" */ +char *msg_top_top = "Top"; +char *msg_top_of = "din"; +char *msg_top_s = "al Siturilor"; +char *msg_top_u = "al URL-urilor"; +char *msg_top_r = "al Paginilor referente"; +char *msg_top_a = "al Navigatoarelor"; +char *msg_top_c = "al Tarilor"; +char *msg_top_en = "total Pagini de intrare"; +char *msg_top_ex = "total Pagini de iesire"; +char *msg_top_sr = "total Siruri de cautare"; +char *msg_top_i = "Total Utilizatori"; +char *msg_v_sites = "Vizualizarea tuturor siturilor"; +char *msg_v_urls = "Vizualizarea tuturor URL-urilor"; +char *msg_v_refs = "Vizualizarea tuturor paginilor referente"; +char *msg_v_agents= "Vizualizarea tuturor navigatoarelor"; +char *msg_v_search= "Vizualizarea tuturor cuvintelor cheie"; +char *msg_v_users = "Vizualizarea tuturor utiltizatorilor"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Ian", "Feb", "Mar", + "Apr", "Mai", "Iun", + "Iul", "Aug", "Sep", + "Oct", "Noi", "Dec"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Ianuarie", "Februarie", "Martie", "Aprilie", + "Mai", "Iunie", "Iulie", "August", + "Septembrie","Octombrie", "Noiembrie","Decembrie"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Cod de raspuns nedefinit", 0 }, + { "Cod 100 - Continua", 0 }, + { "Cod 101 - Schimb de protocol", 0 }, + { "Cod 200 - OK", 0 }, + { "Cod 201 - Creat", 0 }, + { "Cod 202 - Aceptat", 0 }, + { "Cod 203 - Informatie fara autoritate", 0 }, + { "Cod 204 - Fara continut", 0 }, + { "Cod 205 - Initializare continut", 0 }, + { "Cod 206 - Continut partial", 0 }, + { "Cod 300 - Optiuni multiple", 0 }, + { "Cod 301 - Mutat permanent", 0 }, + { "Cod 302 - Gasit", 0 }, + { "Cod 303 - Vezi alt", 0 }, + { "Cod 304 - Nemodificat", 0 }, + { "Cod 305 - Foloseste proxy", 0 }, + { "Cod 307 - Mutat temporar", 0 }, + { "Cod 400 - Cerere gresita", 0 }, + { "Cod 401 - Neautorizat", 0 }, + { "Cod 402 - Plata solicitata", 0 }, + { "Cod 403 - Interzis", 0 }, + { "Cod 404 - Lipsa", 0 }, + { "Cod 405 - Metoda nepermisa", 0 }, + { "Cod 406 - Inacceptabil", 0 }, + { "Cod 407 - Autentificare prin proxy necesara", 0 }, + { "Cod 408 - Timeout cerere", 0 }, + { "Cod 409 - Conflict", 0 }, + { "Cod 410 - Satisfacut", 0 }, + { "Cod 411 - Lungime solicitata", 0 }, + { "Cod 412 - Precondite esuata", 0 }, + { "Cod 413 - Entitatea ceruta este prea mare", 0 }, + { "Cod 414 - URI-ul cerut prea lung", 0 }, + { "Cod 415 - Tip de mediu necunoscut", 0 }, + { "Cod 416 - Domeniul cererii nerealizabil", 0 }, + { "Cod 417 - Asteptare esuata", 0 }, + { "Cod 500 - Eroare interna a serverului", 0 }, + { "Cod 501 - Neimplementat", 0 }, + { "Cod 502 - Gateway gresit", 0 }, + { "Cod 503 - Serviciu indisponibil", 0 }, + { "Cod 504 - Timeout la gateway", 0 }, + { "Cod 505 - Versiune de HTTP nesuportata", 0 } + }; + +char *msg_title = "Statisticile de utilizare ale lui"; +char *msg_h_other = "Altele"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Nerezolvat/Necunoscut", 0,0,0 }, +{ IDX_3C('c','o','m'), "Commercial (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Educational (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "US Guvernamental (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "International (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "US Militar (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Retea (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Non-Profit (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Arpanet stilul vechi (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Cimp Nato (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "Emiratele Arabe Unite", 0,0,0 }, +{ IDX_2C('a','f'), "Afganistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua si Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armenia", 0,0,0 }, +{ IDX_2C('a','n'), "Antilele olandeze", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarctica", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "Samoa americana", 0,0,0 }, +{ IDX_2C('a','t'), "Austria", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaidjan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia si Hertegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgia", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brazilia", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Insula Bouvet", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Bielorusia", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Canada", 0,0,0 }, +{ IDX_2C('c','c'), "Insulele Cocos (Keeling)", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Republica Centrafricana", 0,0,0 }, +{ IDX_2C('c','g'), "Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Elvetia", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire (Coasta de Fildes)", 0,0,0 }, +{ IDX_2C('c','k'), "Insulele Cook", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Camerun", 0,0,0 }, +{ IDX_2C('c','n'), "China", 0,0,0 }, +{ IDX_2C('c','o'), "Columbia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Insulele Capului Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Insulele Christmas", 0,0,0 }, +{ IDX_2C('c','y'), "Cipru", 0,0,0 }, +{ IDX_2C('c','z'), "Republica Ceha", 0,0,0 }, +{ IDX_2C('d','e'), "Germania", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Danemarca", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Republica Dominicana", 0,0,0 }, +{ IDX_2C('d','z'), "Algeria", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador", 0,0,0 }, +{ IDX_2C('e','e'), "Estonia", 0,0,0 }, +{ IDX_2C('e','g'), "Egipt", 0,0,0 }, +{ IDX_2C('e','h'), "Sahara Occidentala", 0,0,0 }, +{ IDX_2C('e','r'), "Eritreea", 0,0,0 }, +{ IDX_2C('e','s'), "Spania", 0,0,0 }, +{ IDX_2C('e','t'), "Etiopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finlanda", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Insulele Falkland (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronezia", 0,0,0 }, +{ IDX_2C('f','o'), "Insulele Faroe", 0,0,0 }, +{ IDX_2C('f','r'), "Franta", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Marea Britanie (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgia", 0,0,0 }, +{ IDX_2C('g','f'), "Guiana Franceza", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Groenlanda", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guineea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadelupe", 0,0,0 }, +{ IDX_2C('g','q'), "Guineea Ecuatoriala", 0,0,0 }, +{ IDX_2C('g','r'), "Grecia", 0,0,0 }, +{ IDX_2C('g','s'), "Ins. S. Georgia si S. Sandwich", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guiana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Insulele Heard si McDonald", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Croatia", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Ungaria", 0,0,0 }, +{ IDX_2C('i','d'), "Indonezia", 0,0,0 }, +{ IDX_2C('i','e'), "Irlanda", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "India", 0,0,0 }, +{ IDX_2C('i','o'), "Teritoriul Britanic din Oceanul Indian", 0,0,0 }, +{ IDX_2C('i','q'), "Irak", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Islanda", 0,0,0 }, +{ IDX_2C('i','t'), "Italia", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Iordania", 0,0,0 }, +{ IDX_2C('j','p'), "Japan", 0,0,0 }, +{ IDX_2C('k','e'), "Kenia", 0,0,0 }, +{ IDX_2C('k','g'), "Kirgizstan", 0,0,0 }, +{ IDX_2C('k','h'), "Cambodgia", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Insulele Comore", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts si Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Coreea (de Nord)", 0,0,0 }, +{ IDX_2C('k','r'), "Coreea (de Sud)", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Insulele Cayman", 0,0,0 }, +{ IDX_2C('k','z'), "Kazahstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Liban", 0,0,0 }, +{ IDX_2C('l','c'), "Sfinta Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lituania", 0,0,0 }, +{ IDX_2C('l','u'), "Luxemburg", 0,0,0 }, +{ IDX_2C('l','v'), "Letonia", 0,0,0 }, +{ IDX_2C('l','y'), "Libia", 0,0,0 }, +{ IDX_2C('m','a'), "Maroc", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Insulele Marshall", 0,0,0 }, +{ IDX_2C('m','k'), "Macedonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar (Birmania)", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolia", 0,0,0 }, +{ IDX_2C('m','o'), "Macao", 0,0,0 }, +{ IDX_2C('m','p'), "Insulele Mariane de Nord", 0,0,0 }, +{ IDX_2C('m','q'), "Martinica", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldive", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexic", 0,0,0 }, +{ IDX_2C('m','y'), "Malaezia", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambic", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "Noua Caledonie", 0,0,0 }, +{ IDX_2C('n','e'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','f'), "Insula Norfolk", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Olanda", 0,0,0 }, +{ IDX_2C('n','o'), "Norvegia", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "Noua Zeelanda", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "Polinezia franceza", 0,0,0 }, +{ IDX_2C('p','g'), "Papua Noua Guinee", 0,0,0 }, +{ IDX_2C('p','h'), "Filipine", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Polonia", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre si Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugalia", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Romania", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Rusia", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Arabia Saudita", 0,0,0 }, +{ IDX_2C('s','b'), "Insulele Solomon", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Suedia", 0,0,0 }, +{ IDX_2C('s','g'), "Singapore", 0,0,0 }, +{ IDX_2C('s','h'), "Sfinta Elena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenia", 0,0,0 }, +{ IDX_2C('s','j'), "Insulele Svalbard si Jan Mayen", 0,0,0 }, +{ IDX_2C('s','k'), "Republica Slovaca", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Surinam", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome si Principe", 0,0,0 }, +{ IDX_2C('s','u'), "URSS (fosta)", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Insulele Turks si Caicos", 0,0,0 }, +{ IDX_2C('t','d'), "Ciad", 0,0,0 }, +{ IDX_2C('t','f'), "Teritoriile Antarctice Franceze", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Tailanda", 0,0,0 }, +{ IDX_2C('t','j'), "Tadjikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisia", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Portuguese Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turcia", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad-Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ucraina", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "Regatul Unit", 0,0,0 }, +{ IDX_2C('u','m'), "Insulele US Minor Outlying", 0,0,0 }, +{ IDX_2C('u','s'), "Statele Unite ale Americii", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatican (Sfintul Scaun)", 0,0,0 }, +{ IDX_2C('v','c'), "Sifintul Vincent si Grenadine", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Insulele Virgine (britance)", 0,0,0 }, +{ IDX_2C('v','i'), "Insulele Virgine (americane)", 0,0,0 }, +{ IDX_2C('v','n'), "Vietnam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Insulele Wallis si Futuna", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Yugoslavia", 0,0,0 }, +{ IDX_2C('z','a'), "Africa de Sud", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.romanian-iso-8859-2 b/lang/webalizer_lang.romanian-iso-8859-2 new file mode 100644 index 0000000..231ed36 --- /dev/null +++ b/lang/webalizer_lang.romanian-iso-8859-2 @@ -0,0 +1,635 @@ +/* + webalizer_lang.romanian-iso-8859-2 + + Webalizer V2.0x Language Support file for Romanian (iso-8859-2 charset). + 17-May-1999 Translation by Mircea Ilie (mirceax@tep.ro) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 04-Feb-2000 Level 1.3 translation by Iulian Radu (iulian_r@starnets.ro) + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 16-Jan-2001 Level 2.0 translation by Mircea Ilie (mirceax@tep.ro) + 25-Sep-2001 ISO-8859-2 version by Mircea Ilie (mirceax@tep.ro) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.french for french). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "în româna"; +char *langcode = "ro"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "înregistrãri"; +char *msg_addresses="adrese"; +char *msg_ignored = "ignorat"; +char *msg_bad = "greºit"; +char *msg_in = "în"; +char *msg_seconds = "secunde"; + +/* progress and setup error messages */ +char *msg_log_err = "Eroare: Nu pot deschide fiºierul jurnal"; +char *msg_log_use = "Accesez fiºierul jurnal"; +char *msg_dir_err = "Eroare: Nu pot sã ajung în directorul"; +char *msg_dir_use = "Rezultatul este salvat în"; +char *msg_cur_dir = "directorul curent"; +char *msg_hostname= "Hostname-ul pentru rapoarte este"; +char *msg_ign_hist= "Ignor fiºierul de istoric precedent..."; +char *msg_no_hist = "Nu pot gãsi fiºierul de istoric..."; +char *msg_get_hist= "Citesc fiºierul de istoric..."; +char *msg_put_hist= "Salvez informaþiile în fiºierul de istoric..."; +char *msg_hist_err= "Eroare: Nu pot sã scriu în fiºierul de istoric"; +char *msg_bad_hist= "Eroare: Ignor înregistrãrile invalide din fiºierul de istoric"; +char *msg_bad_conf= "Eroare: Nu pot deschide fiºierul de configurare"; +char *msg_bad_key = "Avertisment: Cuvînt cheie invalid"; +char *msg_bad_date= "Eroare: Sar înregistrarea (date incorecte)"; +char *msg_ign_nscp= "Sar înregistrarea antetului Netscape"; +char *msg_bad_rec = "Sar o înregistrare greºitã"; +char *msg_no_vrec = "Nu am gãsit nici o înregistrare corectã!"; +char *msg_gen_rpt = "Generez un raport pentru"; +char *msg_gen_sum = "Generez cuprinsul raportului"; +char *msg_get_data= "Citesc datele rulate înainte..."; +char *msg_put_data= "Salvez datele rulate acum..."; +char *msg_no_data = "Datele rulate înainte nu au fost gãsite..."; +char *msg_bad_data= "Eroare: Nu pot reface datele rulate"; +char *msg_data_err= "Eroare: Nu pot salva datele rulate acum"; +char *msg_dup_data= "Avertisment: S-ar putea sã fi gãsit date duplicate"; + +/* DNS Stuff */ +char *msg_dns_nocf= "Nu s-a specificat nici un fiºier cache, renunþ..."; +char *msg_dns_nodb= "Eroare: Nu pot deschide fiºierul cache al DNS"; +char *msg_dns_nolk= "Eroare: Nu pot bloca fiºierul cache al DNS"; +char *msg_dns_usec= "Folosesc fiºierul cache al DNS"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "Nimic de prelucrat"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Nu pot aloca suficientã memorie, dezactivez Top Situri!"; +char *msg_nomem_tr= "Nu pot aloca suficientã memorie, dezactivez Top Pagini referente!"; +char *msg_nomem_tu= "Nu pot aloca suficientã memorie, dezactivez Top URL-uri!"; +char *msg_nomem_tc= "Nu pot aloca suficientã memorie, dezactivez Top Þãri!"; +char *msg_nomem_ta= "Nu pot aloca suficientã memorie, dezactivez Top Navigatoare vizitatori!"; +char *msg_nomem_tsr="Nu pot aloca suficientã memorie, dezactivez Top ªiruri cãutate!"; +char *msg_nomem_ti= "Nu pot aloca suficientã memorie, dezactivez Top Utilizatori!"; +char *msg_nomem_dh= "Eroare adãugare nod host (zilnic), sar"; +char *msg_nomem_mh= "Eroare adãugare nod host (lunar), sar"; +char *msg_nomem_u = "Eroare adãugare nod URL, sar"; +char *msg_nomem_a = "Eroare adãugare nod Navigator client, sar"; +char *msg_nomem_r = "Eroare adãugare nod de Paginã referentã, sar"; +char *msg_nomem_sc= "Eroare adãugare nod ªir de cãutare, sar"; +char *msg_nomem_i = "Eroare adãugare nod Utilizatori, sar"; + +/* log record errors */ +char *msg_big_rec = "Eroare: Sar o înregistrare de jurnal supradimensionatã"; +char *msg_big_host= "Avertisment: Trunchiez hostname supradimensionat"; +char *msg_big_date= "Avertisment: Trunchiez cîmpul datã supradimensionat"; +char *msg_big_req = "Avertisment: Trunchiez cîmpul cerere supradimensionat"; +char *msg_big_ref = "Avertisment: Trunchiez cîmpul paginii referente supradimensionat"; +char *msg_big_user= "Avertisment: Trunchiez cîmpul utilizator supradimensionat"; +char *msg_big_one = "Avertisment: ªirul depãºeºte dimensiunea spaþiului de stocare"; + +/* misc errors */ +char *msg_no_open = "Eroare: Nu pot deschide fiºierul"; + +/* Help display... */ +char *h_usage1 = "Utilizare"; +char *h_usage2 = "[opþiuni] [fiºier jurnal]"; +char *h_msg[]= { + "-h = afiºeazã acest mesaj de ajutor" , + "-V = afiºeazã informaþii despre versiune" , + "-v = be verbose" , + "-d = afiºeazã informaþii de depanare suplimentare" , + "-F type = Tip jurnal. type= (clf | ftp | squid | w3c)" , + "-f = eroare la secvenþa de fold" , + "-i = ignorã fiºierul de istoric" , + "-p = pãstreazã starea (incremental)" , + "-b = ignorã starea (incremental)" , + "-q = eliminã mesajele de informare" , + "-Q = eliminã _TOATE_ mesajele" , + "-Y = eliminã graficul þãrilor" , + "-G = eliminã graficul orelor" , + "-H = eliminã starea pe ore" , + "-L = eliminã legenda graficelor color" , + "-l num = foloseºte linii numerotate pe fundalul graficelor" , + "-m num = valoarea timeout-ului pentru vizite (secunde)" , + "-T = afiºeazã informaþiile temporale" , + "-c file = foloseºte fiºierul de configurare 'file'" , + "-n name = hostname-ul de folosit" , + "-o dir = directorul folosit pentru rezultate" , + "-t name = titlul raportului va fi 'name'" , + "-a name = ascunde navigatoarele clienþilor de tipul 'name'" , + "-r name = ascunde pagina referentã cu numele 'name'" , + "-s name = ascunde situl 'name'" , + "-u name = ascunde URL-ul 'name'" , + "-x name = foloseºte extensia de nume fiºier 'name'" , + "-O name = Omit page 'name'" , + "-P name = extensia tipului de paginã va fi 'name'" , + "-I name = aliasul index-ului va fi 'name'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = afiºeazã numeric topul navigatoarelor clienþilor" , + "-C num = afiºeazã numeric topul þãrilor" , + "-R num = afiºeazã numeric topul referenþilor" , + "-S num = afiºeazã numeric topul siturilor" , + "-U num = afiºeazã numeric topul URL-urilor" , + "-e num = afiºeazã numeric topul Paginilor de intrare", + "-E num = afiºeazã numeric topul Paginilor de iesire", + "-X = Ascunde siturile individuale" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Foloseºte fiºierul cache DNS 'name'" , + "-N num = Numãrul de procese DNS (0=dezactivat)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Perioada analizatã"; +char *msg_hhdr_gt = "Generat în"; + +/* main index strings */ +char *msg_main_us = "Sumarul utilizarii lui"; +/* char *msg_main_per= "ultimele 12 luni"; */ +char *msg_main_per= "Sumarul pe lunã"; +char *msg_main_sum= "Sumarul pe lunã"; +char *msg_main_da = "Media zilnicã"; +char *msg_main_mt = "Totaluri lunare"; + +/* month HTML page strings */ +char *msg_hmth_du = "Utilizarea zilnicã pe lunã"; +char *msg_hmth_hu = "Utilizarea orarã pe lunã"; + +/* table header strings */ +char *msg_h_by = "dupã"; +char *msg_h_avg = "Medie"; +char *msg_h_max = "Maxim"; +char *msg_h_total = "Total"; +char *msg_h_totals= "Totaluri"; +char *msg_h_day = "Zi"; +char *msg_h_mth = "Lunã"; +char *msg_h_hour = "Orã"; +char *msg_h_hits = "Accesãri"; +char *msg_h_pages = "Pagini"; +char *msg_h_visits= "Vizite"; +char *msg_h_files = "Fiºiere"; +char *msg_h_sites = "Situri"; +char *msg_h_xfer = "KBytes"; +char *msg_h_hname = "Nume"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Navigator"; +char *msg_h_ref = "Paginã referentã"; +char *msg_h_ctry = "Þarã"; +char *msg_h_search= "ªir de cãutare"; +char *msg_h_uname = "Utilizator"; + +/* links along top of page */ +char *msg_hlnk_ds = "Statistici zilnice"; +char *msg_hlnk_hs = "Statistici orare"; +char *msg_hlnk_u = "URL-uri"; +char *msg_hlnk_s = "Situri"; +char *msg_hlnk_a = "Navigator"; +char *msg_hlnk_c = "Þãri"; +char *msg_hlnk_r = "Pagini referente"; +char *msg_hlnk_en = "Intrãri"; +char *msg_hlnk_ex = "Ieºiri"; +char *msg_hlnk_sr = "Cãutare"; +char *msg_hlnk_i = "Utilizatori"; + +/* monthly total table */ +char *msg_mtot_ms = "Statistici lunare pentru"; +char *msg_mtot_th = "Total accesãri"; +char *msg_mtot_tf = "Total fiºiere"; +char *msg_mtot_tx = "Total Kbytes"; +char *msg_mtot_us = "Total situri unice"; +char *msg_mtot_ur = "Total pagini referente unice"; +char *msg_mtot_ua = "Total navigatoare"; +char *msg_mtot_uu = "Total URL-uri unice"; +char *msg_mtot_ui = "Total Utilizatori unici"; +char *msg_mtot_mhd= "Vizite pe zi"; +char *msg_mtot_mhh= "Vizite pe orã"; +char *msg_mtot_mfd= "Fiºiere pe zi"; +char *msg_mtot_mpd= "Pagini pe zi"; +char *msg_mtot_msd= "Situri pe zi"; +char *msg_mtot_mvd= "Vizite pe zi"; +char *msg_mtot_mkd= "KBytes pe zi"; +char *msg_mtot_rc = "Accesãri dupã codul de rãspuns"; + +/* daily total table */ +char *msg_dtot_ds = "Statistici zilnice pe lunã"; + +/* hourly total table */ +char *msg_htot_hs = "Statistici orare pe lunã"; + +/* country pie chart */ +char *msg_ctry_use= "Utilizarea dupã þarã pe lunã"; + +/* top tables */ +/* Formatted as "Topul xxx din xxx total ceva" */ +char *msg_top_top = "Top"; +char *msg_top_of = "din"; +char *msg_top_s = "al Siturilor"; +char *msg_top_u = "al URL-urilor"; +char *msg_top_r = "al Paginilor referente"; +char *msg_top_a = "al Navigatoarelor"; +char *msg_top_c = "al Þãrilor"; +char *msg_top_en = "total Pagini de intrare"; +char *msg_top_ex = "total Pagini de ieºire"; +char *msg_top_sr = "total ªiruri de cãutare"; +char *msg_top_i = "total Utilizatori"; +char *msg_v_sites = "Afiºarea tuturor siturilor"; +char *msg_v_urls = "Afiºarea tuturor URL-urilor"; +char *msg_v_refs = "Afiºarea tuturor paginilor referente"; +char *msg_v_agents= "Afiºarea tuturor navigatoarelor"; +char *msg_v_search= "Afiºarea tuturor cuvintelor cheie"; +char *msg_v_users = "Afiºarea tuturor utiltizatorilor"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Ian", "Feb", "Mar", + "Apr", "Mai", "Iun", + "Iul", "Aug", "Sep", + "Oct", "Noi", "Dec"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Ianuarie", "Februarie", "Martie", "Aprilie", + "Mai", "Iunie", "Iulie", "August", + "Septembrie","Octombrie", "Noiembrie","Decembrie"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Cod de rãspuns nedefinit", 0 }, + { "Cod 100 - Continuã", 0 }, + { "Cod 101 - Schimb de protocol", 0 }, + { "Cod 200 - OK", 0 }, + { "Cod 201 - Creat", 0 }, + { "Cod 202 - Acceptat", 0 }, + { "Cod 203 - Informaþie fãrã autoritate", 0 }, + { "Cod 204 - Fãrã conþinut", 0 }, + { "Cod 205 - Iniþializare conþinut", 0 }, + { "Cod 206 - Conþinut parþial", 0 }, + { "Cod 300 - Opþiuni multiple", 0 }, + { "Cod 301 - Mutat permanent", 0 }, + { "Cod 302 - Gãsit", 0 }, + { "Cod 303 - Vezi alt", 0 }, + { "Cod 304 - Nemodificat", 0 }, + { "Cod 305 - Foloseºte proxy", 0 }, + { "Cod 307 - Mutat temporar", 0 }, + { "Cod 400 - Cerere greºitã", 0 }, + { "Cod 401 - Neautorizat", 0 }, + { "Cod 402 - Platã solicitatã", 0 }, + { "Cod 403 - Interzis", 0 }, + { "Cod 404 - Lipsã", 0 }, + { "Cod 405 - Metodã nepermisã", 0 }, + { "Cod 406 - Inacceptabil", 0 }, + { "Cod 407 - Autentificare prin proxy necesarã", 0 }, + { "Cod 408 - Timeout cerere", 0 }, + { "Cod 409 - Conflict", 0 }, + { "Cod 410 - Satisfãcut", 0 }, + { "Cod 411 - Lungime solicitatã", 0 }, + { "Cod 412 - Precondiþie eºuatã", 0 }, + { "Cod 413 - Entitatea cerutã este prea mare", 0 }, + { "Cod 414 - URI-ul cerut este prea lung", 0 }, + { "Cod 415 - Tip de mediu necunoscut", 0 }, + { "Cod 416 - Domeniul cererii nerealizabil", 0 }, + { "Cod 417 - Aºteptarea a eºuat", 0 }, + { "Cod 500 - Eroare internã a serverului", 0 }, + { "Cod 501 - Neimplementat", 0 }, + { "Cod 502 - Gateway greºit", 0 }, + { "Cod 503 - Serviciu indisponibil", 0 }, + { "Cod 504 - Timeout la gateway", 0 }, + { "Cod 505 - Versiune de HTTP neacceptatã", 0 } + }; + +char *msg_title = "Statisticile de utilizare ale lui"; +char *msg_h_other = "Altele"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Nerezolvat/Necunoscut", 0,0,0 }, +{ IDX_3C('c','o','m'), "Comercial (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Educational (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "US Guvernamental (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "Internaþional (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "US Militar (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Reþea (Network)", 0,0,0 }, +{ IDX_3C('o','r','g'), "þie Non-Profit (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Arpanet stilul vechi (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"NATO", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "Emiratele Arabe Unite", 0,0,0 }, +{ IDX_2C('a','f'), "Afghanistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua ºi Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armenia", 0,0,0 }, +{ IDX_2C('a','n'), "Antilele olandeze", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarctica", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "Samoa americanã", 0,0,0 }, +{ IDX_2C('a','t'), "Austria", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaidjan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia ºi Herþegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgia", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brazilia", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Insula Bouvet", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Bielorusia", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Canada", 0,0,0 }, +{ IDX_2C('c','c'), "Insulele Cocos (Keeling)", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Republica Centrafricanã", 0,0,0 }, +{ IDX_2C('c','g'), "Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Elveþia", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire (Coasta de Fildeº)", 0,0,0 }, +{ IDX_2C('c','k'), "Insulele Cook", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Camerun", 0,0,0 }, +{ IDX_2C('c','n'), "China", 0,0,0 }, +{ IDX_2C('c','o'), "Columbia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Insulele Capului Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Insulele Christmas", 0,0,0 }, +{ IDX_2C('c','y'), "Cipru", 0,0,0 }, +{ IDX_2C('c','z'), "Republica Cehã", 0,0,0 }, +{ IDX_2C('d','e'), "Germania", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Danemarca", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Republica Dominicanã", 0,0,0 }, +{ IDX_2C('d','z'), "Algeria", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador", 0,0,0 }, +{ IDX_2C('e','e'), "Estonia", 0,0,0 }, +{ IDX_2C('e','g'), "Egipt", 0,0,0 }, +{ IDX_2C('e','h'), "Sahara Occidentalã", 0,0,0 }, +{ IDX_2C('e','r'), "Eritreea", 0,0,0 }, +{ IDX_2C('e','s'), "Spania", 0,0,0 }, +{ IDX_2C('e','t'), "Etiopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finlanda", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Insulele Falkland (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronezia", 0,0,0 }, +{ IDX_2C('f','o'), "Insulele Faroe", 0,0,0 }, +{ IDX_2C('f','r'), "Franþa", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Marea Britanie (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgia", 0,0,0 }, +{ IDX_2C('g','f'), "Guiana Francezã", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Groenlanda", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guineea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadelupe", 0,0,0 }, +{ IDX_2C('g','q'), "Guineea Ecuatorialã", 0,0,0 }, +{ IDX_2C('g','r'), "Grecia", 0,0,0 }, +{ IDX_2C('g','s'), "Ins. S. Georgia si S. Sandwich", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guiana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Insulele Heard si McDonald", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Croaþia", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Ungaria", 0,0,0 }, +{ IDX_2C('i','d'), "Indonezia", 0,0,0 }, +{ IDX_2C('i','e'), "Irlanda", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "India", 0,0,0 }, +{ IDX_2C('i','o'), "Teritoriul Britanic din Oceanul Indian",0,0,0 }, +{ IDX_2C('i','q'), "Irak", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Islanda", 0,0,0 }, +{ IDX_2C('i','t'), "Italia", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Iordania", 0,0,0 }, +{ IDX_2C('j','p'), "Japonia", 0,0,0 }, +{ IDX_2C('k','e'), "Kenia", 0,0,0 }, +{ IDX_2C('k','g'), "Kîrgîzstan", 0,0,0 }, +{ IDX_2C('k','h'), "Cambodgia", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Insulele Comore", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts si Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Coreea (de Nord)", 0,0,0 }, +{ IDX_2C('k','r'), "Coreea (de Sud)", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Insulele Cayman", 0,0,0 }, +{ IDX_2C('k','z'), "Kazahstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Liban", 0,0,0 }, +{ IDX_2C('l','c'), "Sfînta Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lituania", 0,0,0 }, +{ IDX_2C('l','u'), "Luxemburg", 0,0,0 }, +{ IDX_2C('l','v'), "Letonia", 0,0,0 }, +{ IDX_2C('l','y'), "Libia", 0,0,0 }, +{ IDX_2C('m','a'), "Maroc", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Insulele Marshall", 0,0,0 }, +{ IDX_2C('m','k'), "Macedonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar (Birmania)", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolia", 0,0,0 }, +{ IDX_2C('m','o'), "Macao", 0,0,0 }, +{ IDX_2C('m','p'), "Insulele Mariane de Nord", 0,0,0 }, +{ IDX_2C('m','q'), "Martinica", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldive", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexic", 0,0,0 }, +{ IDX_2C('m','y'), "Malaezia", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambic", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "Noua Caledonie", 0,0,0 }, +{ IDX_2C('n','e'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','f'), "Insula Norfolk", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Olanda", 0,0,0 }, +{ IDX_2C('n','o'), "Norvegia", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "Noua Zeelandã", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "Polinezia francezã", 0,0,0 }, +{ IDX_2C('p','g'), "Papua Noua Guinee", 0,0,0 }, +{ IDX_2C('p','h'), "Filipine", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Polonia", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre ºi Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugalia", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "România", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Rusia", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Arabia Sauditã", 0,0,0 }, +{ IDX_2C('s','b'), "Insulele Solomon", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Suedia", 0,0,0 }, +{ IDX_2C('s','g'), "Singapore", 0,0,0 }, +{ IDX_2C('s','h'), "Sfînta Elena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenia", 0,0,0 }, +{ IDX_2C('s','j'), "Insulele Svalbard ºi Jan Mayen", 0,0,0 }, +{ IDX_2C('s','k'), "Republica Slovacã", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Surinam", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome ºi Principe", 0,0,0 }, +{ IDX_2C('s','u'), "URSS (fostã)", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Insulele Turks si Caicos", 0,0,0 }, +{ IDX_2C('t','d'), "Ciad", 0,0,0 }, +{ IDX_2C('t','f'), "Teritoriile Antarctice Franceze", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Tailanda", 0,0,0 }, +{ IDX_2C('t','j'), "Tadjikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisia", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Portuguese Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turcia", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad-Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ucraina", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "Regatul Unit al Marii Britanii", 0,0,0 }, +{ IDX_2C('u','m'), "Insulele US Minor Outlying", 0,0,0 }, +{ IDX_2C('u','s'), "Statele Unite ale Americii", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatican (Sfîntul Scaun)", 0,0,0 }, +{ IDX_2C('v','c'), "Sfîntul Vincent ºi Grenadine", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Insulele Virgine britance", 0,0,0 }, +{ IDX_2C('v','i'), "Insulele Virgine americane", 0,0,0 }, +{ IDX_2C('v','n'), "Vietnam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Insulele Wallis ºi Futuna", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Yugoslavia", 0,0,0 }, +{ IDX_2C('z','a'), "Africa de Sud", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.russian b/lang/webalizer_lang.russian new file mode 100644 index 0000000..9030171 --- /dev/null +++ b/lang/webalizer_lang.russian @@ -0,0 +1,646 @@ +/* This file is full of -*- C -*- code, so treat it as such. + + webalizer_lang.russian + + Webalizer V2.0x Language Support file for Russian. + 15-May-1998 by Bradford L. Barrett (brad@mrunix.net) + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 18-Aug-1998 Translated by Sergey Groznyh + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 10-Mar-2000 New 2.0 strings translated by Andrew A. Vasilyev (andy@demos.su) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + + Note: In order to use the russian character set, the GD graphics + library needs to be patched, otherwise you will get garbage. + The file gd1.3-patch-koi8-r.gz includes this patch, which you + should get and install before compiling the russian version of + the Webalizer. Thanks to Sergey Groznyh for this submission. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Russian"; +char *langcode = "ru"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "ÚÁÐÉÓÅÊ"; +char *msg_addresses="ÁÄÒÅÓÏ×"; +char *msg_ignored = "ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎÏ"; +char *msg_bad = "ÎÅ×ÅÒÎÙÈ"; +char *msg_in = "ÚÁ"; +char *msg_seconds = "ÓÅËÕÎÄ"; + +/* progress and setup error messages */ +char *msg_log_err = "ïÛÉÂËÁ: ÎÅÌØÚÑ ÏÔËÒÙÔØ ÕÞ£ÔÎÙÊ ÆÁÊÌ"; +char *msg_log_use = "éÓÐÏÌØÚÕÅÔÓÑ ÕÞ£ÔÎÙÊ ÆÁÊÌ"; +char *msg_dir_err = "ïÛÉÂËÁ: ÎÅÌØÚÑ ÓÍÅÎÉÔØ ËÁÔÁÌÏÇ ÎÁ"; +char *msg_dir_use = "òÅÚÕÌØÔÁÔ ÓÏÚÄÁ£ÔÓÑ ×"; +char *msg_cur_dir = "ÔÅËÕÝÅÍ ËÁÔÁÌÏÇÅ"; +char *msg_hostname= "äÌÑ ÏÔÞ£ÔÏ× ÉÓÐÏÌØÚÕÅÔÓÑ ÉÍÑ ÈÏÓÔÁ"; +char *msg_ign_hist= "ðÒÅÄÙÄÕÝÅÅ ÓÏÓÔÏÑÎÉÅ ÉÇÎÏÒÉÒÕÅÔÓÑ..."; +char *msg_no_hist = "æÁÊÌ ÓÏÓÔÏÑÎÉÑ ÎÅ ÎÁÊÄÅÎ..."; +char *msg_get_hist= "þÉÔÁÅÔÓÑ ÆÁÊÌ ÓÏÓÔÏÑÎÉÑ..."; +char *msg_put_hist= "óÏÈÒÁÎÑÅÔÓÑ ÉÎÆÏÒÍÁÃÉÑ Ï ÓÏÓÔÏÑÎÉÉ..."; +char *msg_hist_err= "ïÛÉÂËÁ: ÎÅÌØÚÑ ÚÁÐÉÓÁÔØ ÆÁÊÌ ÓÏÓÔÏÑÎÉÑ"; +char *msg_bad_hist= "ïÛÉÂËÁ: ÉÇÎÏÒÉÒÕÅÔÓÑ ÎÅ×ÅÒÎÁÑ ÚÁÐÉÓØ ÓÏÓÔÏÑÎÉÑ"; +char *msg_bad_conf= "ïÛÉÂËÁ: ÎÅÌØÚÑ ÏÔËÒÙÔØ ÆÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ"; +char *msg_bad_key = "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÎÅ×ÅÒÎÏÅ ËÌÀÞÅ×ÏÅ ÓÌÏ×Ï"; +char *msg_bad_date= "ïÛÉÂËÁ: ÐÒÏÐÕÓËÁÅÔÓÑ ÚÁÐÉÓØ (ÎÅ×ÅÒÎÁÑ ÄÁÔÁ)"; +char *msg_ign_nscp= "ðÒÏÐÕÓËÁÅÔÓÑ ÚÁÐÉÓØ ÚÁÇÏÌÏ×ËÁ Netscape"; +char *msg_bad_rec = "ðÒÏÐÕÓËÁÅÔÓÑ ÎÅ×ÅÒÎÁÑ ÚÁÐÉÓØ"; +char *msg_no_vrec = "îÅ ÎÁÊÄÅÎÏ ÎÉ ÏÄÎÏÊ ×ÅÒÎÏÊ ÚÁÐÉÓÉ!"; +char *msg_gen_rpt = "çÅÎÅÒÉÒÕÅÔÓÑ ÏÔÞ£Ô ÚÁ"; +char *msg_gen_sum = "çÅÎÅÒÉÒÕÅÔÓÑ ÏÂÝÉÊ ÏÔÞ£Ô"; + +/* New for 1.1 */ /* Current state data messages */ +char *msg_get_data= "þÉÔÁÀÔÓÑ ÄÁÎÎÙÅ ÐÒÅÄÙÄÕÝÅÇÏ ÚÁÐÕÓËÁ..."; +char *msg_put_data= "óÏÈÒÁÎÑÀÔÓÑ ÄÁÎÎÙÅ ÔÅËÕÝÅÇÏ ÚÁÐÕÓËÁ..."; +char *msg_no_data = "äÁÎÎÙÅ ÐÒÅÄÙÄÕÝÅÇÏ ÚÁÐÕÓËÁ ÎÅ ÎÁÊÄÅÎÙ..."; +char *msg_bad_data= "ïÛÉÂËÁ: ÎÅÌØÚÑ ×ÏÓÓÔÁÎÏ×ÉÔØ ÄÁÎÎÙÅ ÐÒÅÄÙÄÕÝÅÇÏ ÚÁÐÕÓËÁ"; +char *msg_data_err= "ïÛÉÂËÁ: ÎÅÌØÚÑ ÓÏÈÒÁÎÉÔØ ÄÁÎÎÙÅ ÔÅËÕÝÅÇÏ ÚÁÐÕÓËÁ"; +char *msg_dup_data= "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÏÂÎÁÒÕÖÅÎÏ ×ÏÚÍÏÖÎÏÅ ÄÕÂÌÉÒÏ×ÁÎÉÅ ÄÁÎÎÙÈ"; + +/* DNS Stuff */ +char *msg_dns_nocf= "îÅ ÕËÁÚÁÎ ËÜÛ-ÆÁÊÌ, ÏÓÔÁÎÏ×..."; +char *msg_dns_nodb= "ïÛÉÂËÁ: ÎÅÌØÚÑ ÏÔËÒÙÔØ ËÜÛ-ÆÁÊÌ DNS"; +char *msg_dns_nolk= "ïÛÉÂËÁ: ÎÅÌØÚÑ ÂÌÏËÉÒÏ×ÁÔØ ËÜÛ-ÆÁÊÌ DNS"; +char *msg_dns_usec= "éÓÐÏÌØÚÕÅÔÓÑ DNS ËÜÛ-ÆÁÊÌ"; +char *msg_dns_rslv= "DNS ÐÏÉÓË"; +char *msg_dns_none= "îÅÞÅÇÏ ÏÂÒÁÂÁÔÙ×ÁÔØ"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "îÅÌØÚÑ ÚÁÒÅÚÅÒ×ÉÒÏ×ÁÔØ ÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ, ÓÔÁÔÉÓÔÉËÁ ÓÁÊÔÏ× ÏÔËÌÀÞÅÎÁ!"; +char *msg_nomem_tr= "îÅÌØÚÑ ÚÁÒÅÚÅÒ×ÉÒÏ×ÁÔØ ÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ, ÓÔÁÔÉÓÔÉËÁ ÓÓÙÌÁÀÝÉÈÓÑ ÓÔÒÁÎÉà ÏÔËÌÀÞÅÎÁ!"; +char *msg_nomem_tu= "îÅÌØÚÑ ÚÁÒÅÚÅÒ×ÉÒÏ×ÁÔØ ÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ, ÓÔÁÔÉÓÔÉËÁ URL ÏÔËÌÀÞÅÎÁ!"; +char *msg_nomem_tc= "îÅÌØÚÑ ÚÁÒÅÚÅÒ×ÉÒÏ×ÁÔØ ÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ, ÓÔÁÔÉÓÔÉËÁ ÓÔÒÁÎ ÏÔËÌÀÞÅÎÁ!"; +char *msg_nomem_ta= "îÅÌØÚÑ ÚÁÒÅÚÅÒ×ÉÒÏ×ÁÔØ ÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ, ÓÔÁÔÉÓÔÉËÁ ÂÒÏÕÚÅÒÏ× ÏÔËÌÀÞÅÎÁ!"; +char *msg_nomem_tsr="îÅÌØÚÑ ÚÁÒÅÚÅÒ×ÉÒÏ×ÁÔØ ÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ, ÓÔÁÔÉÓÔÉËÁ ÓÔÒÏË ÐÏÉÓËÁ ÏÔËÌÀÞÅÎÁ!"; +char *msg_nomem_ti= "îÅÌØÚÑ ÚÁÒÅÚÅÒ×ÉÒÏ×ÁÔØ ÄÏÓÔÁÔÏÞÎÏ ÐÁÍÑÔÉ, ÓÔÁÔÉÓÔÉËÁ ÉͣΠÐÏÌØÚÏ×ÁÔÅÌÅÊ ÏÔËÌÀÞÅÎÁ!"; +char *msg_nomem_dh= "ïÛÉÂËÁ ÄÏÂÁ×ÌÅÎÉÑ ÕÚÌÁ ÈÏÓÔÁ (ÄÎÅ×ÎÏÊ ÏÔÞ£Ô), ÐÒÏÐÕÓËÁÅÔÓÑ"; +char *msg_nomem_mh= "ïÛÉÂËÁ ÄÏÂÁ×ÌÅÎÉÑ ÕÚÌÁ ÈÏÓÔÁ (ÍÅÓÑÞÎÙÊ ÏÔÞ£Ô), ÐÒÏÐÕÓËÁÅÔÓÑ"; +char *msg_nomem_u = "ïÛÉÂËÁ ÄÏÂÁ×ÌÅÎÉÑ ÕÚÌÁ URL, ÐÒÏÐÕÓËÁÅÔÓÑ"; +char *msg_nomem_a = "ïÛÉÂËÁ ÄÏÂÁ×ÌÅÎÉÑ ÕÚÌÁ ÂÒÏÕÚÅÒÁ, ÐÒÏÐÕÓËÁÅÔÓÑ"; +char *msg_nomem_r = "ïÛÉÂËÁ ÄÏÂÁ×ÌÅÎÉÑ ÕÚÌÁ ÓÓÙÌËÉ, ÐÒÏÐÕÓËÁÅÔÓÑ"; +char *msg_nomem_sc= "ïÛÉÂËÁ ÄÏÂÁ×ÌÅÎÉÑ ÕÚÌÁ ÓÔÒÏËÉ ÐÏÉÓËÁ, ÐÒÏÐÕÓËÁÅÔÓÑ"; +char *msg_nomem_i = "ïÛÉÂËÁ ÄÏÂÁ×ÌÅÎÉÑ ÕÚÌÁ ÉÍÅÎÉ ÐÏÌØÚÏ×ÁÔÅÌÑ, ÐÒÏÐÕÓËÁÅÔÓÑ"; + +/* log record errors */ +char *msg_big_rec = "ïÛÉÂËÁ: ÐÒÏÐÕÓËÁÅÔÓÑ ÓÌÉÛËÏÍ ÄÌÉÎÎÁÑ ÕÞ£ÔÎÁÑ ÚÁÐÉÓØ"; +char *msg_big_host= "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÐÒÏÐÕÓËÁÅÔÓÑ ÓÌÉÛËÏÍ ÄÌÉÎÎÏÅ ÉÍÑ ÈÏÓÔÁ"; +char *msg_big_date= "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÐÒÏÐÕÓËÁÅÔÓÑ ÓÌÉÛËÏÍ ÄÌÉÎÎÏÅ ÐÏÌÅ ÄÁÔÙ"; +char *msg_big_req = "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÐÒÏÐÕÓËÁÅÔÓÑ ÓÌÉÛËÏÍ ÄÌÉÎÎÏÅ ÐÏÌÅ ÚÁÐÒÏÓÁ"; +char *msg_big_ref = "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÐÒÏÐÕÓËÁÅÔÓÑ ÓÌÉÛËÏÍ ÄÌÉÎÎÏÅ ÐÏÌÅ ÓÓÙÌÁÀÝÅÊÓÑ ÓÔÒÁÎÉÃÙ"; +char *msg_big_user= "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÐÒÏÐÕÓËÁÅÔÓÑ ÓÌÉÛËÏÍ ÄÌÉÎÎÏÅ ÐÏÌÅ ÉÍÅÎÉ ÐÏÌØÚÏ×ÁÔÅÌÑ"; +char *msg_big_one = "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÓÔÒÏËÁ ÐÒÅ×ÙÓÉÌÁ ÚÁÒÅÚÅÒ×ÉÒÏ×ÁÎÎÙÊ ÏÂߣÍ"; + +/* misc errors */ +char *msg_no_open = "ïÛÉÂËÁ: ÎÅÌØÚÑ ÏÔËÒÙÔØ ÆÁÊÌ"; + +/* Help display... */ +char *h_usage1 = "éÓÐÏÌØÚÏ×ÁÎÉÅ"; +char *h_usage2 = "[ÐÁÒÁÍÅÔÒÙ] [ÕÞ£ÔÎÙÊ ÆÁÊÌ]"; +char *h_msg[]= { + "-h = ×ÙÄÁÔØ ÜÔÏ ÉÎÆÏÒÍÁÃÉÏÎÎÏÅ ÓÏÏÂÝÅÎÉÅ" , + "-V = ×ÙÄÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ" , + "-v = be verbose" , + "-d = ×ÙÄÁ×ÁÔØ ÄÏÐÏÌÎÉÔÅÌØÎÕÀ ÏÔÌÁÄÏÞÎÕÀ ÉÎÆÏÒÍÁÃÉÀ" , + "-F ÔÉÐ = ×ÉÄ ÉÓÈÏÄÎÏÊ ÓÔÁÔÉÓÔÉËÉ. ÔÉÐ = (clf | ftp | squid | w3c)", + "-f = fold sequence errors" , + "-i = ÉÇÎÏÒÉÒÏ×ÁÔØ ÆÁÊÌ ÓÏÓÔÏÑÎÉÑ" , + "-p = ÓÏÈÒÁÎÑÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ÓÏÓÔÏÑÎÉÉ (ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏ)" , + "-b = ignore state (incremental)" , + "-q = ÎÅ ×ÙÄÁ×ÁÔØ ÉÎÆÏÒÍÁÃÉÏÎÎÙÈ ÓÏÏÂÝÅÎÉÊ" , + "-Q = ÎÅ ×ÙÄÁ×ÁÔØ _îéëáëéè_ ÓÏÏÂÝÅÎÉÊ" , + "-Y = ÎÅ ×ÙÄÁ×ÁÔØ ÇÒÁÆÉË ÐÏ ÓÔÒÁÎÁÍ" , + "-G = ÎÅ ×ÙÄÁ×ÁÔØ ÐÏÞÁÓÏ×ÏÊ ÇÒÁÆÉË" , + "-H = ÎÅ ×ÙÄÁ×ÁÔØ ÐÏÞÁÓÏ×ÕÀ ÓÔÁÔÉÓÔÉËÕ" , + "-L = ÎÅ ×ÙÄÁ×ÁÔØ ÏÐÉÓÁÎÉÅ Ã×ÅÔÏ× × ÔÁÂÌÉÃÁÈ" , + "-l ÞÉÓÌÏ = ÒÁÚÍÅÒ ÔÅÎÉ × 'ÞÉÓÌÏ' ÌÉÎÉÊ" , + "-m ÞÉÓÌÏ = ÉÎÔÅÒ×ÁÌ ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ 'ÐÏÓÅÝÅÎÉÑ' (seconds)" , + "-T = ×ÙÄÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ÚÁÔÒÁÞÅÎÎÏÍ ×ÒÅÍÅÎÉ" , + "-c ÆÁÊÌ = ÉÓÐÏÌØÚÏ×ÁÔØ ÆÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ 'ÆÁÊÌ'" , + "-n ÉÍÑ = ÉÓÐÏÌØÚÏ×ÁÔØ × ËÁÞÅÓÔ×Å ÉÍÅÎÉ ÈÏÓÔÁ" , + "-o ËÁÔ. = ÉÓÐÏÌØÚÏ×ÁÔØ × ËÁÞÅÓÔ×Å ×ÙÈÏÄÎÏÇÏ ËÁÔÁÌÏÇÁ" , + "-t ÉÍÑ = ÚÁÇÏÌÏ×ÏË ÏÔÞ£ÔÁ 'ÉÍÑ'" , + "-a ÉÍÑ = ÎÅ ÏÂÒÁÂÁÔÙ×ÁÔØ ÂÒÏÕÚÅÒ 'ÉÍÑ'" , + "-r ÉÍÑ = ÎÅ ÏÂÒÁÂÁÔÙ×ÁÔØ ÓÓÙÌËÕ 'ÉÍÑ'" , + "-s ÉÍÑ = ÎÅ ÏÂÒÁÂÁÔÙ×ÁÔØ ÈÏÓÔ 'ÉÍÑ'" , + "-u ÉÍÑ = ÎÅ ÏÂÒÁÂÁÔÙ×ÁÔØ URL 'ÉÍÑ'" , + "-x ÉÍÑ = ÉÓÐÏÌØÚÏ×ÁÔØ ÒÁÓÛÉÒÅÎÉÅ 'ÉÍÑ' ÄÌÑ HTML-ÆÁÊÌÏ×" , + "-O ÉÍÑ = Omit page 'ÉÍÑ'" , + "-P ÉÍÑ = ÆÁÊÌÙ Ó ÒÁÓÛÉÒÅÎÉÅÍ 'ÉÍÑ' - ÓÔÒÁÎÉÃÙ ÎÁ ÓÅÒ×ÅÒÅ" , + "-I ÉÍÑ = ÉÓÐÏÌØÚÏ×ÁÔØ ËÁË ÄÏÐÏÌÎÉÔÅÌØÎÙÊ ÉÎÄÅËÓÎÙÊ ÆÁÊÌ" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A ÞÉÓÌÏ = ïÔÏÂÒÁÖÁÔØ 'ÞÉÓÌÏ' ÚÁÐÉÓÅÊ ÓÔÁÔÉÓÔÉËÉ ÂÒÏÕÚÅÒÏ×" , + "-C ÞÉÓÌÏ = ïÔÏÂÒÁÖÁÔØ 'ÞÉÓÌÏ' ÚÁÐÉÓÅÊ ÓÔÁÔÉÓÔÉËÉ ÓÔÒÁÎ" , + "-R ÞÉÓÌÏ = ïÔÏÂÒÁÖÁÔØ 'ÞÉÓÌÏ' ÚÁÐÉÓÅÊ ÓÔÁÔÉÓÔÉËÉ ÓÓÙÌÁÀÝÉÈÓÑ ÓÔÒÁÎÉÃ", + "-S ÞÉÓÌÏ = ïÔÏÂÒÁÖÁÔØ 'ÞÉÓÌÏ' ÚÁÐÉÓÅÊ ÓÔÁÔÉÓÔÉËÉ ÓÁÊÔÏ×" , + "-U ÞÉÓÌÏ = ïÔÏÂÒÁÖÁÔØ 'ÞÉÓÌÏ' ÚÁÐÉÓÅÊ ÓÔÁÔÉÓÔÉËÉ URL" , + "-e ÞÉÓÌÏ = ïÔÏÂÒÁÖÁÔØ 'ÞÉÓÌÏ' ÚÁÐÉÓÅÊ ÎÁÞÁÌØÎÙÈ ÓÔÒÁÎÉÃ" , + "-E ÞÉÓÌÏ = ïÔÏÂÒÁÖÁÔØ 'ÞÉÓÌÏ' ÚÁÐÉÓÅÊ ÐÏÓÌÅÄÎÉÈ ÓÔÒÁÎÉÃ" , + "-g ÞÉÓÌÏ = çÒÕÐÐÉÒÏ×ÁÔØ ÄÏÍÅÎÙ ÕÒÏ×ÎÑ 'ÞÉÓÌÏ'" , + "-X = óËÒÙÔØ ÏÔÄÅÌØÎÙÅ ÓÁÊÔÙ" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D ÉÍÑ = éÓÐÏÌØÚÏ×ÁÔØ DNS 'ÉÍÑ' ËÜÛ-ÆÁÊÌ" , + "-N ÞÉÓÌÏ = þÉÓÌÏ DNS ÐÒÏÃÅÓÓÏ× (0=ÏÔËÌÀÞÉÔØ)" , + "-j = Enable native GeoDB lookups" , + "-J ÉÍÑ = Use GeoIP database 'ÉÍÑ'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W ÉÍÑ = Use GeoIP database 'ÉÍÑ'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "ðÅÒÉÏÄ ÓÔÁÔÉÓÔÉËÉ"; +char *msg_hhdr_gt = "äÁÔÁ ÓÏÚÄÁÎÉÑ"; + +/* main index strings */ +char *msg_main_us = "óÕÍÍÁÒÎÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÓÅÒ×ÅÒÁ"; +/* char *msg_main_per= "ÐÏÓÌÅÄÎÉÅ 12 ÍÅÓÑÃÅ×"; */ +char *msg_main_per= "åÖÅÍÅÓÑÞÎÁÑ ÓÔÁÔÉÓÔÉËÁ"; +char *msg_main_sum= "åÖÅÍÅÓÑÞÎÁÑ ÓÔÁÔÉÓÔÉËÁ"; +char *msg_main_da = "÷ ÓÒÅÄÎÅÍ ÚÁ ÄÅÎØ"; +char *msg_main_mt = "÷ÓÅÇÏ ÚÁ ÍÅÓÑÃ"; + +/* month HTML page strings */ +char *msg_hmth_du = "éÓÐÏÌØÚÏ×ÁÎÉÅ ÐÏ ÄÎÑÍ ÎÁ"; +char *msg_hmth_hu = "éÓÐÏÌØÚÏ×ÁÎÉÅ ÐÏ ÞÁÓÁÍ ÎÁ"; + +/* table header strings */ +char *msg_h_by = "ÐÏ"; +char *msg_h_avg = "÷ ÓÒÅÄÎÅÍ"; +char *msg_h_max = "Max"; +char *msg_h_total = "÷ÓÅÇÏ"; +char *msg_h_totals= "÷ÓÅÇÏ"; +char *msg_h_day = "äÅÎØ"; +char *msg_h_mth = "íÅÓÑÃ"; +char *msg_h_hour = "þÁÓ"; +char *msg_h_hits = "ÚÁÐÒÏÓÏ×"; +char *msg_h_pages = "ÓÔÒÁÎÉÃ"; +char *msg_h_visits= "ÐÏÓÅÝÅÎÉÊ"; +char *msg_h_files = "ÆÁÊÌÏ×"; +char *msg_h_sites = "ÓÁÊÔÏ×"; +char *msg_h_xfer = "ëÂÁÊÔ"; +char *msg_h_hname = "éÍÑ ÈÏÓÔÁ"; +char *msg_h_url = "URL"; +char *msg_h_agent = "âÒÏÕÚÅÒ"; +char *msg_h_ref = "óÓÙÌÁÀÝÁÑÓÑ ÓÔÒÁÎÉÃÁ"; +char *msg_h_ctry = "óÔÒÁÎÁ"; +char *msg_h_search= "óÔÒÏËÁ ÐÏÉÓËÁ"; +char *msg_h_uname = "éÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ"; + +/* links along top of page */ +char *msg_hlnk_ds = "óÔÁÔÉÓÔÉËÁ ÐÏ ÄÎÑÍ"; +char *msg_hlnk_hs = "óÔÁÔÉÓÔÉËÁ ÐÏ ÞÁÓÁÍ"; +char *msg_hlnk_u = "URL"; +char *msg_hlnk_s = "óÁÊÔÙ"; +char *msg_hlnk_a = "âÒÏÕÚÅÒÙ"; +char *msg_hlnk_c = "óÔÒÁÎÙ"; +char *msg_hlnk_r = "óÓÙÌÁÀÝÉÅÓÑ ÓÔÒÁÎÉÃÙ"; +char *msg_hlnk_en = "îÁÞÁÌØÎÙÅ ÓÔÒÁÎÉÃÙ"; +char *msg_hlnk_ex = "ðÏÓÌÅÄÎÉÅ ÓÔÒÁÎÉÃÙ"; +char *msg_hlnk_sr = "ðÏÉÓË"; +char *msg_hlnk_i = "ðÏÌØÚÏ×ÁÔÅÌÉ"; + +/* monthly total table */ +char *msg_mtot_ms = "óÔÁÔÉÓÔÉËÁ ÚÁ ÍÅÓÑà ÎÁ"; +char *msg_mtot_th = "÷ÓÅÇÏ ÚÁÐÒÏÓÏ×"; +char *msg_mtot_tf = "÷ÓÅÇÏ ÆÁÊÌÏ×"; +char *msg_mtot_tx = "÷ÓÅÇÏ ËÉÌÏÂÁÊÔ"; +char *msg_mtot_us = "÷ÓÅÇÏ ÕÎÉËÁÌØÎÙÈ ÓÁÊÔÏ×"; +char *msg_mtot_ur = "÷ÓÅÇÏ ÕÎÉËÁÌØÎÙÈ ÓÓÙÌÁÀÝÉÈÓÑ ÓÔÒÁÎÉÃ"; +char *msg_mtot_ua = "÷ÓÅÇÏ ÕÎÉËÁÌØÎÙÈ ÂÒÏÕÚÅÒÏ×"; +char *msg_mtot_uu = "÷ÓÅÇÏ ÕÎÉËÁÌØÎÙÈ URL"; +char *msg_mtot_ui = "÷ÓÅÇÏ ÕÎÉËÁÌØÎÙÈ ÉÍ£Î"; +char *msg_mtot_mhd= "ïÂÒÁÝÅÎÉÊ × ÄÅÎØ"; +char *msg_mtot_mhh= "ïÂÒÁÝÅÎÉÊ × ÞÁÓ"; +char *msg_mtot_mfd= "æÁÊÌÏ× × ÄÅÎØ"; +char *msg_mtot_mpd= "óÔÒÁÎÉÃ × ÄÅÎØ"; +char *msg_mtot_msd= "Sites per Day"; +char *msg_mtot_mvd= "ðÏÓÅÝÅÎÉÊ × ÄÅÎØ"; +char *msg_mtot_mkd= "ïÂß£Í × ÄÅÎØ (ëÂÁÊÔ)"; +char *msg_mtot_rc = "úÁÐÒÏÓÙ ÐÏ ËÏÄÁÍ ÏÔ×ÅÔÁ"; + +/* daily total table */ +char *msg_dtot_ds = "óÔÁÔÉÓÔÉËÁ ÐÏ ÄÎÑÍ ÎÁ"; + +/* hourly total table */ +char *msg_htot_hs = "óÔÁÔÉÓÔÉËÁ ÐÏ ÞÁÓÁÍ ÎÁ"; + +/* country pie chart */ +char *msg_ctry_use= "óÔÁÔÉÓÔÉËÁ ÐÏ ÓÔÒÁÎÁÍ ÎÁ"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "ðÅÒ×ÙÅ"; +char *msg_top_of = "ÉÚ"; +char *msg_top_s = "ÓÁÊÔÏ×"; +char *msg_top_u = "URL"; +char *msg_top_r = "ÓÓÙÌÁÀÝÉÈÓÑ ÓÔÒÁÎÉÃ"; +char *msg_top_a = "ÂÒÏÕÚÅÒÏ×"; +char *msg_top_c = "ÓÔÒÁÎ"; +char *msg_top_en = "ÎÁÞÁÌØÎÙÈ ÓÔÒÁÎÉÃ"; +char *msg_top_ex = "ÐÏÓÌÅÄÎÉÈ ÓÔÒÁÎÉÃ"; +char *msg_top_sr = "ÓÔÒÏË ÐÏÉÓËÁ"; +char *msg_top_i = "ÉͣΠÐÏÌØÚÏ×ÁÔÅÌÅÊ"; +char *msg_v_sites = "ðÏÓÍÏÔÒÅÔØ ×ÓÅ ÓÁÊÔÙ"; +char *msg_v_urls = "ðÏÓÍÏÔÒÅÔØ ×ÓÅ URL-Ù"; +char *msg_v_refs = "ðÏÓÍÏÔÒÅÔØ ×ÓÅ ÓÓÙÌÁÀÝÉÅÓÑ ÓÔÒÁÎÉÃÙ"; +char *msg_v_agents= "ðÏÓÍÏÔÒÅÔØ ×ÓÅ ÂÒÏÕÚÅÒÙ"; +char *msg_v_search= "ðÏÓÍÏÔÒÅÔØ ×ÓÅ ÓÔÒÏËÉ ÐÏÉÓËÁ"; +char *msg_v_users = "ðÏÓÍÏÔÒÅÔØ ×ÓÅ ÉÍÅÎÁ ÐÏÌØÚÏ×ÁÔÅÌÅÊ"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "ñÎ×", "æÅ×", "íÁÒ", + "áÐÒ", "íÁÊ", "éÀÎ", + "éÀÌ", "á×Ç", "óÅÎ", + "ïËÔ", "îÏÑ", "äÅË"}; + +/* long month names - can be any length */ +char *l_month[12]={ "ñÎ×ÁÒØ", "æÅ×ÒÁÌØ", "íÁÒÔ", "áÐÒÅÌØ", + "íÁÊ", "éÀÎØ", "éÀÌØ", "á×ÇÕÓÔ", + "óÅÎÔÑÂÒØ", "ïËÔÑÂÒØ", "îÏÑÂÒØ", "äÅËÁÂÒØ"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "îÅÉÚ×ÅÓÔÎÙÊ ËÏÄ ÏÔ×ÅÔÁ", 0 }, + { "ëÏÄ 100 - Continue", 0 }, + { "ëÏÄ 101 - Switching Protocols", 0 }, + { "ëÏÄ 200 - OK", 0 }, + { "ëÏÄ 201 - Created", 0 }, + { "ëÏÄ 202 - Accepted", 0 }, + { "ëÏÄ 203 - Non-Authoritative Information", 0 }, + { "ëÏÄ 204 - No Content", 0 }, + { "ëÏÄ 205 - Reset Content", 0 }, + { "ëÏÄ 206 - Partial Content", 0 }, + { "ëÏÄ 300 - Multiple Choices", 0 }, + { "ëÏÄ 301 - Moved Permanently", 0 }, + { "ëÏÄ 302 - Found", 0 }, + { "ëÏÄ 303 - See Other", 0 }, + { "ëÏÄ 304 - Not Modified", 0 }, + { "ëÏÄ 305 - Use Proxy", 0 }, + { "ëÏÄ 307 - Moved Temporarily", 0 }, + { "ëÏÄ 400 - Bad Request", 0 }, + { "ëÏÄ 401 - Unauthorized", 0 }, + { "ëÏÄ 402 - Payment Required", 0 }, + { "ëÏÄ 403 - Forbidden", 0 }, + { "ëÏÄ 404 - Not Found", 0 }, + { "ëÏÄ 405 - Method Not Allowed", 0 }, + { "ëÏÄ 406 - Not Acceptable", 0 }, + { "ëÏÄ 407 - Proxy Authentication Required", 0 }, + { "ëÏÄ 408 - Request Timeout", 0 }, + { "ëÏÄ 409 - Conflict", 0 }, + { "ëÏÄ 410 - Gone", 0 }, + { "ëÏÄ 411 - Length Required", 0 }, + { "ëÏÄ 412 - Precondition Failed", 0 }, + { "ëÏÄ 413 - Request Entity Too Large", 0 }, + { "ëÏÄ 414 - Request-URI Too Long", 0 }, + { "ëÏÄ 415 - Unsupported Media Type", 0 }, + { "ëÏÄ 416 - Requested Range Not Satisfiable", 0 }, + { "ëÏÄ 417 - Expectation Failed", 0 }, + { "ëÏÄ 500 - Internal Server Error", 0 }, + { "ëÏÄ 501 - Not Implemented", 0 }, + { "ëÏÄ 502 - Bad Gateway", 0 }, + { "ëÏÄ 503 - Service Unavailable", 0 }, + { "ëÏÄ 504 - Gateway Timeout", 0 }, + { "ëÏÄ 505 - HTTP Version Not Supported", 0 } }; + +char *msg_title = "óÔÁÔÉÓÔÉËÁ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÓÅÒ×ÅÒÁ"; +char *msg_h_other = "ðÒÏÞÉÅ"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "îÅÒÁÓÐÏÚÎÁÎÎÙÅ/ÎÅÉÚ×ÅÓÔÎÙÅ", 0,0,0 }, +{ IDX_3C('c','o','m'), "óûá ËÏÍÍÅÒÞÅÓËÉÅ", 0,0,0 }, +{ IDX_3C('e','d','u'), "óûá ÏÂÒÁÚÏ×ÁÔÅÌØÎÙÅ", 0,0,0 }, +{ IDX_3C('g','o','v'), "óûá ÐÒÁ×ÉÔÅÌØÓÔ×ÅÎÎÙÅ", 0,0,0 }, +{ IDX_3C('i','n','t'), "éÎÔÅÒÎÁÃÉÏÎÁÌØÎÙÅ (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "óûá ×ÏÅÎÎÙÅ", 0,0,0 }, +{ IDX_3C('n','e','t'), "óÅÔÅ×ÙÅ ÏÒÇÁÎÉÚÁÃÉÉ", 0,0,0 }, +{ IDX_3C('o','r','g'), "îÅËÏÍÍÅÒÞÅÓËÉÅ ÏÒÇÁÎÉÚÁÃÉÉ", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"óÔÁÒÙÊ Arpanet (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"úÏÎÁ îáôï (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "áÎÄÏÒÒÁ", 0,0,0 }, +{ IDX_2C('a','e'), "ïÂßÅÄÉΣÎÎÙÅ áÒÁÂÓËÉÅ üÍÉÒÁÔÙ", 0,0,0 }, +{ IDX_2C('a','f'), "áÆÇÁÎÉÓÔÁÎ", 0,0,0 }, +{ IDX_2C('a','g'), "áÎÔÉÇÕÁ É âÁÒÂÕÄÁ", 0,0,0 }, +{ IDX_2C('a','i'), "áÎÇÕÉÌÌÁ", 0,0,0 }, +{ IDX_2C('a','l'), "áÌÂÁÎÉÑ", 0,0,0 }, +{ IDX_2C('a','m'), "áÒÍÅÎÉÑ", 0,0,0 }, +{ IDX_2C('a','n'), "îÉÄÅÒÌÁÎÄÓËÉÅ áÎÔÉÌÌÙ", 0,0,0 }, +{ IDX_2C('a','o'), "áÎÇÏÌÁ", 0,0,0 }, +{ IDX_2C('a','q'), "áÎÔÁÒËÔÉËÁ", 0,0,0 }, +{ IDX_2C('a','r'), "áÒÇÅÎÔÉÎÁ", 0,0,0 }, +{ IDX_2C('a','s'), "áÍÅÒÉËÁÎÓËÏÅ óÁÍÏÁ", 0,0,0 }, +{ IDX_2C('a','t'), "á×ÓÔÒÉÑ", 0,0,0 }, +{ IDX_2C('a','u'), "á×ÓÔÒÁÌÉÑ", 0,0,0 }, +{ IDX_2C('a','w'), "áÒÕÂÁ", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "áÚÅÒÂÁÊÄÖÁÎ", 0,0,0 }, +{ IDX_2C('b','a'), "âÏÓÎÉÑ É çÅÒÃÅÇÏ×ÉÎÁ", 0,0,0 }, +{ IDX_2C('b','b'), "âÁÒÂÁÄÏÓ", 0,0,0 }, +{ IDX_2C('b','d'), "âÁÎÇÌÁÄÅÛ", 0,0,0 }, +{ IDX_2C('b','e'), "âÅÌØÇÉÑ", 0,0,0 }, +{ IDX_2C('b','f'), "âÕÒËÉÎÁ æÁÓÏ", 0,0,0 }, +{ IDX_2C('b','g'), "âÏÌÇÁÒÉÑ", 0,0,0 }, +{ IDX_2C('b','h'), "âÁÈÒÅÊÎ", 0,0,0 }, +{ IDX_2C('b','i'), "âÕÒÕÎÄÉ", 0,0,0 }, +{ IDX_2C('b','j'), "âÅÎÉÎ", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "âÅÒÍÕÄÓËÉÅ ÏÓÔÒÏ×Á", 0,0,0 }, +{ IDX_2C('b','n'), "âÒÕÎÅÊ äÁÒÕÓÓÁÌÁÍ", 0,0,0 }, +{ IDX_2C('b','o'), "âÏÌÉ×ÉÑ", 0,0,0 }, +{ IDX_2C('b','r'), "âÒÁÚÉÌÉÑ", 0,0,0 }, +{ IDX_2C('b','s'), "âÁÇÁÍÙ", 0,0,0 }, +{ IDX_2C('b','t'), "âÕÔÁÎ", 0,0,0 }, +{ IDX_2C('b','v'), "ïÓÔÒÏ× âÕ×ÅÔ", 0,0,0 }, +{ IDX_2C('b','w'), "âÏÔÓ×ÁÎÁ", 0,0,0 }, +{ IDX_2C('b','y'), "âÅÌÁÒÕÓØ", 0,0,0 }, +{ IDX_2C('b','z'), "âÅÌÉÚ", 0,0,0 }, +{ IDX_2C('c','a'), "ëÁÎÁÄÁ", 0,0,0 }, +{ IDX_2C('c','c'), "ëÏËÏÓÏ×ÙÅ ïÓÔÒÏ×Á", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "ãÅÎÔÒÁÌØÎÏÁÆÒÉËÁÎÓËÁÑ ÒÅÓÐÕÂÌÉËÁ", 0,0,0 }, +{ IDX_2C('c','g'), "ëÏÎÇÏ", 0,0,0 }, +{ IDX_2C('c','h'), "û×ÅÊÃÁÒÉÑ", 0,0,0 }, +{ IDX_2C('c','i'), "ðÏÂÅÒÅÖØÅ é×ÏÒÉ", 0,0,0 }, +{ IDX_2C('c','k'), "ïÓÔÒÏ×Á ëÕËÁ", 0,0,0 }, +{ IDX_2C('c','l'), "þÉÌÉ", 0,0,0 }, +{ IDX_2C('c','m'), "ëÁÍÅÒÕÎ", 0,0,0 }, +{ IDX_2C('c','n'), "ëÉÔÁÊ", 0,0,0 }, +{ IDX_2C('c','o'), "ëÏÌÕÍÂÉÑ", 0,0,0 }, +{ IDX_2C('c','r'), "ëÏÓÔÁ-òÉËÁ", 0,0,0 }, +{ IDX_2C('c','u'), "ëÕÂÁ", 0,0,0 }, +{ IDX_2C('c','v'), "ëÁÐÅ-÷ÅÒÄÅ", 0,0,0 }, +{ IDX_2C('c','x'), "ïÓÔÒÏ× òÏÖÄÅÓÔ×Á", 0,0,0 }, +{ IDX_2C('c','y'), "ëÉÐÒ", 0,0,0 }, +{ IDX_2C('c','z'), "òÅÓÐÕÂÌÉËÁ þÅÈÉÑ", 0,0,0 }, +{ IDX_2C('d','e'), "çÅÒÍÁÎÉÑ", 0,0,0 }, +{ IDX_2C('d','j'), "äÖÉÂÕÔÉ", 0,0,0 }, +{ IDX_2C('d','k'), "äÁÎÉÑ", 0,0,0 }, +{ IDX_2C('d','m'), "äÏÍÉÎÉËÁ", 0,0,0 }, +{ IDX_2C('d','o'), "äÏÍÉÎÉËÁÎÓËÁÑ òÅÓÐÕÂÌÉËÁ", 0,0,0 }, +{ IDX_2C('d','z'), "áÌÇÅÒÉÑ", 0,0,0 }, +{ IDX_2C('e','c'), "üË×ÁÄÏÒ", 0,0,0 }, +{ IDX_2C('e','e'), "üÓÔÏÎÉÑ", 0,0,0 }, +{ IDX_2C('e','g'), "åÇÉÐÅÔ", 0,0,0 }, +{ IDX_2C('e','h'), "úÁÐÁÄÎÁÑ óÁÈÁÒÁ", 0,0,0 }, +{ IDX_2C('e','r'), "üÒÉÔÒÅÑ", 0,0,0 }, +{ IDX_2C('e','s'), "éÓÐÁÎÉÑ", 0,0,0 }, +{ IDX_2C('e','t'), "üÆÉÏÐÉÑ", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "æÉÎÌÑÎÄÉÑ", 0,0,0 }, +{ IDX_2C('f','j'), "æÉÄÖÉ", 0,0,0 }, +{ IDX_2C('f','k'), "æÏÌËÌÅÎÄÓËÉÅ (íÁÌØ×ÉÎÓËÉÅ) Ï-×Á", 0,0,0 }, +{ IDX_2C('f','m'), "íÉËÒÏÎÅÚÉÑ", 0,0,0 }, +{ IDX_2C('f','o'), "æÁÒÅÒÓËÉÅ ïÓÔÒÏ×Á", 0,0,0 }, +{ IDX_2C('f','r'), "æÒÁÎÃÉÑ", 0,0,0 }, +{ IDX_2C('g','a'), "çÁÂÏÎ", 0,0,0 }, +{ IDX_2C('g','b'), "÷ÅÌÉËÏÂÒÉÔÁÎÉÑ (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "çÒÅÎÁÄÁ", 0,0,0 }, +{ IDX_2C('g','e'), "çÒÕÚÉÑ", 0,0,0 }, +{ IDX_2C('g','f'), "æÒÁÎÃÕÚÓËÁÑ ç×ÉÁÎÁ", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "çÁÎÁ", 0,0,0 }, +{ IDX_2C('g','i'), "çÉÂÒÁÌÔÁÒ", 0,0,0 }, +{ IDX_2C('g','l'), "çÒÅÎÌÁÎÄÉÑ", 0,0,0 }, +{ IDX_2C('g','m'), "çÁÍÂÉÑ", 0,0,0 }, +{ IDX_2C('g','n'), "ç×ÉÎÅÑ", 0,0,0 }, +{ IDX_2C('g','p'), "ç×ÁÄÅÌÕÐÁ", 0,0,0 }, +{ IDX_2C('g','q'), "üË×ÁÔÏÒÉÁÌØÎÁÑ ç×ÉÎÅÑ", 0,0,0 }, +{ IDX_2C('g','r'), "çÒÅÃÉÑ", 0,0,0 }, +{ IDX_2C('g','s'), "àÖÎ. çÅÏÒÇÉÑ É àÖÎ. óÁÎÄ×ÉÞÅ×Ù Ï-×Á", 0,0,0 }, +{ IDX_2C('g','t'), "ç×ÁÔÅÍÁÌÁ", 0,0,0 }, +{ IDX_2C('g','u'), "çÕÁÍ", 0,0,0 }, +{ IDX_2C('g','w'), "ç×ÉÎÅÑ-âÉÓÁÕ", 0,0,0 }, +{ IDX_2C('g','y'), "çÁÊÁÎÁ", 0,0,0 }, +{ IDX_2C('h','k'), "çÏÎËÏÎÇ", 0,0,0 }, +{ IDX_2C('h','m'), "ïÓÔÒÏ×Á èÅÒÄÁ É íÁËÄÏÎÁÌØÄÁ", 0,0,0 }, +{ IDX_2C('h','n'), "çÏÎÄÕÒÁÓ", 0,0,0 }, +{ IDX_2C('h','r'), "èÏÒ×ÁÔÉÑ", 0,0,0 }, +{ IDX_2C('h','t'), "çÁÉÔÉ", 0,0,0 }, +{ IDX_2C('h','u'), "÷ÅÎÇÒÉÑ", 0,0,0 }, +{ IDX_2C('i','d'), "éÎÄÏÎÅÚÉÑ", 0,0,0 }, +{ IDX_2C('i','e'), "éÒÌÁÎÄÉÑ", 0,0,0 }, +{ IDX_2C('i','l'), "éÚÒÁÉÌØ", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "éÎÄÉÑ", 0,0,0 }, +{ IDX_2C('i','o'), "âÒÉÔÁÎÓËÁÑ ÔÅÒÒ. × éÎÄÉÊÓË. ÏËÅÁÎÅ", 0,0,0 }, +{ IDX_2C('i','q'), "éÒÁË", 0,0,0 }, +{ IDX_2C('i','r'), "éÒÁÎ", 0,0,0 }, +{ IDX_2C('i','s'), "éÓÌÁÎÄÉÑ", 0,0,0 }, +{ IDX_2C('i','t'), "éÔÁÌÉÑ", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "ñÍÁÊËÁ", 0,0,0 }, +{ IDX_2C('j','o'), "éÏÒÄÁÎÉÑ", 0,0,0 }, +{ IDX_2C('j','p'), "ñÐÏÎÉÑ", 0,0,0 }, +{ IDX_2C('k','e'), "ëÅÎÉÑ", 0,0,0 }, +{ IDX_2C('k','g'), "ëÙÒÇÙÚÓÔÁÎ", 0,0,0 }, +{ IDX_2C('k','h'), "ëÁÍÂÏÄÖÁ", 0,0,0 }, +{ IDX_2C('k','i'), "ëÉÒÉÂÁÔÉ", 0,0,0 }, +{ IDX_2C('k','m'), "ëÁÍÏÒÓËÉÅ ÏÓÔÒÏ×Á", 0,0,0 }, +{ IDX_2C('k','n'), "ïÓÔÒÏ×Á Ó×ÑÔÏÇÏ ëÉÔÓÁ É îÅ×ÉÓÁ", 0,0,0 }, +{ IDX_2C('k','p'), "óÅ×ÅÒÎÁÑ ëÏÒÅÑ", 0,0,0 }, +{ IDX_2C('k','r'), "àÖÎÁÑ ëÏÒÅÑ", 0,0,0 }, +{ IDX_2C('k','w'), "ëÕ×ÅÊÔ", 0,0,0 }, +{ IDX_2C('k','y'), "ëÁÊÍÁÎÏ×ÙÅ ÏÓÔÒÏ×Á", 0,0,0 }, +{ IDX_2C('k','z'), "ëÁÚÁÈÓÔÁÎ", 0,0,0 }, +{ IDX_2C('l','a'), "ìÁÏÓ", 0,0,0 }, +{ IDX_2C('l','b'), "ìÅÂÁÎÏÎ", 0,0,0 }, +{ IDX_2C('l','c'), "óÁÎÔÁ ìÀÞÉÑ", 0,0,0 }, +{ IDX_2C('l','i'), "ìÉÈÔÅÎÛÔÅÊÎ", 0,0,0 }, +{ IDX_2C('l','k'), "ûÒÉ ìÁÎËÁ", 0,0,0 }, +{ IDX_2C('l','r'), "ìÉÂÅÒÉÑ", 0,0,0 }, +{ IDX_2C('l','s'), "ìÅÓÏÔÏ", 0,0,0 }, +{ IDX_2C('l','t'), "ìÉÔÁÎÉÑ", 0,0,0 }, +{ IDX_2C('l','u'), "ìÀËÓÅÍÂÕÒÇ", 0,0,0 }, +{ IDX_2C('l','v'), "ìÁÔ×ÉÑ", 0,0,0 }, +{ IDX_2C('l','y'), "ìÉ×ÉÑ", 0,0,0 }, +{ IDX_2C('m','a'), "íÁÒÏËËÏ", 0,0,0 }, +{ IDX_2C('m','c'), "íÏÎÁËÏ", 0,0,0 }, +{ IDX_2C('m','d'), "íÏÌÄÁ×ÉÑ", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "íÁÄÁÇÁÓËÁÒ", 0,0,0 }, +{ IDX_2C('m','h'), "íÁÒÛÁÌÌÏ×Ù ÏÓÔÒÏ×Á", 0,0,0 }, +{ IDX_2C('m','k'), "íÁËÅÄÏÎÉÑ", 0,0,0 }, +{ IDX_2C('m','l'), "íÁÌÉ", 0,0,0 }, +{ IDX_2C('m','m'), "íÁÊÁÎÍÁÒ", 0,0,0 }, +{ IDX_2C('m','n'), "íÏÎÇÏÌÉÑ", 0,0,0 }, +{ IDX_2C('m','o'), "íÁËËÁÕ", 0,0,0 }, +{ IDX_2C('m','p'), "óÅ×ÅÒÎÙÅ íÁÒÉÁÎÓËÉÅ ÏÓÔÒÏ×Á", 0,0,0 }, +{ IDX_2C('m','q'), "íÁÒÔÉÎÉËÁ", 0,0,0 }, +{ IDX_2C('m','r'), "íÁ×ÒÉÔÁÎÉÑ", 0,0,0 }, +{ IDX_2C('m','s'), "íÏÎÓÅÒÒÁÔ", 0,0,0 }, +{ IDX_2C('m','t'), "íÁÌØÔÁ", 0,0,0 }, +{ IDX_2C('m','u'), "íÁ×ÒÉÔÁÎÉÑ", 0,0,0 }, +{ IDX_2C('m','v'), "íÁÌØÄÉ×ÓËÁÑ ÒÅÓÐÕÂÌÉËÁ", 0,0,0 }, +{ IDX_2C('m','w'), "íÁÌÁ×É", 0,0,0 }, +{ IDX_2C('m','x'), "íÅËÓÉËÁ", 0,0,0 }, +{ IDX_2C('m','y'), "íÁÌÁÊÚÉÑ", 0,0,0 }, +{ IDX_2C('m','z'), "íÏÚÁÍÂÉË", 0,0,0 }, +{ IDX_2C('n','a'), "îÁÍÉÂÉÑ", 0,0,0 }, +{ IDX_2C('n','c'), "îÏ×ÁÑ ëÁÌÅÄÏÎÉÑ", 0,0,0 }, +{ IDX_2C('n','e'), "îÉÇÅÒ", 0,0,0 }, +{ IDX_2C('n','f'), "ïÓÔÒÏ× îÏÒÆÏÌË", 0,0,0 }, +{ IDX_2C('n','g'), "îÉÇÅÒÉÑ", 0,0,0 }, +{ IDX_2C('n','i'), "îÉËÁÒÁÇÕÁ", 0,0,0 }, +{ IDX_2C('n','l'), "îÉÄÅÒÌÁÎÄÙ", 0,0,0 }, +{ IDX_2C('n','o'), "îÏÒ×ÅÇÉÑ", 0,0,0 }, +{ IDX_2C('n','p'), "îÅÐÁÌ", 0,0,0 }, +{ IDX_2C('n','r'), "îÁÕÒÕ", 0,0,0 }, +{ IDX_2C('n','u'), "îÉÕÜ", 0,0,0 }, +{ IDX_2C('n','z'), "îÏ×ÁÑ úÅÌÁÎÄÉÑ", 0,0,0 }, +{ IDX_2C('o','m'), "ïÍÁÎ", 0,0,0 }, +{ IDX_2C('p','a'), "ðÁÎÁÍÁ", 0,0,0 }, +{ IDX_2C('p','e'), "ðÅÒÕ", 0,0,0 }, +{ IDX_2C('p','f'), "æÒÁÎÃÕÚÓËÁÑ ðÏÌÉÎÅÚÉÑ", 0,0,0 }, +{ IDX_2C('p','g'), "ðÁÐÕÁ îÏ×ÁÑ ç×ÉÎÅÑ", 0,0,0 }, +{ IDX_2C('p','h'), "æÉÌÉÐÐÉÎÙ", 0,0,0 }, +{ IDX_2C('p','k'), "ðÁËÉÓÔÁÎ", 0,0,0 }, +{ IDX_2C('p','l'), "ðÏÌØÛÁ", 0,0,0 }, +{ IDX_2C('p','m'), "ïÓÔÒÏ× Ó×ÑÔÏÇÏ ðØÅÒÁ É íÉÇÅÌÑ", 0,0,0 }, +{ IDX_2C('p','n'), "ðÉÔËËÅÒÎ", 0,0,0 }, +{ IDX_2C('p','r'), "ðÕÜÒÔÏ òÉËÏ", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "ðÏÒÔÕÇÁÌÉÑ", 0,0,0 }, +{ IDX_2C('p','w'), "ðÁÌÁÕ", 0,0,0 }, +{ IDX_2C('p','y'), "ðÁÒÁÇ×ÁÊ", 0,0,0 }, +{ IDX_2C('q','a'), "ë×ÁÔÁÒ", 0,0,0 }, +{ IDX_2C('r','e'), "ïÓÔÒÏ× òÅÀÎØÏÎ", 0,0,0 }, +{ IDX_2C('r','o'), "òÕÍÙÎÉÑ", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "òÏÓÓÉÊÓËÁÑ æÅÄÅÒÁÃÉÑ", 0,0,0 }, +{ IDX_2C('r','w'), "òÕÁÎÁ", 0,0,0 }, +{ IDX_2C('s','a'), "óÁÕÄÏ×ÓËÁÑ áÒÁ×ÉÑ", 0,0,0 }, +{ IDX_2C('s','b'), "óÏÌÏÍÏÎÏ×Ù ÏÓÔÒÏ×Á", 0,0,0 }, +{ IDX_2C('s','c'), "óÅÊÛÅÌØÓËÉÅ ÏÓÔÒÏ×Á", 0,0,0 }, +{ IDX_2C('s','d'), "óÕÄÁÎ", 0,0,0 }, +{ IDX_2C('s','e'), "û×ÅÃÉÑ", 0,0,0 }, +{ IDX_2C('s','g'), "óÉÎÇÁÐÕÒ", 0,0,0 }, +{ IDX_2C('s','h'), "ïÓÔÒÏ× Ó×ÑÔÏÊ åÌÅÎÙ", 0,0,0 }, +{ IDX_2C('s','i'), "óÌÏ×ÅÎÉÑ", 0,0,0 }, +{ IDX_2C('s','j'), "ïÓÔÒÏ×Á ó×ÁÌÂÁÒÄ É ñÎ-íÁÊÅÎ", 0,0,0 }, +{ IDX_2C('s','k'), "òÅÓÐÕÂÌÉËÁ óÌÏ×ÁËÉÑ", 0,0,0 }, +{ IDX_2C('s','l'), "óØÅÒÒÁ ìÅÏÎÅ", 0,0,0 }, +{ IDX_2C('s','m'), "óÁÎ íÁÒÉÎÏ", 0,0,0 }, +{ IDX_2C('s','n'), "óÅÎÅÇÁÌ", 0,0,0 }, +{ IDX_2C('s','o'), "óÏÍÁÌÉ", 0,0,0 }, +{ IDX_2C('s','r'), "óÕÒÉÎÁÍ", 0,0,0 }, +{ IDX_2C('s','t'), "óÁÏ ôÏÍ É ðÒÉÎÃÉÐÏ×Ù ÏÓÔÒÏ×Á", 0,0,0 }, +{ IDX_2C('s','u'), "âÙ×ÛÉÊ óóóò (SU)", 0,0,0 }, +{ IDX_2C('s','v'), "óÁÌØ×ÁÄÏÒ", 0,0,0 }, +{ IDX_2C('s','y'), "óÉÒÉÑ", 0,0,0 }, +{ IDX_2C('s','z'), "ó×ÁÚÉÌÁÎÄ", 0,0,0 }, +{ IDX_2C('t','c'), "ïÓÔÒÏ×Á ôÀÒËÓ É ëÁÊËÏÓ", 0,0,0 }, +{ IDX_2C('t','d'), "òÅÓÐÕÂÌÉËÁ þÁÄ", 0,0,0 }, +{ IDX_2C('t','f'), "àÖÎÙÅ ÆÒÁÎÃÕÚÓËÉÅ ÔÅÒÒÉÔÏÒÉÉ", 0,0,0 }, +{ IDX_2C('t','g'), "ôÏÇÏ", 0,0,0 }, +{ IDX_2C('t','h'), "ôÁÉÌÁÎÄ", 0,0,0 }, +{ IDX_2C('t','j'), "ôÁÄÖÉËÉÓÔÁÎ", 0,0,0 }, +{ IDX_2C('t','k'), "ïÓÔÒÏ×Á ôÏËÅÌÁÕ", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "ôÕÒËÍÅÎÉÓÔÁÎ", 0,0,0 }, +{ IDX_2C('t','n'), "ôÕÎÉÓ", 0,0,0 }, +{ IDX_2C('t','o'), "ïÓÔÒÏ×Á ôÏÎÇÁ", 0,0,0 }, +{ IDX_2C('t','p'), "÷ÏÓÔÏÞÎÙÊ ôÉÍÏÒ", 0,0,0 }, +{ IDX_2C('t','r'), "ôÕÒÃÉÑ", 0,0,0 }, +{ IDX_2C('t','t'), "ôÒÉÎÉÄÁÄ É ôÏÂÁÇÏ", 0,0,0 }, +{ IDX_2C('t','v'), "ôÕ×ÁÌÁÕ", 0,0,0 }, +{ IDX_2C('t','w'), "ôÁÊ×ÁÎØ", 0,0,0 }, +{ IDX_2C('t','z'), "ôÁÎÚÁÎÉÑ", 0,0,0 }, +{ IDX_2C('u','a'), "õËÒÁÉÎÁ", 0,0,0 }, +{ IDX_2C('u','g'), "õÇÁÎÄÁ", 0,0,0 }, +{ IDX_2C('u','k'), "ïÂßÅÄÉΣÎÎÏÅ ëÏÒÏÌÅ×ÓÔ×Ï", 0,0,0 }, +{ IDX_2C('u','m'), "íÁÌÙÅ ×ÎÅÛÎÉÅ ÏÓÔÒÏ×Á (óûá)", 0,0,0 }, +{ IDX_2C('u','s'), "óÏÅÄÉΣÎÎÙÅ ûÔÁÔÙ", 0,0,0 }, +{ IDX_2C('u','y'), "õÒÕÇ×ÁÊ", 0,0,0 }, +{ IDX_2C('u','z'), "õÚÂÅËÉÓÔÁÎ", 0,0,0 }, +{ IDX_2C('v','a'), "÷ÁÔÉËÁÎ", 0,0,0 }, +{ IDX_2C('v','c'), "ï-×Á Ó×. ÷ÉÎÓÅÎÔÁ É çÒÅÎÁÄÉÎÙ", 0,0,0 }, +{ IDX_2C('v','e'), "÷ÅÎÅÓÕÜÌÁ", 0,0,0 }, +{ IDX_2C('v','g'), "÷ÉÒÇÉÎÓËÉÅ ÏÓÔÒÏ×Á (âÒÉÔÁÎÉÑ)", 0,0,0 }, +{ IDX_2C('v','i'), "÷ÉÒÇÉÎÓËÉÅ ÏÓÔÒÏ×Á (óûá)", 0,0,0 }, +{ IDX_2C('v','n'), "÷ØÅÔÎÁÍ", 0,0,0 }, +{ IDX_2C('v','u'), "÷ÁÎÕÁÔÕ", 0,0,0 }, +{ IDX_2C('w','f'), "ïÓÔÒÏ×Á ÷ÜÌÌÉÓ É æÕÔÕÎÁ", 0,0,0 }, +{ IDX_2C('w','s'), "óÁÍÏÁ", 0,0,0 }, +{ IDX_2C('y','e'), "êÅÍÅÎ", 0,0,0 }, +{ IDX_2C('y','t'), "ïÓÔÒÏ× íÁÊÏÔÔÁ", 0,0,0 }, +{ IDX_2C('y','u'), "àÇÏÓÌÁ×ÉÑ", 0,0,0 }, +{ IDX_2C('z','a'), "àÖÎÁÑ áÆÒÉËÁ", 0,0,0 }, +{ IDX_2C('z','m'), "úÁÍÂÉÑ", 0,0,0 }, +{ IDX_2C('z','w'), "úÉÍÂÁÂ×Å", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.serbian b/lang/webalizer_lang.serbian new file mode 100644 index 0000000..823d630 --- /dev/null +++ b/lang/webalizer_lang.serbian @@ -0,0 +1,629 @@ +/* + webalizer_lang.serbian + + Webalizer V2.0x Language Support file for Serbian. + 12-Jun-1999 Original translation by Goran Opacic and Sanja Markovic + 13-Oct-2000 updated for v2.0 by Boris Drajer + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Serbian"; +char *langcode = "sr"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "records"; +char *msg_addresses="addresses"; +char *msg_ignored = "ignored"; +char *msg_bad = "bad"; +char *msg_in = "in"; +char *msg_seconds = "seconds"; + +/* progress and setup error messages */ +char *msg_log_err = "Error: Can't open log file"; +char *msg_log_use = "Using logfile"; +char *msg_dir_err = "Error: Can't change directory to"; +char *msg_dir_use = "Creating output in"; +char *msg_cur_dir = "current directory"; +char *msg_hostname= "Hostname for reports is"; +char *msg_ign_hist= "Ignoring previous history..."; +char *msg_no_hist = "History file not found..."; +char *msg_get_hist= "Reading history file..."; +char *msg_put_hist= "Saving history information..."; +char *msg_hist_err= "Error: Unable to write history file"; +char *msg_bad_hist= "Error: Ignoring invalid history record"; +char *msg_bad_conf= "Error: Unable to open configuration file"; +char *msg_bad_key = "Warning: Invalid keyword"; +char *msg_bad_date= "Error: Skipping record (bad date)"; +char *msg_ign_nscp= "Skipping Netscape header record"; +char *msg_bad_rec = "Skipping bad record"; +char *msg_no_vrec = "No valid records found!"; +char *msg_gen_rpt = "Generating report for"; +char *msg_gen_sum = "Generating summary report"; +char *msg_get_data= "Reading previous run data.."; +char *msg_put_data= "Saving current run data..."; +char *msg_no_data = "Previous run data not found..."; +char *msg_bad_data= "Error: Unable to restore run data"; +char *msg_data_err= "Error: Unable to save current run data"; +char *msg_dup_data= "Warning: Possible duplicate data found"; + +/* DNS Stuff */ +char *msg_dns_nocf= "No cache file specified, aborting..."; +char *msg_dns_nodb= "Error: Unable to open DNS cache file"; +char *msg_dns_nolk= "Error: Unable to lock DNS cache file"; +char *msg_dns_usec= "Using DNS cache file"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "None to process"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Can't allocate enough memory, Top Sites disabled!"; +char *msg_nomem_tr= "Can't allocate enough memory, Top Referrers disabled!"; +char *msg_nomem_tu= "Can't allocate enough memory, Top URLs disabled!"; +char *msg_nomem_tc= "Can't allocate enough memory, Top Countries disabled!"; +char *msg_nomem_ta= "Can't allocate enough memory, Top User Agents disabled!"; +char *msg_nomem_tsr="Can't allocate enough memory, Top Search Strings disabled!"; +char *msg_nomem_ti= "Can't allocate enough memory, Top Usernames disabled!"; +char *msg_nomem_dh= "Error adding host node (daily), skipping"; +char *msg_nomem_mh= "Error adding host node (monthly), skipping"; +char *msg_nomem_u = "Error adding URL node, skipping"; +char *msg_nomem_a = "Error adding User Agent node, skipping"; +char *msg_nomem_r = "Error adding Referrer node, skipping"; +char *msg_nomem_sc= "Error adding Search String Node, skipping"; +char *msg_nomem_i = "Error adding Username node, skipping"; + +/* log record errors */ +char *msg_big_rec = "Error: Skipping oversized log record"; +char *msg_big_host= "Warning: Truncating oversized hostname"; +char *msg_big_date= "Warning: Truncating oversized date field"; +char *msg_big_req = "Warning: Truncating oversized request field"; +char *msg_big_ref = "Warning: Truncating oversized referrer field"; +char *msg_big_user= "Warning: Truncating oversized username"; +char *msg_big_one = "Warning: String exceeds storage size"; + +/* misc errors */ +char *msg_no_open = "Error: Unable to open file"; + +/* Help display... */ +char *h_usage1 = "Usage"; +char *h_usage2 = "[options] [log file]"; +char *h_msg[]= { + "-h = print this help message" , + "-V = print version information" , + "-v = be verbose" , + "-d = print additional debug info" , + "-F type = Log type. type= (clf | ftp | squid | w3c)", + "-f = Fold sequence errors" , + "-i = ignore history file" , + "-p = preserve state (incremental)" , + "-b = ignore state (incremental)" , + "-q = supress informational messages" , + "-Q = supress _ALL_ messages" , + "-Y = supress country graph" , + "-G = supress hourly graph" , + "-H = supress hourly stats" , + "-L = supress color coded graph legends" , + "-l num = use num background lines on graph" , + "-m num = Visit timout value (seconds)" , + "-T = print timing information" , + "-c file = use configuration file 'file'" , + "-n name = hostname to use" , + "-o dir = output directory to use" , + "-t name = report title 'name'" , + "-a name = hide user agent 'name'" , + "-r name = hide referrer 'name'" , + "-s name = hide site 'name'" , + "-u name = hide URL 'name'" , + "-x name = Use filename extension 'name'" , + "-O name = Omit page 'name'" , + "-P name = Page type extension 'name'" , + "-I name = Index alias 'name'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Display num top agents" , + "-C num = Display num top countries" , + "-R num = Display num top referrers" , + "-S num = Display num top sites" , + "-U num = Display num top URLs" , + "-e num = Display num top Entry Pages" , + "-E num = Display num top Exit Pages" , + "-g num = Group Domains to 'num' levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Use DNS Cache file 'name'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Period sumiranja"; +char *msg_hhdr_gt = "Generisano"; + +/* main index strings */ +char *msg_main_us = "Pregled pristupa za"; +/* char *msg_main_per= "Poslednjih 12 meseci"; */ +char *msg_main_per= "Pregled po mesecima"; +char *msg_main_sum= "Pregled po mesecima"; +char *msg_main_da = "Dnevni prosek"; +char *msg_main_mt = "Mesecni zbirovi"; + +/* month HTML page strings */ +char *msg_hmth_du = "Pristupi po danu za"; +char *msg_hmth_hu = "Pristupi po satu za"; + +/* table header strings */ +char *msg_h_by = "po"; +char *msg_h_avg = "prosek"; +char *msg_h_max = "Max"; +char *msg_h_total = "Ukupno"; +char *msg_h_totals= "Ukupno za sve"; +char *msg_h_day = "Dan"; +char *msg_h_mth = "Mesec"; +char *msg_h_hour = "Sat"; +char *msg_h_hits = "Pristupa"; +char *msg_h_pages = "Strana"; +char *msg_h_visits= "Poseta"; +char *msg_h_files = "Fajlova"; +char *msg_h_sites = "Racunara"; +char *msg_h_xfer = "KB"; +char *msg_h_hname = "Racunar"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Korisnicki program"; +char *msg_h_ref = "Referer"; +char *msg_h_ctry = "Zemlja"; +char *msg_h_search= "Tekst pretrazivanja"; +char *msg_h_uname = "Korisnik"; + +/* links along top of page */ +char *msg_hlnk_ds = "Dnevna statistika"; +char *msg_hlnk_hs = "Statistika po satu"; +char *msg_hlnk_u = "URL-ovi"; +char *msg_hlnk_s = "Racunari"; +char *msg_hlnk_a = "Browseri"; +char *msg_hlnk_c = "Zemlje"; +char *msg_hlnk_r = "Referisanja"; +char *msg_hlnk_en = "Ulaz"; +char *msg_hlnk_ex = "Izlaz"; +char *msg_hlnk_sr = "Pretraga"; +char *msg_hlnk_i = "Korisnici"; + +/* monthly total table */ +char *msg_mtot_ms = "Mesecna statistika za"; +char *msg_mtot_th = "Ukupno pristupa"; +char *msg_mtot_tf = "Ukupno fajlova"; +char *msg_mtot_tx = "Ukupno KBajta"; +char *msg_mtot_us = "Ukupno razlicitih racunara"; +char *msg_mtot_ur = "Ukupno razlicitih referisanja"; +char *msg_mtot_ua = "Ukupno razlicitih browsera"; +char *msg_mtot_uu = "Ukupno razlicitih URL-ova"; +char *msg_mtot_ui = "Ukupno razlicitih korisnickih imena"; +char *msg_mtot_mhd= "Pristupa na dan"; +char *msg_mtot_mhh= "Pristupa na sat"; +char *msg_mtot_mfd= "Fajlova na dan"; +char *msg_mtot_mpd= "Fajlova na sat"; +char *msg_mtot_msd= "Racunara na dan"; +char *msg_mtot_mvd= "Poseta na dan"; +char *msg_mtot_mkd= "KBajta na dan"; +char *msg_mtot_rc = "Pristupa po kodu"; + +/* daily total table */ +char *msg_dtot_ds = "Dnevna statistika za"; + +/* hourly total table */ +char *msg_htot_hs = "Statistika po satu za"; + +/* country pie chart */ +char *msg_ctry_use= "Pristup po zemljama za"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Prvih"; +char *msg_top_of = "od"; +char *msg_top_s = "racunara"; +char *msg_top_u = "URL-ova"; +char *msg_top_r = "referisanja"; +char *msg_top_a = "korisnickih programa"; +char *msg_top_c = "zemalja"; +char *msg_top_en = "ulaznih strana"; +char *msg_top_ex = "izlaznih strana"; +char *msg_top_sr = "tekstova pretrazivanja"; +char *msg_top_i = "korisnickih imena"; +char *msg_v_sites = "Pregled svih racunara"; +char *msg_v_urls = "Pregled svih URL-ova"; +char *msg_v_refs = "Pregled svih referisanja"; +char *msg_v_agents= "Pregled svih korisnickih programa"; +char *msg_v_search= "Pregled svih tekstova pretrazivanja"; +char *msg_v_users = "Pregled svih korisnickih imena"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Jan", "Feb", "Mar", + "Apr", "Maj", "Jun", + "Jul", "Avg", "Sep", + "Okt", "Nov", "Dec"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Januar", "Februar", "Mart", "April", + "Maj", "Jun", "Jul", "Avgust", + "Septembar","Oktobar", "Novembar","Decembar"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Undefined response code", 0 }, + { "Code 100 - Continue", 0 }, + { "Code 101 - Switching Protocols", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Created", 0 }, + { "Code 202 - Accepted", 0 }, + { "Code 203 - Non-Authoritative Information", 0 }, + { "Code 204 - No Content", 0 }, + { "Code 205 - Reset Content", 0 }, + { "Code 206 - Partial Content", 0 }, + { "Code 300 - Multiple Choices", 0 }, + { "Code 301 - Moved Permanently", 0 }, + { "Code 302 - Found", 0 }, + { "Code 303 - See Other", 0 }, + { "Code 304 - Not Modified", 0 }, + { "Code 305 - Use Proxy", 0 }, + { "Code 307 - Moved Temporarily", 0 }, + { "Code 400 - Bad Request", 0 }, + { "Code 401 - Unauthorized", 0 }, + { "Code 402 - Payment Required", 0 }, + { "Code 403 - Forbidden", 0 }, + { "Code 404 - Not Found", 0 }, + { "Code 405 - Method Not Allowed", 0 }, + { "Code 406 - Not Acceptable", 0 }, + { "Code 407 - Proxy Authentication Required", 0 }, + { "Code 408 - Request Timeout", 0 }, + { "Code 409 - Conflict", 0 }, + { "Code 410 - Gone", 0 }, + { "Code 411 - Length Required", 0 }, + { "Code 412 - Precondition Failed", 0 }, + { "Code 413 - Request Entity Too Large", 0 }, + { "Code 414 - Request-URI Too Long", 0 }, + { "Code 415 - Unsupported Media Type", 0 }, + { "Code 416 - Requested Range Not Satisfiable", 0 }, + { "Code 417 - Expectation Failed", 0 }, + { "Code 500 - Internal Server Error", 0 }, + { "Code 501 - Not Implemented", 0 }, + { "Code 502 - Bad Gateway", 0 }, + { "Code 503 - Service Unavailable", 0 }, + { "Code 504 - Gateway Timeout", 0 }, + { "Code 505 - HTTP Version Not Supported", 0 } }; + +char *msg_title = "Statistika pristupa za"; +char *msg_h_other = "Ostalo"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Nedefinisano/Nepoznato", 0,0,0 }, +{ IDX_3C('c','o','m'), "Komercijalni (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Obrazovni (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "SAD vlada (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "Internacionalni (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "SAD vojni (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Mrezni domeni (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Organizacije (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Stari Arpanet (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Nato (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "United Arab Emirates", 0,0,0 }, +{ IDX_2C('a','f'), "Afghanistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua and Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armenia", 0,0,0 }, +{ IDX_2C('a','n'), "Netherlands Antilles", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarctica", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "American Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Austria", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaijan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia and Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgium", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brazil", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Island", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Belarus", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Canada", 0,0,0 }, +{ IDX_2C('c','c'), "Cocos (Keeling) Islands", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Central African Republic", 0,0,0 }, +{ IDX_2C('c','g'), "Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Switzerland", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire (Ivory Coast)", 0,0,0 }, +{ IDX_2C('c','k'), "Cook Islands", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Cameroon", 0,0,0 }, +{ IDX_2C('c','n'), "China", 0,0,0 }, +{ IDX_2C('c','o'), "Colombia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Christmas Island", 0,0,0 }, +{ IDX_2C('c','y'), "Cyprus", 0,0,0 }, +{ IDX_2C('c','z'), "Czech Republic", 0,0,0 }, +{ IDX_2C('d','e'), "Germany", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Denmark", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Dominican Republic", 0,0,0 }, +{ IDX_2C('d','z'), "Algeria", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador", 0,0,0 }, +{ IDX_2C('e','e'), "Estonia", 0,0,0 }, +{ IDX_2C('e','g'), "Egypt", 0,0,0 }, +{ IDX_2C('e','h'), "Western Sahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Spain", 0,0,0 }, +{ IDX_2C('e','t'), "Ethiopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finland", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Falkland Islands (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronesia", 0,0,0 }, +{ IDX_2C('f','o'), "Faroe Islands", 0,0,0 }, +{ IDX_2C('f','r'), "France", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Great Britain (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgia", 0,0,0 }, +{ IDX_2C('g','f'), "French Guiana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Greenland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Equatorial Guinea", 0,0,0 }, +{ IDX_2C('g','r'), "Greece", 0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia and S. Sandwich Isls.", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard and McDonald Islands", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Croatia", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Hungary", 0,0,0 }, +{ IDX_2C('i','d'), "Indonesia", 0,0,0 }, +{ IDX_2C('i','e'), "Ireland", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "India", 0,0,0 }, +{ IDX_2C('i','o'), "British Indian Ocean Territory", 0,0,0 }, +{ IDX_2C('i','q'), "Iraq", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Iceland", 0,0,0 }, +{ IDX_2C('i','t'), "Italy", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Jordan", 0,0,0 }, +{ IDX_2C('j','p'), "Japan", 0,0,0 }, +{ IDX_2C('k','e'), "Kenya", 0,0,0 }, +{ IDX_2C('k','g'), "Kyrgyzstan", 0,0,0 }, +{ IDX_2C('k','h'), "Cambodia", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts and Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Korea, Democratic Republic of", 0,0,0 }, +{ IDX_2C('k','r'), "Korea, Republic of", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Cayman Islands", 0,0,0 }, +{ IDX_2C('k','z'), "Kazakhstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Lebanon", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lithuania", 0,0,0 }, +{ IDX_2C('l','u'), "Luxembourg", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia", 0,0,0 }, +{ IDX_2C('l','y'), "Libya", 0,0,0 }, +{ IDX_2C('m','a'), "Morocco", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Marshall Islands", 0,0,0 }, +{ IDX_2C('m','k'), "Macedonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolia", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Northern Mariana Islands", 0,0,0 }, +{ IDX_2C('m','q'), "Martinique", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldives", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexico", 0,0,0 }, +{ IDX_2C('m','y'), "Malaysia", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambique", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "New Caledonia", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Island", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Netherlands", 0,0,0 }, +{ IDX_2C('n','o'), "Norway", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "New Zealand", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "French Polynesia", 0,0,0 }, +{ IDX_2C('p','g'), "Papua New Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Philippines", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Poland", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre and Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Romania", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Russian Federation", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saudi Arabia", 0,0,0 }, +{ IDX_2C('s','b'), "Solomon Islands", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Sweden", 0,0,0 }, +{ IDX_2C('s','g'), "Singapore", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenia", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbard and Jan Mayen Islands", 0,0,0 }, +{ IDX_2C('s','k'), "Slovakia", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Suriname", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome and Principe", 0,0,0 }, +{ IDX_2C('s','u'), "Soviet Union", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Turks and Caicos Islands", 0,0,0 }, +{ IDX_2C('t','d'), "Chad", 0,0,0 }, +{ IDX_2C('t','f'), "French Southern Territories", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Thailand", 0,0,0 }, +{ IDX_2C('t','j'), "Tajikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisia", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Portuguese Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turkey", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad and Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraine", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "United Kingdom", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying Islands", 0,0,0 }, +{ IDX_2C('u','s'), "United States", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatican City State (Holy See)", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent and the Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Virgin Islands (British)", 0,0,0 }, +{ IDX_2C('v','i'), "Virgin Islands (U.S.)", 0,0,0 }, +{ IDX_2C('v','n'), "Viet Nam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis and Futuna Islands", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Yugoslavia", 0,0,0 }, +{ IDX_2C('z','a'), "South Africa", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0 , NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.simplified_chinese b/lang/webalizer_lang.simplified_chinese new file mode 100644 index 0000000..1cca907 --- /dev/null +++ b/lang/webalizer_lang.simplified_chinese @@ -0,0 +1,630 @@ +/* + webalizer_lang.simplified_chinese + + Webalizer V2.0x Language Support file for Simplified Chinese + (used in Mainland China). + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Simplified Chinese"; +char *langcode = "zh-Hans"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "Ìõ¼Ç¼"; +char *msg_addresses="µØÖ·"; +char *msg_ignored = "Ìõ±»ºöÂÔ"; +char *msg_bad = "ÌõÎÞЧ"; +char *msg_in = "¹²ÓÃʱ"; +char *msg_seconds = "Ãë"; + +/* progress and setup error messages */ +char *msg_log_err = "´íÎó: ²»ÄÜ´ò¿ªÈÕÖ¾Îļþ"; +char *msg_log_use = "ʹÓÃÈÕÖ¾Îļþ"; +char *msg_dir_err = "´íÎó: ²»ÄܸıäĿ¼µ½"; +char *msg_dir_use = "Êä³ö½á¹ûµ½"; +char *msg_cur_dir = "µ±Ç°Ä¿Â¼"; +char *msg_hostname= "²úÉú±¨±íµÄÖ÷»úÃûÊÇ"; +char *msg_ign_hist= "ºöÂÔÒÔÇ°µÄÀúÊ·ÐÅÏ¢..."; +char *msg_no_hist = "ûÓÐÕÒµ½ÀúÊ·ÐÅÏ¢Îļþ..."; +char *msg_get_hist= "ÕýÔÚ¶ÁÈ¡ÀúÊ·ÐÅÏ¢Îļþ..."; +char *msg_put_hist= "ÕýÔÚ±£´æÀúÊ·ÐÅÏ¢Îļþ..."; +char *msg_hist_err= "´íÎó: ²»ÄÜдÈëÀúÊ·ÐÅÏ¢Îļþ"; +char *msg_bad_hist= "´íÎó: ºöÂÔ·Ç·¨ÀúÊ·ÐÅÏ¢¼Ç¼"; +char *msg_bad_conf= "´íÎó: ²»ÄÜ´ò¿ªÅäÖÃÎļþ"; +char *msg_bad_key = "¾¯¸æ: ·Ç·¨¹Ø¼ü´Ê"; +char *msg_bad_date= "´íÎó: Ìø¹ý¼Ç¼(ÈÕÆÚ´íÎó)"; +char *msg_ign_nscp= "Ìø¹ý Netscape Í·¼Ç¼"; +char *msg_bad_rec = "Ìø¹ý´íÎó¼Ç¼"; +char *msg_no_vrec = "ûÓÐÕÒµ½ºÏ·¨¼Ç¼!"; +char *msg_gen_rpt = "ÕýÔÚÉú³É±¨±í ---- Ϊ "; +char *msg_gen_sum = "ÕýÔÚÉú³É×ۺϱ¨±í"; +char *msg_get_data= "ÕýÔÚ¶ÁÈ¡ÉÏ´ÎÔËÐеÄÊý¾Ý..."; +char *msg_put_data= "ÕýÔÚ±£´æµ±Ç°ÔËÐеÄÊý¾Ý..."; +char *msg_no_data = "ûÓÐÕÒµ½ÉÏ´ÎÔËÐеÄÊý¾Ý..."; +char *msg_bad_data= "´íÎó: ²»ÄܶÁÈ¡ÉÏ´ÎÔËÐÐÊý¾Ý"; +char *msg_data_err= "´íÎó: ²»Äܱ£´æµ±Ç°ÔËÐÐÊý¾Ý"; +char *msg_dup_data= "¾¯¸æ: ·¢ÏÖ¿ÉÄܵÄÖظ´Êý¾Ý"; + +/* DNS Stuff */ +char *msg_dns_nocf= "ûÓÐÖ¸Ã÷ DNS »º´æÎļþ, Í˳ö..."; +char *msg_dns_nodb= "´íÎó: ²»ÄÜ´ò¿ª DNS »º´æÎļþ"; +char *msg_dns_nolk= "´íÎó: ²»ÄÜËø¶¨ DNS »º´æÎļþ"; +char *msg_dns_usec= "ÕýÔÚʹÓà DNS »º´æÎļþ"; +char *msg_dns_rslv= "DNS ²éÕÒ"; +char *msg_dns_none= "ûÓпÉÒÔ´¦ÀíµÄ¼Ç¼"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "²»ÄÜ·ÖÅä×ã¹»µÄÄÚ´æ, È¡Ïû Top Sites ±¨¸æÏî!"; +char *msg_nomem_tr= "²»ÄÜ·ÖÅä×ã¹»µÄÄÚ´æ, È¡Ïû Top Referrers ±¨¸æÏî!"; +char *msg_nomem_tu= "²»ÄÜ·ÖÅä×ã¹»µÄÄÚ´æ, È¡Ïû Top URLs ±¨¸æÏî!"; +char *msg_nomem_tc= "²»ÄÜ·ÖÅä×ã¹»µÄÄÚ´æ, È¡Ïû Top Countries ±¨¸æÏî!"; +char *msg_nomem_ta= "²»ÄÜ·ÖÅä×ã¹»µÄÄÚ´æ, È¡Ïû Top User Agents ±¨¸æÏî!"; +char *msg_nomem_tsr="²»ÄÜ·ÖÅä×ã¹»µÄÄÚ´æ, È¡Ïû Top Search Strings ±¨¸æÏî!"; +char *msg_nomem_ti= "²»ÄÜ·ÖÅä×ã¹»µÄÄÚ´æ, È¡Ïû Top Usernames ±¨¸æÏî!"; +char *msg_nomem_dh= "²»ÄÜÔö¼ÓÖ÷»ú½Úµã(ÿÈÕ), Ìø¹ý"; +char *msg_nomem_mh= "²»ÄÜÔö¼ÓÖ÷»ú½Úµã(ÿÔÂ), Ìø¹ý"; +char *msg_nomem_u = "²»ÄÜÔö¼Ó URL ½Úµã, Ìø¹ý"; +char *msg_nomem_a = "²»ÄÜÔö¼Ó User Agent ½Úµã, Ìø¹ý"; +char *msg_nomem_r = "²»ÄÜÔö¼Ó Referrer ½Úµã, Ìø¹ý"; +char *msg_nomem_sc= "²»ÄÜÔö¼Ó Search String ½Úµã, Ìø¹ý"; +char *msg_nomem_i = "²»ÄÜÔö¼Ó Username ½Úµã, Ìø¹ý"; + +/* log record errors */ +char *msg_big_rec = "´íÎó: Ìø¹ýÌ«³¤µÄÈÕÖ¾¼Ç¼"; +char *msg_big_host= "¾¯¸æ: ½Ø¶ÏÌ«³¤µÄ hostname Óò"; +char *msg_big_date= "¾¯¸æ: ½Ø¶ÏÌ«³¤µÄ date Óò"; +char *msg_big_req = "¾¯¸æ: ½Ø¶ÏÌ«³¤µÄ request Óò"; +char *msg_big_ref = "¾¯¸æ: ½Ø¶ÏÌ«³¤µÄ referrer Óò"; +char *msg_big_user= "¾¯¸æ: ½Ø¶ÏÌ«³¤µÄ username Óò"; +char *msg_big_one = "¾¯¸æ: Ì«³¤µÄ×Ö·û´®"; + +/* misc errors */ +char *msg_no_open = "´íÎó: ²»ÄÜ´ò¿ªÎļþ"; + +/* Help display... */ +char *h_usage1 = "Ó÷¨"; +char *h_usage2 = "[Ñ¡Ïî] [ÈÕÖ¾Îļþ]"; +char *h_msg[]= { + "-h = ÏÔʾ±¾°ïÖúÐÅÏ¢" , + "-V = ÏÔʾ±¾°æ±¾ÐÅÏ¢" , + "-v = be verbose" , + "-d = ÏÔʾ¸½¼ÓµÄµ÷ÊÔÐÅÏ¢" , + "-F type = ÈÕÖ¾ÀàÐÍ. ÀàÐÍ= (clf | ftp | squid | w3c)", + "-f = ºÏ²¢´ÎÐò´íÎó?(Fold sequence errors)" , + "-i = ºöÂÔÀúÊ·ÐÅÏ¢Îļþ" , + "-p = ±£³Ö״̬ÐÅÏ¢(ÔöÁ¿·½Ê½)" , + "-b = ignore state (incremental)" , + "-q = ²»ÏÔʾһ°ãÐÅÏ¢" , + "-Q = ²»ÏÔʾ*ËùÓÐ*ÐÅÏ¢" , + "-Y = ²»ÏÔʾ°´¹ú¼Ò·Ö²¼µÄͼ±í" , + "-G = ²»ÏÔʾ°´Ð¡Ê±·Ö²¼µÄͼ±í" , + "-H = ²»ÏÔʾ°´Ð¡Ê±·Ö²¼µÄͳ¼ÆÐÅÏ¢" , + "-L = ²»ÏÔʾÑÕɫͼÀý" , + "-l num = ÔÚͼ±íÉÏʹÓà num Ìõ±³¾°Ïß" , + "-m num = É趨·ÃÎʳ¬Ê±Öµ(µ¥Î»: Ãë)" , + "-T = ÏÔʾ¶¨Ê±ÐÅÏ¢" , + "-c file = Ö¸¶¨ÅäÖÃÎļþΪ 'file'" , + "-n name = Ö¸¶¨Ê¹ÓõÄÖ÷»úÃûΪ 'name'" , + "-o dir = Ö¸¶¨Êä³öĿ¼Ϊ 'dir'" , + "-t name = Ö¸¶¨±¨±í±êÌâΪ 'name'" , + "-a name = Òþ²ØÃû×ÖΪ 'name' µÄÓû§´úÀí" , + "-r name = Òþ²ØÃû×ÖΪ 'name' µÄÒýÓÃ" , + "-s name = Òþ²ØÃû×ÖΪ 'name' µÄÕ¾µã" , + "-u name = Òþ²ØÃû×ÖΪ 'name' µÄ URL" , + "-x name = Ö¸¶¨Ê¹ÓõÄÎļþÀ©Õ¹ÃûΪ 'name'" , + "-O name = Omit page 'name'" , + "-P name = Ö¸¶¨Ê¹ÓõÄÒ³ÃæÀàÐÍÀ©Õ¹ÃûΪ 'name'" , + "-I name = Ö¸¶¨Ë÷Òý±ðÃûΪ 'name'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = ÏÔʾ num ¸ö top agents" , + "-C num = ÏÔʾ num ¸ö top countries" , + "-R num = ÏÔʾ num ¸ö top referrers" , + "-S num = ÏÔʾ num ¸ö top sites" , + "-U num = ÏÔʾ num ¸ö top URLs" , + "-e num = ÏÔʾ num ¸ö top Entry Pages" , + "-E num = ÏÔʾ num ¸ö top Exit Pages" , + "-g num = °ÑÓò°´ num ¸ö¼¶±ð·Ö×é" , + "-X = Òþ²Øµ¥¸öÕ¾µã" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = ʹÓà DNS »º´æÎļþ 'name'" , + "-N num = Ö¸¶¨ DNS ½âÎöµÄ½ø³ÌÊý(0 = ²»½øÐÐDNS ½âÎö)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "ÕªÒªµÄʱ¼ä¶Î"; +char *msg_hhdr_gt = "²úÉúÓÚ"; + +/* main index strings */ +char *msg_main_us = "ʹÓÃÕªÒª"; +/* char *msg_main_per= "×î½ü 12 ¸öÔÂ"; */ +char *msg_main_per= "°´ÔÂÕªÒª"; +char *msg_main_sum= "°´ÔÂÕªÒª"; +char *msg_main_da = "ÿÈÕƽ¾ù"; +char *msg_main_mt = "ÿÔÂ×ܼÆ"; + +/* month HTML page strings */ +char *msg_hmth_du = "ÿÈÕʹÓÃÇé¿ö"; +char *msg_hmth_hu = "ÿСʱʹÓÃÇé¿ö"; + +/* table header strings */ +char *msg_h_by = "°´ÕÕ"; +char *msg_h_avg = "ƽ¾ù"; +char *msg_h_max = "×î´ó"; +char *msg_h_total = "×ܼÆ"; +char *msg_h_totals= "×ܼÆ"; +char *msg_h_day = "ÈÕ"; +char *msg_h_mth = "ÔÂ"; +char *msg_h_hour = "Сʱ"; +char *msg_h_hits = "µã»÷"; +char *msg_h_pages = "Ò³Ãæ"; +char *msg_h_visits= "·ÃÎÊ"; +char *msg_h_files = "Îļþ"; +char *msg_h_sites = "Õ¾µã"; +char *msg_h_xfer = "ǧ×Ö½Ú"; +char *msg_h_hname = "Ö÷»úÃû"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Óû§´úÀí"; +char *msg_h_ref = "ÒýÓÃ"; +char *msg_h_ctry = "¹ú¼Ò"; +char *msg_h_search= "ËÑË÷×Ö·û´®"; +char *msg_h_uname = "Óû§Ãû"; + +/* links along top of page */ +char *msg_hlnk_ds = "ÿÈÕͳ¼Æ"; +char *msg_hlnk_hs = "ÿСʱͳ¼Æ"; +char *msg_hlnk_u = "URLs"; +char *msg_hlnk_s = "Õ¾µã"; +char *msg_hlnk_a = "´úÀí"; +char *msg_hlnk_c = "¹ú¼Ò"; +char *msg_hlnk_r = "ÒýÓÃ"; +char *msg_hlnk_en = "Èë¿Ú"; +char *msg_hlnk_ex = "³ö¿Ú"; +char *msg_hlnk_sr = "ËÑË÷"; +char *msg_hlnk_i = "Óû§"; + +/* monthly total table */ +char *msg_mtot_ms = "ÔÂͳ¼ÆÐÅÏ¢"; +char *msg_mtot_th = "×ܵã»÷Êý"; +char *msg_mtot_tf = "×ÜÎļþÊý"; +char *msg_mtot_tx = "×Üǧ×Ö½ÚÊý"; +char *msg_mtot_us = "×ÜÕ¾µãÊý£¨²»°üÀ¨Öظ´Õ¾µã£©"; +char *msg_mtot_ur = "×ÜÒýÓÃÕßÊý£¨²»°üÀ¨Öظ´ÒýÓÃÕߣ©"; +char *msg_mtot_ua = "×ÜÓû§´úÀíÊý£¨²»°üÀ¨Öظ´Óû§´úÀí£©"; +char *msg_mtot_uu = "×Ü URL Êý£¨²»°üÀ¨Öظ´ URL £©"; +char *msg_mtot_ui = "×ÜÓû§ÃûÊý£¨²»°üÀ¨Öظ´Óû§Ãû£©"; +char *msg_mtot_mhd= "ÿÌìµã»÷Êý"; +char *msg_mtot_mhh= "ÿСʱµã»÷Êý"; +char *msg_mtot_mfd= "ÿÌìÎļþÊý"; +char *msg_mtot_mpd= "ÿÌìÒ³ÃæÊý"; +char *msg_mtot_msd= "Sites per Day"; +char *msg_mtot_mvd= "ÿÌì·ÃÎÊÊý"; +char *msg_mtot_mkd= "ÿÌìÁ÷Á¿Êý£¨µ¥Î»£ºÇ§×Ö½Ú£©"; +char *msg_mtot_rc = "°´ÏìÓ¦ÂëµÄµã»÷Êý"; + +/* daily total table */ +char *msg_dtot_ds = "ÿÈÕͳ¼Æ"; + +/* hourly total table */ +char *msg_htot_hs = "ÿСʱͳ¼Æ"; + +/* country pie chart */ +char *msg_ctry_use= "°´¹ú¼ÒʹÓÃÇé¿ö"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "×îÇ°"; +char *msg_top_of = "----"; +char *msg_top_s = "×ÜÕ¾µãÊý"; +char *msg_top_u = "×Ü URL Êý"; +char *msg_top_r = "×ÜÒýÓÃÕßÊý"; +char *msg_top_a = "×ÜÓû§´úÀíÊý"; +char *msg_top_c = "×ܹú¼ÒÊý"; +char *msg_top_en = "×ܽøÈëÒ³ÃæÊý"; +char *msg_top_ex = "×ÜÍƳöÒ³ÃæÊý"; +char *msg_top_sr = "×ÜËÑË÷×Ö·û´®Êý"; +char *msg_top_i = "×ÜÓû§ÃûÊý"; +char *msg_v_sites = "²ì¿´ËùÓÐÕ¾µã"; +char *msg_v_urls = "²ì¿´ËùÓÐ URL"; +char *msg_v_refs = "²ì¿´ËùÓÐÒýÓÃ"; +char *msg_v_agents= "²ì¿´ËùÓÐÓû§´úÀí"; +char *msg_v_search= "²ì¿´ËùÓÐËÑË÷×Ö·û´®"; +char *msg_v_users = "²ì¿´ËùÓÐÓû§Ãû"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Ò»ÔÂ", "¶þÔÂ", "ÈýÔÂ", + "ËÄÔÂ", "ÎåÔÂ", "ÁùÔÂ", + "ÆßÔÂ", "°ËÔÂ", "¾ÅÔÂ", + "Ê®ÔÂ", "ʮһÔÂ", "Ê®¶þÔÂ"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Ò»ÔÂ", "¶þÔÂ", "ÈýÔÂ", + "ËÄÔÂ", "ÎåÔÂ", "ÁùÔÂ", + "ÆßÔÂ", "°ËÔÂ", "¾ÅÔÂ", + "Ê®ÔÂ", "ʮһÔÂ", "Ê®¶þÔÂ"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "䶨ÒåµÄÏìÓ¦´úÂë", 0 }, + { "ÏìÓ¦´úÂë 100 - ¼ÌÐø", 0 }, + { "ÏìÓ¦´úÂë 101 - ¸Ä±äЭÒé", 0 }, + { "ÏìÓ¦´úÂë 200 - ³É¹¦", 0 }, + { "ÏìÓ¦´úÂë 201 - Òѱ»´´½¨", 0 }, + { "ÏìÓ¦´úÂë 202 - Òѱ»½ÓÊÜ", 0 }, + { "ÏìÓ¦´úÂë 203 - ·ÇȨÍþÐÅÏ¢", 0 }, + { "ÏìÓ¦´úÂë 204 - ÎÞÄÚÈÝ", 0 }, + { "ÏìÓ¦´úÂë 205 - ÖØÖÃÄÚÈÝ", 0 }, + { "ÏìÓ¦´úÂë 206 - ²¿·ÖÄÚÈÝ", 0 }, + { "ÏìÓ¦´úÂë 300 - ¶àÖØÑ¡Ôñ", 0 }, + { "ÏìÓ¦´úÂë 301 - Òѱ»ÓÀ¾ÃÐÔתÒÆ", 0 }, + { "ÏìÓ¦´úÂë 302 - Òѱ»ÕÒµ½", 0 }, + { "ÏìÓ¦´úÂë 303 - ¿´ÆäËü", 0 }, + { "ÏìÓ¦´úÂë 304 - ûÓб»Ð޸Ĺý", 0 }, + { "ÏìÓ¦´úÂë 305 - ʹÓôúÀí", 0 }, + { "ÏìÓ¦´úÂë 307 - Òѱ»ÔÝʱÐÔתÒÆ", 0 }, + { "ÏìÓ¦´úÂë 400 - ÎÞЧµÄÇëÇó", 0 }, + { "ÏìÓ¦´úÂë 401 - δ±»ÑéÖ¤", 0 }, + { "ÏìÓ¦´úÂë 402 - ÐèÒª¸¶·Ñ", 0 }, + { "ÏìÓ¦´úÂë 403 - ±»½ûÖ¹", 0 }, + { "ÏìÓ¦´úÂë 404 - ûÓÐÕÒµ½", 0 }, + { "ÏìÓ¦´úÂë 405 - ²»ÈÝÐíµÄ·½·¨", 0 }, + { "ÏìÓ¦´úÂë 406 - ²»¿É½ÓÊÜ", 0 }, + { "ÏìÓ¦´úÂë 407 - ÐèÒª´úÀíÑéÖ¤", 0 }, + { "ÏìÓ¦´úÂë 408 - ÇëÇó³¬Ê±", 0 }, + { "ÏìÓ¦´úÂë 409 - ³åÍ»", 0 }, + { "ÏìÓ¦´úÂë 410 - Òѹý", 0 }, + { "ÏìÓ¦´úÂë 411 - ÐèÒª³¤¶ÈÐÅÏ¢", 0 }, + { "ÏìÓ¦´úÂë 412 - Ç°Ìá²»Âú×ã", 0 }, + { "ÏìÓ¦´úÂë 413 - ÇëÇóʵÌåÌ«´ó", 0 }, + { "ÏìÓ¦´úÂë 414 - ÇëÇó URI Ì«³¤", 0 }, + { "ÏìÓ¦´úÂë 415 - ²»Ö§³ÖµÄÎļþÀàÐÍ", 0 }, + { "ÏìÓ¦´úÂë 416 - ÇëÇóµÄ·¶Î§ÎÞЧ", 0 }, + { "ÏìÓ¦´úÂë 417 - ÆÚÍûÂä¿Õ", 0 }, + { "ÏìÓ¦´úÂë 500 - ·þÎñÆ÷ÄÚ²¿´í", 0 }, + { "ÏìÓ¦´úÂë 501 - ûÓÐʵÏÖ", 0 }, + { "ÏìÓ¦´úÂë 502 - »µµôµÄÍø¹Ø", 0 }, + { "ÏìÓ¦´úÂë 503 - ·þÎñ²»¿ÉÓÃ", 0 }, + { "ÏìÓ¦´úÂë 504 - Íø¹Ø³¬Ê±", 0 }, + { "ÏìÓ¦´úÂë 505 - ²»Ö§³ÖµÄ HTTP °æ±¾", 0 } }; + +char *msg_title = "ʹÓÃͳ¼Æ"; +char *msg_h_other = "ÆäËü"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "δ½âÎöµÄ/δ֪µÄ", 0,0,0 }, +{ IDX_3C('c','o','m'), ".com", 0,0,0 }, +{ IDX_3C('e','d','u'), ".edu", 0,0,0 }, +{ IDX_3C('g','o','v'), ".gov", 0,0,0 }, +{ IDX_3C('i','n','t'), ".int", 0,0,0 }, +{ IDX_3C('m','i','l'), ".mil", 0,0,0 }, +{ IDX_3C('n','e','t'), ".net", 0,0,0 }, +{ IDX_3C('o','r','g'), ".org", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),".arpa", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"±±´óÎ÷Ñó¹«Ô¼×éÖ¯", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "°²µÀ¶û", 0,0,0 }, +{ IDX_2C('a','e'), "°¢ÁªÇõ", 0,0,0 }, +{ IDX_2C('a','f'), "°¢¸»º¹", 0,0,0 }, +{ IDX_2C('a','g'), "°²Ìá¹ÏºÍ°Í²¼´ï", 0,0,0 }, +{ IDX_2C('a','i'), "°²¹çÀ­", 0,0,0 }, +{ IDX_2C('a','l'), "°¢¶û°ÍÄáÑÇ", 0,0,0 }, +{ IDX_2C('a','m'), "ÑÇÃÀÄáÑÇ", 0,0,0 }, +{ IDX_2C('a','n'), "ºÉÊô°²µÄÁÐ˹", 0,0,0 }, +{ IDX_2C('a','o'), "°²¸çÀ­", 0,0,0 }, +{ IDX_2C('a','q'), "Äϼ«ÖÞ ", 0,0,0 }, +{ IDX_2C('a','r'), "°¢¸ùÍ¢", 0,0,0 }, +{ IDX_2C('a','s'), "ÈøĦÑÇ", 0,0,0 }, +{ IDX_2C('a','t'), "°ÂµØÀû", 0,0,0 }, +{ IDX_2C('a','u'), "°Ä´óÀûÑÇ", 0,0,0 }, +{ IDX_2C('a','w'), "°¢Â³°Í", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "°¢Èû°Ý½®", 0,0,0 }, +{ IDX_2C('b','a'), "²¨ºÚ", 0,0,0 }, +{ IDX_2C('b','b'), "°Í°Í¶à˹", 0,0,0 }, +{ IDX_2C('b','d'), "ÃϼÓÀ­", 0,0,0 }, +{ IDX_2C('b','e'), "±ÈÀûʱ", 0,0,0 }, +{ IDX_2C('b','f'), "²¼ÆäÄÉ·¨Ë÷", 0,0,0 }, +{ IDX_2C('b','g'), "±£¼ÓÀûÑÇ", 0,0,0 }, +{ IDX_2C('b','h'), "°ÍÁÖ", 0,0,0 }, +{ IDX_2C('b','i'), "²¼Â¡µÏ", 0,0,0 }, +{ IDX_2C('b','j'), "±´Äþ", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "°ÙĽ´ó", 0,0,0 }, +{ IDX_2C('b','n'), "ÎÄÀ³", 0,0,0 }, +{ IDX_2C('b','o'), "²£ÀûάÑÇ", 0,0,0 }, +{ IDX_2C('b','r'), "°ÍÎ÷", 0,0,0 }, +{ IDX_2C('b','s'), "°Í¹þÂí", 0,0,0 }, +{ IDX_2C('b','t'), "²»µ¤", 0,0,0 }, +{ IDX_2C('b','v'), "²¼Î¬µº", 0,0,0 }, +{ IDX_2C('b','w'), "²©´ÄÍßÄÉ", 0,0,0 }, +{ IDX_2C('b','y'), "°×¶íÂÞ˹", 0,0,0 }, +{ IDX_2C('b','z'), "²®Àû×È", 0,0,0 }, +{ IDX_2C('c','a'), "¼ÓÄôó", 0,0,0 }, +{ IDX_2C('c','c'), "¿É¿Éµº", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "ÖзÇ", 0,0,0 }, +{ IDX_2C('c','g'), "¸Õ¹û", 0,0,0 }, +{ IDX_2C('c','h'), "ÈðÊ¿", 0,0,0 }, +{ IDX_2C('c','i'), "ÏóÑÀº£°¶", 0,0,0 }, +{ IDX_2C('c','k'), "¿â¿ËȺµº", 0,0,0 }, +{ IDX_2C('c','l'), "ÖÇÀû", 0,0,0 }, +{ IDX_2C('c','m'), "¿¦Âó¡", 0,0,0 }, +{ IDX_2C('c','n'), "Öйú", 0,0,0 }, +{ IDX_2C('c','o'), "¸çÂ×±ÈÑÇ", 0,0,0 }, +{ IDX_2C('c','r'), "¸ç˹´ïÀè¼Ó", 0,0,0 }, +{ IDX_2C('c','u'), "¹Å°Í", 0,0,0 }, +{ IDX_2C('c','v'), "·ðµÃ½Ç", 0,0,0 }, +{ IDX_2C('c','x'), "Ê¥µ®µº", 0,0,0 }, +{ IDX_2C('c','y'), "ÈûÆÖ·˹", 0,0,0 }, +{ IDX_2C('c','z'), "½Ý¿Ë¹²ºÍ¹ú", 0,0,0 }, +{ IDX_2C('d','e'), "µÂ¹ú", 0,0,0 }, +{ IDX_2C('d','j'), "¼ª²¼Ìá", 0,0,0 }, +{ IDX_2C('d','k'), "µ¤Âó", 0,0,0 }, +{ IDX_2C('d','m'), "¶àÃ×Äá¼Ó", 0,0,0 }, +{ IDX_2C('d','o'), "¶àÃ×Äá¼Ó¹²ºÍ¹ú", 0,0,0 }, +{ IDX_2C('d','z'), "°¢¶û¼°ÀûÑÇ", 0,0,0 }, +{ IDX_2C('e','c'), "¶ò¹Ï¶à¶û", 0,0,0 }, +{ IDX_2C('e','e'), "°®É³ÄáÑÇ", 0,0,0 }, +{ IDX_2C('e','g'), "°£¼°", 0,0,0 }, +{ IDX_2C('e','h'), "Î÷Èö¹þÀ­", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Î÷°àÑÀ", 0,0,0 }, +{ IDX_2C('e','t'), "°£Èû¶í±ÈÑÇ", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "·ÒÀ¼", 0,0,0 }, +{ IDX_2C('f','j'), "ì³¼Ã", 0,0,0 }, +{ IDX_2C('f','k'), "¸£¿ËÀ¼Èºµº(Âí¶ûάÄÉ˹Ⱥµº)", 0,0,0 }, +{ IDX_2C('f','m'), "ÃÜ¿ËÂÞÄáÎ÷ÑÇ", 0,0,0 }, +{ IDX_2C('f','o'), "·¨ÂÞȺµº£¨µ¤Âó£©", 0,0,0 }, +{ IDX_2C('f','r'), "·¨¹ú", 0,0,0 }, +{ IDX_2C('g','a'), "¼ÓÅî", 0,0,0 }, +{ IDX_2C('g','b'), "Ó¢¹ú", 0,0,0 }, +{ IDX_2C('g','d'), "¸ñÁÖÄÉ´ï", 0,0,0 }, +{ IDX_2C('g','e'), "¸ñ³¼ªÑÇ", 0,0,0 }, +{ IDX_2C('g','f'), "·¨Êô¹çÑÇÄÇ", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "¼ÓÄÉ", 0,0,0 }, +{ IDX_2C('g','i'), "Ö±²¼ÂÞÍÓ", 0,0,0 }, +{ IDX_2C('g','l'), "¸ñÁêÀ¼", 0,0,0 }, +{ IDX_2C('g','m'), "¸Ô±ÈÑÇ", 0,0,0 }, +{ IDX_2C('g','n'), "¼¸ÄÚÑÇ", 0,0,0 }, +{ IDX_2C('g','p'), "¹ÏµÂÂÞÆÕ", 0,0,0 }, +{ IDX_2C('g','q'), "³àµÀ¼¸ÄÚÑÇ", 0,0,0 }, +{ IDX_2C('g','r'), "Ï£À°", 0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia and S. Sandwich Isls.", 0,0,0 }, +{ IDX_2C('g','t'), "ΣµØÂíÀ­", 0,0,0 }, +{ IDX_2C('g','u'), "¹Øµº", 0,0,0 }, +{ IDX_2C('g','w'), "¼¸ÄÚÑDZÈÉÜ", 0,0,0 }, +{ IDX_2C('g','y'), "¹çÑÇÄÇ", 0,0,0 }, +{ IDX_2C('h','k'), "ÖйúÏã¸Û", 0,0,0 }, +{ IDX_2C('h','m'), "Heard and McDonald Islands", 0,0,0 }, +{ IDX_2C('h','n'), "ºé¶¼À­Ë¹", 0,0,0 }, +{ IDX_2C('h','r'), "¿ËÂÞµØÑÇ", 0,0,0 }, +{ IDX_2C('h','t'), "º£µØ", 0,0,0 }, +{ IDX_2C('h','u'), "ÐÙÑÀÀû", 0,0,0 }, +{ IDX_2C('i','d'), "Ó¡¶ÈÄáÎ÷ÑÇ", 0,0,0 }, +{ IDX_2C('i','e'), "°®¶ûÀ¼", 0,0,0 }, +{ IDX_2C('i','l'), "ÒÔÉ«ÁÐ", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "Ó¡¶È", 0,0,0 }, +{ IDX_2C('i','o'), "Ó¢Áª°îµÄÓ¡¶ÈÑóÁìÓò", 0,0,0 }, +{ IDX_2C('i','q'), "ÒÁÀ­¿Ë", 0,0,0 }, +{ IDX_2C('i','r'), "ÒÁÀÊ", 0,0,0 }, +{ IDX_2C('i','s'), "±ùµº", 0,0,0 }, +{ IDX_2C('i','t'), "Òâ´óÀû", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "ÑÀÂò¼Ó", 0,0,0 }, +{ IDX_2C('j','o'), "Ô¼µ©", 0,0,0 }, +{ IDX_2C('j','p'), "ÈÕ±¾", 0,0,0 }, +{ IDX_2C('k','e'), "¿ÏÄáÑÇ", 0,0,0 }, +{ IDX_2C('k','g'), "¼ª¶û¼ªË¹Ë¹Ì¹", 0,0,0 }, +{ IDX_2C('k','h'), "¼íÆÒÕ¯", 0,0,0 }, +{ IDX_2C('k','i'), "»ùÀï°Í˹", 0,0,0 }, +{ IDX_2C('k','m'), "¿ÆĦÂÞ", 0,0,0 }, +{ IDX_2C('k','n'), "Ê¥»ù´ÄºÍÄáά˹", 0,0,0 }, +{ IDX_2C('k','p'), "³¯ÏÊ", 0,0,0 }, +{ IDX_2C('k','r'), "º«¹ú", 0,0,0 }, +{ IDX_2C('k','w'), "¿ÆÍþÌØ", 0,0,0 }, +{ IDX_2C('k','y'), "¿ªÂüȺµº", 0,0,0 }, +{ IDX_2C('k','z'), "¹þÈø¿Ë˹̹", 0,0,0 }, +{ IDX_2C('l','a'), "ÀÏÎÎ", 0,0,0 }, +{ IDX_2C('l','b'), "Àè°ÍÄÛ", 0,0,0 }, +{ IDX_2C('l','c'), "ʥ¬Î÷ÑÇ", 0,0,0 }, +{ IDX_2C('l','i'), "ÁÐÖ§¶ØÊ¿µÇ", 0,0,0 }, +{ IDX_2C('l','k'), "˹ÀïÀ¼¿¨", 0,0,0 }, +{ IDX_2C('l','r'), "Àû±ÈÀïÑÇ", 0,0,0 }, +{ IDX_2C('l','s'), "À³Ë÷ÍÐ", 0,0,0 }, +{ IDX_2C('l','t'), "Á¢ÌÕÍð", 0,0,0 }, +{ IDX_2C('l','u'), "¬ɭ±¤", 0,0,0 }, +{ IDX_2C('l','v'), "À­ÍÐάÑÇ", 0,0,0 }, +{ IDX_2C('l','y'), "Àû±ÈÑÇ", 0,0,0 }, +{ IDX_2C('m','a'), "ĦÂå¸ç", 0,0,0 }, +{ IDX_2C('m','c'), "ĦÄɸç", 0,0,0 }, +{ IDX_2C('m','d'), "Ħ¶û¶àÍß", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Âí´ï¼Ó˹¼Ó", 0,0,0 }, +{ IDX_2C('m','h'), "ÂíÉܶûȺµº", 0,0,0 }, +{ IDX_2C('m','k'), "ÂíÆä¶Ù", 0,0,0 }, +{ IDX_2C('m','l'), "ÂíÀï", 0,0,0 }, +{ IDX_2C('m','m'), "Ãåµé", 0,0,0 }, +{ IDX_2C('m','n'), "ÃɹÅ", 0,0,0 }, +{ IDX_2C('m','o'), "Öйú°ÄÃÅ", 0,0,0 }, +{ IDX_2C('m','p'), "±±ÂíÀïÑÇÄÉȺµº£¨ÃÀ£©", 0,0,0 }, +{ IDX_2C('m','q'), "ÂíÌáÄá¿Ë£¨·¨£©", 0,0,0 }, +{ IDX_2C('m','r'), "ëÀïËþÄáÑÇ", 0,0,0 }, +{ IDX_2C('m','s'), "ÃÉÌØÈûÀ­ÌØ£¨Ó¢£©", 0,0,0 }, +{ IDX_2C('m','t'), "Âí¶ûËû", 0,0,0 }, +{ IDX_2C('m','u'), "ëÀïÇó˹", 0,0,0 }, +{ IDX_2C('m','v'), "Âí¶û´ú·ò", 0,0,0 }, +{ IDX_2C('m','w'), "ÂíÀ­Î¬", 0,0,0 }, +{ IDX_2C('m','x'), "Ä«Î÷¸ç", 0,0,0 }, +{ IDX_2C('m','y'), "ÂíÀ´Î÷ÑÇ", 0,0,0 }, +{ IDX_2C('m','z'), "Īɣ±È¿Ë", 0,0,0 }, +{ IDX_2C('n','a'), "ÄÉÃ×±ÈÑÇ", 0,0,0 }, +{ IDX_2C('n','c'), "п¦Àï¶àÄáÑÇ", 0,0,0 }, +{ IDX_2C('n','e'), "ÄáÈÕ¶û", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Island", 0,0,0 }, +{ IDX_2C('n','g'), "ÄáÈÕÀûÑÇ", 0,0,0 }, +{ IDX_2C('n','i'), "Äá¼ÓÀ­¹Ï", 0,0,0 }, +{ IDX_2C('n','l'), "ºÉÀ¼", 0,0,0 }, +{ IDX_2C('n','o'), "ŲÍþ", 0,0,0 }, +{ IDX_2C('n','p'), "Äá²´¶û", 0,0,0 }, +{ IDX_2C('n','r'), "è§Â³", 0,0,0 }, +{ IDX_2C('n','u'), "Ŧ°£", 0,0,0 }, +{ IDX_2C('n','z'), "ÐÂÎ÷À¼", 0,0,0 }, +{ IDX_2C('o','m'), "°¢Âü", 0,0,0 }, +{ IDX_2C('p','a'), "°ÍÄÃÂí", 0,0,0 }, +{ IDX_2C('p','e'), "Ãس", 0,0,0 }, +{ IDX_2C('p','f'), "·¨Êô²£ÀïÄáÎ÷ÑÇ", 0,0,0 }, +{ IDX_2C('p','g'), "°Í²¼ÑÇм¸ÄÚÑÇ", 0,0,0 }, +{ IDX_2C('p','h'), "·ÆÂɱö", 0,0,0 }, +{ IDX_2C('p','k'), "°Í»ù˹̹", 0,0,0 }, +{ IDX_2C('p','l'), "²¨À¼", 0,0,0 }, +{ IDX_2C('p','m'), "ʥƤ°£¶ûºÍÃÜ¿Ë¡£¨·¨£©", 0,0,0 }, +{ IDX_2C('p','n'), "ƤÌØ¿ª¶÷Ⱥµº", 0,0,0 }, +{ IDX_2C('p','r'), "²¨¶àÀè¸÷£¨ÃÀ£©", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "ÆÏÌÑÑÀ", 0,0,0 }, +{ IDX_2C('p','w'), "ÅÁÀÍ", 0,0,0 }, +{ IDX_2C('p','y'), "°ÍÀ­¹ç", 0,0,0 }, +{ IDX_2C('q','a'), "¿¨Ëþ¶û", 0,0,0 }, +{ IDX_2C('r','e'), "ÁôÄáÍô£¨·¨£©", 0,0,0 }, +{ IDX_2C('r','o'), "ÂÞÂíÄáÑÇ", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "¶íÂÞ˹Áª°î", 0,0,0 }, +{ IDX_2C('r','w'), "¬Íú´ï", 0,0,0 }, +{ IDX_2C('s','a'), "ɳÌØ°¢À­²®", 0,0,0 }, +{ IDX_2C('s','b'), "ËùÂÞÃÅȺµº", 0,0,0 }, +{ IDX_2C('s','c'), "ÈûÉà¶û", 0,0,0 }, +{ IDX_2C('s','d'), "ËÕµ¤", 0,0,0 }, +{ IDX_2C('s','e'), "Èðµä", 0,0,0 }, +{ IDX_2C('s','g'), "мÓÆÂ", 0,0,0 }, +{ IDX_2C('s','h'), "Ê¥ºÕÀÕÄÇ", 0,0,0 }, +{ IDX_2C('s','i'), "˹ÂåÎÄÄáÑÇ", 0,0,0 }, +{ IDX_2C('s','j'), "˹Í߶û°ÍÌØȺµº£¨Å²Íþ£©", 0,0,0 }, +{ IDX_2C('s','k'), "˹Âå·¥¿Ë", 0,0,0 }, +{ IDX_2C('s','l'), "ÈûÀ­Àû°º", 0,0,0 }, +{ IDX_2C('s','m'), "Ê¥ÂíÁ¦Åµ", 0,0,0 }, +{ IDX_2C('s','n'), "ÈûÄÚ¼Ó¶û", 0,0,0 }, +{ IDX_2C('s','o'), "Ë÷ÂíÀï", 0,0,0 }, +{ IDX_2C('s','r'), "ËÕÀïÄÏ", 0,0,0 }, +{ IDX_2C('s','t'), "Ê¥¶àÃÀÓëÆÕÁÖÎ÷±È", 0,0,0 }, +{ IDX_2C('s','u'), "Ç°ËÕÁª", 0,0,0 }, +{ IDX_2C('s','v'), "Èø¶ûÍ߶à", 0,0,0 }, +{ IDX_2C('s','y'), "ÐðÀûÑÇ", 0,0,0 }, +{ IDX_2C('s','z'), "˹ÍþÊ¿À¼", 0,0,0 }, +{ IDX_2C('t','c'), "ÌØ¿Ë˹ºÍ¿­¿Æ˹Ⱥµº£¨Ó¢£©", 0,0,0 }, +{ IDX_2C('t','d'), "Õ§µÃ", 0,0,0 }, +{ IDX_2C('t','f'), "·¨ÊôÄÏ·½ÁìÍÁ", 0,0,0 }, +{ IDX_2C('t','g'), "¶à¸ç", 0,0,0 }, +{ IDX_2C('t','h'), "Ì©¹ú", 0,0,0 }, +{ IDX_2C('t','j'), "Ëþ¼ª¿Ë˹̹", 0,0,0 }, +{ IDX_2C('t','k'), "ÍпËÀÍ", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "ÍÁ¿âÂü˹̹", 0,0,0 }, +{ IDX_2C('t','n'), "Í»Äá˹", 0,0,0 }, +{ IDX_2C('t','o'), "ÌÀ¼Ó", 0,0,0 }, +{ IDX_2C('t','p'), "¶«µÛ", 0,0,0 }, +{ IDX_2C('t','r'), "ÍÁ¶ûÆä", 0,0,0 }, +{ IDX_2C('t','t'), "ÌØÁ¢Äá´ïºÍ¶à°Í¸ç", 0,0,0 }, +{ IDX_2C('t','v'), "ͼÍ߬", 0,0,0 }, +{ IDX_2C('t','w'), "Öйų́Íå", 0,0,0 }, +{ IDX_2C('t','z'), "̹ɣÄáÑÇ", 0,0,0 }, +{ IDX_2C('u','a'), "ÎÚ¿ËÀ¼", 0,0,0 }, +{ IDX_2C('u','g'), "Îڸɴï", 0,0,0 }, +{ IDX_2C('u','k'), "Ó¢¹ú", 0,0,0 }, +{ IDX_2C('u','m'), "ÃÀ¹ú±ßԶСµº", 0,0,0 }, +{ IDX_2C('u','s'), "ÃÀ¹ú", 0,0,0 }, +{ IDX_2C('u','y'), "ÎÚÀ­¹ç", 0,0,0 }, +{ IDX_2C('u','z'), "ÎÚ×ȱð¿Ë˹̹", 0,0,0 }, +{ IDX_2C('v','a'), "èóµÙ¸Ô", 0,0,0 }, +{ IDX_2C('v','c'), "Ê¥ÎÄÉ­Ìغ͸ñÁÖÄɶ¡Ë¹", 0,0,0 }, +{ IDX_2C('v','e'), "ίÄÚÈðÀ­", 0,0,0 }, +{ IDX_2C('v','g'), "²»Áеߵº(Ó¢)", 0,0,0 }, +{ IDX_2C('v','i'), "²»Áеߵº(ÃÀ)", 0,0,0 }, +{ IDX_2C('v','n'), "Ô½ÄÏ", 0,0,0 }, +{ IDX_2C('v','u'), "ÍßŬ°¢Í¼", 0,0,0 }, +{ IDX_2C('w','f'), "ÍßÀû˹ºÍ¸»Í¼ÄÉ£¨·¨£©", 0,0,0 }, +{ IDX_2C('w','s'), "Î÷ÈøĦÑÇ", 0,0,0 }, +{ IDX_2C('y','e'), "Ò²ÃÅ", 0,0,0 }, +{ IDX_2C('y','t'), "ÂíÔ¼Ìصº", 0,0,0 }, +{ IDX_2C('y','u'), "ÄÏ˹À­·ò", 0,0,0 }, +{ IDX_2C('z','a'), "ÄÏ·Ç", 0,0,0 }, +{ IDX_2C('z','m'), "ÔÞ±ÈÑÇ", 0,0,0 }, +{ IDX_2C('z','w'), "½ò°Í²¼Î¤", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0 , NULL, 0,0,0 }}; + diff --git a/lang/webalizer_lang.slovak b/lang/webalizer_lang.slovak new file mode 100644 index 0000000..8b973d2 --- /dev/null +++ b/lang/webalizer_lang.slovak @@ -0,0 +1,638 @@ +/* + webalizer_lang.slovak + + Webalizer V2.0x Language Support file for Slovak. + 15-May-1998 by Bradford L. Barrett (brad@mrunix.net) + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 24-Aug-1998 Translation by Michal Michalac (michal.michalac@ehs.sk) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 25-Jan-2000 Updated translation by Michal Michalac (michal.michalac@ehs.sk) + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 31-Jul-2000 Corrections/additions by Lubos Klokner (erkac@vault-tec.sk) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Slovak"; +char *langcode = "sk"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "zaznamov"; +char *msg_addresses="addresses"; +char *msg_ignored = "ignorovanych"; +char *msg_bad = "chybnych"; +char *msg_in = "pocas"; +char *msg_seconds = "sekund"; + +/* progress and setup error messages */ +char *msg_log_err = "Chyba: Nemozem otvorit log subor"; +char *msg_log_use = "Pouzivam log subor"; +char *msg_dir_err = "Chyba: Nemozem prejst do adresara"; +char *msg_dir_use = "Vytvaram vystup v"; +char *msg_cur_dir = "aktualnom adresari"; +char *msg_hostname= "Meno pocitaca pre zostavy je"; +char *msg_ign_hist= "Ignorujem predchadzajucu historiu..."; +char *msg_no_hist = "Nemozem najst subor historie..."; +char *msg_get_hist= "Citam subor historie..."; +char *msg_put_hist= "Ukladam subor historie..."; +char *msg_hist_err= "Chyba: Nemozem zapisat subor historie"; +char *msg_bad_hist= "Chyba: Ignorujem chybny zaznam v historii"; +char *msg_bad_conf= "Chyba: Nemozem otvorit konfiguracny subor"; +char *msg_bad_key = "Pozor: Neplatne klucove slovo"; +char *msg_bad_date= "Chyba: Preskakujem zaznam (zly datum)"; +char *msg_ign_nscp= "Preskakujem Netscapovsky hlavickovy zaznam"; +char *msg_bad_rec = "Preskakujem zly zaznam"; +char *msg_no_vrec = "Neboli najdene platne zaznamy!"; +char *msg_gen_rpt = "Vytvaram zostavu pre"; +char *msg_gen_sum = "Vytvaram sumarnu zostavu"; +char *msg_get_data= "Citam udaje z minuleho spracovania..."; +char *msg_put_data= "Ukladam udaje aktualneho spracovania..."; +char *msg_no_data = "Nemozem najst udaje z minuleho spracovania..."; +char *msg_bad_data= "Chyba: Nemozem obnovit udaje aktualneho spracovania"; +char *msg_data_err= "Chyba: Nemozem ulozit udaje aktualneho spracovania"; +char *msg_dup_data= "Pozor: Najdene pravdepodobne duplicitne udaje"; + +/* DNS Stuff */ +char *msg_dns_nocf= "No cache file specified, aborting..."; +char *msg_dns_nodb= "Error: Unable to open DNS cache file"; +char *msg_dns_nolk= "Error: Unable to lock DNS cache file"; +char *msg_dns_usec= "Using DNS cache file"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "None to process"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Nemozem alokovat dostatok pamate, Naj Miesta su nefunkcne!"; +char *msg_nomem_tr= "Nemozem alokovat dostatok pamate, Naj Odkazovace su nefunkcne!"; +char *msg_nomem_tu= "Nemozem alokovat dostatok pamate, Naj URL-ka su nefunkcne!"; +char *msg_nomem_tc= "Nemozem alokovat dostatok pamate, Naj Krajiny su nefunkcne!"; +char *msg_nomem_ta= "Nemozem alokovat dostatok pamate, Naj Browsre su nefunkcne!"; +char *msg_nomem_tsr="Nemozem alokovat dostatok pamate, Naj Hladane texty su nefunkcne!"; +char *msg_nomem_ti= "Can't allocate enough memory, Top Usernames disabled!"; +char *msg_nomem_dh= "Chyba doplnenia bloku pocitaca (denne), preskakujem"; +char *msg_nomem_mh= "Chyba doplnenia bloku pocitaca (mesacne), preskakujem"; +char *msg_nomem_u = "Chyba doplnenia URL bloku, preskakujem"; +char *msg_nomem_a = "Chyba doplnenia bloku Browsra, preskakujem"; +char *msg_nomem_r = "Chyba doplnenia bloku Odkazovaca, preskakujem"; +char *msg_nomem_sc= "Chyba doplnenia bloku Hladanych textov, preskakujem"; +char *msg_nomem_i = "Error adding Username node, skipping"; + +/* log record errors */ +char *msg_big_rec = "Chyba: Preskakujem prilis dlhy log zaznam"; +char *msg_big_host= "Pozor: Orezavam prilis dlhe meno pocitaca"; +char *msg_big_date= "Pozor: Orezavam prilis dlhe pole datumu"; +char *msg_big_req = "Pozor: Orezavam prilis dlhe pole ziadosti"; +char *msg_big_ref = "Pozor: Orezavam prilis dlhe pole odkazovaca"; +char *msg_big_user= "Warning: Truncating oversized username"; +char *msg_big_one = "Pozor: Retazec prekrocil velkost ukladacieho miesta"; + +/* misc errors */ +char *msg_no_open = "Chyba: Nemozem otvorit subor"; + +/* Help display... */ +char *h_usage1 = "Pouzitie"; +char *h_usage2 = "[volby] [log subor]"; +char *h_msg[]= { + "-h = vypis tento help" , + "-V = vypis informacie o verzii" , + "-v = be verbose" , + "-d = vypis dalsie ladiace informacie" , + "-F type = Log type. type= (clf | ftp | squid | w3c)", + "-f = oprav chyby postupnosti" , + "-i = ignoruj subor historie" , + "-p = zapamataj stav (inkrementalne)" , + "-b = ignoruj stav (inkrementalne)" , + "-q = potlac informativne spravy" , + "-Q = potlac VSETKY spravy" , + "-Y = potlac graf krajin" , + "-G = potlac hodinovy graf" , + "-H = potlac hodinove statistiky" , + "-L = potlac farebne kodovanu legendu grafu", + "-l poc = kresli poc ciar v pozadi grafu" , + "-m form = timeout 1 navstevy (seconds)" , + "-T = vypis casove informacie" , + "-c file = pouzi konfig. subor 'file'" , + "-n name = pouzi meno pocitaca" , + "-o adr = vystupny adresar" , + "-t name = nazov zostavy 'name'" , + "-a name = skry browser 'name'" , + "-r name = skry odkazovac 'name'" , + "-s name = skry miesto 'name'" , + "-u name = skry URL 'name'" , + "-x name = skry priponu suboru 'name'" , + "-O name = Omit page 'name'" , + "-P name = pripona typu stranky 'name'" , + "-I name = prezyvka Index(u) 'name'" , + "-K poc = poc months in summary table" , + "-k poc = poc months in summary graph" , + "-A poc = Zobraz poc naj browserov" , + "-C poc = Zobraz poc naj krajin" , + "-R poc = Zobraz poc naj odkazovacov" , + "-S poc = Zobraz poc naj miest" , + "-U poc = Zobraz poc naj URL-iek" , + "-e poc = Zobraz poc naj vstupnych stran" , + "-E poc = Zobraz poc naj vystupnych stran" , + "-g poc = Group Domains to 'poc' levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Use DNS Cache file 'name'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Obdobie ¹tatistiky"; +char *msg_hhdr_gt = "Generované"; + +/* main index strings */ +char *msg_main_us = "©tatistiky vyu¾itia pre"; +/* char *msg_main_per= "Posledných 12 mesiacov"; */ +char *msg_main_per= "Mesaèný sumár"; +char *msg_main_sum= "Mesaèný sumár"; +char *msg_main_da = "Denný priemer"; +char *msg_main_mt = "Mesaèné súèty"; + +/* month HTML page strings */ +char *msg_hmth_du = "Denné vyu¾itie za"; +char *msg_hmth_hu = "Hodinové vyu¾itie za"; + +/* table header strings */ +char *msg_h_by = "podµa"; +char *msg_h_avg = "priem"; +char *msg_h_max = "max"; +char *msg_h_total = "celkom"; +char *msg_h_totals= "celkom"; +char *msg_h_day = "deò"; +char *msg_h_mth = "mesiac"; +char *msg_h_hour = "hodina"; +char *msg_h_hits = "zásahov"; +char *msg_h_pages = "strán"; +char *msg_h_visits= "náv¹tev"; +char *msg_h_files = "súborov"; +char *msg_h_sites = "miest"; +char *msg_h_xfer = "kBytov"; +char *msg_h_hname = "poèítaè"; +char *msg_h_url = "URL"; +char *msg_h_agent = "prehliadaè"; +char *msg_h_ref = "odkazovaè"; +char *msg_h_ctry = "krajina"; +char *msg_h_search= "hµadaný text"; +char *msg_h_uname = "u¾ivateµ"; + +/* links along top of page */ +char *msg_hlnk_ds = "Denné ¹tatistiky"; +char *msg_hlnk_hs = "Hodinové ¹tatistiky"; +char *msg_hlnk_u = "URL-ky"; +char *msg_hlnk_s = "Miesta"; +char *msg_hlnk_a = "Prehliadaèe"; +char *msg_hlnk_c = "Krajiny"; +char *msg_hlnk_r = "Odkazovaèe"; +char *msg_hlnk_en = "Vstupy"; +char *msg_hlnk_ex = "Výstupy"; +char *msg_hlnk_sr = "Hµadané"; +char *msg_hlnk_i = "U¾ivatelia"; + +/* monthly total table */ +char *msg_mtot_ms = "Mesaèné ¹tatistiky za"; +char *msg_mtot_th = "Celkom zásahov"; +char *msg_mtot_tf = "Celkom súborov"; +char *msg_mtot_tx = "Celkom kBytov"; +char *msg_mtot_us = "Celkom jedineèných miest"; +char *msg_mtot_ur = "Celkom jedineèných odkazovaèov"; +char *msg_mtot_ua = "Celkom jedineèných Browsrov"; +char *msg_mtot_uu = "Celkom jedineèných URL-iek"; +char *msg_mtot_ui = "Celkom jedineèných uzivatelov"; +char *msg_mtot_mhd= "Zásahov za deò"; +char *msg_mtot_mhh= "Zásahov za hodinu"; +char *msg_mtot_mfd= "Súborov za deò"; +char *msg_mtot_mpd= "Stránok za deò"; +char *msg_mtot_msd= "Miest za deò"; +char *msg_mtot_mvd= "Náv¹tev za deò"; +char *msg_mtot_mkd= "kBytov za deò"; +char *msg_mtot_rc = "Zásahy podµa kódu odpovede"; + +/* daily total table */ +char *msg_dtot_ds = "Denné ¹tatistiky za"; + +/* hourly total table */ +char *msg_htot_hs = "Hodinové ¹tatistiky za"; + +/* country pie chart */ +char *msg_ctry_use= "Vyu¾itie podµa krajiny"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Naj"; +char *msg_top_of = "z"; +char *msg_top_s = "miest celkom"; +char *msg_top_u = "URL-iek celkom"; +char *msg_top_r = "odkazovaèov celkom"; +char *msg_top_a = "prehliadaèov celkom"; +char *msg_top_c = "krajín celkom"; +char *msg_top_en = "vstupných strán celkom"; +char *msg_top_ex = "výstupných strán celkom"; +char *msg_top_sr = "hµadaných textov celkom"; +char *msg_top_i = "Celkovo u¾ivatelov"; +char *msg_v_sites = "Zobraz v¹etky miesta"; +char *msg_v_urls = "Zobraz v¹etky Url-ka"; +char *msg_v_refs = "Zobraz v¹etkych odkazovatelov"; +char *msg_v_agents= "Zobraz v¹etkých klientov"; +char *msg_v_search= "Zobraz v¹etky re»azce vyhladavania"; +char *msg_v_users = "Zobraz v¹etkých u¾ivatelov"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Jan", "Feb", "Mar", + "Apr", "Maj", "Jun", + "Jul", "Aug", "Sep", + "Okt", "Nov", "Dec"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Január", "Február", "Marec", "Apríl", + "Máj", "Jún", "Júl", "August", + "September","Október", "November","December"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Undefined response code", 0 }, + { "Code 100 - Continue", 0 }, + { "Code 101 - Switching Protocols", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Created", 0 }, + { "Code 202 - Accepted", 0 }, + { "Code 203 - Non-Authoritative Information", 0 }, + { "Code 204 - No Content", 0 }, + { "Code 205 - Reset Content", 0 }, + { "Code 206 - Partial Content", 0 }, + { "Code 300 - Multiple Choices", 0 }, + { "Code 301 - Moved Permanently", 0 }, + { "Code 302 - Found", 0 }, + { "Code 303 - See Other", 0 }, + { "Code 304 - Not Modified", 0 }, + { "Code 305 - Use Proxy", 0 }, + { "Code 307 - Moved Temporarily", 0 }, + { "Code 400 - Bad Request", 0 }, + { "Code 401 - Unauthorized", 0 }, + { "Code 402 - Payment Required", 0 }, + { "Code 403 - Forbidden", 0 }, + { "Code 404 - Not Found", 0 }, + { "Code 405 - Method Not Allowed", 0 }, + { "Code 406 - Not Acceptable", 0 }, + { "Code 407 - Proxy Authentication Required", 0 }, + { "Code 408 - Request Timeout", 0 }, + { "Code 409 - Conflict", 0 }, + { "Code 410 - Gone", 0 }, + { "Code 411 - Length Required", 0 }, + { "Code 412 - Precondition Failed", 0 }, + { "Code 413 - Request Entity Too Large", 0 }, + { "Code 414 - Request-URI Too Long", 0 }, + { "Code 415 - Unsupported Media Type", 0 }, + { "Code 416 - Requested Range Not Satisfiable", 0 }, + { "Code 417 - Expectation Failed", 0 }, + { "Code 500 - Internal Server Error", 0 }, + { "Code 501 - Not Implemented", 0 }, + { "Code 502 - Bad Gateway", 0 }, + { "Code 503 - Service Unavailable", 0 }, + { "Code 504 - Gateway Timeout", 0 }, + { "Code 505 - HTTP Version Not Supported", 0 } }; + +char *msg_title = "©tatistiky vyu¾itia pre"; +char *msg_h_other = "Iné"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Nezistena/neznama", 0,0,0 }, +{ IDX_3C('c','o','m'), "Komercna (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Aakademicka (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "US vladna (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "Medzinarodna (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "US vojenska (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Siet (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Neziskova organizacia (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Zastaralo Arpanet (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Nato (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andora", 0,0,0 }, +{ IDX_2C('a','e'), "Spojene Arabske Emiraty", 0,0,0 }, +{ IDX_2C('a','f'), "Afghanistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua and Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albansko", 0,0,0 }, +{ IDX_2C('a','m'), "Armensko", 0,0,0 }, +{ IDX_2C('a','n'), "Holandske Antily", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarktida", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "Americka Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Rakusko", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbajdzan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosna a Hercegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Banglades", 0,0,0 }, +{ IDX_2C('b','e'), "Belgicko", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulharsko", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrajn", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brazilia", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamy", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Island", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Bielorusko", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Kanada", 0,0,0 }, +{ IDX_2C('c','c'), "Cocos (Keeling) Islands", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Stredo-africka republika", 0,0,0 }, +{ IDX_2C('c','g'), "Kongo", 0,0,0 }, +{ IDX_2C('c','h'), "Svajciarsko", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire (Ivory Coast)", 0,0,0 }, +{ IDX_2C('c','k'), "Cookove ostrovy", 0,0,0 }, +{ IDX_2C('c','l'), "Cile", 0,0,0 }, +{ IDX_2C('c','m'), "Camerun", 0,0,0 }, +{ IDX_2C('c','n'), "Cina", 0,0,0 }, +{ IDX_2C('c','o'), "Kolumbia", 0,0,0 }, +{ IDX_2C('c','r'), "Kostarika", 0,0,0 }, +{ IDX_2C('c','u'), "Kuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Vianocne ostrovy", 0,0,0 }, +{ IDX_2C('c','y'), "Cyprus", 0,0,0 }, +{ IDX_2C('c','z'), "Ceska republika", 0,0,0 }, +{ IDX_2C('d','e'), "Nemecko", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Dansko", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Dominikanska republika", 0,0,0 }, +{ IDX_2C('d','z'), "Alzirsko", 0,0,0 }, +{ IDX_2C('e','c'), "Ekvador", 0,0,0 }, +{ IDX_2C('e','e'), "Estonsko", 0,0,0 }, +{ IDX_2C('e','g'), "Egypt", 0,0,0 }, +{ IDX_2C('e','h'), "Zapadna Sahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Spanielsko", 0,0,0 }, +{ IDX_2C('e','t'), "Etiopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finsko", 0,0,0 }, +{ IDX_2C('f','j'), "Fidzi", 0,0,0 }, +{ IDX_2C('f','k'), "Falklandske ostrovy (Malviny)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronezia", 0,0,0 }, +{ IDX_2C('f','o'), "Faroe Islands", 0,0,0 }, +{ IDX_2C('f','r'), "Francuzsko", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Velka Britania (GB)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Gruzinsko", 0,0,0 }, +{ IDX_2C('g','f'), "Francuzska Guajana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Gronsko", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Equatorial Guinea", 0,0,0 }, +{ IDX_2C('g','r'), "Grecko", 0,0,0 }, +{ IDX_2C('g','s'), "Sv. Georgia a Sv. Sandwich ostr.", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hongkong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard a McDonald ostrovy", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Chorvatsko", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Madarsko", 0,0,0 }, +{ IDX_2C('i','d'), "Indonezia", 0,0,0 }, +{ IDX_2C('i','e'), "Irsko", 0,0,0 }, +{ IDX_2C('i','l'), "Izrael", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "India", 0,0,0 }, +{ IDX_2C('i','o'), "British Indian Ocean Territory", 0,0,0 }, +{ IDX_2C('i','q'), "Irak", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Island", 0,0,0 }, +{ IDX_2C('i','t'), "Taliansko", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaika", 0,0,0 }, +{ IDX_2C('j','o'), "Jordan", 0,0,0 }, +{ IDX_2C('j','p'), "Japonsko", 0,0,0 }, +{ IDX_2C('k','e'), "Kena", 0,0,0 }, +{ IDX_2C('k','g'), "Kirgizstan", 0,0,0 }, +{ IDX_2C('k','h'), "Kambodza", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts and Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Korea (Severna)", 0,0,0 }, +{ IDX_2C('k','r'), "Korea (Juzna)", 0,0,0 }, +{ IDX_2C('k','w'), "Kuvait", 0,0,0 }, +{ IDX_2C('k','y'), "Kajmanske ostrovy", 0,0,0 }, +{ IDX_2C('k','z'), "Kazachstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Libanon", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstainsko", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lithuania", 0,0,0 }, +{ IDX_2C('l','u'), "Luxemburg", 0,0,0 }, +{ IDX_2C('l','v'), "Liotyssko", 0,0,0 }, +{ IDX_2C('l','y'), "Libia", 0,0,0 }, +{ IDX_2C('m','a'), "Moroko", 0,0,0 }, +{ IDX_2C('m','c'), "Monako", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagaskar", 0,0,0 }, +{ IDX_2C('m','h'), "Marsalove ostrovy", 0,0,0 }, +{ IDX_2C('m','k'), "Macedonsko", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolsko", 0,0,0 }, +{ IDX_2C('m','o'), "Macao", 0,0,0 }, +{ IDX_2C('m','p'), "Northern Mariana Islands", 0,0,0 }, +{ IDX_2C('m','q'), "Martinik", 0,0,0 }, +{ IDX_2C('m','r'), "Mauretania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauricius", 0,0,0 }, +{ IDX_2C('m','v'), "Maledivy", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexiko", 0,0,0 }, +{ IDX_2C('m','y'), "Malajzia", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambik", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "Nova Kaledonia", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Island", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nikaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Holandsko", 0,0,0 }, +{ IDX_2C('n','o'), "Norsko", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "Novy Zeland", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "Francuzska Polynezia", 0,0,0 }, +{ IDX_2C('p','g'), "Papua Nova Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Filipiny", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Polsko", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre and Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Portoriko", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugalsko", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguaj", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Rumunsko", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Ruska federacia", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saudska Arabia", 0,0,0 }, +{ IDX_2C('s','b'), "Solomon Islands", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Svedsko", 0,0,0 }, +{ IDX_2C('s','g'), "Singapur", 0,0,0 }, +{ IDX_2C('s','h'), "Sv. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovinsko", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbard and Jan Mayen Islands", 0,0,0 }, +{ IDX_2C('s','k'), "Slovenska republika", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalsko", 0,0,0 }, +{ IDX_2C('s','r'), "Surinam", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome and Principe", 0,0,0 }, +{ IDX_2C('s','u'), "ZSSR", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Svazijsko", 0,0,0 }, +{ IDX_2C('t','c'), "Turks and Caicos Islands", 0,0,0 }, +{ IDX_2C('t','d'), "Cad", 0,0,0 }, +{ IDX_2C('t','f'), "French Southern Territories", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Thajsko", 0,0,0 }, +{ IDX_2C('t','j'), "Tadzikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmensko", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisko", 0,0,0 }, +{ IDX_2C('t','o'), "Tongo", 0,0,0 }, +{ IDX_2C('t','p'), "Vychodny Tumor", 0,0,0 }, +{ IDX_2C('t','r'), "Turecko", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad a Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraina", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "Velka Britania (UK)", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying Islands", 0,0,0 }, +{ IDX_2C('u','s'), "USA (US)", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatikan", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent and the Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Panenske Ostrovy (Britske)", 0,0,0 }, +{ IDX_2C('v','i'), "Panenske Ostrovy (U.S.)", 0,0,0 }, +{ IDX_2C('v','n'), "Vietnam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis and Futuna Islands", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Jemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Jugoslavia", 0,0,0 }, +{ IDX_2C('z','a'), "Juhoafricka republika", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.slovene b/lang/webalizer_lang.slovene new file mode 100644 index 0000000..111c25c --- /dev/null +++ b/lang/webalizer_lang.slovene @@ -0,0 +1,629 @@ +/* + webalizer_lang.slovene + + Webalizer V2.0x Language Support file for Slovene. + 10-Mar-2000 Created by Anton Setnikar - Turbosist d.o.o., Ljubljana + http://www.turbosist.si (version 2.00-12) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Slovene"; +char *langcode = "sl"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing Totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "records"; +char *msg_addresses="addresses"; +char *msg_ignored = "ignored"; +char *msg_bad = "bad"; +char *msg_in = "in"; +char *msg_seconds = "seconds"; + +/* progress and setup error messages */ +char *msg_log_err = "Error: Can't open log file"; +char *msg_log_use = "Using logfile"; +char *msg_dir_err = "Error: Can't change directory to"; +char *msg_dir_use = "Creating output in"; +char *msg_cur_dir = "current directory"; +char *msg_hostname= "Hostname for reports is"; +char *msg_ign_hist= "Ignoring previous history..."; +char *msg_no_hist = "History file not found..."; +char *msg_get_hist= "Reading history file..."; +char *msg_put_hist= "Saving history information..."; +char *msg_hist_err= "Error: Unable to write history file"; +char *msg_bad_hist= "Error: Ignoring invalid history record"; +char *msg_bad_conf= "Error: Unable to open configuration file"; +char *msg_bad_key = "Warning: Invalid keyword"; +char *msg_bad_date= "Error: Skipping record (bad date)"; +char *msg_ign_nscp= "Skipping Netscape header record"; +char *msg_bad_rec = "Skipping bad record"; +char *msg_no_vrec = "No valid records found!"; +char *msg_gen_rpt = "Generating report for"; +char *msg_gen_sum = "Generating summary report"; +char *msg_get_data= "Reading previous run data.."; +char *msg_put_data= "Saving current run data..."; +char *msg_no_data = "Previous run data not found..."; +char *msg_bad_data= "Error: Unable to restore run data"; +char *msg_data_err= "Error: Unable to save current run data"; +char *msg_dup_data= "Warning: Possible duplicate data found"; + +/* DNS Stuff */ +char *msg_dns_nocf= "No cache file specified, aborting..."; +char *msg_dns_nodb= "Error: Unable to open DNS cache file"; +char *msg_dns_nolk= "Error: Unable to lock DNS cache file"; +char *msg_dns_usec= "Using DNS cache file"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "None to process"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Can't allocate enough memory, Top Sites disabled!"; +char *msg_nomem_tr= "Can't allocate enough memory, Top Referrers disabled!"; +char *msg_nomem_tu= "Can't allocate enough memory, Top URLs disabled!"; +char *msg_nomem_tc= "Can't allocate enough memory, Top Countries disabled!"; +char *msg_nomem_ta= "Can't allocate enough memory, Top User Agents disabled!"; +char *msg_nomem_tsr="Can't allocate enough memory, Top Search Strings disabled!"; +char *msg_nomem_ti= "Can't allocate enough memory, Top Usernames disabled!"; +char *msg_nomem_dh= "Error adding host node (daily), skipping"; +char *msg_nomem_mh= "Error adding host node (monthly), skipping"; +char *msg_nomem_u = "Error adding URL node, skipping"; +char *msg_nomem_a = "Error adding User Agent node, skipping"; +char *msg_nomem_r = "Error adding Referrer node, skipping"; +char *msg_nomem_sc= "Error adding Search String Node, skipping"; +char *msg_nomem_i = "Error adding Username node, skipping"; + +/* log record errors */ +char *msg_big_rec = "Error: Skipping oversized log record"; +char *msg_big_host= "Warning: Truncating oversized hostname"; +char *msg_big_date= "Warning: Truncating oversized date field"; +char *msg_big_req = "Warning: Truncating oversized request field"; +char *msg_big_ref = "Warning: Truncating oversized referrer field"; +char *msg_big_user= "Warning: Truncating oversized username"; +char *msg_big_one = "Warning: String exceeds storage size"; + +/* misc errors */ +char *msg_no_open = "Error: Unable to open file"; + +/* Help display... */ +char *h_usage1 = "Usage"; +char *h_usage2 = "[options] [log file]"; +char *h_msg[]= { + "-h = print this help message" , + "-V = print version information" , + "-v = be verbose" , + "-d = print additional debug info" , + "-F type = Log type. type= (clf | ftp | squid | w3c)", + "-f = Fold sequence errors" , + "-i = ignore history file" , + "-p = preserve state (incremental)" , + "-b = ignore state (incremental)" , + "-q = supress informational messages" , + "-Q = supress _ALL_ messages" , + "-Y = supress country graph" , + "-G = supress hourly graph" , + "-H = supress hourly stats" , + "-L = supress color coded graph legends" , + "-l num = use num background lines on graph" , + "-m num = Visit timout value (seconds)" , + "-T = print timing information" , + "-c file = use configuration file 'file'" , + "-n name = hostname to use" , + "-o dir = output directory to use" , + "-t name = report title 'name'" , + "-a name = hide user agent 'name'" , + "-r name = hide referrer 'name'" , + "-s name = hide site 'name'" , + "-u name = hide URL 'name'" , + "-x name = Use filename extension 'name'" , + "-O name = Omit page 'name'" , + "-P name = Page type extension 'name'" , + "-I name = Index alias 'name'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Display num top agents" , + "-C num = Display num top countries" , + "-R num = Display num top referrers" , + "-S num = Display num top sites" , + "-U num = Display num top URLs" , + "-e num = Display num top Entry Pages" , + "-E num = Display num top Exit Pages" , + "-g num = Group Domains to 'num' levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Use DNS Cache file 'name'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Poroèilo za mesec"; +char *msg_hhdr_gt = "Izdelano"; + +/* main index strings */ +char *msg_main_us = "Povzetek dostopov za"; +/* char *msg_main_per= "Zadnjih 12 mesecev"; */ +char *msg_main_per= "Povzetek po mesecih"; +char *msg_main_sum= "Povzetek po mesecih"; +char *msg_main_da = "Dnevno povpreèje"; +char *msg_main_mt = "Meseèni seštevki"; + +/* month HTML page strings */ +char *msg_hmth_du = "Poroèilo po dnevih za"; +char *msg_hmth_hu = "Poroèilo po urah za"; + +/* table header strings */ +char *msg_h_by = "po"; +char *msg_h_avg = "povpr."; +char *msg_h_max = "Max"; +char *msg_h_total = "Skupaj"; +char *msg_h_totals= "Skupaj vsi"; +char *msg_h_day = "Dan"; +char *msg_h_mth = "Mesec"; +char *msg_h_hour = "Ura"; +char *msg_h_hits = "Zahtevkov"; +char *msg_h_pages = "Strani"; +char *msg_h_visits= "Obiskov"; +char *msg_h_files = "Datotek"; +char *msg_h_sites = "Po podroèjih"; +char *msg_h_xfer = "KB"; +char *msg_h_hname = "Gostitelj"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Brskalnik"; +char *msg_h_ref = "Napotitelj"; +char *msg_h_ctry = "Država"; +char *msg_h_search= "Iskani niz"; +char *msg_h_uname = "Uporabnik"; + +/* links along top of page */ +char *msg_hlnk_ds = "Dnevna statistika"; +char *msg_hlnk_hs = "Statistika po urah"; +char *msg_hlnk_u = "URLs"; +char *msg_hlnk_s = "Podroèja"; +char *msg_hlnk_a = "Agents"; +char *msg_hlnk_c = "Države"; +char *msg_hlnk_r = "Preusmeritev z"; +char *msg_hlnk_en = "Vstop"; +char *msg_hlnk_ex = "Izhod"; +char *msg_hlnk_sr = "Iskanje"; +char *msg_hlnk_i = "Uporabnikov"; + +/* monthly Skupaj table */ +char *msg_mtot_ms = "Meseèno poroèilo za"; +char *msg_mtot_th = "Skupaj zahtevkov"; +char *msg_mtot_tf = "Skupaj datotek"; +char *msg_mtot_tx = "Skupaj KB"; +char *msg_mtot_us = "Skupaj enkr. podroèij"; +char *msg_mtot_ur = "Skupaj enkr. napotiteljev"; +char *msg_mtot_ua = "Skupaj enkr. brskalnikov"; +char *msg_mtot_uu = "Skupaj enkr. URL-jev"; +char *msg_mtot_ui = "Skupaj enkr. uporab.imen"; +char *msg_mtot_mhd= "Zahtevkov dnevno"; +char *msg_mtot_mhh= "Zahtevkov na uro"; +char *msg_mtot_mfd= "Datotek dnevno"; +char *msg_mtot_mpd= "Strani dnevno"; +char *msg_mtot_msd= "Podroèij dnevno"; +char *msg_mtot_mvd= "Obiskov dnevno"; +char *msg_mtot_mkd= "KB dnevno"; +char *msg_mtot_rc = "Zahtevki po odzivnih kodah"; + +/* daily Skupaj table */ +char *msg_dtot_ds = "Dnevna statistika za"; + +/* hourly Skupaj table */ +char *msg_htot_hs = "Statistika po urah za"; + +/* country pie chart */ +char *msg_ctry_use= "Dostopi po državah za"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Skupaj something" */ +char *msg_top_top = "Prvih"; +char *msg_top_of = "od"; +char *msg_top_s = "(vseh) podroèij"; +char *msg_top_u = "(vseh) URL naslovov"; +char *msg_top_r = "(vseh) napotiteljev"; +char *msg_top_a = "(vseh) brskalnikov"; +char *msg_top_c = "(vseh) držav"; +char *msg_top_en = "(vseh) vstopnih strani"; +char *msg_top_ex = "(vseh) izhodnih strani"; +char *msg_top_sr = "(vseh) iskani nizi"; +char *msg_top_i = "(vseh) uporab.imen"; +char *msg_v_sites = "Pregled vseh podroèij"; +char *msg_v_urls = "Pregled vseh URL-jev"; +char *msg_v_refs = "Pregled vseh napotiteljev"; +char *msg_v_agents= "Pregled vseh UA"; +char *msg_v_search= "Pregled vseh iskanih nizov"; +char *msg_v_users = "Pregled vseh uporabnikov"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Jan", "Feb", "Mar", + "Apr", "Maj", "Jun", + "Jul", "Avg", "Sep", + "Okt", "Nov", "Dec"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Januar", "Februar", "Marec", "April", + "Maj", "Junij", "Julij", "Avgust", + "September","Oktober", "November","December"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Undefined response code", 0 }, + { "Code 100 - Continue", 0 }, + { "Code 101 - Switching Protocols", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Created", 0 }, + { "Code 202 - Accepted", 0 }, + { "Code 203 - Non-Authoritative Information", 0 }, + { "Code 204 - No Content", 0 }, + { "Code 205 - Reset Content", 0 }, + { "Code 206 - Partial Content", 0 }, + { "Code 300 - Multiple Choices", 0 }, + { "Code 301 - Moved Permanently", 0 }, + { "Code 302 - Found", 0 }, + { "Code 303 - See Other", 0 }, + { "Code 304 - Not Modified", 0 }, + { "Code 305 - Use Proxy", 0 }, + { "Code 307 - Moved Temporarily", 0 }, + { "Code 400 - Bad Request", 0 }, + { "Code 401 - Unauthorized", 0 }, + { "Code 402 - Payment Required", 0 }, + { "Code 403 - Forbidden", 0 }, + { "Code 404 - Not Found", 0 }, + { "Code 405 - Method Not Allowed", 0 }, + { "Code 406 - Not Acceptable", 0 }, + { "Code 407 - Proxy Authentication Required", 0 }, + { "Code 408 - Request Timeout", 0 }, + { "Code 409 - Conflict", 0 }, + { "Code 410 - Gone", 0 }, + { "Code 411 - Length Required", 0 }, + { "Code 412 - Precondition Failed", 0 }, + { "Code 413 - Request Entity Too Large", 0 }, + { "Code 414 - Request-URI Too Long", 0 }, + { "Code 415 - Unsupported Media Type", 0 }, + { "Code 416 - Requested Range Not Satisfiable", 0 }, + { "Code 417 - Expectation Failed", 0 }, + { "Code 500 - Internal Server Error", 0 }, + { "Code 501 - Not Implemented", 0 }, + { "Code 502 - Bad Gateway", 0 }, + { "Code 503 - Service Unavailable", 0 }, + { "Code 504 - Gateway Timeout", 0 }, + { "Code 505 - HTTP Version Not Supported", 0 } }; + +char *msg_title = "Statistika dostopov za spletni strežnik"; +char *msg_h_other = "Ostalo"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Nerešeni/Neznani", 0,0,0 }, +{ IDX_3C('c','o','m'), "Commercial (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Educational (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "US Government (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "International (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "US Military (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Network (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Non-Profit (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Address Routing (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Nato field (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "United Arab Emirates", 0,0,0 }, +{ IDX_2C('a','f'), "Afghanistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua and Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armenia", 0,0,0 }, +{ IDX_2C('a','n'), "Netherlands Antilles", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarctica", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "American Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Austria", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaijan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia and Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgium", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brazil", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Island", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Belarus", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Canada", 0,0,0 }, +{ IDX_2C('c','c'), "Cocos (Keeling) Islands", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Central African Republic", 0,0,0 }, +{ IDX_2C('c','g'), "Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Switzerland", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire (Ivory Coast)", 0,0,0 }, +{ IDX_2C('c','k'), "Cook Islands", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Cameroon", 0,0,0 }, +{ IDX_2C('c','n'), "China", 0,0,0 }, +{ IDX_2C('c','o'), "Colombia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Christmas Island", 0,0,0 }, +{ IDX_2C('c','y'), "Cyprus", 0,0,0 }, +{ IDX_2C('c','z'), "Czech Republic", 0,0,0 }, +{ IDX_2C('d','e'), "Germany", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Denmark", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Dominican Republic", 0,0,0 }, +{ IDX_2C('d','z'), "Algeria", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador", 0,0,0 }, +{ IDX_2C('e','e'), "Estonia", 0,0,0 }, +{ IDX_2C('e','g'), "Egypt", 0,0,0 }, +{ IDX_2C('e','h'), "Western Sahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Spain", 0,0,0 }, +{ IDX_2C('e','t'), "Ethiopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finland", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Falkland Islands (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronesia", 0,0,0 }, +{ IDX_2C('f','o'), "Faroe Islands", 0,0,0 }, +{ IDX_2C('f','r'), "France", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Great Britain (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgia", 0,0,0 }, +{ IDX_2C('g','f'), "French Guiana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Greenland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Equatorial Guinea", 0,0,0 }, +{ IDX_2C('g','r'), "Greece", 0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia and S. Sandwich Isls.", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard and McDonald Islands", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Croatia", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Hungary", 0,0,0 }, +{ IDX_2C('i','d'), "Indonesia", 0,0,0 }, +{ IDX_2C('i','e'), "Ireland", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "India", 0,0,0 }, +{ IDX_2C('i','o'), "British Indian Ocean Territory", 0,0,0 }, +{ IDX_2C('i','q'), "Iraq", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Iceland", 0,0,0 }, +{ IDX_2C('i','t'), "Italy", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Jordan", 0,0,0 }, +{ IDX_2C('j','p'), "Japan", 0,0,0 }, +{ IDX_2C('k','e'), "Kenya", 0,0,0 }, +{ IDX_2C('k','g'), "Kyrgyzstan", 0,0,0 }, +{ IDX_2C('k','h'), "Cambodia", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts and Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Korea, Democratic Republic of", 0,0,0 }, +{ IDX_2C('k','r'), "Korea, Republic of", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Cayman Islands", 0,0,0 }, +{ IDX_2C('k','z'), "Kazakhstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Lebanon", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lithuania", 0,0,0 }, +{ IDX_2C('l','u'), "Luxembourg", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia", 0,0,0 }, +{ IDX_2C('l','y'), "Libya", 0,0,0 }, +{ IDX_2C('m','a'), "Morocco", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Marshall Islands", 0,0,0 }, +{ IDX_2C('m','k'), "Macedonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolia", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Northern Mariana Islands", 0,0,0 }, +{ IDX_2C('m','q'), "Martinique", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldives", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexico", 0,0,0 }, +{ IDX_2C('m','y'), "Malaysia", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambique", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "New Caledonia", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Island", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Netherlands", 0,0,0 }, +{ IDX_2C('n','o'), "Norway", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "New Zealand", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "French Polynesia", 0,0,0 }, +{ IDX_2C('p','g'), "Papua New Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Philippines", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Poland", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre and Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Romania", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Russian Federation", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saudi Arabia", 0,0,0 }, +{ IDX_2C('s','b'), "Solomon Islands", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Sweden", 0,0,0 }, +{ IDX_2C('s','g'), "Singapore", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenia", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbard and Jan Mayen Islands", 0,0,0 }, +{ IDX_2C('s','k'), "Slovakia", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Suriname", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome and Principe", 0,0,0 }, +{ IDX_2C('s','u'), "Soviet Union", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Turks and Caicos Islands", 0,0,0 }, +{ IDX_2C('t','d'), "Chad", 0,0,0 }, +{ IDX_2C('t','f'), "French Southern Territories", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Thailand", 0,0,0 }, +{ IDX_2C('t','j'), "Tajikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisia", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Portuguese Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turkey", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad and Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraine", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "United Kingdom", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying Islands", 0,0,0 }, +{ IDX_2C('u','s'), "United States", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatican City State (Holy See)", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent and the Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Virgin Islands (British)", 0,0,0 }, +{ IDX_2C('v','i'), "Virgin Islands (U.S.)", 0,0,0 }, +{ IDX_2C('v','n'), "Viet Nam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis and Futuna Islands", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Yugoslavia", 0,0,0 }, +{ IDX_2C('z','a'), "South Africa", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0 , NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.spanish b/lang/webalizer_lang.spanish new file mode 100644 index 0000000..4704b15 --- /dev/null +++ b/lang/webalizer_lang.spanish @@ -0,0 +1,647 @@ +/* + webalizer_lang.spanish + + Webalizer V2.0x Language Support file for Spanish. + 29-May-1998 Translated by Alfredo Sola (alfredo@intelideas.com) + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 29-Jul-1998 Translation for most countries and 1.2 new strings + by (alfredo@intelideas.com) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 14-Apr-1999 Fixed missing comma, extra char (brad@mrunix.net) + 06-Jun-1999 Updated by Alfredo Sola for new strings + changed e-mail address (alfredo@intelideas.com) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 11-Agu-1999 Translation for more countries, eliminated HTML character + entities in countries names, other changes (jcouto@redsvn.com) + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 03-Apr-2002 Fixed "CX" country Luis Gonzalez Miranda (lgm@temuco.ecweb.cl) + 16-Apr-2002 Added missing translation and corrected mispelling errors + by (mi_cuenta@yahoo.com) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Spanish"; +char *langcode = "es"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "registros"; +char *msg_addresses="direcciones"; +char *msg_ignored = "ignorados"; +char *msg_bad = "erróneos"; +char *msg_in = "en"; +char *msg_seconds = "segundos"; + +/* progress and setup error messages */ +char *msg_log_err = "Error: No puedo abrir histórico"; +char *msg_log_use = "Utilizando histórico"; +char *msg_dir_err = "Error: no se puede cambiar al directorio"; +char *msg_dir_use = "Creando informe en"; +char *msg_cur_dir = "directorio actual"; +char *msg_hostname= "El nombre de máquina en el informe es"; +char *msg_ign_hist= "Ignorando registro anterior..."; +char *msg_no_hist = "No encuentro el archivo histórico..."; +char *msg_get_hist= "Leyendo archivo..."; +char *msg_put_hist= "Guardando información de archivo..."; +char *msg_hist_err= "Error: No puedo abrir el archivo histórico"; +char *msg_bad_hist= "Error: Ignorando un registro inválido en el archivo"; +char *msg_bad_conf= "Error: no puedo abrir el archivo de configuración"; +char *msg_bad_key = "Aviso: palabra clave errónea"; +char *msg_bad_date= "Error: ignorando registro (fecha errónea)"; +char *msg_ign_nscp= "Saltando registro de cabecera Netscape"; +char *msg_bad_rec = "Saltando registro erróneo"; +char *msg_no_vrec = "No encuentro ningún registro válido"; +char *msg_gen_rpt = "Generando informe de"; +char *msg_gen_sum = "Generando informe resumido"; +char *msg_get_data= "Leyendo datos de una ejecucion previa..."; +char *msg_put_data= "Grabando datos de la ejecucion actual..."; +char *msg_no_data = "Datos de ejecucion previa no encontrados..."; +/*char *msg_bad_data= "Registro de datos invalidos";*/ +char *msg_bad_data= "Error: No puedo cargar los datos de la corrida"; +char *msg_data_err= "Error: No puedo grabar los datos de la ejecucion actual"; +char *msg_dup_data= "Aviso: Posibles datos duplicados encontrados"; + +/* DNS Stuff */ +char *msg_dns_nocf= "No cache file specified, aborting..."; +char *msg_dns_nodb= "Error: Unable to open DNS cache file"; +char *msg_dns_nolk= "Error: Unable to lock DNS cache file"; +char *msg_dns_usec= "Using DNS cache file"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "None to process"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "No puedo reservar suficiente memoria, quito los principales sitios"; +char *msg_nomem_tr= "No puedo reservar suficiente memoria, quito los principales enlaces"; +char *msg_nomem_tu= "No puedo reservar suficiente memoria, quito los principales URLs"; +char *msg_nomem_tc= "No puedo reservar suficiente memoria, quito los principales países"; +char *msg_nomem_ta= "No puedo reservar suficiente memoria, quito los principales programas cliente"; +char *msg_nomem_tsr="No puedo reservar suficiente memoria, quito las principales cadenas de búsqueda"; +char *msg_nomem_ti= "No puedo reservar suficiente memoria, quito los principales usuarios"; +char *msg_nomem_dh= "Error agregando nodo de servidor (diario), me lo salto"; +char *msg_nomem_mh= "Error agregando nodo de servidor (mensual), me lo salto"; +char *msg_nomem_u = "Error agregando nodo de URL, me lo salto"; +char *msg_nomem_a = "Error agregando nodo de navegador, me lo salto"; +char *msg_nomem_r = "Error agregando nodo de enlace origen, me lo salto"; +char *msg_nomem_sc= "Error agregando nodo de cadenas de búsqueda, me lo salto"; +char *msg_nomem_i = "Error agregando nodo de usuarios, me lo salto"; + +/* log record errors */ +char *msg_big_rec = "Error: Saltando registro de histórico demasiado grande"; +char *msg_big_host= "Aviso: Cortando nombre de máquina demasiado grande"; +char *msg_big_date= "Aviso: Cortando campo de fecha demasiado grande"; +char *msg_big_req = "Aviso: Cortando campo de petición demasiado grande"; +char *msg_big_ref = "Aviso: Cortando campo de enlace origen demasiado grande"; +char *msg_big_user= "Aviso: Cortando campo de usuario demasiado grande"; +char *msg_big_one = "Aviso: Una cadena sobrepasa el almacenamiento disponible"; + +/* misc errors */ +char *msg_no_open = "Error: No puedo abrir un archivo"; + +/* Help display... */ +char *h_usage1 = "Forma de uso"; +char *h_usage2 = "[opciones] [archivo histórico]"; +char *h_msg[]= { + "-h = mostrar este mensaje" , + "-V = ver información de versión" , + "-v = be verbose" , + "-d = mostrar información adicional para depuración" , + "-F type = Log type. type= (clf | ftp | squid | w3c)" , + "-f = procesa históricos fuera de secuencia (ver man)", + "-i = ignorar archivo" , + "-p = recordar estado (incremental)" , + "-b = ignorar estado (incremental)" , + "-q = suprimir mensajes de información" , + "-Q = suprimir TODOS los mensajes" , + "-Y = suprimir gráfico de países" , + "-G = suprimir gráfico por horas" , + "-H = suprimir estadísticas por horas" , + "-L = suprimir leyendas coloreadas de los gráficos", + "-l N = usar N líneas de fondo en los gráficos" , + "-m N = especificar temporizador de visitas (N segundos)", + "-T = mostrar información de tiempo de ejecución" , + "-c archivo= usar el archivo de configuración 'archivo'" , + "-n nombre = nombre de la máquina" , + "-o dir = directorio de salida" , + "-t nombre = titular el informe 'nombre'" , + "-a nombre = esconder el programa cliente 'nombre'" , + "-r nombre = esconder el enlace origen 'nombre'" , + "-s nombre = esconder el servidor 'nombre'" , + "-u nombre = esconder el URL 'nombre'" , + "-x nombre = usa extension de archivos 'nombre'" , + "-O nombre = Omit page 'nombre'" , + "-P nombre = usa extension de paginas 'nombre'" , + "-I nombre = Alias del indice 'nombre'" , + "-K n = n months in summary table" , + "-k n = n months in summary graph" , + "-A n = Mostrar los n primeros navegadores" , + "-C n = Mostrar los n primeros paises" , + "-R n = Mostrar los n primeros enlaces origen" , + "-S n = Mostrar los n primeros clientes" , + "-U n = Mostrar los n primeros URLs" , + "-e n = Mostrar las n primeras páginas de entrada" , + "-E n = Mostrar las n primeras páginas de salida" , + "-g n = Agrupar los Dominios a N niveles" , + "-X = Esconde la información de cada página" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D nombre = Usar el archivo cache de DNS 'nombre'" , + "-N n = Número de procesos DNS (0=deshabilitar)" , + "-j = Enable native GeoDB lookups" , + "-J nombre = Use GeoDB database 'nombre'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W nombre = Use GeoIP database 'nombre'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Período resumido"; +char *msg_hhdr_gt = "Generado el"; + +/* main index strings */ +char *msg_main_us = "Resumen de uso de"; +/* char *msg_main_per= "Últimos 12 meses"; */ +char *msg_main_per= "Resumen por meses"; +char *msg_main_sum= "Resumen por meses"; +char *msg_main_da = "Media diaria"; +char *msg_main_mt = "Totales mensuales"; + +/* month HTML page strings */ +char *msg_hmth_du = "Uso diario en"; +char *msg_hmth_hu = "Uso por horas en"; + +/* table header strings */ +char *msg_h_by = "Por"; +char *msg_h_avg = "Media"; +char *msg_h_max = "Max"; +char *msg_h_total = "Total"; +char *msg_h_totals= "Totales"; +char *msg_h_day = "Día"; +char *msg_h_mth = "Mes"; +char *msg_h_hour = "Hora"; +char *msg_h_hits = "Accesos"; +char *msg_h_pages = "Páginas"; +char *msg_h_visits= "Visitas"; +char *msg_h_files = "Archivos"; +char *msg_h_sites = "Clientes"; +char *msg_h_xfer = "KBytes"; +char *msg_h_hname = "Máquina"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Navegador"; +char *msg_h_ref = "Enlace origen"; +char *msg_h_ctry = "País"; +char *msg_h_search= "Cadena de Búsqueda"; +char *msg_h_uname = "Usuario"; + +/* links along top of page */ +char *msg_hlnk_ds = "Estadísticas diarias"; +char *msg_hlnk_hs = "Estadísticas por horas"; +char *msg_hlnk_u = "URLs"; +char *msg_hlnk_s = "Clientes"; +char *msg_hlnk_a = "Navegadores"; +char *msg_hlnk_c = "Países"; +char *msg_hlnk_r = "Enlaces origen"; +char *msg_hlnk_en = "Entrada"; +char *msg_hlnk_ex = "Salida"; +char *msg_hlnk_sr = "Búsqueda"; +char *msg_hlnk_i = "Usuarios"; + +/* monthly total table */ +char *msg_mtot_ms = "Estadísticas mensuales de"; +char *msg_mtot_th = "Total Accesos"; +char *msg_mtot_tf = "Total Archivos"; +char *msg_mtot_tx = "Total KBytes"; +char *msg_mtot_us = "Total Clientes"; +char *msg_mtot_ur = "Total Enlaces origen"; +char *msg_mtot_ua = "Total Navegadores"; +char *msg_mtot_uu = "Total URLs"; +char *msg_mtot_ui = "Total Usuarios Únicos"; +char *msg_mtot_mhd= "Accesos por Día"; +char *msg_mtot_mhh= "Accesos por Hora"; +char *msg_mtot_mfd= "Archivos por Día"; +char *msg_mtot_mpd= "Páginas por Día"; +char *msg_mtot_msd= "Clientes por Día"; +char *msg_mtot_mvd= "Visitas por Día"; +char *msg_mtot_mkd= "KBytes por Día"; +char *msg_mtot_rc = "Accesos por código de respuesta"; + +/* daily total table */ +char *msg_dtot_ds = "Estadísticas diarias de"; + +/* hourly total table */ +char *msg_htot_hs = "Estadísticas por hora de"; + +/* country pie chart */ +char *msg_ctry_use= "Accesos por país en"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Los"; +char *msg_top_of = "primeros de un total de"; +char *msg_top_s = "clientes"; +char *msg_top_u = "URLs"; +char *msg_top_r = "enlaces origen"; +char *msg_top_a = "programas de cliente"; +char *msg_top_c = "países"; +char *msg_top_en = "Total de Páginas de Entrada"; +char *msg_top_ex = "Total de Páginas de Salida"; +char *msg_top_sr = "Total de Cadenas de Búsqueda"; +char *msg_top_i = "Total de Usuarios"; +char *msg_v_sites = "Ver todos los Sitios"; +char *msg_v_urls = "Ver todos los enlaces"; +char *msg_v_refs = "Ver todos los Referentes"; +char *msg_v_agents= "Ver todos los Navegadores"; +char *msg_v_search= "Ver todas las Palabras de Búsqueda"; +char *msg_v_users = "Ver todos los Usuarios"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ + +char *s_month[12]={ "Ene", "Feb", "Mar", + "Abr", "May", "Jun", + "Jul", "Ago", "Sep", + "Oct", "Nov", "Dic"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Enero", "Febrero", "Marzo", "Abril", + "Mayo", "Junio", "Julio", "Agosto", + "Septiembre","Octubre", "Noviembre","Diciembre"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Código de respuesta indefinido", 0 }, + { "100 - Continúa", 0 }, + { "101 - Cambiando de protocolo", 0 }, + { "200 - OK", 0 }, + { "201 - Creado", 0 }, + { "202 - Aceptado", 0 }, + { "203 - Información no autorizada", 0 }, + { "204 - No hay contenido", 0 }, + { "205 - Contenido renovado", 0 }, + { "206 - Contenido parcial", 0 }, + { "300 - Varias opciones", 0 }, + { "301 - Movido permanentemente", 0 }, + { "302 - Encontrado", 0 }, + { "303 - Ver otros", 0 }, + { "304 - No modificado", 0 }, + { "305 - Utilizar proxy", 0 }, + { "307 - Movido temporalmente", 0 }, + { "400 - Petición errónea", 0 }, + { "401 - No autorizado", 0 }, + { "402 - Se requiere pago", 0 }, + { "403 - Prohibido", 0 }, + { "404 - No se encuentra", 0 }, + { "405 - Método no permitido", 0 }, + { "406 - No aceptable", 0 }, + { "407 - Se requiere autentificación de proxy", 0 }, + { "408 - Fin de tiempo de espera", 0 }, + { "409 - Conflicto", 0 }, + { "410 - Abandonado", 0 }, + { "411 - Se requiere longitud", 0 }, + { "412 - Falla la condición previa", 0 }, + { "413 - Entidad de petición demasiado grande", 0 }, + { "414 - URI de petición demasiado larga", 0 }, + { "415 - Medio no soportado", 0 }, + { "416 - No se puede satisfacer el rango pedido", 0 }, + { "417 - Falla lo que se esperaba", 0 }, + { "500 - Error interno del servidor", 0 }, + { "501 - No implementado", 0 }, + { "502 - Puerta de enlace incorrecta", 0 }, + { "503 - Servicio no disponible", 0 }, + { "504 - Fin de tiempo de espera para la puerta de enlace", 0 }, + { "505 - Versión de HTTP no soportada", 0 } }; + +char *msg_title = "Estadísticas de uso para"; +char *msg_h_other = "Otro"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "No resuelve/desconocido", 0,0,0 }, +{ IDX_3C('c','o','m'), "Comercial (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Educacion (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "Gobierno USA (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "Internacional (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "Ejército USA (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Red (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Organizaciones sin fines de lucro (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Address Routing (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"OTAN", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "Emiratos Arabes Unidos", 0,0,0 }, +{ IDX_2C('a','f'), "Afganistán", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua y Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armenia", 0,0,0 }, +{ IDX_2C('a','n'), "Antillas holandesas", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antártida", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "Samoa Americana", 0,0,0 }, +{ IDX_2C('a','t'), "Austria", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaiján", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Bélgica", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahraín", 0,0,0 }, +{ IDX_2C('b','i'), "Burundí", 0,0,0 }, +{ IDX_2C('b','j'), "Benín", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brasil", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhután", 0,0,0 }, +{ IDX_2C('b','v'), "Isla Bouvet", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Bielorusia", 0,0,0 }, +{ IDX_2C('b','z'), "Belice", 0,0,0 }, +{ IDX_2C('c','a'), "Canadá", 0,0,0 }, +{ IDX_2C('c','c'), "Islas Cocos (Keeling)", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "República Centroafricana", 0,0,0 }, +{ IDX_2C('c','g'), "Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Suiza", 0,0,0 }, +{ IDX_2C('c','i'), "Costa de Marfil", 0,0,0 }, +{ IDX_2C('c','k'), "Islas Cook", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Camerún", 0,0,0 }, +{ IDX_2C('c','n'), "China", 0,0,0 }, +{ IDX_2C('c','o'), "Colombia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cabo Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Isla Navidad", 0,0,0 }, +{ IDX_2C('c','y'), "Chipre", 0,0,0 }, +{ IDX_2C('c','z'), "República Checa", 0,0,0 }, +{ IDX_2C('d','e'), "Alemania", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Dinamarca", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "República Dominicana", 0,0,0 }, +{ IDX_2C('d','z'), "Argelia", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador", 0,0,0 }, +{ IDX_2C('e','e'), "Estonia", 0,0,0 }, +{ IDX_2C('e','g'), "Egipto", 0,0,0 }, +{ IDX_2C('e','h'), "Sahara Occidental", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "España", 0,0,0 }, +{ IDX_2C('e','t'), "Etiopía", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finlandia", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Malvinas", 0,0,0 }, +{ IDX_2C('f','m'), "Micronesia", 0,0,0 }, +{ IDX_2C('f','o'), "Islas Faroe", 0,0,0 }, +{ IDX_2C('f','r'), "Francia", 0,0,0 }, +{ IDX_2C('g','a'), "Gabón", 0,0,0 }, +{ IDX_2C('g','b'), "Gran Bretaña (Reino Unido)", 0,0,0 }, +{ IDX_2C('g','d'), "Granada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgia", 0,0,0 }, +{ IDX_2C('g','f'), "Guinea francesa", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Groenlandia", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadalupe", 0,0,0 }, +{ IDX_2C('g','q'), "Guinea Ecuatorial", 0,0,0 }, +{ IDX_2C('g','r'), "Grecia", 0,0,0 }, +{ IDX_2C('g','s'), "Islas S. Georgia y S. Sandwich", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Islas Heard y McDonald", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Croacia", 0,0,0 }, +{ IDX_2C('h','t'), "Haití", 0,0,0 }, +{ IDX_2C('h','u'), "Hungría", 0,0,0 }, +{ IDX_2C('i','d'), "Indonesia", 0,0,0 }, +{ IDX_2C('i','e'), "Irlanda", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "India", 0,0,0 }, +{ IDX_2C('i','o'), "Territorios Británicos del Océano Índico", 0,0,0 }, +{ IDX_2C('i','q'), "Iraq", 0,0,0 }, +{ IDX_2C('i','r'), "Irán", 0,0,0 }, +{ IDX_2C('i','s'), "Islandia", 0,0,0 }, +{ IDX_2C('i','t'), "Italia", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Jordania", 0,0,0 }, +{ IDX_2C('j','p'), "Japón", 0,0,0 }, +{ IDX_2C('k','e'), "Kenia", 0,0,0 }, +{ IDX_2C('k','g'), "Kyrgyzstán", 0,0,0 }, +{ IDX_2C('k','h'), "Camboya", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts y Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Corea del Norte", 0,0,0 }, +{ IDX_2C('k','r'), "Corea del Sur", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Islas Caimán", 0,0,0 }, +{ IDX_2C('k','z'), "Kazagistán", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Líbano", 0,0,0 }, +{ IDX_2C('l','c'), "Santa Lucía", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lituania", 0,0,0 }, +{ IDX_2C('l','u'), "Luxemburgo", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia", 0,0,0 }, +{ IDX_2C('l','y'), "Libia", 0,0,0 }, +{ IDX_2C('m','a'), "Marruecos", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldavia", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Islas Marshall", 0,0,0 }, +{ IDX_2C('m','k'), "Macedonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolia", 0,0,0 }, +{ IDX_2C('m','o'), "Macao", 0,0,0 }, +{ IDX_2C('m','p'), "Islas Marianas del Norte", 0,0,0 }, +{ IDX_2C('m','q'), "Martinica", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauricio", 0,0,0 }, +{ IDX_2C('m','v'), "Maldives", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "México", 0,0,0 }, +{ IDX_2C('m','y'), "Malasia", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambique", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "Nueva Caledonia", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Isla Norfolk", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Holanda", 0,0,0 }, +{ IDX_2C('n','o'), "Noruega", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "Nueva Zelanda", 0,0,0 }, +{ IDX_2C('o','m'), "Omán", 0,0,0 }, +{ IDX_2C('p','a'), "Panamá", 0,0,0 }, +{ IDX_2C('p','e'), "Perú", 0,0,0 }, +{ IDX_2C('p','f'), "Polinesia francesa", 0,0,0 }, +{ IDX_2C('p','g'), "Papúa Nueva Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Filipinas", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistán", 0,0,0 }, +{ IDX_2C('p','l'), "Polonia", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre y Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Isla Reunión", 0,0,0 }, +{ IDX_2C('r','o'), "Rumania", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Federacion Rusa", 0,0,0 }, +{ IDX_2C('r','w'), "Ruanda", 0,0,0 }, +{ IDX_2C('s','a'), "Arabia Saudita", 0,0,0 }, +{ IDX_2C('s','b'), "Islas Salomón", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudán", 0,0,0 }, +{ IDX_2C('s','e'), "Suecia", 0,0,0 }, +{ IDX_2C('s','g'), "Singapur", 0,0,0 }, +{ IDX_2C('s','h'), "Sta. Elena", 0,0,0 }, +{ IDX_2C('s','i'), "Eslovenia", 0,0,0 }, +{ IDX_2C('s','j'), "Islas Svalbard y Jan Mayen", 0,0,0 }, +{ IDX_2C('s','k'), "República Eslovaca", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leona", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Surinam", 0,0,0 }, +{ IDX_2C('s','t'), "Santo Tomas y Principe", 0,0,0 }, +{ IDX_2C('s','u'), "URSS (ant.)", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Swazilandia", 0,0,0 }, +{ IDX_2C('t','c'), "Islas Turcos y Caicos", 0,0,0 }, +{ IDX_2C('t','d'), "Chad", 0,0,0 }, +{ IDX_2C('t','f'), "Territorios Franceses del Sur", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Tailandia", 0,0,0 }, +{ IDX_2C('t','j'), "Tajikistán", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistán", 0,0,0 }, +{ IDX_2C('t','n'), "Tunez", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Portuguese Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turquía", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad y Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ucrania", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "Reino Unido", 0,0,0 }, +{ IDX_2C('u','m'), "Islas Menores Exteriores Norteamericanas", 0,0,0 }, +{ IDX_2C('u','s'), "Estados Unidos", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistán", 0,0,0 }, +{ IDX_2C('v','a'), "Ciudad Estado Vaticano (Sta. Sede)", 0,0,0 }, +{ IDX_2C('v','c'), "San Vincente y las Granadinas", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Islas Virgenes (Británicas)", 0,0,0 }, +{ IDX_2C('v','i'), "Islas Virgenes (U.S.A)", 0,0,0 }, +{ IDX_2C('v','n'), "Viet Nam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Islas Wallis y Futuna", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Yugoslavia", 0,0,0 }, +{ IDX_2C('z','a'), "Sudafrica", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0, NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.swedish b/lang/webalizer_lang.swedish new file mode 100644 index 0000000..fe644f8 --- /dev/null +++ b/lang/webalizer_lang.swedish @@ -0,0 +1,663 @@ +/* + webalizer_lang.swedish + + Webalizer V2.0x Language Support file for Swedish. + 15-May-1998 by Bradford L. Barrett (brad@mrunix.net) + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 03-Oct-1998 Swedish Translation by Daniel Bergstrom (daniel@bergstrom.net) + 28-Oct-1998 Lots of typos fixed, Daniel Bergstrom (daniel@bergstrom.net) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 26-Apr-1999 More typos fixed, thanks to "Mika Perälä" + (daniel@bergstrom.net) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 14-Oct-1999 Additional translation by David Cross (david.cross@forefront.net) + 22-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 01-Jun-2000 Modified/corrected by Joaquim Homrighausen (joho@webbplatsen.se) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + 14-nov-2008 Modifed for HTML-special chars (bengt@sm7jqb.se) + + Please fix all typos, or drop me a note and i will fix it and submit + patches upstream. /daniel + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Swedish"; +char *langcode = "sv"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "poster"; +char *msg_addresses="adresser"; +char *msg_ignored = "ignorerade"; +char *msg_bad = "felaktiga"; +char *msg_in = "i"; +char *msg_seconds = "sekunder"; + +/* progress and setup error messages */ +char *msg_log_err = "Fel: kan inte öppna loggfilen"; +char *msg_log_use = "Använder loggfil"; +char *msg_dir_err = "Fel: kan inte byta katalog till"; +char *msg_dir_use = "Skapar utdata i"; +char *msg_cur_dir = "aktuell katalog"; +char *msg_hostname= "Datornamn för rapporterna är"; +char *msg_ign_hist= "Ignorerar tidigare historia..."; +char *msg_no_hist = "Hittade inte historiefilen..."; +char *msg_get_hist= "Läser historiefil..."; +char *msg_put_hist= "Sparar historieinformation..."; +char *msg_hist_err= "Fel: kan inte skriva till historefil"; +char *msg_bad_hist= "Fel: Ignorerar felaktig historiepost"; +char *msg_bad_conf= "Fel: Kan inte öppna konfigurationsfilen"; +char *msg_bad_key = "Varning: Ogiltigt nyckelord"; +char *msg_bad_date= "Fel: hoppar över post (felaktigt datum)"; +char *msg_ign_nscp= "Hoppar över Netscape-specifik inledningsrad"; +char *msg_bad_rec = "Hoppar över felaktig post"; +char *msg_no_vrec = "Hittade inga giltiga poster!"; +char *msg_gen_rpt = "Genererar rapport för"; +char *msg_gen_sum = "Genererar översiktsinformation"; +char *msg_get_data= "Läser data om föregående genomgång..."; +char *msg_put_data= "Sparar data om denna genomgång..."; +char *msg_no_data = "Hittade inte data om föregående genomgång..."; +/*char *msg_bad_data= "Felaktig datapost";*/ +char *msg_bad_data= "Error: Unable to restore run data"; +char *msg_data_err= "Fel: kan inte spara data från denna omgång"; +char *msg_dup_data= "Varning: Hittar data som sannolikt är duplicerad"; + +/* DNS Stuff */ +char *msg_dns_nocf= "Ingen cachefil specificerad..."; +char *msg_dns_nodb= "Fel: Kan inte öppna DNS-cachefilen"; +char *msg_dns_nolk= "Fel: Kan inte låsa DNS-cachefilen"; +char *msg_dns_usec= "Använder DNS-cachefilen"; +char *msg_dns_rslv= "DNS Anrop"; +char *msg_dns_none= "Ingen att bearbeta"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Kan inte allokera minne, stänger av 'Top sites'"; +char *msg_nomem_tr= "Kan inte allokera minne, stänger av 'Top referrers'"; +char *msg_nomem_tu= "Kan inte allokera minne, stänger av 'Top URLs'"; +char *msg_nomem_tc= "Kan inte allokera minne, stänger av 'Top Countries'"; +char *msg_nomem_ta= "Kan inte allokera minne, stänger av 'Top User Agents'"; +char *msg_nomem_tsr="Kan inte allokera minne, stänger av 'Top Search Strings'"; +char *msg_nomem_ti= "Kan inte allokera minne, stänger av 'Top Usernames'"; +char *msg_nomem_dh= "Fel vid tillägg av dator i lista (daglig), hoppar över"; +char *msg_nomem_mh= "Fel vid tillägg av dator i lista (månatlig), hoppar över"; +char *msg_nomem_u = "Fel vid tillägg av URL i lista, hoppar över"; +char *msg_nomem_a = "Fel vid tillägg av klienttyp i lista, hoppar över"; +char *msg_nomem_r = "Fel vid tillägg av hänvisning i lista, hoppar över"; +char *msg_nomem_sc= "Fel vid tillägg av söksträng, hoppar över"; +char *msg_nomem_i = "Fel vid tillägg av användarnamn, hoppar över"; + +/* log record errors */ +char *msg_big_rec = "Fel: hoppar över för stor post i loggfil"; +char *msg_big_host= "Varning: Anpassar (kapar) för långt datornamn"; +char *msg_big_date= "Varning: Anpassar (kapar) för långt datumfält"; +char *msg_big_req = "Varning: Anpassar (kapar) för långt frågefält"; +char *msg_big_ref = "Varning: Anpassar (kapar) för långt hänvisningsfält"; +char *msg_big_user= "Warning: Anpassar (kapar) för långt användarnamn"; +char *msg_big_one = "Varning: Sträng överskrider storleken på lagringsutrymme"; + +/* misc errors */ +char *msg_no_open = "Fel: kan inte öppna fil"; + +/* Help display... */ +char *h_usage1 = "Användning"; +char *h_usage2 = "[flaggor] [loggfil]"; +char *h_msg[]= { + "-h = skriv hjälptext" , + "-V = skriv versionsinformation" , + "-v = be verbose" , + "-d = skriv ytterligare debuginformation" , + "-F typ = Loggtyp. typ= (clf | ftp | squid | w3c)", + "-f = hantera sekvensfel" , + "-i = ignorera historiefilen" , + "-p = bevara tillstånd (inkrementell)" , + "-b = ignorera tillstånd (inkrementell)" , + "-q = visa ej informationsmeddelanden" , + "-Q = visa ej någon information" , + "-Y = skapa ej graf för länder" , + "-G = skapa ej graf för timmar" , + "-H = skapa ej statistik för timmar" , + "-L = supress color coded graph legends" , + "-l num = skapa 'num' referenslinjer för grafer" , + "-m num = Visit timeout value (seconds)" , + "-T = skriv information om tidsåtgång" , + "-c fil = använd konfigurationsfilen 'fil'" , + "-n namn = datornamn att använda" , + "-o katalog = katalog för utmatning" , + "-t namn = använd 'namn' som titel" , + "-a namn = dölj användarklient 'namn'" , + "-r namn = dölj hänvisning 'namn'" , + "-s namn = dölj klientursprungsadress 'namn'" , + "-u namn = dölj URL 'namn'" , + "-x namn = Använd filnamnsändelse 'namn'" , + "-O namn = Omit page 'namn'" , + "-P namn = Page type extension 'namn'" , + "-I namn = ha 'namn' som alias till index.html" , + "-K antal = 'antal' months in summary table" , + "-k antal = 'antal' months in summary graph" , + "-A antal = visa 'antal' i listan över klienter" , + "-C antal = visa 'antal' i listan över länder" , + "-R antal = visa 'antal' i listan över hänvisningar", + "-S antal = visa 'antal' i ursprungsadress-listan" , + "-U antal = visa 'antal' i listan över URL-er" , + "-e antal = Visa 'antal' i listan över ingångssidor", + "-E antal = Visa 'antal' i listan över utgångssidor", + "-g antal = Group Domains to 'antal' levels" , + "-X = Göm individuella platser" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D namn = Använd DNS-cachfil 'namn'" , + "-N num = Antal DNS-processer (0=stäng av)" , + "-j = Enable native GeoDB lookups" , + "-J namn = Use GeoDB database 'namn'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W namn = Använd GeoIP databas 'namn'" , +#endif + NULL}; + +#define LAST_HLP_MSG (int)(sizeof(h_msg)/sizeof(char *)) + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ +/* Changed by Bengt Samuelsson */ +/* Å = Å Ä = Ä Ö = Ö */ +/* å = å ä = ä ö = ö */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Period för summering"; +char *msg_hhdr_gt = "Skapad"; + +/* main index strings */ +/* For libgd is no HTML letters */ +char *msg_main_us = "Summering för"; + +/* char *msg_main_per= "Senaste 12 månaderna"; */ +char *msg_main_per= "Summering månad för månad"; +char *msg_main_sum= "Summering månad för månad"; +char *msg_main_da = "Medel över dagen"; +char *msg_main_mt = "Månatliga summor"; + +/* month HTML page strings */ +/* For libgd is no HTML letters */ +char *msg_hmth_du = "Daglig användning för"; +char *msg_hmth_hu = "Användning timme för timme för"; + +/* table header strings */ +/* For libgd is no HTML letters */ +char *msg_h_by = "av"; +char *msg_h_avg = "Medel"; +char *msg_h_max = "Max"; +char *msg_h_total = "Summa"; +char *msg_h_totals= "Summor"; +char *msg_h_day = "Dag"; +// char *msg_h_mth = "Månad"; // HTML +char *msg_h_mth = "Månad"; // GD +char *msg_h_hour = "Timme"; +// char *msg_h_hits = "Träffar"; // HTML +char *msg_h_hits = "Träffar"; // GD +char *msg_h_pages = "Sidor"; +// char *msg_h_visits= "Besö."; // HTML +char *msg_h_visits= "Besök."; // GD +char *msg_h_files = "Filer"; +char *msg_h_sites = "Klient."; +char *msg_h_xfer = "kilobyte"; +// char *msg_h_hname = "Värdnamn"; // HTML +char *msg_h_hname = "Värdnamn"; // GD +char *msg_h_url = "URL"; +char *msg_h_agent = "Klienttyp"; +char *msg_h_ref = "Referens"; +char *msg_h_ctry = "Land"; +// char *msg_h_search= "Söksträng"; // HTML +char *msg_h_search= "Söksträng"; // GD +// char *msg_h_uname = "Användarnamn"; // HTML +char *msg_h_uname = "Användarnamn"; // GD + +/* links along top of page */ +char *msg_hlnk_ds = "Daglig statistik"; +char *msg_hlnk_hs = "Statistik timme för timme"; +char *msg_hlnk_u = "URLer"; +char *msg_hlnk_s = "Klientadresser"; +char *msg_hlnk_a = "Klienttyper"; +char *msg_hlnk_c = "Länder"; +char *msg_hlnk_r = "Hänvisare"; +char *msg_hlnk_en = "Ingång"; +char *msg_hlnk_ex = "Utgång"; +char *msg_hlnk_sr = "Sök"; +char *msg_hlnk_i = "Användare"; + +/* monthly total table */ +char *msg_mtot_ms = "Månatlig statistik för"; +char *msg_mtot_th = "Totalt antal träffar"; +char *msg_mtot_tf = "Totalt antal filer"; +char *msg_mtot_tx = "Totalt antal kilobytes"; +char *msg_mtot_us = "Totalt antal unika klientadresser"; +char *msg_mtot_ur = "Totalt antal unika hänvisningar"; +char *msg_mtot_ua = "Totalt antal unika klienttyper"; +char *msg_mtot_uu = "Totalt antal unika URLer"; +char *msg_mtot_ui = "Totalt antal unika användarnamn"; +char *msg_mtot_mhd= "Träffar per dag"; +char *msg_mtot_mhh= "Träffar per timme"; +char *msg_mtot_mfd= "Filer per dag"; +char *msg_mtot_mpd= "Sidor per dag"; +char *msg_mtot_msd= "Klientadresser per dag"; +char *msg_mtot_mvd= "Besök per dag"; +char *msg_mtot_mkd= "Kilobytes per dag"; +char *msg_mtot_rc = "Träffar sorterade efter svarskod"; + +/* daily total table */ +char *msg_dtot_ds = "Daglig statistik för"; + +/* hourly total table */ +char *msg_htot_hs = "Statistik timme för timme för"; + +/* country pie chart */ +/* For libgd is no HTML letters */ +char *msg_ctry_use= "Statsistik sorterat efter land för"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Vanligaste"; +char *msg_top_of = "av totalt"; +char *msg_top_s = "klientursprung"; +char *msg_top_u = "URLer"; +char *msg_top_r = "hänvisnigar"; +char *msg_top_a = "klienttyper"; +char *msg_top_c = "länder"; +char *msg_top_en = "totalt ingångssidor"; +char *msg_top_ex = "totalt utgångssidor"; +char *msg_top_sr = "totalt söksträngar"; +char *msg_top_i = "totalt användarnamn"; +char *msg_v_sites = "Visa Alla Sidor"; +char *msg_v_urls = "Visa Alla URLer"; +char *msg_v_refs = "Visa Alla Referenser"; +char *msg_v_agents= "Visa Alla Användar Agenter"; +char *msg_v_search= "Visa Alla Sök Strängar"; +char *msg_v_users = "Visa Alla Användarnamn"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Jan", "Feb", "Mar", + "Apr", "Maj", "Jun", + "Jul", "Aug", "Sep", + "Okt", "Nov", "Dec"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Januari", "Februari", "Mars", "April", + "Maj", "Juni", "Juli", "Augusti", + "September","Oktober", "November","December"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Oidentifierad svarskod", 0 }, + { "Kod 100 - Fortsätt", 0 }, + { "Kod 101 - Byter protokoll", 0 }, + { "Kod 200 - OK", 0 }, + { "Kod 201 - Skapad", 0 }, + { "Kod 202 - Accepterad", 0 }, + { "Kod 203 - Icke auktoritativ information", 0 }, + { "Kod 204 - Inget innehåll", 0 }, + { "Kod 205 - återställ innehåll", 0 }, + { "Kod 206 - Partiellt innehåll", 0 }, + { "Kod 300 - Multipla val", 0 }, + { "Kod 301 - Permanent flyttad", 0 }, + { "Kod 302 - Funnen", 0 }, + { "Kod 303 - Se annan", 0 }, + { "Kod 304 - Inte ändrad", 0 }, + { "Kod 305 - Använd proxy", 0 }, + { "Kod 307 - Tillfälligt flyttad", 0 }, + { "Kod 400 - Felaktig förfrågan", 0 }, + { "Kod 401 - Icke auktoriserad", 0 }, + { "Kod 402 - Betalning krävs", 0 }, + { "Kod 403 - Förbjuden", 0 }, + { "Kod 404 - Hittades ej", 0 }, + { "Kod 405 - Otillåten metod", 0 }, + { "Kod 406 - Icke accepterbar", 0 }, + { "Kod 407 - Verifiering från proxy krävs", 0 }, + { "Kod 408 - Förfrågan gick över tiden", 0 }, + { "Kod 409 - Konflikt", 0 }, + { "Kod 410 - Borta", 0 }, + { "Kod 411 - Behöver längd", 0 }, + { "Kod 412 - Misslyckades med villkor", 0 }, + { "Kod 413 - Förfrågeenhet för stor", 0 }, + { "Kod 414 - Förfråge-URI för lång", 0 }, + { "Kod 415 - Ej stödd medietyp", 0 }, + { "Kod 416 - Efterfrågat intervall ej möjligt",0 }, + { "Kod 417 - Expectation Failed", 0 }, + { "Kod 500 - Internt serverfel", 0 }, + { "Kod 501 - Ej implementerad", 0 }, + { "Kod 502 - Felaktig gateway", 0 }, + { "Kod 503 - Tjänsten otillgänglig", 0 }, + { "Kod 504 - Gateway gick över tiden", 0 }, + { "Kod 505 - denna HTTP-version stöds icke",0 } +}; + +char *msg_title = "Statistik över användning för"; +char *msg_h_other = "Annan"; + +/* Country codes (previously in ctry.h header file) */ +/* For libgd is no HTML letters */ +struct country_code ctry[] = { +{ 0, "Ej uppslagen/okänd",0,0,0 }, +{ IDX_3C('c','o','m'), "Kommersiell (com)",0,0,0 }, +{ IDX_3C('e','d','u'), "Utbildning (edu)",0,0,0 }, +{ IDX_3C('g','o','v'), "USA, staten (gov)",0,0,0 }, +{ IDX_3C('i','n','t'), "Interationell (int)",0,0,0 }, +{ IDX_3C('m','i','l'), "USA, militär (mil)",0,0,0 }, +{ IDX_3C('n','e','t'), "Nätverk (net)",0,0,0 }, +{ IDX_3C('o','r','g'), "Ideell organisation (org)",0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)",0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)",0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)",0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)",0,0,0 }, +{ IDX_4C('a','e','r','o'), "Air Transport Industry (aero)",0,0,0 }, +{ IDX_4C('a','s','i','a'), "Asia Pacific Community (asia)",0,0,0 }, +{ IDX_4C('c','o','o','p'), "Cooperative Association (coop)",0,0,0 }, +{ IDX_4C('i','n','f','o'), "Generic TLD (info)",0,0,0 }, +{ IDX_4C('j','o','b','s'), "Human Resources (jobs)",0,0,0 }, +{ IDX_4C('m','o','b','i'), "Generic Mobile TLD (mobi)",0,0,0 }, +{ IDX_4C('n','a','m','e'), "Individual (name)",0,0,0 }, +{ IDX_4C('a','r','p','a'), "Address Routing (arpa)",0,0,0 }, +{ IDX_4C('n','a','t','o'), "Nato (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'),"Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'),"Travel Ind. (travel)",0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island",0,0,0 }, +{ IDX_2C('a','d'), "Andorra",0,0,0 }, +{ IDX_2C('a','e'), "Förenade arabemiraten",0,0,0 }, +{ IDX_2C('a','f'), "Afganistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua and Barbuda",0,0,0 }, +{ IDX_2C('a','i'), "Anguilla",0,0,0 }, +{ IDX_2C('a','l'), "Albanien",0,0,0 }, +{ IDX_2C('a','m'), "Armenien",0,0,0 }, +{ IDX_2C('a','n'), "Nederländerna",0,0,0 }, +{ IDX_2C('a','o'), "Angola",0,0,0 }, +{ IDX_2C('a','q'), "Antarktis",0,0,0 }, +{ IDX_2C('a','r'), "Argentina",0,0,0 }, +{ IDX_2C('a','s'), "Amerikanska Samoa",0,0,0 }, +{ IDX_2C('a','t'), "Österrike",0,0,0 }, +{ IDX_2C('a','u'), "Australien",0,0,0 }, +{ IDX_2C('a','w'), "Aruba",0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands",0,0,0 }, +{ IDX_2C('a','z'), "Azerbadjan",0,0,0 }, +{ IDX_2C('b','a'), "Bosnien Herzegovina",0,0,0 }, +{ IDX_2C('b','b'), "Barbados",0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh",0,0,0 }, +{ IDX_2C('b','e'), "Belgien",0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso",0,0,0 }, +{ IDX_2C('b','g'), "Bulgarien",0,0,0 }, +{ IDX_2C('b','h'), "Bahrain",0,0,0 }, +{ IDX_2C('b','i'), "Burundi",0,0,0 }, +{ IDX_2C('b','j'), "Benin",0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy",0,0,0 }, +{ IDX_2C('b','m'), "Bermuda",0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam",0,0,0 }, +{ IDX_2C('b','o'), "Bolivia",0,0,0 }, +{ IDX_2C('b','r'), "Brazilien",0,0,0 }, +{ IDX_2C('b','s'), "Bahamas",0,0,0 }, +{ IDX_2C('b','t'), "Bhutan",0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Island",0,0,0 }, +{ IDX_2C('b','w'), "Botswana",0,0,0 }, +{ IDX_2C('b','y'), "Vitryssland",0,0,0 }, +{ IDX_2C('b','z'), "Belize",0,0,0 }, +{ IDX_2C('c','a'), "Kanada",0,0,0 }, +{ IDX_2C('c','c'), "Cocosöarna",0,0,0 }, +{ IDX_2C('c','d'), "Kongo, Democratic Republic",0,0,0 }, +{ IDX_2C('c','f'), "Centralafrikanska republiken",0,0,0 }, +{ IDX_2C('c','g'), "Kongo",0,0,0 }, +{ IDX_2C('c','h'), "Schweiz",0,0,0 }, +{ IDX_2C('c','i'), "Elfenbenskusten",0,0,0 }, +{ IDX_2C('c','k'), "Cook Öarna",0,0,0 }, +{ IDX_2C('c','l'), "Chile",0,0,0 }, +{ IDX_2C('c','m'), "Kamerun",0,0,0 }, +{ IDX_2C('c','n'), "Kina",0,0,0 }, +{ IDX_2C('c','o'), "Colombia",0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica",0,0,0 }, +{ IDX_2C('c','u'), "Kuba",0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde",0,0,0 }, +{ IDX_2C('c','x'), "Julön",0,0,0 }, +{ IDX_2C('c','y'), "Cypern",0,0,0 }, +{ IDX_2C('c','z'), "Tjeckien",0,0,0 }, +{ IDX_2C('d','e'), "Tyskland",0,0,0 }, +{ IDX_2C('d','j'), "Djibouti",0,0,0 }, +{ IDX_2C('d','k'), "Danmark",0,0,0 }, +{ IDX_2C('d','m'), "Dominica",0,0,0 }, +{ IDX_2C('d','o'), "Dominikanska Republiken",0,0,0 }, +{ IDX_2C('d','z'), "Algeriet",0,0,0 }, +{ IDX_2C('e','c'), "Ekvador",0,0,0 }, +{ IDX_2C('e','e'), "Estland",0,0,0 }, +{ IDX_2C('e','g'), "Egypten",0,0,0 }, +{ IDX_2C('e','h'), "Västsahara",0,0,0 }, +{ IDX_2C('e','r'), "Eritrea",0,0,0 }, +{ IDX_2C('e','s'), "Spanien",0,0,0 }, +{ IDX_2C('e','t'), "Etiopien",0,0,0 }, +{ IDX_2C('e','u'), "European Union",0,0,0 }, +{ IDX_2C('f','i'), "Finland",0,0,0 }, +{ IDX_2C('f','j'), "Fiji",0,0,0 }, +{ IDX_2C('f','k'), "Falklandsöarna",0,0,0 }, +{ IDX_2C('f','m'), "Mikronesien",0,0,0 }, +{ IDX_2C('f','o'), "Faraoöarna",0,0,0 }, +{ IDX_2C('f','r'), "Frankrike",0,0,0 }, +{ IDX_2C('g','a'), "Gabon",0,0,0 }, +{ IDX_2C('g','b'), "England",0,0,0 }, +{ IDX_2C('g','d'), "Grenada",0,0,0 }, +{ IDX_2C('g','e'), "Georgien",0,0,0 }, +{ IDX_2C('g','f'), "Franska Guiana",0,0,0 }, +{ IDX_2C('g','g'), "Guernsey",0,0,0 }, +{ IDX_2C('g','h'), "Ghana",0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar",0,0,0 }, +{ IDX_2C('g','l'), "Grönland",0,0,0 }, +{ IDX_2C('g','m'), "Gambia",0,0,0 }, +{ IDX_2C('g','n'), "Guinea",0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe",0,0,0 }, +{ IDX_2C('g','q'), "Ekvatorialguinea",0,0,0 }, +{ IDX_2C('g','r'), "Grekland",0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia och S. Sandwichöarna",0,0,0 }, +{ IDX_2C('g','t'), "Guatemala",0,0,0 }, +{ IDX_2C('g','u'), "Guam",0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau",0,0,0 }, +{ IDX_2C('g','y'), "Guyana",0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong",0,0,0 }, +{ IDX_2C('h','m'), "Heard- och McDonaldöarna",0,0,0 }, +{ IDX_2C('h','n'), "Honduras",0,0,0 }, +{ IDX_2C('h','r'), "Kroatien",0,0,0 }, +{ IDX_2C('h','t'), "Haiti",0,0,0 }, +{ IDX_2C('h','u'), "Ungern" ,0,0,0 }, +{ IDX_2C('i','d'), "Indonesien",0,0,0 }, +{ IDX_2C('i','e'), "Irland",0,0,0 }, +{ IDX_2C('i','l'), "Israel",0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man",0,0,0 }, +{ IDX_2C('i','n'), "Indien",0,0,0 }, +{ IDX_2C('i','o'), "Brittiska Indiska Osianien",0,0,0 }, +{ IDX_2C('i','q'), "Irak",0,0,0 }, +{ IDX_2C('i','r'), "Iran",0,0,0 }, +{ IDX_2C('i','s'), "Island",0,0,0 }, +{ IDX_2C('i','t'), "Italien",0,0,0 }, +{ IDX_2C('j','e'), "Jersey",0,0,0 }, +{ IDX_2C('j','m'), "Jamaica",0,0,0 }, +{ IDX_2C('j','o'), "Jordanien",0,0,0 }, +{ IDX_2C('j','p'), "Japan",0,0,0 }, +{ IDX_2C('k','e'), "Kenya",0,0,0 }, +{ IDX_2C('k','g'), "Kirgistan",0,0,0 }, +{ IDX_2C('k','h'), "Kambodja",0,0,0 }, +{ IDX_2C('k','i'), "Kiribati",0,0,0 }, +{ IDX_2C('k','m'), "Comoros",0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts och Nevis",0,0,0 }, +{ IDX_2C('k','p'), "Nord Korea",0,0,0 }, +{ IDX_2C('k','r'), "Syd Korea",0,0,0 }, +{ IDX_2C('k','w'), "Kuwait",0,0,0 }, +{ IDX_2C('k','y'), "Caymanöarna",0,0,0 }, +{ IDX_2C('k','z'), "Kazachstan",0,0,0 }, +{ IDX_2C('l','a'), "Laos",0,0,0 }, +{ IDX_2C('l','b'), "Libanon",0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia",0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein",0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka",0,0,0 }, +{ IDX_2C('l','r'), "Liberia",0,0,0 }, +{ IDX_2C('l','s'), "Lesotho",0,0,0 }, +{ IDX_2C('l','t'), "Litauen",0,0,0 }, +{ IDX_2C('l','u'), "Luxembourg",0,0,0 }, +{ IDX_2C('l','v'), "Lettland",0,0,0 }, +{ IDX_2C('l','y'), "Libyen",0,0,0 }, +{ IDX_2C('m','a'), "Marocco",0,0,0 }, +{ IDX_2C('m','c'), "Monaco",0,0,0 }, +{ IDX_2C('m','d'), "Moldavien",0,0,0 }, +{ IDX_2C('m','e'), "Montenegro",0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (Franska delen)",0,0,0 }, +{ IDX_2C('m','g'), "Malagasy",0,0,0 }, +{ IDX_2C('m','h'), "Marshallöarna",0,0,0 }, +{ IDX_2C('m','k'), "Makedonien",0,0,0 }, +{ IDX_2C('m','l'), "Mali",0,0,0 }, +{ IDX_2C('m','m'), "Myanmar",0,0,0 }, +{ IDX_2C('m','n'), "Mongoliet",0,0,0 }, +{ IDX_2C('m','o'), "Macau",0,0,0 }, +{ IDX_2C('m','p'), "Norra Marianaöarna",0,0,0 }, +{ IDX_2C('m','q'), "Martinique",0,0,0 }, +{ IDX_2C('m','r'), "Mauritania",0,0,0 }, +{ IDX_2C('m','s'), "Montserrat",0,0,0 }, +{ IDX_2C('m','t'), "Malta",0,0,0 }, +{ IDX_2C('m','u'), "Mauritius",0,0,0 }, +{ IDX_2C('m','v'), "Maldiverna",0,0,0 }, +{ IDX_2C('m','w'), "Malawi",0,0,0 }, +{ IDX_2C('m','x'), "Mexico",0,0,0 }, +{ IDX_2C('m','y'), "Malaysia",0,0,0 }, +{ IDX_2C('m','z'), "Mozambique",0,0,0 }, +{ IDX_2C('n','a'), "Namibia",0,0,0 }, +{ IDX_2C('n','c'), "Nya Caledonien",0,0,0 }, +{ IDX_2C('n','e'), "Niger",0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Island",0,0,0 }, +{ IDX_2C('n','g'), "Nigeria",0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua",0,0,0 }, +{ IDX_2C('n','l'), "Nederländerna",0,0,0 }, +{ IDX_2C('n','o'), "Norge",0,0,0 }, +{ IDX_2C('n','p'), "Nepal",0,0,0 }, +{ IDX_2C('n','r'), "Nauru",0,0,0 }, +{ IDX_2C('n','u'), "Niue",0,0,0 }, +{ IDX_2C('n','z'), "Nya Zeland",0,0,0 }, +{ IDX_2C('o','m'), "Oman",0,0,0 }, +{ IDX_2C('p','a'), "Panama",0,0,0 }, +{ IDX_2C('p','e'), "Peru",0,0,0 }, +{ IDX_2C('p','f'), "Franska Polynesien",0,0,0 }, +{ IDX_2C('p','g'), "Papua Nya Guinea",0,0,0 }, +{ IDX_2C('p','h'), "Filippinerna",0,0,0 }, +{ IDX_2C('p','k'), "Pakistan",0,0,0 }, +{ IDX_2C('p','l'), "Polen",0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre och Miquelon",0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn",0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico",0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied",0,0,0 }, +{ IDX_2C('p','t'), "Portugal",0,0,0 }, +{ IDX_2C('p','w'), "Palau",0,0,0 }, +{ IDX_2C('p','y'), "Paraguay",0,0,0 }, +{ IDX_2C('q','a'), "Qatar",0,0,0 }, +{ IDX_2C('r','e'), "Reunion",0,0,0 }, +{ IDX_2C('r','o'), "Rumänien",0,0,0 }, +{ IDX_2C('r','s'), "Serbien",0,0,0 }, +{ IDX_2C('r','u'), "Ryssland",0,0,0 }, +{ IDX_2C('r','w'), "Rwanda",0,0,0 }, +{ IDX_2C('s','a'), "Saudiarabien",0,0,0 }, +{ IDX_2C('s','b'), "Solomonöarna",0,0,0 }, +{ IDX_2C('s','c'), "Seychellerna",0,0,0 }, +{ IDX_2C('s','d'), "Sudan",0,0,0 }, +{ IDX_2C('s','e'), "Sverige",0,0,0 }, +{ IDX_2C('s','g'), "Singapor",0,0,0 }, +{ IDX_2C('s','h'), "St. Helena",0,0,0 }, +{ IDX_2C('s','i'), "Slovenien",0,0,0 }, +{ IDX_2C('s','j'), "Svalbard och Jan Mayen-öarna",0,0,0 }, +{ IDX_2C('s','k'), "Slovakien",0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone",0,0,0 }, +{ IDX_2C('s','m'), "San Marino",0,0,0 }, +{ IDX_2C('s','n'), "Senegal",0,0,0 }, +{ IDX_2C('s','o'), "Somalia",0,0,0 }, +{ IDX_2C('s','r'), "Surinam",0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome och Principe",0,0,0 }, +{ IDX_2C('s','u'), "Sovjet",0,0,0 }, +{ IDX_2C('s','v'), "El Salvador",0,0,0 }, +{ IDX_2C('s','y'), "Syrien",0,0,0 }, +{ IDX_2C('s','z'), "Swaziland",0,0,0 }, +{ IDX_2C('t','c'), "Turks och Caicosöarna",0,0,0 }, +{ IDX_2C('t','d'), "Chad",0,0,0 }, +{ IDX_2C('t','f'), "Södra Franska territorierna",0,0,0 }, +{ IDX_2C('t','g'), "Togo",0,0,0 }, +{ IDX_2C('t','h'), "Thailand",0,0,0 }, +{ IDX_2C('t','j'), "Tajikistan",0,0,0 }, +{ IDX_2C('t','k'), "Tokelau",0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste",0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan",0,0,0 }, +{ IDX_2C('t','n'), "Tunisien",0,0,0 }, +{ IDX_2C('t','o'), "Tonga",0,0,0 }, +{ IDX_2C('t','p'), "Östtimor",0,0,0 }, +{ IDX_2C('t','r'), "Turkiet",0,0,0 }, +{ IDX_2C('t','t'), "Trinidad och Tobago",0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu",0,0,0 }, +{ IDX_2C('t','w'), "Taiwan",0,0,0 }, +{ IDX_2C('t','z'), "Tanzania",0,0,0 }, +{ IDX_2C('u','a'), "Ukraina",0,0,0 }, +{ IDX_2C('u','g'), "Uganda",0,0,0 }, +{ IDX_2C('u','k'), "Storbritanien",0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying Islands",0,0,0 }, +{ IDX_2C('u','s'), "USA",0,0,0 }, +{ IDX_2C('u','y'), "Uruguay",0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan",0,0,0 }, +{ IDX_2C('v','a'), "Vatikanstaten",0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent och Grenadinerna",0,0,0 }, +{ IDX_2C('v','e'), "Venezuela",0,0,0 }, +{ IDX_2C('v','g'), "Jungfru-öarna (Brittiska)",0,0,0 }, +{ IDX_2C('v','i'), "Jungfru-öarna (Amerikanska)",0,0,0 }, +{ IDX_2C('v','n'), "Vietnam",0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu",0,0,0 }, +{ IDX_2C('w','f'), "Wallis och Futunaöarna",0,0,0 }, +{ IDX_2C('w','s'), "Samoa",0,0,0 }, +{ IDX_2C('y','e'), "Yemen",0,0,0 }, +{ IDX_2C('y','t'), "Mayotte",0,0,0 }, +{ IDX_2C('y','u'), "Jugoslavien",0,0,0 }, +{ IDX_2C('z','a'), "Sydafrika",0,0,0 }, +{ IDX_2C('z','m'), "Zambia",0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe",0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy",0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider",0,0,0 }, +{ IDX_2C('o','1'), "Other",0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region",0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)",0,0,0 }, +{ 0, NULL,0,0,0 } +}; diff --git a/lang/webalizer_lang.thai b/lang/webalizer_lang.thai new file mode 100644 index 0000000..9d16695 --- /dev/null +++ b/lang/webalizer_lang.thai @@ -0,0 +1,634 @@ +/* + webalizer_lang.thai + + Webalizer V2.0x Language Support file for Thai. + 15-May-1998 by Bradford L. Barrett (brad@mrunix.net) + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 16-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 06-Jun-2002 Thai translation by Mr.Piriya Jannoppakarn (piriya@pantip.com) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Thai"; +char *langcode = "th"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "ÃÐàºÕ¹"; +char *msg_addresses="áÍ´à´ÃÊ"; +char *msg_ignored = "¡àÇé¹"; +char *msg_bad = "àÊÕÂ"; +char *msg_in = "ã¹"; +char *msg_seconds = "ÇÔ¹Ò·Õ"; + +/* progress and setup error messages */ +char *msg_log_err = "¢éͼԴ¾ÅÒ´: äÁèÊÒÁÒöà»Ô´ä¿Åìä´é"; +char *msg_log_use = "ãªéä¿Åì"; +char *msg_dir_err = "¢éͼԴ¾ÅÒ´: äÁèÊÒÁÒöà»ÅÕè¹ä´àä·ÍÃÕä´é"; +char *msg_dir_use = "ÊÃéÒ§¼ÅÅѾ¸ìã¹"; +char *msg_cur_dir = "ä´àä·ÍÃջѨ¨ØºÑ¹"; +char *msg_hostname= "ÃÒ§ҹÊÓËÃѺâÎÊ"; +char *msg_ign_hist= "äÁèãªè¢éÍÁÙÅ¡è͹˹éÒ..."; +char *msg_no_hist = "äÁ辺¢éÍÁÙÅ¡è͹˹éÒ..."; +char *msg_get_hist= "¡ÓÅѧÍèÒ¹¢éÍÁÙÅ¡è͹˹éÒ..."; +char *msg_put_hist= "¡ÓÅѧºÑ¹·Ö¡¢éÍÁÙÅ¡è͹˹éÒ..."; +char *msg_hist_err= "¢éͼԴ¾ÅÒ´: äÁèÊÒÁÒöºÑ¹·Ö¡¢éÍÁÙÅ¡è͹˹éÒä´é"; +char *msg_bad_hist= "¢éͼԴ¾ÅÒ´: ¡àÇé¹¢éÍÁÙÅ¡è͹˹éÒ·Õèà¡çºäÁè¶Ù¡µéͧ"; +char *msg_bad_conf= "¢éͼԴ¾ÅÒ´: Unable to open configuration file"; +char *msg_bad_key = "¤Óàµ×͹: ¤ÕÂìàÇÔÃì´äÁè¶Ù¡µéͧ"; +char *msg_bad_date= "¢éͼԴ¾ÅÒ´: ¢éÒÁÃÐàºÕ¹ (Çѹ·ÕèäÁè¶Ù¡µéͧ)"; +char *msg_ign_nscp= "¢éÒÁÃÐàºÕ¹·Õèà¡çº¢éÍÁÙÅÊèǹËÑǢͧ Netscape"; +char *msg_bad_rec = "¢éÒÁÃÐàºÕ¹·ÕèäÁè¶Ù¡µéͧ"; +char *msg_no_vrec = "äÁ辺ÃÐàºÕ¹·Õè¶Ù¡µéͧ!"; +char *msg_gen_rpt = "¡ÓÅѧÊÃéÒ§ÃÒ§ҹÊÓËÃѺ"; +char *msg_gen_sum = "¡ÓÅѧÊÃØ»ÃÒ§ҹÊÓËÃѺ"; +char *msg_get_data= "¡ÓÅѧÍèÒ¹¢éÍÁÙÅ·ÕèàÃÕ¡ãªé¡è͹˹éÒ.."; +char *msg_put_data= "¡ÓÅѧºÑ¹·Ö¡¢éÍÁÙÅ·Õèãªé§Ò¹..."; +char *msg_no_data = "äÁ辺¢éÍÁÙÅ·ÕèàÃÕ¡ãªé¡è͹˹éÒ..."; +char *msg_bad_data= "¢éͼԴ¾ÅÒ´: äÁèÊÒÁÒöàÃÕ¡¤×¹¢éÍÁÙÅ·ÕèàÃÕ¡ãªé¡è͹˹éÒ"; +char *msg_data_err= "¢éͼԴ¾ÅÒ´: äÁèÊÒÁÒöºÑ¹·Ö¡¢éÍÁÙÅ·ÕèàÃÕ¡ãªéÍÂÙèä´é"; +char *msg_dup_data= "¤Óàµ×͹: à¡Ô´¢éÍÁÙÅ«éÓ«é͹"; + +/* DNS Stuff */ +char *msg_dns_nocf= "No cache file specified, aborting..."; +char *msg_dns_nodb= "Error: Unable to open DNS cache file"; +char *msg_dns_nolk= "Error: Unable to lock DNS cache file"; +char *msg_dns_usec= "Using DNS cache file"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "None to process"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "˹èǤÇÒÁ¨ÓäÁèà¾Õ§¾Í, äÁèÊÒÁÒöÊÃéÒ§ Top Sites ä´é!"; +char *msg_nomem_tr= "˹èǤÇÒÁ¨ÓäÁèà¾Õ§¾Í, äÁèÊÒÁÒöÊÃéÒ§ Top Referrers ä´é!"; +char *msg_nomem_tu= "˹èǤÇÒÁ¨ÓäÁèà¾Õ§¾Í, äÁèÊÒÁÒöÊÃéÒ§ Top URLs ä´é!"; +char *msg_nomem_tc= "˹èǤÇÒÁ¨ÓäÁèà¾Õ§¾Í, äÁèÊÒÁÒöÊÃéÒ§ Top Countries ä´é!"; +char *msg_nomem_ta= "˹èǤÇÒÁ¨ÓäÁèà¾Õ§¾Í, äÁèÊÒÁÒöÊÃéÒ§ Top User Agents ä´é!"; +char *msg_nomem_tsr="˹èǤÇÒÁ¨ÓäÁèà¾Õ§¾Í, äÁèÊÒÁÒöÊÃéÒ§ Top Search Strings ä´é!"; +char *msg_nomem_ti= "˹èǤÇÒÁ¨ÓäÁèà¾Õ§¾Í, äÁèÊÒÁÒöÊÃéÒ§ Top Usernames ä´é!"; +char *msg_nomem_dh= "Error adding host node (daily), skipping"; +char *msg_nomem_mh= "Error adding host node (monthly), skipping"; +char *msg_nomem_u = "Error adding URL node, skipping"; +char *msg_nomem_a = "Error adding User Agent node, skipping"; +char *msg_nomem_r = "Error adding Referrer node, skipping"; +char *msg_nomem_sc= "Error adding Search String Node, skipping"; +char *msg_nomem_i = "Error adding Username node, skipping"; + +/* log record errors */ +char *msg_big_rec = "Error: Skipping oversized log record"; +char *msg_big_host= "Warning: Truncating oversized hostname"; +char *msg_big_date= "Warning: Truncating oversized date field"; +char *msg_big_req = "Warning: Truncating oversized request field"; +char *msg_big_ref = "Warning: Truncating oversized referrer field"; +char *msg_big_user= "Warning: Truncating oversized username"; +char *msg_big_one = "Warning: String exceeds storage size"; + +/* misc errors */ +char *msg_no_open = "Error: Unable to open file"; + +/* Help display... */ +char *h_usage1 = "Usage"; +char *h_usage2 = "[options] [log file]"; +char *h_msg[]= { + "-h = print this help message" , + "-V = print version information" , + "-v = be verbose" , + "-d = print additional debug info" , + "-F type = Log type. type= (clf | ftp | squid | w3c)", + "-f = Fold sequence errors" , + "-i = ignore history file" , + "-p = preserve state (incremental)" , + "-b = ignore state (incremental)" , + "-q = supress informational messages" , + "-Q = supress _ALL_ messages" , + "-Y = supress country graph" , + "-G = supress hourly graph" , + "-H = supress hourly stats" , + "-L = supress color coded graph legends" , + "-l num = use num background lines on graph" , + "-m num = Visit timout value (seconds)" , + "-T = print timing information" , + "-c file = use configuration file 'file'" , + "-n name = hostname to use" , + "-o dir = output directory to use" , + "-t name = report title 'name'" , + "-a name = hide user agent 'name'" , + "-r name = hide referrer 'name'" , + "-s name = hide site 'name'" , + "-u name = hide URL 'name'" , + "-x name = Use filename extension 'name'" , + "-O name = Omit page 'name'" , + "-P name = Page type extension 'name'" , + "-I name = Index alias 'name'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Display num top agents" , + "-C num = Display num top countries" , + "-R num = Display num top referrers" , + "-S num = Display num top sites" , + "-U num = Display num top URLs" , + "-e num = Display num top Entry Pages" , + "-E num = Display num top Exit Pages" , + "-g num = Group Domains to 'num' levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Use DNS Cache file 'name'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "ÃÒ§ҹªèǧ"; +char *msg_hhdr_gt = "ÊÃéÒ§àÁ×èÍ"; + +/* main index strings */ +char *msg_main_us = "Usage summary for"; +/* char *msg_main_per= "12 à´×͹·Õè¼èÒ¹ÁÒ"; */ +char *msg_main_per= "ÊÃØ»ÃÒÂà´×͹"; +char *msg_main_sum= "ÊÃØ»ÃÒÂà´×͹"; +char *msg_main_da = "à©ÅÕèµèÍÇѹ"; +char *msg_main_mt = "ÃÇÁ·Ñé§à´×͹"; + +/* month HTML page strings */ +char *msg_hmth_du = "Daily usage for"; +char *msg_hmth_hu = "Hourly usage for"; + +/* table header strings */ +char *msg_h_by = "àÃÕ§µÒÁ"; +char *msg_h_avg = "à©ÅÕèÂ"; +char *msg_h_max = "ÊÙ§ÊØ´"; +char *msg_h_total = "ÃÇÁ"; +char *msg_h_totals= "ÃÇÁ·Ñé§ËÁ´"; +char *msg_h_day = "Çѹ"; +char *msg_h_mth = "à´×͹"; +char *msg_h_hour = "ªÑèÇâÁ§"; +char *msg_h_hits = "Hits"; +char *msg_h_pages = "Pages"; +char *msg_h_visits= "Visits"; +char *msg_h_files = "Files"; +char *msg_h_sites = "Sites"; +char *msg_h_xfer = "KBytes"; +char *msg_h_hname = "Hostname"; +char *msg_h_url = "URL"; +char *msg_h_agent = "User Agent"; +char *msg_h_ref = "Referrer"; +char *msg_h_ctry = "»ÃÐà·È"; +char *msg_h_search= "Search String"; +char *msg_h_uname = "Username"; + +/* links along top of page */ +char *msg_hlnk_ds = "ʶԵÔÃÒÂÇѹ"; +char *msg_hlnk_hs = "ʶԵÔÃÒªÑèÇâÁ§"; +char *msg_hlnk_u = "URL"; +char *msg_hlnk_s = "Site"; +char *msg_hlnk_a = "Agent"; +char *msg_hlnk_c = "»ÃÐà·È"; +char *msg_hlnk_r = "Referrer"; +char *msg_hlnk_en = "Entry"; +char *msg_hlnk_ex = "Exit"; +char *msg_hlnk_sr = "¤é¹ËÒ"; +char *msg_hlnk_i = "¼Ùéãªé"; + +/* monthly total table */ +char *msg_mtot_ms = "ʶԵÔÃÒÂà´×͹ÊÓËÃѺ"; +char *msg_mtot_th = "hit ·Ñé§ËÁ´"; +char *msg_mtot_tf = "ä¿Åì·Ñé§ËÁ´"; +char *msg_mtot_tx = "¡ÔâÅ亵ì·Ñé§ËÁ´"; +char *msg_mtot_us = "unique site ·Ñé§ËÁ´"; +char *msg_mtot_ur = "unique referrer ·Ñé§ËÁ´"; +char *msg_mtot_ua = "unique user agent ·Ñé§ËÁ´"; +char *msg_mtot_uu = "unique URL ·Ñé§ËÁ´"; +char *msg_mtot_ui = "¼Ùéãªé·Ñé§ËÁ´"; +char *msg_mtot_mhd= "hit µèÍÇѹ"; +char *msg_mtot_mhh= "hit µèͪÑèÇâÁ§"; +char *msg_mtot_mfd= "ä¿ÅìµèÍÇѹ"; +char *msg_mtot_mpd= "page µèÍÇѹ"; +char *msg_mtot_msd= "site µèÍÇѹ"; +char *msg_mtot_mvd= "visit µèÍÇѹ"; +char *msg_mtot_mkd= "¡ÔâºäºµìµèÍÇѹ"; +char *msg_mtot_rc = "hit µèÍ response Code"; + +/* daily total table */ +char *msg_dtot_ds = "ʶԵÔÃÒÂÇѹÊÓËÃѺ"; + +/* hourly total table */ +char *msg_htot_hs = "ʶԵÔÃÒªÑèÇâÁ§ÊÓËÃѺ"; + +/* country pie chart */ +char *msg_ctry_use= "Usage by Country for"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = ""; +char *msg_top_of = "Íѹ´Ñºáá¨Ò¡"; +char *msg_top_s = "Site ·Ñé§ËÁ´"; +char *msg_top_u = "URL ·Ñé§ËÁ´"; +char *msg_top_r = "Referrer ·Ñé§ËÁ´"; +char *msg_top_a = "User Agent ·Ñé§ËÁ´"; +char *msg_top_c = "»ÃÐà·È·Ñé§ËÁ´"; +char *msg_top_en = "Entry Page ·Ñé§ËÁ´"; +char *msg_top_ex = "Exit Page ·Ñé§ËÁ´"; +char *msg_top_sr = "Search String ·Ñé§ËÁ´"; +char *msg_top_i = "¼Ùéãªé·Ñé§ËÁ´"; +char *msg_v_sites = "áÊ´§ä«µì (site) ·Ñé§ËÁ´"; +char *msg_v_urls = "áÊ´§ URL ·Ñé§ËÁ´"; +char *msg_v_refs = "áÊ´§ Referrer ·Ñé§ËÁ´"; +char *msg_v_agents= "áÊ´§ User Agent ·Ñé§ËÁ´"; +char *msg_v_search= "áÊ´§ Search Strings ·Ñé§ËÁ´"; +char *msg_v_users = "áÊ´§¼Ùéãªé·Ñé§ËÁ´"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Jan", "Feb", "Mar", + "Apr", "May", "Jun", + "Jul", "Aug", "Sep", + "Oct", "Nov", "Dec"}; + +/* long month names - can be any length */ +char *l_month[12]={ "January", "February", "March", "April", + "May", "June", "July", "August", + "September","October", "November","December"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Undefined response code", 0 }, + { "Code 100 - Continue", 0 }, + { "Code 101 - Switching Protocols", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Created", 0 }, + { "Code 202 - Accepted", 0 }, + { "Code 203 - Non-Authoritative Information", 0 }, + { "Code 204 - No Content", 0 }, + { "Code 205 - Reset Content", 0 }, + { "Code 206 - Partial Content", 0 }, + { "Code 300 - Multiple Choices", 0 }, + { "Code 301 - Moved Permanently", 0 }, + { "Code 302 - Found", 0 }, + { "Code 303 - See Other", 0 }, + { "Code 304 - Not Modified", 0 }, + { "Code 305 - Use Proxy", 0 }, + { "Code 307 - Moved Temporarily", 0 }, + { "Code 400 - Bad Request", 0 }, + { "Code 401 - Unauthorized", 0 }, + { "Code 402 - Payment Required", 0 }, + { "Code 403 - Forbidden", 0 }, + { "Code 404 - Not Found", 0 }, + { "Code 405 - Method Not Allowed", 0 }, + { "Code 406 - Not Acceptable", 0 }, + { "Code 407 - Proxy Authentication Required", 0 }, + { "Code 408 - Request Timeout", 0 }, + { "Code 409 - Conflict", 0 }, + { "Code 410 - Gone", 0 }, + { "Code 411 - Length Required", 0 }, + { "Code 412 - Precondition Failed", 0 }, + { "Code 413 - Request Entity Too Large", 0 }, + { "Code 414 - Request-URI Too Long", 0 }, + { "Code 415 - Unsupported Media Type", 0 }, + { "Code 416 - Requested Range Not Satisfiable", 0 }, + { "Code 417 - Expectation Failed", 0 }, + { "Code 500 - Internal Server Error", 0 }, + { "Code 501 - Not Implemented", 0 }, + { "Code 502 - Bad Gateway", 0 }, + { "Code 503 - Service Unavailable", 0 }, + { "Code 504 - Gateway Timeout", 0 }, + { "Code 505 - HTTP Version Not Supported", 0 } }; + +char *msg_title = "ʶԵԡÒÃãªé§Ò¹ÊÓËÃѺ"; +char *msg_h_other = "Í×è¹ æ"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Unresolved/Unknown", 0,0,0 }, +{ IDX_3C('c','o','m'), "Commercial (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Educational (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "US Government (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "International (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "US Military (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Network (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Non-Profit (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Address Routing (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Nato field (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andorra", 0,0,0 }, +{ IDX_2C('a','e'), "United Arab Emirates", 0,0,0 }, +{ IDX_2C('a','f'), "Afghanistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua and Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albania", 0,0,0 }, +{ IDX_2C('a','m'), "Armenia", 0,0,0 }, +{ IDX_2C('a','n'), "Netherlands Antilles", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antarctica", 0,0,0 }, +{ IDX_2C('a','r'), "Argentina", 0,0,0 }, +{ IDX_2C('a','s'), "American Samoa", 0,0,0 }, +{ IDX_2C('a','t'), "Austria", 0,0,0 }, +{ IDX_2C('a','u'), "Australia", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbaijan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosnia and Herzegovina", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Bangladesh", 0,0,0 }, +{ IDX_2C('b','e'), "Belgium", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaria", 0,0,0 }, +{ IDX_2C('b','h'), "Bahrain", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivia", 0,0,0 }, +{ IDX_2C('b','r'), "Brazil", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamas", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Island", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Belarus", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Canada", 0,0,0 }, +{ IDX_2C('c','c'), "Cocos (Keeling) Islands", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Central African Republic", 0,0,0 }, +{ IDX_2C('c','g'), "Congo", 0,0,0 }, +{ IDX_2C('c','h'), "Switzerland", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire (Ivory Coast)", 0,0,0 }, +{ IDX_2C('c','k'), "Cook Islands", 0,0,0 }, +{ IDX_2C('c','l'), "Chile", 0,0,0 }, +{ IDX_2C('c','m'), "Cameroon", 0,0,0 }, +{ IDX_2C('c','n'), "China", 0,0,0 }, +{ IDX_2C('c','o'), "Colombia", 0,0,0 }, +{ IDX_2C('c','r'), "Costa Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Cuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Christmas Island", 0,0,0 }, +{ IDX_2C('c','y'), "Cyprus", 0,0,0 }, +{ IDX_2C('c','z'), "Czech Republic", 0,0,0 }, +{ IDX_2C('d','e'), "Germany", 0,0,0 }, +{ IDX_2C('d','j'), "Djibouti", 0,0,0 }, +{ IDX_2C('d','k'), "Denmark", 0,0,0 }, +{ IDX_2C('d','m'), "Dominica", 0,0,0 }, +{ IDX_2C('d','o'), "Dominican Republic", 0,0,0 }, +{ IDX_2C('d','z'), "Algeria", 0,0,0 }, +{ IDX_2C('e','c'), "Ecuador", 0,0,0 }, +{ IDX_2C('e','e'), "Estonia", 0,0,0 }, +{ IDX_2C('e','g'), "Egypt", 0,0,0 }, +{ IDX_2C('e','h'), "Western Sahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Spain", 0,0,0 }, +{ IDX_2C('e','t'), "Ethiopia", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finland", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Falkland Islands (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronesia", 0,0,0 }, +{ IDX_2C('f','o'), "Faroe Islands", 0,0,0 }, +{ IDX_2C('f','r'), "France", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Great Britain (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Grenada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgia", 0,0,0 }, +{ IDX_2C('g','f'), "French Guiana", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Greenland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Guinea", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Equatorial Guinea", 0,0,0 }, +{ IDX_2C('g','r'), "Greece", 0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia and S. Sandwich Isls.", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard and McDonald Islands", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Croatia", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Hungary", 0,0,0 }, +{ IDX_2C('i','d'), "Indonesia", 0,0,0 }, +{ IDX_2C('i','e'), "Ireland", 0,0,0 }, +{ IDX_2C('i','l'), "Israel", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "India", 0,0,0 }, +{ IDX_2C('i','o'), "British Indian Ocean Territory", 0,0,0 }, +{ IDX_2C('i','q'), "Iraq", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Iceland", 0,0,0 }, +{ IDX_2C('i','t'), "Italy", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaica", 0,0,0 }, +{ IDX_2C('j','o'), "Jordan", 0,0,0 }, +{ IDX_2C('j','p'), "Japan", 0,0,0 }, +{ IDX_2C('k','e'), "Kenya", 0,0,0 }, +{ IDX_2C('k','g'), "Kyrgyzstan", 0,0,0 }, +{ IDX_2C('k','h'), "Cambodia", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts and Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Korea, Democratic Republic of", 0,0,0 }, +{ IDX_2C('k','r'), "Korea, Republic of", 0,0,0 }, +{ IDX_2C('k','w'), "Kuwait", 0,0,0 }, +{ IDX_2C('k','y'), "Cayman Islands", 0,0,0 }, +{ IDX_2C('k','z'), "Kazakhstan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Lebanon", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberia", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Lithuania", 0,0,0 }, +{ IDX_2C('l','u'), "Luxembourg", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia", 0,0,0 }, +{ IDX_2C('l','y'), "Libya", 0,0,0 }, +{ IDX_2C('m','a'), "Morocco", 0,0,0 }, +{ IDX_2C('m','c'), "Monaco", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Marshall Islands", 0,0,0 }, +{ IDX_2C('m','k'), "Macedonia", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolia", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Northern Mariana Islands", 0,0,0 }, +{ IDX_2C('m','q'), "Martinique", 0,0,0 }, +{ IDX_2C('m','r'), "Mauritania", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldives", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Mexico", 0,0,0 }, +{ IDX_2C('m','y'), "Malaysia", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambique", 0,0,0 }, +{ IDX_2C('n','a'), "Namibia", 0,0,0 }, +{ IDX_2C('n','c'), "New Caledonia", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Island", 0,0,0 }, +{ IDX_2C('n','g'), "Nigeria", 0,0,0 }, +{ IDX_2C('n','i'), "Nicaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Netherlands", 0,0,0 }, +{ IDX_2C('n','o'), "Norway", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "New Zealand", 0,0,0 }, +{ IDX_2C('o','m'), "Oman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "French Polynesia", 0,0,0 }, +{ IDX_2C('p','g'), "Papua New Guinea", 0,0,0 }, +{ IDX_2C('p','h'), "Philippines", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Poland", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre and Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Puerto Rico", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portugal", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Qatar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Romania", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Russian Federation", 0,0,0 }, +{ IDX_2C('r','w'), "Rwanda", 0,0,0 }, +{ IDX_2C('s','a'), "Saudi Arabia", 0,0,0 }, +{ IDX_2C('s','b'), "Solomon Islands", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Sweden", 0,0,0 }, +{ IDX_2C('s','g'), "Singapore", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenia", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbard and Jan Mayen Islands", 0,0,0 }, +{ IDX_2C('s','k'), "Slovakia", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somalia", 0,0,0 }, +{ IDX_2C('s','r'), "Suriname", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome and Principe", 0,0,0 }, +{ IDX_2C('s','u'), "Soviet Union", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Syrian Arab Republic", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Turks and Caicos Islands", 0,0,0 }, +{ IDX_2C('t','d'), "Chad", 0,0,0 }, +{ IDX_2C('t','f'), "French Southern Territories", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Thailand", 0,0,0 }, +{ IDX_2C('t','j'), "Tajikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunisia", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Portuguese Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turkey", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad and Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Taiwan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzania", 0,0,0 }, +{ IDX_2C('u','a'), "Ukraine", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "United Kingdom", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying Islands", 0,0,0 }, +{ IDX_2C('u','s'), "United States", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatican City State (Holy See)", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent and the Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Virgin Islands (British)", 0,0,0 }, +{ IDX_2C('v','i'), "Virgin Islands (U.S.)", 0,0,0 }, +{ IDX_2C('v','n'), "Viet Nam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis and Futuna Islands", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Yugoslavia", 0,0,0 }, +{ IDX_2C('z','a'), "South Africa", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabwe", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0 , NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.turkish b/lang/webalizer_lang.turkish new file mode 100644 index 0000000..f6ca47e --- /dev/null +++ b/lang/webalizer_lang.turkish @@ -0,0 +1,634 @@ +/* + webalizer_lang.turkish + + Webalizer V2.0x Language Support file for Turkish. + 15-May-1998 by Bradford L. Barrett (brad@mrunix.net) + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 16-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 20-Aug-2000 Turkish Translation by Evren Yurtesen (yurtesen@ispro.net.tr) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Turkish"; +char *langcode = "tr"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "kayit"; +char *msg_addresses="addres"; +char *msg_ignored = "islenmedi"; +char *msg_bad = "kotu"; +char *msg_in = ""; +char *msg_seconds = "saniyede"; + +/* progress and setup error messages */ +char *msg_log_err = "Hata: Kutuk dosyasi acilamadi"; +char *msg_log_use = "Kullanilan kutukdosyasi"; +char *msg_dir_err = "Hata: Degistirilemeyen dizin"; +char *msg_dir_use = "Ciktinin yaratildigi yer"; +char *msg_cur_dir = "su anki dizin"; +char *msg_hostname= "Raporlar icin makine adi"; +char *msg_ign_hist= "Bir onceki history dosyasi islenmiyor..."; +char *msg_no_hist = "History dosyasi bulunamadi..."; +char *msg_get_hist= "History dosyasi okunuyor..."; +char *msg_put_hist= "History bilgileri kaydediliyor..."; +char *msg_hist_err= "Hata: History dosyasi yazilamiyor"; +char *msg_bad_hist= "Hata: Gecersiz history kaydi islenmiyor"; +char *msg_bad_conf= "Hata: Konfigurasyon dosyasi acilamiyor"; +char *msg_bad_key = "Dikkat: Gecersiz anahtar kelime"; +char *msg_bad_date= "Hata: Kayit islenmeden geciliyor (kotu tarih)"; +char *msg_ign_nscp= "Netscape baslik kaydi islenmeden geciliyor"; +char *msg_bad_rec = "Kotu kayit islenmeden geciliyor"; +char *msg_no_vrec = "Hicbir gecerli kayit bulunamadi!"; +char *msg_gen_rpt = "Raporu yaratilan site"; +char *msg_gen_sum = "Ozet raporu yaratiliyor"; +char *msg_get_data= "Bir onceki calismanin bilgileri okunuyor..."; +char *msg_put_data= "Su anki calisma bilgileri kaydediliyor..."; +char *msg_no_data = "Bir onceki calismanin bilgileri bulunamadi..."; +char *msg_bad_data= "Hata: Calisma bilgileri tekrar kullanilamiyor"; +char *msg_data_err= "Hata: Su anki calisma bilgileri kaydedilemiyor"; +char *msg_dup_data= "Dikkat: Buyuk ihtimalle cift islenmis bilgi bulundu"; + +/* DNS Stuff */ +char *msg_dns_nocf= "Onbellek dosyasi belirtilmedi, islem iptal ediliyor..."; +char *msg_dns_nodb= "Hata: DNS onbellekleme dosyasi acilamadi"; +char *msg_dns_nolk= "Hata: DNS onbellekleme dosyasi kilitlenemedi"; +char *msg_dns_usec= "Kullanilan DNS onbellekleme dosyasi"; +char *msg_dns_rslv= "DNS bakimi"; +char *msg_dns_none= "Islem yapilmasi gereken kayit yok"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Yeterli hafiza yok, Top Istemciler kapatildi!"; +char *msg_nomem_tr= "Yeterli hafiza yok, Top Referanslar kapatildi!"; +char *msg_nomem_tu= "Yeterli hafiza yok, Top URL'ler kapatildi!"; +char *msg_nomem_tc= "Yeterli hafiza yok, Top Ulkeler kapatildi!"; +char *msg_nomem_ta= "Yeterli hafiza yok, Top Kullanici Ajanlari kapatildi!"; +char *msg_nomem_tsr="Yeterli hafiza yok, Top Arama Girdileri kapatildi!"; +char *msg_nomem_ti= "Yeterli hafiza yok, Top Kullanici Adlari kapatildi!"; +char *msg_nomem_dh= "Hata makine nodu ekleniyor (gunluk), islenmeden geciliyor"; +char *msg_nomem_mh= "Hata makine nodu ekleniyor (aylik), islenmeden geciliyor"; +char *msg_nomem_u = "Hata URL nodu ekleniyor, islenmeden geciliyor"; +char *msg_nomem_a = "Hata Kullanici Ajani ekleniyor, islenmeden geciliyor"; +char *msg_nomem_r = "Hata Referans nodu ekleniyor, islenmeden geciliyor"; +char *msg_nomem_sc= "Hata Arama Girdileri nodu ekleniyor, islenmeden geciliyor"; +char *msg_nomem_i = "Hata Kullanici Adi nodu ekleniyor, islenmeden geciliyor"; + +/* log record errors */ +char *msg_big_rec = "Hata: Normalden buyuk kutuk kaydi islenmeden geciliyor"; +char *msg_big_host= "Dikkat: Normalden buyuk makine ismi kucultuluyor"; +char *msg_big_date= "Dikkat: Normalden buyuk tarih bolumu kucultuluyor"; +char *msg_big_req = "Dikkat: Normalden buyuk istek bolumu kucultuluyor"; +char *msg_big_ref = "Dikkat: Normalden buyuk referans bolumu kucultuluyor"; +char *msg_big_user= "Dikkat: Normalden buyuk kullanici adi bolumu kucultuluyor"; +char *msg_big_one = "Dikkat: Girdi saklama boyutunu asiyor"; + +/* misc errors */ +char *msg_no_open = "Hata: Dosya acilamadi"; + +/* Help display... */ +char *h_usage1 = "Kullanim"; +char *h_usage2 = "[opsiyonlar] [kutuk dosyasi]"; +char *h_msg[]= { + "-h = bu yardim mesajini yazdir" , + "-V = surum bilgilerini yazdir" , + "-v = be verbose" , + "-d = ek debug bilgileri yazir" , + "-F tip = kutuk tipi. 'tip'= (clf | ftp | squid | w3c)" , + "-f = Siralama hatalarini duzelt" , + "-i = history dosyasina bakma" , + "-p = durumu koru (eklemeli)" , + "-b = ignore state (incremental)" , + "-q = bilgi mesajlarini iptal et" , + "-Q = _BUTUN_ mesajlari iptal et" , + "-Y = ulke grafigini iptal et" , + "-G = saate gore grafigini iptal et" , + "-H = saate gore istatistikleri iptal et" , + "-L = renk kodlu grafik aciklamalarini iptal et" , + "-l sayi = grafiklerde 'sayi' kadar cizgi kullan" , + "-m sayi = ziyaret bitim zamani 'sayi'= (seconds)" , + "-T = islem suresi bilgisini yazdir" , + "-c dosya = belirtilen konfigurasyon dosyasini kullan 'dosya'" , + "-n ad = kullanilacak makine adi 'ad'" , + "-o dizin = kullanilacak cikti dizini 'dizin'" , + "-t ad = rapor basligi 'ad'" , + "-a ad = kullanici ajanini sakla 'ad'" , + "-r ad = referansi sakla 'ad'" , + "-s ad = siteyi sakla 'ad'" , + "-u ad = URL'yi sakla 'ad'" , + "-x ad = Dosya uzantisini kullan 'ad'" , + "-O ad = Omit page 'ad'" , + "-P ad = Sayfa uzantisi 'ad'" , + "-I ad = Indeks ismi 'ad'" , + "-K sayi = sayi months in summary table" , + "-k sayi = sayi months in summary graph" , + "-A sayi = sayi kadar top ajan goster" , + "-C sayi = sayi kadar top ulke goster" , + "-R sayi = sayi kadar top referans goster" , + "-S sayi = sayi kadar top istemci goster" , + "-U sayi = sayi kadar top URL goster" , + "-e sayi = sayi kadar top giris sayfasi goster" , + "-E sayi = sayi kadar top cikis sayfasi goster" , + "-g sayi = alan adlarini 'sayi' kadar seviyede grupla" , + "-X = tek siteleri gizle" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D ad = 'ad' isimli DNS onbellek dosyasini kullan" , + "-N sayi = DNS islemcilerinin sayisi (0=iptal)" , + "-j = Enable native GeoDB lookups" , + "-J ad = Use GeoDB database 'ad'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W ad = Use GeoIP database 'ad'" , +#endif + NULL}; + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "Ozet Periyodu"; +char *msg_hhdr_gt = "Yaratilma Tarihi"; + +/* main index strings */ +char *msg_main_us = "Kullanim Ozeti"; +/* char *msg_main_per= "Son 12 Ay"; */ +char *msg_main_per= "Ay'a Gore Ozet"; +char *msg_main_sum= "Ay'a Gore Ozet"; +char *msg_main_da = "Gunluk Averaj"; +char *msg_main_mt = "Aylik Toplamlar"; + +/* month HTML page strings */ +char *msg_hmth_du = "Gunluk Kullanim:"; +char *msg_hmth_hu = "Saatlik Kullanim:"; + +/* table header strings */ +char *msg_h_by = ""; +char *msg_h_avg = "Averaj"; +char *msg_h_max = "Maksimum"; +char *msg_h_total = "Toplam"; +char *msg_h_totals= "Toplamlar"; +char *msg_h_day = "Gun"; +char *msg_h_mth = "Ay"; +char *msg_h_hour = "Saat"; +char *msg_h_hits = "HIT'ler"; +char *msg_h_pages = "Sayfa"; +char *msg_h_visits= "Ziyaret"; +char *msg_h_files = "Dosya"; +char *msg_h_sites = "Istemci"; +char *msg_h_xfer = "KBayt'a Gore"; +char *msg_h_hname = "Makine Adi"; +char *msg_h_url = "URL"; +char *msg_h_agent = "Kullanici Ajani"; +char *msg_h_ref = "Referans"; +char *msg_h_ctry = "Ulke"; +char *msg_h_search= "Arama Girdisi"; +char *msg_h_uname = "Kullanici"; + +/* links along top of page */ +char *msg_hlnk_ds = "Gunluk Istatistikler"; +char *msg_hlnk_hs = "Saatlik Istatistikler"; +char *msg_hlnk_u = "URL'ler"; +char *msg_hlnk_s = "Istemciler"; +char *msg_hlnk_a = "Ajanlar"; +char *msg_hlnk_c = "Ulkeler"; +char *msg_hlnk_r = "Referanslar"; +char *msg_hlnk_en = "Giris"; +char *msg_hlnk_ex = "Cikis"; +char *msg_hlnk_sr = "Arama"; +char *msg_hlnk_i = "Kullanicilar"; + +/* monthly total table */ +char *msg_mtot_ms = "Aylik Istatistikler:"; +char *msg_mtot_th = "Toplam HIT'ler"; +char *msg_mtot_tf = "Toplam Dosyalar"; +char *msg_mtot_tx = "Toplam KBaytlar"; +char *msg_mtot_us = "Toplam Ayni Istemciler"; +char *msg_mtot_ur = "Toplam Ayni Referanslar"; +char *msg_mtot_ua = "Toplam Ayni Kullanici Ajanlari"; +char *msg_mtot_uu = "Toplam Ayni URL'ler"; +char *msg_mtot_ui = "Toplam Ayni Kullanici Adlari"; +char *msg_mtot_mhd= "Gunluk HIT"; +char *msg_mtot_mhh= "Saatlik HIT"; +char *msg_mtot_mfd= "Gunluk Dosyalar"; +char *msg_mtot_mpd= "Gunluk Sayfalar"; +char *msg_mtot_msd= "Gunluk Istemciler"; +char *msg_mtot_mvd= "Gunluk Ziyaretler"; +char *msg_mtot_mkd= "Gunluk KBaytlar"; +char *msg_mtot_rc = "Cevap Koduna Gore HIT"; + +/* daily total table */ +char *msg_dtot_ds = "Gunluk Istatistikler:"; + +/* hourly total table */ +char *msg_htot_hs = "Saatlik Istatistikler:"; + +/* country pie chart */ +char *msg_ctry_use= "Ulkeye Gore Kullanim:"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "Top"; +char *msg_top_of = "/"; +char *msg_top_s = "Toplam Istemciler"; +char *msg_top_u = "Toplam URL'ler"; +char *msg_top_r = "Toplam Referanslar"; +char *msg_top_a = "Toplam Kullanici Ajanlari"; +char *msg_top_c = "Toplam Ulkeler"; +char *msg_top_en = "Toplam Giris Sayfalari"; +char *msg_top_ex = "Toplam Cikis Sayfalari"; +char *msg_top_sr = "Toplam Arama Girdileri"; +char *msg_top_i = "Toplam Kullanici Adlari"; +char *msg_v_sites = "Butun Istemcileri Goster"; +char *msg_v_urls = "Butun URL'leri Goster"; +char *msg_v_refs = "Butun Referanslar Goster"; +char *msg_v_agents= "Butun Kullanici Ajanlarini Goster"; +char *msg_v_search= "Butun Arama Girdilerini Goster"; +char *msg_v_users = "Butun Kullanici Adlarini Goster"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "Oca", "Sub", "Mar", + "Nis", "May", "Haz", + "Tem", "Agu", "Eyl", + "Eki", "Kas", "Ara"}; + +/* long month names - can be any length */ +char *l_month[12]={ "Ocak", "Subat", "Mart", "Nisan", + "Mayis", "Haziran", "Temmuz", "Agustos", + "Eylul", "Ekim", "Kasim", "Aralik"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "Tanimlanmamis cevap kodu", 0 }, + { "Kod 100 - Devam", 0 }, + { "Kod 101 - Protokol Degistirme", 0 }, + { "Kod 200 - TAMAM", 0 }, + { "Kod 201 - Yaratildi", 0 }, + { "Kod 202 - Kabul Edildi", 0 }, + { "Kod 203 - Otantikasyonu Olmayan Bilgi", 0 }, + { "Kod 204 - Icerik Yok", 0 }, + { "Kod 205 - Icerigi Sifirla", 0 }, + { "Kod 206 - Bolumsel Icerik", 0 }, + { "Kod 300 - Bircok Secim", 0 }, + { "Kod 301 - Tamamen Tasindi", 0 }, + { "Kod 302 - Bulundu", 0 }, + { "Kod 303 - Digerine Bakiniz", 0 }, + { "Kod 304 - Degismedi", 0 }, + { "Kod 305 - Proxy Kullaniniz", 0 }, + { "Kod 307 - Gecici Olarak Tasindi", 0 }, + { "Kod 400 - Kotu Istek", 0 }, + { "Kod 401 - Yetkisiz", 0 }, + { "Kod 402 - Odeme Gerekli", 0 }, + { "Kod 403 - Yasak", 0 }, + { "Kod 404 - Bulunamadi", 0 }, + { "Kod 405 - Metoda Izin Verilmedi", 0 }, + { "Kod 406 - Kabul Edilemez", 0 }, + { "Kod 407 - Proxy Otantikasyonu Gerekli", 0 }, + { "Kod 408 - Istek Zaman Asimi", 0 }, + { "Kod 409 - Cakisma", 0 }, + { "Kod 410 - Gitti", 0 }, + { "Kod 411 - Uzunluk Gerekli", 0 }, + { "Kod 412 - On Kosul Basarisiz", 0 }, + { "Kod 413 - Istek Varligi Cok Buyuk", 0 }, + { "Kod 414 - Istek-URI'si Cok Uzun", 0 }, + { "Kod 415 - Desteklenmeyen Orta Tipi", 0 }, + { "Kod 416 - Istenen Uzaklik Karsilanamaz", 0 }, + { "Kod 417 - Beklenti Basarisiz", 0 }, + { "Kod 500 - Ic Sunucu Hatasi", 0 }, + { "Kod 501 - Tamamlanmadi", 0 }, + { "Kod 502 - Kotu Gecit", 0 }, + { "Kod 503 - Servis Kapali", 0 }, + { "Kod 504 - Gecit Zaman Asimi", 0 }, + { "Kod 505 - HTTP Surumu Desteklenmiyor", 0 } }; + +char *msg_title = "Kullanim Istatistikleri:"; +char *msg_h_other = "Diger"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "Cozumlenemeyen/Bilinemeyen", 0,0,0 }, +{ IDX_3C('c','o','m'), "Ticari (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "Egitimsel (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "US Devlet (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "Uluslarasi (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "US Askeri (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "Ag (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "Organizasyon (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Eski stil Arpanet (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"Nato alani (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "Andora", 0,0,0 }, +{ IDX_2C('a','e'), "Birlesmis Arab Emirlikleri", 0,0,0 }, +{ IDX_2C('a','f'), "Afganistan", 0,0,0 }, +{ IDX_2C('a','g'), "Antigua ve Barbuda", 0,0,0 }, +{ IDX_2C('a','i'), "Anguilla", 0,0,0 }, +{ IDX_2C('a','l'), "Albanya", 0,0,0 }, +{ IDX_2C('a','m'), "Ermenistan", 0,0,0 }, +{ IDX_2C('a','n'), "Hollanda Antil Adalari", 0,0,0 }, +{ IDX_2C('a','o'), "Angola", 0,0,0 }, +{ IDX_2C('a','q'), "Antartik", 0,0,0 }, +{ IDX_2C('a','r'), "Arjantin", 0,0,0 }, +{ IDX_2C('a','s'), "Amerikan Samoa Adalari", 0,0,0 }, +{ IDX_2C('a','t'), "Avusturya", 0,0,0 }, +{ IDX_2C('a','u'), "Avusturalya", 0,0,0 }, +{ IDX_2C('a','w'), "Aruba", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "Azerbeycan", 0,0,0 }, +{ IDX_2C('b','a'), "Bosna ve Herzegova", 0,0,0 }, +{ IDX_2C('b','b'), "Barbados", 0,0,0 }, +{ IDX_2C('b','d'), "Banglades", 0,0,0 }, +{ IDX_2C('b','e'), "Belcika", 0,0,0 }, +{ IDX_2C('b','f'), "Burkina Faso", 0,0,0 }, +{ IDX_2C('b','g'), "Bulgaristan", 0,0,0 }, +{ IDX_2C('b','h'), "Bahreyn", 0,0,0 }, +{ IDX_2C('b','i'), "Burundi", 0,0,0 }, +{ IDX_2C('b','j'), "Benin", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "Bermuda", 0,0,0 }, +{ IDX_2C('b','n'), "Brunei Darussalam", 0,0,0 }, +{ IDX_2C('b','o'), "Bolivya", 0,0,0 }, +{ IDX_2C('b','r'), "Brezilya", 0,0,0 }, +{ IDX_2C('b','s'), "Bahamalar", 0,0,0 }, +{ IDX_2C('b','t'), "Bhutan", 0,0,0 }, +{ IDX_2C('b','v'), "Bouvet Adasi", 0,0,0 }, +{ IDX_2C('b','w'), "Botswana", 0,0,0 }, +{ IDX_2C('b','y'), "Belarusya", 0,0,0 }, +{ IDX_2C('b','z'), "Belize", 0,0,0 }, +{ IDX_2C('c','a'), "Kanada", 0,0,0 }, +{ IDX_2C('c','c'), "Cocos (Keeling) Adalari", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "Orta Afrika Cumhuriyeti", 0,0,0 }, +{ IDX_2C('c','g'), "Kongo", 0,0,0 }, +{ IDX_2C('c','h'), "Isvicre", 0,0,0 }, +{ IDX_2C('c','i'), "Cote D'Ivoire (Ivory Sahili)", 0,0,0 }, +{ IDX_2C('c','k'), "Cook Adalari", 0,0,0 }, +{ IDX_2C('c','l'), "Sile", 0,0,0 }, +{ IDX_2C('c','m'), "Kamerun", 0,0,0 }, +{ IDX_2C('c','n'), "Cin", 0,0,0 }, +{ IDX_2C('c','o'), "Kolombiya", 0,0,0 }, +{ IDX_2C('c','r'), "Kosta Rica", 0,0,0 }, +{ IDX_2C('c','u'), "Kuba", 0,0,0 }, +{ IDX_2C('c','v'), "Cape Verde", 0,0,0 }, +{ IDX_2C('c','x'), "Christmas Adalari", 0,0,0 }, +{ IDX_2C('c','y'), "Kibris", 0,0,0 }, +{ IDX_2C('c','z'), "Cek Cumhuriyeti", 0,0,0 }, +{ IDX_2C('d','e'), "Almanya", 0,0,0 }, +{ IDX_2C('d','j'), "Djibuti", 0,0,0 }, +{ IDX_2C('d','k'), "Danimarka", 0,0,0 }, +{ IDX_2C('d','m'), "Dominika", 0,0,0 }, +{ IDX_2C('d','o'), "Dominik Cumhuriyeti", 0,0,0 }, +{ IDX_2C('d','z'), "Algeria", 0,0,0 }, +{ IDX_2C('e','c'), "Ekvator", 0,0,0 }, +{ IDX_2C('e','e'), "Estonya", 0,0,0 }, +{ IDX_2C('e','g'), "Misir", 0,0,0 }, +{ IDX_2C('e','h'), "Bati Sahara", 0,0,0 }, +{ IDX_2C('e','r'), "Eritrea", 0,0,0 }, +{ IDX_2C('e','s'), "Ispanya", 0,0,0 }, +{ IDX_2C('e','t'), "Etiyopya", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "Finlandiya", 0,0,0 }, +{ IDX_2C('f','j'), "Fiji", 0,0,0 }, +{ IDX_2C('f','k'), "Folkland Adalari (Malvinas)", 0,0,0 }, +{ IDX_2C('f','m'), "Micronesia", 0,0,0 }, +{ IDX_2C('f','o'), "Faroe Adalari", 0,0,0 }, +{ IDX_2C('f','r'), "Fransa", 0,0,0 }, +{ IDX_2C('g','a'), "Gabon", 0,0,0 }, +{ IDX_2C('g','b'), "Buyuk Biritanya (UK)", 0,0,0 }, +{ IDX_2C('g','d'), "Granada", 0,0,0 }, +{ IDX_2C('g','e'), "Georgia", 0,0,0 }, +{ IDX_2C('g','f'), "Fransiz Guyanasi", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "Ghana", 0,0,0 }, +{ IDX_2C('g','i'), "Gibraltar", 0,0,0 }, +{ IDX_2C('g','l'), "Greenland", 0,0,0 }, +{ IDX_2C('g','m'), "Gambia", 0,0,0 }, +{ IDX_2C('g','n'), "Gine", 0,0,0 }, +{ IDX_2C('g','p'), "Guadeloupe", 0,0,0 }, +{ IDX_2C('g','q'), "Ekvator Ginesi", 0,0,0 }, +{ IDX_2C('g','r'), "Yunanistan", 0,0,0 }, +{ IDX_2C('g','s'), "S. Georgia and S. Sandwich Adalari.", 0,0,0 }, +{ IDX_2C('g','t'), "Guatemala", 0,0,0 }, +{ IDX_2C('g','u'), "Guam", 0,0,0 }, +{ IDX_2C('g','w'), "Guinea-Bissau", 0,0,0 }, +{ IDX_2C('g','y'), "Guyana", 0,0,0 }, +{ IDX_2C('h','k'), "Hong Kong", 0,0,0 }, +{ IDX_2C('h','m'), "Heard and McDonald Adalari", 0,0,0 }, +{ IDX_2C('h','n'), "Honduras", 0,0,0 }, +{ IDX_2C('h','r'), "Hirvatistan", 0,0,0 }, +{ IDX_2C('h','t'), "Haiti", 0,0,0 }, +{ IDX_2C('h','u'), "Macaristan", 0,0,0 }, +{ IDX_2C('i','d'), "Endonezya", 0,0,0 }, +{ IDX_2C('i','e'), "Irlanda", 0,0,0 }, +{ IDX_2C('i','l'), "Israil", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "Hindistan", 0,0,0 }, +{ IDX_2C('i','o'), "Ingiliz-Hint Okyanis Bolgesi", 0,0,0 }, +{ IDX_2C('i','q'), "Irak", 0,0,0 }, +{ IDX_2C('i','r'), "Iran", 0,0,0 }, +{ IDX_2C('i','s'), "Izlanda", 0,0,0 }, +{ IDX_2C('i','t'), "Italya", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "Jamaika", 0,0,0 }, +{ IDX_2C('j','o'), "Urdun", 0,0,0 }, +{ IDX_2C('j','p'), "Japonya", 0,0,0 }, +{ IDX_2C('k','e'), "Kenya", 0,0,0 }, +{ IDX_2C('k','g'), "Kirgizistan", 0,0,0 }, +{ IDX_2C('k','h'), "Kambocya", 0,0,0 }, +{ IDX_2C('k','i'), "Kiribati", 0,0,0 }, +{ IDX_2C('k','m'), "Comoros", 0,0,0 }, +{ IDX_2C('k','n'), "Saint Kitts and Nevis", 0,0,0 }, +{ IDX_2C('k','p'), "Kore (Kuzey)", 0,0,0 }, +{ IDX_2C('k','r'), "Kore (Guney)", 0,0,0 }, +{ IDX_2C('k','w'), "Kuveyt", 0,0,0 }, +{ IDX_2C('k','y'), "Cayman Islands", 0,0,0 }, +{ IDX_2C('k','z'), "Kazakhistan", 0,0,0 }, +{ IDX_2C('l','a'), "Laos", 0,0,0 }, +{ IDX_2C('l','b'), "Lubnan", 0,0,0 }, +{ IDX_2C('l','c'), "Saint Lucia", 0,0,0 }, +{ IDX_2C('l','i'), "Liechtenstein", 0,0,0 }, +{ IDX_2C('l','k'), "Sri Lanka", 0,0,0 }, +{ IDX_2C('l','r'), "Liberya", 0,0,0 }, +{ IDX_2C('l','s'), "Lesotho", 0,0,0 }, +{ IDX_2C('l','t'), "Litvanya", 0,0,0 }, +{ IDX_2C('l','u'), "Luxemburg", 0,0,0 }, +{ IDX_2C('l','v'), "Latvia", 0,0,0 }, +{ IDX_2C('l','y'), "Libya", 0,0,0 }, +{ IDX_2C('m','a'), "Moroko", 0,0,0 }, +{ IDX_2C('m','c'), "Monako", 0,0,0 }, +{ IDX_2C('m','d'), "Moldova", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "Madagascar", 0,0,0 }, +{ IDX_2C('m','h'), "Marshall Adalari", 0,0,0 }, +{ IDX_2C('m','k'), "Makedonya", 0,0,0 }, +{ IDX_2C('m','l'), "Mali", 0,0,0 }, +{ IDX_2C('m','m'), "Myanmar", 0,0,0 }, +{ IDX_2C('m','n'), "Mongolya", 0,0,0 }, +{ IDX_2C('m','o'), "Macau", 0,0,0 }, +{ IDX_2C('m','p'), "Kuzey Mariana Adalari", 0,0,0 }, +{ IDX_2C('m','q'), "Martinik", 0,0,0 }, +{ IDX_2C('m','r'), "Moritanya", 0,0,0 }, +{ IDX_2C('m','s'), "Montserrat", 0,0,0 }, +{ IDX_2C('m','t'), "Malta", 0,0,0 }, +{ IDX_2C('m','u'), "Mauritius", 0,0,0 }, +{ IDX_2C('m','v'), "Maldivler", 0,0,0 }, +{ IDX_2C('m','w'), "Malawi", 0,0,0 }, +{ IDX_2C('m','x'), "Meksika", 0,0,0 }, +{ IDX_2C('m','y'), "Malezya", 0,0,0 }, +{ IDX_2C('m','z'), "Mozambik", 0,0,0 }, +{ IDX_2C('n','a'), "Namibya", 0,0,0 }, +{ IDX_2C('n','c'), "Yeni Kaledonya", 0,0,0 }, +{ IDX_2C('n','e'), "Niger", 0,0,0 }, +{ IDX_2C('n','f'), "Norfolk Adalari", 0,0,0 }, +{ IDX_2C('n','g'), "Nijerya", 0,0,0 }, +{ IDX_2C('n','i'), "Nikaragua", 0,0,0 }, +{ IDX_2C('n','l'), "Hollanda", 0,0,0 }, +{ IDX_2C('n','o'), "Norvec", 0,0,0 }, +{ IDX_2C('n','p'), "Nepal", 0,0,0 }, +{ IDX_2C('n','r'), "Nauru", 0,0,0 }, +{ IDX_2C('n','u'), "Niue", 0,0,0 }, +{ IDX_2C('n','z'), "Yeni Zellanda", 0,0,0 }, +{ IDX_2C('o','m'), "Umman", 0,0,0 }, +{ IDX_2C('p','a'), "Panama", 0,0,0 }, +{ IDX_2C('p','e'), "Peru", 0,0,0 }, +{ IDX_2C('p','f'), "Fransiz Polinezyasi", 0,0,0 }, +{ IDX_2C('p','g'), "Papua Yeni Gine", 0,0,0 }, +{ IDX_2C('p','h'), "Filipinler", 0,0,0 }, +{ IDX_2C('p','k'), "Pakistan", 0,0,0 }, +{ IDX_2C('p','l'), "Polonya", 0,0,0 }, +{ IDX_2C('p','m'), "St. Pierre and Miquelon", 0,0,0 }, +{ IDX_2C('p','n'), "Pitcairn", 0,0,0 }, +{ IDX_2C('p','r'), "Porto Riko", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "Portekiz", 0,0,0 }, +{ IDX_2C('p','w'), "Palau", 0,0,0 }, +{ IDX_2C('p','y'), "Paraguay", 0,0,0 }, +{ IDX_2C('q','a'), "Katar", 0,0,0 }, +{ IDX_2C('r','e'), "Reunion", 0,0,0 }, +{ IDX_2C('r','o'), "Romanya", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "Rus Federasyonu", 0,0,0 }, +{ IDX_2C('r','w'), "Ruanda", 0,0,0 }, +{ IDX_2C('s','a'), "Suudi Arabistan", 0,0,0 }, +{ IDX_2C('s','b'), "Solomon Adalari", 0,0,0 }, +{ IDX_2C('s','c'), "Seychelles", 0,0,0 }, +{ IDX_2C('s','d'), "Sudan", 0,0,0 }, +{ IDX_2C('s','e'), "Isvec", 0,0,0 }, +{ IDX_2C('s','g'), "Singapur", 0,0,0 }, +{ IDX_2C('s','h'), "St. Helena", 0,0,0 }, +{ IDX_2C('s','i'), "Slovenya", 0,0,0 }, +{ IDX_2C('s','j'), "Svalbard ve Jan Mayen Adalari", 0,0,0 }, +{ IDX_2C('s','k'), "Slovak Cumhuriyeti", 0,0,0 }, +{ IDX_2C('s','l'), "Sierra Leone", 0,0,0 }, +{ IDX_2C('s','m'), "San Marino", 0,0,0 }, +{ IDX_2C('s','n'), "Senegal", 0,0,0 }, +{ IDX_2C('s','o'), "Somali", 0,0,0 }, +{ IDX_2C('s','r'), "Surinam", 0,0,0 }, +{ IDX_2C('s','t'), "Sao Tome and Principe", 0,0,0 }, +{ IDX_2C('s','u'), "SSCB (eski)", 0,0,0 }, +{ IDX_2C('s','v'), "El Salvador", 0,0,0 }, +{ IDX_2C('s','y'), "Suriye", 0,0,0 }, +{ IDX_2C('s','z'), "Swaziland", 0,0,0 }, +{ IDX_2C('t','c'), "Turks ve Caicos Adalari", 0,0,0 }, +{ IDX_2C('t','d'), "Cad", 0,0,0 }, +{ IDX_2C('t','f'), "Fransiz Guney Bolgeleri", 0,0,0 }, +{ IDX_2C('t','g'), "Togo", 0,0,0 }, +{ IDX_2C('t','h'), "Tayland", 0,0,0 }, +{ IDX_2C('t','j'), "Tacikistan", 0,0,0 }, +{ IDX_2C('t','k'), "Tokelau", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "Turkmenistan", 0,0,0 }, +{ IDX_2C('t','n'), "Tunus", 0,0,0 }, +{ IDX_2C('t','o'), "Tonga", 0,0,0 }, +{ IDX_2C('t','p'), "Dogu Timor", 0,0,0 }, +{ IDX_2C('t','r'), "Turkiye", 0,0,0 }, +{ IDX_2C('t','t'), "Trinidad ve Tobago", 0,0,0 }, +{ IDX_2C('t','v'), "Tuvalu", 0,0,0 }, +{ IDX_2C('t','w'), "Tayvan", 0,0,0 }, +{ IDX_2C('t','z'), "Tanzanya", 0,0,0 }, +{ IDX_2C('u','a'), "Ukrayna", 0,0,0 }, +{ IDX_2C('u','g'), "Uganda", 0,0,0 }, +{ IDX_2C('u','k'), "Ingiltere", 0,0,0 }, +{ IDX_2C('u','m'), "US Minor Outlying Adalari", 0,0,0 }, +{ IDX_2C('u','s'), "United States", 0,0,0 }, +{ IDX_2C('u','y'), "Uruguay", 0,0,0 }, +{ IDX_2C('u','z'), "Uzbekistan", 0,0,0 }, +{ IDX_2C('v','a'), "Vatican Sehiri Devleti (Kutsal Deniz)", 0,0,0 }, +{ IDX_2C('v','c'), "Saint Vincent ve Grenadines", 0,0,0 }, +{ IDX_2C('v','e'), "Venezuela", 0,0,0 }, +{ IDX_2C('v','g'), "Virgin Adalari (British)", 0,0,0 }, +{ IDX_2C('v','i'), "Virgin Adalari (U.S.)", 0,0,0 }, +{ IDX_2C('v','n'), "Vietnam", 0,0,0 }, +{ IDX_2C('v','u'), "Vanuatu", 0,0,0 }, +{ IDX_2C('w','f'), "Wallis ve Futuna Adalari", 0,0,0 }, +{ IDX_2C('w','s'), "Samoa", 0,0,0 }, +{ IDX_2C('y','e'), "Yemen", 0,0,0 }, +{ IDX_2C('y','t'), "Mayotte", 0,0,0 }, +{ IDX_2C('y','u'), "Yugoslavya", 0,0,0 }, +{ IDX_2C('z','a'), "Guney Afrika", 0,0,0 }, +{ IDX_2C('z','m'), "Zambia", 0,0,0 }, +{ IDX_2C('z','w'), "Zimbabve", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0 , NULL, 0,0,0 }}; diff --git a/lang/webalizer_lang.ukrainian b/lang/webalizer_lang.ukrainian new file mode 100644 index 0000000..ded23a8 --- /dev/null +++ b/lang/webalizer_lang.ukrainian @@ -0,0 +1,638 @@ +/* + webalizer_lang.ukrainian + + Webalizer V2.0x Language Support file for English. + 15-May-1998 by Bradford L. Barrett (brad@mrunix.net) + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) + 16-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) + 17-May-2001 Translated by Mike Futerko (mike@LITech.lviv.ua) + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) + + + Language files are named using the following convention: + + webalizer_lang.LANGUAGE + + where 'LANGUAGE' is the name of the language the file is + translated into (ie: webalizer_lang.russian for russian). + Either copy the desired language file to webalizer_lang.h + or create a symbolic link, then re-compile. + + If you translate this file into a different language, please + send a copy to brad@mrunix.net. + + Note: to use this translation, your GD should be able to display + the right Cyrillic chars. Who is require GD patch mail to: + mike@LITech.lviv.ua + +*/ + +/***********************************************************************/ +/* DEFINE LANGUAGE NAME here */ +/***********************************************************************/ + +char *language = "Ukrainian"; +char *langcode = "uk"; + +/***********************************************************************/ +/* */ +/* Informational messages */ +/* */ +/* These messages are only displayed while The Webalizer is being run, */ +/* usually to the screen, and are not part of the HTML output. */ +/* */ +/***********************************************************************/ + +/* these are only used in timing totals */ +/* Format: XXX records (XXX ignored, XXX bad) in X.XX seconds */ +char *msg_records = "records"; +char *msg_addresses="addresses"; +char *msg_ignored = "ignored"; +char *msg_bad = "bad"; +char *msg_in = "in"; +char *msg_seconds = "seconds"; + +/* progress and setup error messages */ +char *msg_log_err = "Error: Can't open log file"; +char *msg_log_use = "Using logfile"; +char *msg_dir_err = "Error: Can't change directory to"; +char *msg_dir_use = "Creating output in"; +char *msg_cur_dir = "current directory"; +char *msg_hostname= "Hostname for reports is"; +char *msg_ign_hist= "Ignoring previous history..."; +char *msg_no_hist = "History file not found..."; +char *msg_get_hist= "Reading history file..."; +char *msg_put_hist= "Saving history information..."; +char *msg_hist_err= "Error: Unable to write history file"; +char *msg_bad_hist= "Error: Ignoring invalid history record"; +char *msg_bad_conf= "Error: Unable to open configuration file"; +char *msg_bad_key = "Warning: Invalid keyword"; +char *msg_bad_date= "Error: Skipping record (bad date)"; +char *msg_ign_nscp= "Skipping Netscape header record"; +char *msg_bad_rec = "Skipping bad record"; +char *msg_no_vrec = "No valid records found!"; +char *msg_gen_rpt = "Generating report for"; +char *msg_gen_sum = "Generating summary report"; +char *msg_get_data= "Reading previous run data.."; +char *msg_put_data= "Saving current run data..."; +char *msg_no_data = "Previous run data not found..."; +char *msg_bad_data= "Error: Unable to restore run data"; +char *msg_data_err= "Error: Unable to save current run data"; +char *msg_dup_data= "Warning: Possible duplicate data found"; + +/* DNS Stuff */ +char *msg_dns_nocf= "No cache file specified, aborting..."; +char *msg_dns_nodb= "Error: Unable to open DNS cache file"; +char *msg_dns_nolk= "Error: Unable to lock DNS cache file"; +char *msg_dns_usec= "Using DNS cache file"; +char *msg_dns_rslv= "DNS Lookup"; +char *msg_dns_none= "None to process"; +char *msg_dns_abrt= "DNS support not present, aborting..."; + +/* Geolocation stuff */ +char *msg_geo_open= "Error opening file"; +char *msg_geo_use = "Using"; +char *msg_geo_nolu= "lookups disabled"; +char *msg_geo_dflt= "default"; + +/* memory allocation errors */ +char *msg_nomem_ts= "Can't allocate enough memory, Top Sites disabled!"; +char *msg_nomem_tr= "Can't allocate enough memory, Top Referrers disabled!"; +char *msg_nomem_tu= "Can't allocate enough memory, Top URLs disabled!"; +char *msg_nomem_tc= "Can't allocate enough memory, Top Countries disabled!"; +char *msg_nomem_ta= "Can't allocate enough memory, Top User Agents disabled!"; +char *msg_nomem_tsr="Can't allocate enough memory, Top Search Strings disabled!"; +char *msg_nomem_ti= "Can't allocate enough memory, Top Usernames disabled!"; +char *msg_nomem_dh= "Error adding host node (daily), skipping"; +char *msg_nomem_mh= "Error adding host node (monthly), skipping"; +char *msg_nomem_u = "Error adding URL node, skipping"; +char *msg_nomem_a = "Error adding User Agent node, skipping"; +char *msg_nomem_r = "Error adding Referrer node, skipping"; +char *msg_nomem_sc= "Error adding Search String Node, skipping"; +char *msg_nomem_i = "Error adding Username node, skipping"; + +/* log record errors */ +char *msg_big_rec = "Error: Skipping oversized log record"; +char *msg_big_host= "Warning: Truncating oversized hostname"; +char *msg_big_date= "Warning: Truncating oversized date field"; +char *msg_big_req = "Warning: Truncating oversized request field"; +char *msg_big_ref = "Warning: Truncating oversized referrer field"; +char *msg_big_user= "Warning: Truncating oversized username"; +char *msg_big_one = "Warning: String exceeds storage size"; + +/* misc errors */ +char *msg_no_open = "Error: Unable to open file"; + +/* Help display... */ +char *h_usage1 = "Usage"; +char *h_usage2 = "[options] [log file]"; +char *h_msg[]= { + "-h = print this help message" , + "-V = print version information" , + "-v = be verbose" , + "-d = print additional debug info" , + "-F type = Log type. type= (clf | ftp | squid | w3c)", + "-f = Fold sequence errors" , + "-i = ignore history file" , + "-p = preserve state (incremental)" , + "-b = ignore state (incremental)" , + "-q = supress informational messages" , + "-Q = supress _ALL_ messages" , + "-Y = supress country graph" , + "-G = supress hourly graph" , + "-H = supress hourly stats" , + "-L = supress color coded graph legends" , + "-l num = use num background lines on graph" , + "-m num = Visit timout value (seconds)" , + "-T = print timing information" , + "-c file = use configuration file 'file'" , + "-n name = hostname to use" , + "-o dir = output directory to use" , + "-t name = report title 'name'" , + "-a name = hide user agent 'name'" , + "-r name = hide referrer 'name'" , + "-s name = hide site 'name'" , + "-u name = hide URL 'name'" , + "-x name = Use filename extension 'name'" , + "-O name = Omit page 'name'" , + "-P name = Page type extension 'name'" , + "-I name = Index alias 'name'" , + "-K num = num months in summary table" , + "-k num = num months in summary graph" , + "-A num = Display num top agents" , + "-C num = Display num top countries" , + "-R num = Display num top referrers" , + "-S num = Display num top sites" , + "-U num = Display num top URLs" , + "-e num = Display num top Entry Pages" , + "-E num = Display num top Exit Pages" , + "-g num = Group Domains to 'num' levels" , + "-X = Hide individual sites" , + "-z dir = Use country flags in 'dir'" , +#ifdef USE_DNS + "-D name = Use DNS Cache file 'name'" , + "-N num = Number of DNS processes (0=disable)" , + "-j = Enable native GeoDB lookups" , + "-J name = Use GeoDB database 'name'" , +#endif +#ifdef USE_GEOIP + "-w = Enable GeoIP lookups" , + "-W name = Use GeoIP database 'name'" , +#endif + NULL}; + +/***********************************************************************/ +/* */ +/* HTML strings */ +/* */ +/* These strings are used as part of the HTML output generated by The */ +/* Webalizer. */ +/* */ +/***********************************************************************/ + +/* header strings */ +char *msg_hhdr_sp = "ðÅÒ¦ÏÄ ÓÔÁÔÉÓÔÉËÉ"; +char *msg_hhdr_gt = "óÔ×ÏÒÅÎÏ"; + +/* main index strings */ +char *msg_main_us = "óÕÍÁÒÎÅ ×ÉËÏÒÉÓÔÁÎÎÑ"; +/* char *msg_main_per= "ÏÓÔÁÎΦ 12 ͦÓÑæ×"; */ +char *msg_main_per= "ýÏͦÓÑÞÎÉÊ Ð¦ÄÓÕÍÏË"; +char *msg_main_sum= "ýÏͦÓÑÞÎÉÊ Ð¦ÄÓÕÍÏË"; +char *msg_main_da = "÷ ÓÅÒÅÄÎØÏÍÕ ÚÁ ÄÅÎØ"; +char *msg_main_mt = "÷ÓØÏÇÏ ÚÁ ͦÓÑÃØ"; + +/* month HTML page strings */ +char *msg_hmth_du = "ýÏÄÅÎÎÅ ×ÉËÏÒÉÓÔÁÎÎÑ ÚÁ"; +char *msg_hmth_hu = "ðÏÇÏÄÉÎÎÅ ×ÉËÏÒÉÓÔÁÎÎÑ ÚÁ"; + +/* table header strings */ +char *msg_h_by = "ÐÏ"; +char *msg_h_avg = "ÓÅÒÅÄÎ."; +char *msg_h_max = "ÍÁËÓ."; +char *msg_h_total = "×ÓØÏÇÏ"; +char *msg_h_totals= "÷ÓØÏÇÏ"; +char *msg_h_day = "ÄÅÎØ"; +char *msg_h_mth = "ͦÓÑÃØ"; +char *msg_h_hour = "ÇÏÄÉÎÁ"; +char *msg_h_hits = "ÚÁÐÉÔ¦×"; +char *msg_h_pages = "ÓÔÏÒ."; +char *msg_h_visits= "צÄצÄ."; +char *msg_h_files = "ÆÁÊ̦×"; +char *msg_h_sites = "ÓÁÊÔ¦×"; +char *msg_h_xfer = "ëâÁÊÔ"; +char *msg_h_hname = "¦Í'Ñ ÈÏÓÔÁ"; +char *msg_h_url = "URL"; +char *msg_h_agent = "ÁÇÅÎÔ ËÏÒÉÓÔÕ×ÁÞÁ"; +char *msg_h_ref = "ÐÏÓÉÌÁÎÎÑ"; +char *msg_h_ctry = "ËÒÁ§ÎÁ"; +char *msg_h_search= "ÓÔÒ¦ÞËÁ ÐÏÛÕËÕ"; +char *msg_h_uname = "¦Í'Ñ ËÏÒÉÓÔÕ×ÁÞÁ"; + +/* links along top of page */ +char *msg_hlnk_ds = "óÔÁÔÉÓÔÉËÁ ÐÏ ÄÎÑÈ"; +char *msg_hlnk_hs = "óÔÁÔÉÓÔÉËÁ ÐÏ ÇÏÄÉÎÁÈ"; +char *msg_hlnk_u = "URL'É"; +char *msg_hlnk_s = "óÁÊÔÉ"; +char *msg_hlnk_a = "áÇÅÎÔÉ ËÏÒÉÓÔÕ×ÁÞÁ"; +char *msg_hlnk_c = "ëÒÁ§ÎÉ"; +char *msg_hlnk_r = "ðÏÓÉÌÁÎÎÑ"; +char *msg_hlnk_en = "ðÏÞÁÔËÏצ ÓÔÏÒ¦ÎËÉ"; +char *msg_hlnk_ex = "ë¦ÎÃÅצ ÓÔÏÒ¦ÎËÉ"; +char *msg_hlnk_sr = "ðÏÛÕË"; +char *msg_hlnk_i = "ëÏÒÉÓÔÕ×ÁÞ¦"; + +/* monthly total table */ +char *msg_mtot_ms = "í¦ÓÑÞÎÁ ÓÔÁÔÉÓÎÉËÁ ÚÁ"; +char *msg_mtot_th = "÷ÓØÏÇÏ ÚÁÐÉÔ¦×"; +char *msg_mtot_tf = "÷ÓØÏÇÏ ÆÁÊ̦×"; +char *msg_mtot_tx = "÷ÓØÏÇÏ ëâÁÊÔ"; +char *msg_mtot_us = "÷ÓØÏÇÏ ÕΦËÁÌØÎÉÈ ÓÁÊÔ¦×"; +char *msg_mtot_ur = "÷ÓØÏÇÏ ÕΦËÁÌØÎÉÈ ÐÏÓÉÌÁÎØ"; +char *msg_mtot_ua = "÷ÓØÏÇÏ ÕΦËÁÌØÎÉÈ ÁÇÅÎÔ¦× ËÏÒÉÓÔÕ×ÁÞÁ"; +char *msg_mtot_uu = "÷ÓØÏÇÏ ÕΦËÁÌØÎÉÈ URL'¦×"; +char *msg_mtot_ui = "÷ÓØÏÇÏ ÕΦËÁÌØÎÉÈ ¦ÍÅÎ"; +char *msg_mtot_mhd= "ú×ÅÒÔÁÎØ ÚÁ ÄÅÎØ"; +char *msg_mtot_mhh= "ú×ÅÒÔÁÎØ ÚÁ ÇÏÄÉÎÕ"; +char *msg_mtot_mfd= "æÁÊÌ¦× ÚÁ ÄÅÎØ"; +char *msg_mtot_mpd= "óÔÏÒ¦ÎÏË ÚÁ ÄÅÎØ"; +char *msg_mtot_msd= "Sites per Day"; +char *msg_mtot_mvd= "÷¦ÄצÄÕ×ÁÎØ ÚÁ ÄÅÎØ"; +char *msg_mtot_mkd= "KâÁÊÔ ÚÁ ÄÅÎØ"; +char *msg_mtot_rc = "ú×ÅÒÔÁÎØ ÚÁ ËÏÄÏÍ ×¦ÄÐÏצĦ"; + +/* daily total table */ +char *msg_dtot_ds = "óÔÁÔÉÓÔÉËÁ ÐÏ ÄÎÑÈ ÚÁ"; + +/* hourly total table */ +char *msg_htot_hs = "óÔÁÔÉÓÔÉËÁ ÐÏ ÇÏÄÉÎÁÈ ÚÁ"; + +/* country pie chart */ +char *msg_ctry_use= "CÔÁÔÉÓÔÉËÁ ÐÏ ËÒÁ§ÎÁÈ ÚÁ"; + +/* top tables */ +/* Formatted as "Top xxx of xxx Total something" */ +char *msg_top_top = "ðÅÒÛ¦"; +char *msg_top_of = "Ú"; +char *msg_top_s = "ÓÁÊÔ¦×"; +char *msg_top_u = "URL'¦×"; +char *msg_top_r = "ÐÏÓÉÌÁÎØ"; +char *msg_top_a = "ÁÇÅÎÔ¦× ËÏÒÉÓÔÕ×ÁÞÁ"; +char *msg_top_c = "ËÒÁ§Î"; +char *msg_top_en = "ÐÏÞÁÔËÏ×ÉÈ ÓÔÏÒ¦ÎÏË"; +char *msg_top_ex = "˦ÎÃÅ×ÉÈ ÓÔÏÒ¦ÎÏË"; +char *msg_top_sr = "ÓÔÒ¦ÞÏË ÐÏÛÕËÕ"; +char *msg_top_i = "¦ÍÅÎ ËÏÒÉÓÔÕ×ÁÞÁ"; +char *msg_v_sites = "ðÅÒÅÇÌÑÎÕÔÉ ×Ó¦ ÓÁÊÔÉ"; +char *msg_v_urls = "ðÅÒÅÇÌÑÎÕÔÉ ×Ó¦ URL'É"; +char *msg_v_refs = "ðÅÒÅÇÌÑÎÕÔÉ ×Ó¦ ÐÏÓÉÌÁÎÎÑ"; +char *msg_v_agents= "ðÅÒÅÇÌÑÎÕÔÉ ×Ó¦ ÁÇÅÎÔÉ ËÏÒÉÓÔÕ×ÁÞÁ"; +char *msg_v_search= "ðÅÒÅÇÌÑÎÕÔÉ ×Ó¦ cÔÒ¦ÞËÉ ÐÏÛÕËÕ"; +char *msg_v_users = "ðÅÒÅÇÌÑÎÕÔÉ ×Ó¦ ¦ÍÅÎÁ ËÏÒÉÓÔÕ×ÁÞ¦×"; + +/* short month names MUST BE 3 CHARS in size... pad if needed*/ +char *s_month[12]={ "ó¦Þ", "ìÀÔ", "âÅÒ", + "ëצ", "ôÒÁ", "þÅÒ", + "ìÉÐ", "óÅÒ", "÷ÅÒ", + "öÏ×", "ìÉÓ", "çÒÕ"}; + +/* long month names - can be any length */ +char *l_month[12]={ "ó¦ÞÅÎØ", "ìÀÔÉÊ", "âÅÒÅÚÅÎØ", "ëצÔÅÎØ", + "ôÒÁ×ÅÎØ", "þÅÒ×ÅÎØ", "ìÉÐÅÎØ", "óÅÒÐÅÎØ", + "÷ÅÒÅÓÅÎØ", "öÏ×ÔÅÎØ", "ìÉÓÔÏÐÁÄ", "çÒÕÄÅÎØ"}; + +/* response code descriptions... order IS important! */ +struct response_code response[] = + { { "îÅצÄÏÍÉÊ ËÏÄ ×¦ÄÐÏצĦ", 0 }, + { "Code 100 - Continue", 0 }, + { "Code 101 - Switching Protocols", 0 }, + { "Code 200 - OK", 0 }, + { "Code 201 - Created", 0 }, + { "Code 202 - Accepted", 0 }, + { "Code 203 - Non-Authoritative Information", 0 }, + { "Code 204 - No Content", 0 }, + { "Code 205 - Reset Content", 0 }, + { "Code 206 - Partial Content", 0 }, + { "Code 300 - Multiple Choices", 0 }, + { "Code 301 - Moved Permanently", 0 }, + { "Code 302 - Found", 0 }, + { "Code 303 - See Other", 0 }, + { "Code 304 - Not Modified", 0 }, + { "Code 305 - Use Proxy", 0 }, + { "Code 307 - Moved Temporarily", 0 }, + { "Code 400 - Bad Request", 0 }, + { "Code 401 - Unauthorized", 0 }, + { "Code 402 - Payment Required", 0 }, + { "Code 403 - Forbidden", 0 }, + { "Code 404 - Not Found", 0 }, + { "Code 405 - Method Not Allowed", 0 }, + { "Code 406 - Not Acceptable", 0 }, + { "Code 407 - Proxy Authentication Required", 0 }, + { "Code 408 - Request Timeout", 0 }, + { "Code 409 - Conflict", 0 }, + { "Code 410 - Gone", 0 }, + { "Code 411 - Length Required", 0 }, + { "Code 412 - Precondition Failed", 0 }, + { "Code 413 - Request Entity Too Large", 0 }, + { "Code 414 - Request-URI Too Long", 0 }, + { "Code 415 - Unsupported Media Type", 0 }, + { "Code 416 - Requested Range Not Satisfiable", 0 }, + { "Code 417 - Expectation Failed", 0 }, + { "Code 500 - Internal Server Error", 0 }, + { "Code 501 - Not Implemented", 0 }, + { "Code 502 - Bad Gateway", 0 }, + { "Code 503 - Service Unavailable", 0 }, + { "Code 504 - Gateway Timeout", 0 }, + { "Code 505 - HTTP Version Not Supported", 0 } }; + +char *msg_title = "óÔÁÔÉÓÔÉËÁ צÄצÄÕ×ÁÎØ"; +char *msg_h_other = "¶ÎÛ¦"; + +/* Country codes (previously in ctry.h header file) */ + +struct country_code ctry[] = { +{ 0, "îÅÒÏÚ×'ÑÚÁΦ/îÅצÄÏͦ", 0,0,0 }, +{ IDX_3C('c','o','m'), "ëÏÍÅÒæÊΦ (com)", 0,0,0 }, +{ IDX_3C('e','d','u'), "ïÓצÔΦ (edu)", 0,0,0 }, +{ IDX_3C('g','o','v'), "õÒÑÄÏצ (gov)", 0,0,0 }, +{ IDX_3C('i','n','t'), "¶ÎÔÅÒÎÁæÏÎÁÌØΦ (int)", 0,0,0 }, +{ IDX_3C('m','i','l'), "÷¦ÊÓØËÏצ (mil)", 0,0,0 }, +{ IDX_3C('n','e','t'), "íÅÒÅÖÅצ (net)", 0,0,0 }, +{ IDX_3C('o','r','g'), "îÅËÏÍÅÒæÊΦ ÏÒÇÁΦÚÁæ§ (org)", 0,0,0 }, +{ IDX_3C('b','i','z'), "Generic Business (biz)", 0,0,0 }, +{ IDX_3C('c','a','t'), "Catalan Community (cat)", 0,0,0 }, +{ IDX_3C('p','r','o'), "Professional (pro)", 0,0,0 }, +{ IDX_3C('t','e','l'), "Ind. Contact Data (tel)", 0,0,0 }, +{ IDX_4C('a','e','r','o'),"Air Transport Industry (aero)", 0,0,0 }, +{ IDX_4C('a','s','i','a'),"Asia Pacific Community (asia)", 0,0,0 }, +{ IDX_4C('c','o','o','p'),"Cooperative Association (coop)", 0,0,0 }, +{ IDX_4C('i','n','f','o'),"Generic TLD (info)", 0,0,0 }, +{ IDX_4C('j','o','b','s'),"Human Resources (jobs)", 0,0,0 }, +{ IDX_4C('m','o','b','i'),"Generic Mobile TLD (mobi)", 0,0,0 }, +{ IDX_4C('n','a','m','e'),"Individual (name)", 0,0,0 }, +{ IDX_4C('a','r','p','a'),"Address Routing (arpa)", 0,0,0 }, +{ IDX_4C('n','a','t','o'),"úÏÎÁ Nato (nato)", 0,0,0 }, +{ IDX_6C('m','u','s','e','u','m'), "Museums (museum)", 0,0,0 }, +{ IDX_6C('t','r','a','v','e','l'), "Travel Ind. (travel)", 0,0,0 }, +{ IDX_2C('a','c'), "Ascension Island", 0,0,0 }, +{ IDX_2C('a','d'), "áÎÄÏÒÁ (ad)", 0,0,0 }, +{ IDX_2C('a','e'), "ïÂ'¤ÄÎÁΦ áÒÁÂÓØ˦ åͦÒÁÔÉ (ae)", 0,0,0 }, +{ IDX_2C('a','f'), "áÆÇÁΦÓÔÁÎ (af)", 0,0,0 }, +{ IDX_2C('a','g'), "ôҦΦÄÁÄ ÔÁ ôÏÂÁÇÏ (ag)", 0,0,0 }, +{ IDX_2C('a','i'), "áÎǦÌØÑ (ai)", 0,0,0 }, +{ IDX_2C('a','l'), "áÌÂÁÎ¦Ñ (al)", 0,0,0 }, +{ IDX_2C('a','m'), "÷¦ÒÍÅÎ¦Ñ (am)", 0,0,0 }, +{ IDX_2C('a','n'), "çÏÌÁÎÄÓØ˦ áÎÔÉÌØÓØ˦ ÏÓÔÒÏ×É (an)", 0,0,0 }, +{ IDX_2C('a','o'), "áÎÇÏÌÁ (ao)", 0,0,0 }, +{ IDX_2C('a','q'), "áÎÔÁÒËÔÉËÁ (aq)", 0,0,0 }, +{ IDX_2C('a','r'), "áÒÇÅÎÔÉÎÁ (ar)", 0,0,0 }, +{ IDX_2C('a','s'), "áÍÅÒÉËÁÎÓØËÁ óÁÍÏÁ (as)", 0,0,0 }, +{ IDX_2C('a','t'), "á×ÓÔÒ¦Ñ (at)", 0,0,0 }, +{ IDX_2C('a','u'), "á×ÓÔÒÁÌ¦Ñ (au)", 0,0,0 }, +{ IDX_2C('a','w'), "áÒÕÂÁ (aw)", 0,0,0 }, +{ IDX_2C('a','x'), "Aland Islands", 0,0,0 }, +{ IDX_2C('a','z'), "áÚÅÒÂÁÊÄÖÁÎ (az)", 0,0,0 }, +{ IDX_2C('b','a'), "âÏÓÎ¦Ñ ÔÁ çÅÒÃÏÇÏ×ÉÎÁ (ba)", 0,0,0 }, +{ IDX_2C('b','b'), "âÁÒÂÁÄÏÓ (bb)", 0,0,0 }, +{ IDX_2C('b','d'), "âÁÎÇÌÁÄÅÛ (bd)", 0,0,0 }, +{ IDX_2C('b','e'), "âÅÌØÇ¦Ñ (be)", 0,0,0 }, +{ IDX_2C('b','f'), "âÕÒ˦ÎÁ æÁÓÏ (bf)", 0,0,0 }, +{ IDX_2C('b','g'), "âÏÌÇÁÒ¦Ñ (bg)", 0,0,0 }, +{ IDX_2C('b','h'), "âÁÈÒÅÊÎ (bh)", 0,0,0 }, +{ IDX_2C('b','i'), "âÕÒÕÎĦ (bi)", 0,0,0 }, +{ IDX_2C('b','j'), "âÅΦΠ(bj)", 0,0,0 }, +{ IDX_2C('b','l'), "Saint Barthelemy", 0,0,0 }, +{ IDX_2C('b','m'), "âÅÒÍÕÄÉ (bm)", 0,0,0 }, +{ IDX_2C('b','n'), "âÒÕÎÅÊ äÁÒÕÓÁÌÁÍ (bn)", 0,0,0 }, +{ IDX_2C('b','o'), "âÏÌ¦×¦Ñ (bo)", 0,0,0 }, +{ IDX_2C('b','r'), "âÒÁÚÉÌ¦Ñ (br)", 0,0,0 }, +{ IDX_2C('b','s'), "âÁÇÁÍÉ (bs)", 0,0,0 }, +{ IDX_2C('b','t'), "âÕÔÁÎ (bt)", 0,0,0 }, +{ IDX_2C('b','v'), "ïÓÔÒ¦× âÕ×ÅÔ (bv)", 0,0,0 }, +{ IDX_2C('b','w'), "âÏÔÓ×ÁÎÁ (bw)", 0,0,0 }, +{ IDX_2C('b','y'), "â¦ÌÏÒÕÓØ (by)", 0,0,0 }, +{ IDX_2C('b','z'), "âÅÌ¦Ú (bz)", 0,0,0 }, +{ IDX_2C('c','a'), "ëÁÎÁÄÁ (ca)", 0,0,0 }, +{ IDX_2C('c','c'), "ëÁËÏÓÏצ ïÓÔÒÏ×É (cc)", 0,0,0 }, +{ IDX_2C('c','d'), "Congo, Democratic Republic", 0,0,0 }, +{ IDX_2C('c','f'), "ãÅÎÔÒÁÌØÎÏ áÆÒÉËÁÎÓØËÁ òÅÓÐÕÂ̦ËÁ (cf)", 0,0,0 }, +{ IDX_2C('c','g'), "ëÏÎÇÏ (cg)", 0,0,0 }, +{ IDX_2C('c','h'), "û×ÅÊÃÁÒ¦Ñ (ch)", 0,0,0 }, +{ IDX_2C('c','i'), "õÚÂÅÒÅÖÖÑ ¶×ÏÒ¦ (ci)", 0,0,0 }, +{ IDX_2C('c','k'), "ïÓÔÒÏ×É ëÕËÁ (cg)", 0,0,0 }, +{ IDX_2C('c','l'), "þ¦Ì¦ (cl)", 0,0,0 }, +{ IDX_2C('c','m'), "ëÁÍÅÒÕÎ (cm)", 0,0,0 }, +{ IDX_2C('c','n'), "ëÉÔÁÊ (cn)", 0,0,0 }, +{ IDX_2C('c','o'), "ëÏÌÕÍÂ¦Ñ (co)", 0,0,0 }, +{ IDX_2C('c','r'), "ëÏÓÔÁ ò¦ËÁ (cr)", 0,0,0 }, +{ IDX_2C('c','u'), "ëÕÂÁ (cu)", 0,0,0 }, +{ IDX_2C('c','v'), "ëÅÊÐ ÷ÅÒÄÅ (cv)", 0,0,0 }, +{ IDX_2C('c','x'), "ïÓÔÒ¦× ò¦ÚÄ×Á (cx)", 0,0,0 }, +{ IDX_2C('c','y'), "ë¦ÐÒ (cy)", 0,0,0 }, +{ IDX_2C('c','z'), "þÅÓØËÁ ÒÅÓÐÕÂ̦ËÁ (cz)", 0,0,0 }, +{ IDX_2C('d','e'), "î¦ÍÅÞÞÉÎÁ (de)", 0,0,0 }, +{ IDX_2C('d','j'), "äÖÉÂÕÔ¦ (dj)", 0,0,0 }, +{ IDX_2C('d','k'), "äÁÎ¦Ñ (dk)", 0,0,0 }, +{ IDX_2C('d','m'), "äÏͦΦËÁ (dm)", 0,0,0 }, +{ IDX_2C('d','o'), "äÏͦΦËÁÎÓØËÁ ÒÅÓÐÕÂ̦ËÁ (do)", 0,0,0 }, +{ IDX_2C('d','z'), "áÌÇÅÒ¦Ñ (dz)", 0,0,0 }, +{ IDX_2C('e','c'), "åË×ÁÄÏÒ (ec)", 0,0,0 }, +{ IDX_2C('e','e'), "åÓÔÏÎ¦Ñ (ee)", 0,0,0 }, +{ IDX_2C('e','g'), "´ÇÉÐÅÔ (eg)", 0,0,0 }, +{ IDX_2C('e','h'), "úÁȦÄÎÁ óÁÈÁÒÁ (eh)", 0,0,0 }, +{ IDX_2C('e','r'), "åÒ¦ÔÒÅÑ (er)", 0,0,0 }, +{ IDX_2C('e','s'), "¶ÓÐÁÎ¦Ñ (es)", 0,0,0 }, +{ IDX_2C('e','t'), "åƦÏÐ¦Ñ (et)", 0,0,0 }, +{ IDX_2C('e','u'), "European Union", 0,0,0 }, +{ IDX_2C('f','i'), "A¦ÎÌÑÎÄ¦Ñ (fi)", 0,0,0 }, +{ IDX_2C('f','j'), "æ¦ÄÖ¦ (fj)", 0,0,0 }, +{ IDX_2C('f','k'), "æÏÌËÌÅÎÄÓØ˦ ïÓÔÒÏ×É (fk)", 0,0,0 }, +{ IDX_2C('f','m'), "í¦ËÒÏÎÅÚ¦Ñ (fm)", 0,0,0 }, +{ IDX_2C('f','o'), "æÁÒÅÒÓØ˦ ïÓÔÒÏ×É (fo)", 0,0,0 }, +{ IDX_2C('f','r'), "æÒÁÎÃ¦Ñ (fr)", 0,0,0 }, +{ IDX_2C('g','a'), "çÏÂÏÎ (ga)", 0,0,0 }, +{ IDX_2C('g','b'), "÷ÅÌÉËÏÂÒÉÔÁÎ¦Ñ (gb)", 0,0,0 }, +{ IDX_2C('g','d'), "çÒÅÎÁÄÁ (gd)", 0,0,0 }, +{ IDX_2C('g','e'), "çÒÕÚ¦Ñ (ge)", 0,0,0 }, +{ IDX_2C('g','f'), "æÒÁÎÃÕÚØËÁ çÁÑÎÁ (gf)", 0,0,0 }, +{ IDX_2C('g','g'), "Guernsey", 0,0,0 }, +{ IDX_2C('g','h'), "çÁÎÁ (gh)", 0,0,0 }, +{ IDX_2C('g','i'), "ç¦ÂÒÁÌÔÁÒ (gi)", 0,0,0 }, +{ IDX_2C('g','l'), "çÒÅÎÌÁÎÄ¦Ñ (gl)", 0,0,0 }, +{ IDX_2C('g','m'), "çÁÍÂ¦Ñ (gm)", 0,0,0 }, +{ IDX_2C('g','n'), "çצÎÅÑ (gn)", 0,0,0 }, +{ IDX_2C('g','p'), "ç×ÁÄÅÌÕÐÁ (gp)", 0,0,0 }, +{ IDX_2C('g','q'), "åË×ÁÔÏÒ¦ÁÌØÎÁ çצÎÅÑ (gq)", 0,0,0 }, +{ IDX_2C('g','r'), "çÒÅÃ¦Ñ (gr)", 0,0,0 }, +{ IDX_2C('g','s'), "ðÄ. çÅÏÒÇ¦Ñ ¦ ðÄ. ïÓÔÒÏ×É óÅÎÄ×¦Þ (gs)", 0,0,0 }, +{ IDX_2C('g','t'), "ç×ÁÔÅÍÁÌÁ (gt)", 0,0,0 }, +{ IDX_2C('g','u'), "çÕÁÍ (gu)", 0,0,0 }, +{ IDX_2C('g','w'), "çצÎÅÀ-â¦ÓÁÕ (gw)", 0,0,0 }, +{ IDX_2C('g','y'), "çÁÑÎÁ (gy)", 0,0,0 }, +{ IDX_2C('h','k'), "çÏÎ ëÏÎÇ (hk)", 0,0,0 }, +{ IDX_2C('h','m'), "ïÓÔÒÏ×É èÅÒÄÁ ¦ íÁËÄÏÎÁÌØÄÁ (hm)", 0,0,0 }, +{ IDX_2C('h','n'), "çÏÎÄÕÒÁÓ (hn)", 0,0,0 }, +{ IDX_2C('h','r'), "èÏÒ×ÁÔ¦Ñ (hr)", 0,0,0 }, +{ IDX_2C('h','t'), "çÁ§Ô¦ (ht)", 0,0,0 }, +{ IDX_2C('h','u'), "õÇÏÒÝÉΦ (hu)", 0,0,0 }, +{ IDX_2C('i','d'), "¶ÎÄÏÎÅÚ¦Ñ (id)", 0,0,0 }, +{ IDX_2C('i','e'), "¶ÒÌÁÎÄ¦Ñ (ie)", 0,0,0 }, +{ IDX_2C('i','l'), "¶ÚÒÁ§ÌØ (il)", 0,0,0 }, +{ IDX_2C('i','m'), "Isle of Man", 0,0,0 }, +{ IDX_2C('i','n'), "¶ÎÄ¦Ñ (in)", 0,0,0 }, +{ IDX_2C('i','o'), "âÒÉÔÁÎÓØ˦ ÔÅÒ .× ¶ÎĦÊÓØËÏÍÕ ïËÅÁΦ (io)",0,0,0 }, +{ IDX_2C('i','q'), "¶ÒÁË (iq)", 0,0,0 }, +{ IDX_2C('i','r'), "¶ÒÁÎ (ir)", 0,0,0 }, +{ IDX_2C('i','s'), "¶ÓÌÁÎÄ¦Ñ (is)", 0,0,0 }, +{ IDX_2C('i','t'), "¶ÔÁÌ¦Ñ (it)", 0,0,0 }, +{ IDX_2C('j','e'), "Jersey", 0,0,0 }, +{ IDX_2C('j','m'), "ñÍÁÊËÁ (jm)", 0,0,0 }, +{ IDX_2C('j','o'), "êÏÒÄÁÎ (jo)", 0,0,0 }, +{ IDX_2C('j','p'), "ñÐÏÎ¦Ñ (jp)", 0,0,0 }, +{ IDX_2C('k','e'), "ëÅÎ¦Ñ (ke)", 0,0,0 }, +{ IDX_2C('k','g'), "ëÉÒÇÉÓÔÁÎ (kg)", 0,0,0 }, +{ IDX_2C('k','h'), "ëÁÍÂÏÄÖÁ (kh)", 0,0,0 }, +{ IDX_2C('k','i'), "ë¦Ò¦ÂÁÔ¦ (ki)", 0,0,0 }, +{ IDX_2C('k','m'), "ëÏÍÏÒÓØ˦ ïÓÔÒÏ×É (km)", 0,0,0 }, +{ IDX_2C('k','n'), "ïÓÔÒÏ×É Ó×. ë¦ÔÓÁ É îÅצÓÁ (kn)", 0,0,0 }, +{ IDX_2C('k','p'), "ëÏÒÅÑ (ð¦×ΦÞÎÁ) (kp)", 0,0,0 }, +{ IDX_2C('k','r'), "ëÏÒÅÑ (ð¦×ÄÅÎÎÁ) (kr)", 0,0,0 }, +{ IDX_2C('k','w'), "ëÕ×ÅÊÔ (kw)", 0,0,0 }, +{ IDX_2C('k','y'), "ëÁÊÍÁÎÓØ˦ ïÓÔÒÏ×É (ky)", 0,0,0 }, +{ IDX_2C('k','z'), "ëÁÚÁÈÓÔÁÎ (kz)", 0,0,0 }, +{ IDX_2C('l','a'), "ìÁÏÓ (la)", 0,0,0 }, +{ IDX_2C('l','b'), "ìÅÂÁÎÏÎ (lb)", 0,0,0 }, +{ IDX_2C('l','c'), "óÁÎÔÁ ìÀÞ¦Ñ (lc)", 0,0,0 }, +{ IDX_2C('l','i'), "ì¦ÈÔÅÎÛÔÅÊÎ (li)", 0,0,0 }, +{ IDX_2C('l','k'), "ûÒ¦ ìÁÎËÁ (lk)", 0,0,0 }, +{ IDX_2C('l','r'), "ì¦ÂÅÒ¦Ñ (lr)", 0,0,0 }, +{ IDX_2C('l','s'), "ìÅÓÏÔÏ (ls)", 0,0,0 }, +{ IDX_2C('l','t'), "ìÉÔ×Á (lt)", 0,0,0 }, +{ IDX_2C('l','u'), "ìÀËÓÅÍÂÕÒÇ (lu)", 0,0,0 }, +{ IDX_2C('l','v'), "ìÁÔ×¦Ñ (lv)", 0,0,0 }, +{ IDX_2C('l','y'), "ì¦×¦Ñ (ly)", 0,0,0 }, +{ IDX_2C('m','a'), "íÁÒÏËÏ (ma)", 0,0,0 }, +{ IDX_2C('m','c'), "íÏÎÁËÏ (mc)", 0,0,0 }, +{ IDX_2C('m','d'), "íÏÌÄÏ×Á (md)", 0,0,0 }, +{ IDX_2C('m','e'), "Montenegro", 0,0,0 }, +{ IDX_2C('m','f'), "Saint Martin (French part)", 0,0,0 }, +{ IDX_2C('m','g'), "íÁÄÁÇÁÓËÁÒ (mg)", 0,0,0 }, +{ IDX_2C('m','h'), "íÁÒÛÁÌÏצ ïÓÔÒÏ×É (mh)", 0,0,0 }, +{ IDX_2C('m','k'), "íÁËÅÄÏÎ¦Ñ (mk)", 0,0,0 }, +{ IDX_2C('m','l'), "íÁ̦ (ml)", 0,0,0 }, +{ IDX_2C('m','m'), "íÁÊÁÎÍÁÒ (mm)", 0,0,0 }, +{ IDX_2C('m','n'), "íÏÎÇÏÌ¦Ñ (mn)", 0,0,0 }, +{ IDX_2C('m','o'), "íÁËÁÕ (mo)", 0,0,0 }, +{ IDX_2C('m','p'), "ð¦×ΦÞΦ íÁÒ¦ÁÎÓØ˦ ïÓÔÒÏ×É (mp)", 0,0,0 }, +{ IDX_2C('m','q'), "íÁÒԦΦËÁ (mq)", 0,0,0 }, +{ IDX_2C('m','r'), "íÁ×ÒÉÔÁÎ¦Ñ (mr)", 0,0,0 }, +{ IDX_2C('m','s'), "íÏÎÔÓÅÒÁÔ (ms)", 0,0,0 }, +{ IDX_2C('m','t'), "íÁÌØÔÁ (mt)", 0,0,0 }, +{ IDX_2C('m','u'), "íÁ×ÒÉÔÁÎ¦Ñ (mu)", 0,0,0 }, +{ IDX_2C('m','v'), "íÁÌØĦ×ÓØËÁ òÅÓÐÕÂ̦ËÁ (mv)", 0,0,0 }, +{ IDX_2C('m','w'), "íÁÌÁצ (mw)", 0,0,0 }, +{ IDX_2C('m','x'), "íÅËÓÉËÁ (mx)", 0,0,0 }, +{ IDX_2C('m','y'), "íÁÌÁÚ¦Ñ (my)", 0,0,0 }, +{ IDX_2C('m','z'), "íÏÚÁÍÂ¦Ë (mz)", 0,0,0 }, +{ IDX_2C('n','a'), "îÁÍ¦Â¦Ñ (na)", 0,0,0 }, +{ IDX_2C('n','c'), "îÏ×Á ëÁÌÅÄÏÎ¦Ñ (nc)", 0,0,0 }, +{ IDX_2C('n','e'), "î¦ÇÅÒ (ne)", 0,0,0 }, +{ IDX_2C('n','f'), "ïÓÔÒ¦× îÏÒÆÏÌË (nf)", 0,0,0 }, +{ IDX_2C('n','g'), "î¦ÇÅÒ¦Ñ (ng)", 0,0,0 }, +{ IDX_2C('n','i'), "î¦ËÁÒÁÇÕÁ (ni)", 0,0,0 }, +{ IDX_2C('n','l'), "î¦ÄÅÒÌÁÎÄÉ (nl)", 0,0,0 }, +{ IDX_2C('n','o'), "îÏÒ×ÅÇ¦Ñ (no)", 0,0,0 }, +{ IDX_2C('n','p'), "îÅÐÁÌ (np)", 0,0,0 }, +{ IDX_2C('n','r'), "îÁÕÒÕ (nr)", 0,0,0 }, +{ IDX_2C('n','u'), "î¦ÕÅ (nu)", 0,0,0 }, +{ IDX_2C('n','z'), "îÏ×Á úÅÌÁÎÄ¦Ñ (nz)", 0,0,0 }, +{ IDX_2C('o','m'), "ïÍÁÎ (om)", 0,0,0 }, +{ IDX_2C('p','a'), "ðÁÎÁÍÁ (pa)", 0,0,0 }, +{ IDX_2C('p','e'), "ðÅÒÕ (pr)", 0,0,0 }, +{ IDX_2C('p','f'), "æÒÁÎÃÕÚØËÁ ðÏ̦ÎÅÚ¦Ñ (pf)", 0,0,0 }, +{ IDX_2C('p','g'), "ðÁÐÕÁ îÏ×Á çצÎÅÑ (pg)", 0,0,0 }, +{ IDX_2C('p','h'), "æ¦Ì¦Ð¦ÎÉ (ph)", 0,0,0 }, +{ IDX_2C('p','k'), "ðÁ˦ÓÔÁÎ (pk)", 0,0,0 }, +{ IDX_2C('p','l'), "ðÏÌØÝÁ (pl)", 0,0,0 }, +{ IDX_2C('p','m'), "ïÓÔÒ¦× Ó×. ð¤ÒÁ ¦ í¦ÇÅÌÑ (pm)", 0,0,0 }, +{ IDX_2C('p','n'), "ð¦ÔËÅÒÎ (pn)", 0,0,0 }, +{ IDX_2C('p','r'), "ðÕÅÒÔÏ ò¦ËÏ (pr)", 0,0,0 }, +{ IDX_2C('p','s'), "Palestinian Territory, Occupied", 0,0,0 }, +{ IDX_2C('p','t'), "ðÏÒÔÕÇÁÌ¦Ñ (pt)", 0,0,0 }, +{ IDX_2C('p','w'), "ðÁÌÁÕ (pw)", 0,0,0 }, +{ IDX_2C('p','y'), "ðÁÒÁÇ×ÁÊ (py)", 0,0,0 }, +{ IDX_2C('q','a'), "ëÁÔÁÒ (qa)", 0,0,0 }, +{ IDX_2C('r','e'), "ïÓÔÒ¦× òÅÀÎØÏÎ (re)", 0,0,0 }, +{ IDX_2C('r','o'), "òÕÍÕÎ¦Ñ (po)", 0,0,0 }, +{ IDX_2C('r','s'), "Serbia", 0,0,0 }, +{ IDX_2C('r','u'), "òÏÓ¦ÊÓØËÁ æÅÄÅÒÁÃ¦Ñ (ru)", 0,0,0 }, +{ IDX_2C('r','w'), "òÕÁÎÁ (rw)", 0,0,0 }, +{ IDX_2C('s','a'), "óÁÕĦ×ÓØËÁ áÒÁ×¦Ñ (sa)", 0,0,0 }, +{ IDX_2C('s','b'), "óÏÌÏÍÏÎÏצ ïÓÔÒÏ×É (sb)", 0,0,0 }, +{ IDX_2C('s','c'), "óÅÊÛÅÌØÓØ˦ ïÓÔÒÏ×É (sc)", 0,0,0 }, +{ IDX_2C('s','d'), "óÕÄÁÎ (sd)", 0,0,0 }, +{ IDX_2C('s','e'), "û×ÅÃ¦Ñ (se)", 0,0,0 }, +{ IDX_2C('s','g'), "ó¦ÎÇÁÐÕÒ (sg)", 0,0,0 }, +{ IDX_2C('s','h'), "ïÓÔÒ¦× Ó×. ´ÌÅÎÉ (sh)", 0,0,0 }, +{ IDX_2C('s','i'), "óÌÏ×ÅÎ¦Ñ (si)", 0,0,0 }, +{ IDX_2C('s','j'), "ïÓÔÒÏ×É ó×ÁÌÂÁÒÄ ¦ ñÎ-íÁÊÅÎ (sj)", 0,0,0 }, +{ IDX_2C('s','k'), "òÅÓÐÕÂ̦ËÁ óÌÏ×Á˦§ (sk)", 0,0,0 }, +{ IDX_2C('s','l'), "ó¦¤ÒÁ ìÅÏÎÅ (sl)", 0,0,0 }, +{ IDX_2C('s','m'), "óÁÎ íÁÒ¦ÎÏ (sm)", 0,0,0 }, +{ IDX_2C('s','n'), "óÅÎÅÇÁÌ (sn)", 0,0,0 }, +{ IDX_2C('s','o'), "óÏÍÁ̦ (so)", 0,0,0 }, +{ IDX_2C('s','r'), "óÕÒ¦ÎÁÍ (sr)", 0,0,0 }, +{ IDX_2C('s','t'), "óÁÏ ôÏÍ ¦ ðÒÉÎÃÉÐÏצ ïÓÔÒÏ×É (st)",0,0,0 }, +{ IDX_2C('s','u'), "óòóò (ËÏÌÉÛΦÊ, su)", 0,0,0 }, +{ IDX_2C('s','v'), "óÁÌØ×ÁÄÏÒ (sv)", 0,0,0 }, +{ IDX_2C('s','y'), "óÉÒ¦Ñ (sy)", 0,0,0 }, +{ IDX_2C('s','z'), "ó×ÁÚ¦ÌÁÎÄ (sz)", 0,0,0 }, +{ IDX_2C('t','c'), "ïÓÔÒÏ×É ôÀÒËÓ ¦ ëÁÊËÏÓ (tc)", 0,0,0 }, +{ IDX_2C('t','d'), "þÁÄ (td)", 0,0,0 }, +{ IDX_2C('t','f'), "ð¦×ÄÅÎΦ æÒÁÎÃÕÚØ˦ ÔÅÒÉÔÏÒ¦§ (tf)", 0,0,0 }, +{ IDX_2C('t','g'), "ôÏÇÏ (tg)", 0,0,0 }, +{ IDX_2C('t','h'), "ôÁ§ÌÁÎÄ (th)", 0,0,0 }, +{ IDX_2C('t','j'), "ôÁÄÖÉËÉÓÔÁÎ (tj)", 0,0,0 }, +{ IDX_2C('t','k'), "ïÓÔÒÏ×É ôÏËÅÌÁÕ (tk)", 0,0,0 }, +{ IDX_2C('t','l'), "Timor-Leste", 0,0,0 }, +{ IDX_2C('t','m'), "ôÕÒËÍÅÎÉÓÔÁÎ (tm)", 0,0,0 }, +{ IDX_2C('t','n'), "ôÕÎ¦Ó (tn)", 0,0,0 }, +{ IDX_2C('t','o'), "ïÓÔÒÏ×É ôÏÎÇÁ (to)", 0,0,0 }, +{ IDX_2C('t','p'), "óȦÄÎÉÊ ô¦ÍÏÒ (tp)", 0,0,0 }, +{ IDX_2C('t','r'), "ôÕÒÅÞÞÉÎÁ (tr)", 0,0,0 }, +{ IDX_2C('t','t'), "òÅÓÐÕÂ̦ËÁ ôҦΦÄÁÄ ÔÁ ôÏÂÁÇÏ (tt)",0,0,0 }, +{ IDX_2C('t','v'), "ôÕ×ÁÌÕ (tv)", 0,0,0 }, +{ IDX_2C('t','w'), "ôÁÊ×ÁÎØ (tw)", 0,0,0 }, +{ IDX_2C('t','z'), "ôÁÎÚÁÎ¦Ñ (tz)", 0,0,0 }, +{ IDX_2C('u','a'), "õËÒÁ§ÎÁ (ua)", 0,0,0 }, +{ IDX_2C('u','g'), "õÇÁÎÄÁ (ug)", 0,0,0 }, +{ IDX_2C('u','k'), "÷ÅÌÉËÏÂÒÉÔÁÎ¦Ñ (uk)", 0,0,0 }, +{ IDX_2C('u','m'), "íÁ̦ ÚÏ×ΦÛΦ ÏÓÔÒÏ×É óûá (um)", 0,0,0 }, +{ IDX_2C('u','s'), "CÐÏÌÕÞÅΦ ÛÔÁÔÉ (us)", 0,0,0 }, +{ IDX_2C('u','y'), "õÒÕÇ×ÁÊ (uy)", 0,0,0 }, +{ IDX_2C('u','z'), "EÚÂÅËÉÓÔÁÎ (uz)", 0,0,0 }, +{ IDX_2C('v','a'), "÷ÁÔ¦ËÁÎ (va)", 0,0,0 }, +{ IDX_2C('v','c'), "ïÓÔÒÏ×É Ó×. ÷¦ÎÓÅÎÔÁ ¦ çÒÅÎÁĦÎÉ (vc)", 0,0,0 }, +{ IDX_2C('v','e'), "÷ÅÎÅÓÕÅÌÁ (ve)", 0,0,0 }, +{ IDX_2C('v','g'), "÷¦ÒÄÖÉÎÓØ˦ ïÓÔÒÏ×É (âÒÉÔÁÎÓØ˦, vg)", 0,0,0 }, +{ IDX_2C('v','i'), "÷¦ÒÄÖÉÎÓØ˦ ïÓÔÒÏ×É (óûá, vi)", 0,0,0 }, +{ IDX_2C('v','n'), "÷'¤ÔÎÁÍ (vn)", 0,0,0 }, +{ IDX_2C('v','u'), "÷ÁÎÕÁÔÕ (vu)", 0,0,0 }, +{ IDX_2C('w','f'), "ïÓÔÒÏ×Á ÷ÅÌÌ¦Ó ¦ æÕÔÕÎÁ (wf)", 0,0,0 }, +{ IDX_2C('w','s'), "óÁÍÏÁ (ws)", 0,0,0 }, +{ IDX_2C('y','e'), "´ÍÅÎ (ye)", 0,0,0 }, +{ IDX_2C('y','t'), "ïÓÔÒ¦× íÁÊÏÔÁ (yt)", 0,0,0 }, +{ IDX_2C('y','u'), "àÇÏÓÌÁ×¦Ñ (ËÏÌÉÛÎÑ, yu)", 0,0,0 }, +{ IDX_2C('z','a'), "ð¦×ÄÅÎÎÁ áÆÒÉËÁ (za)", 0,0,0 }, +{ IDX_2C('z','m'), "úÁÍÂ¦Ñ (zm)", 0,0,0 }, +{ IDX_2C('z','w'), "ú¦ÍÂÁÂ×Å (zw)", 0,0,0 }, +{ IDX_2C('a','1'), "Anonymous Proxy", 0,0,0 }, +{ IDX_2C('a','2'), "Satellite Provider", 0,0,0 }, +{ IDX_2C('o','1'), "Other", 0,0,0 }, +{ IDX_2C('a','p'), "Asia/Pacific Region", 0,0,0 }, +{ IDX_3C('l','a','n'), "Local Network (lan)", 0,0,0 }, +{ 0 , NULL, 0,0,0 }}; diff --git a/linklist.c b/linklist.c new file mode 100644 index 0000000..df3a71a --- /dev/null +++ b/linklist.c @@ -0,0 +1,305 @@ +/* + webalizer - a web server log analysis program + + Copyright (C) 1997-2011 Bradford L. Barrett + + This program 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 2 of the License, or + (at your option) any later version, and provided that the above + copyright and permission notice is included with all distributed + copies of this or derived software. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +*/ + +/*********************************************/ +/* STANDARD INCLUDES */ +/*********************************************/ + +#include +#include +#include +#include +#include /* normal stuff */ +#include +#include + +/* ensure sys/types */ +#ifndef _SYS_TYPES_H +#include +#endif + +/* need socket header? */ +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +/* some systems need this */ +#ifdef HAVE_MATH_H +#include +#endif + +#include "webalizer.h" /* main header */ +#include "lang.h" +#include "linklist.h" + +/* internal function prototypes */ + +NLISTPTR new_nlist(char *); /* new list node */ +void del_nlist(NLISTPTR *); /* del list */ + +GLISTPTR new_glist(char *, char *); /* new group list node */ +void del_glist(GLISTPTR *); /* del group list */ + +int isinstr(char *, char *); + +/* Linkded list pointers */ +GLISTPTR group_sites = NULL; /* "group" lists */ +GLISTPTR group_urls = NULL; +GLISTPTR group_refs = NULL; +GLISTPTR group_agents = NULL; +GLISTPTR group_users = NULL; +NLISTPTR hidden_sites = NULL; /* "hidden" lists */ +NLISTPTR hidden_urls = NULL; +NLISTPTR hidden_refs = NULL; +NLISTPTR hidden_agents = NULL; +NLISTPTR hidden_users = NULL; +NLISTPTR ignored_sites = NULL; /* "Ignored" lists */ +NLISTPTR ignored_urls = NULL; +NLISTPTR ignored_refs = NULL; +NLISTPTR ignored_agents= NULL; +NLISTPTR ignored_users = NULL; +NLISTPTR include_sites = NULL; /* "Include" lists */ +NLISTPTR include_urls = NULL; +NLISTPTR include_refs = NULL; +NLISTPTR include_agents= NULL; +NLISTPTR include_users = NULL; +NLISTPTR index_alias = NULL; /* index. aliases */ +NLISTPTR html_pre = NULL; /* before anything else :) */ +NLISTPTR html_head = NULL; /* top HTML code */ +NLISTPTR html_body = NULL; /* body HTML code */ +NLISTPTR html_post = NULL; /* middle HTML code */ +NLISTPTR html_tail = NULL; /* tail HTML code */ +NLISTPTR html_end = NULL; /* after everything else */ +NLISTPTR page_type = NULL; /* page view types */ +NLISTPTR omit_page = NULL; /* pages not counted */ +NLISTPTR page_prefix = NULL; /* page view prefixes */ +GLISTPTR search_list = NULL; /* Search engine list */ + +/*********************************************/ +/* NEW_NLIST - create new linked list node */ +/*********************************************/ + +NLISTPTR new_nlist(char *str) +{ + NLISTPTR newptr; + + if (sizeof(newptr->string) < strlen(str)) + { + if (verbose) + fprintf(stderr,"[new_nlist] %s\n",msg_big_one); + } + if (( newptr = malloc(sizeof(struct nlist))) != NULL) + {strncpy(newptr->string, str, sizeof(newptr->string));newptr->next=NULL;} + return newptr; +} + +/*********************************************/ +/* ADD_NLIST - add item to FIFO linked list */ +/*********************************************/ + +int add_nlist(char *str, NLISTPTR *list) +{ + NLISTPTR newptr,cptr,pptr; + + if ( (newptr = new_nlist(str)) != NULL) + { + if (*list==NULL) *list=newptr; + else + { + cptr=pptr=*list; + while(cptr!=NULL) { pptr=cptr; cptr=cptr->next; }; + pptr->next = newptr; + } + } + return newptr==NULL; +} + +/*********************************************/ +/* DEL_NLIST - delete FIFO linked list */ +/*********************************************/ + +void del_nlist(NLISTPTR *list) +{ + NLISTPTR cptr,nptr; + + cptr=*list; + while (cptr!=NULL) + { + nptr=cptr->next; + free(cptr); + cptr=nptr; + } +} + +/*********************************************/ +/* NEW_GLIST - create new linked list node */ +/*********************************************/ + +GLISTPTR new_glist(char *str, char *name) +{ + GLISTPTR newptr; + + if (sizeof(newptr->string) < strlen(str) || + sizeof(newptr->name) < strlen(name)) + { + if (verbose) + fprintf(stderr,"[new_glist] %s\n",msg_big_one); + } + if (( newptr = malloc(sizeof(struct glist))) != NULL) + { + strncpy(newptr->string, str, sizeof(newptr->string)); + strncpy(newptr->name, name, sizeof(newptr->name)); + newptr->next=NULL; + } + return newptr; +} + +/*********************************************/ +/* ADD_GLIST - add item to FIFO linked list */ +/*********************************************/ + +int add_glist(char *str, GLISTPTR *list) +{ + GLISTPTR newptr,cptr,pptr; + char temp_buf[MAXKVAL]; + char *name=temp_buf; + char sep=0; + + /* make local copy of string */ + if (*str=='"' || *str=='\'') sep=*str++; /* Quote character? */ + strncpy(temp_buf,str,MAXKVAL-1); + temp_buf[MAXKVAL-1]=0; + + if (!sep) /* Space seperated */ + while (!isspace((unsigned char)*name) && *name!=0) name++; + else + while (*name!=sep && *name!=0) name++; /* Quote seperated */ + + if (*name==0) name=temp_buf; + else + { + *name++=0; + while (isspace((unsigned char)*name)&&*name!=0) name++; + if (*name==0) name=temp_buf; + } + + if ( (newptr = new_glist(temp_buf, name)) != NULL) + { + if (*list==NULL) *list=newptr; + else + { + cptr=pptr=*list; + while(cptr!=NULL) { pptr=cptr; cptr=cptr->next; }; + pptr->next = newptr; + } + } + return newptr==NULL; +} + +/*********************************************/ +/* DEL_GLIST - delete FIFO linked list */ +/*********************************************/ + +void del_glist(GLISTPTR *list) +{ + GLISTPTR cptr,nptr; + + cptr=*list; + while (cptr!=NULL) + { + nptr=cptr->next; + free(cptr); + cptr=nptr; + } +} + +/*********************************************/ +/* ISINLIST - Test if string is in list */ +/*********************************************/ + +char *isinlist(NLISTPTR list, char *str) +{ + NLISTPTR lptr; + + lptr=list; + while (lptr!=NULL) + { + if (isinstr(str,lptr->string)) return lptr->string; + lptr=lptr->next; + } + return NULL; +} + +/*********************************************/ +/* ISINGLIST - Test if string is in list */ +/*********************************************/ + +char *isinglist(GLISTPTR list, char *str) +{ + GLISTPTR lptr; + + lptr=list; + while (lptr!=NULL) + { + if (isinstr(str,lptr->string)) return lptr->name; + lptr=lptr->next; + } + return NULL; +} + +/*********************************************/ +/* ISINSTR - Scan for string in string */ +/*********************************************/ + +int isinstr(char *str, char *cp) +{ + char *cp1,*cp2; + + cp1=(cp+strlen(cp))-1; + if (*cp=='*') + { + /* if leading wildcard, start from end */ + cp2=str+strlen(str)-1; + while ( (cp1!=cp) && (cp2!=str)) + { + if (*cp1=='*') return 1; + if (*cp1--!=*cp2--) return 0; + } + if (cp1==cp) return 1; + else return 0; + } + else + { + /* if no leading/trailing wildcard, just strstr */ + if (*cp1!='*') return(strstr(str,cp)!=NULL); + /* otherwise do normal forward scan */ + cp1=cp; cp2=str; + while (*cp2!='\0') + { + if (*cp1=='*') return 1; + if (*cp1++!=*cp2++) return 0; + } + if (*cp1=='*') return 1; + else return 0; + } +} diff --git a/linklist.h b/linklist.h new file mode 100644 index 0000000..38e360c --- /dev/null +++ b/linklist.h @@ -0,0 +1,50 @@ +#ifndef _LINKLIST_H +#define _LINKLIST_H + +struct nlist { char string[MAXKVAL]; /* list struct for HIDE items */ + struct nlist *next; }; +typedef struct nlist *NLISTPTR; + +struct glist { char string[MAXKVAL]; /* list struct for GROUP items */ + char name[MAXKVAL]; + struct glist *next; }; +typedef struct glist *GLISTPTR; + +extern GLISTPTR group_sites ; /* "group" lists */ +extern GLISTPTR group_urls ; +extern GLISTPTR group_refs ; +extern GLISTPTR group_agents ; +extern GLISTPTR group_users ; +extern NLISTPTR hidden_sites ; /* "hidden" lists */ +extern NLISTPTR hidden_urls ; +extern NLISTPTR hidden_refs ; +extern NLISTPTR hidden_agents ; +extern NLISTPTR hidden_users ; +extern NLISTPTR ignored_sites ; /* "Ignored" lists */ +extern NLISTPTR ignored_urls ; +extern NLISTPTR ignored_refs ; +extern NLISTPTR ignored_agents; +extern NLISTPTR ignored_users ; +extern NLISTPTR include_sites ; /* "Include" lists */ +extern NLISTPTR include_urls ; +extern NLISTPTR include_refs ; +extern NLISTPTR include_agents; +extern NLISTPTR include_users ; +extern NLISTPTR index_alias ; /* index. aliases */ +extern NLISTPTR html_pre ; /* before anything else :) */ +extern NLISTPTR html_head ; /* top HTML code */ +extern NLISTPTR html_body ; /* body HTML code */ +extern NLISTPTR html_post ; /* middle HTML code */ +extern NLISTPTR html_tail ; /* tail HTML code */ +extern NLISTPTR html_end ; /* after everything else */ +extern NLISTPTR page_type ; /* page view types */ +extern NLISTPTR omit_page ; /* pages not counted */ +extern NLISTPTR page_prefix ; /* page view prefixes */ +extern GLISTPTR search_list ; /* Search engine list */ + +extern char *isinlist(NLISTPTR, char *); /* scan list for str */ +extern char *isinglist(GLISTPTR, char *); /* scan glist for str */ +extern int add_nlist(char *, NLISTPTR *); /* add list item */ +extern int add_glist(char *, GLISTPTR *); /* add group list item */ + +#endif /* _LINKLIST_H */ diff --git a/msfree.png b/msfree.png new file mode 100644 index 0000000..2be2dfa Binary files /dev/null and b/msfree.png differ diff --git a/output.c b/output.c new file mode 100644 index 0000000..2f696db --- /dev/null +++ b/output.c @@ -0,0 +1,2910 @@ +/* + webalizer - a web server log analysis program + + Copyright (C) 1997-2011 Bradford L. Barrett + + This program 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 2 of the License, or + (at your option) any later version, and provided that the above + copyright and permission notice is included with all distributed + copies of this or derived software. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +*/ + +/*********************************************/ +/* STANDARD INCLUDES */ +/*********************************************/ + +#include +#include +#include +#include +#include /* normal stuff */ +#include +#include +#include +#include +#ifdef USE_DNS +#include +#endif + +/* ensure sys/types */ +#ifndef _SYS_TYPES_H +#include +#endif + +/* need socket header? */ +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +/* some systems need this */ +#ifdef HAVE_MATH_H +#include +#endif + +#ifdef USE_GEOIP +#include +#endif + +#include "webalizer.h" /* main header */ +#include "lang.h" +#include "hashtab.h" +#include "preserve.h" +#include "linklist.h" +#include "graphs.h" +#include "output.h" + +/* internal function prototypes */ +void write_html_head(char *, FILE *); /* head of html page */ +void write_html_tail(FILE *); /* tail of html page */ +void month_links(); /* Page links */ +void month_total_table(); /* monthly total table */ +void daily_total_table(); /* daily total table */ +void hourly_total_table(); /* hourly total table */ +void top_sites_table(int); /* top n sites table */ +void top_urls_table(int); /* top n URLs table */ +void top_entry_table(int); /* top n entry/exits */ +void top_refs_table(); /* top n referrers "" */ +void top_agents_table(); /* top n u-agents "" */ +void top_ctry_table(); /* top n countries "" */ +void top_search_table(); /* top n search strs */ +void top_users_table(); /* top n ident table */ +u_int64_t load_url_array( UNODEPTR *); /* load URL array */ +u_int64_t load_site_array( HNODEPTR *); /* load Site array */ +u_int64_t load_ref_array( RNODEPTR *); /* load Refs array */ +u_int64_t load_agent_array(ANODEPTR *); /* load Agents array */ +u_int64_t load_srch_array( SNODEPTR *); /* load srch str array */ +u_int64_t load_ident_array(INODEPTR *); /* load ident array */ +int qs_url_cmph( const void*, const void*); /* compare by hits */ +int qs_url_cmpk( const void*, const void*); /* compare by kbytes */ +int qs_url_cmpn( const void*, const void*); /* compare by entrys */ +int qs_url_cmpx( const void*, const void*); /* compare by exits */ +int qs_site_cmph(const void*, const void*); /* compare by hits */ +int qs_site_cmpk(const void*, const void*); /* compare by kbytes */ +int qs_ref_cmph( const void*, const void*); /* compare by hits */ +int qs_agnt_cmph(const void*, const void*); /* compare by hits */ +int qs_srch_cmph(const void*, const void*); /* compare by hits */ +int qs_ident_cmph(const void*, const void*); /* compare by hits */ +int qs_ident_cmpk(const void*, const void*); /* compare by kbytes */ + +int all_sites_page(u_int64_t, u_int64_t); /* output site page */ +int all_urls_page(u_int64_t, u_int64_t); /* output urls page */ +int all_refs_page(u_int64_t, u_int64_t); /* output refs page */ +int all_agents_page(u_int64_t, u_int64_t); /* output agents page */ +int all_search_page(u_int64_t, u_int64_t); /* output search page */ +int all_users_page(u_int64_t, u_int64_t); /* output ident page */ +void dump_all_sites(); /* dump sites tab file */ +void dump_all_urls(); /* dump urls tab file */ +void dump_all_refs(); /* dump refs tab file */ +void dump_all_agents(); /* dump agents file */ +void dump_all_users(); /* dump usernames file */ +void dump_all_search(); /* dump search file */ + +/* define some colors for HTML */ +#define WHITE "#FFFFFF" +#define BLACK "#000000" +#define RED "#FF0000" +#define ORANGE "#FF8000" +#define LTBLUE "#0080FF" +#define BLUE "#0000FF" +#define GREEN "#00FF00" +#define DKGREEN "#008040" +#define GREY "#C0C0C0" +#define LTGREY "#E8E8E8" +#define YELLOW "#FFFF00" +#define PURPLE "#FF00FF" +#define CYAN "#00E0FF" +#define GRPCOLOR "#D0D0E0" + +/* configurable html colors */ +#define HITCOLOR hit_color +#define FILECOLOR file_color +#define SITECOLOR site_color +#define KBYTECOLOR kbyte_color +#define PAGECOLOR page_color +#define VISITCOLOR visit_color +#define MISCCOLOR misc_color + +/* sort arrays */ +UNODEPTR *u_array = NULL; /* Sort array for URLs */ +HNODEPTR *h_array = NULL; /* hostnames (sites) */ +RNODEPTR *r_array = NULL; /* referrers */ +ANODEPTR *a_array = NULL; /* user agents */ +SNODEPTR *s_array = NULL; /* search strings */ +INODEPTR *i_array = NULL; /* ident strings (username) */ +u_int64_t a_ctr = 0; /* counter for sort array */ + +FILE *out_fp; + +/*********************************************/ +/* WRITE_HTML_HEAD - output top of HTML page */ +/*********************************************/ + +void write_html_head(char *period, FILE *out_fp) +{ + NLISTPTR lptr; /* used for HTMLhead processing */ + + /* HTMLPre code goes before all else */ + lptr = html_pre; + if (lptr==NULL) + { + /* Default 'DOCTYPE' header record if none specified */ + fprintf(out_fp, + "\n\n"); + } + else + { + while (lptr!=NULL) + { + fprintf(out_fp,"%s\n",lptr->string); + lptr=lptr->next; + } + } + /* Standard header comments */ + fprintf(out_fp,"\n", + version,editlvl); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n\n",cur_time()); + + fprintf(out_fp,"\n\n",langcode); + fprintf(out_fp," %s %s - %s\n", + msg_title, hname, (period)?period:msg_main_per); + lptr=html_head; + while (lptr!=NULL) + { + fprintf(out_fp,"%s\n",lptr->string); + lptr=lptr->next; + } + fprintf(out_fp,"\n\n"); + + lptr = html_body; + if (lptr==NULL) + fprintf(out_fp,"\n", + LTGREY, BLACK, BLUE, RED); + else + { + while (lptr!=NULL) + { + fprintf(out_fp,"%s\n",lptr->string); + lptr=lptr->next; + } + } + fprintf(out_fp,"

%s %s

\n",msg_title, hname); + if (period) + fprintf(out_fp,"\n%s: %s
\n",msg_hhdr_sp,period); + else + fprintf(out_fp,"\n%s
\n",msg_main_per); + fprintf(out_fp,"%s %s
\n
\n",msg_hhdr_gt,cur_time()); + lptr=html_post; + while (lptr!=NULL) + { + fprintf(out_fp,"%s\n",lptr->string); + lptr=lptr->next; + } + fprintf(out_fp,"
\n
\n

\n"); +} + +/*********************************************/ +/* WRITE_HTML_TAIL - output HTML page tail */ +/*********************************************/ + +void write_html_tail(FILE *out_fp) +{ + NLISTPTR lptr; + + fprintf(out_fp,"

\n"); + fprintf(out_fp,"

\n


\n"); + fprintf(out_fp,"
..
\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + lptr=html_tail; + if (lptr) + { + fprintf(out_fp,"\n"); + } + fprintf(out_fp,"\n
\n"); + fprintf(out_fp,"Generated by\n"); + fprintf(out_fp,""); + fprintf(out_fp,"Webalizer Version %s\n",version); + fprintf(out_fp,"\n\n"); + while (lptr!=NULL) + { + fprintf(out_fp,"%s\n",lptr->string); + lptr=lptr->next; + } + fprintf(out_fp,"
\n"); + + /* wind up, this is the end of the file */ + fprintf(out_fp,"\n\n", + version,editlvl,moddate); + lptr = html_end; + if (lptr) + { + while (lptr!=NULL) + { + fprintf(out_fp,"%s\n",lptr->string); + lptr=lptr->next; + } + } + else fprintf(out_fp,"\n\n\n"); +} + +/*********************************************/ +/* WRITE_MONTH_HTML - does what it says... */ +/*********************************************/ + +int write_month_html() +{ + char html_fname[256]; /* filename storage areas... */ + char png1_fname[32]; + char png2_fname[32]; + + char buffer[BUFSIZE]; /* scratch buffer */ + char dtitle[256]; + char htitle[256]; + + if (verbose>1) + printf("%s %s %d\n",msg_gen_rpt, l_month[cur_month-1], cur_year); + + /* fill in filenames */ + snprintf(html_fname,sizeof(html_fname),"usage_%04d%02d.%s", + cur_year,cur_month,html_ext); + sprintf(png1_fname,"daily_usage_%04d%02d.png",cur_year,cur_month); + sprintf(png2_fname,"hourly_usage_%04d%02d.png",cur_year,cur_month); + + /* create PNG images for web page */ + if (daily_graph) + { + snprintf(dtitle,sizeof(dtitle),"%s %s %d", + msg_hmth_du,l_month[cur_month-1],cur_year); + month_graph6 ( png1_fname, /* filename */ + dtitle, /* graph title */ + cur_month, /* graph month */ + cur_year, /* graph year */ + tm_hit, /* data 1 (hits) */ + tm_file, /* data 2 (files) */ + tm_site, /* data 3 (sites) */ + tm_xfer, /* data 4 (kbytes) */ + tm_page, /* data 5 (pages) */ + tm_visit); /* data 6 (visits) */ + } + + if (hourly_graph) + { + snprintf(htitle,sizeof(htitle),"%s %s %d", + msg_hmth_hu,l_month[cur_month-1],cur_year); + day_graph3( png2_fname, + htitle, + th_hit, + th_file, + th_page ); + } + + /* now do html stuff... */ + /* first, open the file */ + if ( (out_fp=open_out_file(html_fname))==NULL ) return 1; + + snprintf(buffer,sizeof(buffer),"%s %d",l_month[cur_month-1],cur_year); + write_html_head(buffer, out_fp); + month_links(); + month_total_table(); + if (daily_graph || daily_stats) /* Daily stuff */ + { + fprintf(out_fp,"\n"); + if (daily_graph) fprintf(out_fp,"\"%s\"

\n",png1_fname,dtitle); + if (daily_stats) daily_total_table(); + } + + if (hourly_graph || hourly_stats) /* Hourly stuff */ + { + fprintf(out_fp,"\n"); + if (hourly_graph) fprintf(out_fp,"\"%s\"

\n",png2_fname,htitle); + if (hourly_stats) hourly_total_table(); + } + + /* Do URL related stuff here, sorting appropriately */ + if ( (a_ctr=load_url_array(NULL)) ) + { + if ( (u_array=malloc(sizeof(UNODEPTR)*(a_ctr))) !=NULL ) + { + a_ctr=load_url_array(u_array); /* load up our sort array */ + if (ntop_urls || dump_urls) + { + qsort(u_array,a_ctr,sizeof(UNODEPTR),qs_url_cmph); + if (ntop_urls) top_urls_table(0); /* Top URLs (by hits) */ + if (dump_urls) dump_all_urls(); /* Dump URLs tab file */ + } + if (ntop_urlsK) /* Top URLs (by kbytes) */ + {qsort(u_array,a_ctr,sizeof(UNODEPTR),qs_url_cmpk); top_urls_table(1); } + if (ntop_entry) /* Top Entry Pages */ + {qsort(u_array,a_ctr,sizeof(UNODEPTR),qs_url_cmpn); top_entry_table(0);} + if (ntop_exit) /* Top Exit Pages */ + {qsort(u_array,a_ctr,sizeof(UNODEPTR),qs_url_cmpx); top_entry_table(1);} + free(u_array); + } + else if (verbose) fprintf(stderr,"%s [u_array]\n",msg_nomem_tu); /* err */ + } + + /* do hostname (sites) related stuff here, sorting appropriately... */ + if ( (a_ctr=load_site_array(NULL)) ) + { + if ( (h_array=malloc(sizeof(HNODEPTR)*(a_ctr))) !=NULL ) + { + a_ctr=load_site_array(h_array); /* load up our sort array */ + if (ntop_sites || dump_sites) + { + qsort(h_array,a_ctr,sizeof(HNODEPTR),qs_site_cmph); + if (ntop_sites) top_sites_table(0); /* Top sites table (by hits) */ + if (dump_sites) dump_all_sites(); /* Dump sites tab file */ + } + if (ntop_sitesK) /* Top Sites table (by kbytes) */ + { + qsort(h_array,a_ctr,sizeof(HNODEPTR),qs_site_cmpk); + top_sites_table(1); + } + free(h_array); + } + else if (verbose) fprintf(stderr,"%s [h_array]\n",msg_nomem_ts); /* err */ + } + + /* do referrer related stuff here, sorting appropriately... */ + if ( (a_ctr=load_ref_array(NULL)) ) + { + if ( (r_array=malloc(sizeof(RNODEPTR)*(a_ctr))) != NULL) + { + a_ctr=load_ref_array(r_array); + if (ntop_refs || dump_refs) + { + qsort(r_array,a_ctr,sizeof(RNODEPTR),qs_ref_cmph); + if (ntop_refs) top_refs_table(); /* Top referrers table */ + if (dump_refs) dump_all_refs(); /* Dump referrers tab file */ + } + free(r_array); + } + else if (verbose) fprintf(stderr,"%s [r_array]\n",msg_nomem_tr); /* err */ + } + + /* do search string related stuff, sorting appropriately... */ + if ( (a_ctr=load_srch_array(NULL)) ) + { + if ( (s_array=malloc(sizeof(SNODEPTR)*(a_ctr))) != NULL) + { + a_ctr=load_srch_array(s_array); + if (ntop_search || dump_search) + { + qsort(s_array,a_ctr,sizeof(SNODEPTR),qs_srch_cmph); + if (ntop_search) top_search_table(); /* top search strings table */ + if (dump_search) dump_all_search(); /* dump search string tab file */ + } + free(s_array); + } + else if (verbose) fprintf(stderr,"%s [s_array]\n",msg_nomem_tsr);/* err */ + } + + /* do ident (username) related stuff here, sorting appropriately... */ + if ( (a_ctr=load_ident_array(NULL)) ) + { + if ( (i_array=malloc(sizeof(INODEPTR)*(a_ctr))) != NULL) + { + a_ctr=load_ident_array(i_array); + if (ntop_users || dump_users) + { + qsort(i_array,a_ctr,sizeof(INODEPTR),qs_ident_cmph); + if (ntop_users) top_users_table(); /* top usernames table */ + if (dump_users) dump_all_users(); /* dump usernames tab file */ + } + free(i_array); + } + else if (verbose) fprintf(stderr,"%s [i_array]\n",msg_nomem_ti); /* err */ + } + + /* do user agent related stuff here, sorting appropriately... */ + if ( (a_ctr=load_agent_array(NULL)) ) + { + if ( (a_array=malloc(sizeof(ANODEPTR)*(a_ctr))) != NULL) + { + a_ctr=load_agent_array(a_array); + if (ntop_agents || dump_agents) + { + qsort(a_array,a_ctr,sizeof(ANODEPTR),qs_agnt_cmph); + if (ntop_agents) top_agents_table(); /* top user agents table */ + if (dump_agents) dump_all_agents(); /* dump user agents tab file */ + } + free(a_array); + } + else if (verbose) fprintf(stderr,"%s [a_array]\n",msg_nomem_ta); /* err */ + } + + if (ntop_ctrys ) top_ctry_table(); /* top countries table */ + + write_html_tail(out_fp); /* finish up the HTML document */ + fclose(out_fp); /* close the file */ + return (0); /* done... */ +} + +/*********************************************/ +/* MONTH_LINKS - links to other page parts */ +/*********************************************/ + +void month_links() +{ + fprintf(out_fp,"\n"); + if (daily_stats || daily_graph) + fprintf(out_fp,"[%s]\n",msg_hlnk_ds); + if (hourly_stats || hourly_graph) + fprintf(out_fp,"[%s]\n",msg_hlnk_hs); + if (ntop_urls || ntop_urlsK) + fprintf(out_fp,"[%s]\n",msg_hlnk_u); + if (ntop_entry) + fprintf(out_fp,"[%s]\n",msg_hlnk_en); + if (ntop_exit) + fprintf(out_fp,"[%s]\n",msg_hlnk_ex); + if (ntop_sites || ntop_sitesK) + fprintf(out_fp,"[%s]\n",msg_hlnk_s); + if (ntop_refs && t_ref) + fprintf(out_fp,"[%s]\n",msg_hlnk_r); + if (ntop_search) + fprintf(out_fp,"[%s]\n",msg_hlnk_sr); + if (ntop_users && t_user) + fprintf(out_fp,"[%s]\n",msg_hlnk_i); + if (ntop_agents && t_agent) + fprintf(out_fp,"[%s]\n",msg_hlnk_a); + if (ntop_ctrys) + fprintf(out_fp,"[%s]\n",msg_hlnk_c); + fprintf(out_fp,"\n

\n"); +} + +/*********************************************/ +/* MONTH_TOTAL_TABLE - monthly totals table */ +/*********************************************/ + +void month_total_table() +{ + int i,days_in_month; + u_int64_t max_files=0,max_hits=0,max_visits=0,max_pages=0,max_sites=0; + double max_xfer=0.0; + + days_in_month=(l_day-f_day)+1; + for (i=0;i<31;i++) + { /* Get max/day values */ + if (tm_hit[i]>max_hits) max_hits = tm_hit[i]; + if (tm_file[i]>max_files) max_files = tm_file[i]; + if (tm_page[i]>max_pages) max_pages = tm_page[i]; + if (tm_visit[i]>max_visits) max_visits= tm_visit[i]; + if (tm_site[i]>max_sites) max_sites = tm_site[i]; + if (tm_xfer[i]>max_xfer) max_xfer = tm_xfer[i]; + } + + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n",GREY,msg_mtot_ms,l_month[cur_month-1],cur_year); + fprintf(out_fp,"\n"); + /* Total Hits */ + fprintf(out_fp,"\n" \ + "\n",msg_mtot_th,t_hit); + /* Total Files */ + fprintf(out_fp,"\n" \ + "\n",msg_mtot_tf,t_file); + /* Total Pages */ + fprintf(out_fp,"\n" \ + "\n",msg_h_total, msg_h_pages, t_page); + /* Total Visits */ + fprintf(out_fp,"\n" \ + "\n",msg_h_total, msg_h_visits, t_visit); + /* Total XFer */ + fprintf(out_fp,"\n" \ + "\n",msg_mtot_tx,t_xfer/1024); + fprintf(out_fp,"\n"); + /**********************************************/ + /* Unique Sites */ + fprintf(out_fp,"" \ + "\n" \ + "\n",msg_mtot_us,t_site); + /* Unique URLs */ + fprintf(out_fp,"" \ + "\n" \ + "\n",msg_mtot_uu,t_url); + /* Unique Referrers */ + if (t_ref != 0) + fprintf(out_fp,"" \ + "\n" \ + "\n",msg_mtot_ur,t_ref); + /* Unique Usernames */ + if (t_user != 0) + fprintf(out_fp,"" \ + "\n" \ + "\n",msg_mtot_ui,t_user); + /* Unique Agents */ + if (t_agent != 0) + fprintf(out_fp,"" \ + "\n" \ + "\n",msg_mtot_ua,t_agent); + fprintf(out_fp,"\n"); + /**********************************************/ + /* Hourly/Daily avg/max totals */ + fprintf(out_fp,"" \ + "\n"\ + "\n" \ + "\n", + GREY,GREY,GREY,msg_h_avg,GREY,msg_h_max); + fprintf(out_fp,"\n"); + /* Max/Avg Hits per Hour */ + fprintf(out_fp,"" \ + "\n" \ + "\n" \ + "\n",msg_mtot_mhh, t_hit/(24*days_in_month),mh_hit); + /* Max/Avg Hits per Day */ + fprintf(out_fp,"" \ + "\n" \ + "\n" \ + "\n",msg_mtot_mhd, t_hit/days_in_month, max_hits); + /* Max/Avg Files per Day */ + fprintf(out_fp,"" \ + "\n" \ + "\n" \ + "\n",msg_mtot_mfd, t_file/days_in_month,max_files); + /* Max/Avg Pages per Day */ + fprintf(out_fp,"" \ + "\n" \ + "\n" \ + "\n",msg_mtot_mpd, t_page/days_in_month,max_pages); + /* Max/Avg Sites per Day */ + fprintf(out_fp,"" \ + "\n" \ + "\n" \ + "\n",msg_mtot_msd, t_site/days_in_month,max_sites); + /* Max/Avg Visits per Day */ + fprintf(out_fp,"" \ + "\n" \ + "\n" \ + "\n",msg_mtot_mvd, t_visit/days_in_month,max_visits); + /* Max/Avg KBytes per Day */ + fprintf(out_fp,"" \ + "\n" \ + "\n" \ + "\n",msg_mtot_mkd, + (t_xfer/1024)/days_in_month,max_xfer/1024); + fprintf(out_fp,"\n"); + /**********************************************/ + /* response code totals */ + fprintf(out_fp,"\n",GREY,msg_mtot_rc); + fprintf(out_fp,"\n"); + for (i=0;i\n" \ + "\n" \ + "\n", + response[i].desc,PCENT(response[i].count,t_hit),response[i].count); + } + fprintf(out_fp,"\n"); + /**********************************************/ + + fprintf(out_fp,"
" \ + "%s %s %d
%s%llu" \ + "
%s%llu" \ + "
%s %s%llu" \ + "
%s %s%llu" \ + "
%s%.0f" \ + "
%s%llu" \ + "
%s%llu" \ + "
%s%llu" \ + "
%s%llu" \ + "
%s%llu" \ + "
." \ + "%s " \ + "%s
%s%llu%llu" \ + "
%s%llu%llu" \ + "
%s%llu%llu" \ + "
%s%llu%llu" \ + "
%s%llu%llu" \ + "
%s%llu%llu" \ + "
%s%.0f%.0f" \ + "
\n" \ + "%s
%s%3.02f%%%llu
\n"); + fprintf(out_fp,"

\n"); +} + +/*********************************************/ +/* DAILY_TOTAL_TABLE - daily totals */ +/*********************************************/ + +void daily_total_table() +{ + int i,j; + + /* Daily stats */ + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + /* Daily statistics for ... */ + fprintf(out_fp,"\n", + GREY,msg_dtot_ds,l_month[cur_month-1], cur_year); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n" \ + "\n" \ + "\n" \ + "\n" \ + "\n" \ + "\n" \ + "\n", + GREY, msg_h_day, + HITCOLOR, msg_h_hits, + FILECOLOR, msg_h_files, + PAGECOLOR, msg_h_pages, + VISITCOLOR, msg_h_visits, + SITECOLOR, msg_h_sites, + KBYTECOLOR, msg_h_xfer); + fprintf(out_fp,"\n"); + + /* skip beginning blank days in a month */ + for (i=0;i\n", i+1); + fprintf(out_fp,"\n" \ + "\n", + tm_hit[i],PCENT(tm_hit[i],t_hit)); + fprintf(out_fp,"\n" \ + "\n", + tm_file[i],PCENT(tm_file[i],t_file)); + fprintf(out_fp,"\n" \ + "\n", + tm_page[i],PCENT(tm_page[i],t_page)); + fprintf(out_fp,"\n" \ + "\n", + tm_visit[i],PCENT(tm_visit[i],t_visit)); + fprintf(out_fp,"\n" \ + "\n", + tm_site[i],PCENT(tm_site[i],t_site)); + fprintf(out_fp,"\n" \ + "\n", + tm_xfer[i]/1024,PCENT(tm_xfer[i],t_xfer)); + } + fprintf(out_fp,"\n"); + fprintf(out_fp,"
" \ + "%s %s %d
" \ + "%s" \ + "%s" \ + "%s" \ + "%s" \ + "%s" \ + "%s" \ + "%s
",GRPCOLOR); + else fprintf(out_fp,"
"); + fprintf(out_fp,"%d" \ + "%llu%3.02f%%" \ + "%llu%3.02f%%" \ + "%llu%3.02f%%" \ + "%llu%3.02f%%" \ + "%llu%3.02f%%" \ + "%.0f%3.02f%%
\n"); + fprintf(out_fp,"

\n"); +} + +/*********************************************/ +/* HOURLY_TOTAL_TABLE - hourly table */ +/*********************************************/ + +void hourly_total_table() +{ + int i,days_in_month; + u_int64_t avg_file=0; + double avg_xfer=0.0; + + days_in_month=(l_day-f_day)+1; + + /* Hourly stats */ + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n", + GREY,msg_htot_hs,l_month[cur_month-1], cur_year); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n" \ + "\n" \ + "\n" \ + "\n" \ + "\n", + GREY, msg_h_hour, + HITCOLOR, msg_h_hits, + FILECOLOR, msg_h_files, + PAGECOLOR, msg_h_pages, + KBYTECOLOR, msg_h_xfer); + fprintf(out_fp,"\n" \ + "\n", + HITCOLOR, msg_h_avg, HITCOLOR, msg_h_total); + fprintf(out_fp,"\n" \ + "\n", + FILECOLOR, msg_h_avg, FILECOLOR, msg_h_total); + fprintf(out_fp,"\n" \ + "\n", + PAGECOLOR, msg_h_avg, PAGECOLOR, msg_h_total); + fprintf(out_fp,"\n" \ + "\n", + KBYTECOLOR, msg_h_avg, KBYTECOLOR, msg_h_total); + + fprintf(out_fp,"\n"); + for (i=0;i<24;i++) + { + fprintf(out_fp,"\n",i); + fprintf(out_fp, + "\n"\ + "\n"\ + "\n", + th_hit[i]/days_in_month,th_hit[i], + PCENT(th_hit[i],t_hit)); + fprintf(out_fp, + "\n"\ + "\n"\ + "\n", + th_file[i]/days_in_month,th_file[i], + PCENT(th_file[i],t_file)); + fprintf(out_fp, + "\n"\ + "\n"\ + "\n", + th_page[i]/days_in_month,th_page[i], + PCENT(th_page[i],t_page)); + fprintf(out_fp, + "\n" \ + "\n" \ + "\n", + (th_xfer[i]/days_in_month)/1024,th_xfer[i]/1024, + PCENT(th_xfer[i],t_xfer)); + avg_file += th_file[i]/days_in_month; + avg_xfer+= (th_xfer[i]/days_in_month)/1024; + } + fprintf(out_fp,"\n"); + fprintf(out_fp,"
"\ + "%s %s %d
" \ + "%s" \ + "%s" \ + "%s" \ + "%s" \ + "%s
" \ + "%s" \ + "%s" \ + "%s" \ + "%s" \ + "%s" \ + "%s" \ + "%s" \ + "%s
" \ + "%d%llu%llu%3.02f%%%llu%llu%3.02f%%%llu%llu%3.02f%%%.0f%.0f%3.02f%%
\n

\n"); +} + +/*********************************************/ +/* TOP_SITES_TABLE - generate top n table */ +/*********************************************/ + +void top_sites_table(int flag) +{ + u_int64_t cnt=0, h_reg=0, h_grp=0, h_hid=0, tot_num; + int i; + HNODEPTR hptr, *pointer; + + cnt=a_ctr; pointer=h_array; + while(cnt--) + { + /* calculate totals */ + switch ( (int)((HNODEPTR)(*pointer)->flag) ) + { + case OBJ_REG: h_reg++; break; + case OBJ_GRP: h_grp++; break; + case OBJ_HIDE: h_hid++; break; + } + pointer++; + } + + if ( (tot_num=h_reg+h_grp)==0 ) return; /* split if none */ + i=(flag)?ntop_sitesK:ntop_sites; /* Hits or KBytes?? */ + if (tot_num > i) tot_num = i; /* get max to do... */ + + if ((!flag) || (flag&&!ntop_sites)) /* now do tag */ + fprintf(out_fp,"\n"); + + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + if (flag) fprintf(out_fp,"\n", + GREY, msg_top_top,tot_num,msg_top_of, + t_site,msg_top_s,msg_h_by,msg_h_xfer); + else fprintf(out_fp,"\n", + GREY,msg_top_top, tot_num, msg_top_of, t_site, msg_top_s); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n",GREY); + fprintf(out_fp,"\n",HITCOLOR,msg_h_hits); + fprintf(out_fp,"\n",FILECOLOR,msg_h_files); + fprintf(out_fp,"\n",KBYTECOLOR,msg_h_xfer); + fprintf(out_fp,"\n",VISITCOLOR,msg_h_visits); + fprintf(out_fp,"\n",MISCCOLOR,msg_h_hname); + fprintf(out_fp,"\n"); + + pointer=h_array; i=0; + while(tot_num) + { + hptr=*pointer++; + if (hptr->flag != OBJ_HIDE) + { + /* shade grouping? */ + if (shade_groups && (hptr->flag==OBJ_GRP)) + fprintf(out_fp,"\n", GRPCOLOR); + else fprintf(out_fp,"\n"); + + fprintf(out_fp, + "\n" \ + "\n" \ + "\n" \ + "\n" \ + "\n" \ + "\n" \ + "\n" \ + "\n" \ + "\n" \ + "\n", + hptr->string); + else fprintf(out_fp,"%s\n", + hptr->string); + tot_num--; + i++; + } + } + + fprintf(out_fp,"\n"); + if ((!flag) || (flag&&!ntop_sites)) + { + if ( (all_sites) && ((h_reg+h_grp)>ntop_sites) ) + { + if (all_sites_page(h_reg, h_grp)) + { + fprintf(out_fp,"",GRPCOLOR); + fprintf(out_fp,"\n",msg_v_sites); + if (flag) /* do we need to sort? */ + qsort(h_array,a_ctr,sizeof(HNODEPTR),qs_site_cmph); + } + } + } + fprintf(out_fp,"
" \ + "%s %llu %s %llu %s %s %s
" \ + "%s %llu %s %llu %s
" \ + "#" \ + "%s" \ + "%s" \ + "%s" \ + "%s" \ + "%s
%d%llu%3.02f%%%llu%3.02f%%%.0f%3.02f%%%llu%3.02f%%", + i+1,hptr->count, + (t_hit==0)?0:((float)hptr->count/t_hit)*100.0,hptr->files, + (t_file==0)?0:((float)hptr->files/t_file)*100.0,hptr->xfer/1024, + (t_xfer==0)?0:((float)hptr->xfer/t_xfer)*100.0,hptr->visit, + (t_visit==0)?0:((float)hptr->visit/t_visit)*100.0); + + if ((hptr->flag==OBJ_GRP)&&hlite_groups) + fprintf(out_fp,"%s
\n"); + fprintf(out_fp,""); + fprintf(out_fp,"", + cur_year,cur_month,html_ext); + fprintf(out_fp,"%s
\n

\n"); +} + +/*********************************************/ +/* ALL_SITES_PAGE - HTML page of all sites */ +/*********************************************/ + +int all_sites_page(u_int64_t h_reg, u_int64_t h_grp) +{ + HNODEPTR hptr, *pointer; + char site_fname[256], buffer[256]; + FILE *out_fp; + int i=(h_grp)?1:0; + + /* generate file name */ + snprintf(site_fname,sizeof(site_fname),"site_%04d%02d.%s", + cur_year,cur_month,html_ext); + + /* open file */ + if ( (out_fp=open_out_file(site_fname))==NULL ) return 0; + + snprintf(buffer,sizeof(buffer),"%s %d - %s", + l_month[cur_month-1],cur_year,msg_h_sites); + write_html_head(buffer, out_fp); + + fprintf(out_fp,"

\n");
+
+   fprintf(out_fp," %12s      %12s      %12s      %12s      %s\n",
+           msg_h_hits, msg_h_files, msg_h_xfer, msg_h_visits, msg_h_hname);
+   fprintf(out_fp,"----------------  ----------------  ----------------  " \
+                  "----------------  --------------------\n\n");
+
+   /* Do groups first (if any) */
+   pointer=h_array;
+   while(h_grp)
+   {
+      hptr=*pointer++;
+      if (hptr->flag == OBJ_GRP)
+      {
+         fprintf(out_fp,
+            "%-8llu %6.02f%%  %8llu %6.02f%%  %8.0f %6.02f%%  "            \
+            "%8llu %6.02f%%  %s\n",
+            hptr->count,
+            (t_hit==0)?0:((float)hptr->count/t_hit)*100.0,hptr->files,
+            (t_file==0)?0:((float)hptr->files/t_file)*100.0,hptr->xfer/1024,
+            (t_xfer==0)?0:((float)hptr->xfer/t_xfer)*100.0,hptr->visit,
+            (t_visit==0)?0:((float)hptr->visit/t_visit)*100.0,
+            hptr->string);
+         h_grp--;
+      }
+   }
+
+   if (i) fprintf(out_fp,"\n");
+
+   /* Now do individual sites (if any) */
+   pointer=h_array;
+   if (!hide_sites) while(h_reg)
+   {
+      hptr=*pointer++;
+      if (hptr->flag == OBJ_REG)
+      {
+         fprintf(out_fp,
+            "%-8llu %6.02f%%  %8llu %6.02f%%  %8.0f %6.02f%%  "            \
+            "%8llu %6.02f%%  %s\n",
+            hptr->count,
+            (t_hit==0)?0:((float)hptr->count/t_hit)*100.0,hptr->files,
+            (t_file==0)?0:((float)hptr->files/t_file)*100.0,hptr->xfer/1024,
+            (t_xfer==0)?0:((float)hptr->xfer/t_xfer)*100.0,hptr->visit,
+            (t_visit==0)?0:((float)hptr->visit/t_visit)*100.0,
+            hptr->string);
+         h_reg--;
+      }
+   }
+
+   fprintf(out_fp,"
\n"); + write_html_tail(out_fp); + fclose(out_fp); + return 1; +} + +/*********************************************/ +/* TOP_URLS_TABLE - generate top n table */ +/*********************************************/ + +void top_urls_table(int flag) +{ + u_int64_t cnt=0,u_reg=0,u_grp=0,u_hid=0, tot_num; + int i; + UNODEPTR uptr, *pointer; + + cnt=a_ctr; pointer=u_array; + while (cnt--) + { + /* calculate totals */ + switch ( (int)((UNODEPTR)(*pointer)->flag) ) + { + case OBJ_REG: u_reg++; break; + case OBJ_GRP: u_grp++; break; + case OBJ_HIDE: u_hid++; break; + } + pointer++; + } + + if ( (tot_num=u_reg+u_grp)==0 ) return; /* split if none */ + i=(flag)?ntop_urlsK:ntop_urls; /* Hits or KBytes?? */ + if (tot_num > i) tot_num = i; /* get max to do... */ + if ((!flag) || (flag&&!ntop_urls)) /* now do tag */ + fprintf(out_fp,"\n"); + + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + if (flag) fprintf(out_fp,"\n", + GREY,msg_top_top,tot_num,msg_top_of, + t_url,msg_top_u,msg_h_by,msg_h_xfer); + else fprintf(out_fp,"\n", + GREY,msg_top_top,tot_num,msg_top_of,t_url,msg_top_u); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n",GREY); + fprintf(out_fp,"\n", + HITCOLOR,msg_h_hits); + fprintf(out_fp,"\n", + KBYTECOLOR,msg_h_xfer); + fprintf(out_fp,"\n", + MISCCOLOR,msg_h_url); + fprintf(out_fp,"\n"); + + pointer=u_array; i=0; + while (tot_num) + { + uptr=*pointer++; /* point to the URL node */ + if (uptr->flag != OBJ_HIDE) + { + /* shade grouping? */ + if (shade_groups && (uptr->flag==OBJ_GRP)) + fprintf(out_fp,"\n", GRPCOLOR); + else fprintf(out_fp,"\n"); + + fprintf(out_fp, + "\n" \ + "\n"\ + "\n" \ + "\n"\ + "\n" \ + "\n", + uptr->string); + else fprintf(out_fp,"%s\n",uptr->string); + } + else + { + /* check for a service prefix (ie: http://) */ + if (strstr(uptr->string,"://")!=NULL) + fprintf(out_fp,"%s\n", + uptr->string,uptr->string); + else + { + if (log_type == LOG_FTP) /* FTP log? */ + fprintf(out_fp,"%s\n",uptr->string); + else + { /* Web log */ + if (use_https) + /* secure server mode, use https:// */ + fprintf(out_fp, + "%s\n", + hname,uptr->string,uptr->string); + else + /* otherwise use standard 'http://' */ + fprintf(out_fp, + "%s\n", + hname,uptr->string,uptr->string); + } + } + } + tot_num--; + i++; + } + } + fprintf(out_fp,"\n"); + if ((!flag) || (flag&&!ntop_urls)) + { + if ( (all_urls) && ((u_reg+u_grp)>ntop_urls) ) + { + if (all_urls_page(u_reg, u_grp)) + { + fprintf(out_fp,"",GRPCOLOR); + fprintf(out_fp,"\n",msg_v_urls); + if (flag) /* do we need to sort first? */ + qsort(u_array,a_ctr,sizeof(UNODEPTR),qs_url_cmph); + } + } + } + fprintf(out_fp,"
" \ + "%s %llu %s %llu %s %s %s
" \ + "%s %llu %s %llu %s
" \ + "#" \ + "%s" \ + "%s" \ + "%s
%d%llu%3.02f%%%.0f%3.02f%%", + i+1,uptr->count, + (t_hit==0)?0:((float)uptr->count/t_hit)*100.0, + uptr->xfer/1024, + (t_xfer==0)?0:((float)uptr->xfer/t_xfer)*100.0); + + if (uptr->flag==OBJ_GRP) + { + if (hlite_groups) + fprintf(out_fp,"%s
\n"); + fprintf(out_fp,""); + fprintf(out_fp,"", + cur_year,cur_month,html_ext); + fprintf(out_fp,"%s
\n

\n"); +} + +/*********************************************/ +/* ALL_URLS_PAGE - HTML page of all urls */ +/*********************************************/ + +int all_urls_page(u_int64_t u_reg, u_int64_t u_grp) +{ + UNODEPTR uptr, *pointer; + char url_fname[256], buffer[256]; + FILE *out_fp; + int i=(u_grp)?1:0; + + /* generate file name */ + snprintf(url_fname,sizeof(url_fname),"url_%04d%02d.%s", + cur_year,cur_month,html_ext); + + /* open file */ + if ( (out_fp=open_out_file(url_fname))==NULL ) return 0; + + snprintf(buffer,sizeof(buffer),"%s %d - %s", + l_month[cur_month-1],cur_year,msg_h_url); + write_html_head(buffer, out_fp); + + fprintf(out_fp,"

\n");
+
+   fprintf(out_fp," %12s      %12s      %s\n",
+           msg_h_hits,msg_h_xfer,msg_h_url);
+   fprintf(out_fp,"----------------  ----------------  " \
+                  "--------------------\n\n");
+
+   /* do groups first (if any) */
+   pointer=u_array;
+   while (u_grp)
+   {
+      uptr=*pointer++;
+      if (uptr->flag == OBJ_GRP)
+      {
+         fprintf(out_fp,"%-8llu %6.02f%%  %8.0f %6.02f%%  %s\n",
+            uptr->count,
+            (t_hit==0)?0:((float)uptr->count/t_hit)*100.0,
+            uptr->xfer/1024,
+            (t_xfer==0)?0:((float)uptr->xfer/t_xfer)*100.0,
+            uptr->string);
+         u_grp--;
+      }
+   }
+
+   if (i) fprintf(out_fp,"\n");
+
+   /* now do invididual sites (if any) */
+   pointer=u_array;
+   while (u_reg)
+   {
+      uptr=*pointer++;
+      if (uptr->flag == OBJ_REG)
+      {
+         fprintf(out_fp,"%-8llu %6.02f%%  %8.0f %6.02f%%  %s\n",
+            uptr->count,
+            (t_hit==0)?0:((float)uptr->count/t_hit)*100.0,
+            uptr->xfer/1024,
+            (t_xfer==0)?0:((float)uptr->xfer/t_xfer)*100.0,
+            uptr->string);
+         u_reg--;
+      }
+   }
+
+   fprintf(out_fp,"
\n"); + write_html_tail(out_fp); + fclose(out_fp); + return 1; +} + +/*********************************************/ +/* TOP_ENTRY_TABLE - top n entry/exit urls */ +/*********************************************/ + +void top_entry_table(int flag) +{ + u_int64_t cnt=0, u_entry=0, u_exit=0, tot_num; + u_int64_t t_entry=0, t_exit=0; + int i; + UNODEPTR uptr, *pointer; + + cnt=a_ctr; pointer=u_array; + while (cnt--) + { + if ( (int)((UNODEPTR)(*pointer)->flag) == OBJ_REG ) + { + if ( (u_int64_t)(((UNODEPTR)(*pointer))->entry) ) + { u_entry++; t_entry+=(u_int64_t)(((UNODEPTR)(*pointer))->entry); } + if ( (u_int64_t)(((UNODEPTR)(*pointer))->exit) ) + { u_exit++; t_exit +=(u_int64_t)(((UNODEPTR)(*pointer))->exit); } + } + pointer++; + } + + /* calculate how many we have */ + tot_num=(flag)?u_exit:u_entry; + if (flag) { if (tot_num > ntop_exit ) tot_num=ntop_exit; } + else { if (tot_num > ntop_entry) tot_num=ntop_entry; } + + /* return if none to do */ + if (!tot_num) return; + + if (flag) fprintf(out_fp,"\n"); /* do anchor tag */ + else fprintf(out_fp,"\n"); + + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n", + GREY,msg_top_top,tot_num,msg_top_of, + (flag)?u_exit:u_entry,(flag)?msg_top_ex:msg_top_en); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n", + GREY); + fprintf(out_fp,"\n", + HITCOLOR,msg_h_hits); + fprintf(out_fp,"\n", + VISITCOLOR,msg_h_visits); + fprintf(out_fp,"\n", + MISCCOLOR,msg_h_url); + fprintf(out_fp,"\n"); + + pointer=u_array; i=0; + while (tot_num) + { + uptr=*pointer++; + if (uptr->flag != OBJ_HIDE) + { + fprintf(out_fp,"\n"); + fprintf(out_fp, + "\n" \ + "\n"\ + "\n" \ + "\n"\ + "\n" \ + "\n", + uptr->string,uptr->string); + else + { + if (use_https) + /* secure server mode, use https:// */ + fprintf(out_fp, + "%s\n", + hname,uptr->string,uptr->string); + else + /* otherwise use standard 'http://' */ + fprintf(out_fp, + "%s\n", + hname,uptr->string,uptr->string); + } + tot_num--; + i++; + } + } + fprintf(out_fp,"\n"); + fprintf(out_fp,"
" \ + "%s %llu %s %llu %s
" \ + "#" \ + "%s" \ + "%s" \ + "%s
%d%llu%3.02f%%%llu%3.02f%%", + i+1,uptr->count, + (t_hit==0)?0:((float)uptr->count/t_hit)*100.0, + (flag)?uptr->exit:uptr->entry, + (flag)?((t_exit==0)?0:((float)uptr->exit/t_exit)*100.0) + :((t_entry==0)?0:((float)uptr->entry/t_entry)*100.0)); + + /* check for a service prefix (ie: http://) */ + if (strstr(uptr->string,"://")!=NULL) + fprintf(out_fp, + "%s
\n

\n"); +} + +/*********************************************/ +/* TOP_REFS_TABLE - generate top n table */ +/*********************************************/ + +void top_refs_table() +{ + u_int64_t cnt=0, r_reg=0, r_grp=0, r_hid=0, tot_num; + int i; + RNODEPTR rptr, *pointer; + + if (t_ref==0) return; /* return if none to process */ + + cnt=a_ctr; pointer=r_array; + while(cnt--) + { + /* calculate totals */ + switch ( (int)((RNODEPTR)(*pointer)->flag) ) + { + case OBJ_REG: r_reg++; break; + case OBJ_HIDE: r_hid++; break; + case OBJ_GRP: r_grp++; break; + } + pointer++; + } + + if ( (tot_num=r_reg+r_grp)==0 ) return; /* split if none */ + if (tot_num > ntop_refs) tot_num=ntop_refs; /* get max to do... */ + + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n", + GREY, msg_top_top, tot_num, msg_top_of, t_ref, msg_top_r); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n", + GREY); + fprintf(out_fp,"\n", + HITCOLOR,msg_h_hits); + fprintf(out_fp,"\n", + MISCCOLOR,msg_h_ref); + fprintf(out_fp,"\n"); + + pointer=r_array; i=0; + while(tot_num) + { + rptr=*pointer++; + if (rptr->flag != OBJ_HIDE) + { + /* shade grouping? */ + if (shade_groups && (rptr->flag==OBJ_GRP)) + fprintf(out_fp,"\n", GRPCOLOR); + else fprintf(out_fp,"\n"); + + fprintf(out_fp, + "\n" \ + "\n" \ + "\n" \ + "\n"); + tot_num--; + i++; + } + } + fprintf(out_fp,"\n"); + if ( (all_refs) && ((r_reg+r_grp)>ntop_refs) ) + { + if (all_refs_page(r_reg, r_grp)) + { + fprintf(out_fp,"",GRPCOLOR); + fprintf(out_fp,"\n",msg_v_refs); + } + } + fprintf(out_fp,"
" \ + "%s %llu %s %llu %s
" \ + "#" \ + "%s" \ + "%s
%d%llu%3.02f%%", + i+1,rptr->count, + (t_hit==0)?0:((float)rptr->count/t_hit)*100.0); + + if (rptr->flag==OBJ_GRP) + { + if (hlite_groups) + fprintf(out_fp,"%s",rptr->string); + else fprintf(out_fp,"%s",rptr->string); + } + else + { + /* only link if enabled and has a service prefix */ + if ( (strstr(rptr->string,"://")!=NULL) && link_referrer ) + fprintf(out_fp,"%s", + rptr->string, rptr->string); + else + fprintf(out_fp,"%s", rptr->string); + } + fprintf(out_fp,"
\n"); + fprintf(out_fp,""); + fprintf(out_fp,"", + cur_year,cur_month,html_ext); + fprintf(out_fp,"%s
\n

\n"); +} + +/*********************************************/ +/* ALL_REFS_PAGE - HTML page of all refs */ +/*********************************************/ + +int all_refs_page(u_int64_t r_reg, u_int64_t r_grp) +{ + RNODEPTR rptr, *pointer; + char ref_fname[256], buffer[256]; + FILE *out_fp; + int i=(r_grp)?1:0; + + /* generate file name */ + snprintf(ref_fname,sizeof(ref_fname),"ref_%04d%02d.%s", + cur_year,cur_month,html_ext); + + /* open file */ + if ( (out_fp=open_out_file(ref_fname))==NULL ) return 0; + + snprintf(buffer,sizeof(buffer),"%s %d - %s", + l_month[cur_month-1],cur_year,msg_h_ref); + write_html_head(buffer, out_fp); + + fprintf(out_fp,"

\n");
+
+   fprintf(out_fp," %12s      %s\n",msg_h_hits,msg_h_ref);
+   fprintf(out_fp,"----------------  --------------------\n\n");
+
+   /* do groups first (if any) */
+   pointer=r_array;
+   while(r_grp)
+   {
+      rptr=*pointer++;
+      if (rptr->flag == OBJ_GRP)
+      {
+         fprintf(out_fp,"%-8llu %6.02f%%  %s\n",
+            rptr->count,
+            (t_hit==0)?0:((float)rptr->count/t_hit)*100.0,
+            rptr->string);
+         r_grp--;
+      }
+   }
+
+   if (i) fprintf(out_fp,"\n");
+
+   pointer=r_array;
+   while(r_reg)
+   {
+      rptr=*pointer++;
+      if (rptr->flag == OBJ_REG)
+      {
+         fprintf(out_fp,"%-8llu %6.02f%%  %s\n",
+            rptr->count,
+            (t_hit==0)?0:((float)rptr->count/t_hit)*100.0,
+            rptr->string);
+         r_reg--;
+      }
+   }
+
+   fprintf(out_fp,"
\n"); + write_html_tail(out_fp); + fclose(out_fp); + return 1; +} + +/*********************************************/ +/* TOP_AGENTS_TABLE - generate top n table */ +/*********************************************/ + +void top_agents_table() +{ + u_int64_t cnt, a_reg=0, a_grp=0, a_hid=0, tot_num; + int i; + ANODEPTR aptr, *pointer; + + if (t_agent == 0) return; /* don't bother if we don't have any */ + + cnt=a_ctr; pointer=a_array; + while(cnt--) + { + /* calculate totals */ + switch ( (int)((ANODEPTR)(*pointer)->flag) ) + { + case OBJ_REG: a_reg++; break; + case OBJ_GRP: a_grp++; break; + case OBJ_HIDE: a_hid++; break; + } + pointer++; + } + + if ( (tot_num=a_reg+a_grp)==0 ) return; /* split if none */ + if (tot_num > ntop_agents) tot_num=ntop_agents; /* get max to do... */ + + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n", + GREY, msg_top_top, tot_num, msg_top_of, t_agent, msg_top_a); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n", + GREY); + fprintf(out_fp,"\n", + HITCOLOR,msg_h_hits); + fprintf(out_fp,"\n", + MISCCOLOR,msg_h_agent); + fprintf(out_fp,"\n"); + + pointer=a_array; i=0; + while(tot_num) + { + aptr=*pointer++; + if (aptr->flag != OBJ_HIDE) + { + /* shade grouping? */ + if (shade_groups && (aptr->flag==OBJ_GRP)) + fprintf(out_fp,"\n", GRPCOLOR); + else fprintf(out_fp,"\n"); + + fprintf(out_fp, + "\n" \ + "\n"\ + "\n" \ + "\n", + aptr->string); + else fprintf(out_fp,"%s\n", + aptr->string); + tot_num--; + i++; + } + } + fprintf(out_fp,"\n"); + if ( (all_agents) && ((a_reg+a_grp)>ntop_agents) ) + { + if (all_agents_page(a_reg, a_grp)) + { + fprintf(out_fp,"",GRPCOLOR); + fprintf(out_fp,"\n",msg_v_agents); + } + } + fprintf(out_fp,"
" \ + "%s %llu %s %llu %s
" \ + "#" \ + "%s" \ + "%s
%d%llu%3.02f%%", + i+1,aptr->count, + (t_hit==0)?0:((float)aptr->count/t_hit)*100.0); + + if ((aptr->flag==OBJ_GRP)&&hlite_groups) + fprintf(out_fp,"%s
\n"); + fprintf(out_fp,""); + fprintf(out_fp,"", + cur_year,cur_month,html_ext); + fprintf(out_fp,"%s
\n

\n"); +} + +/*********************************************/ +/* ALL_AGENTS_PAGE - HTML user agent page */ +/*********************************************/ + +int all_agents_page(u_int64_t a_reg, u_int64_t a_grp) +{ + ANODEPTR aptr, *pointer; + char agent_fname[256], buffer[256]; + FILE *out_fp; + int i=(a_grp)?1:0; + + /* generate file name */ + snprintf(agent_fname,sizeof(agent_fname),"agent_%04d%02d.%s", + cur_year,cur_month,html_ext); + + /* open file */ + if ( (out_fp=open_out_file(agent_fname))==NULL ) return 0; + + snprintf(buffer,sizeof(buffer),"%s %d - %s", + l_month[cur_month-1],cur_year,msg_h_agent); + write_html_head(buffer, out_fp); + + fprintf(out_fp,"

\n");
+
+   fprintf(out_fp," %12s      %s\n",msg_h_hits,msg_h_agent);
+   fprintf(out_fp,"----------------  ----------------------\n\n");
+
+   /* do groups first (if any) */
+   pointer=a_array;
+   while(a_grp)
+   {
+      aptr=*pointer++;
+      if (aptr->flag == OBJ_GRP)
+      {
+         fprintf(out_fp,"%-8llu %6.02f%%  %s\n",
+             aptr->count,
+             (t_hit==0)?0:((float)aptr->count/t_hit)*100.0,
+             aptr->string);
+         a_grp--;
+      }
+   }
+
+   if (i) fprintf(out_fp,"\n");
+
+   pointer=a_array;
+   while(a_reg)
+   {
+      aptr=*pointer++;
+      if (aptr->flag == OBJ_REG)
+      {
+         fprintf(out_fp,"%-8llu %6.02f%%  %s\n",
+             aptr->count,
+             (t_hit==0)?0:((float)aptr->count/t_hit)*100.0,
+             aptr->string);
+         a_reg--;
+      }
+   }
+
+   fprintf(out_fp,"
\n"); + write_html_tail(out_fp); + fclose(out_fp); + return 1; +} + +/*********************************************/ +/* TOP_SEARCH_TABLE - generate top n table */ +/*********************************************/ + +void top_search_table() +{ + u_int64_t cnt,t_val=0, tot_num; + int i; + SNODEPTR sptr, *pointer; + + if (a_ctr==0) return; /* don't bother if none to do */ + + cnt=tot_num=a_ctr; pointer=s_array; + while(cnt--) + { + t_val+=(u_int64_t)(((SNODEPTR)(*pointer))->count); + pointer++; + } + + if ( tot_num > ntop_search) tot_num=ntop_search; + + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n", + GREY, msg_top_top, tot_num, msg_top_of, a_ctr, msg_top_sr); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n", + GREY); + fprintf(out_fp,"\n", + HITCOLOR,msg_h_hits); + fprintf(out_fp,"\n", + MISCCOLOR,msg_h_search); + fprintf(out_fp,"\n"); + + pointer=s_array; i=0; + while(tot_num) + { + sptr=*pointer++; + fprintf(out_fp, + "\n" \ + "\n" \ + "\n"\ + "\n" \ + "\n",sptr->string); + tot_num--; + i++; + } + fprintf(out_fp,"\n"); + if ( (all_search) && (a_ctr>ntop_search) ) + { + if (all_search_page(a_ctr, t_val)) + { + fprintf(out_fp,"",GRPCOLOR); + fprintf(out_fp,"\n",msg_v_search); + } + } + fprintf(out_fp,"
" \ + "%s %llu %s %llu %s
" \ + "#" \ + "%s" \ + "%s
%d%llu%3.02f%%", + i+1,sptr->count, + (t_val==0)?0:((float)sptr->count/t_val)*100.0); + fprintf(out_fp,"%s
\n"); + fprintf(out_fp,""); + fprintf(out_fp,"", + cur_year,cur_month,html_ext); + fprintf(out_fp,"%s
\n

\n"); +} + +/*********************************************/ +/* ALL_SEARCH_PAGE - HTML for search strings */ +/*********************************************/ + +int all_search_page(u_int64_t tot_num, u_int64_t t_val) +{ + SNODEPTR sptr, *pointer; + char search_fname[256], buffer[256]; + FILE *out_fp; + + if (!tot_num) return 0; + + /* generate file name */ + snprintf(search_fname,sizeof(search_fname),"search_%04d%02d.%s", + cur_year,cur_month,html_ext); + + /* open file */ + if ( (out_fp=open_out_file(search_fname))==NULL ) return 0; + + snprintf(buffer,sizeof(buffer),"%s %d - %s", + l_month[cur_month-1],cur_year,msg_h_search); + write_html_head(buffer, out_fp); + + fprintf(out_fp,"

\n");
+
+   fprintf(out_fp," %12s      %s\n",msg_h_hits,msg_h_search);
+   fprintf(out_fp,"----------------  ----------------------\n\n");
+
+   pointer=s_array;
+   while(tot_num)
+   {
+      sptr=*pointer++;
+      fprintf(out_fp,"%-8llu %6.02f%%  %s\n",
+         sptr->count,
+         (t_val==0)?0:((float)sptr->count/t_val)*100.0,
+         sptr->string);
+      tot_num--;
+   }
+   fprintf(out_fp,"
\n"); + write_html_tail(out_fp); + fclose(out_fp); + return 1; +} + +/*********************************************/ +/* TOP_USERS_TABLE - generate top n table */ +/*********************************************/ + +void top_users_table() +{ + u_int64_t cnt=0, i_reg=0, i_grp=0, i_hid=0, tot_num; + int i; + INODEPTR iptr, *pointer; + + cnt=a_ctr; pointer=i_array; + while(cnt--) + { + /* calculate totals */ + switch ( (int)((INODEPTR)(*pointer)->flag) ) + { + case OBJ_REG: i_reg++; break; + case OBJ_GRP: i_grp++; break; + case OBJ_HIDE: i_hid++; break; + } + pointer++; + } + + if ( (tot_num=i_reg+i_grp)==0 ) return; /* split if none */ + if (tot_num > ntop_users) tot_num = ntop_users; + + fprintf(out_fp,"\n"); /* now do tag */ + + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n", + GREY,msg_top_top, tot_num, msg_top_of, t_user, msg_top_i); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n",GREY); + fprintf(out_fp,"\n",HITCOLOR,msg_h_hits); + fprintf(out_fp,"\n",FILECOLOR,msg_h_files); + fprintf(out_fp,"\n",KBYTECOLOR,msg_h_xfer); + fprintf(out_fp,"\n",VISITCOLOR,msg_h_visits); + fprintf(out_fp,"\n",MISCCOLOR,msg_h_uname); + fprintf(out_fp,"\n"); + + pointer=i_array; i=0; + while(tot_num) + { + iptr=*pointer++; + if (iptr->flag != OBJ_HIDE) + { + /* shade grouping? */ + if (shade_groups && (iptr->flag==OBJ_GRP)) + fprintf(out_fp,"\n", GRPCOLOR); + else fprintf(out_fp,"\n"); + + fprintf(out_fp, + "\n" \ + "\n" \ + "\n" \ + "\n" \ + "\n" \ + "\n" \ + "\n" \ + "\n" \ + "\n" \ + "\n", + iptr->string); + else fprintf(out_fp,"%s\n", + iptr->string); + tot_num--; + i++; + } + } + + fprintf(out_fp,"\n"); + if ( (all_users) && ((i_reg+i_grp)>ntop_users) ) + { + if (all_users_page(i_reg, i_grp)) + { + fprintf(out_fp,"",GRPCOLOR); + fprintf(out_fp,"\n",msg_v_users); + } + } + fprintf(out_fp,"
" \ + "%s %llu %s %llu %s
" \ + "#" \ + "%s" \ + "%s" \ + "%s" \ + "%s" \ + "%s
%d%llu%3.02f%%%llu%3.02f%%%.0f%3.02f%%%llu%3.02f%%", + i+1,iptr->count, + (t_hit==0)?0:((float)iptr->count/t_hit)*100.0,iptr->files, + (t_file==0)?0:((float)iptr->files/t_file)*100.0,iptr->xfer/1024, + (t_xfer==0)?0:((float)iptr->xfer/t_xfer)*100.0,iptr->visit, + (t_visit==0)?0:((float)iptr->visit/t_visit)*100.0); + + if ((iptr->flag==OBJ_GRP)&&hlite_groups) + fprintf(out_fp,"%s
\n"); + fprintf(out_fp,""); + fprintf(out_fp,"", + cur_year,cur_month,html_ext); + fprintf(out_fp,"%s
\n

\n"); +} + +/*********************************************/ +/* ALL_USERS_PAGE - HTML of all usernames */ +/*********************************************/ + +int all_users_page(u_int64_t i_reg, u_int64_t i_grp) +{ + INODEPTR iptr, *pointer; + char user_fname[256], buffer[256]; + FILE *out_fp; + int i=(i_grp)?1:0; + + /* generate file name */ + snprintf(user_fname,sizeof(user_fname),"user_%04d%02d.%s", + cur_year,cur_month,html_ext); + + /* open file */ + if ( (out_fp=open_out_file(user_fname))==NULL ) return 0; + + snprintf(buffer,sizeof(buffer),"%s %d - %s", + l_month[cur_month-1],cur_year,msg_h_uname); + write_html_head(buffer, out_fp); + + fprintf(out_fp,"

\n");
+
+   fprintf(out_fp," %12s      %12s      %12s      %12s      %s\n",
+           msg_h_hits, msg_h_files, msg_h_xfer, msg_h_visits, msg_h_uname);
+   fprintf(out_fp,"----------------  ----------------  ----------------  " \
+                  "----------------  --------------------\n\n");
+
+   /* Do groups first (if any) */
+   pointer=i_array;
+   while(i_grp)
+   {
+      iptr=*pointer++;
+      if (iptr->flag == OBJ_GRP)
+      {
+         fprintf(out_fp,
+      "%-8llu %6.02f%%  %8llu %6.02f%%  %8.0f %6.02f%%  %8llu %6.02f%%  %s\n",
+            iptr->count,
+            (t_hit==0)?0:((float)iptr->count/t_hit)*100.0,iptr->files,
+            (t_file==0)?0:((float)iptr->files/t_file)*100.0,iptr->xfer/1024,
+            (t_xfer==0)?0:((float)iptr->xfer/t_xfer)*100.0,iptr->visit,
+            (t_visit==0)?0:((float)iptr->visit/t_visit)*100.0,
+            iptr->string);
+         i_grp--;
+      }
+   }
+
+   if (i) fprintf(out_fp,"\n");
+
+   /* Now do individual users (if any) */
+   pointer=i_array;
+   while(i_reg)
+   {
+      iptr=*pointer++;
+      if (iptr->flag == OBJ_REG)
+      {
+         fprintf(out_fp,
+      "%-8llu %6.02f%%  %8llu %6.02f%%  %8.0f %6.02f%%  %8llu %6.02f%%  %s\n",
+            iptr->count,
+            (t_hit==0)?0:((float)iptr->count/t_hit)*100.0,iptr->files,
+            (t_file==0)?0:((float)iptr->files/t_file)*100.0,iptr->xfer/1024,
+            (t_xfer==0)?0:((float)iptr->xfer/t_xfer)*100.0,iptr->visit,
+            (t_visit==0)?0:((float)iptr->visit/t_visit)*100.0,
+            iptr->string);
+         i_reg--;
+      }
+   }
+
+   fprintf(out_fp,"
\n"); + write_html_tail(out_fp); + fclose(out_fp); + return 1; +} + +/*********************************************/ +/* TOP_CTRY_TABLE - top countries table */ +/*********************************************/ + +void top_ctry_table() +{ + int i,j,x,tot_num=0,tot_ctry=0; + int ctry_fnd=0; + u_int64_t idx; + HNODEPTR hptr; + char *domain; + u_int64_t pie_data[10]; + char *pie_legend[10]; + char pie_title[48]; + char pie_fname[48]; + char flag_buf[256]; + + extern int ctry_graph; /* include external flag */ + +#ifdef USE_GEOIP + extern int geoip; + extern GeoIP *geo_fp; + const char *geo_rc=NULL; +#endif + char geo_ctry[3]="--"; + + /* scan hash table adding up domain totals */ + for (i=0;iflag != OBJ_GRP) /* ignore group totals */ + { + if (isipaddr(hptr->string)>0) + { + idx=0; /* unresolved/unknown */ +#ifdef USE_DNS + if (geodb) + { + /* Lookup IP address here, turn into idx */ + geodb_get_cc(geo_db, hptr->string, geo_ctry); + if (geo_ctry[0]=='-') + { + if (debug_mode) + fprintf(stderr,"GeoDB: %s unknown!\n",hptr->string); + } + else idx=ctry_idx(geo_ctry); + } +#endif +#ifdef USE_GEOIP + if (geoip) + { + /* Lookup IP address here, turn into idx */ + geo_rc=GeoIP_country_code_by_addr(geo_fp, hptr->string); + if (geo_rc==NULL||geo_rc[0]=='\0'||geo_rc[0]=='-') + { + if (debug_mode) + fprintf(stderr,"GeoIP: %s unknown (returns '%s')\n", + hptr->string,(geo_rc==NULL)?"null":geo_rc); + } + else + { + /* index returned geo_ctry */ + geo_ctry[0]=tolower(geo_rc[0]); + geo_ctry[1]=tolower(geo_rc[1]); + idx=ctry_idx(geo_ctry); + } + } +#endif /* USE_GEOIP */ + } + else + { + /* resolved hostname.. try to get TLD */ + domain = hptr->string+strlen(hptr->string)-1; + while ( (*domain!='.')&&(domain!=hptr->string)) domain--; + if (domain++==hptr->string) idx=0; + else idx=ctry_idx(domain); + } + if (idx!=0) + { + ctry_fnd=0; + for (j=0;ctry[j].desc;j++) + { + if (idx==ctry[j].idx) + { + ctry[j].count+=hptr->count; + ctry[j].files+=hptr->files; + ctry[j].xfer +=hptr->xfer; + ctry_fnd=1; + break; + } + } + } + if (!ctry_fnd || idx==0) + { + ctry[0].count+=hptr->count; + ctry[0].files+=hptr->files; + ctry[0].xfer +=hptr->xfer; + } + } + hptr=hptr->next; + } + } + + for (i=0;ctry[i].desc;i++) + { + if (ctry[i].count!=0) tot_ctry++; + for (j=0;j top_ctrys[j]->count) + { + for (x=ntop_ctrys-1;x>j;x--) + top_ctrys[x]=top_ctrys[x-1]; + top_ctrys[x]=&ctry[i]; + break; + } + } + } + } + + /* put our anchor tag first... */ + fprintf(out_fp,"
\n"); + + /* generate pie chart if needed */ + if (ctry_graph) + { + for (i=0;i<10;i++) pie_data[i]=0; /* init data array */ + if (ntop_ctrys<10) j=ntop_ctrys; else j=10; /* ensure data size */ + + for (i=0;icount; /* load the array */ + pie_legend[i]=top_ctrys[i]->desc; + } + snprintf(pie_title,sizeof(pie_title),"%s %s %d", + msg_ctry_use,l_month[cur_month-1],cur_year); + sprintf(pie_fname,"ctry_usage_%04d%02d.png",cur_year,cur_month); + + pie_chart(pie_fname,pie_title,t_hit,pie_data,pie_legend); /* do it */ + + /* put the image tag in the page */ + fprintf(out_fp,"\"%s\"

\n",pie_fname,pie_title); + } + + /* Now do the table */ + + for (i=0;icount!=0) tot_num++; + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n", + GREY,msg_top_top,tot_num,msg_top_of,tot_ctry,msg_top_c); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n",GREY); + fprintf(out_fp,"\n",HITCOLOR,msg_h_hits); + fprintf(out_fp,"\n",FILECOLOR,msg_h_files); + fprintf(out_fp,"\n",KBYTECOLOR,msg_h_xfer); + fprintf(out_fp,"\n",MISCCOLOR,msg_h_ctry); + fprintf(out_fp,"\n"); + for (i=0;iidx)); + if (strlen(domain)<3 && idx!=0) /* only to ccTLDs */ + { + if ( domain[0]!='a'||domain[1]!='p' ) /* all but 'ap' */ + snprintf(flag_buf,sizeof(flag_buf), + "\"%s\" ", + flag_dir,domain,top_ctrys[i]->desc); + } + } + + if (top_ctrys[i]->count!=0) + fprintf(out_fp,"" \ + "\n" \ + "\n"\ + "\n" \ + "\n"\ + "\n" \ + "\n"\ + "\n" \ + "\n", + i+1,top_ctrys[i]->count, + (t_hit==0)?0:((float)top_ctrys[i]->count/t_hit)*100.0, + top_ctrys[i]->files, + (t_file==0)?0:((float)top_ctrys[i]->files/t_file)*100.0, + top_ctrys[i]->xfer/1024, + (t_xfer==0)?0:((float)top_ctrys[i]->xfer/t_xfer)*100.0, + flag_buf,top_ctrys[i]->desc); + } + fprintf(out_fp,"\n"); + fprintf(out_fp,"
" \ + "%s %d %s %d %s
" \ + "#" \ + "%s" \ + "%s" \ + "%s" \ + "%s
%d%llu%3.02f%%%llu%3.02f%%%.0f%3.02f%%%s%s" \ + "
\n

\n"); +} + +/*********************************************/ +/* DUMP_ALL_SITES - dump sites to tab file */ +/*********************************************/ + +void dump_all_sites() +{ + HNODEPTR hptr, *pointer; + FILE *out_fp; + char filename[256]; + u_int64_t cnt=a_ctr; + + /* generate file name */ + snprintf(filename,sizeof(filename),"%s/site_%04d%02d.%s", + (dump_path)?dump_path:".",cur_year,cur_month,dump_ext); + + /* open file */ + if ( (out_fp=open_out_file(filename))==NULL ) return; + + /* need a header? */ + if (dump_header) + { + fprintf(out_fp,"%s\t%s\t%s\t%s\t%s\n", + msg_h_hits,msg_h_files,msg_h_xfer,msg_h_visits,msg_h_hname); + } + + /* dump 'em */ + pointer=h_array; + while (cnt) + { + hptr=*pointer++; + if (hptr->flag != OBJ_GRP) + { + fprintf(out_fp, + "%llu\t%llu\t%.0f\t%llu\t%s\n", + hptr->count,hptr->files,hptr->xfer/1024, + hptr->visit,hptr->string); + } + cnt--; + } + fclose(out_fp); + return; +} + +/*********************************************/ +/* DUMP_ALL_URLS - dump all urls to tab file */ +/*********************************************/ + +void dump_all_urls() +{ + UNODEPTR uptr, *pointer; + FILE *out_fp; + char filename[256]; + u_int64_t cnt=a_ctr; + + /* generate file name */ + snprintf(filename,sizeof(filename),"%s/url_%04d%02d.%s", + (dump_path)?dump_path:".",cur_year,cur_month,dump_ext); + + /* open file */ + if ( (out_fp=open_out_file(filename))==NULL ) return; + + /* need a header? */ + if (dump_header) + { + fprintf(out_fp,"%s\t%s\t%s\n",msg_h_hits,msg_h_xfer,msg_h_url); + } + + /* dump 'em */ + pointer=u_array; + while (cnt) + { + uptr=*pointer++; + if (uptr->flag != OBJ_GRP) + { + fprintf(out_fp,"%llu\t%.0f\t%s\n", + uptr->count,uptr->xfer/1024,uptr->string); + } + cnt--; + } + fclose(out_fp); + return; +} + +/*********************************************/ +/* DUMP_ALL_REFS - dump all refs to tab file */ +/*********************************************/ + +void dump_all_refs() +{ + RNODEPTR rptr, *pointer; + FILE *out_fp; + char filename[256]; + u_int64_t cnt=a_ctr; + + /* generate file name */ + snprintf(filename,sizeof(filename),"%s/ref_%04d%02d.%s", + (dump_path)?dump_path:".",cur_year,cur_month,dump_ext); + + /* open file */ + if ( (out_fp=open_out_file(filename))==NULL ) return; + + /* need a header? */ + if (dump_header) + { + fprintf(out_fp,"%s\t%s\n",msg_h_hits,msg_h_ref); + } + + /* dump 'em */ + pointer=r_array; + while(cnt) + { + rptr=*pointer++; + if (rptr->flag != OBJ_GRP) + { + fprintf(out_fp,"%llu\t%s\n",rptr->count, rptr->string); + } + cnt--; + } + fclose(out_fp); + return; +} + +/*********************************************/ +/* DUMP_ALL_AGENTS - dump agents htab file */ +/*********************************************/ + +void dump_all_agents() +{ + ANODEPTR aptr, *pointer; + FILE *out_fp; + char filename[256]; + u_int64_t cnt=a_ctr; + + /* generate file name */ + snprintf(filename,sizeof(filename),"%s/agent_%04d%02d.%s", + (dump_path)?dump_path:".",cur_year,cur_month,dump_ext); + + /* open file */ + if ( (out_fp=open_out_file(filename))==NULL ) return; + + /* need a header? */ + if (dump_header) + { + fprintf(out_fp,"%s\t%s\n",msg_h_hits,msg_h_agent); + } + + /* dump 'em */ + pointer=a_array; + while(cnt) + { + aptr=*pointer++; + if (aptr->flag != OBJ_GRP) + { + fprintf(out_fp,"%llu\t%s\n",aptr->count,aptr->string); + } + cnt--; + } + fclose(out_fp); + return; +} + +/*********************************************/ +/* DUMP_ALL_USERS - dump username tab file */ +/*********************************************/ + +void dump_all_users() +{ + INODEPTR iptr, *pointer; + FILE *out_fp; + char filename[256]; + u_int64_t cnt=a_ctr; + + /* generate file name */ + snprintf(filename,sizeof(filename),"%s/user_%04d%02d.%s", + (dump_path)?dump_path:".",cur_year,cur_month,dump_ext); + + /* open file */ + if ( (out_fp=open_out_file(filename))==NULL ) return; + + /* need a header? */ + if (dump_header) + { + fprintf(out_fp,"%s\t%s\t%s\t%s\t%s\n", + msg_h_hits,msg_h_files,msg_h_xfer,msg_h_visits,msg_h_uname); + } + + /* dump 'em */ + pointer=i_array; + while(cnt) + { + iptr=*pointer++; + if (iptr->flag != OBJ_GRP) + { + fprintf(out_fp, + "%llu\t%llu\t%.0f\t%llu\t%s\n", + iptr->count,iptr->files,iptr->xfer/1024, + iptr->visit,iptr->string); + } + cnt--; + } + fclose(out_fp); + return; +} + +/*********************************************/ +/* DUMP_ALL_SEARCH - dump search htab file */ +/*********************************************/ + +void dump_all_search() +{ + SNODEPTR sptr, *pointer; + FILE *out_fp; + char filename[256]; + u_int64_t cnt=a_ctr; + + /* generate file name */ + snprintf(filename,sizeof(filename),"%s/search_%04d%02d.%s", + (dump_path)?dump_path:".",cur_year,cur_month,dump_ext); + + /* open file */ + if ( (out_fp=open_out_file(filename))==NULL ) return; + + /* need a header? */ + if (dump_header) + { + fprintf(out_fp,"%s\t%s\n",msg_h_hits,msg_h_search); + } + + /* dump 'em */ + pointer=s_array; + while(cnt) + { + sptr=*pointer++; + fprintf(out_fp,"%llu\t%s\n",sptr->count,sptr->string); + cnt--; + } + fclose(out_fp); + return; +} + +/*********************************************/ +/* WRITE_MAIN_INDEX - main index.html file */ +/*********************************************/ + +int write_main_index() +{ + /* create main index file */ + + int i,j,days_in_month; + int s_year=hist[HISTSIZE-1].year; + char index_fname[256]; + char buffer[BUFSIZE]; + u_int64_t m_hit=0; + u_int64_t m_files=0; + u_int64_t m_pages=0; + u_int64_t m_visits=0; + double m_xfer=0.0; + double gt_hit=0.0; + double gt_files=0.0; + double gt_pages=0.0; + double gt_xfer=0.0; + double gt_visits=0.0; + + if (verbose>1) printf("%s\n",msg_gen_sum); + + snprintf(buffer,sizeof(buffer),"%s %s",msg_main_us,hname); + year_graph6x("usage.png", buffer, hist); + + /* now do html stuff... */ + snprintf(index_fname,sizeof(index_fname),"index.%s",html_ext); + + /* .htaccess file needed? */ + if (htaccess) + { + if ((out_fp=fopen(".htaccess","wx")) != NULL) + { + fprintf(out_fp,"DirectoryIndex %s\n",index_fname); + fclose(out_fp); + } + else + { + if (errno!=EEXIST && verbose) + fprintf(stderr,"Error: Failed to create .htaccess file: %s\n", + strerror(errno)); + } + } + + if ( (out_fp=open_out_file(index_fname)) == NULL) + { + if (verbose) + fprintf(stderr,"%s %s!\n",msg_no_open,index_fname); + return 1; + } + write_html_head(NULL, out_fp); + + /* year graph */ + fprintf(out_fp,"\"%s\"

\n",buffer); + /* month table */ + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n",msg_main_sum); + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n",GREY,msg_h_mth); + fprintf(out_fp,"\n",GREY,msg_main_da); + fprintf(out_fp,"\n",GREY,msg_main_mt); + fprintf(out_fp,"\n",HITCOLOR,msg_h_hits); + fprintf(out_fp,"\n",FILECOLOR,msg_h_files); + fprintf(out_fp,"\n",PAGECOLOR,msg_h_pages); + fprintf(out_fp,"\n",VISITCOLOR,msg_h_visits); + fprintf(out_fp,"\n",SITECOLOR,msg_h_sites); + fprintf(out_fp,"\n",KBYTECOLOR,msg_h_xfer); + fprintf(out_fp,"\n",VISITCOLOR,msg_h_visits); + fprintf(out_fp,"\n",PAGECOLOR,msg_h_pages); + fprintf(out_fp,"\n",FILECOLOR,msg_h_files); + fprintf(out_fp,"\n",HITCOLOR,msg_h_hits); + fprintf(out_fp,"\n"); + for (i=HISTSIZE-1;i>=HISTSIZE-index_mths;i--) + { + if (hist[i].hit==0) + { + days_in_month=1; + for (j=i;j>=0;j--) if (hist[j].hit!=0) break; + if (j<0) break; + } + else days_in_month=(hist[i].lday-hist[i].fday)+1; + + /* Check for year change */ + if (s_year!=hist[i].year) + { + /* Year Totals */ + if (index_mths>16 && year_totals) + { + fprintf(out_fp,"\n", + GRPCOLOR,s_year); + fprintf(out_fp,"", GRPCOLOR, m_xfer); + fprintf(out_fp,"", GRPCOLOR, m_visits); + fprintf(out_fp,"", GRPCOLOR, m_pages); + fprintf(out_fp,"", GRPCOLOR, m_files); + fprintf(out_fp,"", GRPCOLOR, m_hit); + m_xfer=0; m_visits=0; m_pages=0; m_files=0; m_hit=0; + } + + /* Year Header */ + s_year=hist[i].year; + if (index_mths>16 && year_hdrs) + fprintf(out_fp,"\n", GREY, s_year); + } + + fprintf(out_fp,"\n", + hist[i].year, hist[i].month, html_ext, + s_month[hist[i].month-1], hist[i].year); + else + fprintf(out_fp,"%s %d\n", \ + s_month[hist[i].month-1], hist[i].year); + + fprintf(out_fp,"\n", + hist[i].hit/days_in_month); + fprintf(out_fp,"\n", + hist[i].files/days_in_month); + fprintf(out_fp,"\n", + hist[i].page/days_in_month); + fprintf(out_fp,"\n", + hist[i].visit/days_in_month); + fprintf(out_fp,"\n", + hist[i].site); + fprintf(out_fp,"\n", + hist[i].xfer); + fprintf(out_fp,"\n", + hist[i].visit); + fprintf(out_fp,"\n", + hist[i].page); + fprintf(out_fp,"\n", + hist[i].files); + fprintf(out_fp,"", + hist[i].hit); + fprintf(out_fp,"\n"); + gt_hit += hist[i].hit; + gt_files += hist[i].files; + gt_pages += hist[i].page; + gt_xfer += hist[i].xfer; + gt_visits+= hist[i].visit; + m_hit += hist[i].hit; + m_files += hist[i].files; + m_pages += hist[i].page; + m_visits+= hist[i].visit; + m_xfer += hist[i].xfer; + } + + if (index_mths>16 && year_totals) + { + fprintf(out_fp,"\n", + GRPCOLOR,s_year); + fprintf(out_fp,"", GRPCOLOR, m_xfer); + fprintf(out_fp,"", GRPCOLOR, m_visits); + fprintf(out_fp,"", GRPCOLOR, m_pages); + fprintf(out_fp,"", GRPCOLOR, m_files); + fprintf(out_fp,"", GRPCOLOR, m_hit); + } + fprintf(out_fp,"\n"); + fprintf(out_fp,"\n",GREY,msg_h_totals); + fprintf(out_fp,"\n",GREY,gt_xfer); + fprintf(out_fp,"\n",GREY,gt_visits); + fprintf(out_fp,"\n",GREY,gt_pages); + fprintf(out_fp,"\n",GREY,gt_files); + fprintf(out_fp,"\n",GREY,gt_hit); + fprintf(out_fp,"\n"); + fprintf(out_fp,"
",GREY); + fprintf(out_fp,"%s
" \ + "%s" \ + "%s" \ + "%s
" \ + "%s" \ + "%s" \ + "%s" \ + "%s" \ + "%s" \ + "%s" \ + "%s" \ + "%s" \ + "%s" \ + "%s
%04d" \ + "%.0f" \ + "%0llu" \ + "%0llu" \ + "%0llu" \ + "%0llu
%04d
"); + if (hist[i].hit!=0) + fprintf(out_fp,"" \ + "%s %d%llu%llu%llu%llu%llu%.0f%llu%llu%llu%llu
%04d" \ + "%.0f" \ + "%0llu" \ + "%0llu" \ + "%0llu" \ + "%0llu
" \ + "%s" \ + "%.0f" \ + "%.0f" \ + "%.0f" \ + "%.0f" \ + "%.0f
\n"); + write_html_tail(out_fp); + fclose(out_fp); + return 0; +} + +/*********************************************/ +/* QS_SITE_CMPH - QSort compare site by hits */ +/*********************************************/ + +int qs_site_cmph(const void *cp1, const void *cp2) +{ + u_int64_t t1, t2; + t1=(*(HNODEPTR *)cp1)->count; + t2=(*(HNODEPTR *)cp2)->count; + if (t1!=t2) return (t2string, + (*(HNODEPTR *)cp2)->string ); +} + +/*********************************************/ +/* QS_SITE_CMPK - QSort cmp site by bytes */ +/*********************************************/ + +int qs_site_cmpk(const void *cp1, const void *cp2) +{ + double t1, t2; + t1=(*(HNODEPTR *)cp1)->xfer; + t2=(*(HNODEPTR *)cp2)->xfer; + if (t1!=t2) return (t2string, + (*(HNODEPTR *)cp2)->string ); +} + +/*********************************************/ +/* QS_URL_CMPH - QSort compare URL by hits */ +/*********************************************/ + +int qs_url_cmph(const void *cp1, const void *cp2) +{ + u_int64_t t1, t2; + t1=(*(UNODEPTR *)cp1)->count; + t2=(*(UNODEPTR *)cp2)->count; + if (t1!=t2) return (t2string, + (*(UNODEPTR *)cp2)->string ); +} + +/*********************************************/ +/* QS_URL_CMPK - QSort compare URL by bytes */ +/*********************************************/ + +int qs_url_cmpk(const void *cp1, const void *cp2) +{ + double t1, t2; + t1=(*(UNODEPTR *)cp1)->xfer; + t2=(*(UNODEPTR *)cp2)->xfer; + if (t1!=t2) return (t2string, + (*(UNODEPTR *)cp2)->string ); +} + +/*********************************************/ +/* QS_URL_CMPN - QSort compare URL by entry */ +/*********************************************/ + +int qs_url_cmpn(const void *cp1, const void *cp2) +{ + double t1, t2; + t1=(*(UNODEPTR *)cp1)->entry; + t2=(*(UNODEPTR *)cp2)->entry; + if (t1!=t2) return (t2string, + (*(UNODEPTR *)cp2)->string ); +} + +/*********************************************/ +/* QS_URL_CMPX - QSort compare URL by exit */ +/*********************************************/ + +int qs_url_cmpx(const void *cp1, const void *cp2) +{ + double t1, t2; + t1=(*(UNODEPTR *)cp1)->exit; + t2=(*(UNODEPTR *)cp2)->exit; + if (t1!=t2) return (t2string, + (*(UNODEPTR *)cp2)->string ); +} + +/*********************************************/ +/* QS_REF_CMPH - QSort compare Refs by hits */ +/*********************************************/ + +int qs_ref_cmph(const void *cp1, const void *cp2) +{ + u_int64_t t1, t2; + t1=(*(RNODEPTR *)cp1)->count; + t2=(*(RNODEPTR *)cp2)->count; + if (t1!=t2) return (t2string, + (*(RNODEPTR *)cp2)->string ); +} + +/*********************************************/ +/* QS_AGNT_CMPH - QSort cmp Agents by hits */ +/*********************************************/ + +int qs_agnt_cmph(const void *cp1, const void *cp2) +{ + u_int64_t t1, t2; + t1=(*(ANODEPTR *)cp1)->count; + t2=(*(ANODEPTR *)cp2)->count; + if (t1!=t2) return (t2string, + (*(ANODEPTR *)cp2)->string ); +} + +/*********************************************/ +/* QS_SRCH_CMPH - QSort cmp srch str by hits */ +/*********************************************/ + +int qs_srch_cmph(const void *cp1, const void *cp2) +{ + u_int64_t t1, t2; + t1=(*(SNODEPTR *)cp1)->count; + t2=(*(SNODEPTR *)cp2)->count; + if (t1!=t2) return (t2string, + (*(SNODEPTR *)cp2)->string ); +} + +/*********************************************/ +/* QS_IDENT_CMPH - QSort cmp ident by hits */ +/*********************************************/ + +int qs_ident_cmph(const void *cp1, const void *cp2) +{ + u_int64_t t1, t2; + t1=(*(INODEPTR *)cp1)->count; + t2=(*(INODEPTR *)cp2)->count; + if (t1!=t2) return (t2string, + (*(INODEPTR *)cp2)->string ); +} + +/*********************************************/ +/* LOAD_SITE_ARRAY - load up the sort array */ +/*********************************************/ + +u_int64_t load_site_array(HNODEPTR *pointer) +{ + HNODEPTR hptr; + int i; + u_int64_t ctr = 0; + + /* load the array */ + for (i=0;inext; + } + } + return ctr; /* return number loaded */ +} + +/*********************************************/ +/* LOAD_URL_ARRAY - load up the sort array */ +/*********************************************/ + +u_int64_t load_url_array(UNODEPTR *pointer) +{ + UNODEPTR uptr; + int i; + u_int64_t ctr = 0; + + /* load the array */ + for (i=0;inext; + } + } + return ctr; /* return number loaded */ +} + +/*********************************************/ +/* LOAD_REF_ARRAY - load up the sort array */ +/*********************************************/ + +u_int64_t load_ref_array(RNODEPTR *pointer) +{ + RNODEPTR rptr; + int i; + u_int64_t ctr = 0; + + /* load the array */ + for (i=0;inext; + } + } + return ctr; /* return number loaded */ +} + +/*********************************************/ +/* LOAD_AGENT_ARRAY - load up the sort array */ +/*********************************************/ + +u_int64_t load_agent_array(ANODEPTR *pointer) +{ + ANODEPTR aptr; + int i; + u_int64_t ctr = 0; + + /* load the array */ + for (i=0;inext; + } + } + return ctr; /* return number loaded */ +} + +/*********************************************/ +/* LOAD_SRCH_ARRAY - load up the sort array */ +/*********************************************/ + +u_int64_t load_srch_array(SNODEPTR *pointer) +{ + SNODEPTR sptr; + int i; + u_int64_t ctr = 0; + + /* load the array */ + for (i=0;inext; + } + } + return ctr; /* return number loaded */ +} + +/*********************************************/ +/* LOAD_IDENT_ARRAY - load up the sort array */ +/*********************************************/ + +u_int64_t load_ident_array(INODEPTR *pointer) +{ + INODEPTR iptr; + int i; + u_int64_t ctr = 0; + + /* load the array */ + for (i=0;inext; + } + } + return ctr; /* return number loaded */ +} + +/*********************************************/ +/* OPEN_OUT_FILE - Open file for output */ +/*********************************************/ + +FILE *open_out_file(char *filename) +{ + struct stat out_stat; + FILE *out_fp; + + /* stat the file */ + if ( !(lstat(filename, &out_stat)) ) + { + /* check if the file a symlink */ + if ( S_ISLNK(out_stat.st_mode) ) + { + if (verbose) + fprintf(stderr,"%s %s (symlink)\n",msg_no_open,filename); + return NULL; + } + } + + /* open the file... */ + if ( (out_fp=fopen(filename,"w")) == NULL) + { + if (verbose) + fprintf(stderr,"%s %s!\n",msg_no_open,filename); + return NULL; + } + return out_fp; +} + diff --git a/output.h b/output.h new file mode 100644 index 0000000..90cfe3a --- /dev/null +++ b/output.h @@ -0,0 +1,12 @@ +#ifndef _OUTPUT_H +#define _OUTPUT_H + +extern int write_main_index(); /* produce main HTML */ +extern int write_month_html(); /* monthy HTML page */ +extern FILE *open_out_file(char *); /* open output file */ +#ifdef USE_DNS +extern char *geodb_get_cc(DB *, char *, char *); +extern DB *geo_db; +#endif + +#endif /* _OUTPUT_H */ diff --git a/parser.c b/parser.c new file mode 100644 index 0000000..487ec7a --- /dev/null +++ b/parser.c @@ -0,0 +1,740 @@ +/* + webalizer - a web server log analysis program + + Copyright (C) 1997-2011 Bradford L. Barrett + + This program 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 2 of the License, or + (at your option) any later version, and provided that the above + copyright and permission notice is included with all distributed + copies of this or derived software. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +*/ + +/*********************************************/ +/* STANDARD INCLUDES */ +/*********************************************/ + +#include +#include +#include +#include +#include /* normal stuff */ +#include +#include + +/* ensure sys/types */ +#ifndef _SYS_TYPES_H +#include +#endif + +/* need socket header? */ +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +/* some systems need this */ +#ifdef HAVE_MATH_H +#include +#endif + +#include "webalizer.h" /* main header */ +#include "lang.h" +#include "parser.h" + +/* internal function prototypes */ +void fmt_logrec(char *); +int parse_record_clf(char *); +int parse_record_ftp(char *); +int parse_record_squid(char *); +int parse_record_w3c(char *); + +/*********************************************/ +/* FMT_LOGREC - terminate log fields w/zeros */ +/*********************************************/ + +void fmt_logrec(char *buffer) +{ + char *cp=buffer; + int q=0,b=0,p=0; + + while (*cp != '\0') + { + /* break record up, terminate fields with '\0' */ + switch (*cp) + { + case '\t': if (b || q || p) break; *cp='\0'; break; + case ' ': if (b || q || p) break; *cp='\0'; break; + case '"': if (*(cp-1)=='\\') break; else q^=1; break; + case '[': if (q) break; b++; break; + case ']': if (q) break; if (b>0) b--; break; + case '(': if (q) break; p++; break; + case ')': if (q) break; if (p>0) p--; break; + } + cp++; + } +} + +/*********************************************/ +/* PARSE_RECORD - uhhh, you know... */ +/*********************************************/ + +int parse_record(char *buffer) +{ + /* clear out structure */ + memset(&log_rec,0,sizeof(struct log_struct)); + + /* call appropriate handler */ + switch (log_type) + { + default: + case LOG_CLF: return parse_record_clf(buffer); break; /* clf */ + case LOG_FTP: return parse_record_ftp(buffer); break; /* ftp */ + case LOG_SQUID: return parse_record_squid(buffer); break; /* squid */ + case LOG_W3C: return parse_record_w3c(buffer); break; /* w3c */ + } +} + +/*********************************************/ +/* PARSE_RECORD_FTP - ftp log handler */ +/*********************************************/ + +int parse_record_ftp(char *buffer) +{ + int size; + int i,j,count; + char *cp1, *cp2, *cpx, *cpy, *eob; + + size = strlen(buffer); /* get length of buffer */ + eob = buffer+size; /* calculate end of buffer */ + fmt_logrec(buffer); /* seperate fields with \0's */ + + /* Start out with date/time */ + cp1=buffer; + while (*cp1!=0 && cp12100) return 0; + if (i<1 || i>31) return 0; + + /* format date/time field */ + snprintf(log_rec.datetime,sizeof(log_rec.datetime), + "[%02d/%s/%4d:%s -0000]",i,cpx,j,cpy); + + /* skip seconds... */ + while (*cp1!=0 && cp1'9') log_rec.xfer_size=0; + else log_rec.xfer_size = strtoul(cp1,NULL,10); + + /* URL stuff */ + while (*cp1!=0 && cp1= eob) eos=eob-1; + + while ( (*cp1 != '\0') && (cp1 != eos) ) *cp2++ = *cp1++; + *cp2 = '\0'; + if (*cp1 != '\0') + { + if (verbose) + { + fprintf(stderr,"%s",msg_big_host); + if (debug_mode) fprintf(stderr,": %s\n",cpx); + else fprintf(stderr,"\n"); + } + while (*cp1 != '\0') cp1++; + } + if (cp1 < eob) cp1++; + + /* skip next field (ident) */ + while ( (*cp1 != '\0') && (cp1 < eob) ) cp1++; + if (cp1 < eob) cp1++; + + /* IDENT (authuser) field */ + cpx = cp1; + cp2 = log_rec.ident; + eos = (cp1+MAXIDENT-1); + if (eos >= eob) eos=eob-1; + + while ( (*cp1 != '[') && (cp1 < eos) ) /* remove embeded spaces */ + { + if (*cp1=='\0') *cp1=' '; + *cp2++=*cp1++; + } + *cp2--='\0'; + + if (cp1 >= eob) return 0; + + /* check if oversized username */ + if (*cp1 != '[') + { + if (verbose) + { + fprintf(stderr,"%s",msg_big_user); + if (debug_mode) fprintf(stderr,": %s\n",cpx); + else fprintf(stderr,"\n"); + } + while ( (*cp1 != '[') && (cp1 < eob) ) cp1++; + } + + /* strip trailing space(s) */ + while (*cp2==' ') *cp2--='\0'; + + /* date/time string */ + cpx = cp1; + cp2 = log_rec.datetime; + eos = (cp1+28); + if (eos >= eob) eos=eob-1; + + while ( (*cp1 != '\0') && (cp1 != eos) ) *cp2++ = *cp1++; + *cp2 = '\0'; + if (*cp1 != '\0') + { + if (verbose) + { + fprintf(stderr,"%s",msg_big_date); + if (debug_mode) fprintf(stderr,": %s\n",cpx); + else fprintf(stderr,"\n"); + } + while (*cp1 != '\0') cp1++; + } + if (cp1 < eob) cp1++; + + /* minimal sanity check on timestamp */ + if ( (log_rec.datetime[0] != '[') || + (log_rec.datetime[3] != '/') || + (cp1 >= eob)) return 0; + + /* HTTP request */ + cpx = cp1; + cp2 = log_rec.url; + eos = (cp1+MAXURL-1); + if (eos >= eob) eos = eob-1; + + while ( (*cp1 != '\0') && (cp1 != eos) ) *cp2++ = *cp1++; + *cp2 = '\0'; + if (*cp1 != '\0') + { + if (verbose) + { + fprintf(stderr,"%s",msg_big_req); + if (debug_mode) fprintf(stderr,": %s\n",cpx); + else fprintf(stderr,"\n"); + } + while (*cp1 != '\0') cp1++; + } + if (cp1 < eob) cp1++; + + if ( (log_rec.url[0] != '"') || + (cp1 >= eob) ) return 0; + + /* Strip off HTTP version from URL */ + if ( (cp2=strstr(log_rec.url,"HTTP"))!=NULL ) + { + *cp2='\0'; /* Terminate string */ + *(--cp2)='"'; /* change to " */ + } + + /* response code */ + log_rec.resp_code = atoi(cp1); + + /* xfer size */ + while ( (*cp1 != '\0') && (cp1 < eob) ) cp1++; + if (cp1 < eob) cp1++; + if (*cp1<'0'||*cp1>'9') log_rec.xfer_size=0; + else log_rec.xfer_size = strtoul(cp1,NULL,10); + + /* done with CLF record */ + if (cp1>=eob) return 1; + + while ( (*cp1 != '\0') && (*cp1 != '\n') && (cp1 < eob) ) cp1++; + if (cp1 < eob) cp1++; + /* get referrer if present */ + cpx = cp1; + cp2 = log_rec.refer; + eos = (cp1+MAXREF-1); + if (eos >= eob) eos = eob-1; + + while ( (*cp1 != '\0') && (*cp1 != '\n') && (cp1 != eos) ) *cp2++ = *cp1++; + *cp2 = '\0'; + if (*cp1 != '\0') + { + if (verbose) + { + fprintf(stderr,"%s",msg_big_ref); + if (debug_mode) fprintf(stderr,": %s\n",cpx); + else fprintf(stderr,"\n"); + } + while (*cp1 != '\0') cp1++; + } + if (cp1 < eob) cp1++; + + cpx = cp1; + cp2 = log_rec.agent; + eos = cp1+(MAXAGENT-1); + if (eos >= eob) eos = eob-1; + + while ( (*cp1 != '\0') && (cp1 != eos) ) *cp2++ = *cp1++; + *cp2 = '\0'; + + return 1; /* maybe a valid record, return with TRUE */ +} + +/*********************************************/ +/* PARSE_RECORD_SQUID - squid log handler */ +/*********************************************/ + +int parse_record_squid(char *buffer) +{ + int size, slash_count=0; + time_t i; + char *cp1, *cp2, *cpx, *eob, *eos; + + size = strlen(buffer); /* get length of buffer */ + eob = buffer+size; /* calculate end of buffer */ + fmt_logrec(buffer); /* seperate fields with \0's */ + + /* date/time */ + cp1=buffer; + i=atoi(cp1); /* get timestamp */ + + /* format date/time field */ + strftime(log_rec.datetime,sizeof(log_rec.datetime), + "[%d/%b/%Y:%H:%M:%S -0000]",localtime(&i)); + + while (*cp1!=0 && cp1= eob) eos=eob-1; + + while ((*cp1 != '\0') && (cp1 != eos)) *cp2++ = *cp1++; + *cp2='\0'; + if (*cp1 != '\0') + { + if (verbose) + { + fprintf(stderr,"%s",msg_big_host); + if (debug_mode) fprintf(stderr,": %s\n",cpx); + else fprintf(stderr,"\n"); + } + while (*cp1 != '\0') cp1++; + } + if (cp1 < eob) cp1++; + + /* skip cache status */ + while (*cp1!=0 && cp1'9') log_rec.xfer_size=0; + else log_rec.xfer_size = strtoul(cp1,NULL,10); + + while (*cp1!=0 && cp1= eob) eos = eob-1; + + while ( (*cp1 != '\0') && (cp1 != eos) ) *cp2++ = *cp1++; + *cp2 = '\0'; + if (*cp1 != '\0') + { + if (verbose) + { + fprintf(stderr,"%s",msg_big_req); + if (debug_mode) fprintf(stderr,": %s\n",cpx); + else fprintf(stderr,"\n"); + } + while (*cp1 != '\0') cp1++; + } + if (cp1 < eob) cp1++; + + *cp2++ = ' '; + + /* HTTP URL requested */ + cpx = cp1; + + if (trimsquid>0) + { + slash_count=trimsquid+2; + while ( (*cp1 != '\0') && (cp1 != eos) && slash_count) + { + *cp2++ = *cp1++; + if (*cp1 == '/') slash_count--; + } + } + else while ( (*cp1 != '\0') && (cp1 != eos) ) *cp2++ = *cp1++; + + *cp2 = '\0'; + if ((*cp1 != '\0' && trimsquid==0) || (trimsquid && slash_count) ) + { + if (verbose) + { + fprintf(stderr,"%s",msg_big_req); + if (debug_mode) fprintf(stderr,": %s\n",cpx); + else fprintf(stderr,"\n"); + } + while (*cp1 != '\0') cp1++; + } + if (cp1 < eob) cp1++; + + *cp2++ = '\"'; + + /* IDENT (authuser) field */ + cpx = cp1; + cp2 = log_rec.ident; + eos = (cp1+MAXIDENT-1); + if (eos >= eob) eos=eob-1; + + while (*cp1 == ' ') cp1++; /* skip white space */ + + while ( (*cp1 != ' ' && *cp1!='\0') && (cp1 < eos) ) *cp2++=*cp1++; + + *cp2--='\0'; + + if (cp1 >= eob) return 0; + + /* strip trailing space(s) */ + while (*cp2==' ') *cp2--='\0'; + + /* we have no interest in the remaining fields */ + return 1; +} + +/*********************************************/ +/* PARSE_RECORD_W3C - w3c log handler */ +/*********************************************/ + +/* field index structure */ +struct field_index_struct +{ + int date; /* Date field index */ + int time; /* Time field index */ + int ip; /* IP field index */ + int username; /* Username field index */ + int method; /* Method field index */ + int url; /* URL field index */ + int query; /* Querystring field index */ + int status; /* Status code field index */ + int size; /* Size field index */ + int referer; /* Referrer field index */ + int agent; /* User agent field index */ + int fields; /* Number of fields in this format */ +}; + +/* field structure */ +struct fields_struct +{ + char *date; /* Date field */ + char *time; /* Time field */ + char *ip; /* IP field */ + char *username; /* Username field */ + char *method; /* Method field */ + char *url; /* URL field */ + char *query; /* Querystring */ + char *status; /* Status code */ + char *size; /* Size field */ + char *referer; /* Referrer field */ + char *agent; /* User agent field */ +}; + +int parse_record_w3c(char *buffer) +{ + int size; + char *eob; + char *cp; + int index; + static struct field_index_struct field_index; + struct fields_struct fields; + struct tm gm_time, *local_time; + time_t timestamp; + + memset(&gm_time, 0, sizeof(struct tm)); + size = strlen(buffer); /* get length of buffer */ + eob = buffer + size; /* calculate end of buffer */ + + /* remove line end markers, reduce eob accordingly */ + cp = eob; + while(cp>buffer) + { + cp--; + if (*cp == '\r' || *cp=='\n') + { + *cp = '\0'; + eob--; + } + else + break; + } + + fmt_logrec(buffer); /* seperate fields with \0's */ + + cp = buffer; + + /* Check if the line is empty or a line suffers from the IIS + Null-Character bug and abort parsing if found. */ + if (*cp == '\0') return 0; + + /* If it's a header line ignore it or parse the Fields header if found */ + if (*cp == '#') + { + cp++; + if (!strcmp(cp, "Fields:")) + { + /* Reset the field indices */ + memset(&field_index, 0, sizeof(struct field_index_struct)); + while (*cp) cp++; + cp++; + index = 1; + while (cp < eob) + { + /* Set the field index */ + if (!strcmp(cp, "date")) field_index.date = index; + if (!strcmp(cp, "time")) field_index.time = index; + if (!strcmp(cp, "c-ip")) field_index.ip = index; + if (!strcmp(cp, "cs-method")) field_index.method = index; + if (!strcmp(cp, "cs-uri-stem")) field_index.url = index; + if (!strcmp(cp, "cs-uri-query")) field_index.query = index; + if (!strcmp(cp, "sc-status")) field_index.status = index; + if (!strcmp(cp, "cs(Referer)")) field_index.referer = index; + if (!strcmp(cp, "sc-bytes")) field_index.size = index; + if (!strcmp(cp, "cs(User-Agent)")) field_index.agent = index; + if (!strcmp(cp, "cs-username")) field_index.username = index; + + /* Continue with the next field */ + while (*cp) cp++; + cp++; + index++; + } + field_index.fields = index -1; + } + + /* Return because this header line is completely parsed */ + return 0; + } + + /* A data line has been found */ + + /* Check if the number of entries in this line are conform to the + format specified in the header */ + index = 1; + while (cp < eob) + { + while (*cp) cp++; + cp++; + index++; + } + if (index-1 != field_index.fields) return 0; + + /* Reset pointer */ + cp = buffer; + + /* Reset the field pointers and begin parsing the data line */ + memset(&fields, 0, sizeof(struct fields_struct)); + index = 1; + while (cp < eob) + { + /* Set the field pointers */ + if (index == field_index.date) fields.date = cp; + if (index == field_index.time) fields.time = cp; + if (index == field_index.ip) fields.ip = cp; + if (index == field_index.method) fields.method = cp; + if (index == field_index.url) fields.url = cp; + if (index == field_index.query) fields.query = cp; + if (index == field_index.status) fields.status = cp; + if (index == field_index.referer) fields.referer = cp; + if (index == field_index.size) fields.size = cp; + if (index == field_index.agent) fields.agent = cp; + if (index == field_index.username) fields.username = cp; + + /* Continue with the next data field */ + while (*cp) cp++; + cp++; + index++; + } + + /* Save URL */ + if (fields.url) + { + cp = fields.url; + while (*cp) { if (*cp=='+') *cp=' '; cp++; } + + /* If no HTTP Method, force to "NONE" */ + if (fields.method && (fields.method[0]=='-')) + fields.method="NONE"; + + if (fields.query && (fields.query[0]!='-')) + snprintf(log_rec.url, MAXURL, "\"%s %s?%s\"", + fields.method, fields.url, fields.query); + else snprintf(log_rec.url, MAXURL, "\"%s %s\"", + fields.method, fields.url); + } + else return 0; + + /* Save hostname */ + if (fields.ip) strncpy(log_rec.hostname, fields.ip, MAXHOST - 1); + + /* Save response code */ + if (fields.status) log_rec.resp_code = atoi(fields.status); + + /* Save referer */ + if (fields.referer) strncpy(log_rec.refer, fields.referer, MAXREF - 1); + + /* Save transfer size */ + if (fields.size) log_rec.xfer_size = strtoul(fields.size, NULL, 10); + + /* Save user agent */ + if (fields.agent) + { + cp = fields.agent; + while (*cp) { if (*cp=='+') *cp=' '; cp++; } + strncpy(log_rec.agent, fields.agent, MAXAGENT - 1); + } + + /* Save auth username */ + if (fields.username) strncpy(log_rec.ident, fields.username, MAXIDENT - 1); + + /* Parse date and time and save it */ + if (fields.date) + { + gm_time.tm_year = atoi(fields.date); + if (gm_time.tm_year > 1900) gm_time.tm_year-=1900; + while ((fields.date[0] != '\0') && (fields.date[0] != '-')) fields.date++; + if (fields.date[0] == '\0') return 0; + fields.date++; + gm_time.tm_mon = atoi(fields.date) - 1; + while ((fields.date[0] != '\0') && (fields.date[0] != '-')) fields.date++; + if (fields.date[0] == '\0') return 0; + fields.date++; + gm_time.tm_mday = atoi(fields.date); + } + if (fields.time) + { + gm_time.tm_hour = atoi(fields.time); + while ((fields.time[0] != '\0') && (fields.time[0] != ':')) fields.time++; + if (fields.time[0] == '\0') return 0; + fields.time++; + gm_time.tm_min = atoi(fields.time); + while ((fields.time[0] != '\0') && (fields.time[0] != ':')) fields.time++; + if (fields.time[0] == '\0') return 0; + fields.time++; + gm_time.tm_sec = atoi(fields.time); + } + + /* Convert GMT to localtime */ + gm_time.tm_isdst = -1; /* force dst check */ + timestamp = mktime(&gm_time); /* get time in sec */ +#ifdef HAVE_ALTZONE + timestamp-=(gm_time.tm_isdst)?altzone:timezone; /* solaris & friends */ +#else + timestamp = mktime(&gm_time)+gm_time.tm_gmtoff; /* glibc systems */ +#endif + local_time = localtime(×tamp); /* update tm struct */ + strftime(log_rec.datetime, sizeof(log_rec.datetime),/* and format sting */ + "[%d/%b/%Y:%H:%M:%S -0000]", local_time); /* for log_rec field */ + return 1; +} diff --git a/parser.h b/parser.h new file mode 100644 index 0000000..58da828 --- /dev/null +++ b/parser.h @@ -0,0 +1,6 @@ +#ifndef _PARSER_H +#define _PARSER_H + +extern int parse_record(char *); + +#endif /* _PARSER_H */ diff --git a/preserve.c b/preserve.c new file mode 100644 index 0000000..34f3533 --- /dev/null +++ b/preserve.c @@ -0,0 +1,859 @@ +/* + webalizer - a web server log analysis program + + Copyright (C) 1997-2011 Bradford L. Barrett + + This program 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 2 of the License, or + (at your option) any later version, and provided that the above + copyright and permission notice is included with all distributed + copies of this or derived software. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +*/ + +/*********************************************/ +/* STANDARD INCLUDES */ +/*********************************************/ + +#include +#include +#include +#include +#include /* normal stuff */ +#include +#include +#include +#include + +/* ensure sys/types */ +#ifndef _SYS_TYPES_H +#include +#endif + +/* need socket header? */ +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +/* some systems need this */ +#ifdef HAVE_MATH_H +#include +#endif + +#include "webalizer.h" /* main header */ +#include "lang.h" +#include "hashtab.h" +#include "parser.h" +#include "preserve.h" + +struct hist_rec hist[HISTSIZE]; /* history structure array */ + +/*********************************************/ +/* GET_HISTORY - load in history file */ +/*********************************************/ + +void get_history() +{ + int i,n,numfields; + int in_m,in_y; + int mth, yr; + FILE *hist_fp; + char buffer[BUFSIZE]; + + /* try to open history file */ + hist_fp=fopen(hist_fname,"r"); + + if (hist_fp) + { + if (verbose>1) printf("%s %s\n",msg_get_hist,hist_fname); + while ( fgets(buffer,BUFSIZE,hist_fp) != NULL ) + { + if (buffer[0]=='#') { continue; } /* skip comments */ + + /* get record month/year */ + sscanf(buffer,"%d %d",&in_m,&in_y); + + /* check if valid numbers */ + if ( (in_m<1 || in_m>12 || in_y<1970) ) + { + if (verbose) fprintf(stderr,"%s (mth=%d)\n",msg_bad_hist,in_m); + continue; + } + + /* populate if first time through */ + if (hist[HISTSIZE-1].year==0) populate_history(in_m, in_y); + + for (i=HISTSIZE-1;i>=0;i--) + { + if (in_m==hist[i].month && in_y==hist[i].year) break; + else + { + if ( (in_m>hist[i].month&&in_y==hist[i].year) || + (in_y>hist[i].year) ) + { + if (i>0) + { + n=(mth_idx(in_m,in_y)-mth_idx(hist[i].month,hist[i].year)); + while (n) + { + yr = hist[i].year; + mth= hist[i].month+1; + if (mth>12) { mth=1; yr++; } + memcpy(&hist[0], &hist[1], sizeof(hist[0])*i); + memset(&hist[i], 0, sizeof(struct hist_rec)); + hist[i].year=yr; hist[i].month=mth; n--; + } + } + break; + } + } + } + if (i>=0) + { + /* month# year# requests files sites xfer firstday lastday */ + numfields = sscanf(buffer,"%d %d %llu %llu %llu %lf %d %d %llu %llu", + &hist[i].month, + &hist[i].year, + &hist[i].hit, + &hist[i].files, + &hist[i].site, + &hist[i].xfer, + &hist[i].fday, + &hist[i].lday, + &hist[i].page, + &hist[i].visit); + } + } + fclose(hist_fp); + } + else if (verbose>1) printf("%s\n",msg_no_hist); +} + +/*********************************************/ +/* PUT_HISTORY - write out history file */ +/*********************************************/ + +void put_history() +{ + int i; + FILE *hist_fp; + char new_fname[MAXKVAL+4]; + char old_fname[MAXKVAL+4]; + struct stat hist_stat; + time_t now; + char timestamp[48]; + + /* generate 'new' filename */ + sprintf(new_fname, "%s.new", hist_fname); + + /* stat the file */ + if ( !(lstat(new_fname, &hist_stat)) ) + { + /* check if the file a symlink */ + if ( S_ISLNK(hist_stat.st_mode) ) + { + if (verbose) + fprintf(stderr,"%s %s (symlink)\n",msg_no_open,new_fname); + return; + } + } + + /* Generate our timestamp */ + now=time(NULL); + strftime(timestamp,sizeof(timestamp),"%d/%b/%Y %H:%M:%S",localtime(&now)); + + /* Open file for writing */ + hist_fp = fopen(new_fname,"w"); + if (hist_fp) + { + if (verbose>1) printf("%s\n",msg_put_hist); + + /* write header */ + fprintf(hist_fp,"# Webalizer V%s-%s History Data - %s (%d month)\n", + version, editlvl, timestamp, HISTSIZE); + + for (i=HISTSIZE-1;i>=0;i--) + { + fprintf(hist_fp,"%d %d %llu %llu %llu %.0f %d %d %llu %llu\n", + hist[i].month, + hist[i].year, + hist[i].hit, + hist[i].files, + hist[i].site, + hist[i].xfer, + hist[i].fday, + hist[i].lday, + hist[i].page, + hist[i].visit); + } + /* Done, close file */ + fclose(hist_fp); + + /* if time-warp error detected, save old */ + if (hist_gap) + { + sprintf(old_fname, "%s.sav", hist_fname); + if ((rename(hist_fname,old_fname)==-1)&&(errno!=ENOENT)&&verbose) + fprintf(stderr,"Failed renaming %s to %s: %s\n", + hist_fname,old_fname,strerror(errno)); + } + + /* now rename the 'new' file to real name */ + if ((rename(new_fname,hist_fname) == -1) && verbose) + fprintf(stderr,"Failed renaming %s to %s\n",new_fname,hist_fname); + } + else + if (verbose) + fprintf(stderr,"%s %s\n",msg_hist_err,new_fname); +} + +/*********************************************/ +/* POPULATE_HISTORY - populate with dates */ +/*********************************************/ + +void populate_history(int month, int year) +{ + int i; + int mth=month; + int yr =year; + + if (hist[HISTSIZE-1].year==0) + { + for (i=HISTSIZE-1;i>=0;i--) + { + hist[i].year=yr; hist[i].month=mth--; + if (mth==0) { yr--; mth=12; } + } + } +} + +/*********************************************/ +/* UPDATE_HISTORY - update with cur totals */ +/*********************************************/ + +void update_history() +{ + int i,n; + int mth,yr; + + /* populate if first time through */ + if (hist[HISTSIZE-1].year==0) populate_history(cur_month,cur_year); + + /* we need to figure out where to put in history */ + for (i=HISTSIZE-1;i>=0;i--) + { + if (cur_month==hist[i].month && cur_year==hist[i].year) break; + else + { + if ((cur_month>hist[i].month&&cur_year==hist[i].year) || + (cur_year>hist[i].year)) + { + if (i>0) + { + n=(mth_idx(cur_month,cur_year) - + mth_idx(hist[i].month,hist[i].year)); + + if (n>2) + { + if (verbose) + fprintf(stderr,"Warning! %d month gap detected! " \ + "(%d/%d to %d/%d)\n", n, hist[i].month, + hist[i].year, cur_month, cur_year); + if (n>11) hist_gap=1; /* year or more? */ + } + + while (n) + { + yr = hist[i].year; + mth= hist[i].month+1; + if (mth>12) { mth=1; yr++; } + memcpy(&hist[0],&hist[1],sizeof(hist[0])*i); + memset(&hist[i], 0, sizeof(struct hist_rec)); + hist[i].year=yr; hist[i].month=mth; n--; + } + } + break; + } + } + } + if (i>=0) + { + hist[i].month = cur_month; + hist[i].year = cur_year; + hist[i].hit = t_hit; + hist[i].files = t_file; + hist[i].page = t_page; + hist[i].visit = t_visit; + hist[i].site = t_site; + hist[i].xfer = t_xfer/1024; + hist[i].fday = f_day; + hist[i].lday = l_day; + } +} + +/*********************************************/ +/* SAVE_STATE - save internal data structs */ +/*********************************************/ + +int save_state() +{ + HNODEPTR hptr; + UNODEPTR uptr; + RNODEPTR rptr; + ANODEPTR aptr; + SNODEPTR sptr; + INODEPTR iptr; + + FILE *fp; + int i; + struct stat state_stat; + + char buffer[BUFSIZE]; + char new_fname[MAXKVAL+4]; + + /* generate 'new' filename */ + sprintf(new_fname, "%s.new", state_fname); + + /* stat the file */ + if ( !(lstat(new_fname, &state_stat)) ) + { + /* check if the file a symlink */ + if ( S_ISLNK(state_stat.st_mode) ) + { + if (verbose) + fprintf(stderr,"%s %s (symlink)\n",msg_no_open,new_fname); + return(EBADF); + } + } + + /* Open file for writing */ + fp=fopen(new_fname,"w"); + if (fp==NULL) return 1; + + /* Saving current run data... */ + if (verbose>1) + { + sprintf(buffer,"%02d/%02d/%04d %02d:%02d:%02d", + cur_month,cur_day,cur_year,cur_hour,cur_min,cur_sec); + printf("%s [%s]\n",msg_put_data,buffer); + } + + /* first, save the easy stuff */ + /* Header record */ + snprintf(buffer,sizeof(buffer), + "# Webalizer V%s-%s Incremental Data - %02d/%02d/%04d %02d:%02d:%02d\n", + version,editlvl,cur_month,cur_day,cur_year,cur_hour,cur_min,cur_sec); + if (fputs(buffer,fp)==EOF) return 1; /* error exit */ + + /* Current date/time */ + sprintf(buffer,"%d %d %d %d %d %d\n", + cur_year, cur_month, cur_day, cur_hour, cur_min, cur_sec); + if (fputs(buffer,fp)==EOF) return 1; /* error exit */ + + /* Monthly totals for sites, urls, etc... */ + sprintf(buffer,"%llu %llu %llu %llu %llu %llu %.0f %llu %llu %llu\n", + t_hit, t_file, t_site, t_url, + t_ref, t_agent, t_xfer, t_page, t_visit, t_user); + if (fputs(buffer,fp)==EOF) return 1; /* error exit */ + + /* Daily totals for sites, urls, etc... */ + sprintf(buffer,"%llu %llu %llu %d %d\n", + dt_site, ht_hit, mh_hit, f_day, l_day); + if (fputs(buffer,fp)==EOF) return 1; /* error exit */ + + /* Monthly (by day) total array */ + for (i=0;i<31;i++) + { + sprintf(buffer,"%llu %llu %.0f %llu %llu %llu\n", + tm_hit[i],tm_file[i],tm_xfer[i],tm_site[i],tm_page[i],tm_visit[i]); + if (fputs(buffer,fp)==EOF) return 1; /* error exit */ + } + + /* Daily (by hour) total array */ + for (i=0;i<24;i++) + { + sprintf(buffer,"%llu %llu %.0f %llu\n", + th_hit[i],th_file[i],th_xfer[i],th_page[i]); + if (fputs(buffer,fp)==EOF) return 1; /* error exit */ + } + + /* Response codes */ + for (i=0;istring, uptr->flag, uptr->count, uptr->files, + uptr->xfer, uptr->entry, uptr->exit); + if (fputs(buffer,fp)==EOF) return 1; + uptr=uptr->next; + } + } + if (fputs("# End Of Table - urls\n",fp)==EOF) return 1; /* error exit */ + + /* daily hostname list */ + if (fputs("# -sites- (monthly)\n",fp)==EOF) return 1; /* error exit */ + + for (i=0;istring, hptr->flag, hptr->count, hptr->files, + hptr->xfer, hptr->visit, hptr->tstamp, + (hptr->lasturl==blank_str)?"-":hptr->lasturl); + if (fputs(buffer,fp)==EOF) return 1; /* error exit */ + hptr=hptr->next; + } + } + if (fputs("# End Of Table - sites (monthly)\n",fp)==EOF) return 1; + + /* hourly hostname list */ + if (fputs("# -sites- (daily)\n",fp)==EOF) return 1; /* error exit */ + for (i=0;istring, hptr->flag, hptr->count, hptr->files, + hptr->xfer, hptr->visit, hptr->tstamp, + (hptr->lasturl==blank_str)?"-":hptr->lasturl); + if (fputs(buffer,fp)==EOF) return 1; + hptr=hptr->next; + } + } + if (fputs("# End Of Table - sites (daily)\n",fp)==EOF) return 1; + + /* Referrer list */ + if (fputs("# -referrers- \n",fp)==EOF) return 1; /* error exit */ + if (t_ref != 0) + { + for (i=0;istring, rptr->flag, rptr->count); + if (fputs(buffer,fp)==EOF) return 1; /* error exit */ + rptr=rptr->next; + } + } + } + if (fputs("# End Of Table - referrers\n",fp)==EOF) return 1; + + /* User agent list */ + if (fputs("# -agents- \n",fp)==EOF) return 1; /* error exit */ + if (t_agent != 0) + { + for (i=0;istring, aptr->flag, aptr->count); + if (fputs(buffer,fp)==EOF) return 1; /* error exit */ + aptr=aptr->next; + } + } + } + if (fputs("# End Of Table - agents\n",fp)==EOF) return 1; + + /* Search String list */ + if (fputs("# -search strings- \n",fp)==EOF) return 1; /* error exit */ + for (i=0;istring,sptr->count); + if (fputs(buffer,fp)==EOF) return 1; /* error exit */ + sptr=sptr->next; + } + } + if (fputs("# End Of Table - search strings\n",fp)==EOF) return 1; + + /* username list */ + if (fputs("# -usernames- \n",fp)==EOF) return 1; /* error exit */ + + for (i=0;istring, iptr->flag, iptr->count, iptr->files, + iptr->xfer, iptr->visit, iptr->tstamp); + if (fputs(buffer,fp)==EOF) return 1; /* error exit */ + iptr=iptr->next; + } + } + if (fputs("# End Of Table - usernames\n",fp)==EOF) return 1; + + /* Done, close file */ + fclose(fp); + + /* now rename the 'new' file to real name */ + if ((rename(new_fname,state_fname) == -1) && verbose) + { + fprintf(stderr,"Failed renaming %s to %s\n",new_fname,state_fname); + return 1; /* Failed, return with error code */ + } + return 0; /* successful, return with good return code */ +} + +/*********************************************/ +/* RESTORE_STATE - reload internal run data */ +/*********************************************/ + +int restore_state() +{ + FILE *fp; + int i; + struct hnode t_hnode; /* Temporary hash nodes */ + struct unode t_unode; + struct rnode t_rnode; + struct anode t_anode; + struct snode t_snode; + struct inode t_inode; + + char buffer[BUFSIZE]; + char tmp_buf[BUFSIZE]; + + u_int64_t ul_bogus=0; + + /* if ignoring, just return */ + if (ignore_state) return 0; + + /* try to open state file */ + fp=fopen(state_fname,"r"); + if (fp==NULL) + { + /* Previous run data not found... */ + if (verbose>1) printf("%s\n",msg_no_data); + return 0; /* return with ok code */ + } + + /* Reading previous run data... */ + if (verbose>1) printf("%s %s\n",msg_get_data,state_fname); + + /* get easy stuff */ + sprintf(tmp_buf,"# Webalizer V%s ",version); + if ((fgets(buffer,BUFSIZE,fp)) != NULL) /* Header record */ + { + if (strncmp(buffer,tmp_buf,16)) + { + /* Kludge to allow 2.01 files also */ + sprintf(tmp_buf,"# Webalizer V2.01-1"); + if (strncmp(buffer,tmp_buf,19)) return 99; /* bad magic? */ + } + } + else return 1; /* error exit */ + + /* Get current timestamp */ + if ((fgets(buffer,BUFSIZE,fp)) != NULL) + { + sscanf(buffer,"%d %d %d %d %d %d", + &cur_year, &cur_month, &cur_day, + &cur_hour, &cur_min, &cur_sec); + } else return 2; /* error exit */ + + /* calculate current timestamp (seconds since epoch) */ + cur_tstamp=((jdate(cur_day,cur_month,cur_year)-epoch)*86400)+ + (cur_hour*3600)+(cur_min*60)+cur_sec; + + /* Get monthly totals */ + if ((fgets(buffer,BUFSIZE,fp)) != NULL) + { + sscanf(buffer,"%llu %llu %llu %llu %llu %llu %lf %llu %llu %llu", + &t_hit, &t_file, &t_site, &t_url, + &t_ref, &t_agent, &t_xfer, &t_page, &t_visit, &t_user); + } else return 3; /* error exit */ + + /* Get daily totals */ + if ((fgets(buffer,BUFSIZE,fp)) != NULL) + { + sscanf(buffer,"%llu %llu %llu %d %d", + &dt_site, &ht_hit, &mh_hit, &f_day, &l_day); + } else return 4; /* error exit */ + + /* get daily totals */ + for (i=0;i<31;i++) + { + if ((fgets(buffer,BUFSIZE,fp)) != NULL) + { + sscanf(buffer,"%llu %llu %lf %llu %llu %llu", + &tm_hit[i],&tm_file[i],&tm_xfer[i],&tm_site[i],&tm_page[i], + &tm_visit[i]); + } else return 5; /* error exit */ + } + + /* get hourly totals */ + for (i=0;i<24;i++) + { + if ((fgets(buffer,BUFSIZE,fp)) != NULL) + { + sscanf(buffer,"%llu %llu %lf %llu", + &th_hit[i],&th_file[i],&th_xfer[i],&th_page[i]); + } else return 6; /* error exit */ + } + + /* get response code totals */ + for (i=0;i 0 +# causes all URLs to be truncated after the nth '/' after the http:// +# portion. Setting TrimSquidURL to one (1) will cause all URLs to be +# summarized by domain only. The default is zero (0), which disables +# any such truncation and preserve the URLs as they are in the log. + +# TrimSquidURL 0 + +# DNSCache specifies the DNS cache filename to use for reverse DNS lookups. +# This file must be specified if you wish to perform name lookups on any IP +# addresses found in the log file. If an absolute path is not given as +# part of the filename (ie: starts with a leading '/'), then the name is +# relative to the default output directory. See the DNS.README file for +# additional information. + +#DNSCache dns_cache.db + +# DNSChildren allows you to specify how many "children" processes are +# run to perform DNS lookups to create or update the DNS cache file. +# If a number is specified, the DNS cache file will be created/updated +# each time the Webalizer is run, immediately prior to normal processing, +# by running the specified number of "children" processes to perform +# DNS lookups. If used, the DNS cache filename MUST be specified as +# well. The default value is zero (0), which disables DNS cache file +# creation/updates at run time. The number of children processes to +# run may be anywhere from 1 to 100, however a large number may effect +# normal system operations. Reasonable values should be between 5 and +# 20. See the DNS.README file for additional information. + +#DNSChildren 0 + +# CacheIPs allows unresolved IP addresses to be cached in the DNS +# database. Normally, only resolved addresses are saved. At some +# sites, particularly those with a large number of unresolvable IP +# addresses visiting, it may be useful to enable this feature so +# those addresses are not constantly looked up each time the program +# is run. Values can be 'yes' or 'no', with 'no' being the default. + +#CacheIPs no + +# CacheTTL specifies the time to live (TTL) value for cached DNS +# entries, in days. This value may be anywhere between 1 and 100 +# with the default being 7 days (1 week). + +#CacheTTL 7 + +# The GeoDB option enables or disabled the use of the native +# Webalizer GeoDB geolocation services. This is the preferred +# geolocation option. Values may be 'yes' or 'no', with 'no' +# being the default. + +#GeoDB no + +# GeoDBDatabase specifies an alternate database to use. The +# default database is /usr/share/GeoDB/GeoDB.dat (however the +# path may be changed at compile time; use the -vV command +# line option to determine where). If a different database is +# to be used, it may be specified here. The name is relative +# to the output directory being used unless an absolute name +# (ie: starts with a leading '/') is specified. + +#GeoDBDatabase /usr/share/GeoDB/GeoDB.dat + +# The GeoIP option enables or disables the use of geolocation +# services provided by the GeoIP library (http://www.maxmind.com), +# if available. Values may be 'yes' or 'no, with 'no' being the +# default. Note: if GeoDB is enabled, then this option will have +# no effect (GeoDB will be used regardless of this setting). + +#GeoIP no + +# GeoIPDatabase specifies an alternate database filename to use by the +# GeoIP library. If an absolute path is not given as part of the name +# (ie: starts with a leading '/'), then the name is relative to the +# default output directory. This option should not normally be needed. + +#GeoIPDatabase /usr/share/GeoIP/GeoIP.dat + +# HTMLPre defines HTML code to insert at the very beginning of the +# file. Default is the DOCTYPE line shown below. Max line length +# is 80 characters, so use multiple HTMLPre lines if you need more. + +#HTMLPre + +# HTMLHead defines HTML code to insert within the +# block, immediately after the line. Maximum line length +# is 80 characters, so use multiple lines if needed. + +#HTMLHead <META NAME="author" CONTENT="The Webalizer"> +#HTMLHead <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"> + +# HTMLBody defined the HTML code to be inserted, starting with the +# <BODY> tag. If not specified, the default is shown below. If +# used, you MUST include your own <BODY> tag as the first line. +# Maximum line length is 80 char, use multiple lines if needed. + +#HTMLBody <BODY BGCOLOR="#E8E8E8" TEXT="#000000" LINK="#0000FF" VLINK="#FF0000"> + +# HTMLPost defines the HTML code to insert immediately before the +# first <HR> on the document, which is just after the title and +# "summary period"-"Generated on:" lines. If anything, this should +# be used to clean up in case an image was inserted with HTMLBody. +# As with HTMLHead, you can define as many of these as you want and +# they will be inserted in the output stream in order of apperance. +# Max string size is 80 characters. Use multiple lines if you need to. + +#HTMLPost <BR CLEAR="all"> + +# HTMLTail defines the HTML code to insert at the bottom of each +# HTML document, usually to include a link back to your home +# page or insert a small graphic. It is inserted as a table +# data element (ie: <TD> your code here </TD>) and is right +# alligned with the page. Max string size is 80 characters. + +#HTMLTail <IMG SRC="msfree.png" ALT="100% Micro$oft free!"> + +# HTMLEnd defines the HTML code to add at the very end of the +# generated files. It defaults to what is shown below. If +# used, you MUST specify the </BODY> and </HTML> closing tags +# as the last lines. Max string length is 80 characters. + +#HTMLEnd </BODY></HTML> + +# The LinkReferrer option determines if entries in the referrer table +# should be plain text or a HTML link to the referrer. Values can be +# either 'yes' or 'no', with 'no' being the default. + +#LinkReferrer no + +# The Quiet option suppresses output messages... Useful when run +# as a cron job to prevent bogus e-mails. Values can be either +# "yes" or "no". Default is "no". Note: this does not suppress +# warnings and errors (which are printed to stderr). + +#Quiet no + +# ReallyQuiet will supress all messages including errors and +# warnings. Values can be 'yes' or 'no' with 'no' being the +# default. If 'yes' is used here, it cannot be overriden from +# the command line, so use with caution. A value of 'no' has +# no effect. + +#ReallyQuiet no + +# TimeMe allows you to force the display of timing information +# at the end of processing. A value of 'yes' will force the +# timing information to be displayed. A value of 'no' has no +# effect. + +#TimeMe no + +# GMTTime allows reports to show GMT (UTC) time instead of local +# time. Default is to display the time the report was generated +# in the timezone of the local machine, such as EDT or PST. This +# keyword allows you to have times displayed in UTC instead. Use +# only if you really have a good reason, since it will probably +# screw up the reporting periods by however many hours your local +# time zone is off of GMT. + +#GMTTime no + +# Debug prints additional information for error messages. This +# will cause webalizer to dump bad records/fields instead of just +# telling you it found a bad one. As usual, the value can be +# either "yes" or "no". The default is "no". It shouldn't be +# needed unless you start getting a lot of Warning or Error +# messages and want to see why. (Note: warning and error messages +# are printed to stderr, not stdout like normal messages). + +#Debug no + +# FoldSeqErr forces the Webalizer to ignore sequence errors. +# This is useful for Netscape and other web servers that cache +# the writing of log records and do not guarentee that they +# will be in chronological order. The use of the FoldSeqErr +# option will cause out of sequence log records to be treated +# as if they had the same time stamp as the last valid record. +# Default is to ignore out of sequence log records. The use +# of this feature is strongly discouraged and rarely needed. +# (the webalizer already compensates for up to 60 minutes of +# difference between records). + +#FoldSeqErr no + +# VisitTimeout allows you to set the default timeout for a visit +# (sometimes called a 'session'). The default is 30 minutes, +# which should be fine for most sites. +# Visits are determined by looking at the time of the current +# request, and the time of the last request from the site. If +# the time difference is greater than the VisitTimeout value, it +# is considered a new visit, and visit totals are incremented. +# Value is the number of seconds to timeout (default=1800=30min) + +#VisitTimeout 1800 + +# IgnoreHist shouldn't be used in a config file, but it is here +# just because it might be usefull in certain situations. If the +# history file is ignored, the main "index.html" file will only +# report on the current log files contents. Usefull only when you +# want to reproduce the reports from scratch. USE WITH CAUTION! +# Valid values are "yes" or "no". Default is "no". + +#IgnoreHist no + +# IgnoreState also shouldn't be used, but is here anyway. It is +# similar to the IgnoreHist option, but for the incremental data +# file. If this is set to 'yes', any existing incrememtal data +# will be ignored and a new data file will be written at the end +# of processing. USE WITH CAUTION. By ignoring an existing +# incremental data file, all previous processing for the current +# month will be lost, and those logs must be re-processed. +# Valid values are "yes" or "no". Default is "no". + +#IgnoreState no + +# CountryGraph allows the usage by country graph to be disabled. +# Values can be 'yes' or 'no', default is 'yes'. + +#CountryGraph yes + +# CountryFlags allows flags to be displayed in the top country +# table in monthly reports. Values can be 'yes' or 'no', with +# the default being 'no'. + +#CountryFlags no + +# FlagDir specifies the location of flag graphics which will be +# used in the top country table. If not specified, the default +# is to look in the 'flags' directory directly under the output +# directory being used for the reports. If this option is used, +# the display of flag graphics will be enabled by default. + +#FlagDir flags + +# DailyGraph and DailyStats allows the daily statistics graph +# and statistics table to be disabled (not displayed). Values +# may be "yes" or "no". Default is "yes". + +#DailyGraph yes +#DailyStats yes + +# HourlyGraph and HourlyStats allows the hourly statistics graph +# and statistics table to be disabled (not displayed). Values +# may be "yes" or "no". Default is "yes". + +#HourlyGraph yes +#HourlyStats yes + +# GraphLegend allows the color coded legends to be turned on or off +# in the graphs. The default is for them to be displayed. This only +# toggles the color coded legends, the other legends are not changed. +# If you think they are hideous and ugly, say 'no' here :) + +#GraphLegend yes + +# GraphLines allows you to have index lines drawn behind the graphs. +# I personally am not crazy about them, but a lot of people requested +# them and they weren't a big deal to add. The number represents the +# number of lines you want displayed. Default is 2, you can disable +# the lines by using a value of zero ('0'). [max is 20] +# Note, due to rounding errors, some values don't work quite right. +# The lower the better, with 1,2,3,4,6 and 10 producing nice results. + +#GraphLines 2 + +# IndexMonths defines the number of months to display in the main index +# (yearly summary) table. Value can be between 12 and 120, with the +# default being 12 months (1 year). + +#IndexMonths 12 + +# YearHeaders enables/disables the display of year headers in the main +# index (yearly summary) table. If enabled, year headers will be shown +# when the table is displaying more than 16 months worth of data. Values +# can be 'yes' or 'no', with 'yes' being the default. + +#YearHeaders yes + +# YearTotals enables/disables the display of yearly totals in the main +# index (yearly summary) table. If enabled, year totals will be shown +# when the table is displaying more than 16 months worth of data. Values +# can be 'yes' or 'no', with 'yes' being the default. + +#YearTotals yes + +# GraphMonths defines the number of months to display in the main index +# (yearly summary) graph. Value can be between 12 and 72 months, with +# the default being 12 months. + +#GraphMonths 12 + +# The "Top" options below define the number of entries for each table. +# Defaults are Sites=30, URLs=30, Referrers=30 and Agents=15, and +# Countries=30. TopKSites and TopKURLs (by KByte tables) both default +# to 10, as do the top entry/exit tables (TopEntry/TopExit). The top +# search strings and usernames default to 20. Tables may be disabled +# by using zero (0) for the value. + +#TopSites 30 +#TopKSites 10 +#TopURLs 30 +#TopKURLs 10 +#TopReferrers 30 +#TopAgents 15 +#TopCountries 30 +#TopEntry 10 +#TopExit 10 +#TopSearch 20 +#TopUsers 20 + +# The All* keywords allow the display of all URLs, Sites, Referrers +# User Agents, Search Strings and Usernames. If enabled, a seperate +# HTML page will be created, and a link will be added to the bottom +# of the appropriate "Top" table. There are a couple of conditions +# for this to occur.. First, there must be more items than will fit +# in the "Top" table (otherwise it would just be duplicating what is +# already displayed). Second, the listing will only show those items +# that are normally visable, which means it will not show any hidden +# items. Grouped entries will be listed first, followed by individual +# items. The value for these keywords can be either 'yes' or 'no', +# with the default being 'no'. Please be aware that these pages can +# be quite large in size, particularly the sites page, and seperate +# pages are generated for each month, which can consume quite a lot +# of disk space depending on the traffic to your site. + +#AllSites no +#AllURLs no +#AllReferrers no +#AllAgents no +#AllSearchStr no +#AllUsers no + +# The Webalizer normally strips the string 'index.' off the end of +# URLs in order to consolidate URL totals. For example, the URL +# /somedir/index.html is turned into /somedir/ which is really the +# same URL. This option allows you to specify additional strings +# to treat in the same way. You don't need to specify 'index.' as +# it is always scanned for by The Webalizer, this option is just to +# specify _additional_ strings if needed. If you don't need any, +# don't specify any as each string will be scanned for in EVERY +# log record... A bunch of them will degrade performance. Also, +# the string is scanned for anywhere in the URL, so a string of +# 'home' would turn the URL /somedir/homepages/brad/home.html into +# just /somedir/ which is probably not what was intended. + +#IndexAlias home.htm +#IndexAlias homepage.htm + +# The DefaultIndex option is used to enable/disable the use of +# "index." as the default index name to be stripped off the end of +# a URL (as described above). Most sites will not need to use this +# option, but some may, such as those whose default index file name +# is different, or those that use "index.php" or similar URLs in a +# dynamic environment. Values can be 'yes' or 'no', with the default +# being 'yes'. This option does not effect any names added using the +# IndexAlias option, and those names will still function as described +# regardless of this setting. + +#DefaultIndex yes + +# The Hide*, Group* and Ignore* and Include* keywords allow you to +# change the way Sites, URLs, Referrers, User Agents and Usernames +# are manipulated. The Ignore* keywords will cause The Webalizer to +# completely ignore records as if they didn't exist (and thus not +# counted in the main site totals). The Hide* keywords will prevent +# things from being displayed in the 'Top' tables, but will still be +# counted in the main totals. The Group* keywords allow grouping +# similar objects as if they were one. Grouped records are displayed +# in the 'Top' tables and can optionally be displayed in BOLD and/or +# shaded. Groups cannot be hidden, and are not counted in the main +# totals. The Group* options do not, by default, hide all the items +# that it matches. If you want to hide the records that match (so just +# the grouping record is displayed), follow with an identical Hide* +# keyword with the same value. (see example below) In addition, +# Group* keywords may have an optional label which will be displayed +# instead of the keywords value. The label should be seperated from +# the value by at least one 'white-space' character, such as a space +# or tab. If the match string contains whitespace (spaces or tabs), +# the string should be quoted with either single or double quotes. +# +# The value can have either a leading or trailing '*' wildcard +# character. If no wildcard is found, a match can occur anywhere +# in the string. Given a string "www.yourmama.com", the values "your", +# "*mama.com" and "www.your*" will all match. + +# Your own site should be hidden +#HideSite *webalizer.org +#HideSite localhost + +# Your own site gives most referrals +#HideReferrer webalizer.org/ + +# This one hides non-referrers ("-" Direct requests) +#HideReferrer Direct Request + +# Usually you want to hide these +HideURL *.gif +HideURL *.GIF +HideURL *.jpg +HideURL *.JPG +HideURL *.png +HideURL *.PNG +HideURL *.ra + +# Hiding agents is kind of futile +#HideAgent RealPlayer + +# You can also hide based on authenticated username +#HideUser root +#HideUser admin + +# Grouping options +#GroupURL /cgi-bin/* CGI Scripts +#GroupURL /images/* Images + +#GroupSite *.aol.com +#GroupSite *.compuserve.com + +#GroupReferrer yahoo.com/ Yahoo! +#GroupReferrer excite.com/ Excite +#GroupReferrer infoseek.com/ InfoSeek +#GroupReferrer webcrawler.com/ WebCrawler + +#GroupUser root Admin users +#GroupUser admin Admin users +#GroupUser wheel Admin users + +# The following is a great way to get an overall total +# for browsers, and not display all the detail records. +# (You should use MangleAgent to refine further...) + +#GroupAgent Opera/ Opera +#HideAgent Opera/ +#GroupAgent "MSIE 7" Microsoft Internet Exploder 7 +#HideAgent MSIE 7 +#GroupAgent "MSIE 6" Microsoft Internet Exploder 6 +#HideAgent MSIE 6 +#GroupAgent "MSIE " Older Microsoft Exploders +#HideAgent MSIE +#GroupAgent Firefox/2. Firefox 2 +#HideAgent Firefox/2. +#GroupAgent Firefox/1. Firefox 1.x +#HideAgent Firefox/1. +#GroupAgent Konqueror Konqueror +#HideAgent Konqueror +#GroupAgent Safari Safari +#HideAgent Safari +#GroupAgent Lynx* Lynx +#HideAgent Lynx* +#GroupAgent Wget/ WGet +#HideAgent Wget/ +#GroupAgent (compatible; Other Mozilla Compatibles +#HideAgent (compatible; +#GroupAgent Mozilla* Mozilla/Netscape +#HideAgent Mozilla* + +# HideAllSites allows forcing individual sites to be hidden in the +# report. This is particularly useful when used in conjunction +# with the "GroupDomain" feature, but could be useful in other +# situations as well, such as when you only want to display grouped +# sites (with the GroupSite keywords...). The value for this +# keyword can be either 'yes' or 'no', with 'no' the default, +# allowing individual sites to be displayed. + +#HideAllSites no + +# The GroupDomains keyword allows you to group individual hostnames +# into their respective domains. The value specifies the level of +# grouping to perform, and can be thought of as 'the number of dots' +# that will be displayed. For example, if a visiting host is named +# cust1.tnt.mia.uu.net, a domain grouping of 1 will result in just +# "uu.net" being displayed, while a 2 will result in "mia.uu.net". +# The default value of zero disable this feature. Domains will only +# be grouped if they do not match any existing "GroupSite" records, +# which allows overriding this feature with your own if desired. + +#GroupDomains 0 + +# The GroupShading allows grouped rows to be shaded in the report. +# Useful if you have lots of groups and individual records that +# intermingle in the report, and you want to diferentiate the group +# records a little more. Value can be 'yes' or 'no', with 'yes' +# being the default. + +#GroupShading yes + +# GroupHighlight allows the group record to be displayed in BOLD. +# Can be either 'yes' or 'no' with the default 'yes'. + +#GroupHighlight yes + +# The Ignore* keywords allow you to completely ignore log records based +# on hostname, URL, user agent, referrer or username. I hesitated in +# adding these, since the Webalizer was designed to generate _accurate_ +# statistics about a web servers performance. By choosing to ignore +# records, the accuracy of reports become skewed, negating why I wrote +# this program in the first place. However, due to popular demand, here +# they are. Use the same as the Hide* keywords, where the value can have +# a leading or trailing wildcard '*'. Use at your own risk ;) Please +# remember, the use of these will MAKE YOUR STATS INACCURATE and you +# should consider using an equivalent 'Hide*' keyword instead. + +#IgnoreSite bad.site.net +#IgnoreURL /test* +#IgnoreReferrer file:/* +#IgnoreAgent RealPlayer +#IgnoreUser root + +# The Include* keywords allow you to force the inclusion of log records +# based on hostname, URL, user agent, referrer or username. They take +# precidence over the Ignore* keywords. Note: Using Ignore/Include +# combinations to selectivly process parts of a web site is _extremely +# inefficent_!!! Avoid doing so if possible (ie: grep the records to a +# seperate file if you really want that kind of report). + +# Example: Only show stats on Joe User's pages... +#IgnoreURL * +#IncludeURL ~joeuser* + +# Or based on an authenticated username +#IgnoreUser * +#IncludeUser someuser + +# The MangleAgents allows you to specify how much, if any, The Webalizer +# should mangle user agent names. This allows several levels of detail +# to be produced when reporting user agent statistics. There are six +# levels that can be specified, which define different levels of detail +# supression. Level 5 shows only the browser name (MSIE or Mozilla) +# and the major version number. Level 4 adds the minor version number +# (single decimal place). Level 3 displays the minor version to two +# decimal places. Level 2 will add any sub-level designation (such +# as Mozilla/3.01Gold or MSIE 3.0b). Level 1 will attempt to also add +# the system type if it is specified. The default Level 0 displays the +# full user agent field without modification and produces the greatest +# amount of detail. User agent names that can't be mangled will be +# left unmodified. + +#MangleAgents 0 + +# The SearchEngine keywords allow specification of search engines and +# their query strings on the URL. These are used to locate and report +# what search strings are used to find your site. The first word is +# a substring to match in the referrer field that identifies the search +# engine, and the second is the URL variable used by that search engine +# to define it's search terms. + +#SearchEngine .google. q= +#SearchEngine yahoo.com p= +#SearchEngine altavista.com q= +#SearchEngine aolsearch. query= +#SearchEngine ask.co q= +#SearchEngine eureka.com q= +#SearchEngine lycos.com query= +#SearchEngine hotbot.com MT= +#SearchEngine msn.com q= +#SearchEngine infoseek.com qt= +#SearchEngine excite search= +#SearchEngine netscape.com query= +#SearchEngine mamma.com query= +#SearchEngine alltheweb.com q= +#SearchEngine northernlight.com qr= + +# Normally, search strings are converted to lower case in order to +# increase accuracy. The SearchCaseI option allows them to maintain +# case sensitivity, useful for some sites. The value can be 'yes' +# or 'no', with 'yes' (case insensitive) being the default. + +#SearchCaseI yes + +# The Dump* keywords allow the dumping of Sites, URLs, Referrers +# User Agents, Usernames and Search strings to seperate tab delimited +# text files, suitable for import into most database or spreadsheet +# programs. + +# DumpPath specifies the path to dump the files. If not specified, +# it will default to the current output directory. Do not use a +# trailing slash ('/'). + +#DumpPath /var/lib/httpd/logs + +# The DumpHeader keyword specifies if a header record should be +# written to the file. A header record is the first record of the +# file, and contains the labels for each field written. Normally, +# files that are intended to be imported into a database system +# will not need a header record, while spreadsheets usually do. +# Value can be either 'yes' or 'no', with 'no' being the default. + +#DumpHeader no + +# DumpExtension allow you to specify the dump filename extension +# to use. The default is "tab", but some programs are pickey about +# the filenames they use, so you may change it here (for example, +# some people may prefer to use "csv"). + +#DumpExtension tab + +# These control the dumping of each individual table. The value +# can be either 'yes' or 'no'.. the default is 'no'. + +#DumpSites no +#DumpURLs no +#DumpReferrers no +#DumpAgents no +#DumpUsers no +#DumpSearchStr no + +# The custom graph colors are defined here. Declare them +# in the standard hexadecimal way (as HTML, without the '#') +# If none are given, you will get the standard default colors. + +#ColorHit 00805c +#ColorFile 0040ff +#ColorSite ff8000 +#ColorKbyte ff0000 +#ColorPage 00e0ff +#ColorVisit ffff00 +#ColorMisc 00e0ff + +#PieColor1 800080 +#PieColor2 80ffc0 +#PieColor3 ff00ff +#PieColor4 ffc080 + +# End of configuration file... Have a nice day! diff --git a/wcmgr.1 b/wcmgr.1 new file mode 100644 index 0000000..8e9668d --- /dev/null +++ b/wcmgr.1 @@ -0,0 +1,110 @@ +.TH wcmgr 1 "12-Jul-2008" "Version 1.00" "The Webalizer" +.SH NAME +wcmgr - Webalizer (DNS) Cache file Manager +.SH SYNOPSIS +.B wcmgr\fP [\fI option ... \fP] \fIcache-file\fP +.PP +.SH DESCRIPTION +\fIwcmgr\fP is a utility program which allows manipulation of the DNS cache +files used and produced by The \fIWebalizer\fP. Each record in the cache +file contains an IP address (either IPv4 or IPv6), a timestamp of when the +entry was added to the cache, a flag to indicate if the record contains +a resolved name or not, and either the same IP address or a resolved host +name. All records are accessed by their IP address. +.SH RUNNING WCMGR +\fIwcmgr\fP was designed to be run from the Unix shell command line. This +facilitates its use in shell scripts and other automated processes. A +valid DNS cache file \fBmust\fP be specified. Command line options are +optional, and if none are given, the default action is to list the +contents of the specified cache file. +.SH COMMAND LINE OPTIONS +Different functions are selected by using one or more of the following +command line options. If no options are given, the default is to display +the contents of the cache file to the screen (stdout). +.PP +.TP 8 +.B \-h +Display all available command line options and exit. +.TP 8 +.B \-v +Be verbose. + +.TP 8 +.B \-V +Display the program version and exit. Additional program specific +information will be displayed if \fIverbose\fP mode is also used +(e.g. '\fI-vV\fP'), which can be useful when submitting bug reports. +.TP 8 +.B \-a \fIaddress\fP [\fI-n hostname\fP] [\fI-t0\fP] +Add a new record to the cache file. The IP \fIaddress\fP will be added to +the cache file using the current time as the timestamp and with a resolved +name \fIhostname\fP. If \fI-t0\fP is specified, the record will be +considered permanent, and will not be removed (during a purge) or expired. +If a \fIhostname\fP is not specified with the \fI-n\fP option, then the +\fIaddress\fP will be used instead, and the record will be flagged as +unresolved. +.TP 8 +.B \-c +Create a new cache file. If used alone, this option will create a new, +empty cache file. If used with the \fIimport\fP option, a new cache +file will be created before importing the data. An error will occur +if the file \fIcache-file\fP already exists. +.TP 8 +.B \-d \fIaddress\fP +Delete a record from the cache file using the specified \fIaddress\fP. +.TP 8 +.B \-f \fIaddress\fP +Find and display information for \fIaddress\fP from the cache file. +A single line similar to that produced by the \fI-l\fP option will +be displayed unless \fIverbose\fP mode is enabled, in which case a +more detailed listing will be produced. +.TP 8 +.B \-i \fIname\fP [\fI-c\fP] +Import data into the cache file from the file \fIname\fP. The import +file must be a valid tab delimited text file, such as that created by +the \fIexport\fP option. If the imported data contains records already +present in the cache file, those records will be overwritten by the +imported data. The cache file must exist unless the \fI-c\fP option +is specified, in which case, a new cache file will be created for the +imported data. +.TP 8 +.B \-l +List the contents of the cache file. This is the default action of the +program, so does not necessarily need to be specified. If \fIverbose\fP +mode is enabled, a report title, column headers and summary totals will +also be displayed. +.TP 8 +.B \-p \fInum\fP +Purge the cache file of entries older than \fInum\fP days. If \fInum\fP +is not specified, then a default of \fB7 days\fP will be used. if +\fIverbose\fP mode is enabled, each purged record will be printed and +the total number of purged records will be displayed. +.TP 8 +.B \-s [\fI-t num\fP] +Display cache file information/statistics. If a TTL value (in days) is +specified using the \fI-t\fP option, it will be used to calculate how +many records are older than \fInum\fP days, otherwise, the default value +of \fB7 days\fP will be used. +.TP 8 +.B \-n \fIname\fP +Specify the \fIname\fP to use as the resolved hostname when adding records +to the cache. +.TP 8 +.B \-t \fInum\fP +Time to live (TTL) value. If used along with the \fI-p\fP (purge) option, +it specifies how many days a record will remain valid. Any record that is +older than \fInum\fP days is considered expired and will be purged. If +used with the \fI-a\fP (add) option, a zero value will cause the record +to be considered permanent. +.TP 8 +.B \-x \fIname\fP +Export data from a cache file to a tab delimited text file named \fIname\fP. +If the text file \fIname\fP exists, it will be overwritten. +.SH BUGS +Please report bugs to the author. +.SH COPYRIGHT +Copyright (C) 1997-2011 by Bradford L. Barrett. Distributed under +the GNU GPL. See the files "\fICOPYING\fP" and "\fICopyright\fP", +supplied with all distributions for additional information. +.SH AUTHOR +Bradford L. Barrett <\fIbrad at mrunix dot net\fP> diff --git a/wcmgr.c b/wcmgr.c new file mode 100644 index 0000000..646094f --- /dev/null +++ b/wcmgr.c @@ -0,0 +1,983 @@ +/* + wcmgr - Webalizer (DNS) Cache file Manager + + webalizer - a web server log analysis program + + Copyright (C) 1997-2011 Bradford L. Barrett + + This program 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 2 of the License, or + (at your option) any later version, and provided that the above + copyright and permission notice is included with all distributed + copies of this or derived software. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +*/ + +/*********************************************/ +/* STANDARD INCLUDES */ +/*********************************************/ + +#include <time.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <locale.h> + +#ifndef USE_DNS + +/* ********************************************************** */ +/* If DNS support is not enabled, then we just compile a stub */ +/* program that displays an appropriate warning when run. */ +/* ********************************************************** */ + +int main() +{ + printf("********************* NOTICE!! *********************\n"); + printf("This version of the Webalizer was not compiled with\n"); + printf("DNS support. In order to use this program, you must\n"); + printf("configure the Webalizer at build time with the DNS\n"); + printf("support enabled (--enable-dns configure option).\n"); + printf("****************************************************\n\n"); + exit(1); /* exit with error code */ +} + +#else /* USE_DNS defined */ + +#include <errno.h> +#include <unistd.h> /* normal stuff */ +#include <fcntl.h> +#include <ctype.h> +#include <sys/utsname.h> +#include <sys/stat.h> + +/* ensure getopt */ +#ifdef HAVE_GETOPT_H +#include <getopt.h> +#endif + +/* ensure sys/types */ +#ifndef _SYS_TYPES_H +#include <sys/types.h> +#endif + +#include <db.h> +#include "webalizer.h" + +/*********************************************/ +/* Forward reference local functions */ +/*********************************************/ + +void list_cache(void); +void stat_cache(void); +void export_cache(void); +void import_cache(void); +void find_rec(void); +void add_rec(void); +void del_rec(void); +void purge_cache(void); +void create_cache(void); +static int db_put(char *, char *, int, time_t); + +/*********************************************/ +/* GLOBAL VARIABLES */ +/*********************************************/ + +char *pname = "WCMGR - Webalizer (DNS) Cache file Manager"; +char *version = "1.00"; /* program version */ +char *editlvl = "03"; /* edit level */ +char *moddate = "12-Jul-2008"; /* modification date */ +char *copyright = "Copyright 2007-2011 by Bradford L. Barrett"; + +int action = 'l'; /* action flag (default=list) */ +int create = 0; /* cache creation flag */ +int verbose = 0; /* Verbose flag (1=be verbose) */ +int rec_ttl = 7; /* purge TTL in days */ +DB *dns_db = NULL; /* DNS cache database */ +DB *out_db = NULL; /* output cache db if needed */ +DBC *cursorp = NULL; /* database cursor */ +DBT q, r; /* query/reply structures */ +char *in_file = NULL; /* input cache filename */ +char out_file[MAXHOST+4]; /* output cache filename */ +int dns_fd = 0; /* database file descriptor */ +time_t runtime; /* runtime for TTL calcs */ +char addr[129]; /* buffer for IP search addr */ +char name[MAXHOST+1]; /* buffer for name value */ + +extern char *optarg; /* command line processing */ +extern int optind; +extern int opterr; + +/* dnsRecord structure used in wcmgr */ +struct dnsRec + { + time_t timeStamp; /* Timestamp of resolv data */ + int numeric; /* 0: Name, 1: IP-address */ + char hostName[MAXHOST+1]; /* Hostname buffer (variable) */ + } dns_rec; + +/*********************************************/ +/* PRINT_VER - display version information */ +/*********************************************/ + +void print_ver() +{ + int v,r,l; + struct utsname system_info; + uname(&system_info); + printf("%s V%s-%s\n%s\n",pname,version,editlvl,copyright); + if (verbose) + { + db_version(&v,&r,&l); + printf("System : %s %s (%s)\n", + system_info.sysname, + system_info.release, + system_info.machine); + printf("DB Ver. : V%d.%d.%d\n",v,r,l); + printf("Mod Date: %s\n",moddate); + } + printf("\n"); + exit(0); +} + +/*********************************************/ +/* PRINT_HELP - Command help display */ +/*********************************************/ + +void print_help(void) +{ + printf("Usage: wcmgr [options] cache-file\n\n"); + printf("Options:\n"); + printf(" -h This help display\n"); + printf(" -V Version information\n"); + printf(" -v be verbose\n"); + printf(" -a addr Add DNS record\n"); + printf(" -c Create new cache file\n"); + printf(" -d addr Delete DNS record\n"); + printf(" -f addr Find DNS record\n"); + printf(" -i name Import cache from file\n"); + printf(" -l List cache file contents\n"); + printf(" -n name hostname (used for add)\n"); + printf(" -p num Purge after num days\n"); + printf(" -s Display cache file stats/info\n"); + printf(" -t num TTL value (for add and stats)\n"); + printf(" -x name Export cache to tab file\n"); + printf("\n"); + printf("If no options are specified, the default\n"); + printf("action is to list the cache file contents.\n\n"); + exit(0); +} + +/*********************************************/ +/* TTL_AGE - format TTL age for printing */ +/*********************************************/ + +const char *ttl_age(time_t now, time_t then) +{ + static char our_buffer[32]; /* string return buffer */ + time_t age; /* age value in seconds */ + int days, hours, mins; /* day/hour/min counters */ + + /* get age in seconds */ + age=now-then; + + /* now calc days/hours/min */ + days=age/86400; age=age-(days*86400); + hours=age/3600; age=age-(hours*3600); + mins=age/60; + + /* format the string */ + sprintf(our_buffer,"%02dd:%02dh:%02dm",days, hours, mins); + + /* and return to caller */ + return our_buffer; +} + +/*********************************************/ +/* MAIN entry point here */ +/*********************************************/ + +int main(int argc, char *argv[]) +{ + int i; /* gotta have one of these :-) */ + + /* some systems need this */ + setlocale(LC_CTYPE,""); + + /* initalize name/addr */ + memset(addr, 0, sizeof(addr)); + memset(name, 0, sizeof(name)); + memset(out_file,0,sizeof(out_file)); + + /* Get our command line arguments */ + opterr = 0; + while ((i=getopt(argc,argv,"a:cd:f:hi:ln:p::st:vVx:"))!=EOF) + { + switch (i) + { + case 'a': action='a'; strncpy(addr,optarg,sizeof(addr)-1); break; + case 'c': if (action!='i') action='c'; create=1; break; + case 'd': action='d'; strncpy(addr,optarg,sizeof(addr)-1); break; + case 'f': action='f'; strncpy(addr,optarg,sizeof(addr)-1); break; + case 'i': action='i'; strncpy(out_file,optarg,sizeof(out_file)-1); + break; + case 'h': print_help(); break; + case 'n': strncpy(name,optarg,sizeof(name)-1); break; + case 'p': action='p'; if (optarg!=NULL) rec_ttl=atoi(optarg); break; + case 's': action='s'; break; + case 't': rec_ttl=atoi(optarg); break; + case 'v': verbose=1; break; + case 'V': print_ver(); break; + case 'x': action='x'; strncpy(out_file,optarg,sizeof(out_file)-1); + break; + case ':': /* catch invalid options here */ + case '?': break; + case 'l': /* This is the default action */ + default: action='l'; break; + } + } + + /* Get cache filename if specified */ + if (argc - optind == 0) print_help(); /* gots to have a filename!! */ + in_file = argv[optind]; + + /* Try to create our DB handle */ + if ( db_create(&dns_db, NULL, 0) ) + { + fprintf(stderr,"Error: unable to create db handle!\n"); + exit(1); + } + + /* force sane TTL value */ + if (rec_ttl > 99) rec_ttl=99; + if (rec_ttl < 0 ) rec_ttl=7; + + /* Branch on 'action' specified */ + switch (action) + { + case 'a': add_rec(); break; + case 'c': create_cache(); break; + case 'd': del_rec(); break; + case 'f': find_rec(); break; + case 'i': import_cache(); break; + case 's': stat_cache(); break; + case 'p': purge_cache(); break; + case 'x': export_cache(); break; + case 'l': + default: list_cache(); break; + } + exit(0); +} + +/*********************************************/ +/* LIST_CACHE - Dump out cache contents */ +/*********************************************/ + +void list_cache() +{ + int i; + char ip_buf[48]; + u_int64_t t_rec=0; + u_int64_t t_num=0; + + /* open the database (read-only) */ + if ((i=dns_db->open(dns_db, NULL, in_file, NULL, DB_HASH, DB_RDONLY, 0))) + { + /* Error opening the cache file.. tell user and exit */ + fprintf(stderr,"Error: %s: %s\n",in_file,db_strerror(i)); + exit(1); + } + + /* Create a cursor */ + if ( dns_db->cursor(dns_db, NULL, &cursorp, 0) ) + { + fprintf(stderr,"Error: Unable to create cursor!\n"); + exit(1); + } + + /* get our runtime for TTL calculations */ + time(&runtime); + + if (verbose) + { + printf("Webalizer DNS Cache file listing generated %s\n",ctime(&runtime)); + printf("IP Address TTL Age Hostname\n"); + printf("--------------- ------------- ------------------------" \ + "-----------------------\n"); + } + + /* initalize data areas */ + memset(&q, 0, sizeof(DBT)); + memset(&r, 0, sizeof(DBT)); + memset(&dns_rec, 0, sizeof(struct dnsRec)); + + /* Loop through database */ + while (!cursorp->c_get(cursorp, &q, &r, DB_NEXT)) + { + /* got a record */ + t_rec++; + memset(ip_buf, 0, sizeof(ip_buf)); + strncpy(ip_buf, q.data, (q.size>47)?47:q.size); /* save IP address */ + memcpy(&dns_rec, r.data, r.size); + if (dns_rec.numeric) t_num++; + printf("%-15s [%s] %s\n",ip_buf, + (dns_rec.timeStamp)? + ttl_age(runtime, dns_rec.timeStamp): + "-permanent-", + dns_rec.hostName); + + /* done, clear for next rec */ + memset(&q, 0, sizeof(DBT)); + memset(&r, 0, sizeof(DBT)); + } + + if (verbose) + { + printf("------------------------------------------------------" \ + "-----------------------\n"); + printf("Filename: %s (%llu records)\n",in_file, t_rec); + } +} + +/*********************************************/ +/* PURGE_CACHE - Purge cache of expired recs */ +/*********************************************/ + +void purge_cache() +{ + int i; + char ip_buf[48]; + u_int64_t age=0; + u_int64_t t_in=0; + u_int64_t t_out=0; + u_int64_t t_exp=0; + + /* file control struct */ + struct flock our_flock; + + if (verbose) printf("Purging records over %d days from '%s'\n", + rec_ttl, in_file); + + /* open the input database (read-write) */ + if ((i=dns_db->open(dns_db, NULL, in_file, NULL, DB_HASH, 0, 0))) + { + /* Error opening the cache file.. tell user and exit */ + fprintf(stderr,"Error: %s: %s\n",in_file,db_strerror(i)); + exit(1); + } + + /* get file descriptor */ + dns_db->fd(dns_db, &dns_fd); + + /* Try to lock the file */ + our_flock.l_whence=SEEK_SET; + our_flock.l_start=0; + our_flock.l_len=0; + our_flock.l_type=F_WRLCK; + + if (fcntl(dns_fd,F_SETLK,&our_flock) <0) + { + /* Error - can't lock file */ + printf("Error: Unable to lock cache file: %s\n",strerror(errno)); + exit(1); + } + + /* Create a cursor */ + if ( dns_db->cursor(dns_db, NULL, &cursorp, 0) ) + { + fprintf(stderr,"Error: Unable to create cursor!\n"); + exit(1); + } + + /* Try to create our output DB handle */ + if ( db_create(&out_db, NULL, 0) ) + { + fprintf(stderr,"Error: unable to create output db handle!\n"); + exit(1); + } + + /* generate output filename */ + memset(out_file, 0, sizeof(out_file)); + sprintf(out_file, "%s.new", in_file); + + /* open the output database (read-write) */ + if ((i=out_db->open(out_db, NULL, out_file, NULL, + DB_HASH, DB_CREATE|DB_EXCL, 0644))) + { + /* Error opening the cache file.. tell user and exit */ + fprintf(stderr,"Error: %s: %s\n",out_file,db_strerror(i)); + exit(1); + } + + /* get our runtime for TTL calculations */ + time(&runtime); + + /* initalize data areas */ + memset(&q, 0, sizeof(DBT)); + memset(&r, 0, sizeof(DBT)); + + /* Loop through database */ + while (!cursorp->c_get(cursorp, &q, &r, DB_NEXT)) + { + /* got a record */ + t_in++; + memcpy(&dns_rec, r.data, r.size); + + /* get record ttl age */ + if (dns_rec.timeStamp==0) age=0; + else age = runtime - dns_rec.timeStamp; + + if ( age <= (rec_ttl*86400) ) + { + /* Good record.. insert into new cache file */ + if ( (i=out_db->put(out_db, NULL, &q, &r, 0)) != 0 ) + { + fprintf(stderr,"Error: db_put fail: %s!\n",db_strerror(i)); + exit(1); + } + else t_out++; + } + else + { + /* Expired record */ + t_exp++; + if (verbose) + { + memset(ip_buf, 0, sizeof(ip_buf)); + strncpy(ip_buf, q.data, (q.size>47)?47:q.size); + printf("Purging %-16s [%s]\n",ip_buf, + ttl_age(runtime,dns_rec.timeStamp)); + } + } + + /* done, clear for next rec */ + memset(&q, 0, sizeof(DBT)); + memset(&r, 0, sizeof(DBT)); + } + + /* Successful exit! */ + our_flock.l_type=F_UNLCK; + fcntl(dns_fd, F_SETLK, &our_flock); + dns_db->close(dns_db, 0); + out_db->close(out_db, 0); + + /* rename files */ + if (rename(out_file, in_file)) + { + fprintf(stderr,"Error renaming file: %s\n",strerror(errno)); + exit(1); + } + + if (verbose) + printf("%llu of %llu records purged from '%s'\n",t_exp,t_in,in_file); +} + +/*********************************************/ +/* STAT_CACHE - Display cache stats/info */ +/*********************************************/ + +void stat_cache() +{ + /* Define some variables */ + int i; + time_t min_age=0; /* min/max TTL age in cache */ + time_t max_age=0; + u_int64_t t_rec=0; /* Various record totals */ + u_int64_t t_err=0; + u_int64_t t_name=0; + u_int64_t t_num=0; + u_int64_t t_perm=0; + u_int64_t t_old=0; + time_t age; + + /* open the database (read-only) */ + if ((i=dns_db->open(dns_db, NULL, in_file, NULL, DB_HASH, DB_RDONLY, 0))) + { + /* Error opening the cache file.. tell user and exit */ + fprintf(stderr,"Error: %s: %s\n",in_file,db_strerror(i)); + exit(1); + } + + /* Create a cursor */ + if ( dns_db->cursor(dns_db, NULL, &cursorp, 0) ) + { + fprintf(stderr,"Error: Unable to create cursor!\n"); + exit(1); + } + + /* get our runtime for TTL calculations */ + time(&runtime); + + /* initalize data areas */ + memset(&q, 0, sizeof(DBT)); + memset(&r, 0, sizeof(DBT)); + memset(&dns_rec, 0, sizeof(struct dnsRec)); + + /* Loop through database */ + while (!cursorp->c_get(cursorp, &q, &r, DB_NEXT)) + { + t_rec++; /* add to total */ + if (r.size >= sizeof(dns_rec)) { t_err++; continue; } /* size error? */ + memcpy(&dns_rec, r.data, r.size); /* get record */ + if (dns_rec.numeric) t_num++; else t_name++; /* resolved? */ + + if (dns_rec.timeStamp!=0) /* permanent? */ + { + age=runtime-dns_rec.timeStamp; /* calc age */ + if ((age < min_age) || (t_rec==1) ) min_age=age; /* min/max age */ + if ( age > max_age ) max_age=age; /* if not perm */ + if ( age > (rec_ttl*86400)) t_old++; /* purgable? */ + } + else t_perm++; /* inc counter */ + + /* done, clear for next rec */ + memset(&q, 0, sizeof(DBT)); + memset(&r, 0, sizeof(DBT)); + } + + /* Print actual record counts */ + printf("Report generated on: %s",ctime(&runtime)); + printf("DNS Cache Filename : %s\n",in_file); + + printf("Total Records : %llu\n",t_rec); + printf("Total Resolved : %llu\n",t_name); + printf("Total Unresolved : %llu\n",t_num); + printf("Total Permanent : %llu\n",t_perm); + printf("Newest Record age : %s\n",ttl_age(min_age,0)); + printf("Oldest Record age : %s\n",ttl_age(max_age,0)); + printf("Total over %02d days : %llu\n",rec_ttl,t_old); + if (t_err) printf("Record Size Errors : %llu\n",t_err); + printf("\n"); +} + +/*********************************************/ +/* FIND_REC - Find IP record in cache */ +/*********************************************/ + +void find_rec() +{ + int i; + char ip_buf[48]; + + /* open the database (read-only) */ + if ((i=dns_db->open(dns_db, NULL, in_file, NULL, DB_HASH, DB_RDONLY, 0))) + { + /* Error opening the cache file.. tell user and exit */ + fprintf(stderr,"Error: %s: %s\n",in_file,db_strerror(i)); + exit(1); + } + + /* get our runtime for TTL calculations */ + time(&runtime); + + /* initalize data areas */ + memset(&q, 0, sizeof(DBT)); + memset(&r, 0, sizeof(DBT)); + memset(&dns_rec, 0, sizeof(struct dnsRec)); + + /* search the cache */ + q.data = &addr; + q.size = strlen(addr); + if ( (i=dns_db->get(dns_db, NULL, &q, &r, 0)) == 0) + { + /* We found it! display info */ + memset(ip_buf, 0, sizeof(ip_buf)); + strncpy(ip_buf, q.data, (q.size>47)?47:q.size); /* save IP address */ + memcpy(&dns_rec, r.data, r.size); + if (verbose) + { + /* Verbose display */ + printf("Address : %s\n",ip_buf); + printf("Hostname : %s\n",dns_rec.hostName); + printf("Resolved : %s\n",(dns_rec.numeric)?"No":"Yes"); + if (dns_rec.timeStamp) + { + /* Not Permanent */ + printf("Timestamp: %s",ctime(&dns_rec.timeStamp)); + printf("TTL age : %s\n\n",ttl_age(runtime, dns_rec.timeStamp)); + } + else + { + printf("Timestamp: N/A\n"); + printf("TTL age : Permanent\n"); + } + } + else + { + /* Standard 1 line display */ + printf("%-15s [%s] %s\n",ip_buf, + (dns_rec.timeStamp)? + ttl_age(runtime, dns_rec.timeStamp): + "-permanent-", + dns_rec.hostName); + } + } + else + { + if (i==DB_NOTFOUND) + printf("%s not found!\n",addr); + else + printf("Error: %s\n",db_strerror(i)); + } +} + +/*********************************************/ +/* DEL_REC - Delete record from cache file */ +/*********************************************/ + +void del_rec() +{ + int i; + char *cp; + + /* ensure we have addr string */ + if (addr[0]!='\0') cp=addr; + else + { + fprintf(stderr,"Error: No IP address specified!\n"); + exit(1); + } + + /* ensure IPv6 addresses are lowercase */ + cp=addr; while (*cp!='\0') *cp++=tolower(*cp); + + /* open the database (read-write) */ + if ((i=dns_db->open(dns_db, NULL, in_file, NULL, DB_HASH, 0, 0))) + { + /* Error opening the cache file.. tell user and exit */ + fprintf(stderr,"Error: %s: %s\n",in_file,db_strerror(i)); + exit(1); + } + + /* initalize data areas */ + memset(&q, 0, sizeof(DBT)); + memset(&r, 0, sizeof(DBT)); + memset(&dns_rec, 0, sizeof(struct dnsRec)); + + /* search the cache */ + q.data = &addr; + q.size = strlen(addr); + + /* Try to delete the record */ + if ( (i=dns_db->del(dns_db, NULL, &q, 0)) ) + { + if (i==DB_NOTFOUND) + { + printf("%s not found in cache!\n",addr); + exit(1); + } + else + { + fprintf(stderr,"Error: %s\n",db_strerror(i)); + exit(1); + } + } + dns_db->close(dns_db, 0); + if (verbose) + printf("%s sucessfully deleted from cache file\n",addr); +} + +/*********************************************/ +/* ADD_REC - Add record to cache file */ +/*********************************************/ + +void add_rec() +{ + int i; + char *cp; + + /* ensure we have addr string */ + if (addr[0]!='\0') cp=addr; + else + { + fprintf(stderr,"Error: No IP address specified!\n"); + exit(1); + } + + /* and check size */ + if (strlen(addr)>47) + { + fprintf(stderr,"Error: IP address too long!\n"); + exit(1); + } + + /* ensure everything is lowercase */ + cp=addr; while (*cp!='\0') *cp++=tolower(*cp); + if (name[0]!='\0') + { + cp=name; while (*cp!='\0') *cp++=tolower(*cp); + } + + /* open the database (read-write) */ + if ((i=dns_db->open(dns_db, NULL, in_file, NULL, DB_HASH, 0, 0))) + { + /* Error opening the cache file.. tell user and exit */ + fprintf(stderr,"Error: %s: %s\n",in_file,db_strerror(i)); + exit(1); + } + + /* get our runtime for TTL calculations */ + time(&runtime); + + /* initalize data areas */ + memset(&q, 0, sizeof(DBT)); + memset(&r, 0, sizeof(DBT)); + memset(&dns_rec, 0, sizeof(struct dnsRec)); + + /* search the cache */ + q.data = &addr; + q.size = strlen(addr); + if ( (i=dns_db->get(dns_db, NULL, &q, &r, 0)) == 0) + { + fprintf(stderr,"Error: %s already exists in cache!\n",addr); + exit(1); + } + else + { + if (i!=DB_NOTFOUND) + { + fprintf(stderr,"Error: %s\n",db_strerror(i)); + exit(1); + } + else + { + /* check hostname */ + if (name[0]=='\0') + strncpy(name,addr,strlen(addr)); + + /* check if perm */ + if (rec_ttl==0) runtime=0; + + /* put it in the database */ + if (db_put(addr, name, (strcmp(name,addr))?0:1, runtime)==0) + dns_db->close(dns_db,0); + if (verbose) + printf("%s sucessfully added to cache file\n",addr); + } + } +} + +/*********************************************/ +/* CREATE_CACHE - Create a new cache file */ +/*********************************************/ + +void create_cache() +{ + int i; + + /* create the database */ + if ((i=dns_db->open(dns_db,NULL,in_file,NULL, + DB_HASH,DB_CREATE|DB_EXCL,0644))) + { + /* Error opening the cache file.. tell user and exit */ + fprintf(stderr,"Error: %s: %s\n",in_file,db_strerror(i)); + exit(1); + } + dns_db->close(dns_db,0); + if (verbose) printf("Cache file %s created successfully\n",in_file); +} + +/*********************************************/ +/* IMPORT_CACHE - import cache from tab file */ +/*********************************************/ + +void import_cache() +{ + int i, flag=0; + u_int64_t t_rec=0; + FILE *in_fp; + char ip_buf[48]; + char buffer[4096]; + + /* open the database (read-write) */ + if (create) flag=DB_CREATE|DB_EXCL; + if ((i=dns_db->open(dns_db, NULL, in_file, NULL, DB_HASH, flag, 0644))) + { + /* Error opening the cache file.. tell user and exit */ + fprintf(stderr,"Error: %s: %s\n",in_file,db_strerror(i)); + exit(1); + } + + /* open our import file */ + in_fp=fopen(out_file,"r"); + if (in_fp) + { + while ((fgets(buffer,4096,in_fp)) != NULL) + { + memset(&dns_rec, 0, sizeof(dns_rec)); + memset(&ip_buf, 0, sizeof(ip_buf)); + i = sscanf(buffer,"%s\t%lu\t%d\t%s", + ip_buf, + &dns_rec.timeStamp, + &dns_rec.numeric, + dns_rec.hostName); + + if (ip_buf[0]=='#') continue; /* skip comments */ + + if (i!=4) + { + fprintf(stderr,"Error reading tab file %s\n",out_file); + exit(1); + } + + t_rec++; /* bump totals */ + + /* put it in the database */ + if (db_put(ip_buf, dns_rec.hostName, + dns_rec.numeric, dns_rec.timeStamp)!=0) + { + fprintf(stderr,"Error inserting cache record:\n%s\n",buffer); + exit(1); + } + } + } + else fprintf(stderr,"Error: File not found: %s\n",out_file); + dns_db->close(dns_db,0); + + if (verbose) printf("%llu records imported into '%s' from file '%s'\n", + t_rec, in_file, out_file); +} + +/*********************************************/ +/* EXPORT_CACHE - export cache to tab file */ +/*********************************************/ + +void export_cache() +{ + int i; + u_int64_t t_rec=0; + char ip_buf[48]; + FILE *out_fp; + struct stat out_stat; + + /* make sure files are different! */ + if (!strcmp(in_file,out_file)) + { + fprintf(stderr,"Error: Bad export filename: %s\n",out_file); + exit(1); + } + + /* open the database (read-only) */ + if ((i=dns_db->open(dns_db, NULL, in_file, NULL, DB_HASH, DB_RDONLY, 0))) + { + /* Error opening the cache file.. tell user and exit */ + fprintf(stderr,"Error: %s: %s\n",in_file,db_strerror(i)); + exit(1); + } + + /* Create a cursor */ + if ( dns_db->cursor(dns_db, NULL, &cursorp, 0) ) + { + fprintf(stderr,"Error: Unable to create cursor!\n"); + exit(1); + } + + /* stat output file */ + if ( !(lstat(out_file, &out_stat)) ) + { + /* check if the file is a symlink */ + if ( S_ISLNK(out_stat.st_mode) ) + { + fprintf(stderr,"%s %s\n","Error: File is a symlink:",out_file); + exit(1); + } + } + + /* open output file */ + if ( (out_fp=fopen(out_file,"w")) == NULL) + { + fprintf(stderr,"%s %s\n","Error: Cannot create file:",out_file); + exit(1); + } + + /* initalize data areas */ + memset(&q, 0, sizeof(DBT)); + memset(&r, 0, sizeof(DBT)); + memset(&dns_rec, 0, sizeof(struct dnsRec)); + + /* Loop through database */ + while (!cursorp->c_get(cursorp, &q, &r, DB_NEXT)) + { + /* got a record */ + t_rec++; + memset(ip_buf, 0, sizeof(ip_buf)); + strncpy(ip_buf, q.data, (q.size>47)?47:q.size); /* save IP address */ + memcpy(&dns_rec, r.data, r.size); + + /* Print out tab delimited line */ + /* Format: IP timestamp numeric hostname */ + fprintf(out_fp,"%s\t%lu\t%d\t%s\n", + ip_buf,dns_rec.timeStamp, + dns_rec.numeric, + dns_rec.hostName); + + /* done, clear for next rec */ + memset(&q, 0, sizeof(DBT)); + memset(&r, 0, sizeof(DBT)); + } + dns_db->close(dns_db,0); + fclose(out_fp); + + if (verbose) printf("%llu records exported from '%s' to file '%s'\n", + t_rec, in_file, out_file); +} + +/*********************************************/ +/* DB_PUT - put key/val in the cache db */ +/*********************************************/ + +static int db_put(char *key, char *value, int numeric, time_t ttl) +{ + + /* dnsRecord structure used in database */ + struct dnsRecord + { + time_t timeStamp; /* Timestamp of resolv data */ + int numeric; /* 0: Name, 1: IP-address */ + char hostName[1]; /* Hostname buffer (variable) */ + }; + + int i; + DBT k, v; + struct dnsRecord *recPtr = NULL; + int nameLen = strlen(value)+1; + + /* Align to multiple of eight bytes */ + int recSize = (sizeof(struct dnsRecord)+nameLen+7) & ~0x7; + + /* make sure we have a db ;) */ + if(dns_db) + { + if((recPtr = calloc(1, recSize))) + { + recPtr->timeStamp = ttl; + recPtr->numeric = numeric; + memcpy(&recPtr->hostName, value, nameLen); + memset(&k, 0, sizeof(k)); + memset(&v, 0, sizeof(v)); + + k.data = key; + k.size = strlen(key); + + v.size = recSize; + v.data = recPtr; + + if ( (i=dns_db->put(dns_db, NULL, &k, &v, 0)) != 0 ) + fprintf(stderr,"Error: db_put fail: %s!\n",db_strerror(i)); + free(recPtr); + } + else return 1; + } + else return 1; + return i; +} +#endif /* USE_DNS */ diff --git a/webalizer.1 b/webalizer.1 new file mode 100644 index 0000000..7fd9d95 --- /dev/null +++ b/webalizer.1 @@ -0,0 +1,905 @@ +.TH webalizer 1 "12-Jul-2008" "Version 2.20" "The Webalizer" +.SH NAME +webalizer - A web server log file analysis tool. +.SH SYNOPSIS +.B webalizer +[\fI option ... \fP] [\fI log-file \fP] +.PP +.B webazolver +[\fI option ... \fP] [\fI log-file \fP] +.PP +.SH DESCRIPTION +The \fIWebalizer\fP is a web server log file analysis program which produces +usage statistics in HTML format for viewing with a browser. The results +are presented in both columnar and graphical format, which facilitates +interpretation. Yearly, monthly, daily and hourly usage statistics are +presented, along with the ability to display usage by site, URL, referrer, +user agent (browser), username, search strings, entry/exit pages, and +country (some information may not be available if not present in the log +file being processed). +.PP +The \fIWebalizer\fP supports \fBCLF\fP (common log format) log files, +as well as \fBCombined\fP log formats as defined by NCSA and others, +and variations of these which it attempts to handle intelligently. In +addition, the \fIWebalizer\fP supports \fBxferlog\fP formatted (\fIFTP\fP) +log files, \fBsquid\fP proxy logs and \fBW3C\fP extended format logs. +Logs may also be compressed, via \fIgzip\fP (.gz) or, if enabled at compile +time, \fIbzip2\fP (.bz2). If a compressed log file is detected, it will be +automatically uncompressed while it is read. Compressed logs must have the +standard \fIgzip\fP extension of \fB.gz\fP or \fIbzip2\fP extension of +\fB.bz2\fP. +.PP +\fIwebazolver\fP is normally just a symbolic link to the \fIWebalizer\fP. +When run as \fIwebazolver\fP, only DNS file creation/updates are performed, +and the program will exit once complete. All normal options and +configuration directives are available, however many will not be used. +In addition, a DNS cache file must be specified. If the number of DNS +children processes to use are not specified, the \fIwebazolver\fP will +default to \fB5\fP. +.PP +This documentation applies to The Webalizer Version 2.20 +.SH RUNNING THE WEBALIZER +The \fIWebalizer\fP was designed to be run from a Unix command line prompt or +as a \fBcrond(8)\fP job. Once executed, the general flow of the program is: +.TP 8 +.B o +A default configuration file is scanned for. A file named +\fIwebalizer.conf\fP is searched for in the current directory, and if +found, it's configuration data is parsed. If the file is not +present in the current directory, the file \fI/etc/webalizer.conf\fP +is searched for and, if found, is used instead. +.TP 8 +.B o +Any command line arguments given to the program are parsed. This +may include the specification of a configuration file, which is +processed at the time it is encountered. +.TP 8 +.B o +If a log file was specified, it is opened and made ready for +processing. If no log file was given, \fISTDIN\fP is used for input. +If the log filename '\fB-\fP' is specified, \fISTDIN\fP will be forced. +.TP 8 +.B o +If an output directory was specified, the program does a \fBchdir(2)\fP to +that directory in preparation for generating output. If no output +directory was given, the current directory is used. +.TP 8 +.B o +If a non-zero number of DNS Children processes were specified, they will +be started, and the specified log file will be processed, creating or +updating the specified DNS cache file. +.TP 8 +.B o +If no hostname was given, the program attempts to get the hostname +using a \fBuname(2)\fP system call. If that fails, \fIlocalhost\fP +is used. +.TP 8 +.B o +A history file is searched for in the current directory (output +directory) and read if found. This file keeps totals for previous +months, which is used in the main \fIindex.html\fP HTML document. +.B Note: +The file location can now be specified with the \fIHistoryName\fP +configuration option. +.TP 8 +.B o +If incremental processing was specified, a data file is searched for +and loaded if found, containing the 'internal state' data of the +program at the end of a previous run. +.B Note: +The file location can now be specified with the \fIIncrementalName\fP +configuration option. +.TP 8 +.B o +Main processing begins on the log file. If the log spans multiple +months, a separate HTML document is created for each month. +.TP 8 +.B o +After main processing, the main \fIindex.html\fP page is created, which +has totals by month and links to each months HTML document. +.TP 8 +.B o +A new history file is saved to disk, which includes totals generated +by The \fIWebalizer\fP during the current run. +.TP 8 +.B o +If incremental processing was specified, a data file is written that +contains the 'internal state' data at the end of this run. +.SH INCREMENTAL PROCESSING +The \fIWebalizer\fP supports incremental run capability. Simply +put, this allows processing large log files by breaking them up into +smaller pieces, and processing these pieces instead. What this means +in real terms is that you can now rotate your log files as often as you +want, and still be able to produce monthly usage statistics without the +loss of any detail. Basically, The \fIWebalizer\fP saves and restores all +internal data in a file named \fIwebalizer.current\fP. This allows the +program to 'start where it left off' so to speak, and allows the +preservation of detail from one run to the next. The data file is +placed in the current output directory, and is a plain ASCII text +file that can be viewed with any standard text editor. It's location +and name may be changed using the \fIIncrementalName\fP configuration +keyword. +.PP +Some special precautions need to be taken when using the incremental +run capability of The \fIWebalizer\fP. Configuration options should not be +changed between runs, as that could cause corruption of the internal +data stored. For example, changing the \fIMangleAgents\fP level will cause +different representations of user agents to be stored, producing invalid +results in the user agents section of the report. If you need to change +configuration options, do it at the end of the month after normal +processing of the previous month and before processing the current month. +You may also want to delete the \fIwebalizer.current\fP file as well. +.PP +The \fIWebalizer\fP also attempts to prevent data duplication by keeping +track of the timestamp of the last record processed. This timestamp +is then compared to current records being processed, and any records +that were logged previous to that timestamp are ignored. This, in +theory, should allow you to re-process logs that have already been +processed, or process logs that contain a mix of processed/not yet +processed records, and not produce duplication of statistics. The +only time this may break is if you have duplicate timestamps in two +separate log files... any records in the second log file that do have +the same timestamp as the last record in the previous log file processed, +will be discarded as if they had already been processed. There are +lots of ways to prevent this however, for example, stopping the web +server before rotating logs will prevent this situation. This setup +also necessitates that you always process logs in chronological order, +otherwise data loss will occur as a result of the timestamp compare. +.SH REVERSE DNS LOOKUPS +The \fIWebalizer\fP fully supports IPv4 and IPv6 DNS lookups, and +maintains a cache of those lookups to reduce processing the same +addresses in subsequent runs. The cache file can be created at +run-time, or may be created before running the webalizer using either +the stand alone '\fIwebazolver\fP' program, or The Webalizer (DNS) +Cache file manager program '\fIwcmgr\fP'. In order to perform reverse +lookups, a \fBDNSCache\fP file must be specified, either on the command +line or in a configuration file. In order to create/update the cache +file at run-time, the number of \fBDNSChildren\fP must also be specified, +and can be anything between 1 and 100. This specifies the number of +child processes to be forked, each of which will perform network DNS +queries in order to lookup up the addresses and update the cache. +Cached entries that are older than a specified TTL (time to live) +will be expired, and if encountered again in a log, will be looked +up at that time in order to 'freshen' them (verify the name is still +the same and update its timestamp). The default TTL is 7 days, however +may be set to anything between 1 and 100 days. Using the '\fIwcmgr\fP' +program, entries may also be marked as 'permanent', in which case +they will persist (with an infinite TTL) in the cache until manually +removed. See the file \fBDNS.README\fP for additional information +and examples. +.SH GEOLOCATION LOOKUPS +The \fIWebalizer\fP has the ability to perform geolocation lookups on +IP addresses using either it's own internal \fIGeoDB\fP database, or +optionally the \fIGeoIP\fP database from MaxMind, Inc. (www.maxmind.com). +If used, unresolved addresses will be searched for in the database and +its country of origin will be returned if found. This actually produces +more accurate \fICountry\fP information than DNS lookups, since the DNS +address space has additional \fIgcTLDs\fP that do not necessarily map +to a specific country (such as \fI.net\fP and \fI.com\fP). It is possible +to use both DNS lookups and geolocation lookups at the same time, which +will cause any addresses that could not be resolved using DNS lookups to +then be looked up in the database, greatly reducing the number of +\fIUnknown/Unresolved\fP entries in the generated reports. The native +\fIGeoDB\fP geolocation database provided by The \fIWebalizer\fP fully +supports both \fIIPv4\fP and \fIIPv6\fP lookups, is updated regularly and +is the preferred geolocation method for use with The \fIWebalizer\fP. The +most current version of the database can be obtained from our ftp site +(\fIftp://ftp.mrunix.net/\fP). +.SH COMMAND LINE OPTIONS +The \fIWebalizer\fP supports many different configuration options that will +alter the way the program behaves and generates output. Most of these +can be specified on the command line, while some can only be specified +in a configuration file. The command line options are listed below, +with references to the corresponding configuration file keywords. +.PP +.I General Options +.TP 8 +.B \-h +Display all available command line options and exit program. +.TP 8 +.B \-v +Be verbose. Will cause the program to output informational +and \fIDebug\fP messages at run-time. +.TP 8 +.B \-V +Display the program version and exit. Additional program specific +information will be displayed if \fIverbose\fP mode is also used +(e.g. '\fI-vV\fP'), which can be useful when submitting bug reports. +.TP 8 +.B \-d +\fBDebug\fP. Display debugging information for errors and warnings. +.TP 8 +.B \-i +\fBIgnoreHist\fP. Ignore history. \fBUSE WITH CAUTION\fP. This +will cause The \fIWebalizer\fP to ignore any previous monthly history +file only. Incremental data (if present) is still processed. +.TP 8 +.B \-b +\fBIgnoreState\fP. Ignore incremental data file. \fBUSE WITH CAUTION\fP. +This will cause The \fIWebalizer\fP to ignore any existing incremental +data file. By ignoring the incremental data file, all previous processing +for the current month will be lost and those logs must be re-processed. +.TP 8 +.B \-p +\fBIncremental\fP. Preserve internal data between runs. +.TP 8 +.B \-q +\fBQuiet\fP. Suppress informational messages. Does not suppress +warnings or errors. +.TP 8 +.B \-Q +\fBReallyQuiet\fP. Suppress all messages including warnings and errors. +.TP 8 +.B \-T +\fBTimeMe\fP. Force display of timing information at end of processing. +.TP 8 +.B \-c \fIfile\fP +Use configuration file \fIfile\fP. +.TP 8 +.B \-n \fIname\fP +\fBHostName\fP. Use the hostname \fIname\fP. +.TP 8 +.B \-o \fIdir\fP +\fBOutputDir\fP. Use output directory \fIdir\fP. +.TP 8 +.B \-t \fIname\fP +\fBReportTitle\fP. Use \fIname\fP for report title. +.TP 8 +.B \-F \fP( \fBc\fPlf | \fBf\fPtp | \fBs\fPquid | \fBw\fP3c ) +\fBLogType\fP. Specify log type to be processed. Value can be either +\fIc\fPlf, \fIf\fPtp, \fIs\fPquid or \fIw\fP3c format. If not specified, +will default to \fBCLF\fP format. \fIFTP\fP logs must be in standard +wu-ftpd \fIxferlog\fP format. +.TP 8 +.B \-f +\fBFoldSeqErr\fP. Fold out of sequence log records back into analysis, +by treating as if they were the same date/time as the last good record. +Normally, out of sequence log records are simply ignored. +.TP 8 +.B \-Y +\fBCountryGraph\fP. Suppress country graph. +.TP 8 +.B \-G +\fBHourlyGraph\fP. Suppress hourly graph. +.TP 8 +.B \-x \fIname\fP +\fBHTMLExtension\fP. Defines HTML file extension to use. If not +specified, defaults to \fIhtml\fP. Do not include the leading +period. +.TP 8 +.B \-H +\fBHourlyStats\fP. Suppress hourly statistics. +.TP 8 +.B \-K \fInum\fP +\fBIndexMonths\fP. Specify how many months should be displayed in the +main index (yearly summary) table. Default is 12 months. Can be set +to anything between 12 and 120 months (1 to 10 years). +.TP 8 +.B \-k \fInum\fP +\fBGraphMonths\fP. Specify how many months should be displayed in the +main index (yearly summary) graph. Default is 12 months. Can be set +to anything between 12 and 72 months (1 to 6 years). +.TP 8 +.B \-L +\fBGraphLegend\fP. Suppress color coded graph legends. +.TP 8 +.B \-l \fInum\fP +\fBGraphLines\fP. Specify number of background lines. Default +is 2. Use zero ('0') to disable the lines. +.TP 8 +.B \-P \fIname\fP +\fBPageType\fP. Specify file extensions that are considered \fIpages\fP. +Sometimes referred to as \fIpageviews\fP. +.TP 8 +.B \-O \fIname\fP +\fBOmitPage\fP. Specify URLs to exclude from being counted as \fIpages\fP. +.TP 8 +.B \-m \fInum\fP +\fBVisitTimeout\fP. Specify the Visit timeout period. Specified in +number of seconds. Default is 1800 seconds (30 minutes). +.TP 8 +.B \-I \fIname\fP +\fBIndexAlias\fP. Use the filename \fIname\fP as an additional alias +for \fIindex.\fP. +.TP 8 +.B \-M \fInum\fP +\fBMangleAgents\fP. Mangle user agent names according to the mangle +level specified by \fInum\fP. Mangle levels are: +.RS +.TP 12 +.B 5 +Browser name and major version. +.TP 12 +.B 4 +Browser name, major and minor version. +.TP 12 +.B 3 +Browser name, major version, minor version to two decimal places. +.TP 12 +.B 2 +Browser name, major and minor versions and sub-version. +.TP 12 +.B 1 +Browser name, version and machine type if possible. +.TP 12 +.B 0 +All information (left unchanged). +.RE +.TP 8 +.B \-g \fInum\fP +\fBGroupDomains\fP. Automatically group sites by domain. The +grouping level specified by \fInum\fP can be thought of as 'the +number of dots' to display in the grouping. The default value +of \fB0\fP disables any domain grouping. +.TP 8 +.B \-D \fIname\fP +\fBDNSCache\fP. Use the DNS cache file \fIname\fP. +.TP 8 +.B \-N \fInum\fP +\fBDNSChildren\fP. Use \fInum\fP DNS children processes to perform DNS +lookups, either creating or updating the DNS cache file. Specify zero +(\fB0\fP) to disable cache file creation/updates. If given, a DNS cache +filename must be specified. +.TP 8 +.B \-j +Enable \fIGeoDB\fP. This enables the internal GeoDB geolocation services +provided by The \fIWebalizer\fP. +.TP 8 +.B \-J \fIname\fP +\fBGeoDBDatabase\fP. Use the alternate GeoDB database \fIname\fP. +.TP 8 +.B \-w +Enable \fIGeoIP\fP. Enables GeoIP (by MaxMind Inc.) geolocation services. +If native \fIGeoDB\fP services are also enabled, then this option +will have no effect. +.TP 8 +.B \-W \fIname\fP +\fBGeoIPDatabase\fP. Use the alternate GeoIP database \fIname\fP. +.TP 8 +.B \-z \fIname\fP +\fBFlagDir\fP. Specify location of the country flag graphics and +enable their display in the top country table. The directory \fIname\fP +is relative to the output directory being used unless an absolute path +is given (ie: starts with a leading '/'). +.PP +.I Hide Options +.TP 8 +.B \-a \fIname\fP +\fBHideAgent\fP. Hide user agents matching \fIname\fP. +.TP 8 +.B \-r \fIname\fP +\fBHideReferrer\fP. Hide referrer matching \fIname\fP. +.TP 8 +.B \-s \fIname\fP +\fBHideSite\fP. Hide site matching \fIname\fP. +.TP 8 +.B \-X +\fBHideAllSites\fP. Hide all individual sites (only display groups). +.TP 8 +.B \-u \fIname\fP +\fBHideURL\fP. Hide URL matching \fIname\fP. +.PP +.I Table size options +.TP 8 +.B \-A \fInum\fP +\fBTopAgents\fP. Display the top \fInum\fP user agents table. +.TP 8 +.B \-R \fInum\fP +\fBTopReferrers\fP. Display the top \fInum\fP referrers table. +.TP 8 +.B \-S \fInum\fP +\fBTopSites\fP. Display the top \fInum\fP sites table. +.TP 8 +.B \-U \fInum\fP +\fBTopURLs\fP. Display the top \fInum\fP URLs table. +.TP 8 +.B \-C \fInum\fP +\fBTopCountries\fP. Display the top \fInum\fP countries table. +.TP 8 +.B \-e \fInum\fP +\fBTopEntry\fP. Display the top \fInum\fP entry pages table. +.TP 8 +.B \-E \fInum\fP +\fBTopExit\fP. Display the top \fInum\fP exit pages table. +.SH CONFIGURATION FILES +Configuration files are standard \fBASCII(7)\fP text files that may be created +or edited using any standard editor. Blank lines and lines that begin +with a pound sign ('#') are ignored. Any other lines are considered to +be configuration lines, and have the form "Keyword Value", where the +\'Keyword\' is one of the currently available configuration keywords defined +below, and 'Value' is the value to assign to that particular option. Any +text found after the keyword up to the end of the line is considered the +keyword's value, so you should not include anything after the actual value +on the line that is not actually part of the value being assigned. The +file \fIsample.conf\fP provided with the distribution contains lots of useful +documentation and examples as well. + +.I General Configuration Keywords +.TP 8 +.B LogFile \fIname\fP +Use log file named \fIname\fP. If none specified, \fISTDIN\fP will be used. +.TP 8 +.B LogType \fIname\fP +Specify log file type as \fIname\fP. Values can be either \fIclf\fP, +\fIsquid\fP, \fIftp\fP or \fIw3c\fP, with the default being \fBclf\fP. +.TP 8 +.B OutputDir \fIdir\fP +Create output in the directory \fIdir\fP. If none specified, the current +directory will be used. +.TP 8 +.B HistoryName \fIname\fP +Filename to use for history file. Relative to output directory unless +absolute name is given (ie: starts with '/'). Defaults to +\'\fBwebalizer.hist\fP' in the standard output directory. +.TP 8 +.B ReportTitle \fIname\fP +Use the title string \fIname\fP for the report title. If none +specified, use the default of (in english) "\fIUsage Statistics for \fP". +.TP 8 +.B HostName \fIname\fP +Set the hostname for the report as \fIname\fP. If none specified, an +attempt will be made to gather the hostname via a \fBuname(2)\fP system +call. If that fails, \fIlocalhost\fP will be used. +.TP 8 +.B UseHTTPS \fP( yes | \fBno\fP ) +Use \fIhttps://\fP on links to URLS, instead of the default \fIhttp://\fP, +in the '\fBTop URLs\fP' table. +.TP 8 +.B HTAccess \fP( yes | \fBno\fP ) +Enables the creation of a default .htaccess file in the output directory. +.TP 8 +.B Quiet \fP( yes | \fBno\fP ) +Suppress informational messages. Warning and Error messages will not be +suppressed. +.TP 8 +.B ReallyQuiet \fP( yes | \fBno\fP ) +Suppress all messages, including Warning and Error messages. +.TP 8 +.B Debug \fP( yes | \fBno\fP ) +Print extra debugging information on Warnings and Errors. +.TP 8 +.B TimeMe \fP( yes | \fBno\fP ) +Force timing information at end of processing. +.TP 8 +.B GMTTime \fP( yes | \fBno\fP ) +Use \fIGMT \fP(\fIUTC\fP) time instead of local timezone for reports. +.TP 8 +.B IgnoreHist \fP( yes | \fBno\fP ) +Ignore previous monthly history file. \fBUSE WITH CAUTION\fP. Does +not prevent \fIIncremental\fP file processing. +.TP 8 +.B IgnoreState \fP( yes | \fBno\fP ) +Ignore incremental data file. \fBUSE WITH CAUTION\fP. By ignoring +the incremental data file, all previous processing for the current +month will be lost and those logs must be re-processed. +.TP 8 +.B FoldSeqErr \fP( yes | \fBno\fP ) +Fold out of sequence log records back into analysis by treating them +as if they had the same date/time as the last good record. Normally, +out of sequence log records are ignored. +.TP 8 +.B CountryGraph \fP( \fByes\fP | no ) +Display Country Usage Graph in output report. +.TP 8 +.B CountryFlags \fP( yes | \fBno\fP ) +Enable or disable the display of flags in the top country table. +.TP 8 +.B FlagDir \fIname\fP +Specifies the directory \fIname\fP where the flag graphics are located. +If not specified, the default is in the \fIflags\fP directory directly +under the output directory being used. If specified, the display of +country flags will be enabled by default. Using '\fIFlagDir flags\fP' +is identical to using '\fICountryFlags yes\fP'. +.TP 8 +.B DailyGraph \fP( \fByes\fP | no ) +Display Daily Graph in output report. +.TP 8 +.B DailyStats \fP( \fByes\fP | no ) +Display Daily Statistics in output report. +.TP 8 +.B HourlyGraph \fP( \fByes\fP | no ) +Display Hourly Graph in output report. +.TP 8 +.B HourlyStats \fP( \fByes\fP | no ) +Display Hourly Statistics in output report. +.TP 8 +.B PageType \fIname\fP +Define the file extensions to consider as a \fIpage\fP. If a file +is found to have the same extension as \fIname\fP, it will be counted +as a \fIpage\fP (sometimes called a \fIpageview\fP). +.TP 8 +.B PagePrefix \fIname\fP +Allows URLs with the prefix \fIname\fP to be counted as a \fIpage\fP +type regardless of actual file type. This allows you to treat contents +under specified directories as pages no matter what their extension is. +.TP 8 +.B OmitPage \fIname\fP +Specifies URLs which should not be counted as pages, regardless of their +extension (or lack thereof). +.TP 8 +.B GraphLegend \fP( \fByes\fP | no ) +Allows the color coded graph legends to be enabled/disabled. +.TP 8 +.B GraphLines \fInum\fP +Specify the number of background reference lines displayed on the +graphs produced. Disable by using zero ('\fB0\fP'), default is \fB2\fP. +.TP 8 +.B IndexMonths \fInum\fP +Specify the number of months to display in the main index (yearly summary) +table. Default is 12 months. Can be set to anything between 12 and 120 +months (1 to 10 years). +.TP 8 +.B YearHeaders \fP( \fByes\fP | no ) +Enable/disable the display of year headers in the main index (yearly +summary) table. If enabled, year headers will be shown when the table +is displaying more than 16 months worth of data. Values can be 'yes' +or 'no'. Default is 'yes'. +.TP 8 +.B YearTotals \fP( \fByes\fP | no ) +Enable/disable the display of year totals in the main index (yearly +summary) table. If enabled, year totals will be shown when the table +is displaying more than 16 months worth of data. Values can be 'yes' +or 'no'. Default is 'yes'. +.TP 8 +.B GraphMonths \fInum\fP +Specify the number of months to display in the main index (yearly +summary) graph. Default is 12 months. Can be set to anything between +12 and 72 months (1 to 6 years). +.TP 8 +.B VisitTimeout \fInum\fP +Specifies the visit timeout value. Default is \fI1800 seconds\fP (30 +minutes). A visit is determined by looking at the difference in time +between the current and last request from a specific site. If the +difference is greater or equal to the timeout value, the request is +counted as a new visit. Specified in seconds. +.TP 8 +.B IndexAlias \fIname\fP +Use \fIname\fP as an additional alias for \fIindex.*\fP. +.TP 8 +.B DefaultIndex \fP( \fByes\fP | no ) +Enables or disables the use of '\fBindex.\fP' as a default index name +to be stripped from the end of URLs. This does not effect any index +names that may be defined with the \fIIndexAlias\fP option. +.TP 8 +.B MangleAgents \fInum\fP +Mangle user agent names based on mangle level \fInum\fP. See the +\fI-M\fP command line switch for mangle levels and their meaning. +The default is \fB0\fP, which doesn't mangle user agents at all. +.TP 8 +.B StripCGI \fP( \fByes\fP | no ) +Determines if URL CGI variables should be stripped from the end of +URLs. Values may be 'yes' or 'no', with the default being 'yes'. +.TP 8 +.B TrimSquidURL \fInum\fP +Allows squid log URLs to be reduced in granularity by truncating +them after \fInum\fP slashes ('/') after the http:// prefix. A +setting of one (1) will cause all URLs to be summarized by domain +only. The default value is zero (0), which will disable any URL +modifications and leave them exactly as found in the log file. +.TP 8 +.B SearchEngine\fP \fIname\fP \fIvariable\fP +Allows the specification of search engines and their query strings. +The \fIname\fP is the name to match against the referrer string for +a given search engine. The \fIvariable\fP is the cgi variable that +the search engine uses for queries. See the \fBsample.conf\fP file +for example usage with common search engines. +.TP 8 +.B SearchCaseI\fP ( \fByes\fP | no ) +Determines if search strings should be treated case insensitive or +not. The default is 'yes', which lowercases all search strings +(treat as case insensitive). +.TP 8 +.B Incremental \fP( yes | \fBno\fP ) +Enable Incremental mode processing. +.TP 8 +.B IncrementalName \fIname\fP +Filename to use for incremental data. Relative to output directory unless +an absolute name is given (ie: starts with '/'). Defaults to +\'\fBwebalizer.current\fP' in the standard output directory. +.TP 8 +.B DNSCache \fIname\fP +Filename to use for the DNS cache. Relative to output directory unless +an absolute name is given (ie: starts with '/'). +.TP 8 +.B DNSChildren \fInum\fP +Number of children DNS processes to run in order to create/update the +DNS cache file. Specify zero (\fB0\fP) to disable. +.TP 8 +.B CacheIPs \fP( yes | \fBno\fP ) +Cache unresolved IP addresses in the DNS database. Default is '\fBno\fP'. +.TP 8 +.B CacheTTL \fInum\fP +DNS cache entry time to live (TTL) in days. Default is 7 days. May +be any value between 1 and 100. +.TP 8 +.B GeoDB \fP( yes | \fBno\fP ) +Allows native GeoDB geolocation services to be enabled or disabled. +Default value is '\fBno\fP'. +.TP 8 +.B GeoDBDatabase \fIname\fP +Allows the use of an alternate GeoDB database \fIname\fP. If not +specified, the default database will be used. +.TP 8 +.B GeoIP \fP( yes | \fBno\fP ) +Allows GeoIP (by MaxMind Inc.) geolocation services to be enabled or +disabled. Default is '\fBno\fP'. If native \fIGeoDB\fP geolocation +services are also enabled, then this option will have no effect (and +the native \fIGeoDB\fP services will be used). +.TP 8 +.B GeoIPDatabase \fIname\fP +Allows the use of an alternate GeoIP database \fIname\fP. If not +specified, the default database will be used. +.PP +.I Top Table Keywords +.TP 8 +.B TopAgents \fInum\fP +Display the top \fInum\fP User Agents table. Use zero to disable. +.TP 8 +.B AllAgents \fP( yes | \fBno\fP ) +Create separate HTML page with \fBAll\fP User Agents. +.TP 8 +.B TopReferrers \fInum\fP +Display the top \fInum\fP Referrers table. Use zero to disable. +.TP 8 +.B AllReferrers \fP( yes | \fBno\fP ) +Create separate HTML page with \fBAll\fP Referrers. +.TP 8 +.B TopSites \fInum\fP +Display the top \fInum\fP Sites table. Use zero to disable. +.TP 8 +.B TopKSites \fInum\fP +Display the top \fInum\fP Sites (by KByte) table. Use zero to disable. +.TP 8 +.B AllSites \fP( yes | \fBno\fP ) +Create separate HTML page with \fBAll\fP Sites. +.TP 8 +.B TopURLs \fInum\fP +Display the top \fInum\fP URLs table. Use zero to disable. +.TP 8 +.B TopKURLs \fInum\fP +Display the top \fInum\fP URLs (by KByte) table. Use zero to disable. +.TP 8 +.B AllURLs \fP( yes | \fBno\fP ) +Create separate HTML page with \fBAll\fP URLs. +.TP 8 +.B TopCountries \fInum\fP +Display the top \fInum\fP Countries in the table. Use zero to disable. +.TP 8 +.B TopEntry \fInum\fP +Display the top \fInum\fP Entry Pages in the table. Use zero to disable. +.TP 8 +.B TopExit \fInum\fP +Display the top \fInum\fP Exit Pages in the table. Use zero to disable. +.TP 8 +.B TopSearch \fInum\fP +Display the top \fInum\fP Search Strings in the table. Use zero to disable. +.TP 8 +.B AllSearchStr \fP( yes | \fBno\fP ) +Create separate HTML page with \fBAll\fP Search Strings. +.TP 8 +.B TopUsers \fInum\fP +Display the top \fInum\fP Usernames in the table. Use zero to disable. +Usernames are only available if using http based authentication. +.TP 8 +.B AllUsers \fP( yes | \fBno\fP ) +Create separate HTML page with \fBAll\fP Usernames. +.PP +.I Hide/Ignore/Group/Include Keywords +.TP 8 +.B HideAgent \fIname\fP +Hide User Agents that match \fIname\fP. +.TP 8 +.B HideReferrer \fIname\fP +Hide Referrers that match \fIname\fP. +.TP 8 +.B HideSite \fIname\fP +Hide Sites that match \fIname\fP. +.TP 8 +.B HideAllSites \fP( yes | \fBno\fP ) +Hide all individual sites. This causes only grouped sites to be displayed. +.TP 8 +.B HideURL \fIname\fP +Hide URLs that match \fIname\fP. +.TP 8 +.B HideUser \fIname\fP +Hide Usernames that match \fIname\fP. +.TP 8 +.B IgnoreAgent \fIname\fP +Ignore User Agents that match \fIname\fP. +.TP 8 +.B IgnoreReferrer \fIname\fP +Ignore Referrers that match \fIname\fP. +.TP 8 +.B IgnoreSite \fIname\fP +Ignore Sites that match \fIname\fP. +.TP 8 +.B IgnoreURL \fIname\fP +Ignore URLs that match \fIname\fP. +.TP 8 +.B IgnoreUser \fIname\fP +Ignore Usernames that match \fIname\fP. +.TP 8 +.B GroupAgent \fIname\fP [\fILabel\fP] +Group User Agents that match \fIname\fP. Display \fILabel\fP in 'Top Agent' +table if given (instead of \fIname\fP). \fIname\fP may be enclosed in quotes. +.TP 8 +.B GroupReferrer \fIname\fP [\fILabel\fP] +Group Referrers that match \fIname\fP. Display \fILabel\fP in 'Top Referrer' +table if given (instead of \fIname\fP). \fIname\fP may be enclosed in quotes. +.TP 8 +.B GroupSite \fIname\fP [\fILabel\fP] +Group Sites that match \fIname\fP. Display \fILabel\fP in 'Top Site' +table if given (instead of \fIname\fP). \fIname\fP may be enclosed in quotes. +.TP 8 +.B GroupDomains \fInum\fP +Automatically group sites by domain. The value \fInum\fP specifies the +level of grouping, and can be thought of as the 'number of dots' to +be displayed. The default value of \fB0\fP disables domain grouping. +.TP 8 +.B GroupURL \fIname\fP [\fILabel\fP] +Group URLs that match \fIname\fP. Display \fILabel\fP in 'Top URL' +table if given (instead of \fIname\fP). \fIname\fP may be enclosed in quotes. +.TP 8 +.B GroupUser \fIname\fP [\fILabel\fP] +Group Usernames that match \fIname\fP. Display \fILabel\fP in 'Top +Usernames' table if given (instead of \fIname\fP). \fIname\fP may be +enclosed in quotes. +.TP 8 +.B IncludeSite \fIname\fP +Force inclusion of sites that match \fIname\fP. Takes precedence +over \fBIgnore*\fP keywords. +.TP 8 +.B IncludeURL \fIname\fP +Force inclusion of URLs that match \fIname\fP. Takes precedence +over \fBIgnore*\fP keywords. +.TP 8 +.B IncludeReferrer \fIname\fP +Force inclusion of Referrers that match \fIname\fP. Takes precedence +over \fBIgnore*\fP keywords. +.TP 8 +.B IncludeAgent \fIname\fP +Force inclusion of User Agents that match \fIname\fP. Takes precedence +over \fBIgnore*\fP keywords. +.TP 8 +.B IncludeUser \fIname\fP +Force inclusion of Usernames that match \fIname\fP. Takes precedence +over \fBIgnore*\fP keywords. +.PP +.I HTML Generation Keywords +.TP 8 +.B HTMLExtension \fItext\fP +Defines the HTML file extension to use. Default is \fIhtml\fP. Do not +include the leading period! +.TP 8 +.B HTMLPre \fItext\fP +Insert \fItext\fP at the very beginning of the generated HTML file. +Defaults to a standard html 3.2 \fIDOCTYPE\fP record. +.TP 8 +.B HTMLHead \fItext\fP +Insert \fItext\fP within the <HEAD></HEAD> block of the HTML file. +.TP 8 +.B HTMLBody \fItext\fP +Insert \fItext\fP in HTML page, starting with the <BODY> tag. If used, the +first line must be a \fI<BODY ...>\fP tag. Multiple lines may be specified. +.TP 8 +.B HTMLPost \fItext\fP +Insert \fItext\fP at top (before horiz. rule) of HTML pages. Multiple lines +may be specified. +.TP 8 +.B HTMLTail \fItext\fP +Insert \fItext\fP at bottom of the HTML page. The \fItext\fP is top and +right aligned within a table column at the end of the report. +.TP 8 +.B HTMLEnd \fItext\fP +Insert \fItext\fP at the very end of the HTML page. If not specified, +the default is to insert the ending </BODY> and </HTML> tags. If used, +you \fImust\fP supply these tags yourself. +.TP 8 +.B LinkReferrer \fP( yes | \fBno\fP ) +Determines if the referrers listed in the top referrers table should be +displayed as plain text, or as a link to the referrer URL. +.TP 8 +.B ColorHit \fP( rrggbb | \fB00805c\fP ) +Sets the graph's hit-color to the specified html color (no '#'). +.TP 8 +.B ColorFile \fP( rrggbb | \fB0040ff\fP ) +Sets the graph's file-color to the specified html color (no '#'). +.TP 8 +.B ColorSite \fP( rrggbb | \fBff8000\fP ) +Sets the graph's site-color to the specified html color (no '#'). +.TP 8 +.B ColorKbyte \fP( rrggbb | \fBff0000\fP ) +Sets the graph's kilobyte-color to the specified html color (no '#'). +.TP 8 +.B ColorPage \fP( rrggbb | \fB00e0ff\fP ) +Sets the graph's page-color to the specified html color (no '#'). +.TP 8 +.B ColorVisit \fP( rrggbb | \fBffff00\fP ) +Sets the graph's visit-color to the specified html color (no '#'). +.TP 8 +.B ColorMisc \fP( rrggbb | \fB00e0ff\fP ) +Sets the 'miscellaneous' color for table headers (not graphs) to +the specified html color (no '#'). +.TP 8 +.B PieColor1 \fP( rrggbb | \fB800080\fP ) +Sets the pie's first optional color to the specified html color (no '#'). +.TP 8 +.B PieColor2 \fP( rrggbb | \fB80ffc0\fP ) +Sets the pie's second optional color to the specified html color (no '#'). +.TP 8 +.B PieColor3 \fP( rrggbb | \fBff00ff\fP ) +Sets the pie's third optional color to the specified html color (no '#'). +.TP 8 +.B PieColor4 \fP( rrggbb | \fBffc480\fP ) +Sets the pie's fourth optional color to the specified html color (no '#'). +.PP +.I Dump Object Keywords +.PP +The \fIWebalizer\fP allows you to export processed data to other programs by +using \fItab delimited\fP text files. The \fIDump*\fP commands specify +which files are to be written, and where. +.TP 8 +.B DumpPath \fIname\fP +Save dump files in directory \fIname\fP. If not specified, the default +output directory will be used. Do not specify a trailing slash ('/'). +.TP 8 +.B DumpExtension \fIname\fP +Use \fIname\fP as the filename extension for dump files. If not given, +the default of \fBtab\fP will be used. +.TP 8 +.B DumpHeader \fP( yes | \fBno\fP ) +Print a column header as the first record of the file. +.TP 8 +.B DumpSites \fP( yes | \fBno\fP ) +Dump the sites data to a tab delimited file. +.TP 8 +.B DumpURLs \fP( yes | \fBno\fP ) +Dump the url data to a tab delimited file. +.TP 8 +.B DumpReferrers \fP( yes | \fBno\fP ) +Dump the referrer data to a tab delimited file. This data is only +available if using a log that contains referrer information +(ie: a combined format web log). +.TP 8 +.B DumpAgents \fP( yes | \fBno\fP ) +Dump the user agent data to a tab delimited file. This data is only +available if using a log that contains user agent information +(ie: a combined format web log). +.TP 8 +.B DumpUsers \fP( yes | \fBno\fP ) +Dump the username data to a tab delimited file. This data is only available +if processing a wu-ftpd xferlog or a web log that contains http authentication +information. +.TP 8 +.B DumpSearchStr \fP( yes | \fBno\fP ) +Dump the search string data to a tab delimited file. This data is only +available if processing a web log that contains referrer information and +had search string information present. +.SH FILES +.TP 20 +.I webalizer.conf +Default configuration file. Is searched for in the current directory +and if not found, in the \fI/etc/\fP directory. +.TP 20 +.I webalizer.hist +Monthly history file for previous months. (can be changed) +.TP 20 +.I webalizer.current +Current state data file (Incremental processing). (can be changed) +.TP 20 +.I xxxxx_YYYYMM.html +Various monthly \fIHTML\fP output files produced. (extension can be changed) +.TP 20 +.I xxxxx_YYYYMM.png +Various monthly image files used in the reports. +.TP 20 +.I xxxxx_YYYYMM.tab +Monthly tab delimited text files. (extension can be changed) +.SH BUGS +Please report bugs to the author. +.SH COPYRIGHT +Copyright (C) 1997-2011 by Bradford L. Barrett. Distributed under +the GNU GPL. See the files "\fICOPYING\fP" and "\fICopyright\fP", +supplied with all distributions for additional information. +.SH AUTHOR +Bradford L. Barrett <\fIbrad at mrunix dot net\fP> diff --git a/webalizer.LSM b/webalizer.LSM new file mode 100644 index 0000000..f975c40 --- /dev/null +++ b/webalizer.LSM @@ -0,0 +1,26 @@ +Begin3 +Title: The Webalizer +Version: 2.20 +Entered-date: 01JUN2008 +Description: A fast, free web server log file analysis program. Produces + HTML output for viewing with a web browser. Written in C on + a Linux platform, however designed to be as ANSI/POSIX + compliant as possible so porting to other UNIX platforms should + be painless. Binary distributions for most popular platforms + are available. Features multiple language support, incremental + processing capabilities, reverse DNS lookup support, native + geolocation support as well as geolocation support via the + optional GeoIP library and database from MaxMind Inc., data + export via tab delimited ASCII files to popular databases and + spreadsheets, and much more. Supports all standard CLF and + combined web logs, wu-ftpd xferlog, squid proxy and extended + W3C format logs, all of which can be either in standard text + format or compressed using gzip or bzip2. +Keywords: Web Analysis, Log Analysis, Linux, Unix, apache, wcmgr, GeoDB +Author: Bradford L. Barrett +Maintained-by: Bradford L. Barrett +Primary-site: http://www.webalizer.org/ +Original-site: ftp://ftp.webalizer.org/pub/webalizer/ +Platforms: Linux/Unix, OS/2, Win32, MacOSX, POSIX +Copying-policy: GPL +End diff --git a/webalizer.c b/webalizer.c new file mode 100644 index 0000000..702c532 --- /dev/null +++ b/webalizer.c @@ -0,0 +1,2479 @@ +/* + webalizer - a web server log analysis program + + Copyright (C) 1997-2011 Bradford L. Barrett + + This program 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 2 of the License, or + (at your option) any later version, and provided that the above + copyright and permission notice is included with all distributed + copies of this or derived software. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +*/ + +/*********************************************/ +/* STANDARD INCLUDES */ +/*********************************************/ + +/* Fix broken Zlib 64 bitness */ +#if _FILE_OFFSET_BITS == 64 +#ifndef _LARGEFILE64_SOURCE +#define _LARGEFILE64_SOURCE 1 +#endif +#endif + +#include <time.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <errno.h> +#include <unistd.h> /* normal stuff */ +#include <locale.h> +#include <ctype.h> +#include <sys/utsname.h> +#include <zlib.h> +#include <sys/stat.h> + +/* ensure getopt */ +#ifdef HAVE_GETOPT_H +#include <getopt.h> +#endif + +/* ensure sys/types */ +#ifndef _SYS_TYPES_H +#include <sys/types.h> +#endif + +/* Need socket header? */ +#ifdef HAVE_SYS_SOCKET_H +#include <sys/socket.h> +#endif + +/* some systems need this */ +#ifdef HAVE_MATH_H +#include <math.h> +#endif + +#ifdef USE_DNS +#include <netdb.h> +#include <netinet/in.h> +#include <arpa/inet.h> +#include <db.h> +#endif /* USE_DNS */ + +#ifdef USE_GEOIP +#include <GeoIP.h> +#endif + +#ifdef USE_BZIP +#include <bzlib.h> +int bz2_rewind(void **, char *, char *); +#endif + +#include "webalizer.h" /* main header */ +#include "output.h" +#include "parser.h" +#include "preserve.h" +#include "hashtab.h" +#include "linklist.h" +#include "webalizer_lang.h" /* lang. support */ +#ifdef USE_DNS +#include "dns_resolv.h" +#endif + +/* internal function prototypes */ + +void clear_month(); /* clear monthly stuff */ +char *unescape(char *); /* unescape URLs */ +void print_opts(char *); /* print options */ +void print_version(); /* duhh... */ +int isurlchar(unsigned char, int); /* valid URL char fnc. */ +void get_config(char *); /* Read a config file */ +static char *save_opt(char *); /* save conf option */ +void srch_string(char *); /* srch str analysis */ +char *get_domain(char *); /* return domain name */ +void agent_mangle(char *); /* reformat user agent */ +char *our_gzgets(void *, char *, int); /* our gzgets */ +int ouricmp(char *, char *); /* case ins. compare */ +int isipaddr(char *); /* is IP address test */ + +/*********************************************/ +/* GLOBAL VARIABLES */ +/*********************************************/ + +char *version = "2.23"; /* program version */ +char *editlvl = "05"; /* edit level */ +char *moddate = "14-Apr-2011"; /* modification date */ +char *copyright = "Copyright 1997-2011 by Bradford L. Barrett"; + +int verbose = 2; /* 2=verbose,1=err, 0=none */ +int debug_mode = 0; /* debug mode flag */ +int time_me = 0; /* timing display flag */ +int local_time = 1; /* 1=localtime 0=GMT (UTC) */ +int hist_gap = 0; /* 1=error w/hist, save bkp */ +int ignore_hist = 0; /* history flag (1=skip) */ +int ignore_state = 0; /* state flag (1=skip) */ +int default_index= 1; /* default index. (1=yes) */ +int hourly_graph = 1; /* hourly graph display */ +int hourly_stats = 1; /* hourly stats table */ +int daily_graph = 1; /* daily graph display */ +int daily_stats = 1; /* daily stats table */ +int ctry_graph = 1; /* country graph display */ +int shade_groups = 1; /* Group shading 0=no 1=yes */ +int hlite_groups = 1; /* Group hlite 0=no 1=yes */ +int mangle_agent = 0; /* mangle user agents */ +int incremental = 0; /* incremental mode 1=yes */ +int use_https = 0; /* use 'https://' on URLs */ +int htaccess = 0; /* create .htaccess? (0=no) */ +int stripcgi = 1; /* strip url cgi (0=no) */ +int normalize = 1; /* normalize CLF URL (0=no) */ +int trimsquid = 0; /* trim squid urls (0=no) */ +int searchcasei = 1; /* case insensitive search */ +int visit_timeout= 1800; /* visit timeout (seconds) */ +int graph_legend = 1; /* graph legend (1=yes) */ +int graph_lines = 2; /* graph lines (0=none) */ +int fold_seq_err = 0; /* fold seq err (0=no) */ +int log_type = LOG_CLF; /* log type (default=CLF) */ +int group_domains= 0; /* Group domains 0=none */ +int hide_sites = 0; /* Hide ind. sites (0=no) */ +int link_referrer= 0; /* Link referrers (0=no) */ +char *hname = NULL; /* hostname for reports */ +char *state_fname = "webalizer.current"; /* run state file name */ +char *hist_fname = "webalizer.hist"; /* name of history file */ +char *html_ext = "html"; /* HTML file suffix */ +char *dump_ext = "tab"; /* Dump file suffix */ +char *conf_fname = NULL; /* name of config file */ +char *log_fname = NULL; /* log file pointer */ +char *out_dir = NULL; /* output directory */ +char *blank_str = ""; /* blank string */ +char *geodb_fname = NULL; /* GeoDB database filename */ +char *dns_cache = NULL; /* DNS cache file name */ +int dns_children = 0; /* DNS children (0=don't do)*/ +int cache_ips = 0; /* CacheIPs in DB (0=no) */ +int cache_ttl = 7; /* DNS Cache TTL (days) */ +int geodb = 0; /* Use GeoDB (0=no) */ +int graph_mths = 12; /* # months in index graph */ +int index_mths = 12; /* # months in index table */ +int year_hdrs = 1; /* index year seperators */ +int year_totals = 1; /* index year subtotals */ +int use_flags = 0; /* Show flags in ctry table */ +char *flag_dir = "flags"; /* location of flag icons */ + +#ifdef USE_GEOIP +int geoip = 0; /* Use GeoIP (0=no) */ +char *geoip_db = NULL; /* GeoIP database filename */ +GeoIP *geo_fp = NULL; /* GeoIP database handle */ +#endif + +int ntop_sites = 30; /* top n sites to display */ +int ntop_sitesK = 10; /* top n sites (by kbytes) */ +int ntop_urls = 30; /* top n url's to display */ +int ntop_urlsK = 10; /* top n url's (by kbytes) */ +int ntop_entry = 10; /* top n entry url's */ +int ntop_exit = 10; /* top n exit url's */ +int ntop_refs = 30; /* top n referrers "" */ +int ntop_agents = 15; /* top n user agents "" */ +int ntop_ctrys = 30; /* top n countries "" */ +int ntop_search = 20; /* top n search strings */ +int ntop_users = 20; /* top n users to display */ + +int all_sites = 0; /* List All sites (0=no) */ +int all_urls = 0; /* List All URLs (0=no) */ +int all_refs = 0; /* List All Referrers */ +int all_agents = 0; /* List All User Agents */ +int all_search = 0; /* List All Search Strings */ +int all_users = 0; /* List All Usernames */ + +int dump_sites = 0; /* Dump tab delimited sites */ +int dump_urls = 0; /* URLs */ +int dump_refs = 0; /* Referrers */ +int dump_agents = 0; /* User Agents */ +int dump_users = 0; /* Usernames */ +int dump_search = 0; /* Search strings */ +int dump_header = 0; /* Dump header as first rec */ +char *dump_path = NULL; /* Path for dump files */ + +int cur_year=0, cur_month=0, /* year/month/day/hour */ + cur_day=0, cur_hour=0, /* tracking variables */ + cur_min=0, cur_sec=0; + +u_int64_t cur_tstamp=0; /* Timestamp... */ +u_int64_t rec_tstamp=0; +u_int64_t req_tstamp=0; +u_int64_t epoch; /* used for timestamp adj. */ + +int check_dup=0; /* check for dup flag */ +int gz_log=COMP_NONE; /* gziped log? (0=no) */ + +double t_xfer=0.0; /* monthly total xfer value */ +u_int64_t t_hit=0,t_file=0,t_site=0, /* monthly total vars */ + t_url=0,t_ref=0,t_agent=0, + t_page=0, t_visit=0, t_user=0; + +double tm_xfer[31]; /* daily transfer totals */ + +u_int64_t tm_hit[31], tm_file[31], /* daily total arrays */ + tm_site[31], tm_page[31], + tm_visit[31]; + +u_int64_t dt_site; /* daily 'sites' total */ + +u_int64_t ht_hit=0, mh_hit=0; /* hourly hits totals */ + +u_int64_t th_hit[24], th_file[24], /* hourly total arrays */ + th_page[24]; + +double th_xfer[24]; + +int f_day,l_day; /* first/last day vars */ + +struct utsname system_info; /* system info structure */ + +u_int64_t ul_bogus =0; /* Dummy counter for groups */ + +struct log_struct log_rec; /* expanded log storage */ + +void *zlog_fp; /* compressed logfile ptr */ +FILE *log_fp; /* regular logfile pointer */ + +char buffer[BUFSIZE]; /* log file record buffer */ +char tmp_buf[BUFSIZE]; /* used to temp save above */ + +CLISTPTR *top_ctrys = NULL; /* Top countries table */ + +#define GZ_BUFSIZE 16384 /* our_getfs buffer size */ +char f_buf[GZ_BUFSIZE]; /* our_getfs buffer */ +char *f_cp=f_buf+GZ_BUFSIZE; /* pointer into the buffer */ +int f_end=0; /* count to end of buffer */ + +char hit_color[] = "#00805c"; /* graph hit color */ +char file_color[] = "#0040ff"; /* graph file color */ +char site_color[] = "#ff8000"; /* graph site color */ +char kbyte_color[] = "#ff0000"; /* graph kbyte color */ +char page_color[] = "#00e0ff"; /* graph page color */ +char visit_color[] = "#ffff00"; /* graph visit color */ +char misc_color[] = "#00e0ff"; /* graph misc color */ +char pie_color1[] = "#800080"; /* pie additionnal color 1 */ +char pie_color2[] = "#80ffc0"; /* pie additionnal color 2 */ +char pie_color3[] = "#ff00ff"; /* pie additionnal color 3 */ +char pie_color4[] = "#ffc080"; /* pie additionnal color 4 */ + +/*********************************************/ +/* MAIN - start here */ +/*********************************************/ + +int main(int argc, char *argv[]) +{ + int i; /* generic counter */ + char *cp1, *cp2, *cp3; /* generic char pointers */ + char host_buf[MAXHOST+1]; /* used to save hostname */ + + NLISTPTR lptr; /* generic list pointer */ + + extern char *optarg; /* used for command line */ + extern int optind; /* parsing routine 'getopt' */ + extern int opterr; + + time_t start_time, end_time; /* program timers */ + float temp_time; /* temporary time storage */ + + int rec_year,rec_month=1,rec_day,rec_hour,rec_min,rec_sec; + + int good_rec =0; /* 1 if we had a good record */ + u_int64_t total_rec =0; /* Total Records Processed */ + u_int64_t total_ignore=0; /* Total Records Ignored */ + u_int64_t total_bad =0; /* Total Bad Records */ + + int max_ctry; /* max countries defined */ + + /* month names used for parsing logfile (shouldn't be lang specific) */ + char *log_month[12]={ "jan", "feb", "mar", + "apr", "may", "jun", + "jul", "aug", "sep", + "oct", "nov", "dec"}; + + /* stat struct for files */ + struct stat log_stat; + + /* Assume that LC_CTYPE is what the user wants for non-ASCII chars */ + setlocale(LC_CTYPE,""); + + /* initalize epoch */ + epoch=jdate(1,1,1970); /* used for timestamp adj. */ + + sprintf(tmp_buf,"%s/webalizer.conf",ETCDIR); + /* check for default config file */ + if (!access("webalizer.conf",F_OK)) + get_config("webalizer.conf"); + else if (!access(tmp_buf,F_OK)) + get_config(tmp_buf); + + /* get command line options */ + opterr = 0; /* disable parser errors */ + while ((i=getopt(argc,argv,"a:A:bc:C:dD:e:E:fF:g:GhHiI:jJ:k:K:l:Lm:M:n:N:o:O:pP:qQr:R:s:S:t:Tu:U:vVwW:x:XYz:Z"))!=EOF) + { + switch (i) + { + case 'a': add_nlist(optarg,&hidden_agents); break; /* Hide agents */ + case 'A': ntop_agents=atoi(optarg); break; /* Top agents */ + case 'b': ignore_state=1; break; /* Ignore state file */ + case 'c': get_config(optarg); break; /* Config file */ + case 'C': ntop_ctrys=atoi(optarg); break; /* Top countries */ + case 'd': debug_mode=1; break; /* Debug */ + case 'D': dns_cache=optarg; break; /* DNS Cache filename */ + case 'e': ntop_entry=atoi(optarg); break; /* Top entry pages */ + case 'E': ntop_exit=atoi(optarg); break; /* Top exit pages */ + case 'f': fold_seq_err=1; break; /* Fold sequence errs */ + case 'F': log_type=(tolower(optarg[0])=='f')? + LOG_FTP:(tolower(optarg[0])=='s')? + LOG_SQUID:(tolower(optarg[0])=='w')? + LOG_W3C:LOG_CLF; break; /* define log type */ + case 'g': group_domains=atoi(optarg); break; /* GroupDomains (0=no) */ + case 'G': hourly_graph=0; break; /* no hourly graph */ + case 'h': print_opts(argv[0]); break; /* help */ + case 'H': hourly_stats=0; break; /* no hourly stats */ + case 'i': ignore_hist=1; break; /* Ignore history */ + case 'I': add_nlist(optarg,&index_alias); break; /* Index alias */ + case 'j': geodb=1; break; /* Enable GeoDB */ + case 'J': geodb_fname=optarg; break; /* GeoDB db filename */ + case 'k': graph_mths=atoi(optarg); break; /* # months idx graph */ + case 'K': index_mths=atoi(optarg); break; /* # months idx table */ + case 'l': graph_lines=atoi(optarg); break; /* Graph Lines */ + case 'L': graph_legend=0; break; /* Graph Legends */ + case 'm': visit_timeout=atoi(optarg); break; /* Visit Timeout */ + case 'M': mangle_agent=atoi(optarg); break; /* mangle user agents */ + case 'n': hname=optarg; break; /* Hostname */ + case 'N': dns_children=atoi(optarg); break; /* # of DNS children */ + case 'o': out_dir=optarg; break; /* Output directory */ + case 'O': add_nlist(optarg,&omit_page); break; /* pages not counted */ + case 'p': incremental=1; break; /* Incremental run */ + case 'P': add_nlist(optarg,&page_type); break; /* page view types */ + case 'q': verbose=1; break; /* Quiet (verbose=1) */ + case 'Q': verbose=0; break; /* Really Quiet */ + case 'r': add_nlist(optarg,&hidden_refs); break; /* Hide referrer */ + case 'R': ntop_refs=atoi(optarg); break; /* Top referrers */ + case 's': add_nlist(optarg,&hidden_sites); break; /* Hide site */ + case 'S': ntop_sites=atoi(optarg); break; /* Top sites */ + case 't': msg_title=optarg; break; /* Report title */ + case 'T': time_me=1; break; /* TimeMe */ + case 'u': add_nlist(optarg,&hidden_urls); break; /* hide URL */ + case 'U': ntop_urls=atoi(optarg); break; /* Top urls */ + case 'v': verbose=2; debug_mode=1; break; /* Verbose */ + case 'V': print_version(); break; /* Version */ +#ifdef USE_GEOIP + case 'w': geoip=1; break; /* Enable GeoIP */ + case 'W': geoip_db=optarg; break; /* GeoIP database name */ +#endif + case 'x': html_ext=optarg; break; /* HTML file extension */ + case 'X': hide_sites=1; break; /* Hide ind. sites */ + case 'Y': ctry_graph=0; break; /* Supress ctry graph */ + case 'Z': normalize=0; break; /* Dont normalize URLs */ + case 'z': use_flags=1; flag_dir=optarg; break; /* Ctry flag dir */ + } + } + + if (argc - optind != 0) log_fname = argv[optind]; + if ( log_fname && (log_fname[0]=='-')) log_fname=NULL; /* force STDIN? */ + + /* check for gzipped file - .gz */ + if (log_fname) if (!strcmp((log_fname+strlen(log_fname)-3),".gz")) + gz_log=COMP_GZIP; + +#ifdef USE_BZIP + /* check for bzip file - .bz2 */ + if (log_fname) if (!strcmp((log_fname+strlen(log_fname)-4),".bz2")) + gz_log=COMP_BZIP; +#endif + + /* setup our internal variables */ + init_counters(); /* initalize (zero) main counters */ + memset(hist, 0, sizeof(hist)); /* initalize (zero) history array */ + + /* add default index. alias if needed */ + if (default_index) add_nlist("index.",&index_alias); + + if (page_type==NULL) /* check if page types present */ + { + if ((log_type==LOG_CLF)||(log_type==LOG_SQUID)||(log_type==LOG_W3C)) + { + add_nlist("htm*" ,&page_type); /* if no page types specified, we */ + add_nlist("cgi" ,&page_type); /* use the default ones here... */ + if (!isinlist(page_type,html_ext)) add_nlist(html_ext,&page_type); + } + else add_nlist("txt" ,&page_type); /* FTP logs default to .txt */ + } + + for (max_ctry=0;ctry[max_ctry].desc;max_ctry++); + if (ntop_ctrys > max_ctry) ntop_ctrys = max_ctry; /* force upper limit */ + if (graph_lines> 20) graph_lines= 20; /* keep graphs sane! */ + if (graph_mths<12) graph_mths=12; + if (graph_mths>GRAPHMAX) graph_mths=GRAPHMAX; + if (index_mths<12) index_mths=12; + if (index_mths>HISTSIZE) index_mths=HISTSIZE; + + if (log_type == LOG_FTP) + { + /* disable stuff for ftp logs */ + ntop_entry=ntop_exit=0; + ntop_search=0; + } + else + { + if (search_list==NULL) + { + /* If no search engines defined, define some :) */ + add_glist(".google. q=" ,&search_list); + add_glist("yahoo.com p=" ,&search_list); + add_glist("altavista.com q=" ,&search_list); + add_glist("aolsearch. query=" ,&search_list); + add_glist("ask.co q=" ,&search_list); + add_glist("eureka.com q=" ,&search_list); + add_glist("lycos.com query=" ,&search_list); + add_glist("hotbot.com MT=" ,&search_list); + add_glist("msn.com q=" ,&search_list); + add_glist("infoseek.com qt=" ,&search_list); + add_glist("webcrawler searchText=" ,&search_list); + add_glist("excite search=" ,&search_list); + add_glist("netscape.com query=" ,&search_list); + add_glist("mamma.com query=" ,&search_list); + add_glist("alltheweb.com q=" ,&search_list); + add_glist("northernlight.com qr=" ,&search_list); + } + } + + /* ensure entry/exits don't exceed urls */ + i=(ntop_urls>ntop_urlsK)?ntop_urls:ntop_urlsK; + if (ntop_entry>i) ntop_entry=i; + if (ntop_exit>i) ntop_exit=i; + + for (i=0;i<MAXHASH;i++) + { + sm_htab[i]=sd_htab[i]=NULL; /* initalize hash tables */ + um_htab[i]=NULL; + rm_htab[i]=NULL; + am_htab[i]=NULL; + sr_htab[i]=NULL; + } + + /* Be polite and announce yourself... */ + if (verbose>1) + { + uname(&system_info); + printf("Webalizer V%s-%s (%s %s %s) %s\n", version,editlvl, + system_info.sysname, system_info.release, + system_info.machine,language); + } + +#ifndef USE_DNS + if (strstr(argv[0],"webazolver")!=0) + /* DNS support not present, aborting... */ + { printf("%s\n",msg_dns_abrt); exit(1); } +#else + /* Force sane values for cache TTL */ + if (cache_ttl<1) cache_ttl=1; + if (cache_ttl>100) cache_ttl=100; +#endif /* USE_DNS */ + + /* open log file */ + if (log_fname) + { + /* stat the file */ + if ( !(lstat(log_fname, &log_stat)) ) + { + /* check if the file a symlink */ + if ( S_ISLNK(log_stat.st_mode) ) + { + if (verbose) + fprintf(stderr,"%s %s (symlink)\n",msg_log_err,log_fname); + exit(EBADF); + } + } + + if (gz_log) + { + /* open compressed file */ +#ifdef USE_BZIP + if (gz_log==COMP_BZIP) + zlog_fp = BZ2_bzopen(log_fname,"rb"); + else +#endif + zlog_fp = gzopen(log_fname, "rb"); + if (zlog_fp==Z_NULL) + { + /* Error: Can't open log file ... */ + fprintf(stderr, "%s %s (%d)\n",msg_log_err,log_fname,ENOENT); + exit(ENOENT); + } + } + else + { + /* open regular file */ + log_fp = fopen(log_fname,"r"); + if (log_fp==NULL) + { + /* Error: Can't open log file ... */ + fprintf(stderr, "%s %s\n",msg_log_err,log_fname); + exit(1); + } + } + } + + /* Using logfile ... */ + if (verbose>1) + { + printf("%s %s (",msg_log_use,log_fname?log_fname:"STDIN"); + if (gz_log==COMP_GZIP) printf("gzip-"); +#ifdef USE_BZIP + if (gz_log==COMP_BZIP) printf("bzip-"); +#endif + switch (log_type) + { + /* display log file type hint */ + case LOG_CLF: printf("clf)\n"); break; + case LOG_FTP: printf("ftp)\n"); break; + case LOG_SQUID: printf("squid)\n"); break; + case LOG_W3C: printf("w3c)\n"); break; + } + } + + /* switch directories if needed */ + if (out_dir) + { + if (chdir(out_dir) != 0) + { + /* Error: Can't change directory to ... */ + fprintf(stderr, "%s %s\n",msg_dir_err,out_dir); + exit(1); + } + } + +#ifdef USE_DNS + if (strstr(argv[0],"webazolver")!=0) + { + if (!dns_children) dns_children=5; /* default dns children if needed */ + if (!dns_cache) + { + /* No cache file specified, aborting... */ + fprintf(stderr,"%s\n",msg_dns_nocf); /* Must have a cache file */ + exit(1); + } + } + + if (dns_cache && dns_children) /* run-time resolution */ + { + if (dns_children > MAXCHILD) dns_children=MAXCHILD; + /* DNS Lookup (#children): */ + if (verbose>1) printf("%s (%d): ",msg_dns_rslv,dns_children); + fflush(stdout); + (gz_log)?dns_resolver(zlog_fp):dns_resolver(log_fp); +#ifdef USE_BZIP + (gz_log==COMP_BZIP)?bz2_rewind(&zlog_fp, log_fname, "rb"): +#endif + (gz_log==COMP_GZIP)?gzrewind(zlog_fp): + (log_fname)?rewind(log_fp):exit(0); + } + + if (strstr(argv[0],"webazolver")!=0) exit(0); /* webazolver exits here */ + + if (dns_cache) + { + if (!open_cache()) { dns_cache=NULL; dns_db=NULL; } + else + { + /* Using DNS cache file <filaneme> */ + if (verbose>1) printf("%s %s\n",msg_dns_usec,dns_cache); + } + } + + /* Open GeoDB? */ + if (geodb) + { + geo_db=geodb_open(geodb_fname); + if (geo_db==NULL) + { + if (verbose) printf("%s: %s\n",msg_geo_open, + (geodb_fname)?geodb_fname:msg_geo_dflt); + if (verbose) printf("GeoDB %s\n",msg_geo_nolu); + geodb=0; + } + else if (verbose>1) printf("%s %s\n", + msg_geo_use,geodb_ver(geo_db,buffer)); +#ifdef USE_GEOIP + if (geoip) geoip=0; /* Disable GeoIP if using GeoDB */ +#endif + } +#endif /* USE_DNS */ + +#ifdef USE_GEOIP + /* open GeoIP database */ + if (geoip) + { + if (geoip_db!=NULL) + geo_fp=GeoIP_open(geoip_db, GEOIP_MEMORY_CACHE); + else + geo_fp=GeoIP_new(GEOIP_MEMORY_CACHE); + + /* Did we open one? */ + if (geo_fp==NULL) + { + /* couldn't open.. warn user */ + if (verbose) printf("GeoIP %s\n",msg_geo_nolu); + geoip=0; + } + else if (verbose>1) printf("%s %s (%s)\n",msg_geo_use, + GeoIPDBDescription[(int)geo_fp->databaseType], + (geoip_db==NULL)?msg_geo_dflt:geo_fp->file_path); + } +#endif /* USE_GEOIP */ + + /* Creating output in ... */ + if (verbose>1) + printf("%s %s\n",msg_dir_use,out_dir?out_dir:msg_cur_dir); + + /* prep hostname */ + if (!hname) + { + if (uname(&system_info)) hname="localhost"; + else hname=system_info.nodename; + } + + /* Hostname for reports is ... */ + if (strlen(hname)) if (verbose>1) printf("%s '%s'\n",msg_hostname,hname); + + /* get past history */ + if (ignore_hist) { if (verbose>1) printf("%s\n",msg_ign_hist); } + else get_history(); + + if (incremental) /* incremental processing? */ + { + if ((i=restore_state())) /* restore internal data structs */ + { + /* Error: Unable to restore run data (error num) */ + /* if (verbose) fprintf(stderr,"%s (%d)\n",msg_bad_data,i); */ + fprintf(stderr,"%s (%d)\n",msg_bad_data,i); + exit(1); + } + } + + /* Allocate memory for our TOP countries array */ + if (ntop_ctrys != 0) + { if ( (top_ctrys=calloc(ntop_ctrys,sizeof(CLISTPTR))) == NULL) + /* Can't get memory, Top Countries disabled! */ + {if (verbose) fprintf(stderr,"%s\n",msg_nomem_tc); ntop_ctrys=0;}} + + /* get processing start time */ + start_time = time(NULL); + + /*********************************************/ + /* MAIN PROCESS LOOP - read through log file */ + /*********************************************/ + + while ( (gz_log)?(our_gzgets(zlog_fp,buffer,BUFSIZE) != Z_NULL): + (fgets(buffer,BUFSIZE,log_fname?log_fp:stdin) != NULL)) + { + total_rec++; + if (strlen(buffer) == (BUFSIZE-1)) + { + if (verbose) + { + fprintf(stderr,"%s",msg_big_rec); + if (debug_mode) fprintf(stderr,":\n%s",buffer); + else fprintf(stderr,"\n"); + } + + total_bad++; /* bump bad record counter */ + + /* get the rest of the record */ + while ( (gz_log)?(our_gzgets(zlog_fp,buffer,BUFSIZE)!=Z_NULL): + (fgets(buffer,BUFSIZE,log_fname?log_fp:stdin)!=NULL)) + { + if (strlen(buffer) < BUFSIZE-1) + { + if (debug_mode && verbose) fprintf(stderr,"%s\n",buffer); + break; + } + if (debug_mode && verbose) fprintf(stderr,"%s",buffer); + } + continue; /* go get next record if any */ + } + + /* got a record... */ + strcpy(tmp_buf, buffer); /* save buffer in case of error */ + if (parse_record(buffer)) /* parse the record */ + { + /*********************************************/ + /* PASSED MINIMAL CHECKS, DO A LITTLE MORE */ + /*********************************************/ + + /* convert month name to lowercase */ + for (i=4;i<7;i++) + log_rec.datetime[i]=tolower(log_rec.datetime[i]); + + /* lowercase sitename/IPv6 addresses */ + cp1=log_rec.hostname; + while (*cp1++!='\0') *cp1=tolower(*cp1); + + /* get year/month/day/hour/min/sec values */ + for (i=0;i<12;i++) + { + if (strncmp(log_month[i],&log_rec.datetime[4],3)==0) + { rec_month = i+1; break; } + } + + rec_year=atoi(&log_rec.datetime[8]); /* get year number (int) */ + rec_day =atoi(&log_rec.datetime[1]); /* get day number */ + rec_hour=atoi(&log_rec.datetime[13]); /* get hour number */ + rec_min =atoi(&log_rec.datetime[16]); /* get minute number */ + rec_sec =atoi(&log_rec.datetime[19]); /* get second number */ + + /* Kludge for Netscape server time (0-24?) error */ + if (rec_hour>23) rec_hour=0; + + /* minimal sanity check on date */ + if ((i>=12)||(rec_min>59)||(rec_sec>60)||(rec_year<1990)) + { + total_bad++; /* if a bad date, bump counter */ + if (verbose) + { + fprintf(stderr,"%s: %s [%llu]", + msg_bad_date,log_rec.datetime,total_rec); + if (debug_mode) fprintf(stderr,":\n%s\n",tmp_buf); + else fprintf(stderr,"\n"); + } + continue; /* and ignore this record */ + } + + /*********************************************/ + /* GOOD RECORD, CHECK INCREMENTAL/TIMESTAMPS */ + /*********************************************/ + + /* Flag as a good one */ + good_rec = 1; + + /* get current records timestamp (seconds since epoch) */ + req_tstamp=cur_tstamp; + rec_tstamp=((jdate(rec_day,rec_month,rec_year)-epoch)*86400)+ + (rec_hour*3600)+(rec_min*60)+rec_sec; + + /* Do we need to check for duplicate records? (incremental mode) */ + if (check_dup) + { + /* check if less than/equal to last record processed */ + if ( rec_tstamp <= cur_tstamp ) + { + /* if it is, assume we have already processed and ignore it */ + total_ignore++; + continue; + } + else + { + /* if it isn't.. disable any more checks this run */ + check_dup=0; + /* now check if it's a new month */ + if ( (cur_month != rec_month) || (cur_year != rec_year) ) + { + clear_month(); + cur_sec = rec_sec; /* set current counters */ + cur_min = rec_min; + cur_hour = rec_hour; + cur_day = rec_day; + cur_month = rec_month; + cur_year = rec_year; + cur_tstamp= rec_tstamp; + f_day=l_day=rec_day; /* reset first and last day */ + } + } + } + + /* check for out of sequence records */ + if (rec_tstamp/3600 < cur_tstamp/3600) + { + if (!fold_seq_err && ((rec_tstamp+SLOP_VAL)/3600<cur_tstamp/3600) ) + { total_ignore++; continue; } + else + { + rec_sec = cur_sec; /* if folding sequence */ + rec_min = cur_min; /* errors, just make it */ + rec_hour = cur_hour; /* look like the last */ + rec_day = cur_day; /* good records timestamp */ + rec_month = cur_month; + rec_year = cur_year; + rec_tstamp= cur_tstamp; + } + } + cur_tstamp=rec_tstamp; /* update current timestamp */ + + /*********************************************/ + /* DO SOME PRE-PROCESS FORMATTING */ + /*********************************************/ + + /* un-escape URL */ + unescape(log_rec.url); + + /* fix URL field */ + cp1 = cp2 = log_rec.url; + /* handle null '-' case here... */ + if (*++cp1 == '-') strcpy(log_rec.url,"/INVALID-URL"); + else + { + /* strip actual URL out of request */ + while ( (*cp1 != ' ') && (*cp1 != '\0') ) cp1++; + if (*cp1 != '\0') + { + /* scan to begin of actual URL field */ + while ((*cp1 == ' ') && (*cp1 != '\0')) cp1++; + /* remove duplicate / if needed */ + while (( *cp1=='/') && (*(cp1+1)=='/')) cp1++; + while (( *cp1!='\0')&&(*cp1!='"')) *cp2++=*cp1++; + *cp2='\0'; + } + } + + /* strip query portion of cgi scripts */ + cp1 = log_rec.url; + while (*cp1 != '\0') + if (!isurlchar(*cp1, stripcgi)) { *cp1 = '\0'; break; } + else cp1++; + if (log_rec.url[0]=='\0') + { log_rec.url[0]='/'; log_rec.url[1]='\0'; } + + /* Normalize URL */ + if (log_type==LOG_CLF && log_rec.resp_code!=RC_NOTFOUND && normalize) + { + if ( ((cp2=strstr(log_rec.url,"://"))!=NULL)&&(cp2<log_rec.url+6) ) + { + cp1=cp2+3; + /* see if a '/' is present after it */ + if ( (cp2=strchr(cp1,(int)'/'))==NULL) cp1--; + else cp1=cp2; + /* Ok, now shift url string */ + cp2=log_rec.url; while (*cp1!='\0') *cp2++=*cp1++; *cp2='\0'; + } + /* extra sanity checks on URL string */ + while ((cp2=strstr(log_rec.url,"/./"))) + { cp1=cp2+2; while (*cp1!='\0') *cp2++=*cp1++; *cp2='\0'; } + if (log_rec.url[0]!='/') + { + if ( log_rec.resp_code==RC_OK || + log_rec.resp_code==RC_PARTIALCONTENT || + log_rec.resp_code==RC_NOMOD) + { + if (debug_mode) + fprintf(stderr,"Converted URL '%s' to '/'\n",log_rec.url); + log_rec.url[0]='/'; + log_rec.url[1]='\0'; + } + else + { + if (debug_mode) + fprintf(stderr,"Invalid URL: '%s'\n",log_rec.url); + strcpy(log_rec.url,"/INVALID-URL"); + } + } + while ( log_rec.url[ (i=strlen(log_rec.url)-1) ] == '?' ) + log_rec.url[i]='\0'; /* drop trailing ?s if any */ + } + else + { + /* check for service (ie: http://) and lowercase if found */ + if (((cp2=strstr(log_rec.url,"://"))!= NULL)&&(cp2<log_rec.url+6)) + { + cp1=log_rec.url; + while (cp1!=cp2) + { + if ( (*cp1>='A') && (*cp1<='Z')) *cp1 += 'a'-'A'; + cp1++; + } + } + } + + /* strip off index.html (or any aliases) */ + lptr=index_alias; + while (lptr!=NULL) + { + if ((cp1=strstr(log_rec.url,lptr->string))!=NULL) + { + if (*(cp1-1)=='/') + { + if ( !stripcgi && (cp2=strchr(cp1,'?'))!=NULL ) + { while(*cp2) *cp1++=*cp2++; *cp1='\0'; } + else *cp1='\0'; + break; + } + } + lptr=lptr->next; + } + + /* unescape referrer */ + unescape(log_rec.refer); + + /* fix referrer field */ + cp1 = log_rec.refer; + cp3 = cp2 = cp1++; + if ( (*cp2 != '\0') && (*cp2 == '"') ) + { + while ( *cp1 != '\0' ) + { + cp3=cp2; + if (((unsigned char)*cp1<32&&(unsigned char)*cp1>0) || + *cp1==127 || (unsigned char)*cp1=='<') *cp1=0; + else *cp2++=*cp1++; + } + *cp3 = '\0'; + } + + /* get query portion of cgi referrals */ + cp1 = log_rec.refer; + if (*cp1 != '\0') + { + while (*cp1 != '\0') + { + if (!isurlchar(*cp1, 1)) + { + /* Save query portion in log.rec.srchstr */ + strncpy(log_rec.srchstr,(char *)cp1,MAXSRCH); + *cp1++='\0'; + break; + } + else cp1++; + } + /* handle null referrer */ + if (log_rec.refer[0]=='\0') + { log_rec.refer[0]='-'; log_rec.refer[1]='\0'; } + } + + /* if HTTP request, lowercase http://sitename/ portion */ + cp1 = log_rec.refer; + if ( (*cp1=='h') || (*cp1=='H')) + { + while ( (*cp1!='/') && (*cp1!='\0')) + { + if ( (*cp1>='A') && (*cp1<='Z')) *cp1 += 'a'-'A'; + cp1++; + } + /* now do hostname */ + if ( (*cp1=='/') && ( *(cp1+1)=='/')) {cp1++; cp1++;} + while ( (*cp1!='/') && (*cp1!='\0')) + { + if ( (*cp1>='A') && (*cp1<='Z')) *cp1 += 'a'-'A'; + cp1++; + } + } + + /* Do we need to mangle? */ + if (mangle_agent) agent_mangle(log_rec.agent); + + /* if necessary, shrink referrer to fit storage */ + if (strlen(log_rec.refer)>=MAXREFH) + { + if (verbose) fprintf(stderr,"%s [%llu]\n", + msg_big_ref,total_rec); + log_rec.refer[MAXREFH-1]='\0'; + } + + /* if necessary, shrink URL to fit storage */ + if (strlen(log_rec.url)>=MAXURLH) + { + if (verbose) fprintf(stderr,"%s [%llu]\n", + msg_big_req,total_rec); + log_rec.url[MAXURLH-1]='\0'; + } + + /* fix user agent field */ + cp1 = log_rec.agent; + cp3 = cp2 = cp1++; + if ( (*cp2 != '\0') && ((*cp2 == '"')||(*cp2 == '(')) ) + { + while (*cp1 != '\0') { cp3 = cp2; *cp2++ = *cp1++; } + *cp3 = '\0'; + } + cp1 = log_rec.agent; /* CHANGE !!! */ + while (*cp1 != 0) /* get rid of more common _bad_ chars ;) */ + { + if ( ((unsigned char)*cp1 < 32) || + ((unsigned char)*cp1==127) || + (*cp1=='<') || (*cp1=='>') ) + { *cp1='\0'; break; } + else cp1++; + } + + /* fix username if needed */ + if (log_rec.ident[0]==0) + { log_rec.ident[0]='-'; log_rec.ident[1]='\0'; } + else + { + cp3=log_rec.ident; + while ((unsigned char)*cp3>=32 && *cp3!='"') cp3++; + *cp3='\0'; + } + /* unescape user name */ + unescape(log_rec.ident); + + /********************************************/ + /* PROCESS RECORD */ + /********************************************/ + + /* first time through? */ + if (cur_month == 0) + { + /* if yes, init our date vars */ + cur_month=rec_month; cur_year=rec_year; + cur_day=rec_day; cur_hour=rec_hour; + cur_min=rec_min; cur_sec=rec_sec; + f_day=rec_day; + } + + /* adjust last day processed if different */ + if (rec_day > l_day) l_day = rec_day; + + /* update min/sec stuff */ + if (cur_sec != rec_sec) cur_sec = rec_sec; + if (cur_min != rec_min) cur_min = rec_min; + + /* check for hour change */ + if (cur_hour != rec_hour) + { + /* if yes, init hourly stuff */ + if (ht_hit > mh_hit) mh_hit = ht_hit; + ht_hit = 0; + cur_hour = rec_hour; + } + + /* check for day change */ + if (cur_day != rec_day) + { + /* if yes, init daily stuff */ + tm_site[cur_day-1]=dt_site; dt_site=0; + tm_visit[cur_day-1]=tot_visit(sd_htab); + del_hlist(sd_htab); + cur_day = rec_day; + } + + /* check for month change */ + if ( (cur_month != rec_month) || (cur_year != rec_year) ) + { + /* if yes, do monthly stuff */ + t_visit=tot_visit(sm_htab); + month_update_exit(req_tstamp); /* process exit pages */ + update_history(); + write_month_html(); /* generate HTML for month */ + clear_month(); + cur_month = rec_month; /* update our flags */ + cur_year = rec_year; + f_day=l_day=rec_day; + } + + /* save hostname for later */ + strncpy(host_buf, log_rec.hostname, sizeof(log_rec.hostname)); + +#ifdef USE_DNS + /* Resolve IP address if needed */ + if (dns_db) + { + struct addrinfo hints, *ares; + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags = AI_NUMERICHOST; + if (0 == getaddrinfo(log_rec.hostname, "0", &hints, &ares)) + { + freeaddrinfo(ares); + resolve_dns(&log_rec); + } + } +#endif + /* lowercase hostname and validity check */ + cp1 = log_rec.hostname; i=0; + + if ( (!isalnum((unsigned char)*cp1)) && (*cp1!=':') ) + strncpy(log_rec.hostname, "Invalid", 8); + else + { + while (*cp1 != '\0') /* loop through string */ + { + if ( (*cp1>='A') && (*cp1<='Z') ) + { *cp1++ += 'a'-'A'; continue; } + if ( *cp1=='.' ) i++; + if ( (isalnum((unsigned char)*cp1)) || + (*cp1=='.')||(*cp1=='-') || + (*cp1==':')||((*cp1=='_')&&(i==0)) ) cp1++; + else + { + /* Invalid hostname found! */ + if (strcmp(log_rec.hostname, host_buf)) + strcpy(log_rec.hostname, host_buf); + else strncpy(log_rec.hostname,"Invalid",8); + break; + } + } + if (*cp1 == '\0') /* did we make it to the end? */ + { + if (!isalnum((unsigned char)*(cp1-1))) + strncpy(log_rec.hostname,"Invalid",8); + } + } + + /* Catch blank hostnames here */ + if (log_rec.hostname[0]=='\0') + strncpy(log_rec.hostname,"Unknown",8); + + /* Ignore/Include check */ + if ( (isinlist(include_sites,log_rec.hostname)==NULL) && + (isinlist(include_urls,log_rec.url)==NULL) && + (isinlist(include_refs,log_rec.refer)==NULL) && + (isinlist(include_agents,log_rec.agent)==NULL) && + (isinlist(include_users,log_rec.ident)==NULL) ) + { + if (isinlist(ignored_sites,log_rec.hostname)!=NULL) + { total_ignore++; continue; } + if (isinlist(ignored_urls,log_rec.url)!=NULL) + { total_ignore++; continue; } + if (isinlist(ignored_agents,log_rec.agent)!=NULL) + { total_ignore++; continue; } + if (isinlist(ignored_refs,log_rec.refer)!=NULL) + { total_ignore++; continue; } + if (isinlist(ignored_users,log_rec.ident)!=NULL) + { total_ignore++; continue; } + } + + /* Bump response code totals */ + switch (log_rec.resp_code) { + case RC_CONTINUE: i=IDX_CONTINUE; break; + case RC_SWITCHPROTO: i=IDX_SWITCHPROTO; break; + case RC_OK: i=IDX_OK; break; + case RC_CREATED: i=IDX_CREATED; break; + case RC_ACCEPTED: i=IDX_ACCEPTED; break; + case RC_NONAUTHINFO: i=IDX_NONAUTHINFO; break; + case RC_NOCONTENT: i=IDX_NOCONTENT; break; + case RC_RESETCONTENT: i=IDX_RESETCONTENT; break; + case RC_PARTIALCONTENT: i=IDX_PARTIALCONTENT; break; + case RC_MULTIPLECHOICES: i=IDX_MULTIPLECHOICES; break; + case RC_MOVEDPERM: i=IDX_MOVEDPERM; break; + case RC_MOVEDTEMP: i=IDX_MOVEDTEMP; break; + case RC_SEEOTHER: i=IDX_SEEOTHER; break; + case RC_NOMOD: i=IDX_NOMOD; break; + case RC_USEPROXY: i=IDX_USEPROXY; break; + case RC_MOVEDTEMPORARILY: i=IDX_MOVEDTEMPORARILY; break; + case RC_BAD: i=IDX_BAD; break; + case RC_UNAUTH: i=IDX_UNAUTH; break; + case RC_PAYMENTREQ: i=IDX_PAYMENTREQ; break; + case RC_FORBIDDEN: i=IDX_FORBIDDEN; break; + case RC_NOTFOUND: i=IDX_NOTFOUND; break; + case RC_METHODNOTALLOWED: i=IDX_METHODNOTALLOWED; break; + case RC_NOTACCEPTABLE: i=IDX_NOTACCEPTABLE; break; + case RC_PROXYAUTHREQ: i=IDX_PROXYAUTHREQ; break; + case RC_TIMEOUT: i=IDX_TIMEOUT; break; + case RC_CONFLICT: i=IDX_CONFLICT; break; + case RC_GONE: i=IDX_GONE; break; + case RC_LENGTHREQ: i=IDX_LENGTHREQ; break; + case RC_PREFAILED: i=IDX_PREFAILED; break; + case RC_REQENTTOOLARGE: i=IDX_REQENTTOOLARGE; break; + case RC_REQURITOOLARGE: i=IDX_REQURITOOLARGE; break; + case RC_UNSUPMEDIATYPE: i=IDX_UNSUPMEDIATYPE; break; + case RC_RNGNOTSATISFIABLE:i=IDX_RNGNOTSATISFIABLE;break; + case RC_EXPECTATIONFAILED:i=IDX_EXPECTATIONFAILED;break; + case RC_SERVERERR: i=IDX_SERVERERR; break; + case RC_NOTIMPLEMENTED: i=IDX_NOTIMPLEMENTED; break; + case RC_BADGATEWAY: i=IDX_BADGATEWAY; break; + case RC_UNAVAIL: i=IDX_UNAVAIL; break; + case RC_GATEWAYTIMEOUT: i=IDX_GATEWAYTIMEOUT; break; + case RC_BADHTTPVER: i=IDX_BADHTTPVER; break; + default: i=IDX_UNDEFINED; break; + } + response[i].count++; + + /* now save in the various hash tables... */ + if (log_rec.resp_code==RC_OK || log_rec.resp_code==RC_PARTIALCONTENT) + i=1; else i=0; + + /* URL/ident hash table (only if valid response code) */ + if ((log_rec.resp_code==RC_OK)||(log_rec.resp_code==RC_NOMOD)|| + (log_rec.resp_code==RC_PARTIALCONTENT)) + { + /* URL hash table */ + if (put_unode(log_rec.url,OBJ_REG,(u_int64_t)1, + log_rec.xfer_size,&t_url,(u_int64_t)0,(u_int64_t)0,um_htab)) + { + if (verbose) + /* Error adding URL node, skipping ... */ + fprintf(stderr,"%s %s\n", msg_nomem_u, log_rec.url); + } + + /* ident (username) hash table */ + if (put_inode(log_rec.ident,OBJ_REG, + 1,(u_int64_t)i,log_rec.xfer_size,&t_user, + 0,rec_tstamp,im_htab)) + { + if (verbose) + /* Error adding ident node, skipping .... */ + fprintf(stderr,"%s %s\n", msg_nomem_i, log_rec.ident); + } + } + + /* referrer hash table */ + if (ntop_refs) + { + if (log_rec.refer[0]!='\0') + if (put_rnode(log_rec.refer,OBJ_REG,(u_int64_t)1,&t_ref,rm_htab)) + { + if (verbose) + fprintf(stderr,"%s %s\n", msg_nomem_r, log_rec.refer); + } + } + + /* hostname (site) hash table - daily */ + if (put_hnode(log_rec.hostname,OBJ_REG, + 1,(u_int64_t)i,log_rec.xfer_size,&dt_site, + 0,rec_tstamp,"",sd_htab)) + { + if (verbose) + /* Error adding host node (daily), skipping .... */ + fprintf(stderr,"%s %s\n",msg_nomem_dh, log_rec.hostname); + } + + /* hostname (site) hash table - monthly */ + if (put_hnode(log_rec.hostname,OBJ_REG, + 1,(u_int64_t)i,log_rec.xfer_size,&t_site, + 0,rec_tstamp,"",sm_htab)) + { + if (verbose) + /* Error adding host node (monthly), skipping .... */ + fprintf(stderr,"%s %s\n", msg_nomem_mh, log_rec.hostname); + } + + /* user agent hash table */ + if (ntop_agents) + { + if (log_rec.agent[0]!='\0') + if (put_anode(log_rec.agent,OBJ_REG,(u_int64_t)1,&t_agent,am_htab)) + { + if (verbose) + fprintf(stderr,"%s %s\n", msg_nomem_a, log_rec.agent); + } + } + + /* bump monthly/daily/hourly totals */ + t_hit++; ht_hit++; /* daily/hourly hits */ + t_xfer += log_rec.xfer_size; /* total xfer size */ + tm_xfer[rec_day-1] += log_rec.xfer_size; /* daily xfer total */ + tm_hit[rec_day-1]++; /* daily hits total */ + th_xfer[rec_hour] += log_rec.xfer_size; /* hourly xfer total */ + th_hit[rec_hour]++; /* hourly hits total */ + + /* if RC_OK, increase file counters */ + if (log_rec.resp_code == RC_OK) + { + t_file++; + tm_file[rec_day-1]++; + th_file[rec_hour]++; + } + + /* Pages (pageview) calculation */ + if (ispage(log_rec.url)) + { + t_page++; + tm_page[rec_day-1]++; + th_page[rec_hour]++; + + /* do search string stuff if needed */ + if (ntop_search) srch_string(log_rec.srchstr); + } + + /*********************************************/ + /* RECORD PROCESSED - DO GROUPS HERE */ + /*********************************************/ + + /* URL Grouping */ + if ( (cp1=isinglist(group_urls,log_rec.url))!=NULL) + { + if (put_unode(cp1,OBJ_GRP,(u_int64_t)1,log_rec.xfer_size, + &ul_bogus,(u_int64_t)0,(u_int64_t)0,um_htab)) + { + if (verbose) + /* Error adding URL node, skipping ... */ + fprintf(stderr,"%s %s\n", msg_nomem_u, cp1); + } + } + + /* Site Grouping */ + if ( (cp1=isinglist(group_sites,log_rec.hostname))!=NULL) + { + if (put_hnode(cp1,OBJ_GRP,1, + (u_int64_t)(log_rec.resp_code==RC_OK)?1:0, + log_rec.xfer_size,&ul_bogus, + 0,rec_tstamp,"",sm_htab)) + { + if (verbose) + /* Error adding Site node, skipping ... */ + fprintf(stderr,"%s %s\n", msg_nomem_mh, cp1); + } + } + else + { + /* Domain Grouping */ + if (group_domains) + { + cp1 = get_domain(log_rec.hostname); + if (cp1 != NULL) + { + if (put_hnode(cp1,OBJ_GRP,1, + (u_int64_t)(log_rec.resp_code==RC_OK)?1:0, + log_rec.xfer_size,&ul_bogus, + 0,rec_tstamp,"",sm_htab)) + { + if (verbose) + /* Error adding Site node, skipping ... */ + fprintf(stderr,"%s %s\n", msg_nomem_mh, cp1); + } + } + } + } + + /* Referrer Grouping */ + if ( (cp1=isinglist(group_refs,log_rec.refer))!=NULL) + { + if (put_rnode(cp1,OBJ_GRP,(u_int64_t)1,&ul_bogus,rm_htab)) + { + if (verbose) + /* Error adding Referrer node, skipping ... */ + fprintf(stderr,"%s %s\n", msg_nomem_r, cp1); + } + } + + /* User Agent Grouping */ + if ( (cp1=isinglist(group_agents,log_rec.agent))!=NULL) + { + if (put_anode(cp1,OBJ_GRP,(u_int64_t)1,&ul_bogus,am_htab)) + { + if (verbose) + /* Error adding User Agent node, skipping ... */ + fprintf(stderr,"%s %s\n", msg_nomem_a, cp1); + } + } + + /* Ident (username) Grouping */ + if ( (cp1=isinglist(group_users,log_rec.ident))!=NULL) + { + if (put_inode(cp1,OBJ_GRP,1, + (u_int64_t)(log_rec.resp_code==RC_OK)?1:0, + log_rec.xfer_size,&ul_bogus, + 0,rec_tstamp,im_htab)) + { + if (verbose) + /* Error adding Username node, skipping ... */ + fprintf(stderr,"%s %s\n", msg_nomem_i, cp1); + } + } + } + + /*********************************************/ + /* BAD RECORD */ + /*********************************************/ + + else + { + /* If first record, check if stupid Netscape header stuff */ + if ( (total_rec==1) && (strncmp(buffer,"format=",7)==0) ) + { + /* Skipping Netscape header record */ + if (verbose>1) printf("%s\n",msg_ign_nscp); + /* count it as ignored... */ + total_ignore++; + } + else + { + /* Check if it's a W3C header or IIS Null-Character line */ + if ((buffer[0]=='\0') || (buffer[0]=='#')) + { + total_ignore++; + } + else + { + /* really bad record... */ + total_bad++; + if (verbose) + { + fprintf(stderr,"%s (%llu)",msg_bad_rec,total_rec); + if (debug_mode) fprintf(stderr,":\n%s\n",tmp_buf); + else fprintf(stderr,"\n"); + } + } + } + } + } + + /*********************************************/ + /* DONE READING LOG FILE - final processing */ + /*********************************************/ + + /* close log file if needed */ +#ifdef USE_BZIP + if (gz_log) (gz_log==COMP_BZIP)?BZ2_bzclose(zlog_fp):gzclose(zlog_fp); +#else + if (gz_log) gzclose(zlog_fp); +#endif + else if (log_fname) fclose(log_fp); + + if (good_rec) /* were any good records? */ + { + tm_site[cur_day-1]=dt_site; /* If yes, clean up a bit */ + tm_visit[cur_day-1]=tot_visit(sd_htab); + t_visit=tot_visit(sm_htab); + if (ht_hit > mh_hit) mh_hit = ht_hit; + + if (total_rec > (total_ignore+total_bad)) /* did we process any? */ + { + if (incremental) + { + if (save_state()) /* incremental stuff */ + { + /* Error: Unable to save current run data */ + if (verbose) fprintf(stderr,"%s\n",msg_data_err); + unlink(state_fname); + } + } + month_update_exit(rec_tstamp); /* calculate exit pages */ + update_history(); + write_month_html(); /* write monthly HTML file */ + put_history(); /* write history */ + } + if (hist[0].month!=0) write_main_index(); /* write main HTML file */ + + /* get processing end time */ + end_time = time(NULL); + + /* display end of processing statistics */ + if (time_me || (verbose>1)) + { + printf("%llu %s ",total_rec, msg_records); + if (total_ignore) + { + printf("(%llu %s",total_ignore,msg_ignored); + if (total_bad) printf(", %llu %s) ",total_bad,msg_bad); + else printf(") "); + } + else if (total_bad) printf("(%llu %s) ",total_bad,msg_bad); + + /* totoal processing time in seconds */ + temp_time = difftime(end_time, start_time); + if (temp_time==0) temp_time=1; + printf("%s %.0f %s", msg_in, temp_time, msg_seconds); + + /* calculate records per second */ + if (temp_time) + i=( (int)( (float)total_rec/temp_time ) ); + else i=0; + + if ( (i>0) && (i<=total_rec) ) printf(", %d/sec\n", i); + else printf("\n"); + } + +#ifdef USE_DNS + /* Close DNS cache file */ + if (dns_db) close_cache(); + /* Close GeoDB database */ + if (geo_db) geodb_close(geo_db); +#endif + +#ifdef USE_GEOIP + /* Close GeoIP database */ + if (geo_fp) GeoIP_delete(geo_fp); +#endif + + /* Whew, all done! Exit with completion status (0) */ + exit(0); + } + else + { + /* No valid records found... exit with error (1) */ + if (verbose) printf("%s\n",msg_no_vrec); + if (hist[0].month!=0) write_main_index(); /* write main HTML file */ + exit(1); + } +} + +/*********************************************/ +/* GET_CONFIG - get configuration file info */ +/*********************************************/ + +void get_config(char *fname) +{ + char *kwords[]= { "Undefined", /* 0 = undefined keyword 0 */ + "OutputDir", /* Output directory 1 */ + "LogFile", /* Log file to use for input 2 */ + "ReportTitle", /* Title for reports 3 */ + "HostName", /* Hostname to use 4 */ + "IgnoreHist", /* Ignore history file 5 */ + "Quiet", /* Run in quiet mode 6 */ + "TimeMe", /* Produce timing results 7 */ + "Debug", /* Produce debug information 8 */ + "HourlyGraph", /* Hourly stats graph 9 */ + "HourlyStats", /* Hourly stats table 10 */ + "TopSites", /* Top sites 11 */ + "TopURLs", /* Top URLs 12 */ + "TopReferrers", /* Top Referrers 13 */ + "TopAgents", /* Top User Agents 14 */ + "TopCountries", /* Top Countries 15 */ + "HideSite", /* Sites to hide 16 */ + "HideURL", /* URLs to hide 17 */ + "HideReferrer", /* Referrers to hide 18 */ + "HideAgent", /* User Agents to hide 19 */ + "IndexAlias", /* Aliases for index.html 20 */ + "HTMLHead", /* HTML Top1 code 21 */ + "HTMLPost", /* HTML Top2 code 22 */ + "HTMLTail", /* HTML Tail code 23 */ + "MangleAgents", /* Mangle User Agents 24 */ + "IgnoreSite", /* Sites to ignore 25 */ + "IgnoreURL", /* Url's to ignore 26 */ + "IgnoreReferrer", /* Referrers to ignore 27 */ + "IgnoreAgent", /* User Agents to ignore 28 */ + "ReallyQuiet", /* Dont display ANY messages 29 */ + "GMTTime", /* Local or UTC time? 30 */ + "GroupURL", /* Group URLs 31 */ + "GroupSite", /* Group Sites 32 */ + "GroupReferrer", /* Group Referrers 33 */ + "GroupAgent", /* Group Agents 34 */ + "GroupShading", /* Shade Grouped entries 35 */ + "GroupHighlight", /* BOLD Grouped entries 36 */ + "Incremental", /* Incremental runs 37 */ + "IncrementalName", /* Filename for state data 38 */ + "HistoryName", /* Filename for history data 39 */ + "HTMLExtension", /* HTML filename extension 40 */ + "HTMLPre", /* HTML code at beginning 41 */ + "HTMLBody", /* HTML body code 42 */ + "HTMLEnd", /* HTML code at end 43 */ + "UseHTTPS", /* Use https:// on URLs 44 */ + "IncludeSite", /* Sites to always include 45 */ + "IncludeURL", /* URLs to always include 46 */ + "IncludeReferrer", /* Referrers to include 47 */ + "IncludeAgent", /* User Agents to include 48 */ + "PageType", /* Page Type (pageview) 49 */ + "VisitTimeout", /* Visit timeout (seconds) 50 */ + "GraphLegend", /* Graph Legends (yes/no) 51 */ + "GraphLines", /* Graph Lines (0=none) 52 */ + "FoldSeqErr", /* Fold sequence errors 53 */ + "CountryGraph", /* Display ctry graph (0=no) 54 */ + "TopKSites", /* Top sites (by KBytes) 55 */ + "TopKURLs", /* Top URLs (by KBytes) 56 */ + "TopEntry", /* Top Entry Pages 57 */ + "TopExit", /* Top Exit Pages 58 */ + "TopSearch", /* Top Search Strings 59 */ + "LogType", /* Log Type (clf/ftp/squid) 60 */ + "SearchEngine", /* SearchEngine strings 61 */ + "GroupDomains", /* Group domains (n=level) 62 */ + "HideAllSites", /* Hide ind. sites (0=no) 63 */ + "AllSites", /* List all sites? 64 */ + "AllURLs", /* List all URLs? 65 */ + "AllReferrers", /* List all Referrers? 66 */ + "AllAgents", /* List all User Agents? 67 */ + "AllSearchStr", /* List all Search Strings? 68 */ + "AllUsers", /* List all Users? 69 */ + "TopUsers", /* Top Usernames to show 70 */ + "HideUser", /* Usernames to hide 71 */ + "IgnoreUser", /* Usernames to ignore 72 */ + "IncludeUser", /* Usernames to include 73 */ + "GroupUser", /* Usernames to group 74 */ + "DumpPath", /* Path for dump files 75 */ + "DumpExtension", /* Dump filename extension 76 */ + "DumpHeader", /* Dump header as first rec? 77 */ + "DumpSites", /* Dump sites tab file 78 */ + "DumpURLs", /* Dump urls tab file 79 */ + "DumpReferrers", /* Dump referrers tab file 80 */ + "DumpAgents", /* Dump user agents tab file 81 */ + "DumpUsers", /* Dump usernames tab file 82 */ + "DumpSearchStr", /* Dump search str tab file 83 */ + "DNSCache", /* DNS Cache file name 84 */ + "DNSChildren", /* DNS Children (0=no DNS) 85 */ + "DailyGraph", /* Daily Graph (0=no) 86 */ + "DailyStats", /* Daily Stats (0=no) 87 */ + "LinkReferrer", /* Link referrer (0=no) 88 */ + "PagePrefix", /* PagePrefix - treat as page 89 */ + "ColorHit", /* Hit Color (def=00805c) 90 */ + "ColorFile", /* File Color (def=0040ff) 91 */ + "ColorSite", /* Site Color (def=ff8000) 92 */ + "ColorKbyte", /* Kbyte Color (def=ff0000) 93 */ + "ColorPage", /* Page Color (def=00e0ff) 94 */ + "ColorVisit", /* Visit Color (def=ffff00) 95 */ + "ColorMisc", /* Misc Color (def=00e0ff) 96 */ + "PieColor1", /* Pie Color 1 (def=800080) 97 */ + "PieColor2", /* Pie Color 2 (def=80ffc0) 98 */ + "PieColor3", /* Pie Color 3 (def=ff00ff) 99 */ + "PieColor4", /* Pie Color 4 (def=ffc080) 100 */ + "CacheIPs", /* Cache IPs in DNS DB (0=no) 101 */ + "CacheTTL", /* DNS Cache entry TTL (days) 102 */ + "GeoDB", /* GeoDB lookups (0=no) 103 */ + "GeoDBDatabase", /* GeoDB database filename 104 */ + "StripCGI", /* Strip CGI in URLS (0=no) 105 */ + "TrimSquidURL", /* Trim squid URLs (0=none) 106 */ + "OmitPage", /* URLs not counted as pages 107 */ + "HTAccess", /* Write .httaccess files? 108 */ + "IgnoreState", /* Ignore state file (0=no) 109 */ + "DefaultIndex", /* Default index.* (1=yes) 110 */ + "GeoIP", /* Use GeoIP? (1=yes) 111 */ + "GeoIPDatabase", /* Database to use for GeoIP 112 */ + "NormalizeURL", /* Normalize CLF URLs (1=yes) 113 */ + "IndexMonths", /* # months for main page 114 */ + "GraphMonths", /* # months for yearly graph 115 */ + "YearHeaders", /* use year headers? (1=yes) 116 */ + "YearTotals", /* show year subtotals (0=no) 117 */ + "CountryFlags", /* show country flags? (0-no) 118 */ + "FlagDir", /* directory w/flag images 119 */ + "SearchCaseI" /* srch str case insensitive 120 */ + }; + + FILE *fp; + + char buffer[BUFSIZE]; + char keyword[MAXKWORD]; + char value[MAXKVAL]; + char *cp1, *cp2; + int i,key,count; + int num_kwords=sizeof(kwords)/sizeof(char *); + + if ( (fp=fopen(fname,"r")) == NULL) + { + if (verbose) + fprintf(stderr,"%s %s\n",msg_bad_conf,fname); + return; + } + + while ( (fgets(buffer,BUFSIZE,fp)) != NULL) + { + /* skip comments and blank lines */ + if ( (buffer[0]=='#') || isspace((unsigned char)buffer[0]) ) continue; + + /* Get keyword */ + cp1=buffer;cp2=keyword;count=MAXKWORD-1; + while ( (isalnum((unsigned char)*cp1)) && count ) + { *cp2++ = *cp1++; count--; } + *cp2='\0'; + + /* Get value */ + cp2=value; count=MAXKVAL-1; + while ((*cp1!='\n')&&(*cp1!='\0')&&(isspace((unsigned char)*cp1))) cp1++; + while ((*cp1!='\n')&&(*cp1!='\0')&&count ) { *cp2++ = *cp1++; count--; } + *cp2--='\0'; + while ((isspace((unsigned char)*cp2)) && (cp2 != value) ) *cp2--='\0'; + + /* check if blank keyword/value */ + if ( (keyword[0]=='\0') || (value[0]=='\0') ) continue; + + key=0; + for (i=0;i<num_kwords;i++) + if (!ouricmp(keyword,kwords[i])) { key=i; break; } + + if (key==0) { printf("%s '%s' (%s)\n", /* Invalid keyword */ + msg_bad_key,keyword,fname); + continue; + } + + switch (key) + { + case 1: out_dir=save_opt(value); break; /* OutputDir */ + case 2: log_fname=save_opt(value); break; /* LogFile */ + case 3: msg_title=save_opt(value); break; /* ReportTitle */ + case 4: hname=save_opt(value); break; /* HostName */ + case 5: ignore_hist= + (tolower(value[0])=='y')?1:0; break; /* IgnoreHist */ + case 6: verbose= + (tolower(value[0])=='y')?1:2; break; /* Quiet */ + case 7: time_me= + (tolower(value[0])=='n')?0:1; break; /* TimeMe */ + case 8: debug_mode= + (tolower(value[0])=='y')?1:0; break; /* Debug */ + case 9: hourly_graph= + (tolower(value[0])=='n')?0:1; break; /* HourlyGraph */ + case 10: hourly_stats= + (tolower(value[0])=='n')?0:1; break; /* HourlyStats */ + case 11: ntop_sites = atoi(value); break; /* TopSites */ + case 12: ntop_urls = atoi(value); break; /* TopURLs */ + case 13: ntop_refs = atoi(value); break; /* TopRefs */ + case 14: ntop_agents = atoi(value); break; /* TopAgents */ + case 15: ntop_ctrys = atoi(value); break; /* TopCountries */ + case 16: add_nlist(value,&hidden_sites); break; /* HideSite */ + case 17: add_nlist(value,&hidden_urls); break; /* HideURL */ + case 18: add_nlist(value,&hidden_refs); break; /* HideReferrer */ + case 19: add_nlist(value,&hidden_agents); break; /* HideAgent */ + case 20: add_nlist(value,&index_alias); break; /* IndexAlias */ + case 21: add_nlist(value,&html_head); break; /* HTMLHead */ + case 22: add_nlist(value,&html_post); break; /* HTMLPost */ + case 23: add_nlist(value,&html_tail); break; /* HTMLTail */ + case 24: mangle_agent=atoi(value); break; /* MangleAgents */ + case 25: add_nlist(value,&ignored_sites); break; /* IgnoreSite */ + case 26: add_nlist(value,&ignored_urls); break; /* IgnoreURL */ + case 27: add_nlist(value,&ignored_refs); break; /* IgnoreReferrer */ + case 28: add_nlist(value,&ignored_agents); break; /* IgnoreAgent */ + case 29: if (tolower(value[0])=='y') + verbose=0; break; /* ReallyQuiet */ + case 30: local_time= + (tolower(value[0])=='y')?0:1; break; /* GMTTime */ + case 31: add_glist(value,&group_urls); break; /* GroupURL */ + case 32: add_glist(value,&group_sites); break; /* GroupSite */ + case 33: add_glist(value,&group_refs); break; /* GroupReferrer */ + case 34: add_glist(value,&group_agents); break; /* GroupAgent */ + case 35: shade_groups= + (tolower(value[0])=='n')?0:1; break; /* GroupShading */ + case 36: hlite_groups= + (tolower(value[0])=='n')?0:1; break; /* GroupHighlight */ + case 37: incremental= + (tolower(value[0])=='y')?1:0; break; /* Incremental */ + case 38: state_fname=save_opt(value); break; /* State FName */ + case 39: hist_fname=save_opt(value); break; /* History FName */ + case 40: html_ext=save_opt(value); break; /* HTML extension */ + case 41: add_nlist(value,&html_pre); break; /* HTML Pre code */ + case 42: add_nlist(value,&html_body); break; /* HTML Body code */ + case 43: add_nlist(value,&html_end); break; /* HTML End code */ + case 44: use_https= + (tolower(value[0])=='y')?1:0; break; /* Use https:// */ + case 45: add_nlist(value,&include_sites); break; /* IncludeSite */ + case 46: add_nlist(value,&include_urls); break; /* IncludeURL */ + case 47: add_nlist(value,&include_refs); break; /* IncludeReferrer*/ + case 48: add_nlist(value,&include_agents); break; /* IncludeAgent */ + case 49: add_nlist(value,&page_type); break; /* PageType */ + case 50: visit_timeout=atoi(value); break; /* VisitTimeout */ + case 51: graph_legend= + (tolower(value[0])=='n')?0:1; break; /* GraphLegend */ + case 52: graph_lines = atoi(value); break; /* GraphLines */ + case 53: fold_seq_err= + (tolower(value[0])=='y')?1:0; break; /* FoldSeqErr */ + case 54: ctry_graph= + (tolower(value[0])=='n')?0:1; break; /* CountryGraph */ + case 55: ntop_sitesK = atoi(value); break; /* TopKSites (KB) */ + case 56: ntop_urlsK = atoi(value); break; /* TopKUrls (KB) */ + case 57: ntop_entry = atoi(value); break; /* Top Entry pgs */ + case 58: ntop_exit = atoi(value); break; /* Top Exit pages */ + case 59: ntop_search = atoi(value); break; /* Top Search pgs */ + case 60: log_type=(tolower(value[0])=='f')? + LOG_FTP:((tolower(value[0])=='s')? + LOG_SQUID:((tolower(value[0])=='w')? + LOG_W3C:LOG_CLF)); break; /* LogType */ + case 61: add_glist(value,&search_list); break; /* SearchEngine */ + case 62: group_domains=atoi(value); break; /* GroupDomains */ + case 63: hide_sites= + (tolower(value[0])=='y')?1:0; break; /* HideAllSites */ + case 64: all_sites= + (tolower(value[0])=='y')?1:0; break; /* All Sites? */ + case 65: all_urls= + (tolower(value[0])=='y')?1:0; break; /* All URLs? */ + case 66: all_refs= + (tolower(value[0])=='y')?1:0; break; /* All Refs */ + case 67: all_agents= + (tolower(value[0])=='y')?1:0; break; /* All Agents? */ + case 68: all_search= + (tolower(value[0])=='y')?1:0; break; /* All Srch str */ + case 69: all_users= + (tolower(value[0])=='y')?1:0; break; /* All Users? */ + case 70: ntop_users=atoi(value); break; /* TopUsers */ + case 71: add_nlist(value,&hidden_users); break; /* HideUser */ + case 72: add_nlist(value,&ignored_users); break; /* IgnoreUser */ + case 73: add_nlist(value,&include_users); break; /* IncludeUser */ + case 74: add_glist(value,&group_users); break; /* GroupUser */ + case 75: dump_path=save_opt(value); break; /* DumpPath */ + case 76: dump_ext=save_opt(value); break; /* Dumpfile ext */ + case 77: dump_header= + (tolower(value[0])=='y')?1:0; break; /* DumpHeader? */ + case 78: dump_sites= + (tolower(value[0])=='y')?1:0; break; /* DumpSites? */ + case 79: dump_urls= + (tolower(value[0])=='y')?1:0; break; /* DumpURLs? */ + case 80: dump_refs= + (tolower(value[0])=='y')?1:0; break; /* DumpReferrers? */ + case 81: dump_agents= + (tolower(value[0])=='y')?1:0; break; /* DumpAgents? */ + case 82: dump_users= + (tolower(value[0])=='y')?1:0; break; /* DumpUsers? */ + case 83: dump_search= + (tolower(value[0])=='y')?1:0; break; /* DumpSrchStrs? */ +#ifdef USE_DNS + case 84: dns_cache=save_opt(value); break; /* DNSCache fname */ + case 85: dns_children=atoi(value); break; /* DNSChildren */ +#else + case 84: /* Disable DNSCache and DNSChildren if DNS is not enabled */ + case 85: printf("%s '%s' (%s)\n",msg_bad_key,keyword,fname); break; +#endif /* USE_DNS */ + case 86: daily_graph= + (tolower(value[0])=='n')?0:1; break; /* HourlyGraph */ + case 87: daily_stats= + (tolower(value[0])=='n')?0:1; break; /* HourlyStats */ + case 88: link_referrer= + (tolower(value[0])=='y')?1:0; break; /* LinkReferrer */ + case 89: add_nlist(value,&page_prefix); break; /* PagePrefix */ + case 90: strncpy(hit_color+1, value, 6); break; /* ColorHit */ + case 91: strncpy(file_color+1, value, 6); break; /* ColorFile */ + case 92: strncpy(site_color+1, value, 6); break; /* ColorSite */ + case 93: strncpy(kbyte_color+1,value, 6); break; /* ColorKbyte */ + case 94: strncpy(page_color+1, value, 6); break; /* ColorPage */ + case 95: strncpy(visit_color+1,value, 6); break; /* ColorVisit */ + case 96: strncpy(misc_color+1, value, 6); break; /* ColorMisc */ + case 97: strncpy(pie_color1+1, value, 6); break; /* PieColor1 */ + case 98: strncpy(pie_color2+1, value, 6); break; /* PieColor2 */ + case 99: strncpy(pie_color3+1, value, 6); break; /* PieColor3 */ + case 100:strncpy(pie_color4+1, value, 6); break; /* PieColor4 */ +#ifdef USE_DNS + case 101: cache_ips= + (tolower(value[0])=='y')?1:0; break; /* CacheIPs */ + case 102: cache_ttl=atoi(value); break; /* CacheTTL days */ + case 103: geodb= + (tolower(value[0])=='y')?1:0; break; /* GeoDB */ + case 104: geodb_fname=save_opt(value); break; /* GeoDBDatabase */ +#else + case 101: /* Disable CacheIPs/CacheTTL/GeoDB/GeoDBDatabase if none */ + case 102: + case 103: + case 104: printf("%s '%s' (%s)\n",msg_bad_key,keyword,fname); break; +#endif /* USE_DNS */ + case 105: stripcgi= + (tolower(value[0])=='n')?0:1; break; /* StripCGI */ + case 106: trimsquid=atoi(value); break; /* TrimSquidURL */ + case 107: add_nlist(value,&omit_page); break; /* OmitPage */ + case 108: htaccess= + (tolower(value[0])=='y')?1:0; break; /* HTAccess */ + case 109: ignore_state= + (tolower(value[0])=='y')?1:0; break; /* IgnoreState */ + case 110: default_index= + (tolower(value[0])=='n')?0:1; break; /* DefaultIndex */ +#ifdef USE_GEOIP + case 111: geoip= + (tolower(value[0])=='y')?1:0; break; /* GeoIP */ + case 112: geoip_db=save_opt(value); break; /* GeoIPDatabase */ +#else + case 111: /* Disable GeoIP and GeoIPDatabase if not enabled */ + case 112: printf("%s '%s' (%s)\n",msg_bad_key,keyword,fname); break; +#endif + case 113: normalize= + (tolower(value[0])=='n')?0:1; break; /* NormalizeURL */ + case 114: index_mths=atoi(value); break; /* IndexMonths */ + case 115: graph_mths=atoi(value); break; /* GraphMonths */ + case 116: year_hdrs= + (tolower(value[0])=='n')?0:1; break; /* YearHeaders */ + case 117: year_totals= + (tolower(value[0])=='n')?0:1; break; /* YearTotals */ + case 118: use_flags= + (tolower(value[0])=='y')?1:0; break; /* CountryFlags */ + case 119: use_flags=1; flag_dir=save_opt(value); break; /* FlagDir */ + case 120: searchcasei= + (tolower(value[0])=='n')?0:1; break; /* SearchCaseI */ + } + } + fclose(fp); +} + +/*********************************************/ +/* SAVE_OPT - save option from config file */ +/*********************************************/ + +static char *save_opt(char *str) +{ + char *cp1; + + if ( (cp1=malloc(strlen(str)+1))==NULL) return NULL; + + strcpy(cp1,str); + return cp1; +} + +/*********************************************/ +/* CLEAR_MONTH - initalize monthly stuff */ +/*********************************************/ + +void clear_month() +{ + int i; + + init_counters(); /* reset monthly counters */ + del_htabs(); /* clear hash tables */ + if (ntop_ctrys!=0 ) for (i=0;i<ntop_ctrys;i++) top_ctrys[i]=NULL; +} + +/*********************************************/ +/* INIT_COUNTERS - prep counters for use */ +/*********************************************/ + +void init_counters() +{ + int i; + for (i=0;i<TOTAL_RC;i++) response[i].count = 0; + for (i=0;i<31;i++) /* monthly totals */ + { + tm_xfer[i]=0.0; + tm_hit[i]=tm_file[i]=tm_site[i]=tm_page[i]=tm_visit[i]=0; + } + for (i=0;i<24;i++) /* hourly totals */ + { + th_hit[i]=th_file[i]=th_page[i]=0; + th_xfer[i]=0.0; + } + for (i=0;ctry[i].desc;i++) /* country totals */ + { + ctry[i].count=0; + ctry[i].files=0; + ctry[i].xfer=0; + } + t_hit=t_file=t_site=t_url=t_ref=t_agent=t_page=t_visit=t_user=0; + t_xfer=0.0; + mh_hit = dt_site = 0; + f_day=l_day=1; +} + +/*********************************************/ +/* PRINT_OPTS - print command line options */ +/*********************************************/ + +void print_opts(char *pname) +{ + int i; + + printf("%s: %s %s\n",h_usage1,pname,h_usage2); + for (i=0;h_msg[i];i++) printf("%s\n",h_msg[i]); + exit(1); +} + +/*********************************************/ +/* PRINT_VERSION */ +/*********************************************/ + +void print_version() +{ + char buf[128]=""; + uname(&system_info); + + printf("Webalizer V%s-%s (%s %s %s) %s\n%s\n", + version,editlvl, + system_info.sysname,system_info.release,system_info.machine, + language,copyright); + +#ifdef USE_DNS + strncpy(&buf[strlen(buf)],"DNS/GeoDB ",11); +#endif +#ifdef USE_BZIP + strncpy(&buf[strlen(buf)],"BZip2 ",7); +#endif +#ifdef USE_GEOIP + strncpy(&buf[strlen(buf)],"GeoIP ",7); +#endif + + if (debug_mode) + { + printf("Mod date: %s Options: ",moddate); + if (buf[0]!=0) printf("%s",buf); + else printf("none"); + printf("\n"); +#if USE_DNS + printf("Default GeoDB dir : %s\n",GEODB_LOC); +#endif + printf("Default config dir: %s\n",ETCDIR); + printf("\n"); + } + else printf("\n"); + exit(1); +} + +/*********************************************/ +/* CUR_TIME - return date/time as a string */ +/*********************************************/ + +char *cur_time() +{ + time_t now; + static char timestamp[48]; + + /* get system time */ + now = time(NULL); + /* convert to timestamp string */ + if (local_time) + strftime(timestamp,sizeof(timestamp),"%d-%b-%Y %H:%M %Z", + localtime(&now)); + else + strftime(timestamp,sizeof(timestamp),"%d-%b-%Y %H:%M GMT", + gmtime(&now)); + + return timestamp; +} + +/*********************************************/ +/* ISPAGE - determine if an HTML page or not */ +/*********************************************/ + +int ispage(char *str) +{ + NLISTPTR t; + char *cp1, *cp2; + + if (isinlist(omit_page,str)!=NULL) return 0; + + cp1=cp2=str; + while (*cp1!='\0') { if (*cp1=='.') cp2=cp1; cp1++; } + if ((cp2++==str)||(*(--cp1)=='/')) return 1; + t=page_prefix; + while(t!=NULL) + { + /* Check if a PagePrefix matches */ + if(strncmp(str,t->string,strlen(t->string))==0) return 1; + t=t->next; + } + return (isinlist(page_type,cp2)!=NULL); +} + +/*********************************************/ +/* ISURLCHAR - checks for valid URL chars */ +/*********************************************/ + +int isurlchar(unsigned char ch, int flag) +{ + if (isalnum(ch)) return 1; /* allow letters, numbers... */ + if (ch > 127) return 1; /* allow extended chars... */ + if (flag) /* and filter some others */ + return (strchr(":/\\.,' *!-+_@~()[]!",ch)!=NULL); /* strip cgi vars */ + else + return (strchr(":/\\.,' *!-+_@~()[]!;?&=",ch)!=NULL); /* keep cgi vars */ +} + +/*********************************************/ +/* CTRY_IDX - create unique # from TLD */ +/*********************************************/ + +u_int64_t ctry_idx(char *str) +{ + int i=strlen(str),j=0; + u_int64_t idx=0; + char *cp=str+i; + + for (;i>0;i--) { idx+=((*--cp-'a'+1)<<j); j+=(j==0)?7:5; } + return idx; +} + +/*********************************************/ +/* UN_IDX - get TLD from index # */ +/*********************************************/ + +char *un_idx(u_int64_t idx) +{ + int i,j; + char *cp; + static char buf[8]; + + memset(buf, 0, sizeof(buf)); + if (idx<=0) return buf; + if ((j=(idx&0x7f))>32) /* only for a1, a2 and o1 */ + { buf[0]=(idx>>7)+'a'; buf[1]=j-32; return buf; } + + for (i=5;i>=0;i--) + buf[i]=(i==5)?(idx&0x7f)+'a'-1:(j=(idx>>(((5-i)*5)+2))&0x1f)?j+'a'-1:' '; + cp=buf; while (*cp==' ') { for (i=0;i<6;i++) buf[i]=buf[i+1]; } return buf; +} + +/*********************************************/ +/* FROM_HEX - convert hex char to decimal */ +/*********************************************/ + +char from_hex(char c) /* convert hex to dec */ +{ + c = (c>='0'&&c<='9')?c-'0': /* 0-9? */ + (c>='A'&&c<='F')?c-'A'+10: /* A-F? */ + c - 'a' + 10; /* lowercase... */ + return (c<0||c>15)?0:c; /* return 0 if bad... */ +} + +/*********************************************/ +/* UNESCAPE - convert escape seqs to chars */ +/*********************************************/ + +char *unescape(char *str) +{ + unsigned char *cp1=(unsigned char *)str; /* force unsigned so we */ + unsigned char *cp2=cp1; /* can do > 127 */ + + if (!str) return NULL; /* make sure strings valid */ + + while (*cp1) + { + if (*cp1=='%') /* Found an escape? */ + { + cp1++; + if (isxdigit(*cp1)) /* ensure a hex digit */ + { + if (*cp1) *cp2=from_hex(*cp1++)*16; /* convert hex to an ASCII */ + if (*cp1) *cp2+=from_hex(*cp1); /* (hopefully) character */ + if ((*cp2<32)||(*cp2==127)) *cp2='_'; /* make '_' if its bad */ + if (*cp1) { cp2++; cp1++; } + } + else *cp2++='%'; + } + else *cp2++ = *cp1++; /* if not, just continue */ + } + *cp2=*cp1; /* don't forget terminator */ + return str; /* return the string */ +} + +/*********************************************/ +/* OURICMP - Case insensitive string compare */ +/*********************************************/ + +int ouricmp(char *str1, char *str2) +{ + while((*str1!=0) && + (tolower((unsigned char)*str1)==tolower((unsigned char)*str2))) + { str1++;str2++; } + if (*str1==0) return 0; else return 1; +} + +/*********************************************/ +/* SRCH_STRING - get search strings from ref */ +/*********************************************/ + +void srch_string(char *ptr) +{ + /* ptr should point to unescaped query string */ + char tmpbuf[BUFSIZE]; + char srch[80]=""; + unsigned char *cp1, *cp2, *cps; + int sp_flg=0; + + /* Check if search engine referrer or return */ + if ( (cps=(unsigned char *)isinglist(search_list,log_rec.refer))==NULL) + return; + + /* Try to find query variable */ + srch[0]='?'; srch[sizeof(srch)-1] = '\0'; + strncpy(&srch[1],(char *)cps,sizeof(srch)-2); /* First, try "?..." */ + if ((cp1=(unsigned char *)strstr(ptr,srch))==NULL) + { + srch[0]='&'; /* Next, try "&..." */ + if ((cp1=(unsigned char *)strstr(ptr,srch))==NULL) return; + } + cp2=(unsigned char *)tmpbuf; + while (*cp1!='=' && *cp1!=0) cp1++; if (*cp1!=0) cp1++; + while (*cp1!='&' && *cp1!=0) + { + if (*cp1=='"' || *cp1==',' || *cp1=='?') + { cp1++; continue; } /* skip bad ones.. */ + else + { + if (*cp1=='+') *cp1=' '; /* change + to space */ + if (sp_flg && *cp1==' ') { cp1++; continue; } /* compress spaces */ + if (*cp1==' ') sp_flg=1; else sp_flg=0; /* (flag spaces here) */ + if (searchcasei) + *cp2++=tolower(*cp1++); /* normal character */ + else *cp2++=*cp1++; + } + } + *cp2=0; cp2=(unsigned char *)tmpbuf; + if (tmpbuf[0]=='?') tmpbuf[0]=' '; /* format fix ? */ + while( *cp2!=0 && isspace((unsigned char)*cp2) ) cp2++; /* skip sps. */ + if (*cp2==0) return; + + /* any trailing spaces? */ + cp1=cp2+strlen((char *)cp2)-1; + while (cp1!=cp2) if (isspace((unsigned char)*cp1)) *cp1--='\0'; else break; + + /* strip invalid chars */ + cp1=cp2; + while (*cp1!=0) { if ((*cp1<32)||(*cp1==127)) *cp1='_'; cp1++; } + + if (put_snode((char *)cp2,(u_int64_t)1,sr_htab)) + { + if (verbose) + /* Error adding search string node, skipping .... */ + fprintf(stderr,"%s %s\n", msg_nomem_sc, tmpbuf); + } + return; +} + +/*********************************************/ +/* GET_DOMAIN - Get domain portion of host */ +/*********************************************/ + +char *get_domain(char *str) +{ + char *cp; + int i=group_domains+1; + + if (isipaddr(str)) return NULL; + cp = str+strlen(str)-1; + + while (cp!=str) + { + if (*cp=='.') + if (!(--i)) return ++cp; + cp--; + } + return cp; +} + +/*********************************************/ +/* AGENT_MANGLE - Re-format user agent */ +/*********************************************/ + +void agent_mangle(char *str) +{ + char *cp1, *cp2, *cp3; + + str=cp2=log_rec.agent; + cp1=strstr(str,"ompatible"); /* check known fakers */ + if (cp1!=NULL) + { + while (*cp1!=';'&&*cp1!='\0') cp1++; + /* kludge for Mozilla/3.01 (compatible;) */ + if (*cp1++==';' && strcmp(cp1,")\"")) /* success! */ + { + /* Opera can hide as MSIE */ + cp3=strstr(str,"Opera"); + if (cp3!=NULL) + { + while (*cp3!='.'&&*cp3!='\0') + { + if(*cp3=='/') *cp2++=' '; + else *cp2++=*cp3; + cp3++; + } + cp1=cp3; + } + else + { + while (*cp1 == ' ') cp1++; /* eat spaces */ + while (*cp1!='.'&&*cp1!='\0'&&*cp1!=';') *cp2++=*cp1++; + } + if (mangle_agent<5) + { + while (*cp1!='.'&&*cp1!=';'&&*cp1!='\0') *cp2++=*cp1++; + if (*cp1!=';'&&*cp1!='\0') { *cp2++=*cp1++; *cp2++=*cp1++; } + } + if (mangle_agent<4) + if (*cp1>='0'&&*cp1<='9') *cp2++=*cp1++; + if (mangle_agent<3) + while (*cp1!=';'&&*cp1!='\0'&&*cp1!='('&&*cp1!=' ') *cp2++=*cp1++; + if (mangle_agent<2) + { + /* Level 1 - try to get OS */ + cp1=strstr(cp1,")"); + if (cp1!=NULL) + { + *cp2++=' '; + *cp2++='('; + while (*cp1!=';'&&*cp1!='('&&cp1!=str) cp1--; + if (cp1!=str&&*cp1!='\0') cp1++; + while (*cp1==' '&&*cp1!='\0') cp1++; + while (*cp1!=')'&&*cp1!='\0') *cp2++=*cp1++; + *cp2++=')'; + } + } + *cp2='\0'; + } + else + { + /* nothing after "compatible", should we mangle? */ + /* not for now */ + } + } + else + { + cp1=strstr(str,"Opera"); /* Opera flavor */ + if (cp1!=NULL) + { + while (*cp1!='/'&&*cp1!=' '&&*cp1!='\0') *cp2++=*cp1++; + while (*cp1!='.'&&*cp1!='\0') + { + if(*cp1=='/') *cp2++=' '; + else *cp2++=*cp1; + cp1++; + } + if (mangle_agent<5) + { + while (*cp1!='.'&&*cp1!='\0') *cp2++=*cp1++; + *cp2++=*cp1++; + *cp2++=*cp1++; + } + if (mangle_agent<4) + if (*cp1>='0'&&*cp1<='9') *cp2++=*cp1++; + if (mangle_agent<3) + while (*cp1!=' '&&*cp1!='\0'&&*cp1!='(') *cp2++=*cp1++; + if (mangle_agent<2) + { + cp1=strstr(cp1,"("); + if (cp1!=NULL) + { + cp1++; + *cp2++=' '; + *cp2++='('; + while (*cp1!=';'&&*cp1!=')'&&*cp1!='\0') *cp2++=*cp1++; + *cp2++=')'; + } + } + *cp2='\0'; + } + else + { + cp1=strstr(str,"Mozilla"); /* Netscape flavor */ + if (cp1!=NULL) + { + while (*cp1!='/'&&*cp1!=' '&&*cp1!='\0') *cp2++=*cp1++; + if (*cp1==' ') *cp1='/'; + while (*cp1!='.'&&*cp1!='\0') *cp2++=*cp1++; + if (mangle_agent<5) + { + while (*cp1!='.'&&*cp1!='\0') *cp2++=*cp1++; + *cp2++=*cp1++; + *cp2++=*cp1++; + } + if (mangle_agent<4) + if (*cp1>='0'&&*cp1<='9') *cp2++=*cp1++; + if (mangle_agent<3) + while (*cp1!=' '&&*cp1!='\0'&&*cp1!='(') *cp2++=*cp1++; + if (mangle_agent<2) + { + /* Level 1 - Try to get OS */ + cp1=strstr(cp1,"("); + if (cp1!=NULL) + { + cp1++; + *cp2++=' '; + *cp2++='('; + while (*cp1!=';'&&*cp1!=')'&&*cp1!='\0') *cp2++=*cp1++; + *cp2++=')'; + } + } + *cp2='\0'; + } + } + } +} + +/*********************************************/ +/* OUR_GZGETS - enhanced gzgets for log only */ +/*********************************************/ + +char *our_gzgets(void *fp, char *buf, int size) +{ + char *out_cp=buf; /* point to output */ + while (1) + { + if (f_cp>(f_buf+f_end-1)) /* load? */ + { +#ifdef USE_BZIP + f_end=(gz_log==COMP_BZIP)? + BZ2_bzread(fp, f_buf, GZ_BUFSIZE): + gzread(fp, f_buf, GZ_BUFSIZE); +#else + f_end=gzread(fp, f_buf, GZ_BUFSIZE); +#endif + if (f_end<=0) return Z_NULL; + f_cp=f_buf; + } + + if (--size) /* more? */ + { + *out_cp++ = *f_cp; + if (*f_cp++ == '\n') { *out_cp='\0'; return buf; } + } + else { *out_cp='\0'; return buf; } + } +} + +#ifdef USE_BZIP +/*********************************************/ +/* bz2_rewind - our 'rewind' for bz2 files */ +/*********************************************/ + +int bz2_rewind( void **fp, char *fname, char *mode ) +{ + BZ2_bzclose( *fp ); + *fp = BZ2_bzopen( fname, "rb"); + f_cp=f_buf+GZ_BUFSIZE; f_end=0; /* reset buffer counters */ + memset(f_buf, 0, sizeof(f_buf)); + if (*fp == Z_NULL) return -1; + else return 0; +} +#endif /* USE_BZIP */ + +/*********************************************/ +/* ISIPADDR - Determine if str is IP address */ +/*********************************************/ + +int isipaddr(char *str) +{ + int i=1,j=0; + char *cp; /* generic ptr */ + + if (strchr(str,':')!=NULL) + { + /* Possible IPv6 Address */ + cp=str; + while (strchr(":.abcdef0123456789",*cp)!=NULL && *cp!='\0') + { + if (*cp=='.') j++; + if (*cp++==':') i++; + } + + if (*cp!='\0') return -1; /* bad hostname (has ':') */ + if (i>1 && j) return 2; /* IPv4/IPv6 */ + return 3; /* IPv6 */ + } + else + { + /* Not an IPv6 address, check for IPv4 */ + cp=str; + while (strchr(".0123456789",*cp)!=NULL && *cp!='\0') + { + if (*cp++=='.') i++; + } + if (*cp!='\0') return 0; /* hostname */ + if (i!=4) return -1; /* bad hostname */ + return 1; /* IPv4 */ + } +} + +/*****************************************************************/ +/* */ +/* JDATE - Julian date calculator */ +/* */ +/* Calculates the number of days since Jan 1, 0000. */ +/* */ +/* Originally written by Bradford L. Barrett (03/17/1988) */ +/* Returns an unsigned long value representing the number of */ +/* days since January 1, 0000. */ +/* */ +/* Note: Due to the changes made by Pope Gregory XIII in the */ +/* 16th Centyry (Feb 24, 1582), dates before 1583 will */ +/* not return a truely accurate number (will be at least */ +/* 10 days off). Somehow, I don't think this will */ +/* present much of a problem for most situations :) */ +/* */ +/* Usage: days = jdate(day, month, year) */ +/* */ +/* The number returned is adjusted by 5 to facilitate day of */ +/* week calculations. The mod of the returned value gives the */ +/* day of the week the date is. (ie: dow = days % 7 ) where */ +/* dow will return 0=Sunday, 1=Monday, 2=Tuesday, etc... */ +/* */ +/*****************************************************************/ + +u_int64_t jdate( int day, int month, int year ) +{ + u_int64_t days; /* value returned */ + int mtable[] = {0,31,59,90,120,151,181,212,243,273,304,334}; + + /* First, calculate base number including leap and Centenial year stuff */ + + days=(((u_int64_t)year*365)+day+mtable[month-1]+ + ((year+4)/4) - ((year/100)-(year/400))); + + /* now adjust for leap year before March 1st */ + + if ((year % 4 == 0) && !((year % 100 == 0) && + (year % 400 != 0)) && (month < 3)) + --days; + + /* done, return with calculated value */ + + return(days+5); +} diff --git a/webalizer.h b/webalizer.h new file mode 100644 index 0000000..7a3941c --- /dev/null +++ b/webalizer.h @@ -0,0 +1,302 @@ +#ifndef _WEBALIZER_H +#define _WEBALIZER_H + +#define PCENT(val,max) ((val)?((double)val/(double)max)*100.0 : 0.0) +#define IDX_2C(c1,c2) (((c1-'a'+1)<<7)+(c2-'a'+1) ) +#define IDX_3C(c1,c2,c3) (((c1-'a'+1)<<12)+((c2-'a'+1)<<7)+(c3-'a'+1) ) +#define IDX_4C(c1,c2,c3,c4) (((c1-'a'+1)<<17)+((c2-'a'+1)<<12)+((c3-'a'+1)<<7)+(c4-'a'+1) ) +#define IDX_5C(c1,c2,c3,c4,c5) (((c1-'a'+1)<<22)+((c2-'a'+1)<<17)+((c3-'a'+1)<<12)+((c4-'a'+1)<<7)+(c5-'a'+1) ) +#define IDX_6C(c1,c2,c3,c4,c5,c6) (((c1-'a'+1)<<27)+((c2-'a'+1)<<22)+((c3-'a'+1)<<17)+((c4-'a'+1)<<12)+((c5-'a'+1)<<7)+(c6-'a'+1) ) + +#ifndef MAX +#define MAX(a,b) ((a) > (b) ? (a) : (b)) +#endif + +#define MAXHASH 4096 /* Size of our hash tables */ +#define BUFSIZE 4096 /* Max buffer size for log record */ +#define MAXHOST 128 /* Max hostname buffer size */ +#define MAXURL 4096 /* Max HTTP request/URL field size */ +#define MAXURLH 512 /* Max URL field size in htab */ +#define MAXREF 1024 /* Max referrer field size */ +#define MAXREFH 256 /* Max referrer field size in htab */ +#define MAXAGENT 128 /* Max user agent field size */ +#define MAXCTRY 48 /* Max country name size */ +#define MAXSRCH 256 /* Max size of search string buffer */ +#define MAXSRCHH 128 /* Max size of search str in htab */ +#define MAXIDENT 64 /* Max size of ident string (user) */ +#define MAXKWORD 32 /* Max size of config keyword */ +#define MAXKVAL 132 /* Max size of config value */ +#define HISTSIZE 120 /* Size of history in months */ +#define GRAPHMAX 72 /* Max months in index graph */ + +#define SLOP_VAL 3600 /* out of sequence slop (seconds) */ + +/* Log types */ +#define LOG_CLF 0 /* CLF/combined log type */ +#define LOG_FTP 1 /* wu-ftpd xferlog type */ +#define LOG_SQUID 2 /* squid proxy log */ +#define LOG_W3C 3 /* W3C extended log format */ + +/* compression */ +#define COMP_NONE 0 +#define COMP_GZIP 1 +#define COMP_BZIP 2 + +/* Response code defines as per draft ietf HTTP/1.1 rev 6 */ +#define RC_CONTINUE 100 +#define RC_SWITCHPROTO 101 +#define RC_OK 200 +#define RC_CREATED 201 +#define RC_ACCEPTED 202 +#define RC_NONAUTHINFO 203 +#define RC_NOCONTENT 204 +#define RC_RESETCONTENT 205 +#define RC_PARTIALCONTENT 206 +#define RC_MULTIPLECHOICES 300 +#define RC_MOVEDPERM 301 +#define RC_MOVEDTEMP 302 +#define RC_SEEOTHER 303 +#define RC_NOMOD 304 +#define RC_USEPROXY 305 +#define RC_MOVEDTEMPORARILY 307 +#define RC_BAD 400 +#define RC_UNAUTH 401 +#define RC_PAYMENTREQ 402 +#define RC_FORBIDDEN 403 +#define RC_NOTFOUND 404 +#define RC_METHODNOTALLOWED 405 +#define RC_NOTACCEPTABLE 406 +#define RC_PROXYAUTHREQ 407 +#define RC_TIMEOUT 408 +#define RC_CONFLICT 409 +#define RC_GONE 410 +#define RC_LENGTHREQ 411 +#define RC_PREFAILED 412 +#define RC_REQENTTOOLARGE 413 +#define RC_REQURITOOLARGE 414 +#define RC_UNSUPMEDIATYPE 415 +#define RC_RNGNOTSATISFIABLE 416 +#define RC_EXPECTATIONFAILED 417 +#define RC_SERVERERR 500 +#define RC_NOTIMPLEMENTED 501 +#define RC_BADGATEWAY 502 +#define RC_UNAVAIL 503 +#define RC_GATEWAYTIMEOUT 504 +#define RC_BADHTTPVER 505 + +/* Index defines for RC codes */ +#define IDX_UNDEFINED 0 +#define IDX_CONTINUE 1 +#define IDX_SWITCHPROTO 2 +#define IDX_OK 3 +#define IDX_CREATED 4 +#define IDX_ACCEPTED 5 +#define IDX_NONAUTHINFO 6 +#define IDX_NOCONTENT 7 +#define IDX_RESETCONTENT 8 +#define IDX_PARTIALCONTENT 9 +#define IDX_MULTIPLECHOICES 10 +#define IDX_MOVEDPERM 11 +#define IDX_MOVEDTEMP 12 +#define IDX_SEEOTHER 13 +#define IDX_NOMOD 14 +#define IDX_USEPROXY 15 +#define IDX_MOVEDTEMPORARILY 16 +#define IDX_BAD 17 +#define IDX_UNAUTH 18 +#define IDX_PAYMENTREQ 19 +#define IDX_FORBIDDEN 20 +#define IDX_NOTFOUND 21 +#define IDX_METHODNOTALLOWED 22 +#define IDX_NOTACCEPTABLE 23 +#define IDX_PROXYAUTHREQ 24 +#define IDX_TIMEOUT 25 +#define IDX_CONFLICT 26 +#define IDX_GONE 27 +#define IDX_LENGTHREQ 28 +#define IDX_PREFAILED 29 +#define IDX_REQENTTOOLARGE 30 +#define IDX_REQURITOOLARGE 31 +#define IDX_UNSUPMEDIATYPE 32 +#define IDX_RNGNOTSATISFIABLE 33 +#define IDX_EXPECTATIONFAILED 34 +#define IDX_SERVERERR 35 +#define IDX_NOTIMPLEMENTED 36 +#define IDX_BADGATEWAY 37 +#define IDX_UNAVAIL 38 +#define IDX_GATEWAYTIMEOUT 39 +#define IDX_BADHTTPVER 40 +#define TOTAL_RC 41 + +#ifdef USE_DNS +#include <netinet/in.h> /* needed for in_addr structure definition */ +#ifndef INADDR_NONE +#define INADDR_NONE 0xFFFFFFFF +#endif /* INADDR_NONE */ +#endif + +/* Response code structure */ +struct response_code { char *desc; /* code description */ + u_int64_t count; }; /* hit counter */ + +/* Country code structure */ +struct country_code {u_int64_t idx; /* TLD index number */ + char *desc; /* TLD description */ + u_int64_t count; /* hit counter */ + u_int64_t files; /* file counter */ + double xfer; }; /* xfer amt counter */ + +typedef struct country_code *CLISTPTR; + +/* log record structure */ +struct log_struct { char hostname[MAXHOST]; /* hostname */ + char datetime[29]; /* raw timestamp */ + char url[MAXURL]; /* raw request field */ + int resp_code; /* response code */ + u_int64_t xfer_size; /* xfer size in bytes */ + char refer[MAXREF]; /* referrer */ + char agent[MAXAGENT]; /* user agent (browser) */ + char srchstr[MAXSRCH]; /* search string */ + char ident[MAXIDENT]; }; /* ident string (user) */ + +extern struct log_struct log_rec; + +extern char *version ; /* program version */ +extern char *editlvl ; /* edit level */ +extern char *moddate ; /* modification date */ +extern char *copyright ; + +extern int verbose ; /* 2=verbose,1=err, 0=none */ +extern int debug_mode ; /* debug mode flag */ +extern int time_me ; /* timing display flag */ +extern int local_time ; /* 1=localtime 0=GMT (UTC) */ +extern int hist_gap ; /* hist error, save backup */ +extern int ignore_hist ; /* history flag (1=skip) */ +extern int ignore_state ; /* state fiag (1=skip) */ +extern int hourly_graph ; /* hourly graph display */ +extern int hourly_stats ; /* hourly stats table */ +extern int daily_graph ; /* daily graph display */ +extern int daily_stats ; /* daily stats table */ +extern int ctry_graph ; /* country graph display */ +extern int shade_groups ; /* Group shading 0=no 1=yes */ +extern int hlite_groups ; /* Group hlite 0=no 1=yes */ +extern int mangle_agent ; /* mangle user agents */ +extern int incremental ; /* incremental mode 1=yes */ +extern int use_https ; /* use 'https://' on URLs */ +extern int htaccess ; /* create .htaccess? (0=no) */ +extern int visit_timeout; /* visit timeout (30 min) */ +extern int graph_legend ; /* graph legend (1=yes) */ +extern int graph_lines ; /* graph lines (0=none) */ +extern int fold_seq_err ; /* fold seq err (0=no) */ +extern int log_type ; /* (0=clf, 1=ftp, 2=squid) */ +extern int group_domains; /* Group domains 0=none */ +extern int hide_sites ; /* Hide ind. sites (0=no) */ +extern int graph_mths ; /* # months in index graph */ +extern int index_mths ; /* # months in index table */ +extern int year_hdrs ; /* Show year headers (0=no) */ +extern int year_totals ; /* Show year totals (0=no) */ +extern int use_flags ; /* Show flags in ctry table */ +extern char *flag_dir ; /* flag directory */ +extern char *hname ; /* hostname for reports */ +extern char *state_fname ; /* run state file name */ +extern char *hist_fname ; /* name of history file */ +extern char *html_ext ; /* HTML file prefix */ +extern char *dump_ext ; /* Dump file prefix */ +extern char *conf_fname ; /* name of config file */ +extern char *log_fname ; /* log file pointer */ +extern char *out_dir ; /* output directory */ +extern char *blank_str ; /* blank string */ +extern char *dns_cache ; /* DNS cache file name */ +extern int geodb ; /* Use GeoDB flag (0=no) */ +extern int dns_children ; /* # of DNS children */ +extern int cache_ips ; /* Cache IP addrs (0=no) */ +extern int cache_ttl ; /* Cache entry TTL (days) */ +extern int link_referrer; /* link referrer (0=no) */ +extern int trimsquid ; /* trim squid URLs (0=none) */ +extern int searchcasei ; /* case insensitive search */ + +extern int ntop_sites ; /* top n sites to display */ +extern int ntop_sitesK ; /* top n sites (by kbytes) */ +extern int ntop_urls ; /* top n url's to display */ +extern int ntop_urlsK ; /* top n url's (by kbytes) */ +extern int ntop_entry ; /* top n entry url's */ +extern int ntop_exit ; /* top n exit url's */ +extern int ntop_refs ; /* top n referrers "" */ +extern int ntop_agents ; /* top n user agents "" */ +extern int ntop_ctrys ; /* top n countries "" */ +extern int ntop_search ; /* top n search strings */ +extern int ntop_users ; /* top n users to display */ + +extern int all_sites ; /* List All sites (0=no) */ +extern int all_urls ; /* List All URLs (0=no) */ +extern int all_refs ; /* List All Referrers */ +extern int all_agents ; /* List All User Agents */ +extern int all_search ; /* List All Search Strings */ +extern int all_users ; /* List All Usernames */ + +extern int dump_sites ; /* Dump tab delimited sites */ +extern int dump_urls ; /* URLs */ +extern int dump_refs ; /* Referrers */ +extern int dump_agents ; /* User Agents */ +extern int dump_users ; /* Usernames */ +extern int dump_search ; /* Search strings */ +extern int dump_header ; /* Dump header as first rec */ +extern char *dump_path ; /* Path for dump files */ + +extern u_int64_t cur_tstamp; /* Current timestamp */ +extern u_int64_t epoch; /* used for timestamp adj. */ +extern int check_dup; /* check for dups flag */ + +extern int cur_year,cur_month, /* year/month/day/hour */ + cur_day, cur_hour, /* tracking variables */ + cur_min, cur_sec; + +extern double t_xfer; /* monthly total xfer value */ +extern u_int64_t t_hit, t_file, t_site, /* monthly total vars */ + t_url, t_ref, t_agent, + t_page,t_visit,t_user; + +extern double tm_xfer[31]; /* daily transfer totals */ + +extern u_int64_t tm_hit[31], tm_file[31], /* daily total arrays */ + tm_site[31],tm_page[31], + tm_visit[31]; + +extern u_int64_t dt_site; /* daily 'sites' total */ + +extern u_int64_t ht_hit,mh_hit; /* hourly hits totals */ + +extern u_int64_t th_hit[24], th_file[24], /* hourly total arrays */ + th_page[24]; + +extern double th_xfer[24]; /* hourly xfer array */ + +extern int f_day,l_day; /* first/last day vars */ +extern int gz_log; /* flag for zipped log */ + +extern CLISTPTR *top_ctrys; /* Top countries table */ + +extern char hit_color[]; /* graph hit color */ +extern char file_color[]; /* graph file color */ +extern char site_color[]; /* graph site color */ +extern char kbyte_color[]; /* graph kbyte color */ +extern char page_color[]; /* graph page color */ +extern char visit_color[]; /* graph visit color */ +extern char misc_color[]; /* graph misc color */ +extern char pie_color1[]; /* pie additionnal color 1 */ +extern char pie_color2[]; /* pie additionnal color 2 */ +extern char pie_color3[]; /* pie additionnal color 3 */ +extern char pie_color4[]; /* pie additionnal color 4 */ + +/* define our externally visable functions */ + +extern char *cur_time(); +extern u_int64_t ctry_idx(char *); +extern char *un_idx(u_int64_t); +extern void init_counters(); +extern int ispage(char *); +extern u_int64_t jdate(int,int,int); +extern char from_hex(char); +extern int isipaddr(char *); + +#endif /* _WEBALIZER_H */ diff --git a/webalizer.png b/webalizer.png new file mode 100644 index 0000000..39f41c5 Binary files /dev/null and b/webalizer.png differ diff --git a/webalizer_lang.h b/webalizer_lang.h new file mode 120000 index 0000000..d62cfa2 --- /dev/null +++ b/webalizer_lang.h @@ -0,0 +1 @@ +lang/webalizer_lang.english \ No newline at end of file