Files
opensourcepos/app/Language/he/Config.php
Ollama 8da4aff262 fix(security): prevent command injection in sendmail path configuration
Add validation for the mailpath POST parameter to prevent command injection
attacks. The path is validated to only allow alphanumeric characters,
underscores, dashes, forward slashes, and dots.

- Required mailpath when protocol is "sendmail"
- Validates format for all non-empty mailpath values
- Blocks common injection vectors: ; | & ` $() spaces newlines
- Added mailpath_invalid translation to all 43 language files
- Simplified validation logic to avoid redundant conditions

Files changed:
- app/Controllers/Config.php: Add regex validation with protocol check
- app/Language/*/Config.php: Add mailpath_invalid error message (43 languages)
- tests/Controllers/ConfigTest.php: Unit tests for validation
2026-04-06 18:37:07 +00:00

333 lines
28 KiB
PHP

<?php
return [
"address" => "כתובת חברה",
"address_required" => "כתובת החברה הינה שדה חובה.",
"all_set" => "All file permissions are set correctly!",
"allow_duplicate_barcodes" => "אפשר ברקודים כפולים",
"apostrophe" => "גרש",
"backup_button" => "גיבוי",
"backup_database" => "מסד נתונים לגיבוי",
"barcode" => "ברקוד",
"barcode_company" => "שם חברה",
"barcode_configuration" => "הגדרות ברקוד",
"barcode_content" => "תוכן ברקוד",
"barcode_first_row" => "שורה 1",
"barcode_font" => "פונט",
"barcode_formats" => "תבניות קלט",
"barcode_generate_if_empty" => "צור אם ריק.",
"barcode_height" => "גובה (פיקסלים)",
"barcode_id" => "מזהה / שם פריט",
"barcode_info" => "מידע על הדגרות ברקוד",
"barcode_layout" => "פריסת ברקוד",
"barcode_name" => "שם",
"barcode_number" => "ברקוד",
"barcode_number_in_row" => "מספר בשורה",
"barcode_page_cellspacing" => "הצגת מרחבי עמוד.",
"barcode_page_width" => "הצגת רוחב דף",
"barcode_price" => "מחיר",
"barcode_second_row" => "שורה 2",
"barcode_third_row" => "שורה 3",
"barcode_tooltip" => "אזהרה: תכונה זו עלולה לגרום לייבוא או יצירת פריטים כפולים. אל תשתמש אם אתה לא רוצה ברקודים כפולים.",
"barcode_type" => "סוג ברקוד",
"barcode_width" => "רוחב (פיקסלים)",
"bottom" => "למטה",
"cash_button" => "",
"cash_button_1" => "",
"cash_button_2" => "",
"cash_button_3" => "",
"cash_button_4" => "",
"cash_button_5" => "",
"cash_button_6" => "",
"cash_decimals" => "עשרוני מזומנים",
"cash_decimals_tooltip" => "אם עשרוני מזומנים ועשרוני מטבעות זהים אז לא יתקיים עיגול מזומנים.",
"cash_rounding" => "עיגול מזומנים",
"category_dropdown" => "",
"center" => "מרכז",
"change_apperance_tooltip" => "",
"comma" => "פסיק",
"company" => "שם חברה",
"company_avatar" => "",
"company_change_image" => "שנה תמונה",
"company_logo" => "לוגו חברה",
"company_remove_image" => "הסר תמונה",
"company_required" => "שם החברה הינו שדה חובה",
"company_select_image" => "בחר תמונה",
"company_website_url" => "אתר החברה אינו כתובת אתר חוקית (http://...).",
"country_codes" => "קודי מדינה",
"country_codes_tooltip" => "רשימה מופרדת בפסיקים של קודי מדינות עבור בדיקת כתובת של nominatim.",
"currency_code" => "קוד מטבע",
"currency_decimals" => "מטבע עשרוני",
"currency_symbol" => "סמל מטבע",
"current_employee_only" => "",
"customer_reward" => "תגמול",
"customer_reward_duplicate" => "התגמול חייב להיות ייחודי.",
"customer_reward_enable" => "אפשר תגמולים ללקוחות",
"customer_reward_invalid_chars" => "התגמול אינו יכול להכיל '_'",
"customer_reward_required" => "התגמול הינו שדה חובה",
"customer_sales_tax_support" => "",
"date_or_time_format" => "מסנן תאריך ושעה",
"datetimeformat" => "פורמט תאריך ושעה",
"decimal_point" => "נקודה עשרונית",
"default_barcode_font_size_number" => "ברירת מחדל של גודל גופן הברקוד חייב להיות מספר.",
"default_barcode_font_size_required" => "שדה גודל גופן הברקוד הינו שדה חובה.",
"default_barcode_height_number" => "גובה ברירת המחדל של הברקוד חייב להיות מספר.",
"default_barcode_height_required" => "גובה ברירת המחדל של הברקוד הינו שדה חובה.",
"default_barcode_num_in_row_number" => "ברירת המחדל של מספר הברקוד בשורה חייב להיות מספר.",
"default_barcode_num_in_row_required" => "ברירת המחדל של מספר הברקוד בשורה הינו שדה חובה.",
"default_barcode_page_cellspacing_number" => "ברירת המחדל של שדה מרווח עימוד הברקוד חייב להיות מספר.",
"default_barcode_page_cellspacing_required" => "ברירת המחדל של שדה מרווח עימוד הברקוד הינו שדה חובה.",
"default_barcode_page_width_number" => "ברירת המחדל של שדה רוחב עמוד הברקוד חייב להיות מספר.",
"default_barcode_page_width_required" => "ברירת המחדל של שדה רוחב עמוד הברקוד הינו שדה חובה.",
"default_barcode_width_number" => "ברירת המחדל של שדה רוחב הברקוד חייב להיות מספר.",
"default_barcode_width_required" => "ברירת המחדל של שדה רוחב הברקוד הינו שדה חובה.",
"default_item_columns" => "ברירת מחדל של עמודות לפריטים גלויים",
"default_origin_tax_code" => "קוד ברירת מחדל למס במקור",
"default_receivings_discount" => "הנחה ברירת מחדל להחזרות ספקים",
"default_receivings_discount_number" => "הנחה ברירת מחדל להחזרות ספקים חייב להיות מספר.",
"default_receivings_discount_required" => "הנחה ברירת מחדל להחזרות ספקים הינו שדה חובה.",
"default_sales_discount" => "הנחה ברירת מחדל למכירות",
"default_sales_discount_number" => "הנחה ברירת מחדל למכירות חייב להיות מספר.",
"default_sales_discount_required" => "הנחה ברירת מחדל למכירות הינו שדה חובה.",
"default_tax_category" => "קטגוריה מס ברירת מחדל",
"default_tax_code" => "קוד מס ברירת מחדל",
"default_tax_jurisdiction" => "תחום שיפוט מס ברירת מחדל",
"default_tax_name_number" => "שם מס ברירת המחדל חייב להיות מחרוזת.",
"default_tax_name_required" => "שם מס ברירת המחדל הינו שדה חובה.",
"default_tax_rate" => "שיעור מס ברירת מחדל %",
"default_tax_rate_1" => "מדרגת מס 1",
"default_tax_rate_2" => "מדרגת מס 2",
"default_tax_rate_3" => "",
"default_tax_rate_number" => "שיעור מס ברירת מחדל חייב להיות מספר.",
"default_tax_rate_required" => "שיעור מס ברירת מחדל הינו שדה חובה.",
"derive_sale_quantity" => "אפשר כמות נגזרת של מכירה",
"derive_sale_quantity_tooltip" => "אם מסומן, סוג פריט חדש יספק פריטים שהוזמנו בכמות מורחבת",
"dinner_table" => "טבלה",
"dinner_table_duplicate" => "הטבלה חייבת להיות ייחודית.",
"dinner_table_enable" => "אפשר טבלאות אוכל",
"dinner_table_invalid_chars" => "שם הטבלה אינו יכול להכיל את '_'.",
"dinner_table_required" => "שם הטבלה הינו שדה חובה.",
"dot" => "נקודה",
"email" => "אימייל",
"email_configuration" => "הגדרות אימייל",
"email_mailpath" => "נתיב לשליחת מייל",
"email_protocol" => "פרוטוקול",
"email_receipt_check_behaviour" => "תיבת סימון של קבלת אימייל",
"email_receipt_check_behaviour_always" => "תמיד מסומן",
"email_receipt_check_behaviour_last" => "זכור את הבחירה האחרונה",
"email_receipt_check_behaviour_never" => "תמיד לא מסומן",
"email_smtp_crypto" => "הצפנת SMTP",
"email_smtp_host" => "שרת SMTP",
"email_smtp_pass" => "סיסמת SMTP",
"email_smtp_port" => "יציאת SMTP",
"email_smtp_timeout" => "זמן קצוב לתפוגה של SMTP",
"email_smtp_user" => "שם משתמש של SMTP",
"enable_avatar" => "",
"enable_avatar_tooltip" => "",
"enable_dropdown_tooltip" => "",
"enable_new_look" => "",
"enable_right_bar" => "",
"enable_right_bar_tooltip" => "",
"enforce_privacy" => "אכיפת פרטיות",
"enforce_privacy_tooltip" => "הגן על פרטיות הלקוחות ואכיפת ערבוב נתונים במקרה של מחיקת הנתונים שלהם",
"fax" => "פקס",
"file_perm" => "There are problems with file permissions please fix and reload this page.",
"financial_year" => "תחילת שנת הכספים",
"financial_year_apr" => "1 של אפריל",
"financial_year_aug" => "1 של אוגוסט",
"financial_year_dec" => "1 של דצמבר",
"financial_year_feb" => "1 של פברואר",
"financial_year_jan" => "1 של ינואר",
"financial_year_jul" => "1 של יולי",
"financial_year_jun" => "1 של יוני",
"financial_year_mar" => "1 של מרץ",
"financial_year_may" => "1 של מאי",
"financial_year_nov" => "1 של נובמבר",
"financial_year_oct" => "1 של אוקטובר",
"financial_year_sep" => "1 של ספטמבר",
"floating_labels" => "",
"gcaptcha_enable" => "דף התחברות reCAPTCHA",
"gcaptcha_secret_key" => "מפתח סודי של reCAPTCHA",
"gcaptcha_secret_key_required" => "מפתח סודי של reCAPTCHA הינו שדה חובה",
"gcaptcha_site_key" => "מפתח אתר reCAPTCHA",
"gcaptcha_site_key_required" => "מפתח אתר reCAPTCHA הינו שדה חובה",
"gcaptcha_tooltip" => "הגן על דף ההתחברות באמצעות Google reCAPTCHA, לחץ על האייקון של ממשק צמד מפתחות API.",
"general" => "כללי",
"general_configuration" => "הגדרות כלליות",
"giftcard_number" => "מספר כרטיס מתנה",
"giftcard_random" => "צור אקראי",
"giftcard_series" => "צור בסדרה",
"image_allowed_file_types" => "",
"image_max_height_tooltip" => "",
"image_max_size_tooltip" => "",
"image_max_width_tooltip" => "",
"image_restrictions" => "",
"include_hsn" => "כלול תמיכה בקודי HSN",
"info" => "מידע",
"info_configuration" => "אחסון מידע",
"input_groups" => "",
"integrations" => "אינטגרציה",
"integrations_configuration" => "שילובים של צד שלישי",
"invoice" => "חשבונית",
"invoice_configuration" => "הגדרות הדפסה של חשבוניות",
"invoice_default_comments" => "הערות ברירת מחדל של חשבוניות",
"invoice_email_message" => "תבנית אימייל של חשבונית",
"invoice_enable" => "הפעל חשבוניות",
"invoice_printer" => "מדפסת חשבונית",
"invoice_type" => "סוג חשבונית",
"is_readable" => "",
"is_writable" => "is writable, but the permissions are higher than 750.",
"item_markup" => "",
"jsprintsetup_required" => "אזהרה: פונקציונליות זו תפעל רק אם התקנת את התוסף FireFox jsPrintSetup ,לשמור בכל זאת?",
"language" => "שפה",
"last_used_invoice_number" => "מספר חשבונית אחרונה שהייתה בשימוש",
"last_used_quote_number" => "מספר הצעת מחיר אחרונה שהייתה בשימוש",
"last_used_work_order_number" => "מספר W/O אחרון שהיה בשימוש",
"left" => "שמאל",
"license" => "רישיון",
"license_configuration" => "הצהרת רישיון",
"line_sequence" => "סדר פעולות",
"lines_per_page" => "שורות בעמוד",
"lines_per_page_number" => "שורות בעמוד חייב להיות מספר.",
"lines_per_page_required" => "שורות בעמוד הינו שדה חובה.",
"locale" => "התאמת שפה",
"locale_configuration" => "הגדרות התאמת שפה",
"locale_info" => "מידע על הגדרות התאמת שפה",
"location" => "מלאי",
"location_configuration" => "מיקום המלאי",
"location_info" => "מידע על הגדרות מיקום",
"login_form" => "",
"logout" => "האם ברצונך לבצע גיבוי לפני היציאה? לחץ על [OK] כדי לגבות או [ביטול] כדי להתנתק.",
"mailchimp" => "Mailchimp (פלטפורמה לשליחת מיילים)",
"mailchimp_api_key" => "מפתח API של Mailchimp",
"mailchimp_configuration" => "הגדרות Mailchimp",
"mailchimp_key_successfully" => "מפתח ה- API תקף.",
"mailchimp_key_unsuccessfully" => "מפתח ה- API לא תקף.",
"mailchimp_lists" => "רשימת Mailchimp",
"mailchimp_tooltip" => "לחץ על האייקון של מפתח ממשק API.",
"message" => "הודעה",
"message_configuration" => "הגדרות הודעה",
"msg_msg" => "הודעת טקסט שמורה",
"msg_msg_placeholder" => "אם ברצונך להשתמש בתבנית הודעה שמור את ההודעה שלך כאן, אחרת השאר את התיבה ריקה.",
"msg_pwd" => "סיסמה של SMS-API",
"msg_pwd_required" => "סיסמה של SMS-API הינו שדה חובה",
"msg_src" => "מזהה שולח SMS-API",
"msg_src_required" => "מזהה שולח SMS-API הינו שדה חובה",
"msg_uid" => "שם משתמש של SMS-API",
"msg_uid_required" => "שם משתמש של SMS-API הינו שדה חובה",
"multi_pack_enabled" => "חבילות מרובות לכל פריט",
"no_risk" => "No security/vulnerability risks.",
"none" => "לא קיים",
"notify_alignment" => "מיקום חלון קופץ",
"number_format" => "פורמט מספר",
"number_locale" => "הגדרות שפה",
"number_locale_invalid" => "האזור שהוזן אינו חוקי. בדוק את הקישור שבסרגל הכלים כדי לאתר אזור חוקי.",
"number_locale_required" => "מספר אזור הינו שדה חובה.",
"number_locale_tooltip" => "מצא אזור תואם באמצעות קישור זה.",
"os_timezone" => "",
"ospos_info" => "OSPOS פרטי התקנה",
"payment_options_order" => "סידור אפשרויות תשלום",
"perm_risk" => "Permissions higher than 750 leaves this software at risk.",
"phone" => "טלפון חברה",
"phone_required" => "טלפון חברה הינו שדה חובה.",
"print_bottom_margin" => "כפתור שוליים",
"print_bottom_margin_number" => "שדה כפתור שוליים חייב להיות מספר.",
"print_bottom_margin_required" => "כפתור שוליים הינו שדה חובה.",
"print_delay_autoreturn" => "חזרה אוטומטית לעיכוב מכירה",
"print_delay_autoreturn_number" => "חזרה אוטומטית לעיכוב מכירה הינו שדה חובה.",
"print_delay_autoreturn_required" => "שדה חזרה אוטומטית לעיכוב מכירה חייב להיות מספר.",
"print_footer" => "הדפס כותרת תחתונה",
"print_header" => "הדפס כותרת עליונה",
"print_left_margin" => "שוליים צד שמאל",
"print_left_margin_number" => "שדה שוליים צד שמאל חייב להיות מספר.",
"print_left_margin_required" => "שוליים צד שמאל הינו שדה חובה.",
"print_receipt_check_behaviour" => "הדפס קבלה",
"print_receipt_check_behaviour_always" => "תמיד מסומן",
"print_receipt_check_behaviour_last" => "זכור את הבחירה האחרונה",
"print_receipt_check_behaviour_never" => "תמיד לא מסומן",
"print_right_margin" => "שוליים צד ימין",
"print_right_margin_number" => "שדה שוליים צד ימין חייב להיות מספר.",
"print_right_margin_required" => "שוליים צד ימין הינו שדה חובה.",
"print_silently" => "הצג את תיבת הדו-שיח 'הדפסה'",
"print_top_margin" => "שוליים עליונים",
"print_top_margin_number" => "שדה שוליים עליונים חייב להיות מספר.",
"print_top_margin_required" => "שוליים עליונים הינו שדה חובה.",
"quantity_decimals" => "כמות עשרונית",
"quick_cash_enable" => "",
"quote_default_comments" => "הערת ברירת מחדל להצעת מחיר",
"receipt" => "קבלה",
"receipt_category" => "",
"receipt_configuration" => "הגדרות הדפסה קבלה",
"receipt_default" => "ברירת מחדל",
"receipt_font_size" => "גודל פונט",
"receipt_font_size_number" => "שדה גודל פונט חייב להיות מספר.",
"receipt_font_size_required" => "גודל פונט הינו שדה חובה.",
"receipt_info" => "מידע על הגדרות קבלה",
"receipt_printer" => "מדפסת כרטיסים",
"receipt_short" => "קצר",
"receipt_show_company_name" => "הצג שם חברה",
"receipt_show_description" => "הצג תיאור",
"receipt_show_serialnumber" => "הצג מספר סידורי",
"receipt_show_tax_ind" => "",
"receipt_show_taxes" => "הצג מסים",
"receipt_show_total_discount" => "הצג הנחה כוללת",
"receipt_template" => "תבנית קבלה",
"receiving_calculate_average_price" => "חישוב ממוצע למחיר (החזרותספקים)",
"recv_invoice_format" => "תבנית חשבונית החזרותספקים",
"register_mode_default" => "מצב רישום ברירת מחדל",
"report_an_issue" => "",
"return_policy_required" => "מדיניות ההחזרה היא שדה חובה.",
"reward" => "תגמול",
"reward_configuration" => "הגדרות תגמולים",
"right" => "ימין",
"sales_invoice_format" => "תבנית חשבונית מכירות",
"sales_quote_format" => "תבנית חשבונית הצעת מחיר",
"mailpath_invalid" => "",
"saved_successfully" => "ההגדרות נשמרו בהצלחה.",
"saved_unsuccessfully" => "שמירת ההגדרות נכשלה.",
"security_issue" => "Security Vulnerability Warning",
"server_notice" => "השתמש במידע הבא לדיווח על בעיות.",
"service_charge" => "",
"show_due_enable" => "",
"show_office_group" => "הצג את סמל המשרד",
"statistics" => "שלח סטטיסטיקה",
"statistics_tooltip" => "שלח סטטיסטיקות למפתחים למטרות פיתוח ושיפור התוכנה.",
"stock_location" => "מיקום המלאי",
"stock_location_duplicate" => "מיקום המלאי חייב להיות ייחודי.",
"stock_location_invalid_chars" => "מיקום המלאי אינו יכול להכיל '_'.",
"stock_location_required" => "מיקום המלאי הינו שדה חובה.",
"suggestions_fifth_column" => "",
"suggestions_first_column" => "עמודה 1",
"suggestions_fourth_column" => "",
"suggestions_layout" => "פריסת הצעות חיפוש",
"suggestions_second_column" => "עמודה 2",
"suggestions_third_column" => "עמודה 3",
"system_conf" => "Setup & Conf",
"system_info" => "מידע מערכת",
"table" => "טבלה",
"table_configuration" => "הגדרות טבלה",
"takings_printer" => "מדפסת קבלה",
"tax" => "מס",
"tax_category" => "קטגוריה מס",
"tax_category_duplicate" => "קטגוריית המס שהוזנה כבר קיימת.",
"tax_category_invalid_chars" => "קטגוריית המס שהוזנה אינה חוקית.",
"tax_category_required" => "קטגוריית המס הינה חובה.",
"tax_category_used" => "לא ניתן למחוק את קטגוריית המס מכיוון שהיא נמצאת בשימוש.",
"tax_configuration" => "הגדרות מס",
"tax_decimals" => "מס עשרוני",
"tax_id" => "מזהה לצורך מס",
"tax_included" => "כולל מס",
"theme" => "ערכת נושא",
"theme_preview" => "",
"thousands_separator" => "מפריד אלפים",
"timezone" => "אזור זמן",
"timezone_error" => "",
"top" => "חלק עליון",
"use_destination_based_tax" => "השתמש במס מבוסס יעד",
"user_timezone" => "",
"website" => "אתר",
"wholesale_markup" => "",
"work_order_enable" => "תמיכה בהזמנת עבודה",
"work_order_format" => "פורמט הזמנת עבודה",
];