Skip to content

إدارة إعدادات API Token

إدارة إعدادات API Token مخصصة لسكربتات الأتمتة، وأدوات التشغيل، ولوحات التحكم التابعة لجهات خارجية. يمكنها قراءة إعدادات قنوات الرفع وتحديثها، وإعدادات الأمان، وإعدادات الصفحات، والإعدادات الأخرى، والعلاقات الاتحادية الخفيفة من دون فتح صفحة الإدارة.

لا تكشف صلاحية الإدارة إلا العمليات الخفيفة المناسبة للسكربتات. أما العمليات الثقيلة التي تتطلب تأكيدًا في المتصفح، أو مهامًا دفعية من الواجهة الأمامية، أو تنظيف فهارس الاتحاد، فما زالت تحتاج إلى تنفيذها من لوحة الإدارة في المتصفح.

تعديل API Token

قبل البدء

افتح لوحة الإدارة، ثم انتقل إلى:

text
System Settings -> Security Settings -> API Token

عند إنشاء API Token أو تعديله، تأكد من أنه يملك صلاحية الإدارة. يمكن لصلاحية الإدارة تغيير إعدادات الموقع، لذلك لا تمنحها إلا لسكربتات موثوقة أو مستخدمين موثوقين.

تستخدم سكربتات الإدارة الثلاثة وضع المعاينة افتراضيًا في عمليات الكتابة. بعد مراجعة المعاينة، أضف --apply لحفظ التغييرات فعليًا.

يمكنك أيضًا وضع الرمز في متغير بيئة:

powershell
$env:IMGHOST_API_TOKEN="your API Token"

تنزيل سكربتات الإدارة

توفر حزمة الوثائق ثلاثة سكربتات مبنية على Node.js:

السكربتالغرض
سكربت إدارة إعدادات الرفعإدارة قنوات الرفع، والقنوات الفرعية، وموازنة الحمل.
سكربت إدارة إعدادات الموقعإدارة إعدادات الأمان، وإعدادات الصفحات، والإعدادات الأخرى.
سكربت إدارة علاقات الاتحادإدارة إجراءات علاقات الاتحاد الخفيفة، والطلبات، والرسائل.

يتطلب ذلك Node.js 18 أو إصدارًا أحدث.

المعلمات المشتركة

المعلمةإلزاميةالوصف
--base-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حفظ نتيجة الكتابة.

مفاتيح القنوات

مفتاح القناةالقناة
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الصفحة العامة، وصفحة جهة المستخدم، وصفحة الإدارة، وإعدادات العرض ذات الصلة.
إعدادات أخرىothersواجهة API للصور العشوائية، والتصفح العام، وعقدة الاتحاد المحلية، والوسوم التلقائية، وتحديد الموقع الجغرافي حسب 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 مع معرّفات عناصر إعدادات الصفحة، مثل 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

تغيير بريد إشعار تحديث النظام. شغّل الأمر أولًا من دون --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 تأكيد النطاق. إذا أبلغت لوحة الإدارة أن نطاق العقدة المحلية يختلف عن نطاق الوصول الحالي، فأكمل التأكيد في لوحة الإدارة داخل المتصفح.

علاقات الاتحاد

يدير سكربت الاتحاد حالة العقدة المحلية، والعقد الصادرة، والعقد الواردة، والرسائل، وطلبات الانضمام، وإجراءات إعادة التقديم عند عدم وجود سجل، والموافقات، والرفض، وإجراءات العلاقات الخفيفة التي لا تتطلب تنظيف الفهارس.

يعتمد تحديث الفهارس، وحذف فهرس الاتحاد، وتأكيد تغيير النطاق على سير العمل الكامل في المتصفح. ولا يعالج السكربت هذه العمليات الثقيلة.

إجراءات الاتحاد الخفيفة والثقيلة

الإجراءدعم السكربتالوصف
عرض حالة العقدة المحلية وقوائم العلاقاتمدعوميقرأ سجلات العلاقات فقط.
قراءة الرسائل وإرسالهامدعوميقرأ رسائل العلاقة أو يكتبها.
طلب الانضمام إلى عقدة أخرىمدعوميستخدم رابط دعوة لإرسال طلب.
إعادة التقديم لعلاقة بلا سجلمدعوممتاح فقط لبطاقات outgoing التي تحمل lastResult=none؛ ويتطلب رمز دعوة من 6 أحرف.
إلغاء طلب outgoing معلّقمدعوميلغي طلبًا معلّقًا فقط.
قبول طلب incoming أو رفضهمدعوميعالج الطلبات الواردة من عقد تريد الانضمام إلى عقدتك.
إزالة علاقة incoming مقبولةمدعوميحدّث سجل العلاقة الواردة ويخطر النظير.
حذف سجل incoming نهائيمدعوميحذف سجل علاقة واردة نهائيًا فقط.
إلغاء اشتراك outgoing مقبولمن المتصفح فقطيحتاج إلى حذف فهرس الاتحاد المحلي، وهذا ينفذه المتصفح على دفعات.
حذف سجل outgoing نهائيمن المتصفح فقطقد يتطلب تنظيف فهرس الاتحاد أولًا.
تأكيد تغيير النطاق أو إلغاؤهمن المتصفح فقطيتطلب تأكيد النطاق الحالي ومعالجة فهرس تغيير النطاق.
نشر الفهارس أو سحبها أو حذفها دفعيًامن المتصفح فقطهذه مهام دفعية في الواجهة الأمامية.

معلمات الاتحاد

المعلمةالوصف
--statusعرض حالة عقدة الاتحاد المحلية، والعقد الصادرة، والعقد الواردة.
--listعرض علاقات الاتحاد.
--chatقراءة الرسائل المخزنة مؤقتًا لعلاقة واحدة.
--send-messageإرسال رسالة إلى علاقة قائمة.
--joinطلب الانضمام إلى عقدة أخرى عبر رابط دعوة.
--reapplyإعادة التقديم لعلاقة بلا سجل. يتطلب رمز دعوة من 6 أحرف.
--acceptقبول طلب وارد.
--denyرفض طلب وارد.
--cancelإلغاء طلب outgoing معلّق، أو إزالة علاقة incoming مقبولة.
--deleteحذف سجل علاقة incoming نهائي.
--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

إلغاء طلب outgoing معلّق:

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

إزالة علاقة incoming مقبولة:

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

حذف سجل incoming نهائي:

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. استخدم النطاق المؤكد الحالي لدى النظير، أو اطلب من النظير تأكيد النطاق في لوحة الإدارة داخل المتصفح أولًا.

الأسئلة الشائعة

لماذا لم يدخل تغييري حيّز التنفيذ؟

تعمل أوامر الكتابة في وضع المعاينة افتراضيًا. أضف --apply بعد مراجعة المعاينة لحفظ التغيير فعليًا.

كيف أعرف الحقول التي يمكن تغييرها؟

بالنسبة إلى إعدادات الرفع، استخدم --get لفحص بنية القناة الفرعية الحالية. وبالنسبة إلى إعدادات الأمان وإعدادات الصفحات والإعدادات الأخرى، استخدم --list-sections لعرض المناطق والأقسام والحقول التي يستطيع السكربت تعديلها.

أريد استخدام النتيجة في برنامج آخر

استخدم --output json، أو أضف --save-response result.json. يستطيع برنامجك قراءة ملف JSON المحفوظ مباشرة.

Released as user documentation for ImgHost.