הדף הזה הוא מפת הכתובות של הליבה: כל מה שאפשר לבקש בפועל מאתר 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_controller | pname | פרמטר נוסף |
|---|---|---|---|
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:
- הקובץ
CONFIG::$core_path/controllers/<c>.phpנטען, והמחלקה<c>חייבת להתקיים. - אם
is_callable([$mdl, $page]), נקראת המתודה (indexכברירת מחדל) ואז$mdl->wrapper($content). - כל כישלון מוביל לעמוד השגיאה (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.js | minify::tag_manager | ציבורי |
/minify/<id>.js או /minify/<id>.css | minify::index עם המזהה | ציבורי |
/assets/....scss.css ו-/....scss.css | minify::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(): זוג המפתחות של המנוע המתארח, מול אותו קורא כותרות |
| מפתח WizzoAI | ai_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/run | id, tk | טוקן cron או אדמין | הפעלה ידנית של שורת cron. פלט טקסט: OK: cron triggered (url) params=.. log_id=.. |
system/cache_cleanup/run | type=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_tool | tool (שם מערכת) | ציבורי | ישן: טוען application/ai_tools/<tool>.php, מחלקה ai_tool_<tool>, וקורא ל-index() |
system/ai_agent_runner/tick ו-reconcile | tk | טוקן cron או אדמין | סגירת ריצות צ'אט שנתקעו (reconcile_stuck). פלט OK |
system/seo_cron/weekly | tk | טוקן cron או אדמין | מחזיר SKIP: the SEO engine is hosted (SEOK) |
system/seo_indexnow/run | tk | טוקן או אדמין | מעבר ישן, לא פעיל כשהמנוע מתארח |
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_panel | panel | מפתח מנוע | תוכן של פאנל |
impact | מפתח מנוע | מדידת השפעה | |
todo_meta, ticket | finding key, project | מפתח מנוע | פתיחת משימה על ממצא |
agent, agent_runs | מפתח מנוע | מצב הסוכן וריצותיו | |
verification | token | מפתח מנוע | אימות בעלות |
indexnow | key, 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/mcp | JSON-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/create | JSON: 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/process | multipart: excel_file, insert_url | אדמין | מעבד קובץ אקסל שהועלה |
system/excel_import_api/import | JSON: excel_data, field_mappings, skip_first_row, insert_url | אדמין | מייבא שורות. מחזיר {success, message} |
system/file_processor/extract_content | JSON: 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 |
report | run_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 |
| SEO | seo_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 |
| AI | ai_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_connect | rotate (אופציונלי) | מנפיק או מחדש טוקן MCP. 502 כשנכשל |
agents_ready | force | מכין את שירות הסוכנים. 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_abort | minutes, max_bytes, session_id, tuning | מפתח מנוע | הקלטת עומס לתקופה ואיסוף התוצאה |
deep_dive, health_collect, vitals | top_queries | מפתח מנוע | איסוף נתוני בריאות |
apply_index | sql, run | מפתח מנוע | הוספת אינדקס |
code_bundle | locs, tables | מפתח מנוע | קוד רלוונטי לאבחון |
todo_meta, ticket, ticket_close | subject, 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=add | item_type, item_id, event, url | כנ"ל | רושם אירוע. event חייב להופיע ב-CRM_analytics_events והערכים מוגבלים ל-[a-z0-9_] |
system/analytics עם action=get_token, renew_token | כנ"ל | הנפקה וחידוש טוקן ללקוח | |
system/ad_manager/gotourl | id (מוצפן) | ציבורי | סופר קליק על באנר ומפנה |
system/ad_manager/get_all_banners | JSON או 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_manager | id (מספר או 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, uploadImg | imgName ועוד | ציבורי | פעולות על קובץ ב-STORAGE::$temp_folder |
system/photofilter (index) | sid | ציבורי | עורך פילטרים |
system/photofilter/upload | POST: sid, tumb, type=primary|tumb, קובץ croppedImage | ציבורי | מחליף קובץ אחסון לפי sid |
system/Tools/securityPic | random_num | ציבורי | תמונת captcha (JPEG) |
system/Tools/securityPic_check | POST: name | ציבורי | בודק תשובת captcha |
system/Tools/CRM | ציבורי | JS: var CRM = {מילים} | |
system/Tools/GalleryActions | token | טוקן מוצפן | פעולות גלריה: remove, rotate_*, crop, download, getPic |
system/Tools/AutocompleteDB | token, q | טוקן מוצפן | השלמה אוטומטית מה-DB (15 שורות) |
system/Tools/LiveEdit | POST: token[], value[] | טוקן מוצפן | עדכון שדה בטבלה לפי הטוקן |
system/Tools/gallery_show_pic | token | טוקן מוצפן | תמונה דרך thumb |
system/Tools/CKEditor_upload, CKEditor_upload_new, CKEditor_upload2 | העלאת קובץ | אדמין | העלאה מתוך CKEditor |
system/Tools/save_url_to_storage | POST: url | אדמין | הורדת כתובת לאחסון |
system/Tools/gallery_upload | העלאת קובץ | אדמין | העלאה לגלריה |
system/Tools/gallery_replace | POST: sid | אדמין | החלפת קובץ גלריה |
system/Tools/delete_cache | POST: 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/login | POST: username, password, csrf_token | ציבורי | בדיקת Referer מול דומיינים מותרים, CSRF אופציונלי, ואז OTP (WIZZO ID, מייל, SMS או skip_otp). תשובת טקסט: true, false, skip_otp |
system/admin_login/check_otp | POST: otp_token, username, password | ציבורי | long-poll עד 50 שניות. true, declined או false |
system/admin_login/login_as | token | טוקן login-as | ADMIN::validate_login_as_token. המבקש חייב developer_token. מתחזה ומפנה לאדמין |
system/admin_login/logout | ציבורי | יציאה |
system/check_version/<method> (שרת המאסטר בלבד)#
הקובץ לא נכלל בחבילת הליבה שמתפרסת לאתרי לקוח. הוא רץ בשרת המאסטר, ומשרת את מנגנון העדכונים.
| פעולה | פרמטרים | מי רשאי | תיאור |
|---|---|---|---|
check | ver, channel=stable|latest, format=json | ציבורי | טקסט או JSON {ok, installed, latest, stable, channel, target, stable_fallback, update_available, php_floor, php_master} |
get | ver, channel, format=json | ציבורי | כתובת zip של הגרסה, או up_to_date |
promote | ver, טוקן (?token=, _token או Bearer) | טוקן בוט | מקפיא את ה-zip של הערוץ stable. 403 בלי טוקן |
validate_bot_token | token | ציבורי | {valid: bool}. משמש את agent_mcp |
db_structure | ציבורי | JSON של מבנה ה-DB | |
panel | ציבורי | JSON של קטגוריות הפאנלים והפאנלים | |
cron_system | ציבורי | JSON של קטגוריית ה-cron של המערכת ומשימותיה | |
js | ציבורי | כתובת zip של תיקיית ה-js | |
head | ציבורי | ה-SHA העדכני ב-GitHub | |
changes | from_sha, to_sha, ver, force | ציבורי | הערות גרסה מ-git וסיכום AI |
version_changes | version | ציבורי | הערות גרסה לגרסה אחת |
בשרת המאסטר, 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:
- המשתמש מחובר (
ADMIN::is_admin()), אחרת מוצג מסך הכניסה. - קיימת שורה בטבלת
CRM_adminPanel_panelsוהקבוצה של המשתמש מורשית (ADMIN::has_perms()), אחרת עמוד שגיאה. פאנל עםstatic $skip_permission_check(או משתנה ציבורי באותו שם) מדלג על הבדיקה הזאת. - אם בשורת הפאנל
perm_developer=1, נדרשADMIN::is_developer(). 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>/) | הערות |
|---|---|---|
home | index, presence | דשבורד הבית. פאנלים של מפתח מוסתרים ממי שאינו מפתח |
Admins | index, insert, insertGroup, groupsList, perms, save_group, my_sessions, revoke_session, logout_all_sessions, ac_search | מנהלים, קבוצות והרשאות, וניהול הסשנים של המנהל |
admin_countries | index, get_countries, save_countries, toggle | שער המדינות של האדמין. דלג הרשאה |
admin_chat | get_messages, send_message, upload_file, mark_read, get_unread_count, delete_message | צ'אט בין מנהלים. דלג הרשאה, וכל מתודה בודקת is_admin |
ai_chat | conversations, 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_prompts | index, insert. ב-ai_prompts גם version_history, do_restore_version, getVersionStats, cleanupDuplicateVersions, train_model | הגדרות AI ופרומפטים |
ai_agents | chat_job, chat_job_status, propose_draft | AJAX של פאנל הסוכנים: משימת צ'אט, מצבה, והצעת טיוטה |
chat_actions | new_page | יצירת עמוד מתוך הצ'אט. דלג הרשאה |
analytics | index, events, insert, results, last_week, get_real_time, get_og_tags, hot_groups | לוחות מדידה |
clear_cache | index, 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 | ניהול המטמון (ניהול מטמון) |
composer | index, status, packages, outdated, search, install_composer, create_manifest, hook_autoload, run, job | perm_developer. פקודות run: install, update, update_package, require, remove, dump_autoload, validate, clear_cache, diagnose, self_update. ראו Composer |
cron_manager | index, insertCategory, tasks, crontab_status, diagnostics, insert, setup_cron, logs | ניהול משימות cron (cron) |
db_manager | index, api | api מקבל action ב-query או בגוף JSON (ברירת מחדל tables). ראו הטבלה למטה |
debug_logs, sqllog | index; ב-sqllog גם clear, active_log, api | יומנים (אבחון) |
error_log | index | יומן שגיאות. דלג הרשאה |
file_manager | index, api, download | perm_developer, ובנוסף is_developer ב-constructor. פעולות api בטבלה למטה. ראו מנהל קבצים |
install_db_manager, install_file_manager | index, 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, accessibility | index, ובמרבית insert | פאנלי טבלה רגילים. ב-ui_langs_legacy גם insertGroup, words, insertWord. ב-wzcontact גם answer_contact ו-api |
minify | index, groups_insert, files, files_insert | קבוצות ה-minify |
newpage_media, poolse_media, target_media | index, upload, list_files, remove | AJAX של ספריות המדיה של המוצרים. דלג הרשאה, בדיקת is_admin ב-constructor |
PanelList | index, allModules, insert, insertOption, insertTab, moduels, panelOptions, settings | ניהול הפאנלים עצמם |
panel_registry | index, list, register, exists | רישום פאנל חדש. register מקבל POST או query: panel_name, text, category, icon, perm_developer, ord |
safe_sql | index, execute, create_log_table, clear_history | הרצת SQL עם יומן. תשובת JSON |
server_load | index, stats, queries, toggle_log | עומס שרת. דלג הרשאה. stats ו-queries נבדקות ב-is_admin |
storage | index, 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_manager | index, insert_group, scripts, scripts_insert | ניהול תגיות |
todo | index, meta, save_settings, tickets, ticket, finish, approve, create_ticket | חיבור ללוח המשימות. דלג הרשאה. כל מתודה בודקת is_admin |
wizzo_market | index, set_api_key | חיבור האתר לשוק. set_api_key רושם פרמטר עם perm_developer=1 |
wizzo_update | index, 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 |
| AI | ai_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 (פותח או נועל כתיבה לתיקיית הליבה, נרשם ביומן הביקורת) |
ראו גם#
- controllers של הליבה ו-ניתוב: איך כתובת הופכת לקוד.
- מודל האבטחה ו-חיזוק האתר: מה לחסום ברמת השרת.
- פאנלי הליבה, הרשאות אדמין ו-ה-JSON API של האדמין.
- סקירת MCP, cron, חבילת ה-SEO, סקירת השוק.
- רפרנס אדמין ו-רפרנס עזרים.