Update
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "المنطقة الزمنية المزيفة ، والموقع الجغرافي ، والإعدادات المحلية ، ووكيل المستخدم. تطابق بيانات موقعك مع عنوان IP الخاص بشبكة VPN الخاصة بك"
|
"message": "المنطقة الزمنية المزيفة ، والموقع الجغرافي ، والإعدادات المحلية ، ووكيل المستخدم. تطابق بيانات موقعك مع عنوان IP الخاص بشبكة VPN الخاصة بك"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Falsificació de la zona horària, la geolocalització, la configuració regional i l'agent d'usuari."
|
"message": "Falsificació de la zona horària, la geolocalització, la configuració regional i l'agent d'usuari."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Spoof časové pásmo, geolokaci, národní prostředí a uživatelského agenta. Přiřaďte údaje o své poloze k IP adrese vaší VPN."
|
"message": "Spoof časové pásmo, geolokaci, národní prostředí a uživatelského agenta. Přiřaďte údaje o své poloze k IP adrese vaší VPN."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Spoof tidszone, geolocation, lokalitet og brugeragent. Match dine placeringsdata med din VPN's ip-adresse."
|
"message": "Spoof tidszone, geolocation, lokalitet og brugeragent. Match dine placeringsdata med din VPN's ip-adresse."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Spoof-Zeitzone, Geolokalisierung, Gebietsschema und Benutzeragent. Gleichen Sie Ihre Standortdaten mit der IP-Adresse Ihres VPN ab."
|
"message": "Spoof-Zeitzone, Geolokalisierung, Gebietsschema und Benutzeragent. Gleichen Sie Ihre Standortdaten mit der IP-Adresse Ihres VPN ab."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Πλαστή ζώνη ώρας, γεωγραφική τοποθεσία, τοπικές ρυθμίσεις και παράγοντας χρήστη."
|
"message": "Πλαστή ζώνη ώρας, γεωγραφική τοποθεσία, τοπικές ρυθμίσεις και παράγοντας χρήστη."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Spoof time zone, geolocation, locale and user agent. Match your location data to your VPN's ip address."
|
"message": "Spoof time zone, geolocation, locale and user agent. Match your location data to your VPN's ip address."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Spoof time zone, geolocation, locale and user agent. Match your location data to your VPN's ip address."
|
"message": "Spoof time zone, geolocation, locale and user agent. Match your location data to your VPN's ip address."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Spoof time zone, geolocation, locale and user agent. Match your location data to your VPN's ip address."
|
"message": "Spoof time zone, geolocation, locale and user agent. Match your location data to your VPN's ip address."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Falsificación de zona horaria, geolocalización, configuración regional y agente de usuario."
|
"message": "Falsificación de zona horaria, geolocalización, configuración regional y agente de usuario."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Falsificación de zona horaria, geolocalización, configuración regional y agente de usuario."
|
"message": "Falsificación de zona horaria, geolocalización, configuración regional y agente de usuario."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "جعل منطقه زمانی، موقعیت جغرافیایی، منطقه و عامل کاربر. داده های موقعیت مکانی خود را با آدرس IP VPN خود مطابقت دهید."
|
"message": "جعل منطقه زمانی، موقعیت جغرافیایی، منطقه و عامل کاربر. داده های موقعیت مکانی خود را با آدرس IP VPN خود مطابقت دهید."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Huijaus aikavyöhyke, maantieteellinen sijainti, alue ja käyttäjäagentti. Yhdistä sijaintitietosi VPN-osoitteesi IP-osoitteeseen."
|
"message": "Huijaus aikavyöhyke, maantieteellinen sijainti, alue ja käyttäjäagentti. Yhdistä sijaintitietosi VPN-osoitteesi IP-osoitteeseen."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Spoof time zone, geolocation, locale at user agent. Itugma ang data ng iyong lokasyon sa ip address ng iyong VPN."
|
"message": "Spoof time zone, geolocation, locale at user agent. Itugma ang data ng iyong lokasyon sa ip address ng iyong VPN."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Fuseau horaire, géolocalisation, paramètres régionaux et agent utilisateur usurpés."
|
"message": "Fuseau horaire, géolocalisation, paramètres régionaux et agent utilisateur usurpés."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "אזור זמן מזויף, מיקום גיאוגרפי, מיקום וסוכן משתמש. התאם את נתוני המיקום שלך לכתובת ה-IP של ה-VPN שלך."
|
"message": "אזור זמן מזויף, מיקום גיאוגרפי, מיקום וסוכן משתמש. התאם את נתוני המיקום שלך לכתובת ה-IP של ה-VPN שלך."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "हंसोड़ समय क्षेत्र, भौगोलिक स्थान, लोकेल और उपयोगकर्ता एजेंट। अपने वीपीएन के आईपी पते से अपने स्थान डेटा का मिलान करें।"
|
"message": "हंसोड़ समय क्षेत्र, भौगोलिक स्थान, लोकेल और उपयोगकर्ता एजेंट। अपने वीपीएन के आईपी पते से अपने स्थान डेटा का मिलान करें।"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Lažna vremenska zona, geolokacija, lokalizacija i korisnički agent. Uskladite svoje podatke o lokaciji s IP adresom svog VPN-a."
|
"message": "Lažna vremenska zona, geolokacija, lokalizacija i korisnički agent. Uskladite svoje podatke o lokaciji s IP adresom svog VPN-a."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Hamis időzóna, földrajzi hely, terület és felhasználói ügynök. Párosítsa helyadatait VPN-je IP-címével."
|
"message": "Hamis időzóna, földrajzi hely, terület és felhasználói ügynök. Párosítsa helyadatait VPN-je IP-címével."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Spoof zona waktu, geolokasi, lokal, dan agen pengguna. Cocokkan data lokasi Anda dengan alamat ip VPN Anda."
|
"message": "Spoof zona waktu, geolokasi, lokal, dan agen pengguna. Cocokkan data lokasi Anda dengan alamat ip VPN Anda."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Spoofing fuso orario, geolocalizzazione, locale e user agent. Abbina i tuoi dati sulla posizione all'indirizzo IP della tua VPN."
|
"message": "Spoofing fuso orario, geolocalizzazione, locale e user agent. Abbina i tuoi dati sulla posizione all'indirizzo IP della tua VPN."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "タイム ゾーン、位置情報、ロケール、およびユーザー エージェントを偽装します。位置データを VPN の IP アドレスと照合します。"
|
"message": "タイム ゾーン、位置情報、ロケール、およびユーザー エージェントを偽装します。位置データを VPN の IP アドレスと照合します。"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "스푸핑 시간대, 지리적 위치, 로케일 및 사용자 에이전트. 위치 데이터를 VPN의 IP 주소와 일치시킵니다."
|
"message": "스푸핑 시간대, 지리적 위치, 로케일 및 사용자 에이전트. 위치 데이터를 VPN의 IP 주소와 일치시킵니다."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Apgaulinga laiko juosta, geografinė vieta, lokalė ir vartotojo agentas. Suderinkite vietos duomenis su VPN IP adresu."
|
"message": "Apgaulinga laiko juosta, geografinė vieta, lokalė ir vartotojo agentas. Suderinkite vietos duomenis su VPN IP adresu."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Maldināta laika josla, ģeogrāfiskā atrašanās vieta, lokalizācija un lietotāja aģents."
|
"message": "Maldināta laika josla, ģeogrāfiskā atrašanās vieta, lokalizācija un lietotāja aģents."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Zon masa palsu, geolokasi, tempat dan ejen pengguna. Padankan data lokasi anda dengan alamat ip VPN anda."
|
"message": "Zon masa palsu, geolokasi, tempat dan ejen pengguna. Padankan data lokasi anda dengan alamat ip VPN anda."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Spoof-tijdzone, geolocatie, locale en user-agent. Koppel uw locatiegegevens aan het ip-adres van uw VPN."
|
"message": "Spoof-tijdzone, geolocatie, locale en user-agent. Koppel uw locatiegegevens aan het ip-adres van uw VPN."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Spoof tidssone, geolokalisering, lokalitet og brukeragent. Match posisjonsdataene dine med VPN-ens ip-adresse."
|
"message": "Spoof tidssone, geolokalisering, lokalitet og brukeragent. Match posisjonsdataene dine med VPN-ens ip-adresse."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Fałszowanie strefy czasowej, geolokalizacji, lokalizacji i klienta użytkownika."
|
"message": "Fałszowanie strefy czasowej, geolokalizacji, lokalizacji i klienta użytkownika."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Fuso horário falso, geolocalização, localidade e agente do usuário. Combine seus dados de localização com o endereço IP da sua VPN."
|
"message": "Fuso horário falso, geolocalização, localidade e agente do usuário. Combine seus dados de localização com o endereço IP da sua VPN."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Fuso horário falso, geolocalização, localidade e agente do usuário. Combine seus dados de localização com o endereço IP da sua VPN."
|
"message": "Fuso horário falso, geolocalização, localidade e agente do usuário. Combine seus dados de localização com o endereço IP da sua VPN."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Falsificarea fusului orar, localizarea geografică, localitatea și agentul utilizator."
|
"message": "Falsificarea fusului orar, localizarea geografică, localitatea și agentul utilizator."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Подделка часового пояса, геолокации, локали и пользовательского агента."
|
"message": "Подделка часового пояса, геолокации, локали и пользовательского агента."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Spoof časové pásmo, geolokáciu, miestne nastavenie a používateľského agenta. Priraďte údaje o svojej polohe k IP adrese vašej VPN."
|
"message": "Spoof časové pásmo, geolokáciu, miestne nastavenie a používateľského agenta. Priraďte údaje o svojej polohe k IP adrese vašej VPN."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Prevara časovnega pasu, geolokacije, lokalne nastavitve in uporabniškega agenta."
|
"message": "Prevara časovnega pasu, geolokacije, lokalne nastavitve in uporabniškega agenta."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Лажна временска зона, геолокација, локализација и кориснички агент. Ускладите своје податке о локацији са ИП адресом вашег ВПН-а."
|
"message": "Лажна временска зона, геолокација, локализација и кориснички агент. Ускладите своје податке о локацији са ИП адресом вашег ВПН-а."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Spoof-tidszon, geolokalisering, plats och användaragent. Matcha din platsdata med din VPN:s ip-adress."
|
"message": "Spoof-tidszon, geolokalisering, plats och användaragent. Matcha din platsdata med din VPN:s ip-adress."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "స్పూఫ్ టైమ్ జోన్, జియోలొకేషన్, లొకేల్ మరియు యూజర్ ఏజెంట్. మీ VPN యొక్క ip చిరునామాతో మీ స్థాన డేటాను సరిపోల్చండి."
|
"message": "స్పూఫ్ టైమ్ జోన్, జియోలొకేషన్, లొకేల్ మరియు యూజర్ ఏజెంట్. మీ VPN యొక్క ip చిరునామాతో మీ స్థాన డేటాను సరిపోల్చండి."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "เขตเวลาปลอม ตำแหน่งทางภูมิศาสตร์ ตำแหน่งที่ตั้ง และตัวแทนผู้ใช้ จับคู่ข้อมูลตำแหน่งของคุณกับที่อยู่ IP ของ VPN"
|
"message": "เขตเวลาปลอม ตำแหน่งทางภูมิศาสตร์ ตำแหน่งที่ตั้ง และตัวแทนผู้ใช้ จับคู่ข้อมูลตำแหน่งของคุณกับที่อยู่ IP ของ VPN"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Sahte zaman dilimi, coğrafi konum, yerel ayar ve kullanıcı aracısı. Konum verilerinizi VPN'inizin ip adresiyle eşleştirin."
|
"message": "Sahte zaman dilimi, coğrafi konum, yerel ayar ve kullanıcı aracısı. Konum verilerinizi VPN'inizin ip adresiyle eşleştirin."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Підробка часового поясу, геолокації, локалі та агента користувача. Зіставте дані про своє місцезнаходження з IP-адресою VPN."
|
"message": "Підробка часового поясу, геолокації, локалі та агента користувача. Зіставте дані про своє місцезнаходження з IP-адресою VPN."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "Giả mạo múi giờ, định vị địa lý, ngôn ngữ và tác nhân người dùng. Khớp dữ liệu vị trí của bạn với địa chỉ IP VPN của bạn."
|
"message": "Giả mạo múi giờ, định vị địa lý, ngôn ngữ và tác nhân người dùng. Khớp dữ liệu vị trí của bạn với địa chỉ IP VPN của bạn."
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "欺骗时区、地理位置、区域设置和用户代理。将您的位置数据与您的 VPN 的 IP 地址相匹配。"
|
"message": "欺骗时区、地理位置、区域设置和用户代理。将您的位置数据与您的 VPN 的 IP 地址相匹配。"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extName": { "message": "Vytal - Spoof Timezone, Geolocation & Locale" },
|
"extName": { "message": "Vytal - Privacy & VPN Companion" },
|
||||||
"extDesc": {
|
"extDesc": {
|
||||||
"message": "欺騙時區、地理位置、區域設置和用戶代理。將您的位置數據與您的 VPN 的 IP 地址相匹配。"
|
"message": "欺騙時區、地理位置、區域設置和用戶代理。將您的位置數據與您的 VPN 的 IP 地址相匹配。"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@
|
||||||
body {
|
body {
|
||||||
font-family: 'Twemoji Country Flags', 'Nunito', Arial, Helvetica, sans-serif;
|
font-family: 'Twemoji Country Flags', 'Nunito', Arial, Helvetica, sans-serif;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
width: 358px;
|
width: 374px;
|
||||||
height: 440px;
|
height: 474px;
|
||||||
}
|
}
|
||||||
|
|
||||||
input {
|
input {
|
||||||
|
|
|
||||||
BIN
src/assets/icon128-1.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
src/assets/icon128-22.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
src/assets/icon128-black.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
src/assets/icon128-dark.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 6 KiB |
BIN
src/assets/icon48-1.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
src/assets/icon48-2.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
src/assets/icon48-black.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
src/assets/icon48-dark.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 2.3 KiB |
100
src/assets/logo-no-bg.svg
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
version="1.1"
|
||||||
|
id="svg2"
|
||||||
|
width="241.46724"
|
||||||
|
height="241.46719"
|
||||||
|
viewBox="0 0 241.46724 241.46719"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<defs
|
||||||
|
id="defs6">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient4879">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#7137c8;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop4877" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<g
|
||||||
|
id="g8"
|
||||||
|
transform="matrix(1.3333333,0,0,-1.3333333,-395.15881,387.42917)"
|
||||||
|
style="display:inline">
|
||||||
|
<g
|
||||||
|
id="g10"
|
||||||
|
transform="scale(0.1)"
|
||||||
|
style="display:inline">
|
||||||
|
<ellipse
|
||||||
|
style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:165;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||||
|
id="path4873"
|
||||||
|
cx="3869.1934"
|
||||||
|
cy="-2000.2168"
|
||||||
|
transform="scale(1,-1)"
|
||||||
|
rx="823.00214"
|
||||||
|
ry="823.00201" />
|
||||||
|
<ellipse
|
||||||
|
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:130.049;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||||
|
id="path4873-3"
|
||||||
|
cx="3869.1934"
|
||||||
|
cy="-1970.2167"
|
||||||
|
transform="scale(1,-1)"
|
||||||
|
rx="606.85437"
|
||||||
|
ry="450" />
|
||||||
|
<path
|
||||||
|
d="m 3859.6918,1705.3886 c -73.63,0 -140.07,39.16 -169.26,99.77 -7.55,15.66 -0.97,34.47 14.69,42.01 15.67,7.53 34.48,0.96 42.02,-14.69 18.77,-38.97 62.95,-64.14 112.55,-64.14 49.6,0 93.77,25.17 112.55,64.14 7.55,15.65 26.36,22.22 42.01,14.69 15.66,-7.54 22.24,-26.35 14.7,-42.01 -29.2,-60.61 -95.63,-99.77 -169.26,-99.77"
|
||||||
|
style="display:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path46" />
|
||||||
|
<rect
|
||||||
|
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:61.2155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||||
|
id="rect5622-7-5"
|
||||||
|
width="165.03194"
|
||||||
|
height="980.54431"
|
||||||
|
x="2963.6912"
|
||||||
|
y="-2905.7188"
|
||||||
|
transform="scale(1,-1)"
|
||||||
|
rx="82.515961" />
|
||||||
|
<rect
|
||||||
|
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:61.2155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||||
|
id="rect5622-7-5-2"
|
||||||
|
width="165.03194"
|
||||||
|
height="980.54431"
|
||||||
|
x="4609.6636"
|
||||||
|
y="-2905.7188"
|
||||||
|
transform="scale(1,-1)"
|
||||||
|
rx="82.515961" />
|
||||||
|
<g
|
||||||
|
id="g14963"
|
||||||
|
clip-path="none"
|
||||||
|
transform="translate(5.3623619e-4,12.188046)"
|
||||||
|
style="opacity:1">
|
||||||
|
<g
|
||||||
|
id="g14961">
|
||||||
|
<path
|
||||||
|
d="m 3560.2618,2126.2986 c -53.92,0 -97.78,-43.86 -97.78,-97.78 0,-53.92 43.86,-97.78 97.78,-97.78 53.92,0 97.78,43.86 97.78,97.78 0,53.92 -43.86,97.78 -97.78,97.78"
|
||||||
|
style="display:inline;fill:#a55eea;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path42" />
|
||||||
|
<path
|
||||||
|
d="m 4178.1238,2126.2986 c -53.92,0 -97.78,-43.86 -97.78,-97.78 0,-53.92 43.86,-97.78 97.78,-97.78 53.91,0 97.78,43.86 97.78,97.78 0,53.92 -43.87,97.78 -97.78,97.78"
|
||||||
|
style="display:inline;fill:#a55eea;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path44" />
|
||||||
|
<path
|
||||||
|
d="m 3869.1974,1669.7587 c -94.664,0 -171.6727,70.0387 -171.6727,156.1273 0,13.1035 11.6736,23.7205 26.0728,23.7205 h 291.1833 c 14.3993,0 26.0811,-10.617 26.0811,-23.7205 0,-86.0886 -77.0087,-156.1273 -171.6645,-156.1273"
|
||||||
|
style="fill:#a55eea;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.790115"
|
||||||
|
id="path84" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<use
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
xlink:href="#g14961"
|
||||||
|
id="use14967"
|
||||||
|
transform="translate(5.3623619e-4,12.188046)"
|
||||||
|
width="100%"
|
||||||
|
height="100%" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4 KiB |
117
src/assets/logo-reverse.svg
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
version="1.1"
|
||||||
|
id="svg2"
|
||||||
|
width="234.46722"
|
||||||
|
height="234.46719"
|
||||||
|
viewBox="0 0 234.46722 234.46719"
|
||||||
|
sodipodi:docname="robot4-reverse.svg"
|
||||||
|
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||||
|
inkscape:export-filename="/home/user/projects/vytal-extension/src/assets/icon48.png"
|
||||||
|
inkscape:export-xdpi="19.653069"
|
||||||
|
inkscape:export-ydpi="19.653069"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<defs
|
||||||
|
id="defs6">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient4879"
|
||||||
|
inkscape:swatch="solid">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#7137c8;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop4877" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview4"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#000000"
|
||||||
|
borderopacity="0.25"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
showgrid="false"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:zoom="1.8101934"
|
||||||
|
inkscape:cx="179.53883"
|
||||||
|
inkscape:cy="170.14757"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1012"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="g10" />
|
||||||
|
<g
|
||||||
|
id="g8"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
inkscape:label="ink_ext_XXXXXX"
|
||||||
|
transform="matrix(1.3333333,0,0,-1.3333333,-398.65882,383.92917)"
|
||||||
|
style="display:inline">
|
||||||
|
<g
|
||||||
|
id="g10"
|
||||||
|
transform="scale(0.1)"
|
||||||
|
style="display:inline">
|
||||||
|
<ellipse
|
||||||
|
style="display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:112.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||||
|
id="path4873"
|
||||||
|
cx="3869.1934"
|
||||||
|
cy="-2000.2168"
|
||||||
|
transform="scale(1,-1)"
|
||||||
|
rx="823.00214"
|
||||||
|
ry="823.00201" />
|
||||||
|
<ellipse
|
||||||
|
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:137.156;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||||
|
id="path4873-3"
|
||||||
|
cx="3869.1934"
|
||||||
|
cy="-1955.2168"
|
||||||
|
transform="scale(1,-1)"
|
||||||
|
rx="675"
|
||||||
|
ry="450" />
|
||||||
|
<path
|
||||||
|
d="m 3560.2618,2126.2986 c -53.92,0 -97.78,-43.86 -97.78,-97.78 0,-53.92 43.86,-97.78 97.78,-97.78 53.92,0 97.78,43.86 97.78,97.78 0,53.92 -43.86,97.78 -97.78,97.78"
|
||||||
|
style="display:inline;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path42" />
|
||||||
|
<path
|
||||||
|
d="m 4178.1238,2126.2986 c -53.92,0 -97.78,-43.86 -97.78,-97.78 0,-53.92 43.86,-97.78 97.78,-97.78 53.91,0 97.78,43.86 97.78,97.78 0,53.92 -43.87,97.78 -97.78,97.78"
|
||||||
|
style="display:inline;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path44" />
|
||||||
|
<path
|
||||||
|
d="m 3859.6918,1705.3886 c -73.63,0 -140.07,39.16 -169.26,99.77 -7.55,15.66 -0.97,34.47 14.69,42.01 15.67,7.53 34.48,0.96 42.02,-14.69 18.77,-38.97 62.95,-64.14 112.55,-64.14 49.6,0 93.77,25.17 112.55,64.14 7.55,15.65 26.36,22.22 42.01,14.69 15.66,-7.54 22.24,-26.35 14.7,-42.01 -29.2,-60.61 -95.63,-99.77 -169.26,-99.77"
|
||||||
|
style="display:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path46" />
|
||||||
|
<rect
|
||||||
|
style="display:inline;fill:#ffffff;stroke:none;stroke-width:49.462;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000;fill-opacity:1"
|
||||||
|
id="rect5622-7"
|
||||||
|
width="112.47218"
|
||||||
|
height="939.31287"
|
||||||
|
x="4635.9731"
|
||||||
|
y="-2879.5088"
|
||||||
|
transform="scale(1,-1)"
|
||||||
|
rx="56.236088" />
|
||||||
|
<rect
|
||||||
|
style="display:inline;fill:#ffffff;stroke:none;stroke-width:49.462;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000;fill-opacity:1"
|
||||||
|
id="rect5622-7-5"
|
||||||
|
width="112.47218"
|
||||||
|
height="939.31287"
|
||||||
|
x="2989.9412"
|
||||||
|
y="-2879.4688"
|
||||||
|
transform="scale(1,-1)"
|
||||||
|
rx="56.236088" />
|
||||||
|
<path
|
||||||
|
d="m 3869.1974,1669.7587 c -94.664,0 -171.6727,70.0387 -171.6727,156.1273 0,13.1035 11.6736,23.7205 26.0728,23.7205 h 291.1833 c 14.3993,0 26.0811,-10.617 26.0811,-23.7205 0,-86.0886 -77.0087,-156.1273 -171.6645,-156.1273"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.790115"
|
||||||
|
id="path84"
|
||||||
|
sodipodi:nodetypes="cssssc" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4.7 KiB |
108
src/assets/logo.svg
Normal file
|
|
@ -0,0 +1,108 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
version="1.1"
|
||||||
|
id="svg2"
|
||||||
|
width="325"
|
||||||
|
height="325"
|
||||||
|
viewBox="0 0 325 325"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<defs
|
||||||
|
id="defs6">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient4879">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#7137c8;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop4877" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#a55eea;fill-opacity:1;stroke:none;stroke-width:34.7388;stop-color:#000000"
|
||||||
|
id="rect858"
|
||||||
|
width="325"
|
||||||
|
height="325"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
rx="60.611404" />
|
||||||
|
<g
|
||||||
|
id="g8"
|
||||||
|
transform="matrix(1.3333333,0,0,-1.3333333,-353.39243,429.19557)"
|
||||||
|
style="display:inline">
|
||||||
|
<g
|
||||||
|
id="g10"
|
||||||
|
transform="scale(0.1)"
|
||||||
|
style="display:inline">
|
||||||
|
<ellipse
|
||||||
|
style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:165;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||||
|
id="path4873"
|
||||||
|
cx="3869.1934"
|
||||||
|
cy="-2000.2168"
|
||||||
|
transform="scale(1,-1)"
|
||||||
|
rx="823.00214"
|
||||||
|
ry="823.00201" />
|
||||||
|
<ellipse
|
||||||
|
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:130.049;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||||
|
id="path4873-3"
|
||||||
|
cx="3869.1934"
|
||||||
|
cy="-1970.2167"
|
||||||
|
transform="scale(1,-1)"
|
||||||
|
rx="606.85437"
|
||||||
|
ry="450" />
|
||||||
|
<path
|
||||||
|
d="m 3859.6918,1705.3886 c -73.63,0 -140.07,39.16 -169.26,99.77 -7.55,15.66 -0.97,34.47 14.69,42.01 15.67,7.53 34.48,0.96 42.02,-14.69 18.77,-38.97 62.95,-64.14 112.55,-64.14 49.6,0 93.77,25.17 112.55,64.14 7.55,15.65 26.36,22.22 42.01,14.69 15.66,-7.54 22.24,-26.35 14.7,-42.01 -29.2,-60.61 -95.63,-99.77 -169.26,-99.77"
|
||||||
|
style="display:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path46" />
|
||||||
|
<rect
|
||||||
|
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:61.2155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||||
|
id="rect5622-7-5"
|
||||||
|
width="165.03194"
|
||||||
|
height="980.54431"
|
||||||
|
x="2963.6912"
|
||||||
|
y="-2905.7188"
|
||||||
|
transform="scale(1,-1)"
|
||||||
|
rx="82.515961" />
|
||||||
|
<rect
|
||||||
|
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:61.2155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||||
|
id="rect5622-7-5-2"
|
||||||
|
width="165.03194"
|
||||||
|
height="980.54431"
|
||||||
|
x="4609.6636"
|
||||||
|
y="-2905.7188"
|
||||||
|
transform="scale(1,-1)"
|
||||||
|
rx="82.515961" />
|
||||||
|
<g
|
||||||
|
id="g14963"
|
||||||
|
clip-path="none"
|
||||||
|
transform="translate(5.3623619e-4,12.188046)"
|
||||||
|
style="opacity:1">
|
||||||
|
<g
|
||||||
|
id="g14961">
|
||||||
|
<path
|
||||||
|
d="m 3560.2618,2126.2986 c -53.92,0 -97.78,-43.86 -97.78,-97.78 0,-53.92 43.86,-97.78 97.78,-97.78 53.92,0 97.78,43.86 97.78,97.78 0,53.92 -43.86,97.78 -97.78,97.78"
|
||||||
|
style="display:inline;fill:#a55eea;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path42" />
|
||||||
|
<path
|
||||||
|
d="m 4178.1238,2126.2986 c -53.92,0 -97.78,-43.86 -97.78,-97.78 0,-53.92 43.86,-97.78 97.78,-97.78 53.91,0 97.78,43.86 97.78,97.78 0,53.92 -43.87,97.78 -97.78,97.78"
|
||||||
|
style="display:inline;fill:#a55eea;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path44" />
|
||||||
|
<path
|
||||||
|
d="m 3869.1974,1669.7587 c -94.664,0 -171.6727,70.0387 -171.6727,156.1273 0,13.1035 11.6736,23.7205 26.0728,23.7205 h 291.1833 c 14.3993,0 26.0811,-10.617 26.0811,-23.7205 0,-86.0886 -77.0087,-156.1273 -171.6645,-156.1273"
|
||||||
|
style="fill:#a55eea;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.790115"
|
||||||
|
id="path84" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<use
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
xlink:href="#g14961"
|
||||||
|
id="use14967"
|
||||||
|
transform="translate(5.3623619e-4,12.188046)"
|
||||||
|
width="100%"
|
||||||
|
height="100%" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4.2 KiB |
102
src/assets/logoHover.svg
Normal file
|
|
@ -0,0 +1,102 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
version="1.1"
|
||||||
|
id="svg2"
|
||||||
|
width="325"
|
||||||
|
height="325"
|
||||||
|
viewBox="0 0 325 325"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<defs
|
||||||
|
id="defs6">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient4879">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#7137c8;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop4877" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#a55eea;fill-opacity:1;stroke:none;stroke-width:34.7388;stop-color:#000000"
|
||||||
|
id="rect858"
|
||||||
|
width="325"
|
||||||
|
height="325"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
rx="60.611404" />
|
||||||
|
<g
|
||||||
|
id="g8"
|
||||||
|
transform="matrix(1.3333333,0,0,-1.3333333,-353.39243,429.19557)"
|
||||||
|
style="display:inline">
|
||||||
|
<g
|
||||||
|
id="g10"
|
||||||
|
transform="scale(0.1)"
|
||||||
|
style="display:inline">
|
||||||
|
<ellipse
|
||||||
|
style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:165;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||||
|
id="path4873"
|
||||||
|
cx="3869.1934"
|
||||||
|
cy="-2000.2168"
|
||||||
|
transform="scale(1,-1)"
|
||||||
|
rx="823.00214"
|
||||||
|
ry="823.00201" />
|
||||||
|
<ellipse
|
||||||
|
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:130.049;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||||
|
id="path4873-3"
|
||||||
|
cx="3869.1934"
|
||||||
|
cy="-2030.2167"
|
||||||
|
transform="scale(1,-1)"
|
||||||
|
rx="606.85437"
|
||||||
|
ry="450" />
|
||||||
|
<path
|
||||||
|
d="m 3859.6918,1705.3886 c -73.63,0 -140.07,39.16 -169.26,99.77 -7.55,15.66 -0.97,34.47 14.69,42.01 15.67,7.53 34.48,0.96 42.02,-14.69 18.77,-38.97 62.95,-64.14 112.55,-64.14 49.6,0 93.77,25.17 112.55,64.14 7.55,15.65 26.36,22.22 42.01,14.69 15.66,-7.54 22.24,-26.35 14.7,-42.01 -29.2,-60.61 -95.63,-99.77 -169.26,-99.77"
|
||||||
|
style="display:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path46" />
|
||||||
|
<rect
|
||||||
|
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:61.2155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||||
|
id="rect5622-7-5"
|
||||||
|
width="165.03194"
|
||||||
|
height="980.54431"
|
||||||
|
x="2963.6912"
|
||||||
|
y="-2905.7188"
|
||||||
|
transform="scale(1,-1)"
|
||||||
|
rx="82.515961" />
|
||||||
|
<rect
|
||||||
|
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:61.2155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||||
|
id="rect5622-7-5-2"
|
||||||
|
width="165.03194"
|
||||||
|
height="980.54431"
|
||||||
|
x="4609.6636"
|
||||||
|
y="-2905.7188"
|
||||||
|
transform="scale(1,-1)"
|
||||||
|
rx="82.515961" />
|
||||||
|
<g
|
||||||
|
id="g14963"
|
||||||
|
clip-path="none"
|
||||||
|
transform="translate(5.3623619e-4,72.188046)"
|
||||||
|
style="opacity:1"
|
||||||
|
mask="none">
|
||||||
|
<g
|
||||||
|
id="g14961">
|
||||||
|
<path
|
||||||
|
d="m 3560.2618,2126.2986 c -53.92,0 -97.78,-43.86 -97.78,-97.78 0,-53.92 43.86,-14.6029 97.78,-14.6029 53.92,0 97.78,-39.3171 97.78,14.6029 0,53.92 -43.86,97.78 -97.78,97.78"
|
||||||
|
style="display:inline;fill:#a55eea;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path42"
|
||||||
|
mask="none" />
|
||||||
|
<path
|
||||||
|
d="m 3869.1974,1669.7587 c -94.664,0 -171.6727,70.0387 -171.6727,156.1273 0,13.1035 11.6736,23.7205 26.0728,23.7205 h 291.1833 c 14.3993,0 26.0811,-10.617 26.0811,-23.7205 0,-86.0886 -77.0087,-156.1273 -171.6645,-156.1273"
|
||||||
|
style="fill:#a55eea;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.790115"
|
||||||
|
id="path84" />
|
||||||
|
<path
|
||||||
|
d="m 4178.1238,2126.2986 c -53.92,0 -97.78,-43.86 -97.78,-97.78 0,-53.92 43.86,-14.6029 97.78,-14.6029 53.92,0 97.78,-39.3171 97.78,14.6029 0,53.92 -43.86,97.78 -97.78,97.78"
|
||||||
|
style="display:inline;fill:#a55eea;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path2301"
|
||||||
|
mask="none" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4 KiB |
69
src/assets/logoText.svg
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="28.742722mm"
|
||||||
|
height="6.6145835mm"
|
||||||
|
viewBox="0 0 28.742718 6.6145835"
|
||||||
|
version="1.1"
|
||||||
|
id="svg2591"
|
||||||
|
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||||
|
sodipodi:docname="logoText.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview2593"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="true"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:zoom="0.77682379"
|
||||||
|
inkscape:cx="243.94206"
|
||||||
|
inkscape:cy="197.59951"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1043"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2588" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-49.891827,-60.233696)">
|
||||||
|
<g
|
||||||
|
aria-label="VYTAL"
|
||||||
|
id="text3864"
|
||||||
|
style="font-weight:bold;font-size:35.2778px;line-height:2.95;font-family:Quicksand;-inkscape-font-specification:'Quicksand Bold';letter-spacing:0.804333px;fill:#333333;stroke-width:0.264583"
|
||||||
|
transform="matrix(0.26434209,0,0,0.26434209,36.703317,44.311395)">
|
||||||
|
<path
|
||||||
|
d="m 69.506288,60.315107 q 0.881945,0 1.516945,0.599723 0.670278,0.564445 0.670278,1.44639 0,0.458611 -0.211666,0.9525 l -8.713617,20.39057 q -0.317501,0.705556 -0.917223,1.058334 -0.564445,0.3175 -1.164168,0.3175 -0.564444,-0.03528 -1.093611,-0.352778 -0.529167,-0.352778 -0.81139,-0.987779 L 50.068219,63.278443 q -0.105833,-0.211667 -0.141111,-0.423334 -0.03528,-0.246945 -0.03528,-0.458611 0,-1.023057 0.740834,-1.552224 0.740834,-0.564445 1.411112,-0.564445 1.340556,0 1.940279,1.375835 l 7.725839,18.168067 -1.234723,0.03528 7.090838,-18.203345 q 0.599722,-1.340557 1.940279,-1.340557 z"
|
||||||
|
id="path52266" />
|
||||||
|
<path
|
||||||
|
d="m 91.935895,60.279829 q 0.811389,0 1.446389,0.635001 0.670279,0.599722 0.670279,1.552223 0,0.3175 -0.105834,0.670278 -0.07055,0.317501 -0.282222,0.635001 l -8.008061,11.465285 0.635,-2.434168 v 10.124729 q 0,0.917223 -0.635,1.552223 -0.599723,0.599723 -1.411112,0.599723 -0.881945,0 -1.516946,-0.599723 -0.599722,-0.635 -0.599722,-1.552223 v -9.842507 l 0.282222,1.12889 -7.620005,-10.124729 q -0.352778,-0.458611 -0.493889,-0.881945 -0.141111,-0.423334 -0.141111,-0.776112 0,-0.9525 0.740833,-1.552223 0.740834,-0.599723 1.516946,-0.599723 0.987778,0 1.728612,0.987779 l 6.773338,9.348617 -0.987778,-0.141111 6.24417,-9.136951 q 0.740834,-1.058334 1.763891,-1.058334 z"
|
||||||
|
id="path52268" />
|
||||||
|
<path
|
||||||
|
d="m 106.74541,85.080124 q -0.98778,0 -1.62278,-0.599723 -0.635,-0.635 -0.635,-1.552223 V 62.467053 h 4.58612 v 20.461125 q 0,0.917223 -0.67028,1.552223 -0.635,0.599723 -1.65806,0.599723 z M 98.949019,64.44261 q -0.917223,0 -1.552223,-0.564445 -0.599723,-0.564445 -0.599723,-1.481667 0,-0.917223 0.599723,-1.44639 0.635,-0.564445 1.552223,-0.564445 h 15.663341 q 0.91723,0 1.51695,0.564445 0.635,0.564444 0.635,1.481667 0,0.917223 -0.635,1.481668 -0.59972,0.529167 -1.51695,0.529167 z"
|
||||||
|
id="path52270" />
|
||||||
|
<path
|
||||||
|
d="m 128.57525,65.924278 -7.62,17.921123 c -0.16463,0.446852 -0.42334,0.79963 -0.77611,1.058334 -0.32926,0.235185 -0.6938,0.352778 -1.09362,0.352778 -0.635,0 -1.10537,-0.176389 -1.41111,-0.529167 -0.30574,-0.352778 -0.45861,-0.787871 -0.45861,-1.305279 0,-0.211667 0.0353,-0.435093 0.10583,-0.670278 l 8.78418,-21.096125 c 0.18815,-0.470371 0.47037,-0.834908 0.84666,-1.093612 0.39982,-0.258704 0.82315,-0.364537 1.27,-0.3175 0.42333,0 0.81139,0.129352 1.16417,0.388055 0.3763,0.235185 0.64676,0.576204 0.81139,1.023057 l 8.67834,20.672791 c 0.11759,0.305741 0.17639,0.587964 0.17639,0.846668 0,0.635 -0.21167,1.140648 -0.635,1.516945 -0.39981,0.376297 -0.84667,0.564445 -1.34056,0.564445 -0.42333,0 -0.81139,-0.129352 -1.16417,-0.388056 -0.32925,-0.258704 -0.58796,-0.611482 -0.77611,-1.058334 L 127.5522,66.135944 Z"
|
||||||
|
id="path52272"
|
||||||
|
sodipodi:nodetypes="cccssscccccccscscccc" />
|
||||||
|
<path
|
||||||
|
d="m 156.47294,80.952621 q 0.91722,0 1.51694,0.599723 0.635,0.564445 0.635,1.481667 0,0.881945 -0.635,1.481668 -0.59972,0.564445 -1.51694,0.564445 h -11.46529 q -0.91722,0 -1.55222,-0.599723 -0.59973,-0.635 -0.59973,-1.552223 V 62.537609 q 0,-0.917223 0.635,-1.516946 0.63501,-0.635 1.62278,-0.635 0.84667,0 1.48167,0.635 0.67028,0.599723 0.67028,1.516946 v 19.014735 l -0.77611,-0.599723 z"
|
||||||
|
id="path52274" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4.9 KiB |
|
|
@ -2,6 +2,7 @@ import { useState } from 'react'
|
||||||
import { ThemeProvider, Flex, Box } from 'theme-ui'
|
import { ThemeProvider, Flex, Box } from 'theme-ui'
|
||||||
import { theme } from 'theme'
|
import { theme } from 'theme'
|
||||||
import {
|
import {
|
||||||
|
Home,
|
||||||
Wifi,
|
Wifi,
|
||||||
MessageSquare,
|
MessageSquare,
|
||||||
FileText,
|
FileText,
|
||||||
|
|
@ -13,12 +14,19 @@ import {
|
||||||
} from 'react-feather'
|
} from 'react-feather'
|
||||||
import VpnIcon from '../assets/vpnIcon.svg'
|
import VpnIcon from '../assets/vpnIcon.svg'
|
||||||
import TabItem from './TabItem'
|
import TabItem from './TabItem'
|
||||||
|
import HomePage from './pages/homePage'
|
||||||
import LocationPage from './pages/locationPage'
|
import LocationPage from './pages/locationPage'
|
||||||
|
import AutofillPage from './pages/autofillPage'
|
||||||
|
import WebRtcPage from './pages/webRtcPage'
|
||||||
import UserAgentPage from './pages/userAgentPage'
|
import UserAgentPage from './pages/userAgentPage'
|
||||||
|
import OptionsPage from './pages/optionsPage'
|
||||||
import VpnPage from './pages/vpnPage'
|
import VpnPage from './pages/vpnPage'
|
||||||
import SettingsPage from './pages/settingsPage'
|
import SettingsPage from './pages/settingsPage'
|
||||||
|
import InfoPage from './pages/infoPage'
|
||||||
import '../assets/global.css'
|
import '../assets/global.css'
|
||||||
|
|
||||||
|
import Logo from '../assets/logo-no-bg.svg'
|
||||||
|
|
||||||
const Popup = () => {
|
const Popup = () => {
|
||||||
const [tab, setTab] = useState('location')
|
const [tab, setTab] = useState('location')
|
||||||
|
|
||||||
|
|
@ -34,51 +42,80 @@ const Popup = () => {
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{/* <TabItem
|
{/* <TabItem
|
||||||
|
title="Home"
|
||||||
|
Icon={<Home size={20} />}
|
||||||
|
// Icon={<img src={Logo} height="20" width="20" alt="logo" />}
|
||||||
|
active={tab === 'home'}
|
||||||
|
onClick={() => setTab('home')}
|
||||||
|
/> */}
|
||||||
|
<TabItem
|
||||||
|
title="Connection Info"
|
||||||
Icon={<Wifi size={20} />}
|
Icon={<Wifi size={20} />}
|
||||||
active={tab === 'vpn'}
|
active={tab === 'vpn'}
|
||||||
onClick={() => setTab('vpn')}
|
onClick={() => setTab('vpn')}
|
||||||
/> */}
|
/>
|
||||||
<TabItem
|
<TabItem
|
||||||
|
title="Location Data"
|
||||||
Icon={<MapPin size={20} />}
|
Icon={<MapPin size={20} />}
|
||||||
active={tab === 'location'}
|
active={tab === 'location'}
|
||||||
onClick={() => setTab('location')}
|
onClick={() => setTab('location')}
|
||||||
/>
|
/>
|
||||||
{/* <TabItem
|
|
||||||
Icon={<FileText size={20} />}
|
|
||||||
active={tab === 'vpn'}
|
|
||||||
onClick={() => setTab('vpn')}
|
|
||||||
/> */}
|
|
||||||
{/* <TabItem
|
|
||||||
Icon={<MessageSquare size={20} />}
|
|
||||||
active={tab === 'vpn'}
|
|
||||||
onClick={() => setTab('vpn')}
|
|
||||||
/> */}
|
|
||||||
<TabItem
|
<TabItem
|
||||||
|
title="Autofill Data"
|
||||||
|
Icon={<FileText size={20} />}
|
||||||
|
active={tab === 'autofill'}
|
||||||
|
onClick={() => setTab('autofill')}
|
||||||
|
/>
|
||||||
|
<TabItem
|
||||||
|
title="WebRTC Policy"
|
||||||
|
Icon={<MessageSquare size={20} />}
|
||||||
|
active={tab === 'webRtc'}
|
||||||
|
onClick={() => setTab('webRtc')}
|
||||||
|
/>
|
||||||
|
<TabItem
|
||||||
|
title="User Agent"
|
||||||
Icon={<Globe size={20} />}
|
Icon={<Globe size={20} />}
|
||||||
active={tab === 'userAgent'}
|
active={tab === 'userAgent'}
|
||||||
onClick={() => setTab('userAgent')}
|
onClick={() => setTab('userAgent')}
|
||||||
/>
|
/>
|
||||||
|
<TabItem
|
||||||
|
title="Other Options"
|
||||||
|
Icon={<Sliders size={20} />}
|
||||||
|
active={tab === 'options'}
|
||||||
|
onClick={() => setTab('options')}
|
||||||
|
/>
|
||||||
{/* <TabItem
|
{/* <TabItem
|
||||||
Icon={<img src={VpnIcon} className="App-logo" alt="logo" />}
|
title="VPN Recommendations"
|
||||||
|
Icon={<img src={VpnIcon} alt="VPN Icon" />}
|
||||||
active={tab === 'vpn'}
|
active={tab === 'vpn'}
|
||||||
onClick={() => setTab('vpn')}
|
onClick={() => setTab('vpn')}
|
||||||
/> */}
|
/> */}
|
||||||
{/* <TabItem
|
|
||||||
Icon={<Sliders size={20} />}
|
|
||||||
active={tab === 'settings'}
|
|
||||||
onClick={() => setTab('settings')}
|
|
||||||
/> */}
|
|
||||||
<TabItem
|
<TabItem
|
||||||
Icon={<Info size={20} />}
|
title="Settings"
|
||||||
|
Icon={<Settings size={20} />}
|
||||||
active={tab === 'settings'}
|
active={tab === 'settings'}
|
||||||
onClick={() => setTab('settings')}
|
onClick={() => setTab('settings')}
|
||||||
/>
|
/>
|
||||||
|
<Flex sx={{ flexGrow: 1, alignItems: 'flex-end' }}>
|
||||||
|
<TabItem
|
||||||
|
title="info"
|
||||||
|
// Icon={<img src={Logo} height="20" width="20" alt="logo" />}
|
||||||
|
Icon={<Info size={20} />}
|
||||||
|
active={tab === 'info'}
|
||||||
|
onClick={() => setTab('info')}
|
||||||
|
/>
|
||||||
|
</Flex>
|
||||||
</Flex>
|
</Flex>
|
||||||
<Box sx={{ m: '16px', width: '100%' }}>
|
<Box sx={{ m: '16px', width: '100%' }}>
|
||||||
|
<HomePage tab={tab} setTab={setTab} />
|
||||||
<LocationPage tab={tab} setTab={setTab} />
|
<LocationPage tab={tab} setTab={setTab} />
|
||||||
|
<AutofillPage tab={tab} />
|
||||||
|
<WebRtcPage tab={tab} />
|
||||||
<UserAgentPage tab={tab} />
|
<UserAgentPage tab={tab} />
|
||||||
|
<OptionsPage tab={tab} />
|
||||||
{/* <VpnPage tab={tab} /> */}
|
{/* <VpnPage tab={tab} /> */}
|
||||||
<SettingsPage tab={tab} setTab={setTab} />
|
<SettingsPage tab={tab} setTab={setTab} />
|
||||||
|
<InfoPage tab={tab} setTab={setTab} />
|
||||||
</Box>
|
</Box>
|
||||||
</Flex>
|
</Flex>
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,16 @@
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
import { Button } from 'theme-ui'
|
import { Button } from 'theme-ui'
|
||||||
interface IconProps {
|
interface IconProps {
|
||||||
|
title: string
|
||||||
Icon: React.ReactNode
|
Icon: React.ReactNode
|
||||||
active?: boolean
|
active?: boolean
|
||||||
onClick: () => void
|
onClick: () => void
|
||||||
}
|
}
|
||||||
|
|
||||||
const TabItem = ({ Icon, onClick, active }: IconProps) => {
|
const TabItem = ({ title, Icon, onClick, active }: IconProps) => {
|
||||||
return (
|
return (
|
||||||
<Button
|
<Button
|
||||||
|
title={title}
|
||||||
sx={{
|
sx={{
|
||||||
cursor: 'pointer',
|
cursor: 'pointer',
|
||||||
width: '36px',
|
width: '36px',
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import { Box } from 'theme-ui'
|
||||||
|
|
||||||
interface PageProps {
|
interface PageProps {
|
||||||
isCurrentTab: boolean
|
isCurrentTab: boolean
|
||||||
title: string
|
title?: string
|
||||||
children: React.ReactNode
|
children: React.ReactNode
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -13,9 +13,11 @@ const Page = ({ isCurrentTab, title, children }: PageProps) => {
|
||||||
display: isCurrentTab ? 'block' : 'none',
|
display: isCurrentTab ? 'block' : 'none',
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Box sx={{ fontSize: '21px', mb: '12px', fontWeight: '600' }}>
|
{title && (
|
||||||
{title}
|
<Box sx={{ fontSize: '21px', mb: '12px', fontWeight: '600' }}>
|
||||||
</Box>
|
{title}
|
||||||
|
</Box>
|
||||||
|
)}
|
||||||
{children}
|
{children}
|
||||||
</Box>
|
</Box>
|
||||||
)
|
)
|
||||||
|
|
|
||||||
27
src/popup/pages/autofillPage/index.tsx
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
import { Button, Link, Text } from 'theme-ui'
|
||||||
|
import Checkbox from 'popup/components/CheckBox'
|
||||||
|
|
||||||
|
import Page from 'popup/components/Page'
|
||||||
|
|
||||||
|
interface AutofillPageProps {
|
||||||
|
tab: string
|
||||||
|
}
|
||||||
|
|
||||||
|
const AutofillPage = ({ tab }: AutofillPageProps) => {
|
||||||
|
return (
|
||||||
|
<Page isCurrentTab={tab === 'autofill'} title={'Autofill Data'}>
|
||||||
|
<Checkbox
|
||||||
|
title="Autofill Address Enabled"
|
||||||
|
// onChange={changeBrowserDefault}
|
||||||
|
// checked={browserDefault}
|
||||||
|
/>
|
||||||
|
<Checkbox
|
||||||
|
title="Autofill Credit Card Enabled"
|
||||||
|
// onChange={changeBrowserDefault}
|
||||||
|
// checked={browserDefault}
|
||||||
|
/>
|
||||||
|
</Page>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default AutofillPage
|
||||||
19
src/popup/pages/homePage/InfoItem.tsx
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
import { Box, Flex } from 'theme-ui'
|
||||||
|
|
||||||
|
interface InfoItemProps {
|
||||||
|
title: string
|
||||||
|
children: React.ReactNode
|
||||||
|
}
|
||||||
|
|
||||||
|
const InfoItem = ({ title, children }: InfoItemProps) => {
|
||||||
|
return (
|
||||||
|
<Box sx={{ mb: '12px' }}>
|
||||||
|
<Flex sx={{ fontWeight: '700', mb: '2px', fontSize: '14px' }}>
|
||||||
|
{title}
|
||||||
|
</Flex>
|
||||||
|
{children}
|
||||||
|
</Box>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default InfoItem
|
||||||
110
src/popup/pages/homePage/index.tsx
Normal file
|
|
@ -0,0 +1,110 @@
|
||||||
|
import { useState } from 'react'
|
||||||
|
import { Image, Flex, Link, Text, Select, Box, Label } from 'theme-ui'
|
||||||
|
import Page from 'popup/components/Page'
|
||||||
|
import InfoItem from './InfoItem'
|
||||||
|
import Logo from 'assets/logo.svg'
|
||||||
|
import LogoHover from 'assets/logoHover.svg'
|
||||||
|
import LogoText from 'assets/logoText.svg'
|
||||||
|
|
||||||
|
interface HomePageProps {
|
||||||
|
tab: string
|
||||||
|
setTab: (tab: string) => void
|
||||||
|
}
|
||||||
|
|
||||||
|
const HomePage = ({ tab, setTab }: HomePageProps) => {
|
||||||
|
const [isHovered, setIsHovered] = useState(false)
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Page isCurrentTab={tab === 'home'} title={''}>
|
||||||
|
<Flex
|
||||||
|
onMouseOver={() => setIsHovered(true)}
|
||||||
|
onMouseOut={() => setIsHovered(false)}
|
||||||
|
sx={{
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'center',
|
||||||
|
gap: '12px',
|
||||||
|
mb: '18px',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Image
|
||||||
|
src={isHovered ? LogoHover : Logo}
|
||||||
|
height="40"
|
||||||
|
width="40"
|
||||||
|
alt="logo"
|
||||||
|
/>
|
||||||
|
<Image src={LogoText} height="50" width="auto" alt="logo text" />
|
||||||
|
</Flex>
|
||||||
|
{/* <InfoItem title={'Hide Debugging Notification Bar'}>
|
||||||
|
While spoofing data a notification bar becomes visible. Hiding the bar
|
||||||
|
can be done by using the{' '}
|
||||||
|
<Text sx={{ fontStyle: 'italic', mr: '2px' }}>
|
||||||
|
--silent-debugger-extension-api
|
||||||
|
</Text>{' '}
|
||||||
|
flag.{' '}
|
||||||
|
<Link
|
||||||
|
variant="hover"
|
||||||
|
href={`https://www.chromium.org/developers/how-tos/run-chromium-with-flags`}
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Instructions on how to run chrome with flags
|
||||||
|
</Link>
|
||||||
|
.
|
||||||
|
</InfoItem> */}
|
||||||
|
<InfoItem title={'What is Vytal?'}>
|
||||||
|
Vytal does not change your IP address.
|
||||||
|
</InfoItem>
|
||||||
|
<InfoItem title={'Does Vytal change your IP address?'}>
|
||||||
|
Vytal does not change your IP address. To change your IP address you
|
||||||
|
will need a VPN or proxy.
|
||||||
|
</InfoItem>
|
||||||
|
<InfoItem title={'How to test the extension?'}>
|
||||||
|
You can test and compare Vytal and other spoofing extensions on{' '}
|
||||||
|
<Link variant="hover" href={`https://vytal.io/scan`} target="_blank">
|
||||||
|
vytal.io
|
||||||
|
</Link>
|
||||||
|
.
|
||||||
|
</InfoItem>
|
||||||
|
<InfoItem title={'Support Us'}>
|
||||||
|
If you like this extension and wish to support us you can{' '}
|
||||||
|
<Link
|
||||||
|
variant="hover"
|
||||||
|
href={`https://chrome.google.com/webstore/detail/vytal-spoof-timezone-loca/ncbknoohfjmcfneopnfkapmkblaenokb?utm_source=rate`}
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
rate the extension
|
||||||
|
</Link>{' '}
|
||||||
|
or{' '}
|
||||||
|
<Link variant="hover" href={`https://vytal.io/donate`} target="_blank">
|
||||||
|
donate
|
||||||
|
</Link>
|
||||||
|
.
|
||||||
|
</InfoItem>
|
||||||
|
<Box sx={{ width: '100%' }}>
|
||||||
|
<Label htmlFor="type">Default Popup Page</Label>
|
||||||
|
<Select
|
||||||
|
name="type"
|
||||||
|
id="type"
|
||||||
|
// value={userAgentInfo}
|
||||||
|
// onChange={changeUserAgentInfo}
|
||||||
|
mb={'8px'}
|
||||||
|
>
|
||||||
|
{/* <option value="custom">Custom</option>
|
||||||
|
{Object.keys(userAgents).map((key) => (
|
||||||
|
<optgroup key={key} label={userAgents[key].title}>
|
||||||
|
{userAgents[key].values.map((key: any) => (
|
||||||
|
<option key={key.value} value={JSON.stringify(key)}>
|
||||||
|
{key.title}
|
||||||
|
</option>
|
||||||
|
))}
|
||||||
|
</optgroup>
|
||||||
|
))} */}
|
||||||
|
<option>Home</option>
|
||||||
|
<option>Location Data</option>
|
||||||
|
<option>Other Settings</option>
|
||||||
|
</Select>
|
||||||
|
</Box>
|
||||||
|
</Page>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default HomePage
|
||||||
84
src/popup/pages/infoPage/index.tsx
Normal file
|
|
@ -0,0 +1,84 @@
|
||||||
|
import { Button, Link, Text } from 'theme-ui'
|
||||||
|
import Page from 'popup/components/Page'
|
||||||
|
import InfoItem from './InfoItem'
|
||||||
|
|
||||||
|
interface InfoPageProps {
|
||||||
|
tab: string
|
||||||
|
setTab: (tab: string) => void
|
||||||
|
}
|
||||||
|
|
||||||
|
const InfoPage = ({ tab, setTab }: InfoPageProps) => {
|
||||||
|
return (
|
||||||
|
<Page isCurrentTab={tab === 'info'} title={'Info'}>
|
||||||
|
<InfoItem title={'Change IP Address'}>
|
||||||
|
Vytal does not change your IP address. To change your IP you will need a
|
||||||
|
VPN or proxy.
|
||||||
|
{/* <Button variant="text" onClick={() => setTab('vpn')}>
|
||||||
|
VPN or proxy
|
||||||
|
</Button>
|
||||||
|
. */}
|
||||||
|
</InfoItem>
|
||||||
|
<InfoItem title={'Hide Debugging Notification Bar'}>
|
||||||
|
While spoofing data a notification bar becomes visible. Hiding the bar
|
||||||
|
can be done by using the{' '}
|
||||||
|
<Text sx={{ fontStyle: 'italic', mr: '2px', whiteSpace: 'nowrap' }}>
|
||||||
|
--silent-debugger-extension-api
|
||||||
|
</Text>{' '}
|
||||||
|
flag.{' '}
|
||||||
|
<Link
|
||||||
|
variant="hover"
|
||||||
|
href={`https://www.chromium.org/developers/how-tos/run-chromium-with-flags`}
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Instructions on how to run chrome with flags
|
||||||
|
</Link>
|
||||||
|
.
|
||||||
|
</InfoItem>
|
||||||
|
{/* <InfoItem title={'Vytal vs Similar Extensions'}>
|
||||||
|
Vytal utilizes the debugger API to spoof data which is completely
|
||||||
|
undetectable. Other similar extensions rely on{' '}
|
||||||
|
<Link
|
||||||
|
variant="hover"
|
||||||
|
href={`https://palant.info/2020/12/10/how-anti-fingerprinting-extensions-tend-to-make-fingerprinting-easier/`}
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
inferior script tag injections
|
||||||
|
</Link>
|
||||||
|
.
|
||||||
|
</InfoItem> */}
|
||||||
|
<InfoItem title={'Test Extension'}>
|
||||||
|
You can test and compare Vytal and other spoofing extensions on{' '}
|
||||||
|
<Link variant="hover" href={`https://vytal.io/scan`} target="_blank">
|
||||||
|
vytal.io
|
||||||
|
</Link>
|
||||||
|
.
|
||||||
|
</InfoItem>
|
||||||
|
<InfoItem title={'Support Us'}>
|
||||||
|
If you like this extension and wish to support us you can{' '}
|
||||||
|
<Link
|
||||||
|
variant="hover"
|
||||||
|
href={
|
||||||
|
'https://chrome.google.com/webstore/detail/vytal-spoof-timezone-loca/ncbknoohfjmcfneopnfkapmkblaenokb?utm_source=rate'
|
||||||
|
}
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
rate the extension
|
||||||
|
</Link>{' '}
|
||||||
|
or{' '}
|
||||||
|
<Link variant="hover" href={`https://vytal.io/donate`} target="_blank">
|
||||||
|
donate
|
||||||
|
</Link>
|
||||||
|
.
|
||||||
|
</InfoItem>
|
||||||
|
<InfoItem title={'Contact Us'}>
|
||||||
|
You can reach us at{' '}
|
||||||
|
<Link variant="hover" href={'mailto:contact@vytal.io'} target="_blank">
|
||||||
|
contact@vytal.io
|
||||||
|
</Link>
|
||||||
|
.
|
||||||
|
</InfoItem>
|
||||||
|
</Page>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default InfoPage
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { useState, useEffect, ChangeEvent, useCallback } from 'react'
|
import { useState, useEffect, ChangeEvent, useCallback } from 'react'
|
||||||
import { Box, Button, Flex, Label, Select } from 'theme-ui'
|
import { Box, Flex, Label, Select } from 'theme-ui'
|
||||||
import Page from 'popup/components/Page'
|
import Page from 'popup/components/Page'
|
||||||
import Checkbox from 'popup/components/CheckBox'
|
import Checkbox from 'popup/components/CheckBox'
|
||||||
import DebouncedInput from 'popup/components/DebouncedInput'
|
import DebouncedInput from 'popup/components/DebouncedInput'
|
||||||
|
|
@ -151,7 +151,7 @@ const LocationPage = ({ tab, setTab }: LocationPageProps) => {
|
||||||
return (
|
return (
|
||||||
<Page isCurrentTab={tab === 'location'} title={'Location Data'}>
|
<Page isCurrentTab={tab === 'location'} title={'Location Data'}>
|
||||||
<Checkbox
|
<Checkbox
|
||||||
title="Use browser default"
|
title="Use Browser Defaults"
|
||||||
onChange={changeBrowserDefault}
|
onChange={changeBrowserDefault}
|
||||||
checked={browserDefault}
|
checked={browserDefault}
|
||||||
/>
|
/>
|
||||||
|
|
@ -161,6 +161,11 @@ const LocationPage = ({ tab, setTab }: LocationPageProps) => {
|
||||||
pointerEvents: browserDefault ? 'none' : 'auto',
|
pointerEvents: browserDefault ? 'none' : 'auto',
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
<Checkbox
|
||||||
|
title="Use Debugger API"
|
||||||
|
onChange={changeBrowserDefault}
|
||||||
|
checked={browserDefault}
|
||||||
|
/>
|
||||||
<Flex
|
<Flex
|
||||||
sx={{
|
sx={{
|
||||||
border: '1px solid',
|
border: '1px solid',
|
||||||
|
|
|
||||||
97
src/popup/pages/optionsPage/index.tsx
Normal file
|
|
@ -0,0 +1,97 @@
|
||||||
|
import { Button, Link, Text } from 'theme-ui'
|
||||||
|
import Checkbox from 'popup/components/CheckBox'
|
||||||
|
|
||||||
|
import Page from 'popup/components/Page'
|
||||||
|
|
||||||
|
interface OptionsPageProps {
|
||||||
|
tab: string
|
||||||
|
}
|
||||||
|
|
||||||
|
const OptionsPage = ({ tab }: OptionsPageProps) => {
|
||||||
|
return (
|
||||||
|
<Page isCurrentTab={tab === 'options'} title={'Other Options'}>
|
||||||
|
{/* <Checkbox
|
||||||
|
title="Network Prediction Enabled"
|
||||||
|
// onChange={changeBrowserDefault}
|
||||||
|
// checked={browserDefault}
|
||||||
|
/>
|
||||||
|
<Checkbox
|
||||||
|
title="Alternate Error Pages Enabled"
|
||||||
|
// onChange={changeBrowserDefault}
|
||||||
|
// checked={browserDefault}
|
||||||
|
/>
|
||||||
|
<Checkbox
|
||||||
|
title="Password Saving Enabled"
|
||||||
|
// onChange={changeBrowserDefault}
|
||||||
|
// checked={browserDefault}
|
||||||
|
/> */}
|
||||||
|
<Checkbox
|
||||||
|
title="Safe Browsing Enabled"
|
||||||
|
// onChange={changeBrowserDefault}
|
||||||
|
// checked={browserDefault}
|
||||||
|
/>
|
||||||
|
<Checkbox
|
||||||
|
title="Safe Browsing Extended Reporting Enabled"
|
||||||
|
// onChange={changeBrowserDefault}
|
||||||
|
// checked={browserDefault}
|
||||||
|
/>
|
||||||
|
<Checkbox
|
||||||
|
title="Search Suggest Enabled"
|
||||||
|
// onChange={changeBrowserDefault}
|
||||||
|
// checked={browserDefault}
|
||||||
|
/>
|
||||||
|
<Checkbox
|
||||||
|
title="Spelling Service Enabled"
|
||||||
|
// onChange={changeBrowserDefault}
|
||||||
|
// checked={browserDefault}
|
||||||
|
/>
|
||||||
|
<Checkbox
|
||||||
|
title="Translation Service Enabled"
|
||||||
|
// onChange={changeBrowserDefault}
|
||||||
|
// checked={browserDefault}
|
||||||
|
/>
|
||||||
|
<Checkbox
|
||||||
|
title="Ad Measurement Enabled"
|
||||||
|
// onChange={changeBrowserDefault}
|
||||||
|
// checked={browserDefault}
|
||||||
|
/>
|
||||||
|
<Checkbox
|
||||||
|
title="Do Not Track Enabled"
|
||||||
|
// onChange={changeBrowserDefault}
|
||||||
|
// checked={browserDefault}
|
||||||
|
/>
|
||||||
|
<Checkbox
|
||||||
|
title="Fledge Enabled"
|
||||||
|
// onChange={changeBrowserDefault}
|
||||||
|
// checked={browserDefault}
|
||||||
|
/>
|
||||||
|
<Checkbox
|
||||||
|
title="Hyperlink Auditing Enabled"
|
||||||
|
// onChange={changeBrowserDefault}
|
||||||
|
// checked={browserDefault}
|
||||||
|
/>
|
||||||
|
<Checkbox
|
||||||
|
title="Protected Content Enabled"
|
||||||
|
// onChange={changeBrowserDefault}
|
||||||
|
// checked={browserDefault}
|
||||||
|
/>
|
||||||
|
<Checkbox
|
||||||
|
title="Referrers Enabled"
|
||||||
|
// onChange={changeBrowserDefault}
|
||||||
|
// checked={browserDefault}
|
||||||
|
/>
|
||||||
|
<Checkbox
|
||||||
|
title="Third Party Cookies Allowed"
|
||||||
|
// onChange={changeBrowserDefault}
|
||||||
|
// checked={browserDefault}
|
||||||
|
/>
|
||||||
|
<Checkbox
|
||||||
|
title="Topics Enabled"
|
||||||
|
// onChange={changeBrowserDefault}
|
||||||
|
// checked={browserDefault}
|
||||||
|
/>
|
||||||
|
</Page>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default OptionsPage
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import { Button, Link, Text } from 'theme-ui'
|
import { Button, Link, Text, Box, Label, Select } from 'theme-ui'
|
||||||
import Page from 'popup/components/Page'
|
import Page from 'popup/components/Page'
|
||||||
import InfoItem from './InfoItem'
|
import Checkbox from 'popup/components/CheckBox'
|
||||||
|
|
||||||
interface SettingsPageProps {
|
interface SettingsPageProps {
|
||||||
tab: string
|
tab: string
|
||||||
|
|
@ -9,65 +9,41 @@ interface SettingsPageProps {
|
||||||
|
|
||||||
const SettingsPage = ({ tab, setTab }: SettingsPageProps) => {
|
const SettingsPage = ({ tab, setTab }: SettingsPageProps) => {
|
||||||
return (
|
return (
|
||||||
<Page isCurrentTab={tab === 'settings'} title={'Info'}>
|
<Page isCurrentTab={tab === 'settings'} title={'Settings'}>
|
||||||
<InfoItem title={'Hide Debugging Notification Bar'}>
|
<Checkbox
|
||||||
While spoofing data a notification bar becomes visible. Hiding the bar
|
title="Dark Mode"
|
||||||
can be done by using the{' '}
|
// onChange={changeBrowserDefault}
|
||||||
<Text sx={{ fontStyle: 'italic', mr: '2px' }}>
|
// checked={browserDefault}
|
||||||
--silent-debugger-extension-api
|
/>
|
||||||
</Text>{' '}
|
<Box sx={{ width: '100%' }}>
|
||||||
flag.{' '}
|
<Label
|
||||||
<Link
|
htmlFor="type
|
||||||
variant="hover"
|
"
|
||||||
href={`https://www.chromium.org/developers/how-tos/run-chromium-with-flags`}
|
|
||||||
target="_blank"
|
|
||||||
>
|
>
|
||||||
Instructions on how to run chrome with flags
|
Default Popup Page
|
||||||
</Link>
|
</Label>
|
||||||
.
|
<Select
|
||||||
</InfoItem>
|
name="type"
|
||||||
<InfoItem title={'Change IP Address'}>
|
id="type"
|
||||||
Vytal does not change your IP address. To change your IP address you
|
// value={userAgentInfo}
|
||||||
will need a VPN or proxy.
|
// onChange={changeUserAgentInfo}
|
||||||
{/* <Button variant="text" onClick={() => setTab('vpn')}>
|
mb={'8px'}
|
||||||
VPN or proxy
|
|
||||||
</Button>
|
|
||||||
. */}
|
|
||||||
</InfoItem>
|
|
||||||
{/* <InfoItem title={'Vytal vs Similar Extensions'}>
|
|
||||||
Vytal utilizes the debugger API to spoof data which is completely
|
|
||||||
undetectable. Other similar extensions rely on{' '}
|
|
||||||
<Link
|
|
||||||
variant="hover"
|
|
||||||
href={`https://palant.info/2020/12/10/how-anti-fingerprinting-extensions-tend-to-make-fingerprinting-easier/`}
|
|
||||||
target="_blank"
|
|
||||||
>
|
>
|
||||||
inferior script tag injections
|
{/* <option value="custom">Custom</option>
|
||||||
</Link>
|
{Object.keys(userAgents).map((key) => (
|
||||||
.
|
<optgroup key={key} label={userAgents[key].title}>
|
||||||
</InfoItem> */}
|
{userAgents[key].values.map((key: any) => (
|
||||||
<InfoItem title={'Test Extension'}>
|
<option key={key.value} value={JSON.stringify(key)}>
|
||||||
You can test and compare Vytal and other spoofing extensions on{' '}
|
{key.title}
|
||||||
<Link variant="hover" href={`https://vytal.io/scan`} target="_blank">
|
</option>
|
||||||
vytal.io
|
))}
|
||||||
</Link>
|
</optgroup>
|
||||||
.
|
))} */}
|
||||||
</InfoItem>
|
<option>Home</option>
|
||||||
<InfoItem title={'Support Us'}>
|
<option>Location Data</option>
|
||||||
If you like this extension and wish to support us you can{' '}
|
<option>Other Settings</option>
|
||||||
<Link
|
</Select>
|
||||||
variant="hover"
|
</Box>
|
||||||
href={`https://chrome.google.com/webstore/detail/vytal-spoof-timezone-loca/ncbknoohfjmcfneopnfkapmkblaenokb?utm_source=rate`}
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
rate the extension
|
|
||||||
</Link>{' '}
|
|
||||||
or{' '}
|
|
||||||
<Link variant="hover" href={`https://vytal.io/donate`} target="_blank">
|
|
||||||
donate
|
|
||||||
</Link>
|
|
||||||
.
|
|
||||||
</InfoItem>
|
|
||||||
</Page>
|
</Page>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ const UserAgentPage = ({ tab }: UserAgentPageProps) => {
|
||||||
return (
|
return (
|
||||||
<Page isCurrentTab={tab === 'userAgent'} title={'User Agent'}>
|
<Page isCurrentTab={tab === 'userAgent'} title={'User Agent'}>
|
||||||
<Checkbox
|
<Checkbox
|
||||||
title="Use browser default"
|
title="Use Browser Defaults"
|
||||||
onChange={changeBrowserDefault}
|
onChange={changeBrowserDefault}
|
||||||
checked={browserDefault}
|
checked={browserDefault}
|
||||||
/>
|
/>
|
||||||
|
|
@ -77,6 +77,11 @@ const UserAgentPage = ({ tab }: UserAgentPageProps) => {
|
||||||
pointerEvents: browserDefault ? 'none' : 'auto',
|
pointerEvents: browserDefault ? 'none' : 'auto',
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
<Checkbox
|
||||||
|
title="Use Debugger API"
|
||||||
|
onChange={changeBrowserDefault}
|
||||||
|
checked={browserDefault}
|
||||||
|
/>
|
||||||
<Box sx={{ width: '100%' }}>
|
<Box sx={{ width: '100%' }}>
|
||||||
<Label htmlFor="type">Type</Label>
|
<Label htmlFor="type">Type</Label>
|
||||||
<Select
|
<Select
|
||||||
|
|
|
||||||
35
src/popup/pages/webRtcPage/RadioButton.tsx
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
import { ChangeEvent } from 'react'
|
||||||
|
import { Box, Label, Radio, Text } from 'theme-ui'
|
||||||
|
|
||||||
|
interface RadioButtonProps {
|
||||||
|
value: string
|
||||||
|
name: string
|
||||||
|
description: string
|
||||||
|
webRtcPolicy: string
|
||||||
|
onChange: (e: ChangeEvent<HTMLInputElement>) => void
|
||||||
|
}
|
||||||
|
|
||||||
|
const RadioButton = ({
|
||||||
|
value,
|
||||||
|
name,
|
||||||
|
description,
|
||||||
|
webRtcPolicy,
|
||||||
|
onChange,
|
||||||
|
}: RadioButtonProps) => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Label sx={{ cursor: 'pointer' }}>
|
||||||
|
<Radio
|
||||||
|
name="webRtcPolicy"
|
||||||
|
value={value}
|
||||||
|
onChange={onChange}
|
||||||
|
checked={webRtcPolicy === value}
|
||||||
|
/>
|
||||||
|
<Text sx={{ fontWeight: '700' }}>{name}</Text>
|
||||||
|
</Label>
|
||||||
|
<Box sx={{ ml: '32px', mb: '12px', fontSize: '12px' }}>{description}</Box>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default RadioButton
|
||||||
68
src/popup/pages/webRtcPage/index.tsx
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
import { Button, Link, Text } from 'theme-ui'
|
||||||
|
import { useState, useEffect, ChangeEvent } from 'react'
|
||||||
|
// import handleWebRtcPolicy from './handleWebRtcPolicy'
|
||||||
|
import RadioButton from './RadioButton'
|
||||||
|
|
||||||
|
import Page from 'popup/components/Page'
|
||||||
|
|
||||||
|
interface WebRtcPageProps {
|
||||||
|
tab: string
|
||||||
|
}
|
||||||
|
|
||||||
|
const WebRtcPage = ({ tab }: WebRtcPageProps) => {
|
||||||
|
const [webRtcPolicy, setWebRtcPolicy] = useState('default')
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
chrome.storage.local.get(['webRtcPolicy'], (storage) => {
|
||||||
|
storage.webRtcPolicy && setWebRtcPolicy(storage.webRtcPolicy)
|
||||||
|
})
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
const changeRadioValue = (e: ChangeEvent<HTMLInputElement>) => {
|
||||||
|
// handleWebRtcPolicy(e.target.value)
|
||||||
|
setWebRtcPolicy(e.target.value)
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Page isCurrentTab={tab === 'webRtc'} title={'WebRTC Policy'}>
|
||||||
|
<RadioButton
|
||||||
|
value={'default'}
|
||||||
|
name={'Default'}
|
||||||
|
description={
|
||||||
|
'Will use all available interfaces when searching for the best path.'
|
||||||
|
}
|
||||||
|
webRtcPolicy={webRtcPolicy}
|
||||||
|
onChange={changeRadioValue}
|
||||||
|
/>
|
||||||
|
<RadioButton
|
||||||
|
value={'default_public_and_private_interfaces'}
|
||||||
|
name={'Default Public And Private Interfaces'}
|
||||||
|
description={
|
||||||
|
'Will only use interface connecting to the public Internet, but may connect using private IP.'
|
||||||
|
}
|
||||||
|
webRtcPolicy={webRtcPolicy}
|
||||||
|
onChange={changeRadioValue}
|
||||||
|
/>
|
||||||
|
<RadioButton
|
||||||
|
value={'default_public_interface_only'}
|
||||||
|
name={'Default Public Interface Only'}
|
||||||
|
description={
|
||||||
|
'Will only use interface connecting to the public Internet, and will not connect using private IP.'
|
||||||
|
}
|
||||||
|
webRtcPolicy={webRtcPolicy}
|
||||||
|
onChange={changeRadioValue}
|
||||||
|
/>
|
||||||
|
<RadioButton
|
||||||
|
value={'disable_non_proxied_udp'}
|
||||||
|
name={'Disable Non-Proxied UDP (Force Proxy)'}
|
||||||
|
description={
|
||||||
|
'Will use TCP on the public-facing interface, and will only use UDP if supported by a configured proxy.'
|
||||||
|
}
|
||||||
|
webRtcPolicy={webRtcPolicy}
|
||||||
|
onChange={changeRadioValue}
|
||||||
|
/>
|
||||||
|
</Page>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default WebRtcPage
|
||||||
|
|
@ -39,8 +39,10 @@ export const theme: Theme = {
|
||||||
cursor: 'pointer',
|
cursor: 'pointer',
|
||||||
p: '4px 8px',
|
p: '4px 8px',
|
||||||
borderColor: 'grey',
|
borderColor: 'grey',
|
||||||
'&:focus': {
|
'&:hover': {
|
||||||
borderColor: 'primaryDark',
|
borderColor: 'primaryDark',
|
||||||
|
},
|
||||||
|
'&:focus': {
|
||||||
outline: 'none',
|
outline: 'none',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||