Skip to content

Керування конфігурацією через API Token

Керування конфігурацією через API Token призначене для скриптів автоматизації, операційних інструментів і сторонніх панелей керування. Воно може читати й оновлювати конфігурацію каналів завантаження, налаштування безпеки, налаштування сторінок, інші налаштування та легкі федеративні зв'язки без відкриття сторінки адміністратора.

Дозвіл керування відкриває лише легкі операції, придатні для скриптів. Важкі операції, які потребують підтвердження в браузері, пакетних задач фронтенда або очищення індексу федерації, усе ще потрібно виконувати в адмін-панелі браузера.

Редагування API Token

Перед початком

Відкрийте адмін-панель і перейдіть до:

text
System Settings -> Security Settings -> API Token

Під час створення або редагування API Token переконайтеся, що він має дозвіл керування. Дозвіл керування може змінювати конфігурацію сайту, тому надавайте його лише довіреним скриптам або довіреним користувачам.

Усі три скрипти керування типово використовують режим пробного запуску для операцій запису. Після перегляду попереднього результату додайте --apply, щоб справді зберегти зміни.

Token також можна помістити в змінну середовища:

powershell
$env:IMGHOST_API_TOKEN="your API Token"

Завантаження скриптів керування

Пакет документації надає три скрипти Node.js:

СкриптПризначення
скрипт керування налаштуваннями завантаженняКерує каналами завантаження, дочірніми каналами та балансуванням навантаження.
скрипт керування налаштуваннями сайтуКерує налаштуваннями безпеки, сторінок та іншими налаштуваннями.
скрипт керування федеративними зв'язкамиКерує легкими діями федеративних зв'язків, запитами та повідомленнями.

Потрібен Node.js 18 або новіший.

Загальні параметри

ПараметрОбов'язковоОпис
--base-url <url>ТакURL сайту ImgHost, наприклад https://image.ai6.me.
--token <token>ТакAPI Token. Також можна використати змінну середовища IMGHOST_API_TOKEN.
--retries <n>НіКількість повторів для тимчасових помилок. Типово 3.
--timeout-ms <n>НіТайм-аут запиту. Типово 180000.
--output <pretty|json>НіФормат виводу. Типово pretty; для програм використовуйте json.
--save-response <path>НіЗберегти фінальний JSON-результат у файл.
--applyНіСправді виконує записи. Без нього операції запису лише показують попередній результат.
-h / --helpНіПоказати довідку скрипту.

Налаштування завантаження

Скрипт налаштувань завантаження показує, читає, створює, редагує та видаляє дочірні канали завантаження. Він також може вмикати або вимикати балансування навантаження для одного каналу завантаження верхнього рівня.

powershell
node imghost-token-upload-settings.mjs --base-url "https://your-domain" --token "your API Token" --list

Параметри налаштувань завантаження

ПараметрОпис
--listПоказує групи налаштувань завантаження.
--getЧитає канал верхнього рівня або один дочірній канал під ним.
--upsertСтворює або редагує один дочірній канал. Пробний запуск, якщо не вказано --apply.
--deleteВидаляє один дочірній канал. Пробний запуск, якщо не вказано --apply.
--load-balance <true|false>Вмикає або вимикає балансування навантаження для каналу верхнього рівня.
--channel <key>Канал завантаження верхнього рівня, наприклад s3, github або telegram.
--channel-name <name>Дочірній канал або ім'я акаунта.
--set key=valueВстановлює одне поле. Можна повторювати. Підтримуються шляхи через крапку.
--patch-json <path>Об'єднує поля з JSON-файла.
--applyЗберігає результат запису.

Key каналів

Key каналуКанал
telegram / tgTelegram
discord / dcDiscord
cfr2 / r2Cloudflare R2
s3S3
webdav / wdКанал зберігання WebDAV
github / ghGitHub Releases
gitlab / glGitLab Packages
huggingface / hfHugging Face
onedrive / odOneDrive
googledrive / google / gdGoogle Drive
dropbox / dbDropbox
yandex / yxYandex Disk
pcloud / pdpCloud

Приклади налаштувань завантаження

Показати всі налаштування завантаження:

powershell
node imghost-token-upload-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --list

Прочитати конфігурацію каналу S3:

powershell
node imghost-token-upload-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --get `
  --channel s3

Прочитати один дочірній канал S3:

powershell
node imghost-token-upload-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --get `
  --channel s3 `
  --channel-name "backup-s3"

Створити або змінити один дочірній канал. Спершу запустіть без --apply, щоб побачити попередній результат:

powershell
node imghost-token-upload-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --upsert `
  --channel webdav `
  --channel-name "backup-webdav" `
  --set enabled=false `
  --set remark="backup test"

Потім збережіть після перевірки:

powershell
node imghost-token-upload-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --upsert `
  --channel webdav `
  --channel-name "backup-webdav" `
  --set enabled=false `
  --set remark="backup test" `
  --apply

