11/06/2016

lightsquid : Edit file and use php+mysql show user and IP

http://proxy.sci.com/lightsquid/index.cgi
http://proxy.sci.com/lightsquid/it.php

lightsquid : lightsquid edit file and use php+mysql เพื่อนำมาแสดง ว่า user นั้นใช้ที่ ip เครื่องใครบ้างตามวัน
- ไฟล์อยู่ที่ sftp://sa@192.168.2.106/usr/local/lightsquid/it.php
- แก้ไฟล์ html สำหรับแสดงผลหน้า web ที่ /usr/local/lightsquid/tpl/base เพิ่มข้อความแก้ไขรูปแบบของ html
เช่น index.html เพื่อให้มี link คลิกไปดูหน้า php ที่สร้างขึ้นได้ เพิ่ม
  1. <TD width="33%" align="center"><FONT size="-1"><A HREF="it.php">CHECK IP</A></FONT></TD>


- ที่ folder ip2name ให้ copy ไฟล์ ip2name.simple --> ip2name.simpleNew แก้ Code เป็นดังนี้เพื่อให้ Show IP และชื่อร่วมกัน (ไม่ใช้ไฟล์เดิมร่วมกันเพราะมีปัญหาเรื่อง Link และไม่สามารถดูภาพรวมทั้งหมดเฉพาะชื่อได้จึงต้องแยก)
Code :
  1. #contributor: esl
  2. #do nothing
  3. #simple version
  4.  
  5. sub StartIp2Name() {
  6. }
  7.  
  8. sub Ip2Name($$$) {
  9.   # $Lhost,$user,$Ltimestamp
  10.   my $Lhost=shift;
  11.   my $user =shift;
  12.   #return $user.":".$Lhost
  13.   return $user.":".$Lhost if ($user ne "-"); #return user if defined !!!!!
  14.   #return $user if ($user ne "-"); #return user if defined !!!!!
  15.   return $Lhost;
  16. }
  17.  
  18. sub StopIp2Name() {
  19. }
  20.  
  21. #warning !!!
  22. 1;


- ที่ Folder lightsquid ให้ Copy ไฟล์ lightparser.pl และ lightsquid.cfg เป็นอีก 1 ชุดเช่นเป็น it_lightsquid.cfg และ it_lightparser.pl เป็นต้น
- สร้าง Folder สำหรับเก็บ report ใหม่แยกออกมาจาก report เดิมเช่น folder it เป็นต้น
- แก้ไฟล์ it_lightsquid.cfg
ใส่ที่เก็บ report ใหม่
  1. #path to report folder
  2. แก้ ip2name เป็น ตัวใหม่ที่เราสร้างขึ้น
  3. [code]$reportpath          ="/usr/local/lightsquid/it";[/code]
  4. #ip2name.abils  ip2name.demo  ip2name.dhcp  ip2name.dns  ip2name.ip  ip2name.list  ip2name.simple  ip2name.smb  ip2name.squidauth  ip2name.squidlist  ip2name.squidlist2
  5. $ip2name="simpleNew";
  6.  


-แก้ it_lightparser.pl ตรง require cfg ไฟล์ให้ไปเรียกไฟล์ cfg ที่แก้ไขใหม่
  1. require "it_lightsquid.cfg";


- Run คำสั่ง สร้าง Report โดยใช้คำสั่ง
/usr/local/lightsquid/it_lightparser.pl

- นำคำสั่งไปใส่ใน crontab -e เพื่อจะให้ run auto กำหนดวันตามที่เราต้องการ เช่น
  1. 0 0,13 * * * /usr/local/lightsquid/it_lightparser.pl


