[Xitami] Rotate Logs SOLVED

Forward Design xitami@lists.xitami.org
Thu, 13 Jun 2002 18:44:24 -0500


This is a multi-part message in MIME format.

------=_NextPart_000_026C_01C2130A.56DBA0B0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

OK, I solved the problem.

I wrote a Perl script that kills the Xitami server process, which frees =
up the access.log file,

rotates the access log file, then restarts the machine.

I wanted to restart the machine, so that the Xitami server had a fresh =
start for the day,

so any leaks or problems would never get a foot hold.

Works great, and unless something else happens, I am assured consistent =
rotation of=20

my log files.  If you use this script, make sure to set up Xitami to =
stop rotating its logs,

just set it up as manual, so it just keeps loggin forever to access.log.

Quite obviously this is for Windows only, and for Window 2000 only, =
since I do not believe

that the iteration and termination of system processes works right under =
other Window OSs.

This script also assumes that you keep your logs in c:\xitami\logs.

But if you don't just read the script and change it, its not rocket =
science.

P.S.-You might want to comment out the InitiateSystemShutdown function =
when you first

test it, just to make sure everything is cool, and you are not surprised =
by a system shutdown.


Here is my script, hope it can help someone:



#!/usr/local/bin/perl

use Win32;
use Win32::PerfLib;
use Win32::Process;

### kill xitami

my $h=3D'';
my %tasks=3Dget_remote_process_list($h);

foreach my $key(keys %tasks){
    #print "$key\t$tasks{$key}\n";
  if ($tasks{$key} eq "xipro") {
  Win32::Process::KillProcess($key, $exitcode);
  #print "process killed\n";
  }
}

sleep(5);

### rotate logs

$currenttime=3Dtime-(86400*1);=20

($sec,$min,$hour,$day,$month,$year,$wday,$yday,$isdst) =3D =
localtime($currenttime);
$year+=3D1900;
$currentyear=3D$year;
$year-=3D2000;
$month++;
$currentmonth=3D$month;
$mspace=3D'';
if ($month<10) {
 $mspace=3D'0';
 }
$dspace=3D'';
if ($day<10) {
 $dspace=3D'0';
 }
$yspace=3D'';
if ($year<10) {
 $yspace=3D'0';
 }
$currentdate=3D"$yspace$year$mspace$month$dspace$day";
$logfile=3D"c:\\xitami\\logs\\ac$currentdate.log";


$hold=3D0;
while ($hold<60) {
 `copy c:\\xitami\\logs\\access.log $logfile`;
 @filecheck=3Dglob("$logfile*");
 $busy=3D0;
 if ($#filecheck=3D=3D-1) {
  $hold++;
  $busy=3D1;
  sleep(1);
  }
 else {
  $hold=3D60;
  }
 }
if ($busy) {
 print "Could not copy log file.\n" ;
 exit 0 ;
 return 1 ;=20
 }


$hold=3D0;
while ($hold<120) {
 `del c:\\xitami\\logs\\access.log`;
 @filecheck=3Dglob("c:\\xitami\\logs\\access.log*");
 $busy=3D0;
 if ($#filecheck>-1) {
  $hold++;
  $busy=3D1;
  sleep(1);
  }
 else {
  $hold=3D120;
  }
 }
if ($busy) {
 print "Could not delete access log file.\n" ;
 exit 0 ;
 return 1 ;=20
 }

