Перейти к основному содержимому

Изменение SSPanel для интеграции с Karing

Материалы

Вариант A: быстрая привязка Karing

  • Karing уже содержит код автоматической привязки для последних версий(>=2024.1) sspanel, v2board, xboard. Достаточно выбрать соответствующую систему в поле системы.
    • В этом варианте не нужно менять систему панели и добавлять страницу подключения; в параметр connect достаточно указать URL входа на сайт.
    • panel system
  • Если после выбора системы панели и тестирования привязка не завершается, выберите “Other” и попробуйте вариант B

Вариант B: привязка Karing через заклинание

Идея

  • Сначала Karing APP открывает промежуточную страницу /karing/connect
    • Устанавливает cookie redir=/karing/connect как адрес возврата
    • Переходит на /auth/login
  • Затем пользователь входит в sspanel
    • 1 Возврат на /karing/connect, то есть KaringController
    • 2 Проверка, что пользователь вошел
    • 3 Получение информации пользователя и ссылки подписки
    • 4 response выводит view
    • 5 JS во view вызывает метод _karing для импорта информации пользователя
  • В конце Karing APP получает информацию, проверяет ее и завершает привязку провайдера.

Первый шаг: система sspanel

  • 1 Добавить controller

  • 2 Добавить маршрут

    • Измените файл app/routes.php, добавьте маршрут в конец
    // Connect to Karing
    $app->get('/karing/connect', App\Controllers\KaringController::class . ':connect');

Второй шаг: панель harry.karing.app

Способ 1: быстрая настройка заклинания

  • Войдите в harry, список провайдеров, нажмите кнопку Настроить заклинание.
    • button
  • Настройте заклинание и connect url
    • setting

Способ 2: изменить конфигурационный файл base.json

  • Поле connect
  • Поле заклинаний spells, рекомендуется использовать имя провайдера.
{
"pid": 123456,
...

"connet": "https://your-domain/karing/connect",
"spells": [
'急速云',
'RapidNetwork',
],
...
}

В конце: тест привязки

  • Karing APP -> Настройки -> ISP/привязка провайдера -> введите заклинание -> войдите в sspanel -> привязка завершена
  • Напоминание: если вы уже завершили подключение к Karing, например настроили файл base.json, изменения ссылки подписки ниже не обязательны.

  • При добавлении isp-информации Karing сможет:

    • Показывать информацию провайдера(вход) на странице настроек
    • Напоминать об окончании подписки

Изменение кода

  • Файл: src/Controllers/SubController.php
  • В return response добавьте три строки с префиксом isp-
src/Controllers/SubController.php
 public function index($request, $response, $args): ResponseInterface
{
//...

return $response->withHeader('Subscription-Userinfo', $sub_details)
->withHeader('Content-Type', $content_type)
// for karing
->withHeader('isp-name', urlencode($_ENV['appName']))
->withHeader('isp-url', urlencode($_ENV['baseUrl'] . '/user/product'))
->withHeader('isp-faq', urlencode($_ENV['baseUrl'] . '/user/user'));
->write($sub_info);
}
  • Подсказка:
    • После сохранения изменения кода перезагрузите процесс php-fpm, чтобы opcode-кеш не мешал отладке
    • Обязательно проверьте через инструмент отладки, что isp-url и isp-faq являются нужными адресами
    • Если appName содержит китайский, нужно использовать urlencode

Итоговый результат

  • Отладочная информация:

    • debug
  • Меню настроек

    • menu