Explorar o código

refactor: tree and app boot (!!!need manual operation!!!)
Run "composer dump-autoload" to generate a new autoload.php.

SakuraSa233 %!s(int64=5) %!d(string=hai) anos
pai
achega
2e973442fa
Modificáronse 100 ficheiros con 625 adicións e 630 borrados
  1. 41 0
      app/container.php
  2. 8 0
      app/middleware.php
  3. 8 0
      app/predefine.php
  4. 337 0
      app/routes.php
  5. 0 28
      bootstrap.php
  6. 1 1
      composer.json
  7. 0 379
      config/routes.php
  8. 27 6
      public/index.php
  9. 0 0
      src/Command/DailyMail.php
  10. 0 0
      src/Command/ExtMail.php
  11. 0 0
      src/Command/FinanceMail.php
  12. 0 0
      src/Command/Job.php
  13. 0 0
      src/Command/SyncRadius.php
  14. 0 0
      src/Command/Update.php
  15. 0 0
      src/Command/XCat.php
  16. 0 0
      src/Controllers/Admin/AnnController.php
  17. 0 0
      src/Controllers/Admin/AutoController.php
  18. 0 0
      src/Controllers/Admin/CodeController.php
  19. 0 0
      src/Controllers/Admin/DetectController.php
  20. 0 0
      src/Controllers/Admin/IpController.php
  21. 0 0
      src/Controllers/Admin/NodeController.php
  22. 0 0
      src/Controllers/Admin/RelayController.php
  23. 0 0
      src/Controllers/Admin/ShopController.php
  24. 0 0
      src/Controllers/Admin/TicketController.php
  25. 0 0
      src/Controllers/Admin/UserController.php
  26. 0 0
      src/Controllers/AdminController.php
  27. 0 0
      src/Controllers/AuthController.php
  28. 0 0
      src/Controllers/BaseController.php
  29. 0 0
      src/Controllers/HomeController.php
  30. 0 0
      src/Controllers/LinkController.php
  31. 0 0
      src/Controllers/Mod_Mu/FuncController.php
  32. 0 0
      src/Controllers/Mod_Mu/NodeController.php
  33. 14 27
      src/Controllers/Mod_Mu/UserController.php
  34. 0 0
      src/Controllers/PasswordController.php
  35. 0 0
      src/Controllers/RelayController.php
  36. 0 0
      src/Controllers/ResController.php
  37. 0 0
      src/Controllers/UserController.php
  38. 0 0
      src/Controllers/VueController.php
  39. 0 0
      src/Middleware/Admin.php
  40. 0 0
      src/Middleware/Auth.php
  41. 0 0
      src/Middleware/Guest.php
  42. 0 0
      src/Middleware/Mod_Mu.php
  43. 0 0
      src/Models/Ann.php
  44. 0 0
      src/Models/Auto.php
  45. 0 0
      src/Models/BlockIp.php
  46. 0 0
      src/Models/Bought.php
  47. 0 0
      src/Models/CheckInLog.php
  48. 0 0
      src/Models/Code.php
  49. 0 0
      src/Models/Config.php
  50. 0 0
      src/Models/Coupon.php
  51. 0 0
      src/Models/DetectLog.php
  52. 0 0
      src/Models/DetectRule.php
  53. 0 0
      src/Models/Disconnect.php
  54. 0 0
      src/Models/EmailVerify.php
  55. 0 0
      src/Models/InviteCode.php
  56. 0 0
      src/Models/Ip.php
  57. 0 0
      src/Models/Link.php
  58. 0 0
      src/Models/LoginIp.php
  59. 0 0
      src/Models/Model.php
  60. 0 0
      src/Models/Node.php
  61. 0 0
      src/Models/NodeInfoLog.php
  62. 0 0
      src/Models/NodeOnlineLog.php
  63. 0 0
      src/Models/PasswordReset.php
  64. 0 0
      src/Models/Payback.php
  65. 0 0
      src/Models/Paylist.php
  66. 0 0
      src/Models/RadiusBan.php
  67. 0 0
      src/Models/RadiusNas.php
  68. 0 0
      src/Models/RadiusRadAcct.php
  69. 0 0
      src/Models/RadiusRadCheck.php
  70. 0 0
      src/Models/RadiusRadPostauth.php
  71. 0 0
      src/Models/RadiusRadUserGroup.php
  72. 0 0
      src/Models/Relay.php
  73. 0 0
      src/Models/Role.php
  74. 0 0
      src/Models/Shop.php
  75. 0 0
      src/Models/Speedtest.php
  76. 0 0
      src/Models/TelegramSession.php
  77. 0 0
      src/Models/Ticket.php
  78. 0 0
      src/Models/Token.php
  79. 0 0
      src/Models/TrafficLog.php
  80. 0 0
      src/Models/UnblockIp.php
  81. 0 0
      src/Models/User.php
  82. 0 0
      src/Services/Analytic.php
  83. 0 0
      src/Services/Analytics.php
  84. 0 0
      src/Services/Auth.php
  85. 0 0
      src/Services/Auth/Base.php
  86. 0 0
      src/Services/Auth/Cookie.php
  87. 0 0
      src/Services/Auth/JwtToken.php
  88. 0 0
      src/Services/Auth/Redis.php
  89. 0 0
      src/Services/Aws/Client.php
  90. 0 0
      src/Services/Aws/Factory.php
  91. 0 0
      src/Services/BitPayment.php
  92. 0 0
      src/Services/Boot.php
  93. 0 0
      src/Services/Config.php
  94. 0 0
      src/Services/Factory.php
  95. 0 0
      src/Services/Gateway/AbstractPayment.php
  96. 0 0
      src/Services/Gateway/AopF2F.php
  97. 0 0
      src/Services/Gateway/BitPay.php
  98. 0 0
      src/Services/Gateway/ChenPay.php
  99. 0 0
      src/Services/Gateway/Codepay.php
  100. 189 189
      src/Services/Gateway/PAYJS.php

+ 41 - 0
app/container.php

@@ -0,0 +1,41 @@
+<?php
+declare(strict_types=1);
+
+use Slim\Container;
+
+/**
+ * Container Builder
+ *
+ * @return Container
+ */
+
+$configuration = [
+    'settings' => [
+        'debug' => DEBUG,
+        'whoops.editor' => 'sublime',
+        'displayErrorDetails' => DEBUG,
+    ]
+];
+$container = new Container($configuration);
+
+$container['notFoundHandler'] = static function ($c) {
+    return static function ($request, $response) use ($c) {
+        return $response->withAddedHeader('Location', '/404');
+    };
+};
+
+$container['notAllowedHandler'] = static function ($c) {
+    return static function ($request, $response, $methods) use ($c) {
+        return $response->withAddedHeader('Location', '/405');
+    };
+};
+
+if (DEBUG === false) {
+    $container['errorHandler'] = static function ($c) {
+        return static function ($request, $response, $exception) use ($c) {
+            return $response->withAddedHeader('Location', '/500');
+        };
+    };
+}
+
+return $container;

+ 8 - 0
app/middleware.php

@@ -0,0 +1,8 @@
+<?php
+declare(strict_types=1);
+
+use Slim\App;
+
+return function (App $app) {
+    $app->add(new Zeuxisoo\Whoops\Provider\Slim\WhoopsMiddleware());
+};

+ 8 - 0
app/predefine.php

@@ -0,0 +1,8 @@
+<?php
+declare(strict_types=1);
+/**
+ * To define global variable
+ */
+
+define('BASE_PATH', __DIR__ . '/..');
+define('VERSION', '20180419');

+ 337 - 0
app/routes.php

