PageRenderTime 55ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/billing/modules/billing.php

http://bios.googlecode.com/
PHP | 681 lines | 403 code | 165 blank | 113 comment | 60 complexity | 72164155a8625e49c943315808aeac70 MD5 | raw file
Possible License(s): GPL-3.0
  1. <?php
  2. # Deksripsi:
  3. # Menampilkan halaman yang berisi kondisi realtime warnet, berupa jumlah pemakaian , biaya ,durasi, dari masing-masing client
  4. if(eregi("billing.php",$_SERVER['REQUEST_URI'])) die('hello script kiddies..');
  5. if($submit_layout && $setting_layouts)
  6. {
  7. mysql_query("UPDATE setting SET setting_layout='$setting_layouts' LIMIT 1");
  8. $setting_layout = mysql_result(mysql_query("SELECT setting_layout FROM setting LIMIT 1"),0);
  9. }
  10. ?>
  11. <!-- update 25 februari 2008 //-->
  12. <script src="script.js.php?uid=<?php echo $uid?>"></script>
  13. <table width="100%" border="0" cellspacing="0" cellpadding="0">
  14. <tr>
  15. <td><img src="./img/icon_billing.png" width="63" height="75" align="left"><strong>Summary:</strong><br>
  16. <?php
  17. $zone_tarif=date("G",mktime(gmdate("H")+$setting_timezone,gmdate("i"),gmdate("s"),gmdate("m"),gmdate("d"),gmdate("Y")));
  18. $data_tarif=mysql_fetch_array(mysql_query("SELECT tarif_perjam,tarif_min,tarif_min_durasi FROM tarif WHERE tarif_pkl=$zone_tarif"));
  19. ?>
  20. - harga 1 jam = Rp.
  21. <b id="summary_tarif_perjam"><?php echo number_format($data_tarif[tarif_perjam],0,",",".")?> </b>
  22. <br>
  23. - tarif minimal = Rp.
  24. <b id="summary_tarif_min"><?php echo number_format($data_tarif[tarif_min],0,",",".")?></b> untuk <b id="summary_tarif_min_durasi"><?php echo number_format($data_tarif[tarif_min_durasi],0,",",".")?></b> menit pertama<br>
  25. - update harga setiap
  26. <b id="summary_tarif_refresh"><?php echo $setting_price_every_second?></b>
  27. detik
  28. </td>
  29. <td width="30%">
  30. <h3><div id="billing_clock">Pkl. <?php echo date("H:i:s - d M Y",mktime(gmdate("H")+$setting_timezone,gmdate("i"),gmdate("s"),gmdate("m"),gmdate("d"),gmdate("Y")))?></div></h3>
  31. <a href="<?php echo $operator_file_name?>?uid=<?php echo $uid?>&p=billing&sid=<?php echo $sid?>">Klik disini untuk Refresh manual</a>
  32. </td>
  33. </tr>
  34. </table>
  35. <hr>
  36. <a name="status">
  37. <?php
  38. ## 18 Agustus 3:22 AM
  39. if($start && $start <> 1)
  40. {
  41. $client_start=date("Y-m-d H:i:s",mktime(gmdate("H")+$setting_timezone,gmdate("i"),gmdate("s"),gmdate("m"),gmdate("d"),gmdate("Y")));
  42. $client_status=1;
  43. $status_now=mysql_result(mysql_query("SELECT client_status FROM client WHERE client_id=$start"),0);
  44. if($status_now <> $client_status && $status_now=='0')
  45. {
  46. mysql_query("UPDATE client SET client_start='$client_start',client_status=$client_status WHERE client_id=$start");
  47. mysql_query("UPDATE client_status SET client_status_old=$client_status WHERE client_status_id=$start");
  48. }
  49. } elseif($stop || $start==1)
  50. {
  51. if($start==1) $stop=1;
  52. $client_status=2;
  53. $client_stop=date("Y-m-d H:i:s",mktime(gmdate("H")+$setting_timezone,gmdate("i"),gmdate("s"),gmdate("m"),gmdate("d"),gmdate("Y")));
  54. $status_now=mysql_result(mysql_query("SELECT client_status FROM client WHERE client_id=$stop"),0);
  55. if($start==1) $status_now=1;
  56. if($status_now <> $client_status && $status_now=='1')
  57. {
  58. mysql_query("UPDATE client SET client_end='$client_stop',client_status=$client_status WHERE client_id=$stop");
  59. if($start==1) mysql_query("UPDATE client SET client_start='$client_stop' WHERE client_id=$stop");
  60. mysql_query("UPDATE client_status SET client_status_old=$client_status WHERE client_status_id=$stop");
  61. $cur_data=mysql_fetch_array(mysql_query("SELECT client_start, client_end, client_desktop, client_login FROM client WHERE client_id=$stop"));
  62. $time_start=strtotime("$cur_data[client_start]");
  63. $time_end=strtotime("$cur_data[client_end]");
  64. $time_duration=$time_end - $time_start;
  65. #######
  66. if($time_duration || $stop==1)
  67. {
  68. # pre penghitungan tarif.. disini kita hitung dulu biaya dan waktu minimum..
  69. $total_biaya = 0;
  70. $zone_start=date("G",$time_start);
  71. $data_tarif=mysql_fetch_array(mysql_query("SELECT tarif_perjam,tarif_min,tarif_min_durasi FROM tarif WHERE tarif_pkl=$zone_start"));
  72. $data_tarif_lama=$data_tarif[tarif_perjam];
  73. $total_biaya += $data_tarif[tarif_min];
  74. $total_biaya_lama = $data_tarif[tarif_min];
  75. $dump_total_biaya='';
  76. $dump_total_biaya[]=$total_biaya;
  77. if($time_duration > $data_tarif[tarif_min_durasi] * 60)
  78. {
  79. $time_start = $time_start + $data_tarif[tarif_min_durasi] * 60;
  80. #ubah waktu start dan berakhir ke dalam unixstamp - tentukan jam awal nya.
  81. $scan_start=mktime(date("G",$time_start),0,0,date("n",$time_start),date("j",$time_start),date("Y",$time_start));
  82. $scan_end=mktime(date("G",$time_end),0,0,date("n",$time_end),date("j",$time_end),date("Y",$time_end));
  83. #jumlah zona tarif yang akan discan:
  84. $scan_zona = floor(($scan_end - $scan_start) / 3600) + 1;
  85. $used_duration = $data_tarif[tarif_min_durasi] * 60;
  86. #$used_duration_lama = $data_tarif[tarif_min_durasi] * 60;
  87. $used_duration_lama = $used_duration;
  88. //$used_duration_awal = $used_duration;
  89. $total_used = $used_duration; # ---> penting untuk dideklarasikan nilai 0 nya. soalnya kalau ganti jadi null alias tidak dideklarasikan, hasilnya akan beda saat menggunakan operand +=
  90. # bagian baris dalam for .. dibawah adalah bagian inti dari billing BiOS ini. Inti karena merupakan yang bertanggung jawab
  91. # dalam merumuskan hitung hitungan billing. logika sederhana, tapi implementasi dalam programming perlu waktu 2 hari 2 malem,
  92. # beberapa gelas kopi dan 1 kaleng pocari, tidur hanya 4 jam :D - 11-12 juni 2008
  93. $toggle_jam_pertama = 0;
  94. for($n=0;$n < $scan_zona; $n++)
  95. {
  96. $total_biaya2=0;
  97. $zone_start=date("G",$scan_start + $n * 3600);
  98. $zone_end=date("G",$scan_start + ($n+1) * 3600);
  99. $data_tarif=mysql_fetch_array(mysql_query("SELECT tarif_perjam,tarif_min,tarif_min_durasi FROM tarif WHERE tarif_pkl=$zone_start"));
  100. $check_time_end=mktime(date("G",$scan_start + ($n+1) * 3600),0,0,date("n",$scan_start + ($n+1) * 3600),date("j",$scan_start + ($n+1) * 3600),date("Y",$scan_start + ($n+1) * 3600));
  101. if(($time_start + ($time_duration - $total_used)) > $check_time_end)
  102. {
  103. $time_end = $check_time_end;
  104. } else
  105. {
  106. $time_end = $time_start + ($time_duration - $total_used) ;
  107. }
  108. $used_duration = $time_end - $time_start;
  109. $total_used += $used_duration;
  110. $posisi=0;
  111. #23/6/2008 patch
  112. if($data_tarif[tarif_perjam]==$data_tarif_lama && $total_used > 3600 && $toggle_jam_pertama ==0)
  113. {
  114. $toggle_jam_pertama=1;
  115. $posisi=1;
  116. $total_biaya = $data_tarif[tarif_perjam];
  117. $total_biaya += ceil(($total_used - 3600) / $setting_price_every_second) * ($data_tarif[tarif_perjam] / (3600 / $setting_price_every_second));
  118. //$a=$total_used - 3600; $b=$used_duration;
  119. $total_biaya2 = ceil(($used_duration - ($total_used - 3600)) / $setting_price_every_second) * (($data_tarif[tarif_perjam] - $total_biaya_lama) / ((3600 - $used_duration_lama) / $setting_price_every_second)) + ceil(($total_used - 3600) / $setting_price_every_second) * ($data_tarif[tarif_perjam] / (3600 / $setting_price_every_second));;
  120. # PATCH SP1 : ditambahkan n=0 dengan syarat tarif lama dan baru sama. sebelumnya tidak dicek apakah tarif lama sama dengan tarif baru, akibatnya bila berbeda, menggunakan tarif baru. seharusnya bila tarif berbeda =zona berbeda menggunakan kondisi posisi nomor 3
  121. } elseif(($data_tarif[tarif_perjam]==$data_tarif_lama && $n==0) || ($data_tarif[tarif_perjam]==$data_tarif_lama && $total_used <= 3600))
  122. {
  123. $posisi=2;
  124. $total_biaya += ceil($used_duration / $setting_price_every_second) * (($data_tarif[tarif_perjam] - $total_biaya_lama) / ((3600 - $used_duration_lama) / $setting_price_every_second));
  125. #$total_biaya2 = $total_biaya; #ditambahkan dengan total biaya yang minimum
  126. $total_biaya2 = ceil($used_duration / $setting_price_every_second) * (($data_tarif[tarif_perjam] - $total_biaya_lama) / ((3600 - $used_duration_lama) / $setting_price_every_second)); #--> tidak ditambah biaya minimum
  127. } else
  128. {
  129. $toggle_jam_pertama=1; #PATCH SP1
  130. $posisi=3;
  131. $total_biaya += ceil($used_duration / $setting_price_every_second) * ($data_tarif[tarif_perjam] / (3600 / $setting_price_every_second));
  132. $total_biaya2 = ceil($used_duration / $setting_price_every_second) * ($data_tarif[tarif_perjam] / (3600 / $setting_price_every_second));
  133. }
  134. $dump_total_biaya[]="zona: " . $zone_start . " = Rp." . ceil($total_biaya2) . " - $used_duration detik - perjam $data_tarif[tarif_perjam],pos=$posisi";
  135. $time_start = $time_end;
  136. }
  137. }
  138. # ga kepengen susah cari kembalian kan? fungsi dibawah ini terbukti sangat membantu :D
  139. if($setting_receh <= 0 ) $setting_receh = 1;
  140. $total_biaya = ceil($total_biaya / $setting_receh) * $setting_receh;
  141. }
  142. #######
  143. if($stop==1) $total_biaya=0;
  144. #update laporan harian
  145. mysql_query("INSERT INTO laporan (laporan_client, laporan_start, laporan_end, laporan_durasi, laporan_biaya, laporan_operator, laporan_catatan) VALUES ($stop, '$cur_data[client_start]','$cur_data[client_end]',$time_duration, $total_biaya,'$uid','stop by op')");
  146. #PERIKSA STATUS CLIENT HIDUP ATAU MATI, VIA PING REPLY
  147. $client_ip=@mysql_result(mysql_query("SELECT client_ip FROM client WHERE client_id=$stop"),0);
  148. $client_ping=shell_exec("ping $client_ip -c 1 -s 1 -t 1");
  149. if(eregi('bytes from',$client_ping))
  150. {
  151. /*
  152. switch($cur_data[client_desktop])
  153. {
  154. case 'kde':
  155. `sudo ssh -l root $client_ip 'su - $setting_client_username -c "env DISPLAY=:0.0 dcop ksmserver default logout 0 0 0"'`;
  156. break;
  157. case 'gnome':
  158. #`sudo ssh -l root $client_ip 'su - $setting_client_username -c "gnome-session-save --kill --silent --display=:0.0 -s bios"'`;
  159. `sudo ssh -l $setting_client_username $client_ip 'export SESSION_MANAGER=$(cat /tmp/gnome-session-manager) && gnome-session-save --kill --silent --display=:0.0 -s bios'`;
  160. break;
  161. case 'xfce':
  162. `sudo ssh -l root $client_ip 'su - $setting_client_username -c "xfce4-session-logout --display=:0.0"'`;
  163. break;
  164. }
  165. */
  166. #apabila cara dibawah ini gagal, silahkan uncomment perintah case diatas, dan
  167. #beri comment pada perintah dibawah. - 6 april 2008
  168. `sudo ssh -l root $client_ip skill -u $cur_data[client_login]`;
  169. }
  170. }
  171. #uncomment baris dibawah bila Anda menginginkan tampilan di client berupa: desktop di lock, ditanyain user dan password
  172. #$client_ip=@mysql_result(mysql_query("SELECT client_ip FROM client WHERE client_id=$_REQUEST[stop]"),0);
  173. #`sudo ssh -l root $client_ip 'su - baliwae -c "env DISPLAY=:0.0 dcop ksmserver default logout 0 0 0"'`;
  174. } elseif($reset)
  175. {
  176. $client_status=0;
  177. $status_now=mysql_result(mysql_query("SELECT client_status FROM client WHERE client_id=$reset"),0);
  178. if($status_now <> $client_status && $status_now=='2')
  179. {
  180. mysql_query("UPDATE client SET client_status=$client_status, client_start=NULL WHERE client_id=$reset");
  181. mysql_query("UPDATE client_status SET client_status_old=$client_status WHERE client_status_id=$reset");
  182. }
  183. #PERIKSA STATUS CLIENT HIDUP ATAU MATI, VIA PING REPLY
  184. $client_ip=@mysql_result(mysql_query("SELECT client_ip FROM client WHERE client_id=$reset"),0);
  185. $client_login=@mysql_result(mysql_query("SELECT client_login FROM client WHERE client_id=$reset"),0);
  186. if($reset<>1) $client_ping=shell_exec("ping $client_ip -c 1 -s 1 -t 1");
  187. if(eregi('bytes from',$client_ping))
  188. {
  189. /*
  190. $client_desktop=@mysql_result(mysql_query("SELECT client_desktop FROM client WHERE client_id=$reset"),0);
  191. switch($client_desktop)
  192. {
  193. case 'kde':
  194. `sudo ssh -l root $client_ip 'su - $setting_client_username -c "env DISPLAY=:0.0 dcop ksmserver default logout 0 0 0"'`;
  195. break;
  196. case 'gnome':
  197. #cara dibawah hanya untuk gnome umumnya kayak misal linux mint
  198. #`sudo ssh -l root $client_ip 'su - $setting_client_username -c "gnome-session-save --kill --silent --display=:0.0 -s bios"'`;
  199. #cara kedua ini khusus untuk ubuntu, distro lain harusnya sama juga.. upd. 6 april 2008 sore
  200. #`sudo ssh -l root $client_ip 'su - $setting_client_username -c "export SESSION_MANAGER=$(cat /tmp/gnome-session-manager) && gnome-session-save --kill --silent --display=:0.0 -s bios"'`;
  201. #untuk hasil optimal pakai cara ketiga ini khusus untuk ubuntu, distro lain harusnya sama juga.. lebih gesit dari cara kedua. upd. 6 april 2008 sore (perhatikan tanda ' dengan " di awal export itu memberi makna beda. kalo " ga bisa jalan, dan dianggap file /tmp/gnomenya dicari di server bukan di client
  202. `sudo ssh -l $setting_client_username $client_ip 'export SESSION_MANAGER=$(cat /tmp/gnome-session-manager) && gnome-session-save --kill --silent --display=:0.0 -s bios'`;
  203. break;
  204. case 'xfce':
  205. `sudo ssh -l root $client_ip 'su - $setting_client_username -c "xfce4-session-logout --display=:0.0"'`;
  206. break;
  207. }
  208. */
  209. #apabila cara dibawah ini gagal, silahkan uncomment perintah case diatas, dan
  210. #beri comment pada perintah dibawah. - 6 april 2008
  211. `sudo ssh -l root $client_ip skill -u $client_login`;
  212. }
  213. } elseif($moving && $pindah_client_run && $pindah_client_idle)
  214. {
  215. #client idle di start
  216. $data_client_run=mysql_fetch_array(mysql_query("SELECT client_start, client_status, client_desktop, client_login FROM client WHERE client_id=$pindah_client_run"));
  217. $data_client_idle=mysql_fetch_array(mysql_query("SELECT client_status FROM client WHERE client_id=$pindah_client_idle"));
  218. if($data_client_run[client_status]==1 and $data_client_idle[client_status]==0)
  219. {
  220. # men-start client idle
  221. mysql_query("UPDATE client SET client_start='$data_client_run[client_start]',client_status=1 WHERE client_id=$pindah_client_idle");
  222. mysql_query("UPDATE client_status SET client_status_old=1 WHERE client_status_id=$pindah_client_idle");
  223. # me-reset client run
  224. mysql_query("UPDATE client SET client_start=NULL,client_status=0 WHERE client_id=$pindah_client_run");
  225. mysql_query("UPDATE client_status SET client_status_old=0 WHERE client_status_id=$pindah_client_run");
  226. #PERIKSA STATUS CLIENT HIDUP ATAU MATI, VIA PING REPLY
  227. $client_ip=@mysql_result(mysql_query("SELECT client_ip FROM client WHERE client_id=$pindah_client_run"),0);
  228. $client_ping=shell_exec("ping $client_ip -c 1 -s 1 -t 1");
  229. if(eregi('bytes from',$client_ping))
  230. {
  231. /*
  232. switch($data_client_run[client_desktop])
  233. {
  234. case 'kde':
  235. `sudo ssh -l root $client_ip 'su - $setting_client_username -c "env DISPLAY=:0.0 dcop ksmserver default logout 0 0 0"'`;
  236. break;
  237. case 'gnome':
  238. #`sudo ssh -l root $client_ip 'su - $setting_client_username -c "gnome-session-save --kill --silent --display=:0.0 -s bios"'`;
  239. `sudo ssh -l $setting_client_username $client_ip 'export SESSION_MANAGER=$(cat /tmp/gnome-session-manager) && gnome-session-save --kill --silent --display=:0.0 -s bios'`;
  240. break;
  241. case 'xfce':
  242. `sudo ssh -l root $client_ip 'su - $setting_client_username -c "xfce4-session-logout --display=:0.0"'`;
  243. break;
  244. }
  245. */
  246. #apabila cara dibawah ini gagal, silahkan uncomment perintah case diatas, dan
  247. #beri comment pada perintah dibawah. - 6 april 2008
  248. `sudo ssh -l root $client_ip skill -u $data_client_run[client_login]`;
  249. }
  250. }
  251. } elseif($show)
  252. {
  253. $client_ip=@mysql_result(mysql_query("SELECT client_ip FROM client WHERE client_id=$show"),0);
  254. $client_login=@mysql_result(mysql_query("SELECT client_login FROM client WHERE client_id=$show"),0);
  255. $client_name=@mysql_result(mysql_query("SELECT client_name FROM client WHERE client_id=$show"),0);
  256. $result=`sudo ssh -l root $client_ip 'su - $client_login -c "env DISPLAY=:0.0 firefox $client_location"&'`;
  257. echo "<b>$client_name | $client_ip | $result</b> <p>";
  258. } elseif($showall)
  259. {
  260. $data_client=mysql_query("SELECT client_ip, client_name, client_login FROM client WHERE client_id <> 1 ORDER BY client_name ASC");
  261. while($isi_data_client=mysql_fetch_array($data_client))
  262. {
  263. $client_ip=$isi_data_client['client_ip'];
  264. $client_name=$isi_data_client['client_name'];
  265. $client_login=$isi_data_client['client_login'];
  266. $result=`sudo ssh -l root $client_ip 'su - $client_login -c "env DISPLAY=:0.0 firefox $client_location"&'`;
  267. echo "<b>$client_name | $client_ip | $result</b><p>";
  268. flush();
  269. }
  270. } elseif($reboot && (mysql_result(mysql_query("SELECT client_status FROM client WHERE client_id=$reboot"),0) <> 1)) # update 20 september jam 12 siang
  271. {
  272. $client_ip=@mysql_result(mysql_query("SELECT client_ip FROM client WHERE client_id=$reboot"),0);
  273. $client_name=@mysql_result(mysql_query("SELECT client_name FROM client WHERE client_id=$reboot"),0);
  274. #$client_execute=shell_exec("ping $client_ip -c 1");
  275. # PAKELAH SYSTEM, KALO PAKE SHELL_EXEC GA BISA, GA TAU NAPA.., shell_exec kayaknya buat perintah lokal aja kyak ls, ping ,dll
  276. # TERUS KALO PAKE SHELL_EXEC GA USAH PAKE /BIN/PING, TAPI LANGSUNG PING AJA
  277. # JANGAN LUPA PAKE SUDO, TANPA SUDO PERINTAH KAYAK SSH GA BISA. TPI KALO PING, LS MASIH BISA.
  278. # TANPA SUDO HASILNYA NULL
  279. # YANG PERLU DI SET DI /ETC/SUDOERS
  280. # TAMBAHKAN: apache ALL=NOPASSWD:/usr/bin/ssh
  281. # jamin ces pleng :) - solved 20 september 2 subuh --> keren kan catatannya developer nye . hehehe.. dibelain tuh mpe jam 2 subuh..
  282. echo "$client_name | $client_ip | REBOOT: ";
  283. $client_status=0;
  284. mysql_query("UPDATE client SET client_status=$client_status WHERE client_id=$reboot");
  285. #PERIKSA STATUS CLIENT HIDUP ATAU MATI, VIA PING REPLY
  286. $client_ping=shell_exec("ping $client_ip -c 1 -s 1 -t 1");
  287. if(!eregi('bytes from',$client_ping))
  288. {
  289. echo "<b><font color='red'>GAGAL</font> - KOMPUTER CLIENT TIDAK BISA DI-REBOOT.. </b><p>";
  290. } else
  291. {
  292. #dicetak echo dulu soalnya system ini langsung cetak hasil dilayar.., jadi ga usah disimpan di variabel!
  293. echo "<pre>SUKSES - ";
  294. system("sudo ssh -l root $client_ip reboot");
  295. #$client_execute=system("ls -l");
  296. echo "</pre>";
  297. }
  298. #jalanin 2 kali, untuk memastikan db server sudah di reset, kemungkinan bisa terjadi
  299. #db server sudah di reset, namun karena hampir bersamaan client request ke server, akibatnya running lagi
  300. mysql_query("UPDATE client SET client_status=$client_status WHERE client_id=$reboot");
  301. mysql_query("UPDATE client_status SET client_status_old=$client_status WHERE client_status_id=$reboot");
  302. } elseif($poweroff && (mysql_result(mysql_query("SELECT client_status FROM client WHERE client_id=$poweroff"),0) <> 1))
  303. {
  304. $client_ip=@mysql_result(mysql_query("SELECT client_ip FROM client WHERE client_id=$poweroff"),0);
  305. $client_name=@mysql_result(mysql_query("SELECT client_name FROM client WHERE client_id=$poweroff"),0);
  306. echo "$client_name | $client_ip | POWEROFF: ";
  307. $client_status=0;
  308. mysql_query("UPDATE client SET client_status=$client_status WHERE client_id=$poweroff");
  309. mysql_query("UPDATE client_status SET client_status_old=$client_status WHERE client_status_id=$poweroff");
  310. #PERIKSA STATUS CLIENT HIDUP ATAU MATI, VIA PING REPLY
  311. $client_ping=shell_exec("ping $client_ip -c 1 -s 1 -t 1");
  312. if(!eregi('bytes from',$client_ping))
  313. {
  314. echo "<b><font color='red'>GAGAL</font> - KOMPUTER CLIENT TIDAK BISA DI-POWEROFF..</b><p>";
  315. } else
  316. {
  317. echo "<pre>SUKSES - ";
  318. system("sudo ssh -l root $client_ip poweroff");
  319. echo "</pre>";
  320. }
  321. #jalanin 2 kali, untuk memastikan db server sudah di reset, kemungkinan bisa terjadi
  322. #db server sudah di reset, namun karena hampir bersamaan client request ke server, akibatnya running lagi
  323. mysql_query("UPDATE client SET client_status=$client_status WHERE client_id=$poweroff");
  324. } elseif($poweroffall && !(mysql_result(mysql_query("SELECT count(*) FROM client WHERE client_status=1"),0)))
  325. {
  326. $data_client=mysql_query("SELECT client_id, client_ip, client_name FROM client WHERE client_id <> 1 ORDER BY client_name ASC");
  327. while($isi_data_client=mysql_fetch_array($data_client))
  328. {
  329. $client_ip=$isi_data_client['client_ip'];
  330. $client_name=$isi_data_client['client_name'];
  331. $poweroff=$isi_data_client['client_id'];
  332. echo "$client_name | $client_ip | POWEROFF: ";
  333. flush();
  334. $client_status=0;
  335. mysql_query("UPDATE client SET client_status=$client_status WHERE client_id=$poweroff");
  336. mysql_query("UPDATE client_status SET client_status_old=$client_status WHERE client_status_id=$poweroff");
  337. #PERIKSA STATUS CLIENT HIDUP ATAU MATI, VIA PING REPLY
  338. $client_ping=shell_exec("ping $client_ip -c 1 -s 1 -t 1");
  339. if(!eregi('bytes from',$client_ping))
  340. {
  341. echo "<b><font color='red'>GAGAL</font> - KOMPUTER CLIENT TIDAK BISA DI-POWEROFF..</b><p>";
  342. flush();
  343. } else
  344. {
  345. echo "<pre>SUKSES - ";
  346. system("sudo ssh -l root $client_ip poweroff");
  347. echo "</pre>";
  348. flush();
  349. }
  350. #jalanin 2 kali, untuk memastikan db server sudah di reset, kemungkinan bisa terjadi
  351. #db server sudah di reset, namun karena hampir bersamaan client request ke server, akibatnya running lagi
  352. mysql_query("UPDATE client SET client_status=$client_status WHERE client_id=$poweroff");
  353. }
  354. }
  355. ?>
  356. <form method="post" action="<?php echo $operator_file_name?>?uid=<?php echo $uid?>&p=billing&sid=<?php echo $sid?>&moving=1">
  357. <?php
  358. $dump_client_run='';
  359. $dump_client_idle='';
  360. $data_client_run=mysql_query("SELECT client_id, client_name FROM client WHERE client_status=1 AND client_id<> 1 ORDER by client_name ASC");
  361. while($isi_data_client_run=mysql_fetch_array($data_client_run))
  362. {
  363. $dump_client_run .= "<option value='$isi_data_client_run[client_id]'>$isi_data_client_run[client_name]</option>";
  364. }
  365. $data_client_idle=mysql_query("SELECT client_id, client_name FROM client WHERE client_status=0 AND client_id<> 1 ORDER by client_name ASC");
  366. while($isi_data_client_idle=mysql_fetch_array($data_client_idle))
  367. {
  368. $dump_client_idle .= "<option value='$isi_data_client_idle[client_id]'>$isi_data_client_idle[client_name]</option>";
  369. }
  370. ?>
  371. <img src="./img/icon_recycle.png" align="absmiddle"> Pindah kursi Client
  372. <select name="pindah_client_run">
  373. <?php echo $dump_client_run?>
  374. </select>
  375. ke Client
  376. <select name="pindah_client_idle">
  377. <?php echo $dump_client_idle?>
  378. </select>
  379. <input name="submit_pindah_kursi" type="submit" id="submit_pindah_kursi" value="Sekarang!">
  380. | <img src="./img/icon_warning.png" align="absmiddle"><b>Seluruh Client:
  381. <?php
  382. if(!(mysql_result(mysql_query("SELECT count(*) FROM client WHERE client_status=1"),0)))
  383. {?>
  384. <a href="<?php echo $operator_file_name?>?uid=<?php echo $uid?>&p=billing&poweroffall=1&sid=<?php echo $sid?>" onClick="return confirm('YAKIN MATIKAN SEMUA KOMPUTER CLIENT?')">Poweroff</a>
  385. <?php } else
  386. {?>
  387. Poweroff
  388. <?php }?>
  389. | <a href="<?php echo $operator_file_name?>?uid=<?php echo $uid?>&p=billing&showall=1&sid=<?php echo $sid?>" onClick="return confirm('YAKIN PAKSA TAMPILKAN BILLING DI SEMUA KOMPUTER CLIENT?')">Show Billing</a></b>
  390. </form>
  391. <table width="100%" border="0" cellspacing="1" cellpadding="5" bgcolor="#999999">
  392. <tr bgcolor="#DDDDDD">
  393. <td width=125>Command</td>
  394. <td>Client</td>
  395. <td><div align="right">Biaya (Rp.)</div></td>
  396. <td><div align="right">Durasi</div></td>
  397. <td><div align="right">Mulai</div></td>
  398. <td><div align="center">System</div></td>
  399. </tr>
  400. <?php
  401. $data_client=mysql_query("SELECT client_id, client_ip, client_name, client_status, client_start, client_desktop, date_format(client_start,'%H:%i:%s - %d %b %Y') as client_start2, client_end FROM client ORDER BY client_name ASC");
  402. while($isi_data_client=mysql_fetch_array($data_client))
  403. {
  404. extract($isi_data_client,EXTR_OVERWRITE);
  405. $highlight=NULL;
  406. srand((double)microtime()*1000000);
  407. #untuk memastikan, kalau ada set di seting_refresh_tmp maka client_status harusnya 2 / stop
  408. if($setting_refresh_tmp) $client_status=2;
  409. switch($client_status)
  410. {
  411. case 0:
  412. $bgcolor='#EFEFEF';
  413. if($setting_layout=='standard')
  414. {
  415. $image_client="<img src='./img/client_off.png' border=0><br>";
  416. } else
  417. {
  418. $image_client="";
  419. }
  420. $client_name_link="<a href='javascript:void(0);' onclick=\"javascript:popup_win('$screenshot_location?uid=$uid&shot=$client_ip&sid=$sid&done=" . md5(uniqid(rand())) . "','screenshot_$client_id','scrollbars=yes,status=yes,width=" . ($setting_screenshot_width + 30) . ",height=" . ($setting_screenshot_height + 60) . "')\">" . $image_client . "$client_name</a>";
  421. #$cmd="<a href=\"javascript:void(0);\"" . " onClick=\"var answer = confirm('START $client_name ?');if(answer){replace('./function.php?q=getcmd&sid=$_REQUEST[sid]&tipe=stop&start=$client_id','targetDiv')}\">start</a>";
  422. #$cmd="<a href=\"$PHP_SELF" . "uid=$uid&p=billing&start=$client_id&sid=$sid#$client_id\" onClick=\"return confirm('START $client_name ?')\">start</a>";
  423. $cmd="<a href=\"$PHP_SELF" . "uid=$uid&p=billing&start=$client_id&sid=$sid#$client_id\" onClick=\"return confirm('START $client_name ?')\"><img src='./img/icon_start.png' border=0 title='Start'></a>";
  424. #$client_system="<a href=\"$PHP_SELF" . "uid=$uid&p=billing&poweroff=$client_id&sid=$sid#status\" onClick=\"return confirm('Anda yakin ingin me-MATIKAN $client_name ?')\">poweroff</a> - <a href=\"$PHP_SELF" . "uid=$uid&p=billing&reboot=$client_id&sid=$sid#status\" onClick=\"return confirm('Anda yakin ingin me-RESTART $client_name ?')\">reboot</a> - <a href=\"$PHP_SELF" . "uid=$uid&p=billing&show=$client_id&sid=$sid#$client_id\" onClick=\"return confirm('Tampilkan Billing pada $client_name ?')\">show</a>";
  425. $client_system="<a href=\"$PHP_SELF" . "uid=$uid&p=billing&poweroff=$client_id&sid=$sid#status\" onClick=\"return confirm('Anda yakin ingin me-MATIKAN $client_name ?')\"><img src='./img/icon_power.png' border=0 title='Poweroff'></a> <a href=\"$PHP_SELF" . "uid=$uid&p=billing&reboot=$client_id&sid=$sid#status\" onClick=\"return confirm('Anda yakin ingin me-RESTART $client_name ?')\"><img src='./img/icon_reboot.png' border=0 title='Reboot'></a> <a href=\"$PHP_SELF" . "uid=$uid&p=billing&show=$client_id&sid=$sid#$client_id\" onClick=\"return confirm('Tampilkan Billing pada $client_name ?')\"><img src='./img/icon_show.png' border=0 title='Show'></a>";
  426. if($client_id ==1) $client_system = '';
  427. break;
  428. case 1:
  429. $bgcolor='#F7FEC2';
  430. if($setting_layout=='standard')
  431. {
  432. $image_client="<img src='./img/client_run.png' border=0><br>";
  433. } else
  434. {
  435. $image_client="";
  436. }
  437. $client_name_link="<a href='javascript:void(0);' onclick=\"javascript:popup_win('$screenshot_location?uid=$uid&shot=$client_ip&sid=$sid&done=" . md5(uniqid(rand())) . "','screenshot_$client_id','scrollbars=yes,status=yes,width=" . ($setting_screenshot_width + 60) . ",height=" . ($setting_screenshot_height + 30) . "')\">" . $image_client . "$client_name</a>";
  438. #$cmd="<a href=\"$PHP_SELF" . "uid=$uid&p=billing&stop=$client_id&sid=$sid#$client_id\" onClick=\"return confirm('STOP $client_name ?')\">stop</a>";
  439. $cmd="<a href=\"$PHP_SELF" . "uid=$uid&p=billing&stop=$client_id&sid=$sid#$client_id\" onClick=\"return confirm('STOP $client_name ?')\"><img src='./img/icon_stop.png' border=0 title='Stop'></a>";
  440. $client_system="<img src='./img/icon_power_gray.png' border=0 title='Poweroff'> <img src='./img/icon_reboot_gray.png' border=0 title='Reboot'> <a href=\"$PHP_SELF" . "uid=$uid&p=billing&show=$client_id&sid=$sid#$client_id\" onClick=\"return confirm('Tampilkan Billing pada $client_name ?')\"><img src='./img/icon_show.png' border=0 title='Show'></a>";
  441. if($client_id ==1) $client_system = '';
  442. break;
  443. case 2:
  444. $bgcolor='#FFFFFF';
  445. if($setting_layout=='standard')
  446. {
  447. $image_client="<img src='./img/client_stop.png' border=0><br>";
  448. } else
  449. {
  450. $image_client="";
  451. }
  452. $client_name_link="<a href='javascript:void(0);' onclick=\"javascript:popup_win('$screenshot_location?uid=$uid&shot=$client_ip&sid=$sid','screenshot_$client_id','scrollbars=yes,status=yes,width=" . ($setting_screenshot_width + 30) . ",height=" . ($setting_screenshot_height + 60) . "')\">" . $image_client . "$client_name</a>";
  453. $lapid=mysql_result(mysql_query("SELECT laporan_id FROM laporan WHERE laporan_client=$client_id AND laporan_start='$client_start' AND laporan_end='$client_end'"),0);
  454. $cmd="<a href=\"$PHP_SELF" . "uid=$uid&p=billing&reset=$client_id&sid=$sid#$client_id\" onClick=\"return confirm('RESET $client_name ?')\"><img src='./img/icon_reset.png' border=0 title='Reset'></a> <a href='javascript:void(0);' onclick=\"popup_win('$print_bill_location?uid=$uid&lapid=$lapid&sid=$sid','bill_$client_id','scrollbars=yes,status=yes,width=" . "300" . ",height=" . "400" . "')\"><img src='./img/icon_print.png' border=0 title='Print Nota'></a> <a href='javascript:void(0);' onclick=\"popup_win('$print_product_location?uid=$uid&lapid=$lapid&sid=$sid','product_$client_id','scrollbars=yes,status=yes,width=" . "600" . ",height=" . "400" . "')\"><img src='./img/icon_tambah.png' border=0 title='Tambah Pembelian'></a>";
  455. $highlight="bgcolor=\"#FFFF00\"";
  456. $client_system="<a href=\"$PHP_SELF" . "uid=$uid&p=billing&poweroff=$client_id&sid=$sid#status\" onClick=\"return confirm('Anda yakin ingin me-MATIKAN $client_name ?')\"><img src='./img/icon_power.png' border=0 title='Poweroff'></a> <a href=\"$PHP_SELF" . "uid=$uid&p=billing&reboot=$client_id&sid=$sid#status\" onClick=\"return confirm('Anda yakin ingin me-RESTART $client_name ?')\"><img src='./img/icon_reboot.png' border=0 title='Reboot'></a> <a href=\"$PHP_SELF" . "uid=$uid&p=billing&show=$client_id&sid=$sid#$client_id\" onClick=\"return confirm('Tampilkan Billing pada $client_name ?')\"><img src='./img/icon_show.png' border=0 title='Show'></a>";
  457. if($client_id ==1) $client_system = '';
  458. break;
  459. }
  460. if($setting_layout=='standard' && $client_id <> 1)
  461. {
  462. $image_desktop="<img src='./img/client/client_distro_" . $client_desktop . ".png'>";
  463. } else
  464. {
  465. $image_desktop="";
  466. }
  467. flush();
  468. if($setting_screenshot_status <> 1) $client_name_link = $image_client . $client_name;
  469. if($client_id ==1) $client_name_link = $client_name;
  470. ?>
  471. <tr bgcolor="<?php echo $bgcolor?>">
  472. <td><?php echo $cmd?></td>
  473. <td align="center" <?php echo $highlight?>><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td><?php echo $client_name_link?></td><td width="25" valign="top"><a name="<?php echo $client_id?>"><?php echo $image_desktop?></td></tr></table></td>
  474. <td align="right" <?php echo $highlight?>><div id="<?php echo 'price'.$client_id?>">
  475. <?php
  476. if($client_start && $client_status > 0)
  477. {
  478. //echo number_format($setting_minimum_price,0, ",",".");
  479. echo "";
  480. } else
  481. {
  482. echo "";
  483. }
  484. ?>
  485. </div></td>
  486. <td align="right"><div id="<?php echo 'client'.$client_id?>">&nbsp;</div></td>
  487. <td align="right"><?php if($client_start && $client_status > 0) echo $client_start2?></td>
  488. <td align="center"><?php echo $client_system?></td>
  489. <?php
  490. }
  491. ?>
  492. </table>
  493. <script type="text/javascript">
  494. <!-- panggil rutin penghitungan billing!
  495. setTimeout('showTime()', <?php echo $setting_refresh*1000?>);
  496. //-->
  497. </script>
  498. <form action="<?php echo $operator_file_name?>?uid=<?php echo $uid?>&p=billing&sid=<?php echo $sid?>" method="post">
  499. <div align="right"><br>
  500. layout :
  501. <select name="setting_layouts" id="setting_layouts">
  502. <option value="standard" <?php if($setting_layout=='standard') echo 'selected'?>>Standard</option>
  503. <option value="simple" <?php if($setting_layout=='simple') echo 'selected'?>>Simple</option>
  504. </select>
  505. <input name="submit_layout" type="submit" id="submit_layout" value="Update!">
  506. </div>
  507. </form>
  508. <?php
  509. if($done)
  510. {
  511. mysql_query("UPDATE setting SET setting_refresh_tmp=NULL");
  512. }
  513. ?>