วันอาทิตย์ที่ 21 พฤษภาคม พ.ศ. 2560

ใช้ php อ่านข้อมูลจาก /var/log/maillog


: เพื่อรายงานสถิติการใช้ e-mail ของบุคลากร


วันหนึ่งผมอ่านข้อมูลการเข้าใช้ e-mail จาก /var/www/html/mail/database/username_yn1.yonok.ac.th/inbox โดยเช็คจากเวลา update filectime() แต่พบว่าข้อมูลที่ได้คือ ไม่รวมไปถึง user ที่ใช้ outlook อ่าน e-mail ผ่าน pop3 จึงต้องไปอ่านข้อมูลการเข้าใช้ e-mail จากแฟ้ม /var/log/maillog ทำให้รายงายได้ละเอียดขึ้น สามารถดูผลของโปรแกรมนี้ที่ http://www.isinthai.com/mail/database/index.php
อันที่จริง โปรแกรมนี้จะอยู่ที่ไหนก็ได้ แต่ผมเก็บไว้ที่นี่ เพราะห้องนี้ยังไม่เก็บอะไรเกี่ยงกับ mail ที่สำคัญ แต่สิ่งที่ต้องทำคือการ chmod 644 maillog แต่เดิมคุณสมบัติของแฟ้มเป็น 600 จะใช้ php ของ apache ไปอ่านมาไม่ได้
    ตัวอย่างโปรแกรม /var/www/html/mail/database/index.php
    <html><head><title>Username of /var/log/maillog</title></head>
    <body bgcolor=gray topmargin=0 leftmargin=0><font face="fixedsys" size=0><?
    $datefull = date("F d, Y");
    if(date("j") < 10) {$d = date("M")."  ".date("j");}else{$d = date("M j");}
    echo "Today : <font color=yellow>".$datefull."</font><br>";
    echo "Last login: <a href=index.php?act=total>total</a> ";
    if ($_GET['act'] <> "view" && $_GET['act'] <> "total") {
      echo ", <a href=index.php?act=view>today</a> ";
    } else {
    echo "<ol><font color=white>";
    $ar = file("/var/log/maillog");
    if ($_GET['act'] == "total") { $max = 0; } else { $max = count($ar) - 500; }
    $j = 0;
    for ($i=count($ar);$i>=$max;$i--) {  
      if (strpos($ar[$i],"Login user=") && _
         (strpos($ar[$i],"$d") > -1 || $_GET['act'] == "total")) {
        $user = stristr($ar[$i],"user=");
        $uofar = substr($user,5,strpos($user," ")-5);
        $found = "no";
        for($k=0;$k<$j;$k++) { 
          if (strpos($ur[$k],"$uofar") > -1) { $found = "yes"; }
        }
        if ($found == "no") {
          if (strpos($ar[$i],"host=yonok.ac.th") == false) {
            $p="pop";
          } else {
            $p=" ";
          }
          $ur[$j] = $uofar." <font color=black>".substr($ar[$i],7,8)."</font> ".$p;
          $ut[$j] = $uofar." <font color=black>".substr($ar[$i],0,6)."</font> ".$p;
          $j = $j + 1;
        }
      }
    }
    for ($i=0;$i<$j;$i++) { 
      if ($_GET['act'] == "total") {
        echo "<li>".$ut[$i]; 
      } else {
        echo "<li>".$ur[$i]; 
      } 
    }
    }
    ?>
    </ol></body></html>
    

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

Set MongoDB in the windows path environment

  Let’s set MongoDB in the windows environment in just a few steps. Step 1: First download a suitable MongoDB version according to your mach...