Видалити один дочірній канал:

powershell
node imghost-token-upload-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --delete `
  --channel webdav `
  --channel-name "backup-webdav" `
  --apply

Увімкнути балансування навантаження S3:

powershell
node imghost-token-upload-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --load-balance true `
  --channel s3 `
  --apply

Для складних полів створіть JSON-файл і передайте його через --patch-json:

json
{
  "enabled": true,
  "remark": "primary account"
}
powershell
node imghost-token-upload-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --upsert `
  --channel s3 `
  --channel-name "primary-s3" `
  --patch-json ".\s3-channel.json" `
  --apply

Налаштування сайту

Скрипт налаштувань сайту керує трьома областями конфігурації:

ОбластьПараметрОпис
Налаштування безпекиsecurityКористувацька автентифікація, автентифікація адміністратора, пристрої входу, API Token, модерація зображень, користувацькі обмеження, WebDAV та інше.
Налаштування сторінокpageГлобальна сторінка, сторінка користувача, сторінка адміністратора та пов'язані налаштування відображення.
Інші налаштуванняothersAPI випадкових зображень, публічний перегляд, локальний вузол федерації, автоматичні теги, IP-геолокація, резервний канал, OCR та інше.

Спершу використайте --list-sections, щоб побачити редаговані області, розділи й поля:

powershell
node imghost-token-site-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --list-sections

Параметри налаштувань сайту

ПараметрОпис
--list-sectionsПоказує редаговані області, розділи й поля.
--getЧитає один розділ налаштувань.
--area <security|page|others>Вибирає область конфігурації.
--section <name>Вибирає розділ. Використовуйте назви, показані --list-sections.
--set key=valueВстановлює одне поле. Можна повторювати.
--applyЗберігає результат запису.

Для області page параметр --set використовує ID елементів конфігурації сторінки, наприклад starsEffect=true. Для security і others параметр --set використовує назву поля в цьому розділі, наприклад email=admin@example.com.

Приклади налаштувань сайту

Прочитати налаштування сповіщень про оновлення системи:

powershell
node imghost-token-site-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --get `
  --area security `
  --section systemUpdate

Змінити email сповіщень про оновлення системи. Спершу запустіть без --apply, щоб побачити попередній результат:

powershell
node imghost-token-site-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --area security `
  --section systemUpdate `
  --set email="admin@example.com"

Потім збережіть після перевірки:

powershell
node imghost-token-site-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --area security `
  --section systemUpdate `
  --set email="admin@example.com" `
  --apply

Змінити ефект зірок на сторінці адміністратора:

powershell
node imghost-token-site-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --area page `
  --section adminSettings `
  --set starsEffect=true `
  --apply

Змінити мову IP-геолокації:

powershell
node imghost-token-site-settings.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --area others `
  --section ipGeolocation `
  --set language="en" `
  --apply

Налаштування локального вузла федерації можуть читати й оновлювати звичайні поля, як-от стан увімкнення, каталог синхронізації та код запрошення. Підтвердження домену через API Token не виконується. Якщо адмін-панель повідомляє, що домен локального вузла відрізняється від поточного домену доступу, завершіть підтвердження в адмін-панелі браузера.

Федеративні зв'язки

Скрипт федерації керує станом локального вузла, вихідними вузлами, вхідними вузлами, повідомленнями, запитами на приєднання, повторними заявками без запису, схваленнями, відмовами та легкими діями зв'язків, які не потребують очищення індексу.

Оновлення індексу, видалення індексу федерації та підтвердження зміни домену залежать від повного браузерного процесу. Скрипт не виконує ці важкі операції.

Легкі та важкі дії федерації

ДіяПідтримка скриптомОпис
Переглянути стан локального вузла та список зв'язківПідтримуєтьсяЛише читає записи зв'язків.
Читати й надсилати повідомленняПідтримуєтьсяЧитає або записує повідомлення зв'язку.
Подати запит на приєднання до іншого вузлаПідтримуєтьсяВикористовує посилання запрошення для надсилання запиту.
Повторна заявка для зв'язку без записуПідтримуєтьсяЛише для вихідних карток із lastResult=none; потрібен 6-символьний код запрошення.
Скасувати вихідний очікуваний запитПідтримуєтьсяСкасовує лише очікуваний запит.
Прийняти або відхилити вхідний запитПідтримуєтьсяОбробляє запити від вузлів, що приєднуються до вашого.
Видалити прийнятий вхідний зв'язокПідтримуєтьсяОновлює запис вхідного зв'язку й повідомляє іншу сторону.
Видалити завершений вхідний записПідтримуєтьсяВидаляє лише завершений запис вхідного зв'язку.
Скасувати прийняту вихідну підпискуЛише браузерПотрібне локальне видалення індексу федерації, яке браузер виконує пакетами.
Видалити завершений вихідний записЛише браузерМоже спершу потребувати очищення індексу федерації.
Підтвердити або скасувати зміну доменуЛише браузерПотребує підтвердження поточного домену та обробки індексу зміни домену.
Опублікувати, отримати або пакетно видалити індексиЛише браузерЦе пакетні задачі фронтенда.

