Плагин ImgLink для Discourse (рабочие процессы хостинга изображений + административная диагностика)

Сводка

Интеграция загрузки медиа ImgLink для Discourse с ограниченными ключами API, обработкой повторных попыток и диагностикой администратора.


Ссылка на репозиторий

https://github.com/imglink12x/discourse-plugin


Руководство по установке

  1. Подключитесь по SSH к контейнеру Discourse:

  2. Добавьте плагин в ваш app.yml:

  3. Пересоберите контейнер:

  4. Настройте ключ API ImgLink в настройках администратора (см. раздел «Конфигурация» ниже)

Подробная инструкция по настройке: https://imglink.cc/tools/forum-plugins


Функции

  • Прямая загрузка из редактора — Загрузка изображений напрямую из редактора постов Discourse

  • Ограниченные ключи API — Используется учетные данные с ограниченным доступом; нет полного доступа к аккаунту

  • Прямые и ссылки для просмотра — Возвращает как прямые ссылки CDN, так и URL-адреса страниц просмотра изображений

  • Повторные попытки и идемпотентность — Автоматическая логика повторных попыток при нестабильном соединении; предотвращает дублирование загрузок

  • Диагностика администратора — Встроенные проверки работоспособности для валидации аутентификации API, подключения и разрешений на загрузку

  • Вывод в формате BBCode — Автоматическое форматирование BBCode для встраиваемых публикаций

  • Журнал ошибок — Подробные логи для устранения неполадок при сбоях загрузки


Конфигурация

Шаг 1: Создание ключа API ImgLink

  1. Войдите в ImgLink (https://imglink.cc)

  2. Перейдите в раздел Настройки → Ключи API

  3. Создайте новый ключ со следующими правами доступа:

    • upload:create

    • image:delete (необязательно, для рабочих процессов очистки)

  4. Скопируйте ключ API

Шаг 2: Добавление в настройки администратора Discourse

  1. Перейдите в раздел Администрирование → Настройки → Плагины

  2. Прокрутите вниз до раздела Настройки ImgLink

  3. Вставьте ваш ключ API в поле imglink_api_key

  4. (Необязательно) Установите imglink_api_endpoint, если используете собственную версию ImgLink

  5. Сохраните изменения

Шаг 3: Запуск диагностики

  1. Перейдите в раздел Администрирование → Плагины → Настройки ImgLink

  2. Нажмите «Проверить подключение», чтобы подтвердить корректность конфигурации

  3. Вы должны увидеть сообщение «✓ Подключение успешно»


Настройки

Название настройки Тип Значение по умолчанию Описание
imglink_api_key Строка (пусто) Ваш ключ API ImgLink с правом доступа upload:create
imglink_api_endpoint Строка https://imglink.cc/api/v1 Базовый URL API ImgLink (оставьте значение по умолчанию, если не используете собственную версию)
imglink_max_retries Целое число 3 Количество попыток повторной загрузки при сбое
imglink_retry_delay Целое число 1000 Задержка в миллисекундах между попытками повторной загрузки
imglink_timeout_ms Целое число 30000 Тайм-аут запроса загрузки (30 секунд)
imglink_enable_diagnostics Булево true Включение инструментов диагностики администратора и логов
imglink_enable_direct_links Булево true Возвращать прямые ссылки CDN вместо ссылок, обернутых в просмотрщик

Совместимость версий: Discourse 2.8+ | Дата последнего обновления: Март 2026 | Поддержка: https://imglink.cc/tools/forum-plugins

Почему вы выбрали эти теги для этой темы? Выбор случайных тегов не повышает доверия к вашему плагину.

Кроме того, большинство ссылок не работают:


Где находятся настройки? Обычно я вижу их в файле настроек в папке config, например:

3 лайка

Привет, @A_Richards, я удалил теги из вашего поста, так как они выглядели как спам и не имели отношения к теме. Я также проверил код, и плагин не настроен должным образом для наличия настраиваемых параметров, как указано выше.

Рекомендую начать с этого, чтобы улучшить свой плагин:

3 лайка

Этот пользователь подменяет ссылки, ведущие на их локальный ресурс:

1. Войдите в ImgLink ([https://imglink.cc](vscode-file://vscode-app/c:/Users/andre/AppData/Local/Programs/Microsoft%20VS%20Code/07ff9d6178/resources/app/out/vs/code/electron-browser/workbench/workbench.html))

На данном этапе я готов назвать такие действия вредоносными.