BaseController.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Models\SsConfig;
  4. /**
  5. * 基础控制器
  6. * Class BaseController
  7. * @package App\Http\Controllers
  8. */
  9. class BaseController extends Controller
  10. {
  11. // 生成SS密码
  12. public function makeRandStr($length = 4)
  13. {
  14. // 密码字符集,可任意添加你需要的字符
  15. $chars = 'abcdefghijkmnpqrstuvwxyz23456789';
  16. $char = '@';
  17. for ($i = 0; $i < $length; $i++) {
  18. $char .= $chars[mt_rand(0, strlen($chars) - 1)];
  19. }
  20. return $char;
  21. }
  22. // base64加密(处理URL)
  23. function base64url_encode($data)
  24. {
  25. return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
  26. }
  27. // base64解密(处理URL)
  28. function base64url_decode($data)
  29. {
  30. return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT));
  31. }
  32. // 根据流量值自动转换单位输出
  33. public static function flowAutoShow($value = 0)
  34. {
  35. $kb = 1024;
  36. $mb = 1048576;
  37. $gb = 1073741824;
  38. if (abs($value) > $gb) {
  39. return round($value / $gb, 2) . "GB";
  40. } else if (abs($value) > $mb) {
  41. return round($value / $mb, 2) . "MB";
  42. } else if (abs($value) > $kb) {
  43. return round($value / $kb, 2) . "KB";
  44. } else {
  45. return round($value, 2);
  46. }
  47. }
  48. public static function toMB($traffic)
  49. {
  50. $mb = 1048576;
  51. return $traffic * $mb;
  52. }
  53. public static function toGB($traffic)
  54. {
  55. $gb = 1048576 * 1024;
  56. return $traffic * $gb;
  57. }
  58. public static function flowToGB($traffic)
  59. {
  60. $gb = 1048576 * 1024;
  61. return $traffic / $gb;
  62. }
  63. // 加密方式
  64. public function methodList()
  65. {
  66. return SsConfig::where('type', 1)->get();
  67. }
  68. // 协议
  69. public function protocolList()
  70. {
  71. return SsConfig::where('type', 2)->get();
  72. }
  73. // 混淆
  74. public function obfsList()
  75. {
  76. return SsConfig::where('type', 3)->get();
  77. }
  78. }