@@ -0,0 +1,337 @@
+<?php
+declare(strict_types=1);
+
+use Slim\App as SlimApp;
+use App\Middleware\Auth;
+use App\Middleware\Guest;
+use App\Middleware\Admin;
+use App\Middleware\Mod_Mu;
+
+return function (SlimApp $app) {
+    // Home
+    $app->post('/spay_back', App\Services\Payment::class . ':notify');
+    $app->get('/spay_back', App\Services\Payment::class . ':notify');
+    $app->get('/', App\Controllers\HomeController::class . ':index');
+    $app->get('/indexold', App\Controllers\HomeController::class . ':indexold');
+    $app->get('/404', App\Controllers\HomeController::class . ':page404');
+    $app->get('/405', App\Controllers\HomeController::class . ':page405');
+    $app->get('/500', App\Controllers\HomeController::class . ':page500');
+    $app->post('/notify', App\Controllers\HomeController::class . ':notify');
+    $app->get('/tos', App\Controllers\HomeController::class . ':tos');
+    $app->get('/staff', App\Controllers\HomeController::class . ':staff');
+    $app->post('/telegram_callback', App\Controllers\HomeController::class . ':telegram');
+    $app->post('/tomato_back/{type}', App\Services\Payment::class . ':notify');
+    $app->get('/tomato_back/{type}', App\Services\Payment::class . ':notify');
+
+    // User Center
+    $app->group('/user', function () {
+        $this->get('', App\Controllers\UserController::class . ':index');
+        $this->get('/', App\Controllers\UserController::class . ':index');
+        $this->post('/checkin', App\Controllers\UserController::class . ':doCheckin');
+        $this->get('/node', App\Controllers\UserController::class . ':node');
+        $this->get('/tutorial', App\Controllers\UserController::class . ':tutorial');
+        $this->get('/announcement', App\Controllers\UserController::class . ':announcement');
+        $this->get('/donate', App\Controllers\UserController::class . ':donate');
+        $this->get('/lookingglass', App\Controllers\UserController::class . ':lookingglass');
+        $this->get('/node/{id}', App\Controllers\UserController::class . ':nodeInfo');
+        $this->get('/node/{id}/ajax', App\Controllers\UserController::class . ':nodeAjax');
+        $this->get('/profile', App\Controllers\UserController::class . ':profile');
+        $this->get('/invite', App\Controllers\UserController::class . ':invite');
+
+        $this->get('/detect', App\Controllers\UserController::class . ':detect_index');
+        $this->get('/detect/log', App\Controllers\UserController::class . ':detect_log');
+
+        $this->get('/disable', App\Controllers\UserController::class . ':disable');
+
+        $this->get('/shop', App\Controllers\UserController::class . ':shop');
+        $this->post('/coupon_check', App\Controllers\UserController::class . ':CouponCheck');
+        $this->post('/buy', App\Controllers\UserController::class . ':buy');
+
+        // Relay Mange
+        $this->get('/relay', App\Controllers\RelayController::class . ':index');
+        $this->get('/relay/create', App\Controllers\RelayController::class . ':create');
+        $this->post('/relay', App\Controllers\RelayController::class . ':add');
+        $this->get('/relay/{id}/edit', App\Controllers\RelayController::class . ':edit');
+        $this->put('/relay/{id}', App\Controllers\RelayController::class . ':update');
+        $this->delete('/relay', App\Controllers\RelayController::class . ':delete');
+
+        $this->get('/ticket', App\Controllers\UserController::class . ':ticket');
+        $this->get('/ticket/create', App\Controllers\UserController::class . ':ticket_create');
+        $this->post('/ticket', App\Controllers\UserController::class . ':ticket_add');
+        $this->get('/ticket/{id}/view', App\Controllers\UserController::class . ':ticket_view');
+        $this->put('/ticket/{id}', App\Controllers\UserController::class . ':ticket_update');
+
+        $this->post('/buy_invite', App\Controllers\UserController::class . ':buyInvite');
+        $this->post('/custom_invite', App\Controllers\UserController::class . ':customInvite');
+        $this->get('/edit', App\Controllers\UserController::class . ':edit');
+        $this->post('/password', App\Controllers\UserController::class . ':updatePassword');
+        $this->post('/wechat', App\Controllers\UserController::class . ':updateWechat');
+        $this->post('/ssr', App\Controllers\UserController::class . ':updateSSR');
+        $this->post('/theme', App\Controllers\UserController::class . ':updateTheme');
+        $this->post('/mail', App\Controllers\UserController::class . ':updateMail');
+        $this->post('/sspwd', App\Controllers\UserController::class . ':updateSsPwd');
+        $this->post('/method', App\Controllers\UserController::class . ':updateMethod');
+        $this->post('/hide', App\Controllers\UserController::class . ':updateHide');
+        $this->get('/sys', App\Controllers\UserController::class . ':sys');
+        $this->get('/trafficlog', App\Controllers\UserController::class . ':trafficLog');
+        $this->get('/kill', App\Controllers\UserController::class . ':kill');
+        $this->post('/kill', App\Controllers\UserController::class . ':handleKill');
+        $this->get('/logout', App\Controllers\UserController::class . ':logout');
+        $this->get('/backtoadmin', App\Controllers\UserController::class . ':backtoadmin');
+        $this->get('/code', App\Controllers\UserController::class . ':code');
+        $this->get('/alipay', App\Controllers\UserController::class . ':alipay');
+        $this->post('/code/f2fpay', App\Services\Payment::class . ':purchase');
+        $this->get('/code/codepay', App\Services\Payment::class . ':purchase');
+        $this->get('/code_check', App\Controllers\UserController::class . ':code_check');
+        $this->post('/code', App\Controllers\UserController::class . ':codepost');
+        $this->post('/gacheck', App\Controllers\UserController::class . ':GaCheck');
+        $this->post('/gaset', App\Controllers\UserController::class . ':GaSet');
+        $this->get('/gareset', App\Controllers\UserController::class . ':GaReset');
+        $this->get('/telegram_reset', App\Controllers\UserController::class . ':telegram_reset');
+        $this->post('/resetport', App\Controllers\UserController::class . ':ResetPort');
+        $this->post('/specifyport', App\Controllers\UserController::class . ':SpecifyPort');
+        $this->post('/pacset', App\Controllers\UserController::class . ':PacSet');
+        $this->post('/unblock', App\Controllers\UserController::class . ':Unblock');
+        $this->get('/bought', App\Controllers\UserController::class . ':bought');
+        $this->delete('/bought', App\Controllers\UserController::class . ':deleteBoughtGet');
+
+        $this->get('/url_reset', App\Controllers\UserController::class . ':resetURL');
+
+        $this->get('/inviteurl_reset', App\Controllers\UserController::class . ':resetInviteURL');
+
+        //Reconstructed Payment System
+        $this->post('/payment/purchase', App\Services\Payment::class . ':purchase');
+        $this->get('/payment/return', App\Services\Payment::class . ':returnHTML');
+
+        // Crypto Payment - BTC, ETH, EOS, BCH, LTC etch
+        $this->post('/payment/bitpay/purchase', App\Services\BitPayment::class . ':purchase');
+        $this->get('/payment/bitpay/return', App\Services\BitPayment::class . ':returnHTML');
+
+        // getPcClient
+        $this->get('/getPcClient', App\Controllers\UserController::class . ':getPcClient');
+    })->add(new Auth());
+
+    $app->group('/payment', function () {
+        $this->get('/notify', App\Services\Payment::class . ':notify');
+        $this->post('/notify', App\Services\Payment::class . ':notify');
+        $this->post('/notify/{type}', App\Services\Payment::class . ':notify');
+        $this->post('/status', App\Services\Payment::class . ':getStatus');
+
+        $this->post('/bitpay/notify', App\Services\BitPayment::class . ':notify');
+        $this->post('/bitpay/status', App\Services\BitPayment::class . ':getStatus');
+    });
+
+    // Auth
+    $app->group('/auth', function () {
+        $this->get('/login', App\Controllers\AuthController::class . ':login');
+        $this->post('/qrcode_check', App\Controllers\AuthController::class . ':qrcode_check');
+        $this->post('/login', App\Controllers\AuthController::class . ':loginHandle');
+        $this->post('/qrcode_login', App\Controllers\AuthController::class . ':qrcode_loginHandle');
+        $this->get('/register', App\Controllers\AuthController::class . ':register');
+        $this->post('/register', App\Controllers\AuthController::class . ':registerHandle');
+        $this->post('/send', App\Controllers\AuthController::class . ':sendVerify');
+        $this->get('/logout', App\Controllers\AuthController::class . ':logout');
+        $this->get('/telegram_oauth', App\Controllers\AuthController::class . ':telegram_oauth');
+        $this->get('/login_getCaptcha', App\Controllers\AuthController::class . ':getCaptcha');
+    })->add(new Guest());
+
+    // Password
+    $app->group('/password', function () {
+        $this->get('/reset', App\Controllers\PasswordController::class . ':reset');
+        $this->post('/reset', App\Controllers\PasswordController::class . ':handleReset');
+        $this->get('/token/{token}', App\Controllers\PasswordController::class . ':token');
+        $this->post('/token/{token}', App\Controllers\PasswordController::class . ':handleToken');
+    })->add(new Guest());
+
+    // Admin
+    $app->group('/admin', function () {
+        $this->get('', App\Controllers\AdminController::class . ':index');
+        $this->get('/', App\Controllers\AdminController::class . ':index');
+
+        $this->get('/trafficlog', App\Controllers\AdminController::class . ':trafficLog');
+        $this->post('/trafficlog/ajax', App\Controllers\AdminController::class . ':ajax_trafficLog');
+        // Node Mange
+        $this->get('/node', App\Controllers\Admin\NodeController::class . ':index');
+
+        $this->get('/node/create', App\Controllers\Admin\NodeController::class . ':create');
+        $this->post('/node', App\Controllers\Admin\NodeController::class . ':add');
+        $this->get('/node/{id}/edit', App\Controllers\Admin\NodeController::class . ':edit');
+        $this->put('/node/{id}', App\Controllers\Admin\NodeController::class . ':update');
+        $this->delete('/node', App\Controllers\Admin\NodeController::class . ':delete');
+        $this->post('/node/ajax', App\Controllers\Admin\NodeController::class . ':ajax');
+
+
+        $this->get('/ticket', App\Controllers\Admin\TicketController::class . ':index');
+        $this->get('/ticket/{id}/view', App\Controllers\Admin\TicketController::class . ':show');
+        $this->put('/ticket/{id}', App\Controllers\Admin\TicketController::class . ':update');
+        $this->post('/ticket/ajax', App\Controllers\Admin\TicketController::class . ':ajax');
+
+        // Relay Mange
+        $this->get('/relay', App\Controllers\Admin\RelayController::class . ':index');
+        $this->get('/relay/create', App\Controllers\Admin\RelayController::class . ':create');
+        $this->post('/relay', App\Controllers\Admin\RelayController::class . ':add');
+        $this->get('/relay/{id}/edit', App\Controllers\Admin\RelayController::class . ':edit');
+        $this->put('/relay/{id}', App\Controllers\Admin\RelayController::class . ':update');
+        $this->delete('/relay', App\Controllers\Admin\RelayController::class . ':delete');
+        $this->get('/relay/path_search/{id}', App\Controllers\Admin\RelayController::class . ':path_search');
+        $this->post('/relay/ajax', App\Controllers\Admin\RelayController::class . ':ajax_relay');
+
+        // Shop Mange
+        $this->get('/shop', App\Controllers\Admin\ShopController::class . ':index');
+        $this->post('/shop/ajax', App\Controllers\Admin\ShopController::class . ':ajax_shop');
+
+        $this->get('/bought', App\Controllers\Admin\ShopController::class . ':bought');
+        $this->delete('/bought', App\Controllers\Admin\ShopController::class . ':deleteBoughtGet');
+        $this->post('/bought/ajax', App\Controllers\Admin\ShopController::class . ':ajax_bought');
+
+        $this->get('/shop/create', App\Controllers\Admin\ShopController::class . ':create');
+        $this->post('/shop', App\Controllers\Admin\ShopController::class . ':add');
+        $this->get('/shop/{id}/edit', App\Controllers\Admin\ShopController::class . ':edit');
+        $this->put('/shop/{id}', App\Controllers\Admin\ShopController::class . ':update');
+        $this->delete('/shop', App\Controllers\Admin\ShopController::class . ':deleteGet');
+
+        // Ann Mange
+        $this->get('/announcement', App\Controllers\Admin\AnnController::class . ':index');
+        $this->get('/announcement/create', App\Controllers\Admin\AnnController::class . ':create');
+        $this->post('/announcement', App\Controllers\Admin\AnnController::class . ':add');
+        $this->get('/announcement/{id}/edit', App\Controllers\Admin\AnnController::class . ':edit');
+        $this->put('/announcement/{id}', App\Controllers\Admin\AnnController::class . ':update');
+        $this->delete('/announcement', App\Controllers\Admin\AnnController::class . ':delete');
+        $this->post('/announcement/ajax', App\Controllers\Admin\AnnController::class . ':ajax');
+
+        // Detect Mange
+        $this->get('/detect', App\Controllers\Admin\DetectController::class . ':index');
+        $this->get('/detect/create', App\Controllers\Admin\DetectController::class . ':create');
+        $this->post('/detect', App\Controllers\Admin\DetectController::class . ':add');
+        $this->get('/detect/{id}/edit', App\Controllers\Admin\DetectController::class . ':edit');
+        $this->put('/detect/{id}', App\Controllers\Admin\DetectController::class . ':update');
+        $this->delete('/detect', App\Controllers\Admin\DetectController::class . ':delete');
+        $this->get('/detect/log', App\Controllers\Admin\DetectController::class . ':log');
+        $this->post('/detect/ajax', App\Controllers\Admin\DetectController::class . ':ajax_rule');
+        $this->post('/detect/log/ajax', App\Controllers\Admin\DetectController::class . ':ajax_log');
+
+        $this->get('/auto', App\Controllers\Admin\AutoController::class . ':index');
+        $this->get('/auto/create', App\Controllers\Admin\AutoController::class . ':create');
+        $this->post('/auto', App\Controllers\Admin\AutoController::class . ':add');
+        $this->delete('/auto', App\Controllers\Admin\AutoController::class . ':delete');
+        $this->post('/auto/ajax', App\Controllers\Admin\AutoController::class . ':ajax');
+
+        // IP Mange
+        $this->get('/block', App\Controllers\Admin\IpController::class . ':block');
+        $this->get('/unblock', App\Controllers\Admin\IpController::class . ':unblock');
+        $this->post('/unblock', App\Controllers\Admin\IpController::class . ':doUnblock');
+        $this->get('/login', App\Controllers\Admin\IpController::class . ':index');
+        $this->get('/alive', App\Controllers\Admin\IpController::class . ':alive');
+        $this->post('/block/ajax', App\Controllers\Admin\IpController::class . ':ajax_block');
+        $this->post('/unblock/ajax', App\Controllers\Admin\IpController::class . ':ajax_unblock');
+        $this->post('/login/ajax', App\Controllers\Admin\IpController::class . ':ajax_login');
+        $this->post('/alive/ajax', App\Controllers\Admin\IpController::class . ':ajax_alive');
+
+        // Code Mange
+        $this->get('/code', App\Controllers\Admin\CodeController::class . ':index');
+        $this->get('/code/create', App\Controllers\Admin\CodeController::class . ':create');
+        $this->post('/code', App\Controllers\Admin\CodeController::class . ':add');
+        $this->get('/donate/create', App\Controllers\Admin\CodeController::class . ':donate_create');
+        $this->post('/donate', App\Controllers\Admin\CodeController::class . ':donate_add');
+        $this->post('/code/ajax', App\Controllers\Admin\CodeController::class . ':ajax_code');
+
+        // User Mange
+        $this->get('/user', App\Controllers\Admin\UserController::class . ':index');
+        $this->get('/user/{id}/edit', App\Controllers\Admin\UserController::class . ':edit');
+        $this->put('/user/{id}', App\Controllers\Admin\UserController::class . ':update');
+        $this->delete('/user', App\Controllers\Admin\UserController::class . ':delete');
+        $this->post('/user/changetouser', App\Controllers\Admin\UserController::class . ':changetouser');
+        $this->post('/user/ajax', App\Controllers\Admin\UserController::class . ':ajax');
+        $this->post('/user/create', App\Controllers\Admin\UserController::class . ':createNewUser');
+        $this->post('/user/buy', App\Controllers\Admin\UserController::class . ':buy');
+
+
+        $this->get('/coupon', App\Controllers\AdminController::class . ':coupon');
+        $this->post('/coupon', App\Controllers\AdminController::class . ':addCoupon');
+        $this->post('/coupon/ajax', App\Controllers\AdminController::class . ':ajax_coupon');
+
+        $this->get('/profile', App\Controllers\AdminController::class . ':profile');
+        $this->get('/invite', App\Controllers\AdminController::class . ':invite');
+        $this->post('/invite', App\Controllers\AdminController::class . ':addInvite');
+        $this->post('/chginvite', App\Controllers\AdminController::class . ':chgInvite');
+        $this->get('/sys', App\Controllers\AdminController::class . ':sys');
+        $this->get('/logout', App\Controllers\AdminController::class . ':logout');
+        $this->post('/payback/ajax', App\Controllers\AdminController::class . ':ajax_payback');
+    })->add(new Admin());
+
+    // mu
+    $app->group('/mod_mu', function () {
+        $this->get('/nodes/{id}/info', App\Controllers\Mod_Mu\NodeController::class . ':get_info');
+        $this->get('/users', App\Controllers\Mod_Mu\UserController::class . ':index');
+        $this->post('/users/traffic', App\Controllers\Mod_Mu\UserController::class . ':addTraffic');
+        $this->post('/users/aliveip', App\Controllers\Mod_Mu\UserController::class . ':addAliveIp');
+        $this->post('/users/detectlog', App\Controllers\Mod_Mu\UserController::class . ':addDetectLog');
+        $this->post('/nodes/{id}/info', App\Controllers\Mod_Mu\NodeController::class . ':info');
+
+        $this->get('/nodes', App\Controllers\Mod_Mu\NodeController::class . ':get_all_info');
+        $this->post('/nodes/config', App\Controllers\Mod_Mu\NodeController::class . ':getConfig');
+
+        $this->get('/func/detect_rules', App\Controllers\Mod_Mu\FuncController::class . ':get_detect_logs');
+        $this->get('/func/relay_rules', App\Controllers\Mod_Mu\FuncController::class . ':get_relay_rules');
+        $this->post('/func/block_ip', App\Controllers\Mod_Mu\FuncController::class . ':addBlockIp');
+        $this->get('/func/block_ip', App\Controllers\Mod_Mu\FuncController::class . ':get_blockip');
+        $this->get('/func/unblock_ip', App\Controllers\Mod_Mu\FuncController::class . ':get_unblockip');
+        $this->post('/func/speedtest', App\Controllers\Mod_Mu\FuncController::class . ':addSpeedtest');
+        $this->get('/func/autoexec', App\Controllers\Mod_Mu\FuncController::class . ':get_autoexec');
+        $this->post('/func/autoexec', App\Controllers\Mod_Mu\FuncController::class . ':addAutoexec');
+
+        $this->get('/func/ping', App\Controllers\Mod_Mu\FuncController::class . ':ping');
+        //============================================
+    })->add(new Mod_Mu());
+
+    // res
+    $app->group('/res', function () {
+        $this->get('/captcha/{id}', App\Controllers\ResController::class . ':captcha');
+    });
+
+
+    $app->group('/link', function () {
+        $this->get('/{token}', App\Controllers\LinkController::class . ':GetContent');
+    });
+
+    $app->group('/user', function () {
+        $this->post('/doiam', App\Services\Payment::class . ':purchase');
+    })->add(new Auth());
+    $app->group('/doiam', function () {
+        $this->post('/callback/{type}', App\Services\Payment::class . ':notify');
+        $this->get('/return/alipay', App\Services\Payment::class . ':returnHTML');
+        $this->post('/status', App\Services\Payment::class . ':getStatus');
+    });
+
+    // Vue
+
+    $app->get('/logout', App\Controllers\VueController::class . ':vuelogout');
+    $app->get('/globalconfig', App\Controllers\VueController::class . ':getGlobalConfig');
+    $app->get('/getuserinfo', App\Controllers\VueController::class . ':getUserInfo');
+    $app->post('/getuserinviteinfo', App\Controllers\VueController::class . ':getUserInviteInfo');
+    $app->get('/getusershops', App\Controllers\VueController::class . ':getUserShops');
+    $app->get('/getallresourse', App\Controllers\VueController::class . ':getAllResourse');
+    $app->get('/getnewsubtoken', App\Controllers\VueController::class . ':getNewSubToken');
+    $app->get('/getnewinvotecode', App\Controllers\VueController::class . ':getNewInviteCode');
+    $app->get('/gettransfer', App\Controllers\VueController::class . ':getTransfer');
+    $app->get('/getCaptcha', App\Controllers\VueController::class . ':getCaptcha');
+    $app->post('/getChargeLog', App\Controllers\VueController::class . ':getChargeLog');
+    $app->get('/getnodelist', App\Controllers\VueController::class . ':getNodeList');
+    $app->get('/nodeinfo/{id}', App\Controllers\VueController::class . ':getNodeInfo');
+
+    /**
+     * chenPay
+     */
+    $app->group('/user', function () {
+        $this->get('/chenPay', App\Services\Payment::class . ':purchase');
+        $this->get('/orderDelete', App\Controllers\UserController::class . ':orderDelete');
+    })->add(new Auth());
+    $app->group('/chenPay', function () {
+        $this->get('/status', App\Services\Payment::class . ':getStatus');
+    });
+    $app->group('/admin', function () {
+        $this->get('/editConfig', App\Controllers\AdminController::class . ':editConfig');
+        $this->post('/saveConfig', App\Controllers\AdminController::class . ':saveConfig');
+    })->add(new Admin());
+    // chenPay end
+};