Win32::InitiateSystemShutdown ('','This computer is about to be =
restarted.',5,1,1);

sub get_remote_process_list {
   =20
my $server =3D $_[0];
   =20
my %rtasks;
my %counter;
   =20
Win32::PerfLib::GetCounterNames($server, \%counter);
my %r_counter =3D map { $counter{$_} =3D> $_ } keys %counter;
# retrieve the id for process object
my $process_obj =3D $r_counter{Process};
# retrieve the id for the process ID counter
my $process_id =3D $r_counter{'ID Process'};
   =20
# create connection to $server
my $perflib =3D new Win32::PerfLib($server);
my $proc_ref =3D {};
# get the performance data for the process object
$perflib->GetObjectList($process_obj, $proc_ref);
$perflib->Close();
my $instance_ref =3D $proc_ref->{Objects}->{$process_obj}->{Instances};
foreach my $p (sort keys %{$instance_ref})
{
    my $counter_ref =3D $instance_ref->{$p}->{Counters};
    foreach my $i (keys %{$counter_ref})
    {
        if($counter_ref->{$i}->{CounterNameTitleIndex} =3D=3D =
$process_id)
        {
            $rtasks{$counter_ref->{$i}->{Counter}} =3D =
$instance_ref->{$p}->{Name};
        }
    }
}
  return %rtasks;
}



  ----- Original Message -----=20
  From: Forward Design=20
  To: xitami@lists.xitami.org=20
  Sent: Wednesday, June 12, 2002 12:40 AM
  Subject: Re: [Xitami] Rotate Logs


  Thank you, but everything is set correctly.

  Does everyone else's log files work perfectly?

  Doesn't anyone else have this problem?

  =20
    From: Gregory Hart=20
    To: xitami@lists.xitami.org=20
    Sent: Tuesday, June 11, 2002 7:10 PM
    Subject: Re: [Xitami] Rotate Logs


    In the admin screen, go to Configuration, and then Logging. Make =
sure that all the settings that you want are correct.
    -Greg

    ----- Original Message -----=20
    From: Forward Design=20
    To: xitami@lists.xitami.org=20
    Sent: Tuesday, June 11, 2002 12:53 AM
    Subject: [Xitami] Rotate Logs


    Shoot me dead if this has already been solved.

    Xitami seems to have a hard time rotating the access logs.

    Xitami should be copying the current access.log file to yesterdays

    date 'ac0x0x0x.log' type of thing, but sometimes it skips days,

    and the access.log file just gets bigger and bigger... then it =
finally does it.

    I am thinking that when my server is busy, and it is suppose to =
actually rotate

    the log file, it can't because the server is being hit, and it is =
writing to the file,

    access denied type of thing.


    I even gave up having Xitami do it, and wrote a perl script to do =
the rotating for me, but

    Xitami won't let go of the access.log file, and I can't delete it to =
start

    fresh after I copy the file.

    Any ideas on how to get Xitami to perform this seemingly simple =
task??? =20

    Reliably?=20

    Using Xitami Pro v2.4d10

------=_NextPart_000_026C_01C2130A.56DBA0B0
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2715.400" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>OK, I solved the problem.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>I wrote a Perl script that kills the =
Xitami server=20
process, which frees up the access.log file,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>rotates the access log file, then =
restarts the=20
machine.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>I wanted to restart the machine, so =
that the Xitami=20
server had a fresh start for the day,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>so any leaks or problems would never =
get a foot=20
hold.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Works great, and unless something else =
happens, I=20
am assured&nbsp;consistent rotation of </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>my log files.&nbsp; If you use this =
script, make=20
sure to set up Xitami to stop rotating its logs,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>just set it up as manual, so it just =
keeps loggin=20
forever to access.log.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Quite obviously this is for Windows =
only, and for=20
Window 2000 only, since I do not believe</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>that the iteration and termination of =
system=20
processes works right under other Window OSs.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>This script also assumes that you keep =
your logs in=20
c:\xitami\logs.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>But if you don't just read the script =
and change=20
it, its not rocket science.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>P.S.-You might want to comment out the=20
InitiateSystemShutdown function when you first</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>test it, just to make sure everything =
is cool, and=20
you are not surprised by a system shutdown.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Here is my script, hope it can help=20
someone:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>#!/usr/local/bin/perl</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>use Win32;<BR>use =
Win32::PerfLib;<BR>use=20
Win32::Process;</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>### kill xitami</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>my $h=3D'';<BR>my=20
%tasks=3Dget_remote_process_list($h);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>foreach my $key(keys =
%tasks){<BR>&nbsp;&nbsp;&nbsp;=20
#print "$key\t$tasks{$key}\n";<BR>&nbsp; if ($tasks{$key} eq "xipro")=20
{<BR>&nbsp;&nbsp;Win32::Process::KillProcess($key,=20
$exitcode);<BR>&nbsp;&nbsp;#print "process=20
killed\n";<BR>&nbsp;&nbsp;}<BR>}</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>sleep(5);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>### rotate logs</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>$currenttime=3Dtime-(86400*1); =
</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial=20
size=3D2>($sec,$min,$hour,$day,$month,$year,$wday,$yday,$isdst) =3D=20
localtime($currenttime);<BR>$year+=3D1900;<BR>$currentyear=3D$year;<BR>$y=
ear-=3D2000;<BR>$month++;<BR>$currentmonth=3D$month;<BR>$mspace=3D'';<BR>=
if=20
($month&lt;10) =
{<BR>&nbsp;$mspace=3D'0';<BR>&nbsp;}<BR>$dspace=3D'';<BR>if=20
($day&lt;10) {<BR>&nbsp;$dspace=3D'0';<BR>&nbsp;}<BR>$yspace=3D'';<BR>if =

($year&lt;10)=20
{<BR>&nbsp;$yspace=3D'0';<BR>&nbsp;}<BR>$currentdate=3D"$yspace$year$mspa=
ce$month$dspace$day";<BR>$logfile=3D"c:\\xitami\\logs\\ac$currentdate.log=
";</FONT></DIV>
<DIV>&nbsp;</DIV><FONT face=3DArial size=3D2>
<DIV><BR>$hold=3D0;<BR>while ($hold&lt;60) {<BR>&nbsp;`copy=20
c:\\xitami\\logs\\access.log=20
$logfile`;<BR>&nbsp;@filecheck=3Dglob("$logfile*");<BR>&nbsp;$busy=3D0;<B=
R>&nbsp;if=20
($#filecheck=3D=3D-1)=20
{<BR>&nbsp;&nbsp;$hold++;<BR>&nbsp;&nbsp;$busy=3D1;<BR>&nbsp;&nbsp;sleep(=
1);<BR>&nbsp;&nbsp;}<BR>&nbsp;else=20
{<BR>&nbsp;&nbsp;$hold=3D60;<BR>&nbsp;&nbsp;}<BR>&nbsp;}<BR>if ($busy)=20
{<BR>&nbsp;print "Could not copy log file.\n" ;<BR>&nbsp;exit 0=20
;<BR>&nbsp;return 1 ; <BR>&nbsp;}</DIV>
<DIV>&nbsp;</DIV>
<DIV><BR>$hold=3D0;<BR>while ($hold&lt;120) {<BR>&nbsp;`del=20
c:\\xitami\\logs\\access.log`;<BR>&nbsp;@filecheck=3Dglob("c:\\xitami\\lo=
gs\\access.log*");<BR>&nbsp;$busy=3D0;<BR>&nbsp;if=20
($#filecheck&gt;-1)=20
{<BR>&nbsp;&nbsp;$hold++;<BR>&nbsp;&nbsp;$busy=3D1;<BR>&nbsp;&nbsp;sleep(=
1);<BR>&nbsp;&nbsp;}<BR>&nbsp;else=20
{<BR>&nbsp;&nbsp;$hold=3D120;<BR>&nbsp;&nbsp;}<BR>&nbsp;}<BR>if ($busy)=20
{<BR>&nbsp;print "Could not delete access log file.\n" ;<BR>&nbsp;exit 0 =

;<BR>&nbsp;return 1 ; <BR>&nbsp;}</DIV>
<DIV>&nbsp;</DIV>
<DIV>Win32::InitiateSystemShutdown ('','This computer is about to be=20
restarted.',5,1,1);</DIV>
<DIV>&nbsp;</DIV>
<DIV>sub get_remote_process_list {<BR>&nbsp;&nbsp;&nbsp; <BR>my $server =
=3D=20
$_[0];<BR>&nbsp;&nbsp;&nbsp; <BR>my %rtasks;<BR>my=20
%counter;<BR>&nbsp;&nbsp;&nbsp; =
<BR>Win32::PerfLib::GetCounterNames($server,=20
\%counter);<BR>my %r_counter =3D map { $counter{$_} =3D&gt; $_ } keys =
%counter;<BR>#=20
retrieve the id for process object<BR>my $process_obj =3D=20
$r_counter{Process};<BR># retrieve the id for the process ID =
counter<BR>my=20
$process_id =3D $r_counter{'ID Process'};<BR>&nbsp;&nbsp;&nbsp; <BR># =
create=20
connection to $server<BR>my $perflib =3D new =
Win32::PerfLib($server);<BR>my=20
$proc_ref =3D {};<BR># get the performance data for the process=20
object<BR>$perflib-&gt;GetObjectList($process_obj,=20
$proc_ref);<BR>$perflib-&gt;Close();<BR>my $instance_ref =3D=20
$proc_ref-&gt;{Objects}-&gt;{$process_obj}-&gt;{Instances};<BR>foreach =
my $p=20
(sort keys %{$instance_ref})<BR>{<BR>&nbsp;&nbsp;&nbsp; my $counter_ref =
=3D=20
$instance_ref-&gt;{$p}-&gt;{Counters};<BR>&nbsp;&nbsp;&nbsp; foreach my =
$i (keys=20
%{$counter_ref})<BR>&nbsp;&nbsp;&nbsp;=20
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
if($counter_ref-&gt;{$i}-&gt;{CounterNameTitleIndex} =3D=3D=20
$process_id)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
$rtasks{$counter_ref-&gt;{$i}-&gt;{Counter}} =3D=20
$instance_ref-&gt;{$p}-&gt;{Name};<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;=20
}<BR>&nbsp;&nbsp;&nbsp; }<BR>}<BR>&nbsp; return =
%rtasks;<BR>}<BR></FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT><BR>&nbsp;</DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
  <DIV style=3D"FONT: 10pt arial">----- Original Message ----- </DIV>
  <DIV=20
  style=3D"BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: =
black"><B>From:</B>=20
  <A title=3Dforward@forwarddesign.com=20
  href=3D"mailto:forward@forwarddesign.com">Forward Design</A> </DIV>
  <DIV style=3D"FONT: 10pt arial"><B>To:</B> <A =
title=3Dxitami@lists.xitami.org=20
  href=3D"mailto:xitami@lists.xitami.org">xitami@lists.xitami.org</A> =
</DIV>
  <DIV style=3D"FONT: 10pt arial"><B>Sent:</B> Wednesday, June 12, 2002 =
12:40=20
  AM</DIV>
  <DIV style=3D"FONT: 10pt arial"><B>Subject:</B> Re: [Xitami] Rotate =
Logs</DIV>
  <DIV><BR></DIV>
  <DIV><FONT face=3DArial size=3D2>Thank you, but everything is set=20
  correctly.</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
  <DIV><FONT face=3DArial size=3D2>Does everyone else's log files work=20
  perfectly?</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
  <DIV><FONT face=3DArial size=3D2>Doesn't anyone else have this=20
  problem?</FONT></DIV>
  <DIV><BR>&nbsp;</DIV>
  <BLOCKQUOTE dir=3Dltr=20
  style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
    <DIV=20
    style=3D"BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: =
black"><B>From:</B>=20
    <A title=3Dgreg@freastro.net =
href=3D"mailto:greg@freastro.net">Gregory Hart</A>=20
    </DIV>
    <DIV style=3D"FONT: 10pt arial"><B>To:</B> <A =
title=3Dxitami@lists.xitami.org=20
    href=3D"mailto:xitami@lists.xitami.org">xitami@lists.xitami.org</A> =
</DIV>
    <DIV style=3D"FONT: 10pt arial"><B>Sent:</B> Tuesday, June 11, 2002 =
7:10=20
    PM</DIV>
    <DIV style=3D"FONT: 10pt arial"><B>Subject:</B> Re: [Xitami] Rotate =
Logs</DIV>
    <DIV><BR></DIV>
    <DIV><FONT face=3DArial size=3D2>In the admin screen, go to =
Configuration, and=20
    then Logging. Make sure that all the settings that you want are=20
    correct.</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>-Greg</FONT></DIV>
    <DIV>&nbsp;</DIV>
    <DIV style=3D"FONT: 10pt arial">----- Original Message -----=20
    <DIV style=3D"BACKGROUND: #e4e4e4; font-color: black"><B>From:</B> =
<A=20
    title=3Dforward@forwarddesign.com=20
    href=3D"mailto:forward@forwarddesign.com">Forward Design</A> </DIV>
    <DIV><B>To:</B> <A title=3Dxitami@lists.xitami.org=20
    href=3D"mailto:xitami@lists.xitami.org">xitami@lists.xitami.org</A> =
</DIV>
    <DIV><B>Sent:</B> Tuesday, June 11, 2002 12:53 AM</DIV>
    <DIV><B>Subject:</B> [Xitami] Rotate Logs</DIV></DIV>
    <DIV><BR></DIV>
    <DIV><FONT face=3DArial size=3D2>Shoot me dead if this has already =
been=20
    solved.</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>Xitami seems to have a hard time =
rotating the=20
    access logs.</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>Xitami should be copying the =
current access.log=20
    file to yesterdays</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>date 'ac0x0x0x.log' type of thing, =
but=20
    sometimes it skips days,</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>and the access.log file just gets =
bigger and=20
    bigger...&nbsp;then it finally does it.</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>I am thinking that when my server =
is busy, and=20
    it is suppose to actually rotate</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>the log file, it can't because the =
server is=20
    being hit, and it is writing to the file,</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>access denied type of =
thing.</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>I even gave up having Xitami do it, =
and wrote a=20
    perl script to do the rotating for me, but</FONT></DIV>
    <DIV>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>Xitami won't let go of =
the&nbsp;access.log=20
    file, and I can't delete&nbsp;it to start</FONT></DIV>
    <DIV>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>fresh after I copy the =
file.</FONT></DIV>
    <DIV>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>Any ideas on how to get Xitami to =
perform this=20
    seemingly simple task???&nbsp; </FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>Reliably?</FONT>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>Using Xitami Pro=20
v2.4d10</FONT></DIV></BLOCKQUOTE></BLOCKQUOTE></BODY></HTML>

------=_NextPart_000_026C_01C2130A.56DBA0B0--