Files
opensourcepos/app/Language/sv/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
26 KiB
PHP

<?php
return [
"address" => "Företagsadress",
"address_required" => "Företagsadress är ett obligatoriskt fält.",
"all_set" => "Alla filbehörigheter är korrekt inställda!",
"allow_duplicate_barcodes" => "Tillåt duplicera streckkoder",
"apostrophe" => "apostrof",
"backup_button" => "Backup",
"backup_database" => "Säkerhetskopiera databas",
"barcode" => "Streckkod",
"barcode_company" => "Företagsnamn",
"barcode_configuration" => "Streckkodskonfiguration",
"barcode_content" => "Streckkod innehåll",
"barcode_first_row" => "Rad 1",
"barcode_font" => "Font",
"barcode_formats" => "Inmatningsformat",
"barcode_generate_if_empty" => "Skapa om tom.",
"barcode_height" => "Höjd (px)",
"barcode_id" => "Artikel-id / namn",
"barcode_info" => "Streckkodskonfigurationsinformation",
"barcode_layout" => "Streckkodslayout",
"barcode_name" => "Namn",
"barcode_number" => "Streckkod",
"barcode_number_in_row" => "Antal i rad",
"barcode_page_cellspacing" => "Visa kolumnbredd.",
"barcode_page_width" => "Visa sidbredd",
"barcode_price" => "Pris",
"barcode_second_row" => "Rad 2",
"barcode_third_row" => "Rad 3",
"barcode_tooltip" => "Varning: Den här funktionen kan orsaka att duplicerade objekt importeras eller skapas. Använd inte om du inte vill ha dubbla streckkoder.",
"barcode_type" => "Streckkodstyp",
"barcode_width" => "Bredd (px)",
"bottom" => "Botten",
"cash_button" => "",
"cash_button_1" => "",
"cash_button_2" => "",
"cash_button_3" => "",
"cash_button_4" => "",
"cash_button_5" => "",
"cash_button_6" => "",
"cash_decimals" => "Kontant decimaler",
"cash_decimals_tooltip" => "Om kontanterna och valutadecimalen är desamma kommer ingen öresutjämning att äga rum.",
"cash_rounding" => "Öresavjämning",
"category_dropdown" => "Visa kategori som en rullgardinsmeny",
"center" => "Mitten",
"change_apperance_tooltip" => "",
"comma" => "komma",
"company" => "Företasnamn",
"company_avatar" => "",
"company_change_image" => "Ändra bild",
"company_logo" => "Företagslogo",
"company_remove_image" => "Radera bild",
"company_required" => "Företagsnamn är ett obligatoriskt fält",
"company_select_image" => "Välj Bild",
"company_website_url" => "Företagets webbplats är inte en giltig URL (http: // ...).",
"country_codes" => "Landskod",
"country_codes_tooltip" => "Kommaseparerad lista över landskoder för nominatimadressuppslag.",
"currency_code" => "Valutakod",
"currency_decimals" => "Valuta Decimaler",
"currency_symbol" => "Valutasymbol",
"current_employee_only" => "",
"customer_reward" => "Bonus",
"customer_reward_duplicate" => "Bonus måste vara unik.",
"customer_reward_enable" => "Aktivera kundbonus",
"customer_reward_invalid_chars" => "Bonus kan inte innehålla '_'",
"customer_reward_required" => "Bonus är ett obligatoriskt fält",
"customer_sales_tax_support" => "Kundomsättningskatt Support",
"date_or_time_format" => "Datum och tidsfilter",
"datetimeformat" => "Datum och tid Format",
"decimal_point" => "Decimalpunkt",
"default_barcode_font_size_number" => "Standard streckkods teckensnittstorlek måste vara ett nummer.",
"default_barcode_font_size_required" => "Standard streckkodstorlekstorlek är ett obligatoriskt fält.",
"default_barcode_height_number" => "Standard streckkodshöjd måste vara ett nummer.",
"default_barcode_height_required" => "Standard streckkodshöjd är ett obligatoriskt fält.",
"default_barcode_num_in_row_number" => "Standard streckkodsnummer i rad måste vara ett nummer.",
"default_barcode_num_in_row_required" => "Standard streckkodsnummer i rad måste vara ett nummer.",
"default_barcode_page_cellspacing_number" => "Standard Streckkodssida Cellspacing måste vara ett nummer.",
"default_barcode_page_cellspacing_required" => "Standard Streckkodssida Cellspacing är ett obligatoriskt fält.",
"default_barcode_page_width_number" => "Standard streckkodssidans bredd måste vara ett nummer.",
"default_barcode_page_width_required" => "Standard streckkodssidans bredd är ett obligatoriskt fält.",
"default_barcode_width_number" => "Standard streckkodsbredd måste vara ett nummer.",
"default_barcode_width_required" => "Standard streckkodsbredd är ett obligatoriskt fält.",
"default_item_columns" => "Standard synliga artikel kolumner",
"default_origin_tax_code" => "Standard Urkomstskattkod",
"default_receivings_discount" => "Standardmottagningsrabatt",
"default_receivings_discount_number" => "Standardmottagningsrabatten måste vara ett nummer.",
"default_receivings_discount_required" => "Standardmottagningsrabatt är ett obligatoriskt fält.",
"default_sales_discount" => "Standard Försäljningsrabatt %",
"default_sales_discount_number" => "Standardförsäljningsrabatt måste vara ett nummer.",
"default_sales_discount_required" => "Standardförsäljningsrabatt är ett obligatoriskt fält.",
"default_tax_category" => "Standardskattskategori",
"default_tax_code" => "Standard skattetabell",
"default_tax_jurisdiction" => "Standardskattejurisdiktion",
"default_tax_name_number" => "Standardskattnamn måste vara en sträng.",
"default_tax_name_required" => "Standardskattnamn är ett obligatoriskt fält.",
"default_tax_rate" => "Standardskattesats%",
"default_tax_rate_1" => "Skattesats 1",
"default_tax_rate_2" => "Skattesats 2",
"default_tax_rate_3" => "",
"default_tax_rate_number" => "Standardskattesats måste vara ett nummer.",
"default_tax_rate_required" => "Standardskattesats är ett obligatoriskt fält.",
"derive_sale_quantity" => "Tillåt avledad försäljningskvantitet",
"derive_sale_quantity_tooltip" => "Om den är markerad kommer en ny objekttyp att tillhandahållas för poster som beställts med förlängd mängd",
"dinner_table" => "Bord",
"dinner_table_duplicate" => "Bordsnummer måste vara unik.",
"dinner_table_enable" => "Aktivera bord",
"dinner_table_invalid_chars" => "Bordsnamn får inte innehålla '_'.",
"dinner_table_required" => "Bord är ett obligatoriskt fält.",
"dot" => "punkt",
"email" => "E-post",
"email_configuration" => "E-mail Konfiguration",
"email_mailpath" => "Sökväg till Sendmail",
"email_protocol" => "Protokol",
"email_receipt_check_behaviour" => "Kryssruta för e-postkvitto",
"email_receipt_check_behaviour_always" => "Alltid förikryssad",
"email_receipt_check_behaviour_last" => "Kom ihåg det senaste valet",
"email_receipt_check_behaviour_never" => "Alltid urkryssad",
"email_smtp_crypto" => "SMTP kryptering",
"email_smtp_host" => "SMTP Server",
"email_smtp_pass" => "SMTP Lösenord",
"email_smtp_port" => "SMTP Port",
"email_smtp_timeout" => "SMTP Timeout",
"email_smtp_user" => "SMTP Användarnamn",
"enable_avatar" => "",
"enable_avatar_tooltip" => "",
"enable_dropdown_tooltip" => "",
"enable_new_look" => "",
"enable_right_bar" => "",
"enable_right_bar_tooltip" => "",
"enforce_privacy" => "Upprätthålla integritet",
"enforce_privacy_tooltip" => "Skydda kundernas integritet genom att kryptera data om deras data raderas",
"fax" => "Fax",
"file_perm" => "There are problems with file permissions please fix and reload this page.",
"financial_year" => "Räkenskapsårets början",
"financial_year_apr" => "1 april",
"financial_year_aug" => "1 augusti",
"financial_year_dec" => "1 december",
"financial_year_feb" => "1 februari",
"financial_year_jan" => "1 januari",
"financial_year_jul" => "1 juli",
"financial_year_jun" => "1 juni",
"financial_year_mar" => "1 mars",
"financial_year_may" => "1 maj",
"financial_year_nov" => "1 november",
"financial_year_oct" => "1 oktober",
"financial_year_sep" => "1 september",
"floating_labels" => "Flytande etiketter",
"gcaptcha_enable" => "Inloggningssida reCAPTCHA",
"gcaptcha_secret_key" => "Hemlig nyckel för reCAPTCHA",
"gcaptcha_secret_key_required" => "reCAPTCHA Secret Key är ett obligatoriskt fält",
"gcaptcha_site_key" => "Sid-nyckel för reCAPTCHA",
"gcaptcha_site_key_required" => "reCAPTCHA Site Key är ett obligatoriskt fält",
"gcaptcha_tooltip" => "Skydda inloggningssidan med Google reCAPTCHA, klicka på ikonen för ett API-nyckelpar.",
"general" => "Allmämt",
"general_configuration" => "Allmänna inställningar",
"giftcard_number" => "Presentkortsnummer",
"giftcard_random" => "Slumpa fram",
"giftcard_series" => "Generera i serie",
"image_allowed_file_types" => "Tillåtna filtyper",
"image_max_height_tooltip" => "Högsta tillåtna höjd för bilduppladdningar i pixlar (px).",
"image_max_size_tooltip" => "Högsta tillåtna filstorlek för bilduppladdningar i kilobyte (kb).",
"image_max_width_tooltip" => "Högsta tillåtna bredd för bilduppladdningar i pixlar (px).",
"image_restrictions" => "Begränsningar för bildöverföring",
"include_hsn" => "Inkludera stöd för HSN-koder",
"info" => "Information",
"info_configuration" => "Butiksinformation",
"input_groups" => "Inmatningsgrupper",
"integrations" => "Integrationer",
"integrations_configuration" => "Tredjepartsintegrationer",
"invoice" => "Faktura",
"invoice_configuration" => "Faktura utskriftsinställningar",
"invoice_default_comments" => "Standardfaktura kommentarer",
"invoice_email_message" => "Faktura e-postmall",
"invoice_enable" => "Aktivera Fakturering",
"invoice_printer" => "Faktura skrivare",
"invoice_type" => "Fakturatyp",
"is_readable" => "är läsbar, men behörigheterna är felaktigt inställda. Ställ in den på 640 eller 660 och uppdatera.",
"is_writable" => "är skrivbar, men behörigheterna är felaktigt inställda. Ställ in den på 750 och uppdatera.",
"item_markup" => "",
"jsprintsetup_required" => "Varning: Den här funktionaliteten fungerar bara om du har installerat FireFox jsPrintSetup addon. Spara ändå?",
"language" => "Språk",
"last_used_invoice_number" => "Senast använt Fakturanummer",
"last_used_quote_number" => "Senast använt Qouta nummer",
"last_used_work_order_number" => "Senast använt arbetsordernummer",
"left" => "Vänster",
"license" => "Licens",
"license_configuration" => "Licensvilkor",
"line_sequence" => "Linjesekvens",
"lines_per_page" => "Linjer per sida",
"lines_per_page_number" => "Linjer per sida måste vara ett nummer.",
"lines_per_page_required" => "Linjer per sida är ett obligatoriskt fält.",
"locale" => "Lokalisering",
"locale_configuration" => "Lokaliseringskonfiguration",
"locale_info" => "Lokaliseringskonfigurationsinformation",
"location" => "Lager",
"location_configuration" => "Lagerplatser",
"location_info" => "Platskonfigurationsinformation",
"login_form" => "Formulär-stil för inloggning",
"logout" => "Vill du göra en säkerhetskopiering innan du loggar ut? Klicka på [OK] för att säkerhetskopiera eller [Avbryt] för att logga ut.",
"mailchimp" => "MailChimp",
"mailchimp_api_key" => "API-nyckel för MailChimp",
"mailchimp_configuration" => "Mailchimp konfiguration",
"mailchimp_key_successfully" => "API-nyckeln är giltig.",
"mailchimp_key_unsuccessfully" => "API-nyckeln är ogiltig.",
"mailchimp_lists" => "MailChimp Listor",
"mailchimp_tooltip" => "Klicka på ikonen för en API-nyckel.",
"message" => "Medelande",
"message_configuration" => "Meddelandekonfiguration",
"msg_msg" => "Sparade SMS",
"msg_msg_placeholder" => "Om du vill använda en SMS-mall, spara ditt meddelande här, annars lämna rutan tomt.",
"msg_pwd" => "SMS-API-lösenord",
"msg_pwd_required" => "SMS-API lösenord är ett obligatoriskt fält",
"msg_src" => "SMS-API Sender-ID",
"msg_src_required" => "SMS-API Sender-ID är ett obligatoriskt fält",
"msg_uid" => "SMS-API Användarnamn",
"msg_uid_required" => "SMS-API Användarnamn är ett obligatoriskt fält",
"multi_pack_enabled" => "Flera paket per artikel",
"no_risk" => "Ingen säkerhet/sårbarhetsrisker.",
"none" => "inga",
"notify_alignment" => "Meddelande Popup Position",
"number_format" => "Nummerformat",
"number_locale" => "Lokalisering",
"number_locale_invalid" => "Den angivna lokaliseringen är ogiltig. Kontrollera länken i verktygstipset för att hitta en giltig plats.",
"number_locale_required" => "Nummerlandskap är ett obligatoriskt fält.",
"number_locale_tooltip" => "Hitta en lämplig ort genom denna länk.",
"os_timezone" => "OSPOS-tidszon:",
"ospos_info" => "OSPOS installationsinfo",
"payment_options_order" => "Betalningsalternativ ordnning",
"perm_risk" => "Felaktiga behörigheter gör att denna programvara är i fara.",
"phone" => "Företagets telefon",
"phone_required" => "Företagets telefon är ett obligatoriskt fält.",
"print_bottom_margin" => "Marginal botten",
"print_bottom_margin_number" => "Marginalbotten måste vara ett nummer.",
"print_bottom_margin_required" => "Marginalbotten är ett obligatoriskt fält.",
"print_delay_autoreturn" => "Autoreturn to Sale-försening",
"print_delay_autoreturn_number" => "Fördröjning av autoreturn to Sale är ett obligatoriskt fält.",
"print_delay_autoreturn_required" => "Fördröjning av autoreturn to Sale måste vara ett nummer.",
"print_footer" => "Skriv ut sidfot",
"print_header" => "Skriv ut sidhuvudet",
"print_left_margin" => "Marginal vänster",
"print_left_margin_number" => "Marginal vänster måste vara ett nummer.",
"print_left_margin_required" => "Marginal vänster är ett obligatoriskt fält.",
"print_receipt_check_behaviour" => "Kryssrutan Skriv ut kvitto",
"print_receipt_check_behaviour_always" => "Kontrolleras alltid",
"print_receipt_check_behaviour_last" => "Kom ihåg det senaste valet",
"print_receipt_check_behaviour_never" => "Alltid urkryssad",
"print_right_margin" => "Marginal höger",
"print_right_margin_number" => "Marginal höger måste vara ett tal.",
"print_right_margin_required" => "Marginal höger är ett obligatoriskt fält.",
"print_silently" => "Visa utskriftsdialog",
"print_top_margin" => "Marginal top",
"print_top_margin_number" => "Marginal Top måste vara ett nummer.",
"print_top_margin_required" => "Margin Top är ett obligatoriskt fält.",
"quantity_decimals" => "Antal decimaler",
"quick_cash_enable" => "",
"quote_default_comments" => "Standardoffert kommentar",
"receipt" => "Kvitto",
"receipt_category" => "",
"receipt_configuration" => "Kvittosutskriftsinställningar",
"receipt_default" => "Standard",
"receipt_font_size" => "Textstorlek",
"receipt_font_size_number" => "Teckensnittstorlek måste vara ett nummer.",
"receipt_font_size_required" => "Teckensnittstorlek är ett obligatoriskt fält.",
"receipt_info" => "Kvittokonfigurationsinformation",
"receipt_printer" => "Kvittoskrivare",
"receipt_short" => "Kort",
"receipt_show_company_name" => "Visa företagsnamn",
"receipt_show_description" => "Visa beskrivning",
"receipt_show_serialnumber" => "Visa serienummer",
"receipt_show_tax_ind" => "Visa skatteindikator",
"receipt_show_taxes" => "Visa skatter",
"receipt_show_total_discount" => "Visa total rabatt",
"receipt_template" => "Kvitto mall",
"receiving_calculate_average_price" => "Beräkna avg. Pris (Inleverans)",
"recv_invoice_format" => "Mottagningsfakturaformat",
"register_mode_default" => "Standardregisterläge",
"report_an_issue" => "Rapportera ett problem",
"return_policy_required" => "Returpolicy är ett obligatoriskt fält.",
"reward" => "Bonus",
"reward_configuration" => "Bonuskonfiguration",
"right" => "Höger",
"sales_invoice_format" => "Försäljningsfakturaformat",
"sales_quote_format" => "Försäljningsquotaformat",
"mailpath_invalid" => "",
"saved_successfully" => "Konfigurationen sparades.",
"saved_unsuccessfully" => "Konfigurationsbesparingen misslyckades.",
"security_issue" => "Varning för säkerhetsrisker",
"server_notice" => "Vänligen använd nedanstående info för fel-rapportering.",
"service_charge" => "",
"show_due_enable" => "",
"show_office_group" => "Visa kontorsikon",
"statistics" => "Skicka statistik",
"statistics_tooltip" => "Skicka statistik för utveckling och funktionsförbättringsändamål.",
"stock_location" => "Lagerplats",
"stock_location_duplicate" => "Lagerplats måste vara unik.",
"stock_location_invalid_chars" => "Lagerplatsen kan inte innehålla '_'.",
"stock_location_required" => "Lagerplats är ett obligatoriskt fält.",
"suggestions_fifth_column" => "",
"suggestions_first_column" => "Kolumn 1",
"suggestions_fourth_column" => "",
"suggestions_layout" => "Sök förslag till layout",
"suggestions_second_column" => "Kolumn 2",
"suggestions_third_column" => "Kolumn 3",
"system_conf" => "Ställ in & Konf",
"system_info" => "System Info",
"table" => "Bord",
"table_configuration" => "Bordsinställningar",
"takings_printer" => "Kvittoskrivare",
"tax" => "Skatt",
"tax_category" => "Skattekategori",
"tax_category_duplicate" => "Den angivna skattekategori existerar redan.",
"tax_category_invalid_chars" => "Den angivna skattekategori är ogiltig.",
"tax_category_required" => "Skattekategori krävs.",
"tax_category_used" => "Skattekategori kan inte raderas eftersom den används.",
"tax_configuration" => "Skattkonfiguration",
"tax_decimals" => "Skatt decimaler",
"tax_id" => "Skatteid",
"tax_included" => "Skatt ingår",
"theme" => "Tema",
"theme_preview" => "Förhandsgranska tema:",
"thousands_separator" => "Tusentals separator",
"timezone" => "Tidszon",
"timezone_error" => "OSPOS-tidszon skiljer sig från din lokala tidszon.",
"top" => "Top",
"use_destination_based_tax" => "Använd destinationsbaserad skatt",
"user_timezone" => "Lokal tidszon:",
"website" => "Hemsida",
"wholesale_markup" => "",
"work_order_enable" => "Arbetsorderstöd",
"work_order_format" => "Arbetsorderformat",
];