Files
opensourcepos/app/Language/hr-HR/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
22 KiB
PHP

<?php
return [
"address" => "Adresa tvrtke",
"address_required" => "Adresu tvrtke je potrebno unijeti",
"all_set" => "All file permissions are set correctly!",
"allow_duplicate_barcodes" => "",
"apostrophe" => "apostrophe",
"backup_button" => "Arhiva",
"backup_database" => "Arhiviranje baze",
"barcode" => "Barkoda",
"barcode_company" => "Naziv tvrtke",
"barcode_configuration" => "Konfiguracija barkoda",
"barcode_content" => "Sadržaj barkoda",
"barcode_first_row" => "1 red",
"barcode_font" => "Pismo",
"barcode_formats" => "",
"barcode_generate_if_empty" => "Generiraj ako je prazno",
"barcode_height" => "Visina(px)",
"barcode_id" => "ID artikla",
"barcode_info" => "Informacija o barkod-ovima",
"barcode_layout" => "Postavke barkod-a",
"barcode_name" => "Naziv",
"barcode_number" => "UPC/EAN/ISBN",
"barcode_number_in_row" => "Red.br.",
"barcode_page_cellspacing" => "Stranični prostor",
"barcode_page_width" => "Širina stranice",
"barcode_price" => "Cijena",
"barcode_second_row" => "2.red",
"barcode_third_row" => "3.red",
"barcode_tooltip" => "",
"barcode_type" => "Tip barkod-a",
"barcode_width" => "Širina (px)",
"bottom" => "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" => "Center",
"change_apperance_tooltip" => "",
"comma" => "comma",
"company" => "Naziv tvrtke",
"company_avatar" => "",
"company_change_image" => "Promijeni logo",
"company_logo" => "Logo tvrtke",
"company_remove_image" => "Ukloni logo",
"company_required" => "Polje naziv tvrtke je potreban",
"company_select_image" => "Odaberi logo",
"company_website_url" => "Adresa web stranice nije valjana (http://...)",
"country_codes" => "Country Codes",
"country_codes_tooltip" => "Comma separated list of country codes for nominatim address lookup.",
"currency_code" => "",
"currency_decimals" => "Velutne decimale",
"currency_symbol" => "Valutna oznaka",
"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" => "Oblik datuma i vremena",
"decimal_point" => "Decimalna točka",
"default_barcode_font_size_number" => "Veličina pisma barkod-a mora biti broj",
"default_barcode_font_size_required" => "Veličina pisma je potrebna",
"default_barcode_height_number" => "Veličina barkod-a mora biti broj",
"default_barcode_height_required" => "Veličina barkod-a je potrebna",
"default_barcode_num_in_row_number" => "Broj u redu barkod-a mora biti broj",
"default_barcode_num_in_row_required" => "Broj u redu barkod-a je potreban",
"default_barcode_page_cellspacing_number" => "Razmak barkod-a mora biti broj",
"default_barcode_page_cellspacing_required" => "Vonalkód cellatávolság kötelező mező.",
"default_barcode_page_width_number" => "Širina stranice barkod-a mora biti broj",
"default_barcode_page_width_required" => "Širina stranice barkod-a je potrebna",
"default_barcode_width_number" => "Az alapértelmezett vonalkód szélességnek számnak kell lennie",
"default_barcode_width_required" => "Širina barkod-a mora bit broj",
"default_item_columns" => "",
"default_origin_tax_code" => "",
"default_receivings_discount" => "",
"default_receivings_discount_number" => "",
"default_receivings_discount_required" => "",
"default_sales_discount" => "Zadani popust %",
"default_sales_discount_number" => "Zadani popust mora biti broj",
"default_sales_discount_required" => "Zadani popust je potreban",
"default_tax_category" => "",
"default_tax_code" => "",
"default_tax_jurisdiction" => "",
"default_tax_name_number" => "",
"default_tax_name_required" => "Naziv poreza je poteban",
"default_tax_rate" => "Porez %",
"default_tax_rate_1" => "Porez 1 %",
"default_tax_rate_2" => "Porez 2 %",
"default_tax_rate_3" => "",
"default_tax_rate_number" => "Zadani porez mora biti broj",
"default_tax_rate_required" => "Zadani porez je potreban",
"derive_sale_quantity" => "",
"derive_sale_quantity_tooltip" => "",
"dinner_table" => "",
"dinner_table_duplicate" => "",
"dinner_table_enable" => "",
"dinner_table_invalid_chars" => "",
"dinner_table_required" => "",
"dot" => "dot",
"email" => "Email",
"email_configuration" => "Email Configuration",
"email_mailpath" => "Path to Sendmail",
"email_protocol" => "Protocol",
"email_receipt_check_behaviour" => "",
"email_receipt_check_behaviour_always" => "",
"email_receipt_check_behaviour_last" => "",
"email_receipt_check_behaviour_never" => "",
"email_smtp_crypto" => "SMTP Encryption",
"email_smtp_host" => "SMTP Server",
"email_smtp_pass" => "SMTP Password",
"email_smtp_port" => "SMTP Port",
"email_smtp_timeout" => "SMTP Timeout (s)",
"email_smtp_user" => "SMTP Username",
"enable_avatar" => "",
"enable_avatar_tooltip" => "",
"enable_dropdown_tooltip" => "",
"enable_new_look" => "",
"enable_right_bar" => "",
"enable_right_bar_tooltip" => "",
"enforce_privacy" => "",
"enforce_privacy_tooltip" => "",
"fax" => "Fax",
"file_perm" => "There are problems with file permissions please fix and reload this page.",
"financial_year" => "",
"financial_year_apr" => "",
"financial_year_aug" => "",
"financial_year_dec" => "",
"financial_year_feb" => "",
"financial_year_jan" => "",
"financial_year_jul" => "",
"financial_year_jun" => "",
"financial_year_mar" => "",
"financial_year_may" => "",
"financial_year_nov" => "",
"financial_year_oct" => "",
"financial_year_sep" => "",
"floating_labels" => "",
"gcaptcha_enable" => "",
"gcaptcha_secret_key" => "",
"gcaptcha_secret_key_required" => "",
"gcaptcha_site_key" => "",
"gcaptcha_site_key_required" => "",
"gcaptcha_tooltip" => "",
"general" => "Opća",
"general_configuration" => "Opća konfiguracija",
"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" => "",
"info" => "Info",
"info_configuration" => "Info o web trgovini",
"input_groups" => "",
"integrations" => "",
"integrations_configuration" => "",
"invoice" => "Račun",
"invoice_configuration" => "Postavke štamapnja",
"invoice_default_comments" => "Komentar na računu",
"invoice_email_message" => "e-mail za račun",
"invoice_enable" => "Enable Invoicing",
"invoice_printer" => "Printer za račun",
"invoice_type" => "",
"is_readable" => "",
"is_writable" => "is writable, but the permissions are higher than 750.",
"item_markup" => "",
"jsprintsetup_required" => "Upozorenje! Onemogućene opcije će raditi samo ako imate instaliran FireFox jsPrintSetup dodatak. Svakako snimiti?",
"language" => "Jezik",
"last_used_invoice_number" => "",
"last_used_quote_number" => "",
"last_used_work_order_number" => "",
"left" => "Left",
"license" => "License",
"license_configuration" => "License Statement",
"line_sequence" => "",
"lines_per_page" => "Linija po stranici",
"lines_per_page_number" => "Linija po stranici mora biti broj",
"lines_per_page_required" => "Broj linija po stranici je potreban podatak",
"locale" => "Lokacija",
"locale_configuration" => "Konfiguracija",
"locale_info" => "Informacije o lokalnoj konfiguraciji",
"location" => "Skladišta",
"location_configuration" => "Mjesto skladišta",
"location_info" => "Info o lokaciji skladišta",
"login_form" => "",
"logout" => "Želite napraviti arhivu prije nego izađete? Pritisnite [OK] za arhivu, [Cancel] to otkazivanje.",
"mailchimp" => "",
"mailchimp_api_key" => "",
"mailchimp_configuration" => "",
"mailchimp_key_successfully" => "",
"mailchimp_key_unsuccessfully" => "",
"mailchimp_lists" => "",
"mailchimp_tooltip" => "",
"message" => "Message",
"message_configuration" => "Message Configuration",
"msg_msg" => "Saved Text Message",
"msg_msg_placeholder" => "If you wish to use a SMS template save your message here. Otherwise leave the box blank.",
"msg_pwd" => "SMS-API Password",
"msg_pwd_required" => "SMS-API Password is a required field",
"msg_src" => "SMS-API Sender ID",
"msg_src_required" => "SMS-API Sender ID is a required field",
"msg_uid" => "SMS-API Username",
"msg_uid_required" => "SMS-API Username is a required field",
"multi_pack_enabled" => "",
"no_risk" => "No security/vulnerability risks.",
"none" => "none",
"notify_alignment" => "Notification Popup Position",
"number_format" => "Format broja",
"number_locale" => "Lokalnoj",
"number_locale_invalid" => "The entered locale is invalid. Check the link in the tooltip to find a sensible value",
"number_locale_required" => "Number Locale is a required field",
"number_locale_tooltip" => "Find a suitable locale through this link",
"os_timezone" => "",
"ospos_info" => "",
"payment_options_order" => "Payment Options Order",
"perm_risk" => "Permissions higher than 750 leaves this software at risk.",
"phone" => "Telefon tvrtke",
"phone_required" => "Telefon tvrtke je potreban",
"print_bottom_margin" => "Doljnja margina",
"print_bottom_margin_number" => "Doljnja margina mora biti broj",
"print_bottom_margin_required" => "Doljnja margina je potrebna",
"print_delay_autoreturn" => "",
"print_delay_autoreturn_number" => "",
"print_delay_autoreturn_required" => "",
"print_footer" => "Prikazati podnožje u pregledniku",
"print_header" => "Prikazati zaglavlje u pregledniku",
"print_left_margin" => "Lijeva margina",
"print_left_margin_number" => "Lijeva margina mora biti broj",
"print_left_margin_required" => "Lijeva margina je obavezna",
"print_receipt_check_behaviour" => "",
"print_receipt_check_behaviour_always" => "",
"print_receipt_check_behaviour_last" => "",
"print_receipt_check_behaviour_never" => "",
"print_right_margin" => "Desna margina",
"print_right_margin_number" => "Desna margina mora biti broj",
"print_right_margin_required" => "Desna margina je potrebna",
"print_silently" => "Pokaži okvir za štampanje",
"print_top_margin" => "Gornja margina",
"print_top_margin_number" => "Gornja margina mora biti broj",
"print_top_margin_required" => "Gornja margina je obavezna",
"quantity_decimals" => "Decimalne količine",
"quick_cash_enable" => "",
"quote_default_comments" => "",
"receipt" => "Priznanica",
"receipt_category" => "",
"receipt_configuration" => "Postavke štamapnja",
"receipt_default" => "Default",
"receipt_font_size" => "",
"receipt_font_size_number" => "",
"receipt_font_size_required" => "",
"receipt_info" => "Informacije o POS računu",
"receipt_printer" => "POS printer",
"receipt_short" => "Short",
"receipt_show_company_name" => "",
"receipt_show_description" => "Show Description",
"receipt_show_serialnumber" => "Show Serial Number",
"receipt_show_tax_ind" => "",
"receipt_show_taxes" => "Prikaži porez",
"receipt_show_total_discount" => "Pokaži ukupni popust",
"receipt_template" => "Receipt Template",
"receiving_calculate_average_price" => "Računaj prosječnu cijenu (primke)",
"recv_invoice_format" => "Oblik ulaznog računa(primke)",
"register_mode_default" => "",
"report_an_issue" => "",
"return_policy_required" => "Polje za povratne obavijesti je potrebno",
"reward" => "",
"reward_configuration" => "",
"right" => "Right",
"sales_invoice_format" => "Oblik fakture",
"sales_quote_format" => "",
"mailpath_invalid" => "",
"saved_successfully" => "Konfiguracija je uspješno snimljena",
"saved_unsuccessfully" => "Konfiguracija nije uspješno snimljena",
"security_issue" => "Security Vulnerability Warning",
"server_notice" => "Please use the below info for issue reporting.",
"service_charge" => "",
"show_due_enable" => "",
"show_office_group" => "",
"statistics" => "Send statistics",
"statistics_tooltip" => "Send statistics for development and feature improvement purposes",
"stock_location" => "Lokacija skladišta",
"stock_location_duplicate" => "Molim koristite jedinstveni naziv skladišta",
"stock_location_invalid_chars" => "Naziv skaldišta ne može sadržavati '_'",
"stock_location_required" => "Naziv skladišta je potreban",
"suggestions_fifth_column" => "",
"suggestions_first_column" => "",
"suggestions_fourth_column" => "",
"suggestions_layout" => "",
"suggestions_second_column" => "",
"suggestions_third_column" => "",
"system_conf" => "Setup & Conf",
"system_info" => "System Info",
"table" => "",
"table_configuration" => "",
"takings_printer" => "Printer za 'Prodano'",
"tax" => "",
"tax_category" => "",
"tax_category_duplicate" => "",
"tax_category_invalid_chars" => "",
"tax_category_required" => "",
"tax_category_used" => "",
"tax_configuration" => "",
"tax_decimals" => "Porezne decimale",
"tax_id" => "",
"tax_included" => "Uključuje porez",
"theme" => "Theme",
"theme_preview" => "",
"thousands_separator" => "Razdjelnik za tisućice",
"timezone" => "Vremenska zona",
"timezone_error" => "",
"top" => "Top",
"use_destination_based_tax" => "",
"user_timezone" => "",
"website" => "web strana",
"wholesale_markup" => "",
"work_order_enable" => "",
"work_order_format" => "",
];