@jjlmoya/utils-developer 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -1
- package/src/category/i18n/de.ts +34 -0
- package/src/category/i18n/id.ts +34 -0
- package/src/category/i18n/it.ts +34 -0
- package/src/category/i18n/ja.ts +34 -0
- package/src/category/i18n/ko.ts +34 -0
- package/src/category/i18n/nl.ts +34 -0
- package/src/category/i18n/pl.ts +34 -0
- package/src/category/i18n/pt.ts +34 -0
- package/src/category/i18n/ru.ts +34 -0
- package/src/category/i18n/sv.ts +34 -0
- package/src/category/i18n/tr.ts +34 -0
- package/src/category/i18n/zh.ts +34 -0
- package/src/category/index.ts +13 -1
- package/src/index.ts +12 -0
- package/src/tests/faq_count.test.ts +1 -1
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/locale_completeness.test.ts +2 -2
- package/src/tests/slug_uniqueness.test.ts +81 -0
- package/src/tool/aspectRatio/i18n/de.ts +177 -0
- package/src/tool/aspectRatio/i18n/id.ts +177 -0
- package/src/tool/aspectRatio/i18n/it.ts +177 -0
- package/src/tool/aspectRatio/i18n/ja.ts +178 -0
- package/src/tool/aspectRatio/i18n/ko.ts +178 -0
- package/src/tool/aspectRatio/i18n/nl.ts +178 -0
- package/src/tool/aspectRatio/i18n/pl.ts +177 -0
- package/src/tool/aspectRatio/i18n/pt.ts +177 -0
- package/src/tool/aspectRatio/i18n/ru.ts +177 -0
- package/src/tool/aspectRatio/i18n/sv.ts +177 -0
- package/src/tool/aspectRatio/i18n/tr.ts +177 -0
- package/src/tool/aspectRatio/i18n/zh.ts +178 -0
- package/src/tool/aspectRatio/index.ts +15 -7
- package/src/tool/calculadoraTiempoDatos/i18n/de.ts +150 -0
- package/src/tool/calculadoraTiempoDatos/i18n/id.ts +150 -0
- package/src/tool/calculadoraTiempoDatos/i18n/it.ts +150 -0
- package/src/tool/calculadoraTiempoDatos/i18n/ja.ts +151 -0
- package/src/tool/calculadoraTiempoDatos/i18n/ko.ts +151 -0
- package/src/tool/calculadoraTiempoDatos/i18n/nl.ts +150 -0
- package/src/tool/calculadoraTiempoDatos/i18n/pl.ts +150 -0
- package/src/tool/calculadoraTiempoDatos/i18n/pt.ts +150 -0
- package/src/tool/calculadoraTiempoDatos/i18n/ru.ts +151 -0
- package/src/tool/calculadoraTiempoDatos/i18n/sv.ts +150 -0
- package/src/tool/calculadoraTiempoDatos/i18n/tr.ts +150 -0
- package/src/tool/calculadoraTiempoDatos/i18n/zh.ts +151 -0
- package/src/tool/calculadoraTiempoDatos/index.ts +15 -7
- package/src/tool/colorConverter/i18n/de.ts +126 -0
- package/src/tool/colorConverter/i18n/id.ts +126 -0
- package/src/tool/colorConverter/i18n/it.ts +126 -0
- package/src/tool/colorConverter/i18n/ja.ts +127 -0
- package/src/tool/colorConverter/i18n/ko.ts +127 -0
- package/src/tool/colorConverter/i18n/nl.ts +126 -0
- package/src/tool/colorConverter/i18n/pl.ts +126 -0
- package/src/tool/colorConverter/i18n/pt.ts +126 -0
- package/src/tool/colorConverter/i18n/ru.ts +126 -0
- package/src/tool/colorConverter/i18n/sv.ts +126 -0
- package/src/tool/colorConverter/i18n/tr.ts +126 -0
- package/src/tool/colorConverter/i18n/zh.ts +127 -0
- package/src/tool/colorConverter/index.ts +15 -7
- package/src/tool/conversorExcelCsvHtml/i18n/de.ts +129 -0
- package/src/tool/conversorExcelCsvHtml/i18n/id.ts +129 -0
- package/src/tool/conversorExcelCsvHtml/i18n/it.ts +129 -0
- package/src/tool/conversorExcelCsvHtml/i18n/ja.ts +130 -0
- package/src/tool/conversorExcelCsvHtml/i18n/ko.ts +130 -0
- package/src/tool/conversorExcelCsvHtml/i18n/nl.ts +129 -0
- package/src/tool/conversorExcelCsvHtml/i18n/pl.ts +129 -0
- package/src/tool/conversorExcelCsvHtml/i18n/pt.ts +129 -0
- package/src/tool/conversorExcelCsvHtml/i18n/ru.ts +129 -0
- package/src/tool/conversorExcelCsvHtml/i18n/sv.ts +129 -0
- package/src/tool/conversorExcelCsvHtml/i18n/tr.ts +129 -0
- package/src/tool/conversorExcelCsvHtml/i18n/zh.ts +130 -0
- package/src/tool/conversorExcelCsvHtml/index.ts +15 -7
- package/src/tool/cronGenerator/i18n/de.ts +192 -0
- package/src/tool/cronGenerator/i18n/es.ts +2 -1
- package/src/tool/cronGenerator/i18n/fr.ts +2 -1
- package/src/tool/cronGenerator/i18n/id.ts +192 -0
- package/src/tool/cronGenerator/i18n/it.ts +192 -0
- package/src/tool/cronGenerator/i18n/ja.ts +192 -0
- package/src/tool/cronGenerator/i18n/ko.ts +192 -0
- package/src/tool/cronGenerator/i18n/nl.ts +192 -0
- package/src/tool/cronGenerator/i18n/pl.ts +192 -0
- package/src/tool/cronGenerator/i18n/pt.ts +192 -0
- package/src/tool/cronGenerator/i18n/ru.ts +192 -0
- package/src/tool/cronGenerator/i18n/sv.ts +192 -0
- package/src/tool/cronGenerator/i18n/tr.ts +192 -0
- package/src/tool/cronGenerator/i18n/zh.ts +192 -0
- package/src/tool/cronGenerator/index.ts +15 -7
- package/src/tool/cssSpecificityCalculator/i18n/de.ts +168 -0
- package/src/tool/cssSpecificityCalculator/i18n/id.ts +168 -0
- package/src/tool/cssSpecificityCalculator/i18n/it.ts +168 -0
- package/src/tool/cssSpecificityCalculator/i18n/ja.ts +169 -0
- package/src/tool/cssSpecificityCalculator/i18n/ko.ts +169 -0
- package/src/tool/cssSpecificityCalculator/i18n/nl.ts +168 -0
- package/src/tool/cssSpecificityCalculator/i18n/pl.ts +168 -0
- package/src/tool/cssSpecificityCalculator/i18n/pt.ts +168 -0
- package/src/tool/cssSpecificityCalculator/i18n/ru.ts +168 -0
- package/src/tool/cssSpecificityCalculator/i18n/sv.ts +168 -0
- package/src/tool/cssSpecificityCalculator/i18n/tr.ts +168 -0
- package/src/tool/cssSpecificityCalculator/i18n/zh.ts +169 -0
- package/src/tool/cssSpecificityCalculator/index.ts +15 -7
- package/src/tool/cssToInlineConverter/i18n/de.ts +160 -0
- package/src/tool/cssToInlineConverter/i18n/id.ts +160 -0
- package/src/tool/cssToInlineConverter/i18n/it.ts +160 -0
- package/src/tool/cssToInlineConverter/i18n/ja.ts +161 -0
- package/src/tool/cssToInlineConverter/i18n/ko.ts +161 -0
- package/src/tool/cssToInlineConverter/i18n/nl.ts +160 -0
- package/src/tool/cssToInlineConverter/i18n/pl.ts +160 -0
- package/src/tool/cssToInlineConverter/i18n/pt.ts +160 -0
- package/src/tool/cssToInlineConverter/i18n/ru.ts +160 -0
- package/src/tool/cssToInlineConverter/i18n/sv.ts +160 -0
- package/src/tool/cssToInlineConverter/i18n/tr.ts +160 -0
- package/src/tool/cssToInlineConverter/i18n/zh.ts +161 -0
- package/src/tool/cssToInlineConverter/index.ts +15 -7
- package/src/tool/duplicateCssRemover/i18n/de.ts +167 -0
- package/src/tool/duplicateCssRemover/i18n/id.ts +167 -0
- package/src/tool/duplicateCssRemover/i18n/it.ts +167 -0
- package/src/tool/duplicateCssRemover/i18n/ja.ts +168 -0
- package/src/tool/duplicateCssRemover/i18n/ko.ts +168 -0
- package/src/tool/duplicateCssRemover/i18n/nl.ts +167 -0
- package/src/tool/duplicateCssRemover/i18n/pl.ts +167 -0
- package/src/tool/duplicateCssRemover/i18n/pt.ts +167 -0
- package/src/tool/duplicateCssRemover/i18n/ru.ts +167 -0
- package/src/tool/duplicateCssRemover/i18n/sv.ts +167 -0
- package/src/tool/duplicateCssRemover/i18n/tr.ts +167 -0
- package/src/tool/duplicateCssRemover/i18n/zh.ts +168 -0
- package/src/tool/duplicateCssRemover/index.ts +15 -7
- package/src/tool/generadorSecurityTxt/i18n/de.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/id.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/it.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/ja.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/ko.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/nl.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/pl.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/pt.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/ru.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/sv.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/tr.ts +174 -0
- package/src/tool/generadorSecurityTxt/i18n/zh.ts +174 -0
- package/src/tool/generadorSecurityTxt/index.ts +15 -7
- package/src/tool/hashGenerator/i18n/de.ts +119 -0
- package/src/tool/hashGenerator/i18n/id.ts +119 -0
- package/src/tool/hashGenerator/i18n/it.ts +118 -0
- package/src/tool/hashGenerator/i18n/ja.ts +119 -0
- package/src/tool/hashGenerator/i18n/ko.ts +119 -0
- package/src/tool/hashGenerator/i18n/nl.ts +119 -0
- package/src/tool/hashGenerator/i18n/pl.ts +118 -0
- package/src/tool/hashGenerator/i18n/pt.ts +118 -0
- package/src/tool/hashGenerator/i18n/ru.ts +119 -0
- package/src/tool/hashGenerator/i18n/sv.ts +119 -0
- package/src/tool/hashGenerator/i18n/tr.ts +118 -0
- package/src/tool/hashGenerator/i18n/zh.ts +119 -0
- package/src/tool/hashGenerator/index.ts +15 -7
- package/src/tool/inspectorCertificadosSsl/i18n/de.ts +214 -0
- package/src/tool/inspectorCertificadosSsl/i18n/id.ts +215 -0
- package/src/tool/inspectorCertificadosSsl/i18n/it.ts +214 -0
- package/src/tool/inspectorCertificadosSsl/i18n/ja.ts +215 -0
- package/src/tool/inspectorCertificadosSsl/i18n/ko.ts +215 -0
- package/src/tool/inspectorCertificadosSsl/i18n/nl.ts +215 -0
- package/src/tool/inspectorCertificadosSsl/i18n/pl.ts +215 -0
- package/src/tool/inspectorCertificadosSsl/i18n/pt.ts +214 -0
- package/src/tool/inspectorCertificadosSsl/i18n/ru.ts +215 -0
- package/src/tool/inspectorCertificadosSsl/i18n/sv.ts +215 -0
- package/src/tool/inspectorCertificadosSsl/i18n/tr.ts +215 -0
- package/src/tool/inspectorCertificadosSsl/i18n/zh.ts +215 -0
- package/src/tool/inspectorCertificadosSsl/index.ts +24 -0
- package/src/tool/jsonFormatter/i18n/de.ts +157 -0
- package/src/tool/jsonFormatter/i18n/es.ts +2 -1
- package/src/tool/jsonFormatter/i18n/fr.ts +2 -1
- package/src/tool/jsonFormatter/i18n/id.ts +157 -0
- package/src/tool/jsonFormatter/i18n/it.ts +156 -0
- package/src/tool/jsonFormatter/i18n/ja.ts +157 -0
- package/src/tool/jsonFormatter/i18n/ko.ts +157 -0
- package/src/tool/jsonFormatter/i18n/nl.ts +157 -0
- package/src/tool/jsonFormatter/i18n/pl.ts +156 -0
- package/src/tool/jsonFormatter/i18n/pt.ts +156 -0
- package/src/tool/jsonFormatter/i18n/ru.ts +157 -0
- package/src/tool/jsonFormatter/i18n/sv.ts +157 -0
- package/src/tool/jsonFormatter/i18n/tr.ts +157 -0
- package/src/tool/jsonFormatter/i18n/zh.ts +157 -0
- package/src/tool/jsonFormatter/index.ts +15 -7
- package/src/tool/keycode/i18n/de.ts +161 -0
- package/src/tool/keycode/i18n/es.ts +2 -1
- package/src/tool/keycode/i18n/fr.ts +2 -1
- package/src/tool/keycode/i18n/id.ts +161 -0
- package/src/tool/keycode/i18n/it.ts +161 -0
- package/src/tool/keycode/i18n/ja.ts +161 -0
- package/src/tool/keycode/i18n/ko.ts +161 -0
- package/src/tool/keycode/i18n/nl.ts +161 -0
- package/src/tool/keycode/i18n/pl.ts +161 -0
- package/src/tool/keycode/i18n/pt.ts +160 -0
- package/src/tool/keycode/i18n/ru.ts +160 -0
- package/src/tool/keycode/i18n/sv.ts +160 -0
- package/src/tool/keycode/i18n/tr.ts +160 -0
- package/src/tool/keycode/i18n/zh.ts +161 -0
- package/src/tool/keycode/index.ts +15 -7
- package/src/tool/llmCostCalculator/i18n/de.ts +166 -0
- package/src/tool/llmCostCalculator/i18n/fr.ts +2 -1
- package/src/tool/llmCostCalculator/i18n/id.ts +166 -0
- package/src/tool/llmCostCalculator/i18n/it.ts +166 -0
- package/src/tool/llmCostCalculator/i18n/ja.ts +166 -0
- package/src/tool/llmCostCalculator/i18n/ko.ts +166 -0
- package/src/tool/llmCostCalculator/i18n/nl.ts +166 -0
- package/src/tool/llmCostCalculator/i18n/pl.ts +165 -0
- package/src/tool/llmCostCalculator/i18n/pt.ts +165 -0
- package/src/tool/llmCostCalculator/i18n/ru.ts +165 -0
- package/src/tool/llmCostCalculator/i18n/sv.ts +165 -0
- package/src/tool/llmCostCalculator/i18n/tr.ts +165 -0
- package/src/tool/llmCostCalculator/i18n/zh.ts +166 -0
- package/src/tool/llmCostCalculator/index.ts +24 -0
- package/src/tool/mobileMockupGenerator/i18n/de.ts +121 -0
- package/src/tool/mobileMockupGenerator/i18n/id.ts +121 -0
- package/src/tool/mobileMockupGenerator/i18n/it.ts +121 -0
- package/src/tool/mobileMockupGenerator/i18n/ja.ts +122 -0
- package/src/tool/mobileMockupGenerator/i18n/ko.ts +122 -0
- package/src/tool/mobileMockupGenerator/i18n/nl.ts +121 -0
- package/src/tool/mobileMockupGenerator/i18n/pl.ts +31 -0
- package/src/tool/mobileMockupGenerator/i18n/pt.ts +121 -0
- package/src/tool/mobileMockupGenerator/i18n/ru.ts +121 -0
- package/src/tool/mobileMockupGenerator/i18n/sv.ts +121 -0
- package/src/tool/mobileMockupGenerator/i18n/tr.ts +121 -0
- package/src/tool/mobileMockupGenerator/i18n/zh.ts +122 -0
- package/src/tool/mobileMockupGenerator/index.ts +24 -0
- package/src/tool/musicalTypography/i18n/de.ts +179 -0
- package/src/tool/musicalTypography/i18n/id.ts +179 -0
- package/src/tool/musicalTypography/i18n/it.ts +179 -0
- package/src/tool/musicalTypography/i18n/ja.ts +180 -0
- package/src/tool/musicalTypography/i18n/ko.ts +180 -0
- package/src/tool/musicalTypography/i18n/nl.ts +179 -0
- package/src/tool/musicalTypography/i18n/pl.ts +179 -0
- package/src/tool/musicalTypography/i18n/pt.ts +101 -0
- package/src/tool/musicalTypography/i18n/ru.ts +47 -0
- package/src/tool/musicalTypography/i18n/sv.ts +29 -0
- package/src/tool/musicalTypography/i18n/tr.ts +29 -0
- package/src/tool/musicalTypography/i18n/zh.ts +30 -0
- package/src/tool/musicalTypography/index.ts +15 -7
- package/src/tool/placeholderGenerator/i18n/de.ts +176 -0
- package/src/tool/placeholderGenerator/i18n/id.ts +176 -0
- package/src/tool/placeholderGenerator/i18n/it.ts +176 -0
- package/src/tool/placeholderGenerator/i18n/ja.ts +177 -0
- package/src/tool/placeholderGenerator/i18n/ko.ts +177 -0
- package/src/tool/placeholderGenerator/i18n/nl.ts +176 -0
- package/src/tool/placeholderGenerator/i18n/pl.ts +176 -0
- package/src/tool/placeholderGenerator/i18n/pt.ts +176 -0
- package/src/tool/placeholderGenerator/i18n/ru.ts +176 -0
- package/src/tool/placeholderGenerator/i18n/sv.ts +176 -0
- package/src/tool/placeholderGenerator/i18n/tr.ts +176 -0
- package/src/tool/placeholderGenerator/i18n/zh.ts +177 -0
- package/src/tool/placeholderGenerator/index.ts +24 -0
- package/src/tool/promptLibrary/i18n/de.ts +131 -0
- package/src/tool/promptLibrary/i18n/id.ts +131 -0
- package/src/tool/promptLibrary/i18n/it.ts +131 -0
- package/src/tool/promptLibrary/i18n/ja.ts +132 -0
- package/src/tool/promptLibrary/i18n/ko.ts +132 -0
- package/src/tool/promptLibrary/i18n/nl.ts +131 -0
- package/src/tool/promptLibrary/i18n/pl.ts +28 -0
- package/src/tool/promptLibrary/i18n/pt.ts +101 -0
- package/src/tool/promptLibrary/i18n/ru.ts +101 -0
- package/src/tool/promptLibrary/i18n/sv.ts +93 -0
- package/src/tool/promptLibrary/i18n/tr.ts +93 -0
- package/src/tool/promptLibrary/i18n/zh.ts +94 -0
- package/src/tool/promptLibrary/index.ts +24 -0
- package/src/tool/readabilityCalculator/i18n/de.ts +133 -0
- package/src/tool/readabilityCalculator/i18n/id.ts +133 -0
- package/src/tool/readabilityCalculator/i18n/it.ts +133 -0
- package/src/tool/readabilityCalculator/i18n/ja.ts +134 -0
- package/src/tool/readabilityCalculator/i18n/ko.ts +134 -0
- package/src/tool/readabilityCalculator/i18n/nl.ts +133 -0
- package/src/tool/readabilityCalculator/i18n/pl.ts +29 -0
- package/src/tool/readabilityCalculator/i18n/pt.ts +91 -0
- package/src/tool/readabilityCalculator/i18n/ru.ts +91 -0
- package/src/tool/readabilityCalculator/i18n/sv.ts +43 -0
- package/src/tool/readabilityCalculator/i18n/tr.ts +43 -0
- package/src/tool/readabilityCalculator/i18n/zh.ts +44 -0
- package/src/tool/readabilityCalculator/index.ts +24 -0
- package/src/tool/svgSanitizer/i18n/de.ts +125 -0
- package/src/tool/svgSanitizer/i18n/id.ts +125 -0
- package/src/tool/svgSanitizer/i18n/it.ts +125 -0
- package/src/tool/svgSanitizer/i18n/ja.ts +126 -0
- package/src/tool/svgSanitizer/i18n/ko.ts +126 -0
- package/src/tool/svgSanitizer/i18n/nl.ts +125 -0
- package/src/tool/svgSanitizer/i18n/pl.ts +125 -0
- package/src/tool/svgSanitizer/i18n/pt.ts +30 -0
- package/src/tool/svgSanitizer/i18n/ru.ts +126 -0
- package/src/tool/svgSanitizer/i18n/sv.ts +126 -0
- package/src/tool/svgSanitizer/i18n/tr.ts +126 -0
- package/src/tool/svgSanitizer/i18n/zh.ts +126 -0
- package/src/tool/svgSanitizer/index.ts +24 -0
- package/src/tool/svgToCss/i18n/de.ts +174 -0
- package/src/tool/svgToCss/i18n/id.ts +174 -0
- package/src/tool/svgToCss/i18n/it.ts +174 -0
- package/src/tool/svgToCss/i18n/ja.ts +175 -0
- package/src/tool/svgToCss/i18n/ko.ts +175 -0
- package/src/tool/svgToCss/i18n/nl.ts +174 -0
- package/src/tool/svgToCss/i18n/pl.ts +174 -0
- package/src/tool/svgToCss/i18n/pt.ts +174 -0
- package/src/tool/svgToCss/i18n/ru.ts +174 -0
- package/src/tool/svgToCss/i18n/sv.ts +174 -0
- package/src/tool/svgToCss/i18n/tr.ts +174 -0
- package/src/tool/svgToCss/i18n/zh.ts +175 -0
- package/src/tool/svgToCss/index.ts +15 -7
- package/src/tool/urlCleaner/i18n/de.ts +116 -0
- package/src/tool/urlCleaner/i18n/id.ts +116 -0
- package/src/tool/urlCleaner/i18n/it.ts +116 -0
- package/src/tool/urlCleaner/i18n/ja.ts +117 -0
- package/src/tool/urlCleaner/i18n/ko.ts +117 -0
- package/src/tool/urlCleaner/i18n/nl.ts +116 -0
- package/src/tool/urlCleaner/i18n/pl.ts +29 -0
- package/src/tool/urlCleaner/i18n/pt.ts +43 -0
- package/src/tool/urlCleaner/i18n/ru.ts +43 -0
- package/src/tool/urlCleaner/i18n/sv.ts +43 -0
- package/src/tool/urlCleaner/i18n/tr.ts +43 -0
- package/src/tool/urlCleaner/i18n/zh.ts +44 -0
- package/src/tool/urlCleaner/index.ts +24 -0
- package/src/tool/urlEncoderDecoder/i18n/de.ts +163 -0
- package/src/tool/urlEncoderDecoder/i18n/id.ts +163 -0
- package/src/tool/urlEncoderDecoder/i18n/it.ts +163 -0
- package/src/tool/urlEncoderDecoder/i18n/ja.ts +163 -0
- package/src/tool/urlEncoderDecoder/i18n/ko.ts +163 -0
- package/src/tool/urlEncoderDecoder/i18n/nl.ts +163 -0
- package/src/tool/urlEncoderDecoder/i18n/pl.ts +162 -0
- package/src/tool/urlEncoderDecoder/i18n/pt.ts +162 -0
- package/src/tool/urlEncoderDecoder/i18n/ru.ts +163 -0
- package/src/tool/urlEncoderDecoder/i18n/sv.ts +163 -0
- package/src/tool/urlEncoderDecoder/i18n/tr.ts +162 -0
- package/src/tool/urlEncoderDecoder/i18n/zh.ts +163 -0
- package/src/tool/urlEncoderDecoder/index.ts +15 -7
- package/src/tool/utmGenerator/i18n/de.ts +118 -0
- package/src/tool/utmGenerator/i18n/id.ts +118 -0
- package/src/tool/utmGenerator/i18n/it.ts +118 -0
- package/src/tool/utmGenerator/i18n/ja.ts +118 -0
- package/src/tool/utmGenerator/i18n/ko.ts +118 -0
- package/src/tool/utmGenerator/i18n/nl.ts +118 -0
- package/src/tool/utmGenerator/i18n/pl.ts +117 -0
- package/src/tool/utmGenerator/i18n/pt.ts +118 -0
- package/src/tool/utmGenerator/i18n/ru.ts +118 -0
- package/src/tool/utmGenerator/i18n/sv.ts +118 -0
- package/src/tool/utmGenerator/i18n/tr.ts +117 -0
- package/src/tool/utmGenerator/i18n/zh.ts +118 -0
- package/src/tool/utmGenerator/index.ts +15 -7
- package/src/types.ts +1 -2
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { GeneradorSecurityTxtUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'security-txt-generator-rfc-9116-id';
|
|
6
|
+
const title = 'Generator Security.txt RFC 9116';
|
|
7
|
+
const description = 'Buat file security.txt profesional Anda untuk memudahkan pelaporan kerentanan dan memenuhi standar keamanan web internasional.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Apa itu file security.txt?',
|
|
12
|
+
answer: 'Ini adalah standar (RFC 9116) yang memungkinkan situs web menentukan cara peneliti keamanan dapat menghubungi mereka untuk melaporkan kerentanan secara bertanggung jawab.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Di mana file security.txt harus ditempatkan?',
|
|
16
|
+
answer: 'Lokasi standar yang direkomendasikan adalah di folder /.well-known/ domain Anda, menghasilkan URL https://example.com/.well-known/security.txt.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Mengapa tanggal kedaluwarsa wajib diisi?',
|
|
20
|
+
answer: 'Untuk memastikan informasi kontak tidak menjadi usang. Jika file tidak memiliki tanggal kedaluwarsa yang valid, peneliti mungkin tidak percaya bahwa saluran komunikasi masih aktif.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Kolom apa saja yang wajib ada dalam security.txt?',
|
|
24
|
+
answer: 'Menurut RFC 9116, kolom yang wajib adalah "Contact" (berisi alamat email atau URL) dan "Expires" (berisi tanggal mendatang dalam format ISO 8601).',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const howToData = [
|
|
29
|
+
{ name: 'Isi kolom yang tersedia', text: 'Masukkan alamat email atau URL kontak Anda dan pilih tanggal kedaluwarsa.' },
|
|
30
|
+
{ name: 'Tambahkan kolom opsional', text: 'Sertakan informasi tambahan seperti kunci PGP, kebijakan keamanan, atau lowongan pekerjaan.' },
|
|
31
|
+
{ name: 'Unduh atau salin file', text: 'Klik "Unduh .txt" atau salin kontennya dan simpan sebagai security.txt.' },
|
|
32
|
+
{ name: 'Unggah ke server', text: 'Tempatkan file di folder /.well-known/ domain Anda.' },
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
36
|
+
'@context': 'https://schema.org',
|
|
37
|
+
'@type': 'FAQPage',
|
|
38
|
+
mainEntity: faqData.map((item) => ({
|
|
39
|
+
'@type': 'Question',
|
|
40
|
+
name: item.question,
|
|
41
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
42
|
+
})),
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
46
|
+
'@context': 'https://schema.org',
|
|
47
|
+
'@type': 'HowTo',
|
|
48
|
+
name: title,
|
|
49
|
+
description,
|
|
50
|
+
step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
54
|
+
'@context': 'https://schema.org',
|
|
55
|
+
'@type': 'SoftwareApplication',
|
|
56
|
+
name: title,
|
|
57
|
+
description,
|
|
58
|
+
applicationCategory: 'UtilityApplication',
|
|
59
|
+
operatingSystem: 'All',
|
|
60
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
61
|
+
inLanguage: 'id',
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const ui: GeneradorSecurityTxtUI = {
|
|
65
|
+
titleBasicFields: 'Kolom Wajib',
|
|
66
|
+
labelContact: 'Kontak (Email atau URL)',
|
|
67
|
+
placeholderContact: 'mailto:security@example.com atau https://example.com/kontak',
|
|
68
|
+
contactTip: 'Alamat tujuan pengiriman laporan kerentanan.',
|
|
69
|
+
labelExpires: 'Tanggal Kedaluwarsa',
|
|
70
|
+
expiresTip: 'Tidak boleh lebih dari satu tahun ke depan.',
|
|
71
|
+
titleOptionalFields: 'Kolom Opsional',
|
|
72
|
+
labelEncryption: 'Kunci Publik',
|
|
73
|
+
placeholderEncryption: 'https://example.com/pgp-key.txt',
|
|
74
|
+
encryptionTip: 'Tautan ke kunci PGP Anda untuk laporan terenkripsi.',
|
|
75
|
+
labelPolicy: 'Kebijakan Keamanan',
|
|
76
|
+
placeholderPolicy: 'https://example.com/keamanan/kebijakan/',
|
|
77
|
+
policyTip: 'Halaman yang menjelaskan cara menangani kerentanan.',
|
|
78
|
+
labelAcknowledgments: 'Penghargaan',
|
|
79
|
+
placeholderAcknowledgments: 'https://example.com/keamanan/hall-of-fame/',
|
|
80
|
+
acknowledgmentsTip: 'Halaman apresiasi untuk peneliti keamanan.',
|
|
81
|
+
labelHiring: 'Lowongan Kerja',
|
|
82
|
+
placeholderHiring: 'https://example.com/jobs',
|
|
83
|
+
hiringTip: 'Tautan ke lowongan kerja bidang keamanan.',
|
|
84
|
+
resultTitle: 'Pratinjau (security.txt)',
|
|
85
|
+
btnCopy: 'Salin Kode',
|
|
86
|
+
btnDownload: 'Unduh .txt',
|
|
87
|
+
copiedMessage: 'Disalin',
|
|
88
|
+
generatingMessage: 'Membuat file security.txt...',
|
|
89
|
+
comment: 'Dibuat',
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export const content: ToolLocaleContent<GeneradorSecurityTxtUI> = {
|
|
93
|
+
slug,
|
|
94
|
+
title,
|
|
95
|
+
description,
|
|
96
|
+
ui,
|
|
97
|
+
faqTitle: 'Pertanyaan yang Sering Diajukan',
|
|
98
|
+
faq: faqData,
|
|
99
|
+
bibliographyTitle: 'Sumber Teknis tentang Security.txt',
|
|
100
|
+
bibliography: [
|
|
101
|
+
{ name: 'RFC 9116: A File Format to Aid in Security Vulnerability Disclosure', url: 'https://datatracker.ietf.org/doc/html/rfc9116' },
|
|
102
|
+
{ name: 'Security.txt Official Website', url: 'https://securitytxt.org/' },
|
|
103
|
+
{ name: 'OWASP: Vulnerability Disclosure Cheat Sheet', url: 'https://cheatsheetseries.owasp.org/cheatsheets/Vulnerability_Disclosure_Cheat_Sheet.html' },
|
|
104
|
+
],
|
|
105
|
+
howTo: howToData,
|
|
106
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
107
|
+
seo: [
|
|
108
|
+
{ type: 'title', text: 'Apa itu file Security.txt dan mengapa Anda perlu membuatnya?', level: 2 },
|
|
109
|
+
{
|
|
110
|
+
type: 'paragraph',
|
|
111
|
+
html: 'Dalam lanskap keamanan siber saat ini, transparansi dan komunikasi sangatlah penting. Jika Anda seorang administrator sistem, pengembang web, atau pemilik bisnis digital, Anda mungkin sudah familiar dengan file teks yang membantu mesin memahami situs Anda, seperti <code>robots.txt</code> atau <code>ads.txt</code>. Namun, ada standar yang kurang dikenal namun vital bagi integritas platform Anda: <strong>Security.txt</strong>, yang didefinisikan oleh <strong>RFC 9116</strong>.',
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
type: 'paragraph',
|
|
115
|
+
html: 'Tujuan dari <strong>membuat file security.txt</strong> adalah memberi peneliti keamanan cara yang terstandarisasi untuk menghubungi pengelola situs web ketika mereka menemukan kerentanan. Tanpa file ini, seorang peretas etis yang menemukan celah pada sistem Anda mungkin tidak tahu harus melapor ke siapa, yang sering kali berujung pada informasi yang hilang, dipublikasikan tanpa pemberitahuan, atau dimanfaatkan oleh pihak jahat.',
|
|
116
|
+
},
|
|
117
|
+
{ type: 'title', text: 'Cara membuat dan memasang file Security.txt sesuai RFC 9116', level: 2 },
|
|
118
|
+
{
|
|
119
|
+
type: 'paragraph',
|
|
120
|
+
html: 'Standar ini mewajibkan file ditempatkan di lokasi khusus pada server Anda: folder <code>/.well-known/</code>. Dengan demikian, jalur akhirnya biasanya adalah <code>https://domainanda.com/.well-known/security.txt</code>. Meskipun diperbolehkan menempatkannya di root (<code>/security.txt</code>), opsi pertama lebih disukai oleh alat pemindai otomatis.',
|
|
121
|
+
},
|
|
122
|
+
{ type: 'title', text: 'Kolom wajib yang tidak boleh terlewat', level: 3 },
|
|
123
|
+
{
|
|
124
|
+
type: 'paragraph',
|
|
125
|
+
html: 'Saat <strong>membuat kode security.txt</strong>, pastikan file Anda mencakup setidaknya dua elemen kritis:',
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'list',
|
|
129
|
+
items: [
|
|
130
|
+
'<strong>Contact:</strong> Alamat email atau URL formulir tempat laporan dikirimkan. Harus dimulai dengan <code>mailto:</code> atau <code>https://</code>.',
|
|
131
|
+
'<strong>Expires:</strong> Tanggal dalam format ISO 8601 yang menunjukkan kapan informasi file tidak lagi valid. Disarankan tidak melebihi satu tahun ke depan.',
|
|
132
|
+
],
|
|
133
|
+
},
|
|
134
|
+
{ type: 'code', text: 'Contact: mailto:security@perusahaananda.com\nExpires: 2025-12-31T23:59:59.000Z' },
|
|
135
|
+
{ type: 'title', text: 'Kolom opsional untuk keamanan tingkat lanjut', level: 3 },
|
|
136
|
+
{
|
|
137
|
+
type: 'paragraph',
|
|
138
|
+
html: 'Bagi situs yang menginginkan <strong>perlindungan lebih kuat</strong>, standar ini menawarkan kolom tambahan:',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'list',
|
|
142
|
+
items: [
|
|
143
|
+
'<strong>Encryption:</strong> Tautan ke kunci publik PGP Anda agar peneliti dapat mengirimkan informasi secara terenkripsi.',
|
|
144
|
+
'<strong>Policy:</strong> Tautan ke halaman kebijakan keamanan Anda yang menjelaskan proses pengungkapan bertanggung jawab.',
|
|
145
|
+
'<strong>Acknowledgments:</strong> Tautan ke "Hall of Fame" atau halaman apresiasi untuk para peneliti.',
|
|
146
|
+
'<strong>Hiring:</strong> Tautan ke lowongan kerja terkait keamanan siber.',
|
|
147
|
+
],
|
|
148
|
+
},
|
|
149
|
+
{ type: 'title', text: 'Manfaat menggunakan generator Security.txt gratis kami', level: 2 },
|
|
150
|
+
{
|
|
151
|
+
type: 'paragraph',
|
|
152
|
+
html: 'Banyak orang bertanya-tanya <strong>bagaimana mendapatkan kontak keamanan situs web</strong> dengan cepat. Dengan menggunakan alat kami, Anda memastikan kepatuhan ketat terhadap format RFC 9116 tanpa harus membaca dokumen teknis yang rumit.',
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
type: 'paragraph',
|
|
156
|
+
html: 'Menggunakan generator menghindari kesalahan sintaks yang umum terjadi. Misalnya, lupa menambahkan awalan <code>mailto:</code> atau format zona waktu yang salah pada tanggal kedaluwarsa dapat menyebabkan alat otomatis para peneliti mengabaikan file Anda.',
|
|
157
|
+
},
|
|
158
|
+
{ type: 'title', text: 'Dampak pada SEO dan reputasi web', level: 3 },
|
|
159
|
+
{
|
|
160
|
+
type: 'paragraph',
|
|
161
|
+
html: 'Meskipun file <code>security.txt</code> bukan faktor peringkat langsung di Google seperti kecepatan halaman atau HTTPS, dampaknya bersifat tidak langsung namun nyata. Situs web yang mengelola kerentanan dengan baik terhindar dari serangan yang merusak (defacement, injeksi spam) yang bisa menghancurkan SEO dalam hitungan jam. Selain itu, banyak platform penilaian keamanan perusahaan (seperti SecurityScorecard atau BitSight) memberikan poin tambahan kepada domain yang menerapkan standar ini.',
|
|
162
|
+
},
|
|
163
|
+
{ type: 'title', text: 'Kesimpulan: Langkah sederhana untuk web yang lebih aman', level: 2 },
|
|
164
|
+
{
|
|
165
|
+
type: 'paragraph',
|
|
166
|
+
html: 'Singkatnya, <strong>mengunduh security.txt</strong> dan mengunggahnya ke server Anda adalah salah satu tugas pemeliharaan keamanan paling cepat dan efektif yang bisa Anda lakukan hari ini. Anda memudahkan kerja para "pihak baik", mencegah rasa ingin tahu yang berbahaya, dan menunjukkan kepada dunia bahwa Anda serius dalam menjaga privasi dan data pengguna.',
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
type: 'paragraph',
|
|
170
|
+
html: 'Jangan tunggu sampai ada pelanggaran keamanan untuk menyesal belum menyediakan saluran komunikasi. Gunakan <strong>generator security.txt online</strong> kami sekarang dan jaga ekosistem digital Anda tetap terkendali.',
|
|
171
|
+
},
|
|
172
|
+
],
|
|
173
|
+
};
|
|
174
|
+
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { GeneradorSecurityTxtUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'security-txt-generator-rfc-9116-it';
|
|
6
|
+
const title = 'Generatore Security.txt RFC 9116';
|
|
7
|
+
const description = 'Crea il tuo file security.txt professionale per agevolare la segnalazione delle vulnerabilità e rispettare gli standard internazionali di sicurezza web.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: "Cos'è il file security.txt?",
|
|
12
|
+
answer: 'È uno standard (RFC 9116) che consente ai siti web di definire come i ricercatori di sicurezza debbano contattarli per segnalare le vulnerabilità in modo responsabile.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Dove va posizionato il file security.txt?',
|
|
16
|
+
answer: 'La posizione standard consigliata è la cartella /.well-known/ del proprio dominio, con URL risultante https://example.com/.well-known/security.txt.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: "Perché la data di scadenza è obbligatoria?",
|
|
20
|
+
answer: "Per garantire che le informazioni di contatto non diventino obsolete. In assenza di una data di scadenza valida, i ricercatori potrebbero non fidarsi dell'attività dei canali di comunicazione.",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Quali campi sono obbligatori in un security.txt?',
|
|
24
|
+
answer: 'Secondo RFC 9116, i campi obbligatori sono "Contact" (con un indirizzo email o URL) e "Expires" (con una data futura in formato ISO 8601).',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const howToData = [
|
|
29
|
+
{ name: 'Compila i campi', text: 'Inserisci il tuo indirizzo email o URL di contatto e scegli una data di scadenza.' },
|
|
30
|
+
{ name: 'Aggiungi i campi facoltativi', text: 'Includi informazioni aggiuntive come la tua chiave PGP, la policy di sicurezza o le offerte di lavoro.' },
|
|
31
|
+
{ name: 'Scarica o copia il file', text: 'Clicca su "Scarica .txt" oppure copia il contenuto e salvalo come security.txt.' },
|
|
32
|
+
{ name: 'Carica sul server', text: 'Inserisci il file nella cartella /.well-known/ del tuo dominio.' },
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
36
|
+
'@context': 'https://schema.org',
|
|
37
|
+
'@type': 'FAQPage',
|
|
38
|
+
mainEntity: faqData.map((item) => ({
|
|
39
|
+
'@type': 'Question',
|
|
40
|
+
name: item.question,
|
|
41
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
42
|
+
})),
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
46
|
+
'@context': 'https://schema.org',
|
|
47
|
+
'@type': 'HowTo',
|
|
48
|
+
name: title,
|
|
49
|
+
description,
|
|
50
|
+
step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
54
|
+
'@context': 'https://schema.org',
|
|
55
|
+
'@type': 'SoftwareApplication',
|
|
56
|
+
name: title,
|
|
57
|
+
description,
|
|
58
|
+
applicationCategory: 'UtilityApplication',
|
|
59
|
+
operatingSystem: 'All',
|
|
60
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
61
|
+
inLanguage: 'it',
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const ui: GeneradorSecurityTxtUI = {
|
|
65
|
+
titleBasicFields: 'Campi Obbligatori',
|
|
66
|
+
labelContact: 'Contatto (Email o URL)',
|
|
67
|
+
placeholderContact: 'mailto:security@example.com o https://example.com/contatto',
|
|
68
|
+
contactTip: 'Indirizzo a cui inviare le segnalazioni di vulnerabilità.',
|
|
69
|
+
labelExpires: 'Data di Scadenza',
|
|
70
|
+
expiresTip: 'Non deve superare un anno nel futuro.',
|
|
71
|
+
titleOptionalFields: 'Campi Facoltativi',
|
|
72
|
+
labelEncryption: 'Chiave Pubblica',
|
|
73
|
+
placeholderEncryption: 'https://example.com/pgp-key.txt',
|
|
74
|
+
encryptionTip: 'Link alla tua chiave PGP per segnalazioni cifrate.',
|
|
75
|
+
labelPolicy: 'Policy di Sicurezza',
|
|
76
|
+
placeholderPolicy: 'https://example.com/sicurezza/policy/',
|
|
77
|
+
policyTip: 'Pagina che descrive come gestire le vulnerabilità.',
|
|
78
|
+
labelAcknowledgments: 'Ringraziamenti',
|
|
79
|
+
placeholderAcknowledgments: 'https://example.com/sicurezza/hall-of-fame/',
|
|
80
|
+
acknowledgmentsTip: 'Pagina di ringraziamento ai ricercatori di sicurezza.',
|
|
81
|
+
labelHiring: 'Offerte di Lavoro',
|
|
82
|
+
placeholderHiring: 'https://example.com/lavora-con-noi',
|
|
83
|
+
hiringTip: 'Link alle posizioni aperte nel campo della sicurezza.',
|
|
84
|
+
resultTitle: 'Anteprima (security.txt)',
|
|
85
|
+
btnCopy: 'Copia Codice',
|
|
86
|
+
btnDownload: 'Scarica .txt',
|
|
87
|
+
copiedMessage: 'Copiato',
|
|
88
|
+
generatingMessage: 'Generazione del file security.txt in corso...',
|
|
89
|
+
comment: 'Generato',
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export const content: ToolLocaleContent<GeneradorSecurityTxtUI> = {
|
|
93
|
+
slug,
|
|
94
|
+
title,
|
|
95
|
+
description,
|
|
96
|
+
ui,
|
|
97
|
+
faqTitle: 'Domande Frequenti',
|
|
98
|
+
faq: faqData,
|
|
99
|
+
bibliographyTitle: 'Risorse Tecniche su Security.txt',
|
|
100
|
+
bibliography: [
|
|
101
|
+
{ name: 'RFC 9116: A File Format to Aid in Security Vulnerability Disclosure', url: 'https://datatracker.ietf.org/doc/html/rfc9116' },
|
|
102
|
+
{ name: 'Security.txt Official Website', url: 'https://securitytxt.org/' },
|
|
103
|
+
{ name: 'OWASP: Vulnerability Disclosure Cheat Sheet', url: 'https://cheatsheetseries.owasp.org/cheatsheets/Vulnerability_Disclosure_Cheat_Sheet.html' },
|
|
104
|
+
],
|
|
105
|
+
howTo: howToData,
|
|
106
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
107
|
+
seo: [
|
|
108
|
+
{ type: 'title', text: 'Cos\'è un file Security.txt e perché dovresti crearne uno?', level: 2 },
|
|
109
|
+
{
|
|
110
|
+
type: 'paragraph',
|
|
111
|
+
html: 'Nel panorama attuale della sicurezza informatica, trasparenza e comunicazione sono fondamentali. Se sei un amministratore di sistema, uno sviluppatore web o il titolare di un\'attività digitale, probabilmente conosci già i file di testo che aiutano le macchine a comprendere il tuo sito, come <code>robots.txt</code> o <code>ads.txt</code>. Esiste però uno standard meno noto ma essenziale per l\'integrità della tua piattaforma: <strong>Security.txt</strong>, definito da <strong>RFC 9116</strong>.',
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
type: 'paragraph',
|
|
115
|
+
html: 'Lo scopo di <strong>generare un file security.txt</strong> è fornire ai ricercatori di sicurezza un metodo standardizzato per contattare i responsabili di un sito web quando scoprono una vulnerabilità. Senza questo file, un hacker etico che trova una falla nel tuo sistema potrebbe non sapere a chi segnalarla, con il rischio che l\'informazione vada persa, venga pubblicata senza preavviso o, nel peggiore dei casi, sfruttata da malintenzionati.',
|
|
116
|
+
},
|
|
117
|
+
{ type: 'title', text: 'Come creare e installare il file Security.txt seguendo RFC 9116', level: 2 },
|
|
118
|
+
{
|
|
119
|
+
type: 'paragraph',
|
|
120
|
+
html: 'Lo <strong>standard per il contatto con i ricercatori di sicurezza</strong> prevede che questo file risieda in una posizione specifica del tuo server: la cartella <code>/.well-known/</code>. Il percorso finale è quindi solitamente <code>https://tuodominio.it/.well-known/security.txt</code>. È consentito anche inserirlo nella root (<code>/security.txt</code>), ma la prima opzione è preferita dagli strumenti di scansione automatica.',
|
|
121
|
+
},
|
|
122
|
+
{ type: 'title', text: 'I campi obbligatori che non possono mancare', level: 3 },
|
|
123
|
+
{
|
|
124
|
+
type: 'paragraph',
|
|
125
|
+
html: 'Quando <strong>generi il tuo codice security.txt</strong>, devi assicurarti che includa almeno due elementi critici:',
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'list',
|
|
129
|
+
items: [
|
|
130
|
+
'<strong>Contact:</strong> L\'indirizzo email o l\'URL di un modulo per ricevere le segnalazioni. Deve iniziare con <code>mailto:</code> o <code>https://</code>.',
|
|
131
|
+
'<strong>Expires:</strong> Una data in formato ISO 8601 che indica quando le informazioni del file non saranno più valide. Si raccomanda di non impostare una data superiore a un anno.',
|
|
132
|
+
],
|
|
133
|
+
},
|
|
134
|
+
{ type: 'code', text: 'Contact: mailto:security@tuaazienda.it\nExpires: 2025-12-31T23:59:59.000Z' },
|
|
135
|
+
{ type: 'title', text: 'Campi facoltativi per una sicurezza avanzata', level: 3 },
|
|
136
|
+
{
|
|
137
|
+
type: 'paragraph',
|
|
138
|
+
html: 'Per i siti che puntano a una <strong>protezione più robusta</strong>, lo standard offre campi aggiuntivi:',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'list',
|
|
142
|
+
items: [
|
|
143
|
+
'<strong>Encryption:</strong> Un link alla tua chiave pubblica PGP affinché i ricercatori possano inviarti informazioni cifrate.',
|
|
144
|
+
'<strong>Policy:</strong> Un link alla tua pagina di security policy, dove spieghi il processo di divulgazione responsabile.',
|
|
145
|
+
'<strong>Acknowledgments:</strong> Un link alla tua "Hall of Fame" o alla pagina dei ringraziamenti per i ricercatori.',
|
|
146
|
+
'<strong>Hiring:</strong> Un link alle tue offerte di lavoro nel campo della cybersicurezza.',
|
|
147
|
+
],
|
|
148
|
+
},
|
|
149
|
+
{ type: 'title', text: 'I vantaggi del nostro generatore di Security.txt gratuito', level: 2 },
|
|
150
|
+
{
|
|
151
|
+
type: 'paragraph',
|
|
152
|
+
html: 'In molti si chiedono <strong>come ottenere rapidamente il contatto di sicurezza</strong> di un sito web. Con il nostro strumento ti assicuri di rispettare scrupolosamente il formato RFC 9116 senza dover leggere complessi documenti tecnici.',
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
type: 'paragraph',
|
|
156
|
+
html: 'Usare un generatore ti evita i classici errori di sintassi. Ad esempio, dimenticare il prefisso <code>mailto:</code> o formattare in modo errato il fuso orario nella data di scadenza può fare sì che gli strumenti automatizzati dei ricercatori ignorino completamente il tuo file.',
|
|
157
|
+
},
|
|
158
|
+
{ type: 'title', text: 'Impatto su SEO e reputazione web', level: 3 },
|
|
159
|
+
{
|
|
160
|
+
type: 'paragraph',
|
|
161
|
+
html: 'Sebbene il file <code>security.txt</code> non sia un fattore di ranking diretto su Google come la velocità di caricamento o HTTPS, ha comunque un impatto indiretto. Un sito che gestisce bene le vulnerabilità evita attacchi rumorosi (defacement, iniezioni di spam) che possono compromettere il posizionamento in poche ore. Inoltre, molte piattaforme di rating sulla sicurezza aziendale (come SecurityScorecard o BitSight) assegnano punti extra ai domini che adottano questo standard.',
|
|
162
|
+
},
|
|
163
|
+
{ type: 'title', text: 'Conclusione: Un passo semplice per un web più sicuro', level: 2 },
|
|
164
|
+
{
|
|
165
|
+
type: 'paragraph',
|
|
166
|
+
html: 'In sintesi, <strong>scaricare security.txt</strong> e caricarlo sul tuo server è una delle operazioni di manutenzione della sicurezza più rapide ed efficaci che puoi compiere oggi stesso. Faciliti il lavoro ai "buoni", scoraggi i curiosi e dimostri al mondo che prendi sul serio la privacy e i dati dei tuoi utenti.',
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
type: 'paragraph',
|
|
170
|
+
html: 'Non aspettare una violazione della sicurezza per rimpiangere di non aver predisposto un canale di comunicazione. Usa subito il nostro <strong>generatore di security.txt online</strong> e tieni il tuo ecosistema digitale sotto controllo.',
|
|
171
|
+
},
|
|
172
|
+
],
|
|
173
|
+
};
|
|
174
|
+
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { GeneradorSecurityTxtUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'security-txt-generator-rfc-9116';
|
|
6
|
+
const title = 'Security.txt ジェネレーター RFC 9116';
|
|
7
|
+
const description = 'プロフェッショナルな security.txt ファイルを作成して、脆弱性の報告を円滑にし、国際的なウェブセキュリティ標準に準拠しましょう。';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'security.txt ファイルとは何ですか?',
|
|
12
|
+
answer: 'RFC 9116 で定義された標準規格で、セキュリティ研究者が脆弱性を責任を持って報告する際の連絡方法をウェブサイトが明示するためのものです。',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'security.txt ファイルはどこに置けばよいですか?',
|
|
16
|
+
answer: '推奨される場所はドメインの /.well-known/ フォルダです。最終的な URL は https://example.com/.well-known/security.txt になります。',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: '有効期限はなぜ必須なのですか?',
|
|
20
|
+
answer: '連絡先情報が古くならないようにするためです。有効な有効期限がない場合、研究者はコミュニケーションチャネルがまだ有効かどうか信頼できません。',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'security.txt に必須のフィールドは何ですか?',
|
|
24
|
+
answer: 'RFC 9116 によると、必須フィールドは「Contact」(メールアドレスまたは URL)と「Expires」(ISO 8601 形式の将来の日付)です。',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const howToData = [
|
|
29
|
+
{ name: 'フィールドに入力する', text: 'メールアドレスまたは連絡先 URL を入力し、有効期限を選択します。' },
|
|
30
|
+
{ name: '任意フィールドを追加する', text: 'PGP 鍵、セキュリティポリシー、採用情報などの追加情報を入力します。' },
|
|
31
|
+
{ name: 'ファイルをダウンロードまたはコピーする', text: '「.txt をダウンロード」をクリックするか、内容をコピーして security.txt として保存します。' },
|
|
32
|
+
{ name: 'サーバーにアップロードする', text: 'ドメインの /.well-known/ フォルダにファイルを配置します。' },
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
36
|
+
'@context': 'https://schema.org',
|
|
37
|
+
'@type': 'FAQPage',
|
|
38
|
+
mainEntity: faqData.map((item) => ({
|
|
39
|
+
'@type': 'Question',
|
|
40
|
+
name: item.question,
|
|
41
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
42
|
+
})),
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
46
|
+
'@context': 'https://schema.org',
|
|
47
|
+
'@type': 'HowTo',
|
|
48
|
+
name: title,
|
|
49
|
+
description,
|
|
50
|
+
step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
54
|
+
'@context': 'https://schema.org',
|
|
55
|
+
'@type': 'SoftwareApplication',
|
|
56
|
+
name: title,
|
|
57
|
+
description,
|
|
58
|
+
applicationCategory: 'UtilityApplication',
|
|
59
|
+
operatingSystem: 'All',
|
|
60
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
61
|
+
inLanguage: 'ja',
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const ui: GeneradorSecurityTxtUI = {
|
|
65
|
+
titleBasicFields: '必須フィールド',
|
|
66
|
+
labelContact: '連絡先(メールまたは URL)',
|
|
67
|
+
placeholderContact: 'mailto:security@example.com または https://example.com/contact',
|
|
68
|
+
contactTip: '脆弱性報告の送信先アドレスを入力してください。',
|
|
69
|
+
labelExpires: '有効期限',
|
|
70
|
+
expiresTip: '1年以上先の日付は推奨されません。',
|
|
71
|
+
titleOptionalFields: '任意フィールド',
|
|
72
|
+
labelEncryption: '公開鍵',
|
|
73
|
+
placeholderEncryption: 'https://example.com/pgp-key.txt',
|
|
74
|
+
encryptionTip: '暗号化された報告用の PGP 鍵へのリンク。',
|
|
75
|
+
labelPolicy: 'セキュリティポリシー',
|
|
76
|
+
placeholderPolicy: 'https://example.com/security/policy/',
|
|
77
|
+
policyTip: '脆弱性対応方針を説明するページ。',
|
|
78
|
+
labelAcknowledgments: '謝辞',
|
|
79
|
+
placeholderAcknowledgments: 'https://example.com/security/hall-of-fame/',
|
|
80
|
+
acknowledgmentsTip: 'セキュリティ研究者への感謝ページ。',
|
|
81
|
+
labelHiring: '採用情報',
|
|
82
|
+
placeholderHiring: 'https://example.com/jobs',
|
|
83
|
+
hiringTip: 'セキュリティ関連の求人へのリンク。',
|
|
84
|
+
resultTitle: 'プレビュー(security.txt)',
|
|
85
|
+
btnCopy: 'コードをコピー',
|
|
86
|
+
btnDownload: '.txt をダウンロード',
|
|
87
|
+
copiedMessage: 'コピーしました',
|
|
88
|
+
generatingMessage: 'security.txt ファイルを生成中...',
|
|
89
|
+
comment: '生成済み',
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export const content: ToolLocaleContent<GeneradorSecurityTxtUI> = {
|
|
93
|
+
slug,
|
|
94
|
+
title,
|
|
95
|
+
description,
|
|
96
|
+
ui,
|
|
97
|
+
faqTitle: 'よくある質問',
|
|
98
|
+
faq: faqData,
|
|
99
|
+
bibliographyTitle: 'Security.txt に関する技術リソース',
|
|
100
|
+
bibliography: [
|
|
101
|
+
{ name: 'RFC 9116: A File Format to Aid in Security Vulnerability Disclosure', url: 'https://datatracker.ietf.org/doc/html/rfc9116' },
|
|
102
|
+
{ name: 'Security.txt Official Website', url: 'https://securitytxt.org/' },
|
|
103
|
+
{ name: 'OWASP: Vulnerability Disclosure Cheat Sheet', url: 'https://cheatsheetseries.owasp.org/cheatsheets/Vulnerability_Disclosure_Cheat_Sheet.html' },
|
|
104
|
+
],
|
|
105
|
+
howTo: howToData,
|
|
106
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
107
|
+
seo: [
|
|
108
|
+
{ type: 'title', text: 'Security.txt ファイルとは何か、なぜ作成すべきなのか', level: 2 },
|
|
109
|
+
{
|
|
110
|
+
type: 'paragraph',
|
|
111
|
+
html: '現代のサイバーセキュリティにおいて、透明性とコミュニケーションは不可欠です。システム管理者、Web 開発者、またはデジタルビジネスの運営者であれば、<code>robots.txt</code> や <code>ads.txt</code> といった、機械がサイトを理解するのを助けるテキストファイルをご存知でしょう。しかし、プラットフォームの信頼性にとって重要でありながらあまり知られていない標準があります。それが <strong>RFC 9116</strong> で定義された <strong>Security.txt</strong> です。',
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
type: 'paragraph',
|
|
115
|
+
html: '<strong>security.txt ファイルを作成する</strong>目的は、セキュリティ研究者が脆弱性を発見した際に、ウェブサイトの管理者に連絡するための標準化された手段を提供することです。このファイルがなければ、システムの欠陥を見つけた倫理的なハッカーは誰に報告すればよいかわからず、情報が埋もれたり、予告なく公開されたり、悪意ある攻撃者に悪用されるリスクが生じます。',
|
|
116
|
+
},
|
|
117
|
+
{ type: 'title', text: 'RFC 9116 に沿って Security.txt を作成・設置する方法', level: 2 },
|
|
118
|
+
{
|
|
119
|
+
type: 'paragraph',
|
|
120
|
+
html: 'この標準では、ファイルをサーバーの特定の場所に置くことが求められています。それがフォルダ <code>/.well-known/</code> です。最終的なパスは通常 <code>https://yourdomain.com/.well-known/security.txt</code> となります。ルートへの設置(<code>/security.txt</code>)も許可されていますが、自動スキャンツールでは前者が優先されます。',
|
|
121
|
+
},
|
|
122
|
+
{ type: 'title', text: '必ず含めるべき必須フィールド', level: 3 },
|
|
123
|
+
{
|
|
124
|
+
type: 'paragraph',
|
|
125
|
+
html: '<strong>security.txt のコードを生成する</strong>際には、少なくとも次の2つの重要な要素を含める必要があります。',
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'list',
|
|
129
|
+
items: [
|
|
130
|
+
'<strong>Contact:</strong> 報告を受け付けるメールアドレスまたはフォームの URL。<code>mailto:</code> または <code>https://</code> から始まる必要があります。',
|
|
131
|
+
'<strong>Expires:</strong> ファイルの情報が無効になる日付(ISO 8601 形式)。1年以上先の日付は設定しないことが推奨されます。',
|
|
132
|
+
],
|
|
133
|
+
},
|
|
134
|
+
{ type: 'code', text: 'Contact: mailto:security@yourcompany.com\nExpires: 2025-12-31T23:59:59.000Z' },
|
|
135
|
+
{ type: 'title', text: '高度なセキュリティのための任意フィールド', level: 3 },
|
|
136
|
+
{
|
|
137
|
+
type: 'paragraph',
|
|
138
|
+
html: 'より堅牢な<strong>ウェブサイト保護</strong>を目指すサイトには、標準規格が追加フィールドを提供しています。',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'list',
|
|
142
|
+
items: [
|
|
143
|
+
'<strong>Encryption:</strong> 研究者が暗号化された情報を送れるよう、PGP 公開鍵へのリンクを提供します。',
|
|
144
|
+
'<strong>Policy:</strong> 責任ある情報開示プロセスを説明したセキュリティポリシーページへのリンク。',
|
|
145
|
+
'<strong>Acknowledgments:</strong> 研究者への「殿堂」や感謝ページへのリンク。',
|
|
146
|
+
'<strong>Hiring:</strong> サイバーセキュリティ関連の求人情報へのリンク。',
|
|
147
|
+
],
|
|
148
|
+
},
|
|
149
|
+
{ type: 'title', text: '無料の Security.txt ジェネレーターを使うメリット', level: 2 },
|
|
150
|
+
{
|
|
151
|
+
type: 'paragraph',
|
|
152
|
+
html: '<strong>ウェブサイトのセキュリティ連絡先を素早く取得する</strong>方法を知りたいという声はよく聞かれます。本ツールを使えば、複雑な技術文書を読まなくても RFC 9116 のフォーマットに厳密に準拠したファイルを作成できます。',
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
type: 'paragraph',
|
|
156
|
+
html: 'ジェネレーターを使うことで、よくある構文ミスも防げます。<code>mailto:</code> プレフィックスの付け忘れや、有効期限のタイムゾーン指定の誤りがあると、研究者の自動ツールがファイルを無視してしまうことがあります。',
|
|
157
|
+
},
|
|
158
|
+
{ type: 'title', text: 'SEO とウェブの信頼性への影響', level: 3 },
|
|
159
|
+
{
|
|
160
|
+
type: 'paragraph',
|
|
161
|
+
html: '<code>security.txt</code> は、ページ速度や HTTPS のように Google の直接的なランキング要因ではありませんが、間接的な影響があります。脆弱性を適切に管理するサイトは、SEO を数時間で台無しにしかねない大規模な攻撃(改ざん、スパム注入)を未然に防げます。また、SecurityScorecard や BitSight などの企業向けセキュリティ評価プラットフォームは、この標準を実装しているドメインに加点しています。',
|
|
162
|
+
},
|
|
163
|
+
{ type: 'title', text: 'まとめ:より安全なウェブへの簡単な一歩', level: 2 },
|
|
164
|
+
{
|
|
165
|
+
type: 'paragraph',
|
|
166
|
+
html: 'まとめると、<strong>security.txt をダウンロード</strong>してサーバーにアップロードすることは、今すぐできるセキュリティメンテナンス作業の中で最も素早く効果的なものの一つです。善意の研究者の作業を助け、無用な詮索を防ぎ、ユーザーのプライバシーとデータを真剣に考えていることを世界に示せます。',
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
type: 'paragraph',
|
|
170
|
+
html: 'セキュリティインシデントが起きてから「連絡手段を用意しておけばよかった」と後悔しないでください。今すぐ<strong>オンライン security.txt ジェネレーター</strong>を使って、デジタルエコシステムを安全に保ちましょう。',
|
|
171
|
+
},
|
|
172
|
+
],
|
|
173
|
+
};
|
|
174
|
+
|