Параметри федерації

ПараметрОпис
--statusПоказує стан локального вузла федерації, вихідні вузли та вхідні вузли.
--listПоказує федеративні зв'язки.
--chatЧитає кешовані повідомлення одного зв'язку.
--send-messageНадсилає повідомлення одному встановленому зв'язку.
--joinЗапитує приєднання до іншого вузла через посилання запрошення.
--reapplyПовторно подає заявку для зв'язку без запису. Потрібен 6-символьний код запрошення.
--acceptПриймає вхідний запит.
--denyВідхиляє вхідний запит.
--cancelСкасовує вихідний очікуваний запит або видаляє прийнятий вхідний зв'язок.
--deleteВидаляє завершений запис вхідного зв'язку.
--direction <outgoing|incoming|all>Напрям зв'язку. outgoing означає вузли, до яких ви приєдналися; incoming означає вузли, що приєднуються до вашого.
--domain <url>Домен вузла зв'язку.
--invite-link <url>Посилання запрошення від вузла-партнера.
--invite-code <code>6-символьний код запрошення для повторної заявки.
--text <message>Текст повідомлення.
--applyЗберігає результат запису.

Приклади федерації

Переглянути стан локального вузла та обидва списки зв'язків:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --status

Показати лише вихідні вузли:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --list `
  --direction outgoing

Показати лише вхідні вузли:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --list `
  --direction incoming

Подати запит на приєднання до іншого вузла. Спершу запустіть без --apply, щоб побачити попередній результат:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --join `
  --invite-link "https://peer-domain/federation/invite/abcdef"

Потім збережіть після перевірки:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --join `
  --invite-link "https://peer-domain/federation/invite/abcdef" `
  --apply

Повторна заявка для зв'язку без запису:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --reapply `
  --domain "https://peer-domain" `
  --invite-code "abc123" `
  --apply

Прийняти вхідний запит:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --accept `
  --domain "https://peer-domain" `
  --apply

Відхилити вхідний запит:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --deny `
  --domain "https://peer-domain" `
  --apply

Надіслати повідомлення встановленому зв'язку:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --send-message `
  --direction outgoing `
  --domain "https://peer-domain" `
  --text "Hello, this is a test message." `
  --apply

Скасувати вихідний очікуваний запит:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --cancel `
  --direction outgoing `
  --domain "https://peer-domain" `
  --apply

Видалити прийнятий вхідний зв'язок:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --cancel `
  --direction incoming `
  --domain "https://peer-domain" `
  --apply

Видалити завершений вхідний запис:

powershell
node imghost-token-federation.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --delete `
  --direction incoming `
  --domain "https://peer-domain" `
  --apply

Скасування прийнятої вихідної підписки та видалення вихідного запису мають виконуватися в адмін-панелі браузера, бо ці дії можуть спершу потребувати очищення локального індексу федерації.

Невідповідність домену

Якщо домен локального вузла та очікуваний домен у зв'язку не збігаються, скрипт повідомляє помилку з currentDomain і pendingDomain. Обробіть це в адмін-панелі браузера, оскільки зміни домену також включають очищення та підтвердження вихідних індексів.

Якщо запит на приєднання повертає FEDERATION_NODE_DOMAIN_MISMATCH, домен із посилання запрошення не збігається зі збереженим локальним доменом вузла-партнера. Відповідь містить currentOrigin і detectedOrigin. Використайте поточний підтверджений домен партнера або попросіть партнера спершу підтвердити домен у своїй адмін-панелі браузера.

FAQ

Чому моя зміна не набула чинності?

Команди запису типово виконуються в режимі попереднього перегляду. Після перевірки попереднього результату додайте --apply, щоб справді зберегти зміну.

Як дізнатися, які поля можна змінювати?

Для налаштувань завантаження використовуйте --get, щоб переглянути наявну структуру дочірнього каналу. Для налаштувань безпеки, сторінок та інших налаштувань використовуйте --list-sections, щоб побачити області, розділи й поля, які скрипт може редагувати.

Я хочу використати результат в іншій програмі

Використовуйте --output json або додайте --save-response result.json. Ваша програма може напряму прочитати збережений JSON-файл.

Released as user documentation for ImgHost.