+ 0 - 28
bootstrap.php

@@ -1,28 +0,0 @@
-<?php
-
-/***
- * ss-panel v3 Bootstrap
- * @author orvice
- * @email [email protected]
- * @url https://github.com/orvice/ss-panel
- */
-
-use App\Services\Boot;
-
-//  BASE_PATH
-define('BASE_PATH', __DIR__);
-define('VERSION', '20180419');
-
-// Vendor Autoload
-require BASE_PATH.'/vendor/autoload.php';
-
-require BASE_PATH."/config/.config.php";
-
-
-
-Boot::setDebug();
-//Boot::setVersion(VERSION);
-// config time zone
-Boot::setTimezone();
-// Init db
-Boot::bootDb();

+ 1 - 1
composer.json

@@ -25,7 +25,7 @@
     },
     "autoload": {
         "psr-4": {
-            "App\\": "app/"
+            "App\\": "src/"
         }
     }
 }

+ 0 - 379
config/routes.php

@@ -1,379 +0,0 @@
-<?php
-
-use Slim\Container;
-use App\Middleware\Auth;
-use App\Middleware\Guest;
-use App\Middleware\Admin;
-use App\Middleware\Api;
-use App\Middleware\Mu;
-use App\Middleware\Mod_Mu;
-use Zeuxisoo\Whoops\Provider\Slim\WhoopsMiddleware;
-
-$configuration = [
-    'settings' => [
-        'debug' => DEBUG,
-        'whoops.editor' => 'sublime',
-        'displayErrorDetails' => DEBUG
-    ]
-];
-
-$container = new Container($configuration);
-
-// Init slim php view
-$container['renderer'] = static function ($c) {
-    return new Slim\Views\PhpRenderer();
-};
-
-$container['notFoundHandler'] = static function ($c) {
-    return static function ($request, $response) use ($c) {
-        return $response->withAddedHeader('Location', '/404');
-    };
-};
-
-$container['notAllowedHandler'] = static function ($c) {
-    return static function ($request, $response, $methods) use ($c) {
-        return $response->withAddedHeader('Location', '/405');
-    };
-};
-
-if (DEBUG == false) {
-    $container['errorHandler'] = static function ($c) {
-        return static function ($request, $response, $exception) use ($c) {
-            return $response->withAddedHeader('Location', '/500');
-        };
-    };
-}
-
-$app = new Slim\App($container);
-$app->add(new WhoopsMiddleware());
-
-
-// Home
-$app->post('/spay_back', App\Services\Payment::class . ':notify');
-$app->get('/spay_back', App\Services\Payment::class . ':notify');
-$app->get('/', App\Controllers\HomeController::class . ':index');
-$app->get('/indexold', App\Controllers\HomeController::class . ':indexold');
-$app->get('/404', App\Controllers\HomeController::class . ':page404');
-$app->get('/405', App\Controllers\HomeController::class . ':page405');
-$app->get('/500', App\Controllers\HomeController::class . ':page500');
-$app->post('/notify', App\Controllers\HomeController::class . ':notify');
-$app->get('/tos', App\Controllers\HomeController::class . ':tos');
-$app->get('/staff', App\Controllers\HomeController::class . ':staff');
-$app->post('/telegram_callback', App\Controllers\HomeController::class . ':telegram');
-$app->post('/tomato_back/{type}', 'App\Services\Payment:notify');
-$app->get('/tomato_back/{type}', 'App\Services\Payment:notify');
-
-// User Center
-$app->group('/user', function () {
-    $this->get('', App\Controllers\UserController::class . ':index');
-    $this->get('/', App\Controllers\UserController::class . ':index');
-    $this->post('/checkin', App\Controllers\UserController::class . ':doCheckin');
-    $this->get('/node', App\Controllers\UserController::class . ':node');
-    $this->get('/tutorial', App\Controllers\UserController::class . ':tutorial');
-    $this->get('/announcement', App\Controllers\UserController::class . ':announcement');
-    $this->get('/donate', App\Controllers\UserController::class . ':donate');
-    $this->get('/lookingglass', App\Controllers\UserController::class . ':lookingglass');
-    $this->get('/node/{id}', App\Controllers\UserController::class . ':nodeInfo');
-    $this->get('/node/{id}/ajax', App\Controllers\UserController::class . ':nodeAjax');
-    $this->get('/profile', App\Controllers\UserController::class . ':profile');
-    $this->get('/invite', App\Controllers\UserController::class . ':invite');
-
-    $this->get('/detect', App\Controllers\UserController::class . ':detect_index');
-    $this->get('/detect/log', App\Controllers\UserController::class . ':detect_log');
-
-    $this->get('/disable', App\Controllers\UserController::class . ':disable');
-
-    $this->get('/shop', App\Controllers\UserController::class . ':shop');
-    $this->post('/coupon_check', App\Controllers\UserController::class . ':CouponCheck');
-    $this->post('/buy', App\Controllers\UserController::class . ':buy');
-
-    // Relay Mange
-    $this->get('/relay', App\Controllers\RelayController::class . ':index');
-    $this->get('/relay/create', App\Controllers\RelayController::class . ':create');
-    $this->post('/relay', App\Controllers\RelayController::class . ':add');
-    $this->get('/relay/{id}/edit', App\Controllers\RelayController::class . ':edit');
-    $this->put('/relay/{id}', App\Controllers\RelayController::class . ':update');
-    $this->delete('/relay', App\Controllers\RelayController::class . ':delete');
-
-    $this->get('/ticket', App\Controllers\UserController::class . ':ticket');
-    $this->get('/ticket/create', App\Controllers\UserController::class . ':ticket_create');
-    $this->post('/ticket', App\Controllers\UserController::class . ':ticket_add');
-    $this->get('/ticket/{id}/view', App\Controllers\UserController::class . ':ticket_view');
-    $this->put('/ticket/{id}', App\Controllers\UserController::class . ':ticket_update');
-
-    $this->post('/buy_invite', App\Controllers\UserController::class . ':buyInvite');
-    $this->post('/custom_invite', App\Controllers\UserController::class . ':customInvite');
-    $this->get('/edit', App\Controllers\UserController::class . ':edit');
-    $this->post('/password', App\Controllers\UserController::class . ':updatePassword');
-    $this->post('/wechat', App\Controllers\UserController::class . ':updateWechat');
-    $this->post('/ssr', App\Controllers\UserController::class . ':updateSSR');
-    $this->post('/theme', App\Controllers\UserController::class . ':updateTheme');
-    $this->post('/mail', App\Controllers\UserController::class . ':updateMail');
-    $this->post('/sspwd', App\Controllers\UserController::class . ':updateSsPwd');
-    $this->post('/method', App\Controllers\UserController::class . ':updateMethod');
-    $this->post('/hide', App\Controllers\UserController::class . ':updateHide');
-    $this->get('/sys', App\Controllers\UserController::class . ':sys');
-    $this->get('/trafficlog', App\Controllers\UserController::class . ':trafficLog');
-    $this->get('/kill', App\Controllers\UserController::class . ':kill');
-    $this->post('/kill', App\Controllers\UserController::class . ':handleKill');
-    $this->get('/logout', App\Controllers\UserController::class . ':logout');
-    $this->get('/backtoadmin', App\Controllers\UserController::class . ':backtoadmin');
-    $this->get('/code', App\Controllers\UserController::class . ':code');
-    $this->get('/alipay', App\Controllers\UserController::class . ':alipay');
-    $this->post('/code/f2fpay', App\Services\Payment::class . ':purchase');
-    $this->get('/code/codepay', App\Services\Payment::class . ':purchase');
-    $this->get('/code_check', App\Controllers\UserController::class . ':code_check');
-    $this->post('/code', App\Controllers\UserController::class . ':codepost');
-    $this->post('/gacheck', App\Controllers\UserController::class . ':GaCheck');
-    $this->post('/gaset', App\Controllers\UserController::class . ':GaSet');
-    $this->get('/gareset', App\Controllers\UserController::class . ':GaReset');
-    $this->get('/telegram_reset', App\Controllers\UserController::class . ':telegram_reset');
-    $this->post('/resetport', App\Controllers\UserController::class . ':ResetPort');
-    $this->post('/specifyport', App\Controllers\UserController::class . ':SpecifyPort');
-    $this->post('/pacset', App\Controllers\UserController::class . ':PacSet');
-    $this->post('/unblock', App\Controllers\UserController::class . ':Unblock');
-    $this->get('/bought', App\Controllers\UserController::class . ':bought');
-    $this->delete('/bought', App\Controllers\UserController::class . ':deleteBoughtGet');
-
-    $this->get('/url_reset', App\Controllers\UserController::class . ':resetURL');
-
-    $this->get('/inviteurl_reset', App\Controllers\UserController::class . ':resetInviteURL');
-
-    //Reconstructed Payment System
-    $this->post('/payment/purchase', App\Services\Payment::class . ':purchase');
-    $this->get('/payment/return', App\Services\Payment::class . ':returnHTML');
-
-    // Crypto Payment - BTC, ETH, EOS, BCH, LTC etch
-    $this->post('/payment/bitpay/purchase', App\Services\BitPayment::class . ':purchase');
-    $this->get('/payment/bitpay/return', App\Services\BitPayment::class . ':returnHTML');
-
-    // getPcClient
-    $this->get('/getPcClient', App\Controllers\UserController::class . ':getPcClient');
-})->add(new Auth());
-
-$app->group('/payment', function () {
-    $this->get('/notify', App\Services\Payment::class . ':notify');
-    $this->post('/notify', App\Services\Payment::class . ':notify');
-    $this->post('/notify/{type}', App\Services\Payment::class . ':notify');
-    $this->post('/status', App\Services\Payment::class . ':getStatus');
-
-    $this->post('/bitpay/notify', App\Services\BitPayment::class . ':notify');
-    $this->post('/bitpay/status', App\Services\BitPayment::class . ':getStatus');
-});
-
-// Auth
-$app->group('/auth', function () {
-    $this->get('/login', App\Controllers\AuthController::class . ':login');
-    $this->post('/qrcode_check', App\Controllers\AuthController::class . ':qrcode_check');
-    $this->post('/login', App\Controllers\AuthController::class . ':loginHandle');
-    $this->post('/qrcode_login', App\Controllers\AuthController::class . ':qrcode_loginHandle');
-    $this->get('/register', App\Controllers\AuthController::class . ':register');
-    $this->post('/register', App\Controllers\AuthController::class . ':registerHandle');
-    $this->post('/send', App\Controllers\AuthController::class . ':sendVerify');
-    $this->get('/logout', App\Controllers\AuthController::class . ':logout');
-    $this->get('/telegram_oauth', App\Controllers\AuthController::class . ':telegram_oauth');
-    $this->get('/login_getCaptcha', App\Controllers\AuthController::class . ':getCaptcha');
-})->add(new Guest());
-
-// Password
-$app->group('/password', function () {
-    $this->get('/reset', App\Controllers\PasswordController::class . ':reset');
-    $this->post('/reset', App\Controllers\PasswordController::class . ':handleReset');
-    $this->get('/token/{token}', App\Controllers\PasswordController::class . ':token');
-    $this->post('/token/{token}', App\Controllers\PasswordController::class . ':handleToken');
-})->add(new Guest());
-
-// Admin
-$app->group('/admin', function () {
-    $this->get('', App\Controllers\AdminController::class . ':index');
-    $this->get('/', App\Controllers\AdminController::class . ':index');
-
-    $this->get('/trafficlog', App\Controllers\AdminController::class . ':trafficLog');
-    $this->post('/trafficlog/ajax', App\Controllers\AdminController::class . ':ajax_trafficLog');
-    // Node Mange
-    $this->get('/node', App\Controllers\Admin\NodeController::class . ':index');
-
-    $this->get('/node/create', App\Controllers\Admin\NodeController::class . ':create');
-    $this->post('/node', App\Controllers\Admin\NodeController::class . ':add');
-    $this->get('/node/{id}/edit', App\Controllers\Admin\NodeController::class . ':edit');
-    $this->put('/node/{id}', App\Controllers\Admin\NodeController::class . ':update');
-    $this->delete('/node', App\Controllers\Admin\NodeController::class . ':delete');
-    $this->post('/node/ajax', App\Controllers\Admin\NodeController::class . ':ajax');
-
-
-    $this->get('/ticket', App\Controllers\Admin\TicketController::class . ':index');
-    $this->get('/ticket/{id}/view', App\Controllers\Admin\TicketController::class . ':show');
-    $this->put('/ticket/{id}', App\Controllers\Admin\TicketController::class . ':update');
-    $this->post('/ticket/ajax', App\Controllers\Admin\TicketController::class . ':ajax');
-
-    // Relay Mange
-    $this->get('/relay', App\Controllers\Admin\RelayController::class . ':index');
-    $this->get('/relay/create', App\Controllers\Admin\RelayController::class . ':create');
-    $this->post('/relay', App\Controllers\Admin\RelayController::class . ':add');
-    $this->get('/relay/{id}/edit', App\Controllers\Admin\RelayController::class . ':edit');
-    $this->put('/relay/{id}', App\Controllers\Admin\RelayController::class . ':update');
-    $this->delete('/relay', App\Controllers\Admin\RelayController::class . ':delete');
-    $this->get('/relay/path_search/{id}', App\Controllers\Admin\RelayController::class . ':path_search');
-    $this->post('/relay/ajax', App\Controllers\Admin\RelayController::class . ':ajax_relay');
-
-    // Shop Mange
-    $this->get('/shop', App\Controllers\Admin\ShopController::class . ':index');
-    $this->post('/shop/ajax', App\Controllers\Admin\ShopController::class . ':ajax_shop');
-
-    $this->get('/bought', App\Controllers\Admin\ShopController::class . ':bought');
-    $this->delete('/bought', App\Controllers\Admin\ShopController::class . ':deleteBoughtGet');
-    $this->post('/bought/ajax', App\Controllers\Admin\ShopController::class . ':ajax_bought');
-
-    $this->get('/shop/create', App\Controllers\Admin\ShopController::class . ':create');
-    $this->post('/shop', App\Controllers\Admin\ShopController::class . ':add');
-    $this->get('/shop/{id}/edit', App\Controllers\Admin\ShopController::class . ':edit');
-    $this->put('/shop/{id}', App\Controllers\Admin\ShopController::class . ':update');
-    $this->delete('/shop', App\Controllers\Admin\ShopController::class . ':deleteGet');
-
-    // Ann Mange
-    $this->get('/announcement', App\Controllers\Admin\AnnController::class . ':index');
-    $this->get('/announcement/create', App\Controllers\Admin\AnnController::class . ':create');
-    $this->post('/announcement', App\Controllers\Admin\AnnController::class . ':add');
-    $this->get('/announcement/{id}/edit', App\Controllers\Admin\AnnController::class . ':edit');
-    $this->put('/announcement/{id}', App\Controllers\Admin\AnnController::class . ':update');
-    $this->delete('/announcement', App\Controllers\Admin\AnnController::class . ':delete');
-    $this->post('/announcement/ajax', App\Controllers\Admin\AnnController::class . ':ajax');
-
-    // Detect Mange
-    $this->get('/detect', App\Controllers\Admin\DetectController::class . ':index');
-    $this->get('/detect/create', App\Controllers\Admin\DetectController::class . ':create');
-    $this->post('/detect', App\Controllers\Admin\DetectController::class . ':add');
-    $this->get('/detect/{id}/edit', App\Controllers\Admin\DetectController::class . ':edit');
-    $this->put('/detect/{id}', App\Controllers\Admin\DetectController::class . ':update');
-    $this->delete('/detect', App\Controllers\Admin\DetectController::class . ':delete');
-    $this->get('/detect/log', App\Controllers\Admin\DetectController::class . ':log');
-    $this->post('/detect/ajax', App\Controllers\Admin\DetectController::class . ':ajax_rule');
-    $this->post('/detect/log/ajax', App\Controllers\Admin\DetectController::class . ':ajax_log');
-
-    $this->get('/auto', App\Controllers\Admin\AutoController::class . ':index');
-    $this->get('/auto/create', App\Controllers\Admin\AutoController::class . ':create');
-    $this->post('/auto', App\Controllers\Admin\AutoController::class . ':add');
-    $this->delete('/auto', App\Controllers\Admin\AutoController::class . ':delete');
-    $this->post('/auto/ajax', App\Controllers\Admin\AutoController::class . ':ajax');
-
-    // IP Mange
-    $this->get('/block', App\Controllers\Admin\IpController::class . ':block');
-    $this->get('/unblock', App\Controllers\Admin\IpController::class . ':unblock');
-    $this->post('/unblock', App\Controllers\Admin\IpController::class . ':doUnblock');
-    $this->get('/login', App\Controllers\Admin\IpController::class . ':index');
-    $this->get('/alive', App\Controllers\Admin\IpController::class . ':alive');
-    $this->post('/block/ajax', App\Controllers\Admin\IpController::class . ':ajax_block');
-    $this->post('/unblock/ajax', App\Controllers\Admin\IpController::class . ':ajax_unblock');
-    $this->post('/login/ajax', App\Controllers\Admin\IpController::class . ':ajax_login');
-    $this->post('/alive/ajax', App\Controllers\Admin\IpController::class . ':ajax_alive');
-
-    // Code Mange
-    $this->get('/code', App\Controllers\Admin\CodeController::class . ':index');
-    $this->get('/code/create', App\Controllers\Admin\CodeController::class . ':create');
-    $this->post('/code', App\Controllers\Admin\CodeController::class . ':add');
-    $this->get('/donate/create', App\Controllers\Admin\CodeController::class . ':donate_create');
-    $this->post('/donate', App\Controllers\Admin\CodeController::class . ':donate_add');
-    $this->post('/code/ajax', App\Controllers\Admin\CodeController::class . ':ajax_code');
-
-    // User Mange
-    $this->get('/user', App\Controllers\Admin\UserController::class . ':index');
-    $this->get('/user/{id}/edit', App\Controllers\Admin\UserController::class . ':edit');
-    $this->put('/user/{id}', App\Controllers\Admin\UserController::class . ':update');
-    $this->delete('/user', App\Controllers\Admin\UserController::class . ':delete');
-    $this->post('/user/changetouser', App\Controllers\Admin\UserController::class . ':changetouser');
-    $this->post('/user/ajax', App\Controllers\Admin\UserController::class . ':ajax');
-    $this->post('/user/create', App\Controllers\Admin\UserController::class . ':createNewUser');
-    $this->post('/user/buy', App\Controllers\Admin\UserController::class . ':buy');
-
-
-    $this->get('/coupon', App\Controllers\AdminController::class . ':coupon');
-    $this->post('/coupon', App\Controllers\AdminController::class . ':addCoupon');
-    $this->post('/coupon/ajax', App\Controllers\AdminController::class . ':ajax_coupon');
-
-    $this->get('/profile', App\Controllers\AdminController::class . ':profile');
-    $this->get('/invite', App\Controllers\AdminController::class . ':invite');
-    $this->post('/invite', App\Controllers\AdminController::class . ':addInvite');
-    $this->post('/chginvite', App\Controllers\AdminController::class . ':chgInvite');
-    $this->get('/sys', App\Controllers\AdminController::class . ':sys');
-    $this->get('/logout', App\Controllers\AdminController::class . ':logout');
-    $this->post('/payback/ajax', App\Controllers\AdminController::class . ':ajax_payback');
-})->add(new Admin());
-
-// mu
-$app->group('/mod_mu', function () {
-    $this->get('/nodes/{id}/info', App\Controllers\Mod_Mu\NodeController::class . ':get_info');
-    $this->get('/users', App\Controllers\Mod_Mu\UserController::class . ':index');
-    $this->post('/users/traffic', App\Controllers\Mod_Mu\UserController::class . ':addTraffic');
-    $this->post('/users/aliveip', App\Controllers\Mod_Mu\UserController::class . ':addAliveIp');
-    $this->post('/users/detectlog', App\Controllers\Mod_Mu\UserController::class . ':addDetectLog');
-    $this->post('/nodes/{id}/info', App\Controllers\Mod_Mu\NodeController::class . ':info');
-
-    $this->get('/nodes', App\Controllers\Mod_Mu\NodeController::class . ':get_all_info');
-    $this->post('/nodes/config', App\Controllers\Mod_Mu\NodeController::class . ':getConfig');
-
-    $this->get('/func/detect_rules', App\Controllers\Mod_Mu\FuncController::class . ':get_detect_logs');
-    $this->get('/func/relay_rules', App\Controllers\Mod_Mu\FuncController::class . ':get_relay_rules');
-    $this->post('/func/block_ip', App\Controllers\Mod_Mu\FuncController::class . ':addBlockIp');
-    $this->get('/func/block_ip', App\Controllers\Mod_Mu\FuncController::class . ':get_blockip');
-    $this->get('/func/unblock_ip', App\Controllers\Mod_Mu\FuncController::class . ':get_unblockip');
-    $this->post('/func/speedtest', App\Controllers\Mod_Mu\FuncController::class . ':addSpeedtest');
-    $this->get('/func/autoexec', App\Controllers\Mod_Mu\FuncController::class . ':get_autoexec');
-    $this->post('/func/autoexec', App\Controllers\Mod_Mu\FuncController::class . ':addAutoexec');
-
-    $this->get('/func/ping', App\Controllers\Mod_Mu\FuncController::class . ':ping');
-    //============================================
-})->add(new Mod_Mu());
-
-// res
-$app->group('/res', function () {
-    $this->get('/captcha/{id}', App\Controllers\ResController::class . ':captcha');
-});
-
-
-$app->group('/link', function () {
-    $this->get('/{token}', App\Controllers\LinkController::class . ':GetContent');
-});
-
-$app->group('/user', function () {
-    $this->post('/doiam', App\Services\Payment::class . ':purchase');
-})->add(new Auth());
-$app->group('/doiam', function () {
-    $this->post('/callback/{type}', App\Services\Payment::class . ':notify');
-    $this->get('/return/alipay', App\Services\Payment::class . ':returnHTML');
-    $this->post('/status', App\Services\Payment::class . ':getStatus');
-});
-
-// Vue
-
-$app->get('/logout', App\Controllers\VueController::class . ':vuelogout');
-$app->get('/globalconfig', App\Controllers\VueController::class . ':getGlobalConfig');
-$app->get('/getuserinfo', App\Controllers\VueController::class . ':getUserInfo');
-$app->post('/getuserinviteinfo', App\Controllers\VueController::class . ':getUserInviteInfo');
-$app->get('/getusershops', App\Controllers\VueController::class . ':getUserShops');
-$app->get('/getallresourse', App\Controllers\VueController::class . ':getAllResourse');
-$app->get('/getnewsubtoken', App\Controllers\VueController::class . ':getNewSubToken');
-$app->get('/getnewinvotecode', App\Controllers\VueController::class . ':getNewInviteCode');
-$app->get('/gettransfer', App\Controllers\VueController::class . ':getTransfer');
-$app->get('/getCaptcha', App\Controllers\VueController::class . ':getCaptcha');
-$app->post('/getChargeLog', App\Controllers\VueController::class . ':getChargeLog');
-$app->get('/getnodelist', App\Controllers\VueController::class . ':getNodeList');
-$app->get('/nodeinfo/{id}', App\Controllers\VueController::class . ':getNodeInfo');
-
-/**
- * chenPay
- */
-$app->group('/user', function () {
-    $this->get('/chenPay', App\Services\Payment::class . ':purchase');
-    $this->get('/orderDelete', App\Controllers\UserController::class . ':orderDelete');
-})->add(new Auth());
-$app->group('/chenPay', function () {
-    $this->get('/status', App\Services\Payment::class . ':getStatus');
-});
-$app->group('/admin', function () {
-    $this->get('/editConfig', App\Controllers\AdminController::class . ':editConfig');
-    $this->post('/saveConfig', App\Controllers\AdminController::class . ':saveConfig');
-})->add(new Admin());
-// chenPay end
-
-// Run Slim Routes for App
-$app->run();

