כל ה-URLs של המערכת

מפת נקודות הקצה של ליבת WizzoCMS - כל controller תחת system/, הנתיבים המיוחדים של ה-ROUTER, ופאנלי האדמין, עם מי רשאי לקרוא לכל אחד.

⏱ 21 דק' קריאה 3709 מילים ערוך דף זה ב-GitHub

הדף הזה הוא מפת הכתובות של הליבה: כל מה שאפשר לבקש בפועל מאתר CORE50, ומי רשאי לבקש אותו. הוא מחולק לשלושה חלקים: נתיבים מיוחדים שה-ROUTER מזהה לפני כל controller, ה-controllers של הליבה תחת system/ (מקובצים לפי תחום), ופאנלי הניהול תחת כתובת האדמין. בכל טבלה העמודה "מי רשאי" נבדקה מול קוד ה-controller, לא מול התיעוד.

הערה
{admin} בכל הדף הוא placeholder לכתובת האדמין של האתר. הערך האמיתי נקבע בקונפיגורציה של כל אתר (CONFIG::$admin_url) ואיננו קבוע. system/ הוא הקידומת של controllers מהליבה: בפריסה, קבצי api/core/controllers/*.php נטענים דרך הכתובת /system/<controller>/<method>.

איך כתובת מתפענחת#

controllers של הליבה#

ה-ROUTER מתאים את הנתיב לאחד מארבעה דפוסים (הקוד ב-ROUTER::parse_friendly_url) ושומר את התוצאה ב-$_GET["sys_controller"] וב-$_GET["pname"]:

נתיבsys_controllerpnameפרמטר נוסף
system/<c><c>ריק (כלומר index)
system/<c>/<m><c><m>
system/<c>/<id> (מספר)<c>ריקמזהה מספרי
system/<c>/<m>/<id><c><m>מזהה

אחר כך PAGE::load קורא ל-MODULE::get_html($_GET["sys_controller"], $_GET["pname"], true). הלוגיקה, כפי שהיא ב-MODULE::get_html:

  1. הקובץ CONFIG::$core_path/controllers/<c>.php נטען, והמחלקה <c> חייבת להתקיים.
  2. אם is_callable([$mdl, $page]), נקראת המתודה (index כברירת מחדל) ואז $mdl->wrapper($content).
  3. כל כישלון מוביל לעמוד השגיאה (404).

לא קיימת שורה ב-CRM_modules עבור controller של הליבה: הקובץ עצמו הוא ההרשמה.

שימו לב

כל מתודה ציבורית של ה-controller היא נקודת קצה, כולל מתודות שירשה מ-wz_controller (wrapper, view, system_view). לכן ב-controller חדש מתודת עזר שאינה נקודת קצה חייבת להיות private או protected. הרשאה נבדקת בגוף המתודה או ב-constructor, אף פעם לא ברמת הניתוב (ראו controllers של הליבה ו-מודל האבטחה).

Controllers של הליבה רצים רק באתר לקוח (CONFIG::$system_type == "client"). כתובת תחת /{admin}/... לא מגיעה אליהם. בדיקת הדומיינים המותרים ("URL ERROR") מדולגת עבור minify ו-Tools, כדי שקבצי JS ו-CSS יוגשו מכל דומיין שמפנה לאתר.

אדמין#

כתובת אדמין היא אחת מהצורות הבאות, וכולן קובעות system_type="admin":

נתיבמה נטען
/{admin}פאנל הבית (home)
/{admin}/<panel>המתודה index של ADMINMODULE_<panel>
/{admin}/<panel>/<method>מתודה אחרת של הפאנל
/{admin}/<panel>/<method>/<id> או /{admin}/<panel>/<id>מתודה עם מזהה

סדר השערים: שער המדינות (admin_countries::get_active(), מדולג כש-REMOTE_ADDR == SERVER_ADDR או WIZZO_NET::is_wizzo()), אחר כך ADMIN::is_admin() (בלעדיו מוצג תבנית admin_login), ואז AdminModule::GetPageContent. הפירוט בטבלאות הפאנלים בהמשך.

נתיבים מיוחדים של ה-ROUTER#

הנתיבים האלה לא עוברים דרך system/ והם מטופלים לפני טעינת העמוד:

נתיבמה מוגשמי רשאי
/<32 תווי hex>.txtקובץ מפתח IndexNow (SeoIndexNow::serve_engine_key)ציבורי
/poosh-sw.jsה-service worker של POOSHציבורי
/tjs.jsה-SDK של TARGETציבורי
/pjs.jsפרוקסי לווידג'ט של Pilot (מטמון 5 דקות)ציבורי
/p/<slug>עמוד שמרונדר ב-newpage (newpage_public, הפרמטר np_slug)ציבורי
/tag_manager.jsminify::tag_managerציבורי
/minify/<id>.js או /minify/<id>.cssminify::index עם המזההציבורי
/assets/....scss.css ו-/....scss.cssminify::scss (קומפילציה של SCSS)ציבורי
/assets/<קובץ>.<js, css, jpg...>נכס מתיקיית core/assets עם Access-Control-Allow-Origin: *ציבורי

פירוט של מסלול הבקשה ב-ניתוב וב-צינור הנכסים.

מי רשאי: מנגנוני ההרשאה בקצרה#

העמודה "מי רשאי" בטבלאות משתמשת במושגים הבאים.

מונחמשמעות
ציבוריבלי בדיקה בקוד
אדמיןADMIN::is_admin(), כלומר סשן ניהול מחובר
מפתח שוקWIZZO_KEY::matches(PARAMS::get("wizzo_market_api_key")): המפתח של האתר מול השוק, מ-Authorization, X-Wizzo-Key או שדות הגוף _key, api_key, _token, בהשוואת hash_equals
מפתח מנועSeoHosted::request_ok() או OlegHosted::request_ok(): זוג המפתחות של המנוע המתארח, מול אותו קורא כותרות
מפתח WizzoAIai_agents_lib::stream_request_ok(): המפתח של שירות WizzoAI של האתר
טוקן cronהפרמטר ?tk= מול הפרמטר cron_runner_token (hash_equals)
טוקן מוצפןערך שנוצר ב-MISC::encode ומפוענח ב-MISC::decode
טוקן בוטהטוקן של ה-bridge של הסוכנים, מאומת מול שרת המאסטר
WIZZO_NETכתובת IP ברשימת הכתובות של Wizzo (WIZZO_NET::is_wizzo())
Bearer MCPטוקן בטבלה CRM_adminPanel_mcp_tokens
שימו לב
WIZZO_NET::is_wizzo() קורא כותרות IP שהלקוח יכול להשפיע עליהן, ולכן הוא לא מספיק כשער יחיד. הגרסה is_wizzo_strict() בודקת REMOTE_ADDR בלבד. נקודות קצה שנשענות על is_wizzo נשענות בנוסף על טוקן, ומי שמוסיף נקודת קצה מהסוג הזה צריך לבחור בגרסה המחמירה (ראו חיזוק האתר).

cron וריצות#

כל המשימות המתוזמנות מופעלות ב-MISC::ping שמוסיף tk ו-cron_save_log_id. תיעוד התזמון ב-cron.

כתובתפרמטריםמי רשאימה היא עושה
system/cron_runner (index)tk (חובה)טוקן cronמפעיל את המשימות שהגיע זמנן, ורושם heartbeat בפרמטר cron_runner_heartbeat
system/cron_runner/runid, tkטוקן cron או אדמיןהפעלה ידנית של שורת cron. פלט טקסט: OK: cron triggered (url) params=.. log_id=..
system/cache_cleanup/runtype=all|pages|itemsציבוריניקוי רשומות מטמון שפג תוקפן. פלט: OK type=.. deleted=.. freed_mb=..
system/admin_session_cleanup/runציבוריניקוי סשנים וניסיונות כניסה שפג תוקפם. פלט: OK sessions_cleaned=.. attempts_cleaned=..
system/ai_cron (index)ציבוריישן: מוצא כלים ב-CRM_ai_tools ש-next_run שלהם עבר ומפעיל אותם
system/ai_cron/run_ai_tooltool (שם מערכת)ציבוריישן: טוען application/ai_tools/<tool>.php, מחלקה ai_tool_<tool>, וקורא ל-index()
system/ai_agent_runner/tick ו-reconciletkטוקן cron או אדמיןסגירת ריצות צ'אט שנתקעו (reconcile_stuck). פלט OK
system/seo_cron/weeklytkטוקן cron או אדמיןמחזיר SKIP: the SEO engine is hosted (SEOK)
system/seo_indexnow/runtkטוקן או אדמיןמעבר ישן, לא פעיל כשהמנוע מתארח
system/perf_advisor/run ו-system/system_health/runציבוריshim שמדפיס הודעת SKIP. קיימים רק בגלל שורות cron ישנות
system/Tools/cron_emails_queueציבורימעבד עד 250 שורות מ-CRM_emails_queue, כלומר שולח מיילים
system/Tools/cron_remove_old_cacheציבוריניקוי מטמון ישן
system/Tools/cron_clear_thumb_errorsציבוריניקוי שגיאות תמונות ממוזערות
שימו לב

נקודות הקצה של ה-cron שמסומנות "ציבורי" לא בודקות הרשאה בקוד. רובן אידמפוטנטיות, אבל cron_emails_queue שולחת מיילים, ו-ai_cron/run_ai_tool בונה נתיב קובץ משם שמגיע מהבקשה. חסימה ברמת השרת (allowlist של כתובות, או הגבלת הנתיב ל-localhost) מומלצת עד שהן יקבלו בדיקת טוקן. שורות cron חדשות צריכות להשתמש ב-system/cron_runner שדורש טוקן.

SEO#

מנוע ה-SEO (SEOK) מתארח בשירות חיצוני, ומבקש מהאתר מידע ופעולות דרך seo_runner. סקירה ב-חבילת ה-SEO וב-IndexNow.

system/seo_runner/<action>#

הגישה דרך SeoHosted::request_ok() (מפתח מנוע), אחרת 401.

פעולהפרמטרים עיקרייםמי רשאיתיאור
catalogמפתח מנועקטלוג היכולות של האתר
site_checksמפתח מנועבדיקות אתר
proposeמפתח מנועיצירת הצעות שינוי
changesמפתח מנוערשימת שינויים
apply_changes, revert_changes, reject_changesמזהים או keyמפתח מנועהחלה, ביטול או דחייה של שינויים
content_panelpanelמפתח מנועתוכן של פאנל
impactמפתח מנועמדידת השפעה
todo_meta, ticketfinding key, projectמפתח מנועפתיחת משימה על ממצא
agent, agent_runsמפתח מנועמצב הסוכן וריצותיו
verificationtokenמפתח מנועאימות בעלות
indexnowkey, ledgerמפתח מנועשליחה ל-IndexNow
exportמפתח מנועייצוא נתונים
register, migrate, statusאדמין או מפתח מנוע (403 אחרת)רישום האתר במנוע, מעבר ישן, מצב

SEO נוסף#

כתובתמי רשאיתיאור
system/seo_indexnow/keyציבורימחזיר כטקסט את מפתח IndexNow של האתר (המפתח נועד להיות גלוי, כך הפרוטוקול עובד)
/<מפתח hex>.txtציבוריאותו מפתח, בצורת הקובץ שמנועי החיפוש מצפים לו
system/seo_cron/weekly, system/seo_indexnow/runראו בקבוצת ה-cron

AI ו-MCP#

תיעוד: סוכני AI, צ'אט AI, סקירת MCP, כלי MCP, שרת הסוכנים.

כתובתפרמטריםמי רשאיתיאור
POST system/mcpJSON-RPC (Streamable HTTP)Bearer MCP (גם ?key= או ?token=)שרת ה-MCP של האתר. ?native=1 משמיט כלי מוצרים חיצוניים. 401 עם קוד -32000 בלי טוקן, 403 כשהמוצר mcp לא פעיל (תקף לטוקנים אנושיים בלבד)
system/wizzoai_api/aiאדמיןקריאה למודל טקסט דרך WizzoAI (הפרמטרים נקראים מגוף הבקשה)
system/wizzoai_api/ai_image, imageאדמיןיצירת תמונה
system/wizzoai_api/get_promptאדמין (בדיקה ב-constructor)פרומפט שמור
system/wizzoai_api/get_models, get_image_modelsאדמיןרשימת מודלים
system/ai_insert_api/createJSON: insert_url, items_count (1 עד 10), instructions, files, generate_imagesאדמיןיוצר פריטים בעזרת AI. מחזיר {success, message, created_count, created_ids, edit_urls, ai_data}
system/excel_import_api/processmultipart: excel_file, insert_urlאדמיןמעבד קובץ אקסל שהועלה
system/excel_import_api/importJSON: excel_data, field_mappings, skip_first_row, insert_urlאדמיןמייבא שורות. מחזיר {success, message}
system/file_processor/extract_contentJSON: files[] עם name, type, size, extension, base64אדמיןחילוץ טקסט מקבצים. מחזיר {success, files}

system/ai_agent_runner/<action>#

הריצה של סוכנים עברה לשירות WizzoAI, והאתר משמש צד שמאשר וחושף כלים.

פעולהמי רשאיתיאור
catalog, mint, finish, approvals, approval_decideמפתח WizzoAIפעולות השירות. mint מקבל {agent, run} ומחזיר {token, url, cms_run_id, agent_id} עם url שמצביע על /system/mcp
runטוקן cron או אדמיןהפעלה (גם אירוע שמגיע מ-Form) של סוכן לפי id, trigger=event|manual|chat
reportrun_secret של הריצה (בגוף ה-JSON)צעדים ודוח סופי של משימת צ'אט
tick, reconcileטוקן cron או אדמיןסגירת ריצות תקועות
register, migrateאדמין או מפתח WizzoAI (403 אחרת)רישום האתר בשירות והעברת סוכנים ישנים

system/agent_mcp/<action>: גשר הסוכנים#

הגישה: כתובת ברשימת Wizzo (WIZZO_NET::is_wizzo(), אחרת 403) וגם טוקן בוט (Authorization: Bearer או שדה _token בגוף) שמאומת מול שרת המאסטר (401 אחרת). הבקשות הן POST עם JSON. כל מתודה ציבורית של ה-controller היא פעולה, ו-capabilities מחזיר את הרשימה החיה.

קבוצהפעולות
מבנה ונתוניםcapabilities, schema, table_info, query
מטמון ושגיאותdelete_cache, error_log, log_data, grep_logs
עדכוןwizzo_update
SEOseo_report, seo_finding, seo_verify, seo_fixed, seo_scan, seo_pull, seo_status, seo_opportunities, seo_sitemaps, seo_sitemap_submit, seo_sitemap_remove, seo_answer, seo_note, seo_report_doc, seo_write_report, seo_changes
AIai_dashboard, ai_usage_logs, ai_log_detail, ai_models, ai_test_flight
קבצים (קריאה)files_capabilities, files_list, files_read, files_find, files_search, files_glob
ניהולadmin_panels, admin_schema, admin_rows, admin_save, admin_set_field, admin_delete, admin_login, admin_logout
שירותיםservice_tools, service_call
שימו לב

הכותרת Access-Control-Allow-Origin של agent_mcp משקפת את ה-Origin של הבקשה, והאימות מתבצע מול כתובת קבועה של שרת המאסטר. שער ה-IP נשען על WIZZO_NET::is_wizzo() (ראו למעלה), כך שהטוקן הוא השער האמיתי. אל תחשפו את הנתיב הזה לרשת ציבורית בלי שכבת הגנה נוספת.

שוק וחיבורים#

תיעוד: סקירת השוק, קטלוג השירותים.

system/connector#

ה-constructor דורש מפתח שוק, אחרת 401 עם JSON. OPTIONS מחזיר 204. הפעולה נבחרת לפי הקטע השני בכתובת או לפי ?do=. התשובות הן {ok:true,...} או {ok:false,error}.

פעולהפרמטריםתיאור
index (ברירת מחדל)Discovery: {connector, core, site{url,domain,name,admin,panel}, services, capabilities{tools,identity,perf,seo,settings}, state}
statusמצב החיבורים
mcp_connectrotate (אופציונלי)מנפיק או מחדש טוקן MCP. 502 כשנכשל
agents_readyforceמכין את שירות הסוכנים. 409 אם WizzoAI לא פעיל
oleg_readyמכין את שירות אולג. 409 אם לא פעיל
seo_readyמכין את שירות ה-SEO

system/wizzo_market_api/<נתיב>#

כתובתמי רשאיתיאור
system/wizzo_market_api/syncמפתח שוק (403 אחרת)השוק מורה לאתר למשוך מחדש את ההגדרות (get_settings)
system/wizzo_market_api/<כל נתיב אחר>אדמין (אחרת Access denied)פרוקסי אל https://market.wizzo.media/api/<נתיב> עם גוף הבקשה

system/perf_runner: אולג (בריאות וביצועים)#

ה-constructor קובע JSON ו-no-store, ו-OPTIONS מחזיר 204. הפעולה נבחרת לפי המתודה או לפי ?do= (ברירת מחדל discovery). הגוף יכול להגיע כמעטפת gzip: {"z": "<base64>"}.

פעולהפרמטריםמי רשאיתיאור
discoveryמפתח מנועיכולות האתר
capture_start, capture_status, capture_collect, capture_abortminutes, max_bytes, session_id, tuningמפתח מנועהקלטת עומס לתקופה ואיסוף התוצאה
deep_dive, health_collect, vitalstop_queriesמפתח מנועאיסוף נתוני בריאות
apply_indexsql, runמפתח מנועהוספת אינדקס
code_bundlelocs, tablesמפתח מנועקוד רלוונטי לאבחון
todo_meta, ticket, ticket_closesubject, details_html, project_id, id, comment_htmlמפתח מנועמשימות
exportמפתח מנועייצוא
register, migrate, status, panel_tokenאדמין או מפתח מנוע (403 אחרת)רישום, מצב, טוקן לפאנל

מפתח מנוע לא חוקי מחזיר 401 לפעולות שמיועדות למנוע. ראו בריאות וביצועים.

אנליטיקס ופרסום#

כתובתפרמטריםמי רשאיתיאור
system/analytics (index)action (בגוף, POST או query) ונתוניםציבורי. הכותרת Token מאומתת רק אם נשלחהמעביר ל-m_analytics->$action($data) אם המתודה קיימת. תשובה {"data": ...}
system/analytics עם action=additem_type, item_id, event, urlכנ"לרושם אירוע. event חייב להופיע ב-CRM_analytics_events והערכים מוגבלים ל-[a-z0-9_]
system/analytics עם action=get_token, renew_tokenכנ"להנפקה וחידוש טוקן ללקוח
system/ad_manager/gotourlid (מוצפן)ציבוריסופר קליק על באנר ומפנה
system/ad_manager/get_all_bannersJSON או POST: banners[]ציבורימחזיר JSON של הבאנרים
system/ad_manager/get_typesציבוריסוגי הבאנרים (m_banner::$types)
/tjs.js, /pjs.js, /poosh-sw.jsציבוריSDK של TARGET, ווידג'ט Pilot, service worker של POOSH
שימו לב
analytics ו-ad_manager מחזירים Access-Control-Allow-Origin שמשקף את ה-Origin יחד עם credentials, ו-analytics מדלג על אימות הטוקן כשהכותרת Token חסרה. מי שמסתמך על הנתונים ללוחות מדידה צריך להתייחס אליהם כנתוני לקוח לא מאומתים.

קבצים ותמונות#

תיעוד: אחסון, כלי תמונות, אבטחת העלאות, מנהל קבצים.

כתובתפרמטריםמי רשאיתיאור
system/minify (index)id, verציבוריבונה קובץ JS או CSS מקבוצה ב-CRM_minify_groups, ושומר ב-cache/<server>/minify/. הנתיב הרגיל: /minify/<id>.js
system/minify/scssנתיב ה-*.scss.cssציבוריקומפילציה של SCSS. כישלון: 500 עם no-store
system/minify/tag_managerid (מספר או system), keys=a,bציבורימחזיר applyTags([...]);
system/pdf_viewer (index)id (מזהה אחסון מוצפן)טוקן מוצפןמציג PDF. מקבל PDF בלבד
system/newpage_public (index)np_slug (מ-/p/<slug>)ציבוריהסלאג חייב להתאים ל-^[\p{L}\p{N}_-]+$ עד 80 תווים. נדרש שירות newpage פעיל. מטמון של דקה, תצוגה מקדימה (?_npprv=) לא נשמרת במטמון ומסומנת noindex
system/CropManager (index, doSave)token (מוצפן, עם id>0)טוקן מוצפןעורך חיתוך תמונה
system/CropManager/doCrop, doFlip, doGray, doMirror, doPixelResize, doResize, doRotate, downloadImg, filters, previewPic, uploadImgimgName ועודציבוריפעולות על קובץ ב-STORAGE::$temp_folder
system/photofilter (index)sidציבוריעורך פילטרים
system/photofilter/uploadPOST: sid, tumb, type=primary|tumb, קובץ croppedImageציבורימחליף קובץ אחסון לפי sid
system/Tools/securityPicrandom_numציבוריתמונת captcha (JPEG)
system/Tools/securityPic_checkPOST: nameציבוריבודק תשובת captcha
system/Tools/CRMציבוריJS: var CRM = {מילים}
system/Tools/GalleryActionstokenטוקן מוצפןפעולות גלריה: remove, rotate_*, crop, download, getPic
system/Tools/AutocompleteDBtoken, qטוקן מוצפןהשלמה אוטומטית מה-DB (15 שורות)
system/Tools/LiveEditPOST: token[], value[]טוקן מוצפןעדכון שדה בטבלה לפי הטוקן
system/Tools/gallery_show_pictokenטוקן מוצפןתמונה דרך thumb
system/Tools/CKEditor_upload, CKEditor_upload_new, CKEditor_upload2העלאת קובץאדמיןהעלאה מתוך CKEditor
system/Tools/save_url_to_storagePOST: urlאדמיןהורדת כתובת לאחסון
system/Tools/gallery_uploadהעלאת קובץאדמיןהעלאה לגלריה
system/Tools/gallery_replacePOST: sidאדמיןהחלפת קובץ גלריה
system/Tools/delete_cachePOST: urlאדמיןמחיקת מטמון של עמוד
שימו לב
photofilter/upload ו-CropManager/do* לא בודקים ADMIN::is_admin() בקוד. הראשון מחליף קובץ אחסון קיים לפי sid, ולכן כדאי להוסיף לו בדיקת הרשאה, ועד אז להגביל את שני הנתיבים בשרת. ראו אבטחת העלאות.

ליבה ובריאות#

כתובתפרמטריםמי רשאיתיאור
system/core_ping (index)ציבוריJSON {ok, version, db, php} ללא מטמון. משמש את מנגנון העדכון
system/admin_login (index)action=login|phone|check_otpציבוריכניסת מנהל (ראו בקבוצת האדמין)
system/admin_login/loginPOST: username, password, csrf_tokenציבוריבדיקת Referer מול דומיינים מותרים, CSRF אופציונלי, ואז OTP (WIZZO ID, מייל, SMS או skip_otp). תשובת טקסט: true, false, skip_otp
system/admin_login/check_otpPOST: otp_token, username, passwordציבוריlong-poll עד 50 שניות. true, declined או false
system/admin_login/login_astokenטוקן login-asADMIN::validate_login_as_token. המבקש חייב developer_token. מתחזה ומפנה לאדמין
system/admin_login/logoutציבורייציאה

system/check_version/<method> (שרת המאסטר בלבד)#

הקובץ לא נכלל בחבילת הליבה שמתפרסת לאתרי לקוח. הוא רץ בשרת המאסטר, ומשרת את מנגנון העדכונים.

פעולהפרמטריםמי רשאיתיאור
checkver, channel=stable|latest, format=jsonציבוריטקסט או JSON {ok, installed, latest, stable, channel, target, stable_fallback, update_available, php_floor, php_master}
getver, channel, format=jsonציבוריכתובת zip של הגרסה, או up_to_date
promotever, טוקן (?token=, _token או Bearer)טוקן בוטמקפיא את ה-zip של הערוץ stable. 403 בלי טוקן
validate_bot_tokentokenציבורי{valid: bool}. משמש את agent_mcp
db_structureציבוריJSON של מבנה ה-DB
panelציבוריJSON של קטגוריות הפאנלים והפאנלים
cron_systemציבוריJSON של קטגוריית ה-cron של המערכת ומשימותיה
jsציבוריכתובת zip של תיקיית ה-js
headציבוריה-SHA העדכני ב-GitHub
changesfrom_sha, to_sha, ver, forceציבוריהערות גרסה מ-git וסיכום AI
version_changesversionציבוריהערות גרסה לגרסה אחת
שימו לב

בשרת המאסטר, db_structure, panel, cron_system, js, head, changes ו-version_changes פתוחים בלי אימות, ו-validate_bot_token משווה עם === וללא הגבלת קצב. אין בהם נתוני לקוח, אבל הם חושפים מבנה פנימי. יש להגן עליהם ברמת השרת.

אדמין#

שערים וכללי אבטחה#

הפאנלים נמצאים ב-api/core/admin/<panel>.php (מחלקה ADMINMODULE_<panel>), או ב-application/admin/<panel>.php לפאנלים של האתר. ההרשאות נקבעות ב-AdminModule::GetPageContent:

  1. המשתמש מחובר (ADMIN::is_admin()), אחרת מוצג מסך הכניסה.
  2. קיימת שורה בטבלת CRM_adminPanel_panels והקבוצה של המשתמש מורשית (ADMIN::has_perms()), אחרת עמוד שגיאה. פאנל עם static $skip_permission_check (או משתנה ציבורי באותו שם) מדלג על הבדיקה הזאת.
  3. אם בשורת הפאנל perm_developer=1, נדרש ADMIN::is_developer().
  4. method_exists על המתודה המבוקשת, אחרת 404 (עם כותרת AI-Error ו-JSON לקורא תוכנתי).

כל מתודה ציבורית של ADMINMODULE_<panel> היא כתובת, גם אם נועדה להיות AJAX בלבד. ראו הרשאות אדמין ו-אימות אדמין.

הערה

קריאות AJAX מתוך הפאנלים מגיעות בצורה /{admin}/<panel>/<method>?pmode=empg (או inner). pmode=empg מסיר את מעטפת העמוד ומחזיר רק את הפלט. הערך הזה נקבע גם בקוד של חלק מהפאנלים ($_GET["pmode"] = "empg"). פורמט התשובות ב-ה-JSON API של האדמין.

שימו לב
db_manager נרשם ב-install_db_manager עם perm_developer=0, ואין בקוד שלו בדיקת is_developer, כך שכל מנהל שקיבל את ההרשאה לפאנל יכול להריץ בו שאילתות ושינויי סכימה. הפאנלים הרגישים באמת (file_manager, composer) דורשים מפתח בקוד עצמו. מומלץ להגדיר גם את db_manager כמצריך הרשאת מפתח.

מעטפת הפאנל (AdminModule)#

כתובתמי רשאיתיאור
/{admin}מנהל מחוברפאנל הבית (home): index, presence
/{admin}/<panel>מנהל עם הרשאהindex של הפאנל
/{admin}/<panel>/<method>[/<id>]מנהל עם הרשאהמתודה של הפאנל
/{admin}/wizzo_market?tool=<tool>מנהל עם הרשאה לפאנל של המוצרפאנלים של מוצרי השוק נפתחים כ"כלי" בתוך wizzo_market. ההרשאה היא של המוצר, לא של החנות

פאנלי הליבה ו-AJAX שלהם#

הטבלה מפרטת את המתודות הציבוריות של כל פאנל תחת api/core/admin. מתודות index ו-insert הן מסכי הרשימה והטופס הרגילים של פאנל ומוזכרות רק כשהן נקודת הקצה היחידה. המסומנים "דלג הרשאה" הם פאנלים עם skip_permission_check: עדיין נדרש מנהל מחובר, אך לא שורה בטבלת הפאנלים והרשאת קבוצה.

פאנלמתודות (תחת /{admin}/<panel>/)הערות
homeindex, presenceדשבורד הבית. פאנלים של מפתח מוסתרים ממי שאינו מפתח
Adminsindex, insert, insertGroup, groupsList, perms, save_group, my_sessions, revoke_session, logout_all_sessions, ac_searchמנהלים, קבוצות והרשאות, וניהול הסשנים של המנהל
admin_countriesindex, get_countries, save_countries, toggleשער המדינות של האדמין. דלג הרשאה
admin_chatget_messages, send_message, upload_file, mark_read, get_unread_count, delete_messageצ'אט בין מנהלים. דלג הרשאה, וכל מתודה בודקת is_admin
ai_chatconversations, conversation_create, conversation_update, conversation_delete, messages, message_save, memory_list, memory_save, memory_delete, get_custom_instructions, automations_get, upload_image, save_image, upload_file, generate_title, db_tables, db_table_schema, db_query, mcp_tools, mcp_callצ'אט ה-AI של האדמין. דלג הרשאה. mcp_tools ו-mcp_call בודקים is_admin במפורש
ai_chat_settings, ai_chat_automations_settings, ai_commands, ai_promptsindex, insert. ב-ai_prompts גם version_history, do_restore_version, getVersionStats, cleanupDuplicateVersions, train_modelהגדרות AI ופרומפטים
ai_agentschat_job, chat_job_status, propose_draftAJAX של פאנל הסוכנים: משימת צ'אט, מצבה, והצעת טיוטה
chat_actionsnew_pageיצירת עמוד מתוך הצ'אט. דלג הרשאה
analyticsindex, events, insert, results, last_week, get_real_time, get_og_tags, hot_groupsלוחות מדידה
clear_cacheindex, index_data, remove_page, remove_all_pages, remove_all_items, remove_all_data, remove_item, remove_data, search, search_remove, clear, fix_cache, get_stats, cleanup_expired, compress_cache, get_settings, clear_smarty, get_smarty_statsניהול המטמון (ניהול מטמון)
composerindex, status, packages, outdated, search, install_composer, create_manifest, hook_autoload, run, jobperm_developer. פקודות run: install, update, update_package, require, remove, dump_autoload, validate, clear_cache, diagnose, self_update. ראו Composer
cron_managerindex, insertCategory, tasks, crontab_status, diagnostics, insert, setup_cron, logsניהול משימות cron (cron)
db_managerindex, apiapi מקבל action ב-query או בגוף JSON (ברירת מחדל tables). ראו הטבלה למטה
debug_logs, sqllogindex; ב-sqllog גם clear, active_log, apiיומנים (אבחון)
error_logindexיומן שגיאות. דלג הרשאה
file_managerindex, api, downloadperm_developer, ובנוסף is_developer ב-constructor. פעולות api בטבלה למטה. ראו מנהל קבצים
install_db_manager, install_file_managerindex, uninstallהתקנת הפאנלים והסרתם. install_file_manager רושם perm_developer=1 ומתקן שורה שנרשמה עם 0
MailTpl, Modules, Pages, Params, platforms, quick_actions, redirections, Scripts, Seo, seo_center, Tree, ui_langs_legacy, wzcontact, accessibilityindex, ובמרבית insertפאנלי טבלה רגילים. ב-ui_langs_legacy גם insertGroup, words, insertWord. ב-wzcontact גם answer_contact ו-api
minifyindex, groups_insert, files, files_insertקבוצות ה-minify
newpage_media, poolse_media, target_mediaindex, upload, list_files, removeAJAX של ספריות המדיה של המוצרים. דלג הרשאה, בדיקת is_admin ב-constructor
PanelListindex, allModules, insert, insertOption, insertTab, moduels, panelOptions, settingsניהול הפאנלים עצמם
panel_registryindex, list, register, existsרישום פאנל חדש. register מקבל POST או query: panel_name, text, category, icon, perm_developer, ord
safe_sqlindex, execute, create_log_table, clear_historyהרצת SQL עם יומן. תשובת JSON
server_loadindex, stats, queries, toggle_logעומס שרת. דלג הרשאה. stats ו-queries נבדקות ב-is_admin
storageindex, list, insert, labels, search_pics, search_pics_ai, ai_recommend, folders, add_folder, save_folder_details, move, delete_folder, save_details, remove, bulk_move, bulk_delete, bulk_tag, chat_add_from_url, get_thumb, wz_editor_upload, edit_image, image_proxyמנהל האחסון (אחסון). דלג הרשאה, ומתודות רגישות בודקות is_admin
tag_managerindex, insert_group, scripts, scripts_insertניהול תגיות
todoindex, meta, save_settings, tickets, ticket, finish, approve, create_ticketחיבור ללוח המשימות. דלג הרשאה. כל מתודה בודקת is_admin
wizzo_marketindex, set_api_keyחיבור האתר לשוק. set_api_key רושם פרמטר עם perm_developer=1
wizzo_updateindex, pending, summary, version_summary, get, update_jsעדכון גרסה (עדכונים)
הערה
Admins::get_html, CheckSelectedOption, get_results ודומיהן הן מתודות של רכיבי טופס שמוגדרים באותו קובץ, ולא נקודות קצה של הפאנל. רשימת הפאנלים המלאה וההרשאות שלהם ב-פאנלי הליבה.

db_manager/api: הפעולות#

הקריאה: /{admin}/db_manager/api?action=<פעולה>, גוף JSON אופציונלי. התשובה JSON.

קבוצהפעולות
קריאהtables, table_info, table_details, collations, table_data, row
שורותinsert_row, update_row, update_cell, duplicate_row, delete_row, bulk_delete, bulk_insert
שאילתותexecute_query, export_query_results
AIai_generate_query, ai_analyze_table, ai_explain_query, ai_fix_query, ai_generate_seed
ייצואexport_excel, export_json, export_sql
סכימהcreate_table, add_column, modify_column, drop_column, drop_table, truncate_table, rename_table, duplicate_table, add_index, drop_index, change_collation

file_manager/api: הפעולות#

הקריאה: /{admin}/file_manager/api?action=<פעולה>. התשובה JSON. file_manager/download מחזיר קובץ (application/octet-stream, עם nosniff).

קבוצהפעולות
קריאהcapabilities, list, read, lint, history, history_content, find_files, search_content
כתיבהwrite, create_file, create_dir, rename, move, copy, delete, upload, history_restore
ליבהcore_unlock (פותח או נועל כתיבה לתיקיית הליבה, נרשם ביומן הביקורת)

ראו גם#

מצאתם טעות או חוסר? תקנו את הדף או פתחו Issue בריפו. התיעוד נכתב מתוך הקוד של ליבה 5.0.115.