Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • Synzvato/decentraleyes
  • gkrishnaks/decentraleyes
  • ExE-Boss/decentraleyes
  • whtsky/decentraleyes
  • grtgarrett/decentraleyes
  • An_dz/decentraleyes
  • Alaska/decentraleyes
  • finn/decentraleyes
  • klippy/decentraleyes
9 results
Show changes
Showing
with 1046 additions and 499 deletions
{
"extensionDescription":{
"message":"Skyddar dig mot att spåras av \"gratis\", centraliserad, innehållsleverans.",
"description":"Extension description."
"extensionDescription": {
"message": "Skyddar dig mot att spåras av \"gratis\" centraliserad innehållsleverans.",
"description": "Extension description."
},
"disableProtectionTitle":{
"message":"Inaktivera skydd för den här sidan",
"description":"Disable protection title."
"disableProtectionTitle": {
"message": "Inaktivera skydd för den här sidan",
"description": "Disable protection title."
},
"enableProtectionTitle":{
"message":"Aktivera skydd",
"description":"Enable protection title."
"enableProtectionTitle": {
"message": "Aktivera skydd",
"description": "Enable protection title."
},
"amountInjectedTitle":{
"message":"Räknare för lokalt insatta resurser",
"description":"Amount injected title."
"amountInjectedTitle": {
"message": "Räknare för lokalt insatta resurser",
"description": "Amount injected title."
},
"amountInjectedDescription":{
"message":"Antalet insatta Content Delivery Network-resurser sedan installationen.",
"description":"Amount injected description."
"amountInjectedDescription": {
"message": "Mängden lokala resursinjektioner för innehållsleveransnätverk sedan installationen.",
"description": "Amount injected description."
},
"optionsTitle":{
"message":"Inställningar",
"description":"Options title."
"optionsTitle": {
"message": "Alternativ",
"description": "Options title."
},
"showIconBadgeTitle":{
"message":"Visa insättningsantal på ikonen",
"description":"Show icon badge title."
"showIconBadgeTitle": {
"message": "Visa insättningsantal på ikonen",
"description": "Show icon badge title."
},
"showIconBadgeDescription":{
"message":"Visa antalet insatta resurser på ikonen.",
"description":"Show icon badge description."
"showIconBadgeDescription": {
"message": "Visa antalet insatta resurser på tilläggsikonen.",
"description": "Show icon badge description."
},
"blockMissingTitle":{
"message":"Blockera förfrågningar när resurs saknas",
"description":"Block requests for missing resources title."
"blockMissingTitle": {
"message": "Blockera förfrågningar när resurs saknas",
"description": "Block requests for missing resources title."
},
"blockMissingDescription":{
"message":"Avbryt avlyssnad begäran om den begärda resursen inte finns lokalt.",
"description":"Block requests for missing resources description."
"blockMissingDescription": {
"message": "Avbryt avlyssnad begäran om den nödvändiga resursen inte är lokalt tillgänglig.",
"description": "Block requests for missing resources description."
},
"disablePrefetchTitle":{
"message":"Inaktivera länkförhandshämtning",
"description":"Disable prefetch title."
"disablePrefetchTitle": {
"message": "Inaktivera länkförhandshämtning",
"description": "Disable prefetch title."
},
"disablePrefetchDescription":{
"message":"Förhindra otillåtna förfrågningar från att läcka ut till leveransnätverk.",
"description":"Disable prefetch description."
"disablePrefetchDescription": {
"message": "Förhindra otillåtna förfrågningar från att läcka ut till leveransnätverk.",
"description": "Disable prefetch description."
},
"stripMetadataTitle":{
"message":"Skala bort metadata från tillåtna förfrågningar",
"description":"Strip metadata title."
"stripMetadataTitle": {
"message": "Skala bort metadata från tillåtna förfrågningar",
"description": "Strip metadata title."
},
"stripMetadataDescription":{
"message":"Radera känslig data från tillåtna CDN-förfrågningar för förbättrad integritet.",
"description":"Strip metadata description."
"stripMetadataDescription": {
"message": "Radera känslig data från tillåtna CDN-förfrågningar för förbättrad integritet.",
"description": "Strip metadata description."
},
"whitelistedDomainsTitle":{
"message":"Exkludera domäner från inspektioner",
"description":"Whitelisted domains title."
"whitelistedDomainsTitle": {
"message": "Exkludera domäner från inspektioner",
"description": "Whitelisted domains title."
},
"whitelistedDomainsDescription":{
"message":"Ange domäner för vitlistning. Separera flera domänposter med semikolon (;).",
"description":"Whitelisted domains description."
"whitelistedDomainsDescription": {
"message": "Ange domäner för vitlistning. Separera flera domänposter med semikolon (;).",
"description": "Whitelisted domains description."
},
"advancedLabel":{
"message":"Avancerad",
"description":"Advanced label."
"advancedLabel": {
"message": "Avancerat",
"description": "Advanced label."
}
}
\ No newline at end of file
}
{
"extensionDescription": {
"message": "Para protektahan ka laban sa pagsubaybay sa pamamagitan ng \"libre\", sentralisadong, paghahatid ng nilalaman.",
"description": "Extension description."
},
"disableProtectionTitle": {
"message": "Huwag paganahin ang proteksyon para sa sayt na ito",
"description": "Disable protection title."
},
"enableProtectionTitle": {
"message": "Paganahin ang proteksyon",
"description": "Enable protection title."
},
"amountInjectedTitle": {
"message": "Laban para sa mga lokal na iniksiyong mga mapagkukunan",
"description": "Amount injected title."
},
"amountInjectedDescription": {
"message": "Ang halaga ng mga lokal na Nilalaman sa Network ng Paghahatid ng pinagmulan sa pag-install mula noong pag-install.",
"description": "Amount injected description."
},
"optionsTitle": {
"message": "Ang mga pagpipilian",
"description": "Options title."
},
"showIconBadgeTitle": {
"message": "Ang naka-displey na ineksyon ay mabibilang sa imahe",
"description": "Show icon badge title."
},
"showIconBadgeDescription": {
"message": "Ipakita ang bilang ng mga injected na pinagmulan sa ekstensyon nang imahe.",
"description": "Show icon badge description."
},
"blockMissingTitle": {
"message": "Harangan ang mga kahilingan para sa mga nawawalang mapagkukunan",
"description": "Block requests for missing resources title."
},
"blockMissingDescription": {
"message": "Kanselahin ang kahilingan na intercepted kung ang mga kinakailangang mapagkukunan ay hindi available sa lokal.",
"description": "Block requests for missing resources description."
},
"disablePrefetchTitle": {
"message": "Huwag paganahin ang prefetching link",
"description": "Disable prefetch title."
},
"disablePrefetchDescription": {
"message": "Pigilan ang mga kahilingan na hindi pinayagan mula sa pagkalat sa paghahatid ng mga network.",
"description": "Disable prefetch description."
},
"stripMetadataTitle": {
"message": "Iliston ang metadata mula sa mga pinayagan na kahilingan",
"description": "Strip metadata title."
},
"stripMetadataDescription": {
"message": "Burahin ang sensitibong datus mula sa mga pinahihintulutang kahilingan ng CDN para sa pinahusay na pagiging pribado nito.",
"description": "Strip metadata description."
},
"whitelistedDomainsTitle": {
"message": "Ibukod ang mga domain mula sa mga iinspeksyon",
"description": "Whitelisted domains title."
},
"whitelistedDomainsDescription": {
"message": "Ipasok ang mga domain upang i-whitelist sila. Paghiwalayin ang maramihang mga entry na may tuldok kuwit (;).",
"description": "Whitelisted domains description."
},
"advancedLabel": {
"message": "Naka-usad",
"description": "Advanced label."
}
}
{
"extensionDescription":{
"message":"Sizi, \"ücretsiz\", merkezi, içerik dağıtımı aracılığıyla yapılan takipten korur.",
"description":"Extension description."
"extensionDescription": {
"message": "Sizi içerik dağıtımıyla yapılan merkezi ve \"ücretsiz\" takipten korur.",
"description": "Extension description."
},
"disableProtectionTitle":{
"message":"Bu sitede korumayı devre dışı bırak",
"description":"Disable protection title."
"disableProtectionTitle": {
"message": "Bu sitede korumayı devre dışı bırak",
"description": "Disable protection title."
},
"enableProtectionTitle":{
"message":"Korumayı etkinleştir",
"description":"Enable protection title."
"enableProtectionTitle": {
"message": "Korumayı etkinleştir",
"description": "Enable protection title."
},
"amountInjectedTitle":{
"message":"Yerel olarak eklenen kaynaklar için sayaç",
"description":"Amount injected title."
"amountInjectedTitle": {
"message": "Yerel olarak eklenen kaynaklar için sayaç",
"description": "Amount injected title."
},
"amountInjectedDescription":{
"message":"Kurulumdan bu yana yerel İçerik Dağıtım Ağı kaynak eklemelerinin miktarı.",
"description":"Amount injected description."
"amountInjectedDescription": {
"message": "Kurulumdan bu yana yerel İçerik Dağıtım Ağı kaynak eklemelerinin miktarı.",
"description": "Amount injected description."
},
"optionsTitle":{
"message":"Seçenekler",
"description":"Options title."
"optionsTitle": {
"message": "Seçenekler",
"description": "Options title."
},
"showIconBadgeTitle":{
"message":"Simgede enjeksiyon sayaçlarını göster",
"description":"Show icon badge title."
"showIconBadgeTitle": {
"message": "Simgede enjeksiyon sayaçlarını göster",
"description": "Show icon badge title."
},
"showIconBadgeDescription":{
"message":"Enjekte edilen kaynakların sayısını uzantı simgesinde gösterin.",
"description":"Show icon badge description."
"showIconBadgeDescription": {
"message": "Enjekte edilen kaynakların sayısını uzantı simgesinde gösterin.",
"description": "Show icon badge description."
},
"blockMissingTitle":{
"message":"Eksik kaynaklar için gelen istekleri engelle",
"description":"Block requests for missing resources title."
"blockMissingTitle": {
"message": "Eksik kaynaklar için gelen istekleri engelle",
"description": "Block requests for missing resources title."
},
"blockMissingDescription":{
"message":"İstenilen kaynak yerel olarak mevcut değilse, yakalanan isteği iptal et.",
"description":"Block requests for missing resources description."
"blockMissingDescription": {
"message": "İstenilen kaynak yerel olarak mevcut değilse, yakalanan isteği iptal et.",
"description": "Block requests for missing resources description."
},
"disablePrefetchTitle":{
"message":"Bağlantı önalımını devre dışı bırak",
"description":"Disable prefetch title."
"disablePrefetchTitle": {
"message": "Bağlantı önalımını devre dışı bırak",
"description": "Disable prefetch title."
},
"disablePrefetchDescription":{
"message":"İzin verilmeyen isteklerin dağıtım ağlarına sızmasını engelleyin.",
"description":"Disable prefetch description."
"disablePrefetchDescription": {
"message": "İzin verilmeyen isteklerin dağıtım ağlarına sızmasını engelleyin.",
"description": "Disable prefetch description."
},
"stripMetadataTitle":{
"message":"Meta verilerini izin verilen isteklerden ayır",
"description":"Strip metadata title."
"stripMetadataTitle": {
"message": "Meta verilerini izin verilen isteklerden ayır",
"description": "Strip metadata title."
},
"stripMetadataDescription":{
"message":zin verilen CDN isteklerine duyarlı verileri gelişmiş gizlilik için silin.",
"description":"Strip metadata description."
"stripMetadataDescription": {
"message": leri düzey gizlilik için, izin verilen CDN isteklerinden hassas verileri sil.",
"description": "Strip metadata description."
},
"whitelistedDomainsTitle":{
"message":"Alanları denetimlerden hariç tut",
"description":"Whitelisted domains title."
"whitelistedDomainsTitle": {
"message": "Alanları denetimlerden hariç tut",
"description": "Whitelisted domains title."
},
"whitelistedDomainsDescription":{
"message":"Beyaz listeye eklemek için alan adlarını girin. Birden çok girdiyi noktalı virgül (;) ile ayırın.",
"description":"Whitelisted domains description."
"whitelistedDomainsDescription": {
"message": "Beyaz listeye eklemek için alan adlarını girin. Birden çok girdiyi noktalı virgül (;) ile ayırın.",
"description": "Whitelisted domains description."
},
"advancedLabel":{
"message":"Gelişmiş",
"description":"Advanced label."
"advancedLabel": {
"message": "Gelişmiş",
"description": "Advanced label."
}
}
\ No newline at end of file
}
{
"extensionDescription": {
"message": "Захищає вас від стеження \"безкоштовними\", централізованими мережами розповсюдження ресурсів.",
"description": "Extension description."
},
"disableProtectionTitle": {
"message": "Вимкнути захист на цій сторінці",
"description": "Disable protection title."
},
"enableProtectionTitle": {
"message": "Увімкнути захист",
"description": "Enable protection title."
},
"amountInjectedTitle": {
"message": "Лічильник ресурсів замінених локальними",
"description": "Amount injected title."
},
"amountInjectedDescription": {
"message": "Кількість ресурсів наданих локальною Мережею Розповсюдження Контенту (CDN) з початку встановлення.",
"description": "Amount injected description."
},
"optionsTitle": {
"message": "Параметри",
"description": "Options title."
},
"showIconBadgeTitle": {
"message": "Показувати кількість ін'єкцій на іконці",
"description": "Show icon badge title."
},
"showIconBadgeDescription": {
"message": "Показувати кількість локально наданих ресурсів на іконці розширення.",
"description": "Show icon badge description."
},
"blockMissingTitle": {
"message": "Блокувати запити для відсутніх ресурсів",
"description": "Block requests for missing resources title."
},
"blockMissingDescription": {
"message": "Скасувати перехоплений запит, якщо необхідний ресурс відсутній локально.",
"description": "Block requests for missing resources description."
},
"disablePrefetchTitle": {
"message": "Відключити попереднє завантаженя посилань",
"description": "Disable prefetch title."
},
"disablePrefetchDescription": {
"message": "Запобігти витік заборонених запитів в мережі розповсюдження.",
"description": "Disable prefetch description."
},
"stripMetadataTitle": {
"message": "Видалити метадані з дозволених запитів",
"description": "Strip metadata title."
},
"stripMetadataDescription": {
"message": "Стерти чутливі дані з запитів до дозволених CDN для кращої приватності.",
"description": "Strip metadata description."
},
"whitelistedDomainsTitle": {
"message": "Вимкнути перевірку для доменів",
"description": "Whitelisted domains title."
},
"whitelistedDomainsDescription": {
"message": "Введіть домени для включення в білий список. У якості розділювача використовуйте крапку з комою (;).",
"description": "Whitelisted domains description."
},
"advancedLabel": {
"message": "Розширені",
"description": "Advanced label."
}
}
{
"extensionDescription": {
"message": "Bảo vệ bạn khỏi bị theo dõi thông qua việc phân phối nội dung \"miễn phí\", tập trung.",
"description": "Extension description."
},
"disableProtectionTitle": {
"message": "Tắt bảo vệ cho trang này",
"description": "Disable protection title."
},
"enableProtectionTitle": {
"message": "Bật bảo vệ",
"description": "Enable protection title."
},
"amountInjectedTitle": {
"message": "Đếm các tài nguyên cục bộ được chèn vào",
"description": "Amount injected title."
},
"amountInjectedDescription": {
"message": "Số lượng tài nguyên cục bộ đã chèn của mạng phân phối nội dung (CDN) kể từ khi cài đặt.",
"description": "Amount injected description."
},
"optionsTitle": {
"message": "Tùy chỉnh",
"description": "Options title."
},
"showIconBadgeTitle": {
"message": "Hển thị số lượng chèn trên biểu tượng",
"description": "Show icon badge title."
},
"showIconBadgeDescription": {
"message": "Hiển thị số tài nguyên đã chèn trên biểu tượng của tiện ích.",
"description": "Show icon badge description."
},
"blockMissingTitle": {
"message": "Chặn yêu cầu cho tài nguyên bị thiếu",
"description": "Block requests for missing resources title."
},
"blockMissingDescription": {
"message": "Hủy yêu cầu bị chặn nếu tài nguyên cần tới không có sẵn.",
"description": "Block requests for missing resources description."
},
"disablePrefetchTitle": {
"message": "Vô hiệu tìm nạp trước liên kết",
"description": "Disable prefetch title."
},
"disablePrefetchDescription": {
"message": "Ngăn chặn các yêu cầu không được phép rò rỉ ra ngoài mạng lưới phân phối.",
"description": "Disable prefetch description."
},
"stripMetadataTitle": {
"message": "Loại bỏ siêu dữ liệu (metadata) khỏi các yêu cầu được phép",
"description": "Strip metadata title."
},
"stripMetadataDescription": {
"message": "Xóa dữ liệu nhạy cảm khỏi các yêu cầu CDN được phép để cải thiện quyền riêng tư.",
"description": "Strip metadata description."
},
"whitelistedDomainsTitle": {
"message": "Loại trừ tên miền khỏi việc giám sát",
"description": "Whitelisted domains title."
},
"whitelistedDomainsDescription": {
"message": "Nhập các miền để đưa vào danh sách trắng. Phân tách các mục nhập bằng dấu chấm phẩy (;).",
"description": "Whitelisted domains description."
},
"advancedLabel": {
"message": "Nâng cao",
"description": "Advanced label."
}
}
{
"extensionDescription":{
"message":"保护免受集中式的内容交付网络(CDN)的跟踪。",
"description":"Extension description."
"extensionDescription": {
"message": "保护免受中心化的内容分发网络(CDN)的跟踪。",
"description": "Extension description."
},
"disableProtectionTitle":{
"message":"在此网站上禁用保护",
"description":"Disable protection title."
"disableProtectionTitle": {
"message": "在此网站上禁用保护",
"description": "Disable protection title."
},
"enableProtectionTitle":{
"message":"启用保护",
"description":"Enable protection title."
"enableProtectionTitle": {
"message": "启用保护",
"description": "Enable protection title."
},
"amountInjectedTitle":{
"message":"本地发送资源的计数器",
"description":"Amount injected title."
"amountInjectedTitle": {
"message": "本地注入资源的计数器",
"description": "Amount injected title."
},
"amountInjectedDescription":{
"message":"自安装以来,从本地“内容交付网络”发送的资源总量。",
"description":"Amount injected description."
"amountInjectedDescription": {
"message": "自安装以来,从本地“内容分发网络”资源注入数量。",
"description": "Amount injected description."
},
"optionsTitle":{
"message":"选项",
"description":"Options title."
"optionsTitle": {
"message": "选项",
"description": "Options title."
},
"showIconBadgeTitle":{
"message":"在图标上显示注入数量",
"description":"Show icon badge title."
"showIconBadgeTitle": {
"message": "在图标上显示注入数量",
"description": "Show icon badge title."
},
"showIconBadgeDescription":{
"message":"在扩展图标上显示注入资源的数量。",
"description":"Show icon badge description."
"showIconBadgeDescription": {
"message": "在扩展图标上显示注入资源的数量。",
"description": "Show icon badge description."
},
"blockMissingTitle":{
"message":"阻止缺失资源的请求",
"description":"Block requests for missing resources title."
"blockMissingTitle": {
"message": "阻止缺失资源的请求",
"description": "Block requests for missing resources title."
},
"blockMissingDescription":{
"message":"取消被拦截的请求,如果请求的资源在本地不可用。",
"description":"Block requests for missing resources description."
"blockMissingDescription": {
"message": "如果请求的资源在本地不可用,则取消被拦截的请求。",
"description": "Block requests for missing resources description."
},
"disablePrefetchTitle":{
"message":"禁用链接预读取",
"description":"Disable prefetch title."
"disablePrefetchTitle": {
"message": "禁用链接预读取",
"description": "Disable prefetch title."
},
"disablePrefetchDescription":{
"message":"避免本应禁止的请求发到网络。",
"description":"Disable prefetch description."
"disablePrefetchDescription": {
"message": "避免本应禁止的请求发到网络。",
"description": "Disable prefetch description."
},
"stripMetadataTitle":{
"message":"允许的请求剥去元数据",
"description":"Strip metadata title."
"stripMetadataTitle": {
"message": "清除被允许的请求中的元数据",
"description": "Strip metadata title."
},
"stripMetadataDescription":{
"message":"被允许的 CDN 请求剥去敏感数据以保护隐私。",
"description":"Strip metadata description."
"stripMetadataDescription": {
"message": "从被允许的 CDN 请求中擦除敏感数据以保护隐私。",
"description": "Strip metadata description."
},
"whitelistedDomainsTitle":{
"message":"排除要检查的域名",
"description":"Whitelisted domains title."
"whitelistedDomainsTitle": {
"message": "排除要检查的域名",
"description": "Whitelisted domains title."
},
"whitelistedDomainsDescription":{
"message":"输入白名单的域名。用分号 (;) 分隔多项。",
"description":"Whitelisted domains description."
"whitelistedDomainsDescription": {
"message": "输入要添加到白名单的域名。用分号 (;) 分隔多项。",
"description": "Whitelisted domains description."
},
"advancedLabel":{
"message":"高级",
"description":"Advanced label."
"advancedLabel": {
"message": "高级",
"description": "Advanced label."
}
}
\ No newline at end of file
}
{
"extensionDescription":{
"message":"保護您不受「免費」、中心化的內容傳遞網路(CDN)的追蹤。",
"description":"Extension description."
"extensionDescription": {
"message": "保護您不受「免費」、中心化的內容傳遞網路(CDN)的追蹤。",
"description": "Extension description."
},
"disableProtectionTitle":{
"message":"為此網站停用保護",
"description":"Disable protection title."
"disableProtectionTitle": {
"message": "為此網站停用保護",
"description": "Disable protection title."
},
"enableProtectionTitle":{
"message":"啟用保護",
"description":"Enable protection title."
"enableProtectionTitle": {
"message": "啟用保護",
"description": "Enable protection title."
},
"amountInjectedTitle":{
"message":"由本機提供的資源計數器",
"description":"Amount injected title."
"amountInjectedTitle": {
"message": "由本機提供的資源計數器",
"description": "Amount injected title."
},
"amountInjectedDescription":{
"message":"安裝以來,由本機檔案所取代的 CDN 資源數量。",
"description":"Amount injected description."
"amountInjectedDescription": {
"message": "安裝以來,由本機檔案所取代的 CDN 資源數量。",
"description": "Amount injected description."
},
"optionsTitle":{
"message":"選項",
"description":"Options title."
"optionsTitle": {
"message": "選項",
"description": "Options title."
},
"showIconBadgeTitle":{
"message":"在圖示上顯示被取代的資源數量",
"description":"Show icon badge title."
"showIconBadgeTitle": {
"message": "在圖示上顯示被取代的資源數量",
"description": "Show icon badge title."
},
"showIconBadgeDescription":{
"message":"在擴充套件圖示上,顯示被取代的資源數量。",
"description":"Show icon badge description."
"showIconBadgeDescription": {
"message": "在擴充套件圖示上,顯示被取代的資源數量。",
"description": "Show icon badge description."
},
"blockMissingTitle":{
"message":"封鎖缺少資源時的連線請求",
"description":"Block requests for missing resources title."
"blockMissingTitle": {
"message": "封鎖缺少資源時的連線請求",
"description": "Block requests for missing resources title."
},
"blockMissingDescription":{
"message":"若本機沒有所請求的資源,就取消該請求。",
"description":"Block requests for missing resources description."
"blockMissingDescription": {
"message": "若本機沒有所請求的資源,就取消該請求。",
"description": "Block requests for missing resources description."
},
"disablePrefetchTitle":{
"message":"停用連結預讀功能",
"description":"Disable prefetch title."
"disablePrefetchTitle": {
"message": "停用連結預讀功能",
"description": "Disable prefetch title."
},
"disablePrefetchDescription":{
"message":"防止發出不被允許的請求到 CDN 網路。",
"description":"Disable prefetch description."
"disablePrefetchDescription": {
"message": "防止發出不被允許的請求到 CDN 網路。",
"description": "Disable prefetch description."
},
"stripMetadataTitle":{
"message":"移除放行請求當中的後設資料",
"description":"Strip metadata title."
"stripMetadataTitle": {
"message": "移除放行請求當中的後設資料",
"description": "Strip metadata title."
},
"stripMetadataDescription":{
"message":"清除放行的 CDN 請求當中的敏感資料,以保護隱私權。",
"description":"Strip metadata description."
"stripMetadataDescription": {
"message": "清除放行的 CDN 請求當中的敏感資料,以保護隱私權。",
"description": "Strip metadata description."
},
"whitelistedDomainsTitle":{
"message":"要排除檢查的網域",
"description":"Whitelisted domains title."
"whitelistedDomainsTitle": {
"message": "要排除檢查的網域",
"description": "Whitelisted domains title."
},
"whitelistedDomainsDescription":{
"message":"輸入網域即可將其加入白名單。使用分號(;)分隔多個網域。",
"description":"Whitelisted domains description."
"whitelistedDomainsDescription": {
"message": "輸入網域即可將其加入白名單。使用分號(;)分隔多個網域。",
"description": "Whitelisted domains description."
},
"advancedLabel":{
"message":"進階",
"description":"Advanced label."
"advancedLabel": {
"message": "進階",
"description": "Advanced label."
}
}
\ No newline at end of file
}
{
"env": {
"es6": true,
"node": true
},
"extends": "eslint:recommended",
"parserOptions": {
"sourceType": "module"
},
"rules": {
"indent": [
"error",
4
],
"linebreak-style": [
"error",
"unix"
],
"no-console": "off",
"no-use-before-define": "error",
"operator-assignment": "error",
"prefer-template": "error",
"quotes": [
"error",
"single"
],
"semi": [
"error",
"always"
]
}
}
Introduction
------------
This audit script allows any user and extension reviewer to verify the integrity of the bundled resources. It automatically, and transparently, compares all bundled libraries to their original sources.
Usage Instructions (Unix)
------------------
1. Make sure you have Node.js installed on your machine.
2. Open up a terminal and ```cd``` into this directory.
3. Execute ```npm install``` to fetch any dependencies.
4. Run the audit script by executing ```node run```.
**Note:** If you'd like to save the report, run ```node run > report.txt```.
\ No newline at end of file
{
"name": "decentraleyes-audit",
"version": "1.5.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"source-map-url": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
"integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM="
}
}
}
/**
* Resource Audit Script
* Belongs to Decentraleyes.
*
* @author Thomas Rientjes
* @since 2014-07-24
* @license MPL 2.0
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
/**
* Imports
*/
var fileSystem, crypto, https, sourceMappingURL;
fileSystem = require('fs');
crypto = require('crypto');
https = require('https');
sourceMappingURL = require('source-map-url');
/**
* Variables
*/
var localResourceLocation = '../resources';
var localResourceLocationLength = localResourceLocation.length;
var localResourcePaths = [];
var comparedResourceAmount = 0;
var resourceAmount = 0;
/**
* Functions
*/
function _fetchLocalResourcePaths (folderPath) {
fileSystem.readdirSync(folderPath).forEach(function (resourceName) {
var resourcePath = `${folderPath}/${resourceName}`;
var resourceStatistics = fileSystem.statSync(resourcePath);
if (resourceStatistics && resourceStatistics.isDirectory()) {
_fetchLocalResourcePaths(resourcePath);
} else {
localResourcePaths.push(resourcePath);
}
});
return localResourcePaths;
}
function _getLocalResourceContents (fileLocation, callback) {
fileSystem.exists(fileLocation, function (exists) {
if (exists) {
fileSystem.stat(fileLocation, function (error, statistics) {
fileSystem.open(fileLocation, 'r', function (error, fileDescriptor) {
var buffer = new Buffer(statistics.size);
fileSystem.read(fileDescriptor, buffer, 0, buffer.length, null, function (error, bytesRead, buffer) {
var localFileContents = buffer.toString('utf8', 0, buffer.length);
fileSystem.close(fileDescriptor, function () {});
callback(localFileContents);
});
});
});
}
});
}
function _getRemoteResourceContents (remoteResourceRoute, callback) {
var resourceURL = `https://ajax.googleapis.com/ajax/libs/${remoteResourceRoute}`;
https.get(resourceURL, function (response) {
var resourceContents = '';
response.on('data', function (chunk) {
resourceContents += chunk;
});
response.on('end', function () {
if (response.statusCode === 200) {
callback(resourceContents, resourceURL);
} else {
resourceURL = `https://cdnjs.cloudflare.com/ajax/libs/${remoteResourceRoute}`;
https.get(resourceURL, function (response) {
resourceContents = '';
response.on('data', function (chunk) {
resourceContents += chunk;
});
response.on('end', function () {
if (response.statusCode !== 200) {
throw `Error: Resource ${remoteResourceRoute} could not be fetched.`;
}
callback(resourceContents, resourceURL);
});
});
}
});
});
}
function _hashFileContents (fileContents) {
var hash;
hash = crypto.createHash('sha512');
hash.setEncoding('hex');
hash.write(fileContents);
hash.end();
return hash.read();
}
function _showCompletedMessage () {
console.log();
console.log(' *** FILE INTEGRITY CHECKS COMPLETED');
console.log(` *** ${resourceAmount}/${resourceAmount} RESOURCES WERE ANALYZED`);
console.log();
}
function _incrementComparedResourceAmount () {
comparedResourceAmount++;
if (comparedResourceAmount === resourceAmount) {
setTimeout(function () {
_showCompletedMessage();
}, 500);
}
}
function _compareResources (localResourceContents, remoteResourceContents, URL) {
var hasSourceMappingURL = sourceMappingURL.existsIn(remoteResourceContents);
var sourceMappingNotice = '[ ] REMOTE RESOURCE HAD SOURCE MAPPING URL';
if (hasSourceMappingURL) {
remoteResourceContents = sourceMappingURL.removeFrom(remoteResourceContents);
sourceMappingNotice = '[X] REMOTE RESOURCE HAD SOURCE MAPPING URL';
}
var localResourceHash = _hashFileContents(localResourceContents);
var remoteResourceHash = _hashFileContents(remoteResourceContents);
console.log(`RESOURCE HASH (SHA512): ${localResourceHash}`);
console.log(`RESOURCE HASH (SHA512): ${remoteResourceHash}`);
var fileHashesMatch = (localResourceHash === remoteResourceHash);
if (!fileHashesMatch) {
console.log(URL);
console.log(remoteResourceContents);
throw 'Error: Decentraleyes resource hash mismatch.';
}
console.log();
console.log('[X] LOCAL AND REMOTE RESOURCE HASHES MATCH');
console.log(sourceMappingNotice);
_incrementComparedResourceAmount();
}
/**
* Initializations
*/
_fetchLocalResourcePaths(localResourceLocation);
resourceAmount = localResourcePaths.length;
/**
* Script
*/
localResourcePaths.forEach(function (resourcePath) {
var resourceRoute = resourcePath.substr(localResourceLocationLength + 1);
resourceRoute = resourceRoute.substring(0, resourceRoute.length - 4);
_getLocalResourceContents(resourcePath, function (localResourceContents) {
_getRemoteResourceContents(resourceRoute, function (remoteResourceContents, URL) {
console.log();
console.log(resourceRoute.toUpperCase());
console.log();
// Compare resource content hashes.
_compareResources(localResourceContents, remoteResourceContents, URL);
console.log();
console.log('------------------------------------------');
});
});
});
report.txt
# Decentraleyes Audit
This resource auditor allows any user and extension reviewer to verify the integrity of the bundled resources. It provides a quick and reliable way to compare all bundled libraries to their original sources.
## Prerequisites
* Node.js 20.0.0 *(or higher)*.
## Usage Instructions
1. Open up a terminal, or a command prompt, and `cd` into its directory.
2. Run the audit script by executing *one* of the following commands:
```bash
node run -r # Validate recently updated resources.
node run # Validate all bundled resources.
```
***Note:** Append ` > report.txt` to write the output to a file.*
import globals from 'globals';
import js from '@eslint/js';
import {baseConfiguration} from '../eslint.config.mjs';
export default [
js.configs.recommended,
baseConfiguration,
{
'languageOptions': {
'globals': {
...globals.node
}
}
}
];
{
"name": "decentraleyes-audit",
"version": "2.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "decentraleyes-audit",
"version": "2.0.0",
"license": "MPL-2.0",
"engines": {
"node": ">= 20"
}
}
}
}
{
"name": "decentraleyes-audit",
"version": "1.5.0",
"version": "2.0.0",
"author": "Thomas Rientjes",
"license": "MPL-2.0",
"description": "Library audit tool for Decentraleyes.",
"repository": "https://addons.mozilla.org/firefox/addon/decentraleyes",
"description": "Resource auditor for Decentraleyes.",
"repository": "https://git.synz.io/Synzvato/decentraleyes.git",
"keywords": [
"decentraleyes",
"audit"
"auditor"
],
"main": "run.js",
"dependencies": {
"source-map-url": "~0.4.0"
"type": "module",
"engines": {
"node": ">= 20"
}
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.