+ 27 - 6
public/index.php

@@ -1,11 +1,32 @@
 <?php
+declare(strict_types=1);
+/**
+ * SSPanel-Uim Public Entrance File
+ *
+ * @license MIT(https://github.com/Anankke/SSPanel-Uim/blob/dev/LICENSE)
+ *          Addition: You shouldn't remove staff page or entrance of that page.
+ */
 
-//  PUBLIC_PATH
-define('PUBLIC_PATH', __DIR__);
+require __DIR__ . '/../vendor/autoload.php';
+require __DIR__ . '/../config/.config.php';
+require __DIR__ . '/../app/predefine.php';
 
-// Bootstrap
-require PUBLIC_PATH.'/../bootstrap.php';
+// TODO: legacy boot function
+use App\Services\Boot;
+Boot::setDebug();
+Boot::setTimezone();
+Boot::bootDb();
 
+/** @var Slim\Container $container */
+$container = require __DIR__ . '/../app/container.php';
+$app = new Slim\App($container);
 
-// Init slim routes
-require BASE_PATH.'/config/routes.php';
+/** @var closure $middleware */
+$middleware = require __DIR__ . '/../app/middleware.php';
+$middleware($app);
+
+/** @var closure $routes */
+$routes = require __DIR__ . '/../app/routes.php';
+$routes($app);
+
+$app->run();