- จะได้ไฟล์แยกเป็นวันที่ใน Folder it และใน folder จะมีไฟล์ IP และชื่อผู้ใช้ จากนั้นเขียนโปรแกรม อ่านชื่อไฟล์ ชื่อ Folder เก็บลงฐานข้อมูลเพื่อนำมาแสดงในหน้า php
it.php
  1. <?php
  2.            
  3. /*
  4. $path = "/usr/local/lightsquid/it/";
  5. $results = scandir($path);
  6.  
  7. foreach ($results as $result) {
  8.     if ($result != "." && $result != "..") {
  9.         echo $result . "<br>";  
  10.     }
  11. }
  12. */
  13.  
  14. /*$dir = "/usr/local/lightsquid/it/20160727/";
  15.  
  16. // Open a directory, and read its contents
  17. if (is_dir($dir)){
  18.   if ($dh = opendir($dir)){
  19.     while (($file = readdir($dh)) !== false){
  20.         if (strpos($file, ':') !== false) {
  21.         echo $file . "<br>";
  22.     }
  23.     }
  24.     closedir($dh);
  25.   }
  26. }*/
  27.  
  28. include("it_db.php");
  29.  
  30. $folder = "/usr/local/lightsquid/it/";
  31. $refolder = scandir($folder);
  32.  
  33. foreach ($refolder as $namefolder) {
  34.     if ($namefolder != "." && $namefolder != "..") {
  35.         //echo $namefolder . "<br>";   
  36.         $SQL ="SELECT * FROM it_report.check_date WHERE check_date = '".$namefolder."'";
  37.         $Result = $mysqli->query($SQL);
  38.         //echo $SQL;
  39.         $i = 0;
  40.         while($Row = $Result->fetch_assoc()){
  41.             $i++;
  42.         }   
  43.         //$x = 1;
  44.         //echo $i;
  45.         //exit;
  46.         //echo $i;
  47.         if($i == 0){
  48. ///Insert Date New///          
  49.             $SQL = "INSERT INTO it_report.check_date(check_date) VALUES ('".$namefolder."')";
  50.             $mysqli->query($SQL);   
  51. ///Insert Trans New///
  52.             $dir = "/usr/local/lightsquid/it/".$namefolder."/";    
  53.             // Open a directory, and read its contents
  54.             if (is_dir($dir)){
  55.               if ($dh = opendir($dir)){
  56.                 while (($file = readdir($dh)) !== false){
  57.                     if (strpos($file, ':') !== false) {
  58.                     //echo $x.":".$file . "<br>";
  59.                     list($user, $ip)    = explode(":", $file);  
  60.                         $SQL = "INSERT INTO it_report.check_list(list_user,list_ip,list_date) VALUES ('".$user."','".$ip."','".$namefolder."')";
  61.                         $mysqli->query($SQL);                      
  62.                         //echo $SQL;       
  63.                         //$x++;                
  64.                 } //Close IF
  65.                 } //Close While
  66.                 closedir($dh);
  67.               } //Close IF
  68.             } //Close IF
  69.         } else {
  70. ///Insert Trans Is Not Same.///            
  71.             $dir = "/usr/local/lightsquid/it/".$namefolder."/";
  72.             // Open a directory, and read its contents
  73.             //echo $dir;
  74.             if (is_dir($dir)){
  75.               if ($dh = opendir($dir)){
  76.                 while (($file = readdir($dh)) !== false){
  77.                     if (strpos($file, ':') !== false) {
  78.                     //echo $file . "<br>";
  79.                     list($user, $ip)    = explode(":", $file);  
  80.                         $SQL = "INSERT INTO it_report.check_list(list_user,list_ip,list_date) VALUES ('".$user."','".$ip."','".$namefolder."')";
  81.                         //$SQL .= " WHERE list_user != '".$user."' AND list_ip = '".$ip."' AND list_date = '".$namefolder."'";
  82.                         //echo $SQL;                                   
  83.                         $mysqli->query($SQL);                  
  84.                    
  85.                 } //Close IF
  86.                 } //Close While
  87.                 closedir($dh);
  88.               } //Close IF 
  89.             } //Close IF
  90.         } //Close else         
  91.  
  92.     } //Close If
  93. } //Close For
  94.  
  95. $SelectDateGet = $_GET["SelectDate"];
  96. $year = substr($SelectDateGet,0,4);
  97. $month = substr($SelectDateGet,4,2);
  98. $day = substr($SelectDateGet,6,2);
  99.  
  100. $SelectDate="<select name='SelectDate' class='textbox'>";
  101. $SQL="SELECT * FROM it_report.check_date ORDER BY check_date DESC";
  102. $Result = $mysqli->query($SQL);
  103. while($row = $Result->fetch_assoc()){
  104. //echo $row["check_date"].":".$SelectDateGet;
  105.     if($row["check_date"] == $SelectDateGet){
  106.         $SelectDate.="<option value='$row[check_date]' selected>$row[check_date]</option>";
  107.     } else {
  108.         $SelectDate.="<option value='$row[check_date]'>$row[check_date]</option>";
  109.     }
  110.  
  111. }
  112. $SelectDate.="</select>";
  113.  
  114. $subcontent =<<<TEMPLATE
  115. <div id="list1"><!--%LINK%--></div>
  116. <TABLE cellSpacing="1" cellPadding="2" width='50%' border=1  align="center">
  117. <tr bgcolor="CCCCCC"  align="center">
  118. <td>Number</td><td>User</td><td>IP</td><td>Count</td></tr>
  119. </tr>
  120. <!--%LOOP%-->
  121. <tr class="<!--%CLASS%-->">
  122. <td align="center"><!--%NO%--></td>
  123. <td align="left"><!--%LIST_USER%--></td>
  124. <td align="left"><!--%LIST_IP%--></td>
  125. <td align="center"><!--%COUNT%--></td>
  126. <!--%EDIT%-->
  127. </tr>
  128. <!--%LOOP%-->
  129. <tr class="headerbar"  align="center">
  130. <td>Number</td><td>User</td><td>IP</td><td>Count</td></tr>
  131. </tr>
  132. </table>
  133. <div id="list2"><!--%LINK%--></div>
  134. TEMPLATE;
  135.  
  136. //$SQL ="SELECT COUNT(list_user) AS num, list_user, list_date FROM it_report.check_list WHERE list_date = '20160727' GROUP BY list_user, list_date ORDER BY num DESC";
  137. $SQL ="SELECT COUNT(list_user) AS num, list_user, list_date FROM it_report.check_list WHERE list_date = '".$SelectDateGet."' GROUP BY list_user, list_date ORDER BY num DESC";
  138. $Result1 = $mysqli->query($SQL);
  139. //echo $SQL;
  140.  
  141. $sct =split("<!--%LOOP%-->",$subcontent);
  142. $i = 1;
  143. while($Row1 = $Result1->fetch_assoc()){
  144.     $list_user = $Row1["list_user"];
  145.     $list_date = $Row1["list_date"];
  146.     $list_count = $Row1["num"];
  147.  
  148.     $thisline=$sct[1];
  149.     $SQL ="SELECT * FROM it_report.check_list WHERE list_user = '".$list_user."' AND list_date = '".$list_date."'";
  150.     //$SQL ="SELECT * FROM it_report.check_list WHERE list_date = '20160727'";
  151.     $Result = $mysqli->query($SQL);
  152.     //echo $SQL;
  153.     ///////////////////////////////////////////////////////////////////////
  154.    
  155.     //$sct =split("<!--%LOOP%-->",$subcontent);
  156.     //$i = 1;
  157.     while($Row = $Result->fetch_assoc()){
  158.         $thisline=$sct[1];
  159.         $class =($class != "bg1")? "bg1":"bg2";
  160.         $user = $Row["list_user"];
  161.         $list_user = "<a href=\"user_detail.cgi?year=".$year."&month=".$month."&day=".$day."&user=".$user."\" target='_blank'>".$user."</a> ";
  162.         $thisline = str_replace("<!--%CLASS%-->",$class, $thisline);
  163.         $thisline = str_replace("<!--%NO%-->",$i, $thisline);
  164.         $thisline = str_replace("<!--%LIST_USER%-->",$list_user, $thisline);
  165.         $thisline = str_replace("<!--%LIST_IP%-->",$Row["list_ip"],$thisline)
  166.         $thisline = str_replace("<!--%COUNT%-->",$list_count,$thisline);   
  167.         $loopcontent.=$thisline;
  168.     $i = $i+1;
  169.     }
  170. $sct[0]     = str_replace("<!--%LINK%-->",$link,$sct[0]);
  171. $sct[2]     = str_replace("<!--%LINK%-->",$link,$sct[2]);
  172.  
  173. }   
  174.  
  175. //echo ($sct[0].$loopcontent.$sct[2]);
  176.  
  177. ?>
  178.  
  179. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  180. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  181. <head>
  182. <title>Check LightSquid</title>
  183. <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  184. <!-- <script type="text/javascript" src="it.js"></script> -->
  185. <script type="text/javascript">
  186. function getList(ACTION){
  187.  
  188. }
  189. </script>
  190.  
  191. </head>
  192. <body>
  193. <br /><br /><br />
  194. <div align='center'>
  195. <form id='login' onclick="getList()"/ >
  196. <table width='30%' border=1>
  197. <tr align='center' bgcolor='#BFBFBF'><td align='center' colspan='2'>เลือกวันที่ ที่ต้องการ</td></tr>
  198. <tr>
  199.     <td align='right'>วันที่ : </td><td align='left'><?php echo $SelectDate ?></td>
  200. </tr>
  201. </tr>
  202. <tr>
  203.     <td align='center' colspan='2'><input id='submit' type='submit' value='ตกลง'></td>
  204. </tr>
  205. </table>
  206. </form>
  207. </div>
  208. <br/>
  209.  
  210.         <div class="navbar"><div class="inner">
  211.         <span class="corners-top"><span></span></span>
  212.         <div align="center">
  213.         <h3>รายการ</h3>
  214.         <?php echo ($sct[0].$loopcontent.$sct[2]) ?>
  215.         </div>
  216.         <span class="corners-bottom"><span></span></span>
  217.         </div>
  218.         </div>  
  219.        
  220. </body>
  221. </html>
  222.  

No comments:

Post a Comment