--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta content="AWStats Documentation - Contrib and resource page" name="description">
+<meta content="awstats, awstat, log, file, analyzer, contrib, plugins, resources, maxmind, geoipfree, geoip, cities, regions, countries, frontend" name="keywords">
+<meta content="index,follow" name="robots">
+<meta content="AWStats Documentation - Plugins Development" name="title"><title>AWStats Documentation - Plugins Development</title>
+
+<link type="text/css" href="styles.css" rel="stylesheet">
+<link rel="stylesheet" type="text/css" href="scripts/prettify.css">
+<script type="text/javascript" src="scripts/prettify.js"></script><!-- $Revision$ - $Author$ - $Date$ -->
+</head>
+<body onload="prettyPrint()">
+<table style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;" bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0" width="100%">
+<!-- Large -->
+<tbody>
+<tr style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
+<td align="center" bgcolor="#9999cc"><a href="/"><img src="images/awstats_logo1.png" border="0"></a></td>
+<td align="center" bgcolor="#9999cc">
+<br>
+<font style="font-family: arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 16pt; line-height: normal; font-size-adjust: none; font-stretch: normal;" color="#eeeeff"><b>AWStats logfile analyzer 6.95
+Documentation</b></font><br>
+<br>
+</td>
+<td align="center" bgcolor="#9999cc">
+
+</td>
+</tr>
+</tbody>
+</table>
+<br>
+<br>
+<h1 style="font-family: arial,helvetica,sanserif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 26px; line-height: normal; font-size-adjust: none; font-stretch: normal;">Plugin
+Development</h1>
+AWStats has a very flexible plugin architecture that is easy to use and
+allows for powerful extensibility. Here is the information you need to
+get started rolling your own. In this documentation, the terms
+plugin and module will be used interchangeably. <br>
+<br>
+<ul>
+<li><a href="#Plugin_Files_Location">Plugin Files,
+Location</a></li>
+<li><a href="#Hooks">Hooks</a></li>
+<li><a href="#Required_Variables">Required
+Variables</a></li>
+<li><a href="#Accessible_Variables">Accessible
+Variables</a></li>
+<li><a href="#Accessible_Functions">Accessible
+Functions</a></li>
+<li><a href="awstats_dev_plugins_hooks.html">Available
+Hooks</a></li>
+</ul>
+<br>
+<a name="Plugin_Files_Location"></a><font color="#665544" size="3"><b>Plugin Files,
+Location</b></font><br>
+<hr>AWStats plugins are implemented as Perl modules with a file
+extension of .pm. Every time you run AWStats, either in update mode or
+HTML output mode, the configuration file will be parsed for the names
+of plugins to load. Then AWStats will scan the plugins folder for
+matching modules and load them into memory, executing hooks at the
+appropriate time during a run. Thus, when you create a plugin, you have
+to store the file in the plugins directory under the folder where
+awstats.pl resides. <br>
+<br>
+<font color="#665544" size="3"><b><a name="Hooks"></a>Hooks</b></font><br>
+<hr>In order to be useful, your plugin must implement
+any number
+of different "hooks" that will be called at various points during the
+AWStats run. A hook is simply a Perl sub routine that will receive
+various parameters, perform whatever actions you desire such as
+calculations, modifications or output, and optionally return a value. <br>
+<span style="font-weight: bold;">Note:</span> all
+plugins MUST implement the <span style="font-style: italic;">Init_</span>
+hook to initialize the module and determine if the plugin will run
+under the current version of AWStats.<br>
+For information on the available hooks, <a href="awstats_dev_plugins_hooks.html">view the Hooks
+document.</a><br>
+<a name="Required_Variables"></a><br>
+<font color="#665544" size="3"><b>Required
+Variables</b></font><br>
+<hr>Each plugin must implement three required, local variables
+including the name, hooks, implements and required AWStats Version.
+Typically you implement these at the top of your plugin file as in this
+example code:<br>
+<br>
+<code class="prettyprint">#-----------------------------------------------------------------------------<br>
+# PLUGIN VARIABLES<br>
+#-----------------------------------------------------------------------------<br>
+# <-----<br>
+# ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN<br>
+# AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE.<br>
+my $PluginNeedAWStatsVersion="5.5";<br>
+my $PluginHooksFunctions="GetCountryCodeByAddr GetCountryCodeByName
+ShowInfoHost";<br>
+my $PluginName = "geoipfree";<br>
+my $PluginImplements = "mou";<br>
+# -----></code><br>
+<br>
+The <span style="font-weight: bold;">$PluginNeedAWStatsVersion</span>
+indicates the minimum version of AWStats that your plugin requires to
+run properly. If a user attempts to implement your plugin with an older
+version of the program, the plugin will not load.<br>
+<br>
+<span style="font-weight: bold;">$PluginHooksFunctions</span>
+is a space delimited list of the different hooks that your plugin will
+implement. This list should only include names defined in the <a href="awstats_dev_plugins_hooks.html">hooks list</a>.
+You should not list any private module functions or
+the <span style="font-style: italic;">Init_</span>
+hook in this list. The naming convention for all hooks is <span style="font-style: italic;">HookName_PluginName</span>.
+The hooks like only includes the hook name without the underscore.<br>
+<br>
+<span style="font-weight: bold;">$PluginName</span>
+is simply the name of your plugin, exactly as it appears in the hooks
+and file name. This will be used by AWStats on load.<br>
+<br>
+<span style="font-weight: bold;">$PluginImplements</span>
+is a list of letter codes mapped to operations that your plugin
+performs. Without at least one of these letter codes, your plugin will
+never run. The codes are:<br>
+<ul>
+<li>"m" - a Menu Handler plugin that
+provides links to navigate around reports. The plugin will be called
+any time a menu is displayed, such as in the left frame in cgi mode or
+top navigation in static mode. </li>
+<li>"o" - an Output plugin that will be loaded when AWStats is
+generating a report via dynamic CGI or static HTML</li>
+<li>"u" - an Update plugin that will process data and is run
+when AWStats is parsing log files and updating the history data files.</li>
+</ul>
+<font color="#665544" size="3"><b><a name="Accessible_Variables"></a>Accessible Variables</b></font><br>
+<hr>Your plugin has access to all of the global variables
+declared at
+the top of the AWStats.pl program. While you can write to these
+variables, it's best to only read them as another plugin may make
+unexpected modifications. However you can declare global variables
+within your own plugin and share those across other plugins. Just
+declare them inside the normal <span style="font-style: italic;">use
+vars qw/ ... /</span> block within your own module.<br>
+<br>
+Thus you can (and should) use settings from the configuration file and
+determine the debug level.<br>
+<br>
+<font color="#665544" size="3"><b><a name="Accessible_Functions"></a>Accessible Functions</b></font><br>
+<hr>Plugins have access to all of the functions declared in the
+main
+AWStats.pl file. For debugging and error handling, you should use the <span style="font-style: italic;">debug</span> and <span style="font-style: italic;">error</span> functions.
+Below are some common functions that plugins take advantage of
+(remember you don't have to re-invent the wheel):<br>
+<br>
+<span style="font-weight: bold;">debug("<span style="font-style: italic;">debug message</span>", <span style="font-style: italic;">debug_level</span>)</span>
+- Writes the "debug message" to the standard output if the (integer)
+debug_level is lower or equal to that set by the user at runtime. The
+higher the debug level, the less important or more informational the
+message. After outputting the message, the program continues running.<br>
+<br>
+<span style="font-weight: bold;">error("<span style="font-style: italic;">error message</span>")</span>
+- Writes the "error message" to the standard output and halts program
+execution. <br>
+<br>
+<span style="font-weight: bold;">Format_Bytes(<span style="font-style: italic;">bytes</span>)</span>
+- Converts the incoming decimal value to Kilobytes, Megabytes,
+Gigabytes and so forth. So if you put in 1024.5 it will spit out "1 KB"<br>
+<br>
+<span style="font-weight: bold;">Format_Date(<span style="font-style: italic;">YYYYMMDDHHMMSS</span>)</span>
+- Converts the incoming timestamps to something like 30 Apr 2010 - 16:55<br>
+<br>
+<span style="font-weight: bold;">Format_Number(<span style="font-style: italic;">number</span>) -</span>
+Adds commas or a user defined character where appropriate to separate
+numbers for easier reading.<br>
+<br>
+<hr>
+<script language="javascript">
+var date='$Date$';
+document.writeln("Last revision: "+date);
+</script><!--
+First version of this tool was designed to analyze folowing web sites:
+--><br>
+</body></html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta name="description" content="AWStats Documentation - Contrib and resource page">
+<meta name="keywords" content="awstats, awstat, log, file, analyzer, contrib, plugins, resources, maxmind, geoipfree, geoip, cities, regions, countries, frontend">
+<meta name="robots" content="index,follow">
+<meta name="title" content="AWStats Documentation - Plugins Development - Graphs"><title>AWStats Documentation - Plugins Development - Graphs</title>
+
+<link rel="stylesheet" href="styles.css" type="text/css">
+<link href="scripts/prettify.css" type="text/css" rel="stylesheet">
+<script type="text/javascript" src="scripts/prettify.js"></script><!-- $Revision$ - $Author$ - $Date$ -->
+</head>
+<body onload="prettyPrint()">
+<table style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;" bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0" width="100%">
+<!-- Large -->
+<tbody>
+<tr style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
+<td align="center" bgcolor="#9999cc"><a href="/"><img src="images/awstats_logo1.png" border="0"></a></td>
+<td align="center" bgcolor="#9999cc">
+<br>
+<font style="font-family: arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 16pt; line-height: normal; font-size-adjust: none; font-stretch: normal;" color="#eeeeff"><b>AWStats logfile analyzer 6.95
+Documentation</b></font><br>
+<br>
+</td>
+<td align="center" bgcolor="#9999cc">
+
+</td>
+</tr>
+</tbody>
+</table>
+<br>
+<br>
+<h1 style="font-family: arial,helvetica,sanserif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 26px; line-height: normal; font-size-adjust: none; font-stretch: normal;">Plugin
+Graphs</h1>
+Charts, graphs and maps can be generated by your plugin and make
+AWStats reports look nice. AWStats generates arrays of values, label
+names and titles so that your plugin only has to handle the final data
+and display it as you wish.<br>
+<span style="font-weight: bold;">NOTE:</span> Only
+one graphing plugin should be choose by a user at any given time, thus
+your plugin should generate as many graphs as possible. If more than
+one graphing plugin is enabled at any given time, multiple graphs will
+appear in the output for each graph type.<br>
+<br>
+Below is a list of variables passed to the graphin hook and how you
+should use them.<br>
+<ul>
+<li>Title</li>
+<li>Type</li>
+<li>Block Label</li>
+<li>Val Label</li>
+<li>Val Color</li>
+<li>Val Max</li>
+<li>Val Total</li>
+<li>Val Average</li>
+<li>Val Data</li>
+</ul>
+<br>
+<font color="#665544" size="3"><b>Title</b></font><br>
+<hr>This is simply the title of the graph as it should be
+displayed to the end user. This could be "Hosts (Top 5)" or "Monthly
+History" or anything else. Of course, you don't have to show the title
+unless you want to.<br>
+<br>
+<font color="#665544" size="3"><b>Type</b></font><br>
+<hr>The type is important as your graphing plugin should
+determine what type of graph to output depending on the type AWStats is
+requesting. For information on types and the data order, <a href="#Graph_Types_and_Data">check the Types and Data section</a>.<br>
+<ul>
+</ul>
+<font color="#665544" size="3"><b>Block Label</b></font><br>
+<hr>This is a label for each group of data, usually labels for
+the X axis such as the days of the week, months of the year, etc. Your
+plugin can use the scalar count of values in this array as the number
+of times a loop needs to iterate through an axis. For example:<br>
+<br>
+<code class="prettyprint">foreach my $j (1.. (scalar
+@$blocklabel)) { ... }</code><br>
+<br>
+<font color="#665544" size="3"><b>Val Label</b></font><br>
+<hr>@vallabel contains a list of labels for each of the data sets
+such as "pages", "hits", etc. Use the scalar count of values when
+accessing the data matrix.<br>
+<br>
+<font color="#665544" size="3"><b>Val Color</b></font><br>
+<hr>This is an array of color values associated with each type of
+data as assigned by the configuration file or the defaults in AWStats.
+Each color is a web formatted RGB hex encoded value such as "FFFFFF" or
+"000000". <br>
+<br>
+<font color="#665544" size="3"><b>Val Max</b></font><br>
+<hr>This array contains the maximum individual numeric value for
+each of the types of data stored in the data array. The count is the
+same as the the color array.<br>
+<br>
+<font color="#665544" size="3"><b>Val Total</b></font><br>
+<hr>This array contains the total numeric value for each type of
+data stored in the data array. The count is the same as the
+the color array. <br>
+<br>
+<font color="#665544" size="3"><b>Val Average</b></font><br>
+<hr>This array contains the average numeric value for each type
+of data
+stored in the data array. The count is the same as the the
+color array. <br>
+<br>
+<font color="#665544" size="3"><b>Val Data</b></font><br>
+<hr>This array contains the actual data values for each type of
+data indexed by each data type for a block of data, then the next set
+of types for a block and so on. Thus if we were looking at the monthly
+graph, the data would be laid out thusly:<br>
+<br>
+$valdata[0] --> January Unique Visitors<br>
+$valdata[1] --> January Number of Visits<br>
+$valdata[2] --> January Pages<br>
+$valdata[3] --> January Hits<br>
+$valdata[4] --> January Bandwidth<br>
+$valdata[5] --> February Unique Visitors<br>
+$valdata[6] --> February Number of Visits<br>
+....<br>
+<br>
+<font color="#665544" size="3"><b><a name="Graph_Types_and_Data"></a>Graph Types and Data</b></font><br>
+<hr>Below is a list of the different graph types and the order in
+which data appears in the associated arrays.<br>
+<br>
+<ul>
+<li><span style="font-weight: bold;">month</span>
+- a graph of each month for a given year</li>
+<ul>
+<li>Unique Visitors</li>
+<li>Visits</li>
+<li>Pages</li>
+<li>Hits</li>
+<li>Bandwidth</li>
+</ul>
+<li><span style="font-weight: bold;">daysofmonth</span>
+- each day of the month</li>
+<ul>
+<li>Visits</li>
+<li>Pages</li>
+<li>Hits</li>
+<li>Bandwidth</li>
+</ul>
+<li><span style="font-weight: bold;">daysofweek</span>
+- an averaged data set for each day of the week</li>
+<ul>
+<li>Pages</li>
+<li>Hits</li>
+<li>Bandwidth</li>
+</ul>
+<li><span style="font-weight: bold;">hours</span>
+- an averaged data set for each hour of a day</li>
+<ul>
+<li>Pages</li>
+<li>Hits</li>
+<li>Bandwidth</li>
+</ul>
+<li><span style="font-weight: bold;">cluster</span>
+- the top 5 clustered servers if the cluster option is enabled</li>
+<ul>
+<li>Pages</li>
+</ul>
+<li><span style="font-weight: bold;">filetypes</span>
+- the top 5 file types reported on</li>
+<ul>
+<li>Pages</li>
+</ul>
+<li><span style="font-weight: bold;">httpstatus</span>
+- the top 5 HTTP status codes</li>
+<ul>
+<li>Pages</li>
+</ul>
+<li><span style="font-weight: bold;">browsers</span>
+- the top 5 browsers</li>
+<ul>
+<li>Pages</li>
+</ul>
+<li><span style="font-weight: bold;">oss</span>
+- the top 5 operating systems</li>
+<ul>
+<li>Pages</li>
+</ul>
+<li><span style="font-weight: bold;">hosts</span>
+- the top 5 hosts</li>
+<ul>
+<li>Pages</li>
+</ul>
+<li><span style="font-weight: bold;">countries_map</span>
+- a list of all countries and their hit counts</li>
+<ul>
+<li>Hits</li>
+</ul>
+</ul>
+<br>
+<hr>
+<script language="javascript">
+var date='$Date$';
+document.writeln("Last revision: "+date);
+</script><!--
+First version of this tool was designed to analyze folowing web sites:
+-->
+</body></html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta name="description" content="AWStats Documentation - Contrib and resource page">
+<meta name="keywords" content="awstats, awstat, log, file, analyzer, contrib, plugins, resources, maxmind, geoipfree, geoip, cities, regions, countries, frontend">
+<meta name="robots" content="index,follow">
+<meta name="title" content="AWStats Documentation - Plugins Development - Hooks"><title>AWStats Documentation - Plugins Development - Hooks</title>
+
+<link rel="stylesheet" href="styles.css" type="text/css">
+<link href="scripts/prettify.css" type="text/css" rel="stylesheet">
+<script type="text/javascript" src="scripts/prettify.js"></script><!-- $Revision$ - $Author$ - $Date$ -->
+</head>
+<body onload="prettyPrint()">
+<table style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;" bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0" width="100%">
+<!-- Large -->
+<tbody>
+<tr style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
+<td align="center" bgcolor="#9999cc"><a href="/"><img src="images/awstats_logo1.png" border="0"></a></td>
+<td align="center" bgcolor="#9999cc">
+<br>
+<font style="font-family: arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 16pt; line-height: normal; font-size-adjust: none; font-stretch: normal;" color="#eeeeff"><b>AWStats logfile analyzer 6.95
+Documentation</b></font><br>
+<br>
+</td>
+<td align="center" bgcolor="#9999cc">
+
+</td>
+</tr>
+</tbody>
+</table>
+<br>
+<br>
+<h1 style="font-family: arial,helvetica,sanserif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 26px; line-height: normal; font-size-adjust: none; font-stretch: normal;">Plugin
+Hooks</h1>
+The following is a list of hooks available to plugin
+developers. At various steps in the reporting or parsing process,
+AWStats will scan the plugin list for any matching hooks and execute
+them. All hooks start with the name of the hook, an underscore and then
+the plugin name. So for example, if I was creating a plugin called
+"mypluginname" then the initialization hook would look like:<br>
+<br>
+<code class="prettyprint">sub Init_mypluginname()</code><br>
+<br>
+If you need a hook that isn't listed, please contact the developers
+through Source Forge and place a request.<br>
+<ul>
+<li><a href="#Required_Hooks">Required Hooks</a></li>
+<li><a href="#Common_Hooks_">Common Hooks</a></li>
+<li><a href="#ProcessingUpdate_Hooks">Processing/Update
+Hooks</a></li>
+<li><a href="#OutputHTML_Hooks_">Output/HTML Hooks</a><br>
+</li>
+</ul>
+<font color="#665544" size="3"><b><a name="Required_Hooks"></a>Required Hooks</b></font><br>
+<hr><span style="font-weight: bold;">Init_<span style="font-style: italic;">pluginname</span><br>
+</span><span style="font-style: italic;">Type:</span>
+All<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">Parameters:</span>
+Any parameters passed from the configuration file<br>
+<span style="font-style: italic;">Called:</span>
+After loading configuration file and parsing plugins. Before parsing or
+HTML output<br>
+<span style="font-style: italic;">Description:</span>
+The initialization hook is used to load parameters from the
+configuration file and initialize variables used in your plugin before
+any other hooks are called. This is a good place to initialize any hash
+tables you need or open data files. <br>
+<span style="font-weight: bold;">Note:</span> <span style="font-style: italic;">Init_</span> must return a
+list of hooks that your plugin implements in order for it to be used by
+AWStats. For example:<br>
+<br>
+<code class="prettyprint">sub Init_geoip_region_maxmind {<br>
+my
+$checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion);<br>
+return ($checkversion?$checkversion:"$PluginHooksFunctions");<br>
+}</code><br>
+<br>
+If your plugin will accept a number of parameters, insert a line
+similar to the following:<br>
+<br>
+<code class="prettyprint">my $InitParams=shift;<br>
+my ($mode,$datafile,$override)=split(/\s+/,$InitParams,3);</code><br>
+<br>
+Be sure to perform validation on the local variables and change the
+number of splits to the number of parameters you expect to read.<span style="font-weight: bold;"><br>
+</span>
+<h2><a name="Common_Hooks_"></a><font color="#665544" size="3"><b><a name="Common_Hooks"></a>Common Hooks</b></font><br>
+</h2>
+<hr><span style="font-weight: bold;">SectionInitHashArray_<span style="font-style: italic;">pluginname</span><br>
+</span><span style="font-style: italic;">Type:</span>
+All<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">Parameters:</span>
+None<br>
+<span style="font-style: italic;">Called:</span>
+When AWStats InitHash is called, such as at startup, when purging a
+history file or when a new month begins during processing.<br>
+<span style="font-style: italic;">Description:</span>
+Use to initialize or clear any hash variables local to your plugin<br>
+<h2><font color="#665544" size="3"><b><a name="ProcessingUpdate_Hooks"></a>Processing/Update
+Hooks</b></font><br>
+</h2>
+<hr><span style="font-weight: bold;"></span><span style="font-weight: bold;">SectionWriteHistory_<span style="font-style: italic;">pluginname</span><br>
+</span><span style="font-style: italic;">Type:</span>
+Update<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">Parameters:</span>
+$xml, $xmlbb, $xmlbs, $xmlbe, $xmlrb,
+$xmlrs, $xmlre, $xmleb, $xmlee<br>
+<span style="font-style: italic;">Called:</span>
+Whenever the history file is written in AWStats<br>
+<span style="font-style: italic;">Description:</span>
+Lets your plugin
+write a section to the history file. Please note that if your plugin
+stores a lot of data, it could greatly increase the history file size
+and slow down loading and processing. In such a situation, you may want
+to use this as a trigger to write to a separate history file and use
+the <span style="font-style: italic;">SectionReadHistory_</span>
+hook as a trigger to read that data.<br>
+XML parameters are the pre-defined XML tags the history file is using<br>
+<br>
+<span style="font-weight: bold;">SectionReadHistory_<span style="font-style: italic;">pluginname</span><br>
+</span><span style="font-style: italic;">Type:</span>
+Update, Output<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">Parameters:</span>
+$issectiontoload, $readxml, $xmleb, $countlines<br>
+<span style="font-style: italic;">Called:</span>
+Whenever the history file is loaded in AWStats<br>
+<span style="font-style: italic;">Description:</span>
+Lets your plugin read a section that it had written to the history
+file. The history log is always loaded before parsing log entries and
+before outputing HTML. <br>
+$issectiontoload - the name of the plugin section found in the history
+file. If this is true, then the plugin should process the field data<br>
+$readxml - True if the history file is in XML format<br>
+$xmleb - XML element opening tag<br>
+$countlines - how many lines have been read from the history file so far<br>
+<span style="font-weight: bold;"><br>
+SectionProcessHostname_<span style="font-style: italic;">pluginname</span><br>
+</span><span style="font-style: italic;">Type:</span>
+Update<br>
+<span style="font-style: italic;">Required:</span> No<br>
+<span style="font-style: italic;">Parameters:</span>
+Resolved hostname<br>
+<span style="font-style: italic;">Called:</span> On
+each line of a log file IF the hostname was resolved<br>
+<span style="font-style: italic;">Description:</span>
+Processes a resolved host name, i.e. <span style="font-style: italic;">www.google.com</span> and
+is useful for counting hits to the host or looking up additional
+information.<br>
+<br>
+<span style="font-weight: bold;">SectionProcessIP_<span style="font-style: italic;">pluginname</span><br>
+</span><span style="font-style: italic;">Type:</span>
+Update<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">Parameters:</span>
+$Host<br>
+<span style="font-style: italic;">Called:</span> On
+each line of a log file IF DNS resolution is turned off or a host was
+not resolved<br>
+<span style="font-style: italic;">Description:</span>
+Processes an IP address i.e. <span style="font-style: italic;">192.168.1.1 </span>and
+is useful for counting hits to the host or looking up additional
+information.<br>
+<h2><a name="OutputHTML_Hooks_"></a><font color="#665544" size="3"><b><a name="OutputHTML_Hooks"></a>Output/HTML Hooks</b></font><br>
+</h2>
+<hr><span style="font-weight: bold;">AddHTMLMenuLink_<span style="font-style: italic;">pluginname</span><br>
+</span><span style="font-style: italic;">Type:</span>
+Output<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">Parameters:</span>
+$categ, $menu, $menulink, $menutext<br>
+<span style="font-style: italic;">Called:</span>
+Each time a new menu category is printed in the navigation frame or
+section<br>
+<span style="font-style: italic;">Description:</span>
+Inserts a menu item into the navigation area that will link back to the
+<span style="font-style: italic;">AddHTMLGraph_</span>
+hook defined in your plugin. If that hook is undefined, the user will
+experience an error. Requires <span style="font-style: italic;">AddHTMLGraph_</span>
+hook<br>
+<span class="highlighted">$categ</span> - name of
+the main navigation category such as 'who' or 'hosts'<br>
+$menu - passback where you assign the position your link should appear
+in the menu<br>
+$menulink - passback declaring the type of link<br>
+$menutext - passback of the text to be displayed to the user<br>
+<br>
+<span style="font-weight: bold;">AddHTMLGraph_<span style="font-style: italic;">pluginname</span><br>
+</span><span style="font-style: italic;">Type:</span>
+Output<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">Parameters:</span>None<br>
+<span style="font-style: italic;">Called:</span>
+When the <span style="font-style: italic;">AddHTMLMenuLink_</span>
+created link is clicked, after HTML headers are sent and before HTML
+footers are sent<br>
+<span style="font-style: italic;">Description:</span>
+Used to generate a dedicated report page with information specific to
+your plugin such as the Hosts report or Regions page. You are only
+responsible for the HTML between the standard AWStats header and footer.<span style="font-weight: bold;"></span><br>
+<br>
+<span style="font-weight: bold;">AddHTMLStyles_pluginname<br>
+</span><span style="font-style: italic;">Type:</span>
+Output<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">Parameters:</span>
+None<br>
+<span style="font-style: italic;">Called:</span>
+Whenever HTML headers are printed IF the configuration file does not
+define a specific style sheet URL.<br>
+<span style="font-style: italic;">Description:</span>
+Use this section to output style information to the HTML
+header. Only print the individual style definitions, not the beginning
+or ending style tags (i.e. <span style="font-style: italic;"><style></style>)</span><br>
+<br>
+<span style="font-weight: bold;">AddHTMLHeader_pluginname<br>
+</span><span style="font-style: italic;">Type:</span>
+Output<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">Parameters:</span>
+None<br>
+<span style="font-style: italic;">Called:</span>
+When HTML headers are printed, just before the closing <span style="font-style: italic;"></head></span>
+tag<br>
+<span style="font-style: italic;">Description:</span>
+If your plugin requires extra HTML header information such as java
+script includes or meta tags, print them within this hook.<br>
+<br>
+<span style="font-weight: bold;">AddHTMLFooter_pluginname<br>
+</span><span style="font-style: italic;">Type:</span>
+Output<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">Parameters:</span>
+None<br>
+<span style="font-style: italic;">Called:</span>
+When HTML footers are printed<br>
+<span style="font-style: italic;">Description:</span>
+Prints footer HTML code before the AWStats copyright and closing <span style="font-style: italic;"></html></span>
+tag. Useful if you need to output tracking code or banner ads<br>
+<br>
+<span style="font-weight: bold;">AddHTMLBodyHeader_<span style="font-style: italic;">pluginname</span><br>
+</span><span style="font-style: italic;">Type:</span>
+Output<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">Parameters:</span>
+None<br>
+<span style="font-style: italic;">Called:</span>
+After the HTML header is printed<br>
+<span style="font-style: italic;">Description: </span>Used
+to print information to the main HTML body before the banner or any
+other information is printed<br>
+<br>
+<span style="font-weight: bold;">AddHTMLMenuHeader_<span style="font-style: italic;">pluginname</span><br>
+</span><span style="font-style: italic;">Type:</span>
+Output<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">Parameters:</span>
+None<br>
+<span style="font-style: italic;">Called:</span>
+After the HTML header and HTML body header<br>
+<span style="font-style: italic;">Description: </span>Used
+to print a header for the navigation menu whether it's inline on the
+page or in the navigation frame.<br>
+<br>
+<span style="font-weight: bold;">AddHTMLMenuFooter_<span style="font-style: italic;">pluginname</span><br>
+</span><span style="font-style: italic;">Type:</span>
+Output<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">Parameters:</span>
+None<br>
+<span style="font-style: italic;">Called:</span>
+After the HTML navigation menu is printed<br>
+<span style="font-style: italic;">Description: </span>Used
+to print a footer for the navigation menu whether it's inline on the
+page or in the navigation frame.<br>
+<br>
+<span style="font-weight: bold;">AddHTMLContentHeader_<span style="font-style: italic;">pluginname</span><br>
+</span><span style="font-style: italic;">Type:</span>
+Output<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">Parameters:</span>
+None<br>
+<span style="font-style: italic;">Called:</span>
+After the HTML navigation menu is printed<br>
+<span style="font-style: italic;">Description: </span>Outputs
+after the navigation menu but before any of the content tables in the
+report pages. <br>
+<br>
+<span style="font-weight: bold;">TabHeadHTML_pluginname<br>
+</span><span style="font-style: italic;">Type:</span>
+Output<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">Parameters:</span>
+$title<br>
+<span style="font-style: italic;">Called:</span>
+When a new content table is beggining<br>
+<span style="font-style: italic;">Description:</span>
+Lets your plugin override the default table header style. Generally not
+used.<br>
+$title - title to display to the user<br>
+<br>
+<span style="font-weight: bold;">ShowInfoHost_<span style="font-style: italic;">pluginname</span><br>
+</span><span style="font-style: italic;">Type:</span>
+Output<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">Parameters:</span>
+$host<br>
+<span style="font-style: italic;">Called:</span>
+Each time a new host row is displayed, such as the main page host
+section or the full host list page.<br>
+<span style="font-style: italic;">Description:</span>
+Used to display a table column with detailed information about the
+host. The incoming parameter can be one of three values:<br>
+'__title__' - literal value that indicates we're printing a column
+header<br>
+$Resolved Hostname - name of the host<br>
+$IP Address - an unresolved dotted decimal IP<br>
+<br>
+<span style="font-weight: bold;">ShowInfoUser_<span style="font-style: italic;">pluginname</span><br>
+</span><span style="font-style: italic;">Type:</span>
+Output<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">Parameters:</span>
+$user<br>
+<span style="font-style: italic;">Called:</span>
+Each time a new authenticated user row is displayed<br>
+<span style="font-style: italic;">Description:</span>
+Used to display a table column with detailed information about the
+user. The incoming parameter can have one of two values: <br>
+'__title__' - literal value that indicates we're printing a column
+header<br>
+<span style="font-style: italic;">$user </span>-
+the authenticated user name<br>
+<br>
+<span style="font-weight: bold;">ShowInfoCluster_<span style="font-style: italic;">pluginname</span><br>
+</span><span style="font-style: italic;">Type:</span>
+Output<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">Parameters:</span>
+$cluster<br>
+<span style="font-style: italic;">Called:</span>
+Each time a new cluster row is displayed<br>
+<span style="font-style: italic;">Description:</span>
+Used to display a table column with cluster information. The incoming
+parameter can have one of two values: <br>
+'__title__' - literal value that indicates we're printing a column
+header<br>
+$cluster - the cluster name<br>
+<br>
+<span style="font-weight: bold;">ShowInfoURL_<span style="font-style: italic;">pluginname</span><br>
+</span><span style="font-style: italic;">Type:</span>
+Output<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">Parameters:</span>
+$url<br>
+<span style="font-style: italic;">Called:</span>
+Each time a new page URL or referrer URL row is displayed<br>
+<span style="font-style: italic;">Description:</span>
+Used to display a table column with additional url information. The
+incoming parameter can have one of two values: <br>
+'__title__' - literal value that indicates we're printing a column
+header<br>
+url - the page or referrer URL<br>
+<br>
+<span style="font-weight: bold;">ShowInfoGraph_<span style="font-style: italic;">pluginname</span><br>
+</span><span style="font-style: italic;">Type:</span>
+Output<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">Parameters: </span>$title,
+$type, $display, @blocklabel, @vallabel, @valcolor, @valmax, @valtotal, @valaverage, @valdata<br>
+<span style="font-style: italic;">Called:</span> Any
+time a graph, chart or map is output to HTML<br>
+<span style="font-style: italic;">Description:</span>
+Used to display charts or graphs. AWstats will generate arrays of data,
+colors and labels that your graphing plugin should be able to handle.
+For more information, <a href="awstats_dev_plugins_graphs.html">see
+the graph plugin page</a><br>
+<br>
+<span style="font-weight: bold;">ShowPagesAddField_<span style="font-style: italic;">pluginname</span><br>
+</span><span style="font-style: italic;">Type:</span>
+Output<span style="font-style: italic;"></span><br>
+<span style="font-style: italic;">Parameters:</span>
+$key<br>
+<span style="font-style: italic;">Called:</span>
+Each time a new page URL row is displayed on detailed URL pages and
+main summary<br>
+<span style="font-style: italic;">Description:</span>
+Used to display a table column with additional url information. The
+incoming parameter can have one of three values: <br>
+'title' - literal value that indicates we're printing a column header<br>
+<span style="font-weight: bold;"></span>$key - URL
+key to lookup in your hash<br>
+'' - empty literal indicated the final row. Useful if you want to show
+total or averages<br>
+<br>
+<br>
+<hr>
+<script language="javascript">
+var date='$Date$';
+document.writeln("Last revision: "+date);
+</script><!--
+First version of this tool was designed to analyze folowing web sites:
+-->
+</body></html>
\ No newline at end of file