+ 0 - 0
app/Command/DailyMail.php → src/Command/DailyMail.php


+ 0 - 0
app/Command/ExtMail.php → src/Command/ExtMail.php


+ 0 - 0
app/Command/FinanceMail.php → src/Command/FinanceMail.php


+ 0 - 0
app/Command/Job.php → src/Command/Job.php


+ 0 - 0
app/Command/SyncRadius.php → src/Command/SyncRadius.php


+ 0 - 0
app/Command/Update.php → src/Command/Update.php


+ 0 - 0
app/Command/XCat.php → src/Command/XCat.php


+ 0 - 0
app/Controllers/Admin/AnnController.php → src/Controllers/Admin/AnnController.php


+ 0 - 0
app/Controllers/Admin/AutoController.php → src/Controllers/Admin/AutoController.php


+ 0 - 0
app/Controllers/Admin/CodeController.php → src/Controllers/Admin/CodeController.php


+ 0 - 0
app/Controllers/Admin/DetectController.php → src/Controllers/Admin/DetectController.php


+ 0 - 0
app/Controllers/Admin/IpController.php → src/Controllers/Admin/IpController.php


+ 0 - 0
app/Controllers/Admin/NodeController.php → src/Controllers/Admin/NodeController.php


+ 0 - 0
app/Controllers/Admin/RelayController.php → src/Controllers/Admin/RelayController.php


