index.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. error_reporting(0);
  3. putenv('GDFONTPATH=' . realpath('.'));
  4. $SCALE=1.25;
  5. $WIDTH=530*$SCALE;
  6. $HEIGHT=150*$SCALE;
  7. $im=imagecreatetruecolor($WIDTH,$HEIGHT);
  8. $BACKGROUND_COLOR=imagecolorallocate($im,248,248,248);
  9. $FONT_1="OpenSans-Semibold";
  10. $FONT_1_SIZE=16*$SCALE;
  11. $FONT_2="OpenSans-Light";
  12. $FONT_2_SIZE=24*$SCALE;
  13. $FONT_3="OpenSans-Semibold";
  14. $FONT_3_SIZE=14*$SCALE;
  15. $FONT_4="OpenSans-Semibold";
  16. $FONT_4_SIZE=10*$SCALE;
  17. $FONT_WATERMARK="OpenSans-Light";
  18. $FONT_WATERMARK_SIZE=8*$SCALE;
  19. $TEXT_COLOR_1=imagecolorallocate($im,40,40,40);
  20. $TEXT_COLOR_2=imagecolorallocate($im,96,96,96);
  21. $TEXT_COLOR_3=imagecolorallocate($im,40,40,40);
  22. $TEXT_COLOR_4=imagecolorallocate($im,40,40,40);
  23. $TEXT_COLOR_WATERMARK=imagecolorallocate($im,160,160,160);
  24. $POSITION_Y_1=24*$SCALE;
  25. $POSITION_Y_2=78*$SCALE;
  26. $POSITION_Y_3=118*$SCALE;
  27. $POSITION_Y_4=146*$SCALE;
  28. $POSITION_Y_WATERMARK=146*$SCALE;
  29. $POSITION_X_DL=68*$SCALE;
  30. $POSITION_X_UL=200*$SCALE;
  31. $POSITION_X_PING=330*$SCALE;
  32. $POSITION_X_JIT=460*$SCALE;
  33. $POSITION_X_ISP=4*$SCALE;
  34. $DL_TEXT="Download";
  35. $UL_TEXT="Upload";
  36. $PING_TEXT="Ping";
  37. $JIT_TEXT="Jitter";
  38. $MBPS_TEXT="Mbps";
  39. $MS_TEXT="ms";
  40. $WATERMARK_TEXT="HTML5 Speedtest";
  41. $id=$_GET["id"];
  42. include_once('../telemetry/telemetry_settings.php');
  43. $conn=null; $q=null;
  44. $ispinfo=null; $dl=null; $ul=null; $ping=null; $jit=null;
  45. if($db_type=="mysql"){
  46. $conn = new mysqli($MySql_hostname, $MySql_username, $MySql_password, $MySql_databasename);
  47. $q = $conn->prepare("select ispinfo,dl,ul,ping,jitter from speedtest_users where id=?");
  48. $q->bind_param("i",$id);
  49. $q->execute();
  50. $q->bind_result($ispinfo,$dl,$ul,$ping,$jit);
  51. $q->fetch();
  52. }else if($db_type=="sqlite"){
  53. $conn = new PDO("sqlite:$Sqlite_db_file") or die();
  54. $q=$conn->prepare("select ispinfo,dl,ul,ping,jitter from speedtest_users where id=?") or die();
  55. $q->execute(array($id)) or die();
  56. $row=$q->fetch() or die();
  57. $ispinfo=$row["ispinfo"];
  58. $dl=$row["dl"];
  59. $ul=$row["ul"];
  60. $ping=$row["ping"];
  61. $jitter=$row["jitter"];
  62. $conn=null;
  63. }else if($db_type=="postgresql"){
  64. $conn_host = "host=$PostgreSql_hostname";
  65. $conn_db = "dbname=$PostgreSql_databasename";
  66. $conn_user = "user=$PostgreSql_username";
  67. $conn_password = "password=$PostgreSql_password";
  68. $conn = new PDO("pgsql:$conn_host;$conn_db;$conn_user;$conn_password") or die();
  69. $q=$conn->prepare("select ispinfo,dl,ul,ping,jitter from speedtest_users where id=?") or die();
  70. $q->execute(array($id)) or die();
  71. $row=$q->fetch() or die();
  72. $ispinfo=$row["ispinfo"];
  73. $dl=$row["dl"];
  74. $ul=$row["ul"];
  75. $ping=$row["ping"];
  76. $jitter=$row["jitter"];
  77. $conn=null;
  78. }else die();
  79. $ispinfo=json_decode($ispinfo,true)["processedString"];
  80. $dash=strrpos($ispinfo,"-");
  81. if(!($dash===FALSE)){
  82. $ispinfo=substr($ispinfo,$dash+2);
  83. $par=strrpos($ispinfo,"(");
  84. if(!($par===FALSE)) $ispinfo=substr($ispinfo,0,$par);
  85. }else $ispinfo="";
  86. $dlBbox=imageftbbox($FONT_1_SIZE,0,$FONT_1,$DL_TEXT);
  87. $ulBbox=imageftbbox($FONT_1_SIZE,0,$FONT_1,$UL_TEXT);
  88. $pingBbox=imageftbbox($FONT_1_SIZE,0,$FONT_1,$PING_TEXT);
  89. $jitBbox=imageftbbox($FONT_1_SIZE,0,$FONT_1,$JIT_TEXT);
  90. $dlMeterBbox=imageftbbox($FONT_2_SIZE,0,$FONT_2,$dl);
  91. $ulMeterBbox=imageftbbox($FONT_2_SIZE,0,$FONT_2,$ul);
  92. $pingMeterBbox=imageftbbox($FONT_2_SIZE,0,$FONT_2,$ping);
  93. $jitMeterBbox=imageftbbox($FONT_2_SIZE,0,$FONT_2,$jit);
  94. $mbpsBbox=imageftbbox($FONT_3_SIZE,0,$FONT_3,$MBPS_TEXT);
  95. $msBbox=imageftbbox($FONT_3_SIZE,0,$FONT_3,$MS_TEXT);
  96. $watermarkBbox=imageftbbox($FONT_WATERMARK_SIZE,0,$FONT_WATERMARK,$WATERMARK_TEXT);
  97. $POSITION_X_WATERMARK=$WIDTH-$watermarkBbox[4]-4*$SCALE;
  98. imagefilledrectangle($im, 0, 0, $WIDTH, $HEIGHT, $BACKGROUND_COLOR);
  99. imagefttext($im,$FONT_1_SIZE,0,$POSITION_X_DL-$dlBbox[4]/2,$POSITION_Y_1,$TEXT_COLOR_1,$FONT_1,$DL_TEXT);
  100. imagefttext($im,$FONT_1_SIZE,0,$POSITION_X_UL-$ulBbox[4]/2,$POSITION_Y_1,$TEXT_COLOR_1,$FONT_1,$UL_TEXT);
  101. imagefttext($im,$FONT_1_SIZE,0,$POSITION_X_PING-$pingBbox[4]/2,$POSITION_Y_1,$TEXT_COLOR_1,$FONT_1,$PING_TEXT);
  102. imagefttext($im,$FONT_1_SIZE,0,$POSITION_X_JIT-$jitBbox[4]/2,$POSITION_Y_1,$TEXT_COLOR_1,$FONT_1,$JIT_TEXT);
  103. imagefttext($im,$FONT_2_SIZE,0,$POSITION_X_DL-$dlMeterBbox[4]/2,$POSITION_Y_2,$TEXT_COLOR_2,$FONT_2,$dl);
  104. imagefttext($im,$FONT_2_SIZE,0,$POSITION_X_UL-$ulMeterBbox[4]/2,$POSITION_Y_2,$TEXT_COLOR_2,$FONT_2,$ul);
  105. imagefttext($im,$FONT_2_SIZE,0,$POSITION_X_PING-$pingMeterBbox[4]/2,$POSITION_Y_2,$TEXT_COLOR_2,$FONT_2,$ping);
  106. imagefttext($im,$FONT_2_SIZE,0,$POSITION_X_JIT-$jitMeterBbox[4]/2,$POSITION_Y_2,$TEXT_COLOR_2,$FONT_2,$jit);
  107. imagefttext($im,$FONT_3_SIZE,0,$POSITION_X_DL-$mbpsBbox[4]/2,$POSITION_Y_3,$TEXT_COLOR_3,$FONT_3,$MBPS_TEXT);
  108. imagefttext($im,$FONT_3_SIZE,0,$POSITION_X_UL-$mbpsBbox[4]/2,$POSITION_Y_3,$TEXT_COLOR_3,$FONT_3,$MBPS_TEXT);
  109. imagefttext($im,$FONT_3_SIZE,0,$POSITION_X_PING-$msBbox[4]/2,$POSITION_Y_3,$TEXT_COLOR_3,$FONT_3,$MS_TEXT);
  110. imagefttext($im,$FONT_3_SIZE,0,$POSITION_X_JIT-$msBbox[4]/2,$POSITION_Y_3,$TEXT_COLOR_3,$FONT_3,$MS_TEXT);
  111. imagefttext($im,$FONT_4_SIZE,0,$POSITION_X_ISP,$POSITION_Y_4,$TEXT_COLOR_4,$FONT_4,$ispinfo);
  112. imagefttext($im,$FONT_WATERMARK_SIZE,0,$POSITION_X_WATERMARK,$POSITION_Y_WATERMARK,$TEXT_COLOR_WATERMARK,$FONT_WATERMARK,$WATERMARK_TEXT);
  113. header('Content-Type: image/png');
  114. imagepng($im);
  115. imagedestroy($im);
  116. ?>