+ 0 - 0
app/Controllers/Admin/ShopController.php → src/Controllers/Admin/ShopController.php


+ 0 - 0
app/Controllers/Admin/TicketController.php → src/Controllers/Admin/TicketController.php


+ 0 - 0
app/Controllers/Admin/UserController.php → src/Controllers/Admin/UserController.php


+ 0 - 0
app/Controllers/AdminController.php → src/Controllers/AdminController.php


+ 0 - 0
app/Controllers/AuthController.php → src/Controllers/AuthController.php


+ 0 - 0
app/Controllers/BaseController.php → src/Controllers/BaseController.php


+ 0 - 0
app/Controllers/HomeController.php → src/Controllers/HomeController.php


+ 0 - 0
app/Controllers/LinkController.php → src/Controllers/LinkController.php


+ 0 - 0
app/Controllers/Mod_Mu/FuncController.php → src/Controllers/Mod_Mu/FuncController.php


+ 0 - 0
app/Controllers/Mod_Mu/NodeController.php → src/Controllers/Mod_Mu/NodeController.php


+ 14 - 27
app/Controllers/Mod_Mu/UserController.php → src/Controllers/Mod_Mu/UserController.php

@@ -34,8 +34,20 @@ class UserController extends BaseController
         }
         $node->node_heartbeat = time();
         $node->save();
-        
-        if ($node->mu_only != 0) {
+
+        if ($node->node_group != 0) {
+            $users_raw = User::where(
+                static function ($query) use ($node) {
+                    $query->where(
+                        static function ($query1) use ($node) {
+                            $query1->where('class', '>=', $node->node_class)
+                                ->where('node_group', '=', $node->node_group);
+                        }
+                    )->orwhere('is_admin', 1);
+                }
+            )
+                ->where('enable', 1)->where('expire_in', '>', date('Y-m-d H:i:s'))->get();
+        } else {
             $users_raw = User::where(
                 static function ($query) use ($node) {
                     $query->where(
@@ -45,32 +57,7 @@ class UserController extends BaseController
                     )->orwhere('is_admin', 1);
                 }
             )->where('enable', 1)->where('expire_in', '>', date('Y-m-d H:i:s'))->get();
-        } else {
-            if ($node->node_group != 0) {
-                $users_raw = User::where(
-                    static function ($query) use ($node) {
-                        $query->where(
-                            static function ($query1) use ($node) {
-                                $query1->where('class', '>=', $node->node_class)
-                                    ->where('node_group', '=', $node->node_group);
-                            }
-                        )->orwhere('is_admin', 1);
-                    }
-                )
-                    ->where('enable', 1)->where('expire_in', '>', date('Y-m-d H:i:s'))->get();
-            } else {
-                $users_raw = User::where(
-                    static function ($query) use ($node) {
-                        $query->where(
-                            static function ($query1) use ($node) {
-                                $query1->where('class', '>=', $node->node_class);
-                            }
-                        )->orwhere('is_admin', 1);
-                    }
-                )->where('enable', 1)->where('expire_in', '>', date('Y-m-d H:i:s'))->get();
-            }
         }
-        
         if (($node->node_bandwidth_limit != 0) && $node->node_bandwidth_limit < $node->node_bandwidth) {
             $users = null;
 

+ 0 - 0
app/Controllers/PasswordController.php → src/Controllers/PasswordController.php


+ 0 - 0
app/Controllers/RelayController.php → src/Controllers/RelayController.php


+ 0 - 0
app/Controllers/ResController.php → src/Controllers/ResController.php


+ 0 - 0
app/Controllers/UserController.php → src/Controllers/UserController.php


+ 0 - 0
app/Controllers/VueController.php → src/Controllers/VueController.php


+ 0 - 0
app/Middleware/Admin.php → src/Middleware/Admin.php


+ 0 - 0
app/Middleware/Auth.php → src/Middleware/Auth.php


+ 0 - 0
app/Middleware/Guest.php → src/Middleware/Guest.php


+ 0 - 0
app/Middleware/Mod_Mu.php → src/Middleware/Mod_Mu.php


+ 0 - 0
app/Models/Ann.php → src/Models/Ann.php


+ 0 - 0
app/Models/Auto.php → src/Models/Auto.php


+ 0 - 0
app/Models/BlockIp.php → src/Models/BlockIp.php


+ 0 - 0
app/Models/Bought.php → src/Models/Bought.php


+ 0 - 0
app/Models/CheckInLog.php → src/Models/CheckInLog.php


+ 0 - 0
app/Models/Code.php → src/Models/Code.php


+ 0 - 0
app/Models/Config.php → src/Models/Config.php


+ 0 - 0
app/Models/Coupon.php → src/Models/Coupon.php


+ 0 - 0
app/Models/DetectLog.php → src/Models/DetectLog.php


+ 0 - 0
app/Models/DetectRule.php → src/Models/DetectRule.php


+ 0 - 0
app/Models/Disconnect.php → src/Models/Disconnect.php


+ 0 - 0
app/Models/EmailVerify.php → src/Models/EmailVerify.php


+ 0 - 0
app/Models/InviteCode.php → src/Models/InviteCode.php


+ 0 - 0
app/Models/Ip.php → src/Models/Ip.php


+ 0 - 0
app/Models/Link.php → src/Models/Link.php


+ 0 - 0
app/Models/LoginIp.php → src/Models/LoginIp.php


+ 0 - 0
app/Models/Model.php → src/Models/Model.php


+ 0 - 0
app/Models/Node.php → src/Models/Node.php


+ 0 - 0
app/Models/NodeInfoLog.php → src/Models/NodeInfoLog.php


+ 0 - 0
app/Models/NodeOnlineLog.php → src/Models/NodeOnlineLog.php


+ 0 - 0
app/Models/PasswordReset.php → src/Models/PasswordReset.php


+ 0 - 0
app/Models/Payback.php → src/Models/Payback.php


+ 0 - 0
app/Models/Paylist.php → src/Models/Paylist.php


+ 0 - 0
app/Models/RadiusBan.php → src/Models/RadiusBan.php


+ 0 - 0
app/Models/RadiusNas.php → src/Models/RadiusNas.php


+ 0 - 0
app/Models/RadiusRadAcct.php → src/Models/RadiusRadAcct.php


+ 0 - 0
app/Models/RadiusRadCheck.php → src/Models/RadiusRadCheck.php


+ 0 - 0
app/Models/RadiusRadPostauth.php → src/Models/RadiusRadPostauth.php


+ 0 - 0
app/Models/RadiusRadUserGroup.php → src/Models/RadiusRadUserGroup.php


+ 0 - 0
app/Models/Relay.php → src/Models/Relay.php


+ 0 - 0
app/Models/Role.php → src/Models/Role.php


+ 0 - 0
app/Models/Shop.php → src/Models/Shop.php


+ 0 - 0
app/Models/Speedtest.php → src/Models/Speedtest.php


+ 0 - 0
app/Models/TelegramSession.php → src/Models/TelegramSession.php


+ 0 - 0
app/Models/Ticket.php → src/Models/Ticket.php


+ 0 - 0
app/Models/Token.php → src/Models/Token.php


+ 0 - 0
app/Models/TrafficLog.php → src/Models/TrafficLog.php


+ 0 - 0
app/Models/UnblockIp.php → src/Models/UnblockIp.php


+ 0 - 0
app/Models/User.php → src/Models/User.php


+ 0 - 0
app/Services/Analytic.php → src/Services/Analytic.php


+ 0 - 0
app/Services/Analytics.php → src/Services/Analytics.php


+ 0 - 0
app/Services/Auth.php → src/Services/Auth.php


+ 0 - 0
app/Services/Auth/Base.php → src/Services/Auth/Base.php


+ 0 - 0
app/Services/Auth/Cookie.php → src/Services/Auth/Cookie.php


+ 0 - 0
app/Services/Auth/JwtToken.php → src/Services/Auth/JwtToken.php


+ 0 - 0
app/Services/Auth/Redis.php → src/Services/Auth/Redis.php


+ 0 - 0
app/Services/Aws/Client.php → src/Services/Aws/Client.php


+ 0 - 0
app/Services/Aws/Factory.php → src/Services/Aws/Factory.php


+ 0 - 0
app/Services/BitPayment.php → src/Services/BitPayment.php


+ 0 - 0
app/Services/Boot.php → src/Services/Boot.php


+ 0 - 0
app/Services/Config.php → src/Services/Config.php


+ 0 - 0
app/Services/Factory.php → src/Services/Factory.php


+ 0 - 0
app/Services/Gateway/AbstractPayment.php → src/Services/Gateway/AbstractPayment.php


+ 0 - 0
app/Services/Gateway/AopF2F.php → src/Services/Gateway/AopF2F.php


+ 0 - 0
app/Services/Gateway/BitPay.php → src/Services/Gateway/BitPay.php


+ 0 - 0
app/Services/Gateway/ChenPay.php → src/Services/Gateway/ChenPay.php


+ 0 - 0
app/Services/Gateway/Codepay.php → src/Services/Gateway/Codepay.php


+ 189 - 189
app/Services/Gateway/PAYJS.php → src/Services/Gateway/PAYJS.php

@@ -1,189 +1,189 @@
-<?php
-
-namespace App\Services\Gateway;
-
-use App\Services\View;
-use App\Services\Auth;
-use App\Services\Config;
-use App\Models\Paylist;
-
-class PAYJS extends AbstractPayment
-{
-    private $appSecret;
-    private $gatewayUri;
-    /**
-     * 签名初始化
-     * @param merKey    签名密钥
-     */
-    public function __construct($appSecret)
-    {
-        $this->appSecret = $appSecret;
-        $this->gatewayUri = 'https://payjs.cn/api/';
-    }
-    /**
-     * @name    准备签名/验签字符串
-     */
-    public function prepareSign($data)
-    {
-        $data['mchid'] = Config::get('payjs_mchid');
-        $data = array_filter($data);
-        ksort($data);
-        return http_build_query($data);
-    }
-    /**
-     * @name    生成签名
-     * @param sourceData
-     * @return    签名数据
-     */
-    public function sign($data)
-    {
-        return strtoupper(md5(urldecode($data) . '&key=' . $this->appSecret));
-    }
-    /*
-     * @name    验证签名
-     * @param   signData 签名数据
-     * @param   sourceData 原数据
-     * @return
-     */
-    public function verify($data, $signature)
-    {
-        $mySign = $this->sign($data);
-        return $mySign === $signature;
-    }
-    public function post($data, $type = 'pay')
-    {
-        if ($type == 'pay') {
-            $this->gatewayUri .= 'cashier';
-        } elseif ($type == 'refund') {
-            $this->gatewayUri .= 'refund';
-        } else {
-            $this->gatewayUri .= 'check';
-        }
-        $curl = curl_init();
-        curl_setopt($curl, CURLOPT_URL, $this->gatewayUri);
-        curl_setopt($curl, CURLOPT_HEADER, 0);
-        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
-        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
-        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
-        curl_setopt($curl, CURLOPT_POST, 1);
-        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
-        $data = curl_exec($curl);
-        curl_close($curl);
-        return $data;
-    }
-    public function purchase($request, $response, $args)
-    {
-        $price = $request->getParam('price');
-        $type = $request->getParam('type');
-        if ($price <= 0) {
-            return json_encode(['code' => -1, 'errmsg' => '非法的金额.']);
-        }
-        $user = Auth::getUser();
-        $pl = new Paylist();
-        $pl->userid = $user->id;
-        $pl->total = $price;
-        $pl->tradeno = self::generateGuid();
-        $pl->save();
-        //if ($type != 'alipay') {
-            //$type = '';
-        //}
-        $data['mchid'] = Config::get('payjs_mchid');
-        //$data['type'] = $type;
-        $data['out_trade_no'] = $pl->tradeno;
-        $data['total_fee'] = (float) $price * 100;
-        $data['notify_url'] = Config::get('baseUrl') . '/payment/notify?way=payjs';
-        //$data['callback_url'] = Config::get('baseUrl') . '/user/code';
-        $params = $this->prepareSign($data);
-        $data['sign'] = $this->sign($params);
-        $url = 'https://payjs.cn/api/cashier?' . http_build_query($data);
-        return json_encode(['code' => 0, 'url' => $url, 'pid' => $data['out_trade_no']]);
-        //$result = json_decode($this->post($data), true);
-        //$result['pid'] = $pl->tradeno;
-        //return json_encode($result);
-    }
-    public function query($tradeNo)
-    {
-        $data['payjs_order_id'] = $tradeNo;
-        $params = $this->prepareSign($data);
-        $data['sign'] = $this->sign($params);
-        return json_decode($this->post($data, $type = 'query'), true);
-    }
-    public function notify($request, $response, $args)
-    {
-        $data = $_POST;
-        
-        if($data['return_code'] == 1){
-            // 验证签名
-            $in_sign = $data['sign'];
-            unset($data['sign']);
-            $data = array_filter($data);
-            ksort($data);
-            $sign = strtoupper(md5(urldecode(http_build_query($data) . '&key=' . $this->appSecret)));
-            $resultVerify = $sign ? true : false;
-        
-            //$str_to_sign = $this->prepareSign($data);
-            //$resultVerify = $this->verify($str_to_sign, $request->getParam('sign'));
-
-            if ($resultVerify) {
-                // 验重
-                $p = Paylist::where('tradeno', '=', $data['out_trade_no'])->first();
-                $money = $p->total;
-                if ($p->status != 1) {
-                    $this->postPayment($data['out_trade_no'], '微信支付');
-                    echo 'SUCCESS';
-                } else {
-                    echo 'ERROR';
-                }
-            } else {
-                echo 'FAIL2';
-            }
-        } else {
-            echo 'FAIL1';
-        }
-    }
-    public function refund($merchantTradeNo)
-    {
-        $data['payjs_order_id'] = $merchantTradeNo;
-        $params = $this->prepareSign($data);
-        $data['sign'] = $this->sign($params);
-        return $this->post($data, 'refund');
-    }
-    public function getPurchaseHTML()
-    {
-        return View::getSmarty()->fetch('user/payjs.tpl');
-    }
-    public function getReturnHTML($request, $response, $args)
-    {
-        $pid = $_GET['merchantTradeNo'];
-        $p = Paylist::where('tradeno', '=', $pid)->first();
-        $money = $p->total;
-        if ($p->status == 1) {
-            $success = 1;
-        } else {
-            $data = $_POST;
-            
-            $in_sign = $data['sign'];
-            unset($data['sign']);
-            $data = array_filter($data);
-            ksort($data);
-            $sign = strtoupper(md5(urldecode(http_build_query($data) . '&key=' . $this->appSecret)));
-            $resultVerify = $sign ? true : false;
-
-            if ($resultVerify) {
-                $this->postPayment($data['out_trade_no'], '微信支付');
-                $success = 1;
-            } else {
-                $success = 0;
-            }
-        }
-        return View::getSmarty()->assign('money', $money)->assign('success', $success)->fetch('user/pay_success.tpl');
-    }
-    public function getStatus($request, $response, $args)
-    {
-        $return = [];
-        $p = Paylist::where('tradeno', $_POST['pid'])->first();
-        $return['ret'] = 1;
-        $return['result'] = $p->status;
-        return json_encode($return);
-    }
-}
+<?php
+
+namespace App\Services\Gateway;
+
+use App\Services\View;
+use App\Services\Auth;
+use App\Services\Config;
+use App\Models\Paylist;
+
+class PAYJS extends AbstractPayment
+{
+    private $appSecret;
+    private $gatewayUri;
+    /**
+     * 签名初始化
+     * @param merKey    签名密钥
+     */
+    public function __construct($appSecret)
+    {
+        $this->appSecret = $appSecret;
+        $this->gatewayUri = 'https://payjs.cn/api/';
+    }
+    /**
+     * @name    准备签名/验签字符串
+     */
+    public function prepareSign($data)
+    {
+        $data['mchid'] = Config::get('payjs_mchid');
+        $data = array_filter($data);
+        ksort($data);
+        return http_build_query($data);
+    }
+    /**
+     * @name    生成签名
+     * @param sourceData
+     * @return    签名数据
+     */
+    public function sign($data)
+    {
+        return strtoupper(md5(urldecode($data) . '&key=' . $this->appSecret));
+    }
+    /*
+     * @name    验证签名
+     * @param   signData 签名数据
+     * @param   sourceData 原数据
+     * @return
+     */
+    public function verify($data, $signature)
+    {
+        $mySign = $this->sign($data);
+        return $mySign === $signature;
+    }
+    public function post($data, $type = 'pay')
+    {
+        if ($type == 'pay') {
+            $this->gatewayUri .= 'cashier';
+        } elseif ($type == 'refund') {
+            $this->gatewayUri .= 'refund';
+        } else {
+            $this->gatewayUri .= 'check';
+        }
+        $curl = curl_init();
+        curl_setopt($curl, CURLOPT_URL, $this->gatewayUri);
+        curl_setopt($curl, CURLOPT_HEADER, 0);
+        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
+        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
+        curl_setopt($curl, CURLOPT_POST, 1);
+        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
+        $data = curl_exec($curl);
+        curl_close($curl);
+        return $data;
+    }
+    public function purchase($request, $response, $args)
+    {
+        $price = $request->getParam('price');
+        $type = $request->getParam('type');
+        if ($price <= 0) {
+            return json_encode(['code' => -1, 'errmsg' => '非法的金额.']);
+        }
+        $user = Auth::getUser();
+        $pl = new Paylist();
+        $pl->userid = $user->id;
+        $pl->total = $price;
+        $pl->tradeno = self::generateGuid();
+        $pl->save();
+        //if ($type != 'alipay') {
+            //$type = '';
+        //}
+        $data['mchid'] = Config::get('payjs_mchid');
+        //$data['type'] = $type;
+        $data['out_trade_no'] = $pl->tradeno;
+        $data['total_fee'] = (float) $price * 100;
+        $data['notify_url'] = Config::get('baseUrl') . '/payment/notify?way=payjs';
+        //$data['callback_url'] = Config::get('baseUrl') . '/user/code';
+        $params = $this->prepareSign($data);
+        $data['sign'] = $this->sign($params);
+        $url = 'https://payjs.cn/api/cashier?' . http_build_query($data);
+        return json_encode(['code' => 0, 'url' => $url, 'pid' => $data['out_trade_no']]);
+        //$result = json_decode($this->post($data), true);
+        //$result['pid'] = $pl->tradeno;
+        //return json_encode($result);
+    }
+    public function query($tradeNo)
+    {
+        $data['payjs_order_id'] = $tradeNo;
+        $params = $this->prepareSign($data);
+        $data['sign'] = $this->sign($params);
+        return json_decode($this->post($data, $type = 'query'), true);
+    }
+    public function notify($request, $response, $args)
+    {
+        $data = $_POST;
+        
+        if($data['return_code'] == 1){
+            // 验证签名
+            $in_sign = $data['sign'];
+            unset($data['sign']);
+            $data = array_filter($data);
+            ksort($data);
+            $sign = strtoupper(md5(urldecode(http_build_query($data) . '&key=' . $this->appSecret)));
+            $resultVerify = $sign ? true : false;
+        
+            //$str_to_sign = $this->prepareSign($data);
+            //$resultVerify = $this->verify($str_to_sign, $request->getParam('sign'));
+
+            if ($resultVerify) {
+                // 验重
+                $p = Paylist::where('tradeno', '=', $data['out_trade_no'])->first();
+                $money = $p->total;
+                if ($p->status != 1) {
+                    $this->postPayment($data['out_trade_no'], '微信支付');
+                    echo 'SUCCESS';
+                } else {
+                    echo 'ERROR';
+                }
+            } else {
+                echo 'FAIL2';
+            }
+        } else {
+            echo 'FAIL1';
+        }
+    }
+    public function refund($merchantTradeNo)
+    {
+        $data['payjs_order_id'] = $merchantTradeNo;
+        $params = $this->prepareSign($data);
+        $data['sign'] = $this->sign($params);
+        return $this->post($data, 'refund');
+    }
+    public function getPurchaseHTML()
+    {
+        return View::getSmarty()->fetch('user/payjs.tpl');
+    }
+    public function getReturnHTML($request, $response, $args)
+    {
+        $pid = $_GET['merchantTradeNo'];
+        $p = Paylist::where('tradeno', '=', $pid)->first();
+        $money = $p->total;
+        if ($p->status == 1) {
+            $success = 1;
+        } else {
+            $data = $_POST;
+            
+            $in_sign = $data['sign'];
+            unset($data['sign']);
+            $data = array_filter($data);
+            ksort($data);
+            $sign = strtoupper(md5(urldecode(http_build_query($data) . '&key=' . $this->appSecret)));
+            $resultVerify = $sign ? true : false;
+
+            if ($resultVerify) {
+                $this->postPayment($data['out_trade_no'], '微信支付');
+                $success = 1;
+            } else {
+                $success = 0;
+            }
+        }
+        return View::getSmarty()->assign('money', $money)->assign('success', $success)->fetch('user/pay_success.tpl');
+    }
+    public function getStatus($request, $response, $args)
+    {
+        $return = [];
+        $p = Paylist::where('tradeno', $_POST['pid'])->first();
+        $return['ret'] = 1;
+        $return['result'] = $p->status;
+        return json_encode($return);
+    }
+}

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio