[
{
"id": 13919,
"label": "Nome do app",
"name": "APP_NAME",
"value": "DTunnel VPN",
"type": "STRING",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13920,
"label": "Logo do app",
"name": "APP_LOGO",
"value": "https://i.ibb.co/kGbKZF5/DTaonojf1b.png",
"type": "IMAGE",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13921,
"label": "Imagem de fundo",
"name": "APP_BACKGROUND_IMAGE",
"value": "https://i.ibb.co/j3PMLdK/DTd4tm925q.jpg",
"type": "IMAGE",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13922,
"label": "Tipo do fundo do app",
"name": "APP_BACKGROUND_TYPE",
"value": {
"options": [
{
"label": "Imagem",
"value": "IMAGE"
},
{
"label": "Cor",
"value": "COLOR"
}
],
"selected": "IMAGE"
},
"type": "SELECT",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13923,
"label": "Cor de fundo",
"name": "APP_BACKGROUND_COLOR",
"value": "#080e16c7",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13924,
"label": "Cor do card inicial",
"name": "APP_CARD_COLOR",
"value": "#738d995e",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13925,
"label": "Raio do card inicial",
"name": "APP_CARD_RADIUS",
"value": 20,
"type": "INTEGER",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13926,
"label": "Cor do card de status",
"name": "APP_CARD_STATUS_COLOR",
"value": "#1d242e00",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13927,
"label": "Raio do card de status",
"name": "APP_CARD_STATUS_RADIUS",
"value": 25,
"type": "INTEGER",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13928,
"label": "Cor do card de configurações",
"name": "APP_CARD_CONFIG_COLOR",
"value": "#0E171EC9",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13929,
"label": "Cor do fundo dos dialogs",
"name": "APP_DIALOG_BACKGROUND_COLOR",
"value": "#ed730084",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13930,
"label": "Cor do fundo do dialog de log",
"name": "APP_DIALOG_LOGGER_COLOR",
"value": "#080e16c7",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13931,
"label": "Cor das bordas",
"name": "APP_BORDER_COLOR",
"value": "#000000ff",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13932,
"label": "Cor dos inputs",
"name": "APP_INPUT_COLOR",
"value": "#0000007a",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13933,
"label": "Raio dos inputs",
"name": "APP_INPUT_RADIUS",
"value": 25,
"type": "INTEGER",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13934,
"label": "Cor dos textos",
"name": "APP_TEXT_COLOR",
"value": "#FFFFFFFF",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13935,
"label": "Cor dos botões",
"name": "APP_BUTTON_COLOR",
"value": "#ff8000a5",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13936,
"label": "Raio dos botões",
"name": "APP_BUTTON_RADIUS",
"value": 25,
"type": "INTEGER",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13937,
"label": "Cor dos icones",
"name": "APP_ICON_COLOR",
"value": "#e8fff8ff",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13938,
"label": "Exibir modo de conexão",
"name": "APP_SHOW_CONNECTION_MODE",
"value": true,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 23206,
"label": "Atualizar automaticamente as configurações ao lançar uma atualização.",
"name": "APP_CONFIG_AUTO_UPDATE",
"value": true,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13939,
"label": "Iniciar o app automaticamente ao reiniciar o dispositivo",
"name": "APP_AUTO_START",
"value": false,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13940,
"label": "Usar limiter de conexão",
"name": "APP_CONNECTION_LIMITER",
"value": false,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13941,
"label": "Usar botão de atualizações",
"name": "APP_BTN_UPDATE_ENABLED",
"value": true,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13942,
"label": "Usar botão de registros",
"name": "APP_BTN_LOGGER_ENABLED",
"value": true,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13943,
"label": "Usar botão de pagina webview",
"name": "APP_BTN_PAGE_ENABLED",
"value": false,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13947,
"label": "Ativar dialog de erros",
"name": "APP_DIALOG_ERROR_ENABLED",
"value": true,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13948,
"label": "Ativar dialog de checkuser",
"name": "APP_CHECKUSER_DIALOG_ENABLED",
"value": true,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13949,
"label": "Ativar toast de sucesso",
"name": "APP_SUCCESS_TOAST_ENABLED",
"value": true,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13950,
"label": "Ativar toast de erro",
"name": "APP_ERROR_TOAST_ENABLED",
"value": true,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 18745,
"label": "Usar layout webview",
"name": "APP_LAYOUT_WEBVIEW_ENABLED",
"value": false,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13951,
"label": "Mensagem",
"name": "APP_MESSAGE",
"value": null,
"type": "TEXT",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13952,
"label": "URL de atualização do aplicativo",
"name": "APP_UPDATE_URL",
"value": null,
"type": "URL",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13953,
"label": "Tipo de mensagem",
"name": "APP_MESSAGE_TYPE",
"value": {
"options": [
{
"label": "Alerta",
"value": "ALERT"
},
{
"label": "Informação",
"value": "INFO"
},
{
"label": "Boas vindas",
"value": "WELCOME"
},
{
"label": "Sem mensagem",
"value": "NONE"
}
],
"selected": "NONE"
},
"type": "SELECT",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 18746,
"label": "LAYOUT WEBVIEW (POR SUA CONTA E RISCO)",
"name": "APP_LAYOUT_WEBVIEW",
"value": null,
"type": "HTML",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13954,
"label": "ANDROID WEBVIEW (POR SUA CONTA E RISCO)",
"name": "APP_SUPPORT_BUTTON",
"value": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n <meta charset=\"UTF-8\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>DuTra</title>\n <style>\n :root {\n --background-color: #090e138f;\n --box-shadow-color: #090e13d8;\n }\n\n * {\n font-family: 'Roboto', 'sans-serif';\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n -webkit-tap-highlight-color: transparent;\n }\n\n body {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .container {\n align-self: flex-start;\n display: flex;\n margin: 35px 5px;\n width: 100%;\n justify-content: space-between;\n align-items: center;\n }\n\n .container-info {\n display: flex;\n flex-direction: column;\n }\n\n .container-info .info {\n display: flex;\n color: #FFF;\n padding: 0.5rem;\n border-radius: 50px;\n background: var(--background-color);\n box-shadow: 10px 5px 5px var(--box-shadow-color);\n gap: 5px;\n margin: 5px 0;\n }\n\n .button-container {\n display: flex;\n gap: 5px;\n padding: 0.3rem;\n border-radius: 50px;\n background: var(--background-color);\n box-shadow: 10px 5px 5px var(--box-shadow-color);\n }\n\n .button-container .action-button {\n display: flex;\n border-radius: 100%;\n background: none;\n padding: 0.3rem;\n align-items: center;\n color: #FFFFFF;\n cursor: pointer;\n }\n\n .button-container .action-button:nth-child(1) {\n background: #FFE4386D;\n border: 2px solid #FFE438FF;\n }\n\n .button-container .action-button:nth-child(2) {\n background: #d22215e3;\n border: 2px solid #D22215;\n }\n\n .button-container .action-button:nth-child(3) {\n background: #d22215e3;\n border: 2px solid #D22215;\n }\n\n .button-container .action-button:nth-child(4) {\n background: #3f3f3f;\n border: 2px solid #2e2e2e;\n }\n\n .button-container .action-button:nth-child(5) {\n background: #3f3f3f;\n border: 2px solid #2e2e2e;\n }\n\n .network-stats {\n display: flex;\n color: #fff;\n position: absolute;\n bottom: 20%;\n left: 50%;\n transform: translateX(-50%);\n width: 90%;\n max-width: 400px;\n gap: 20px;\n justify-content: space-between;\n }\n\n .network-stats div svg {\n fill: #ffffff;\n width: 20px;\n height: 20px;\n }\n\n .network-stats-download,\n .network-stats-upload {\n gap: 5px;\n padding: 10px;\n border-radius: 50px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n white-space: nowrap;\n background: var(--background-color);\n box-shadow: 10px 5px 5px var(--box-shadow-color);\n }\n\n .button-hotspot {\n position: absolute;\n bottom: 10%;\n left: 50%;\n transform: translateX(-50%);\n }\n\n .button-hotspot button {\n border: none;\n color: #FFF;\n border-radius: 50px;\n padding: 8px;\n background: var(--background-color);\n box-shadow: 10px 5px 5px var(--box-shadow-color);\n display: flex;\n align-items: center;\n gap: 10px;\n cursor: pointer;\n }\n\n .button-hotspot button svg {\n width: 32px;\n height: 32px;\n }\n\n .button-hotspot button span {\n font-weight: bold;\n font-size: 1.2em;\n }\n </style>\n</head>\n\n<body>\n <div class=\"container\">\n <div class=\"container-info\">\n <div class=\"\n <div class\"=>\n </div>\n </div>\n <div class=\"button-container\">\n <button class=\"action-button\" id=\"btnStartCheckUser\">\n <svg xmlns=\" http://www.w3.org/2000/svg\" width=\"1.3rem\" height=\"1.3rem\" fill=\"currentColor\"\n viewBox=\"0 0 553.000000 554.000000\" preserveAspectRatio=\"xMidYMid meet\">\n <g transform=\"translate(0.000000,554.000000) scale(0.100000,-0.100000)\" fill=\"#ffffff\"\n stroke=\"none\">\n <path\n d=\"M2385 5534 c-5 -1 -22 -5 -37 -8 -37 -8 -98 -63 -115 -104 -33 -79 -25 -651 11 -719 10 -21 34 -40 71 -58 64 -32 121 -29 176 8 57 39 73 70 81 160 11 132 9 538 -3 580 -11 40 -58 100 -93 119 -24 13 -77 26 -91 22z\" />\n <path\n d=\"M3650 5527 c-51 -13 -95 -50 -119 -100 -20 -41 -21 -59 -21 -323 0 -320 7 -385 46 -426 79 -82 220 -69 282 25 l27 41 0 332 0 332 -31 38 c-59 73 -117 99 -184 81z\" />\n <path\n d=\"M1015 5506 c-23 -14 -51 -43 -65 -68 l-25 -43 1 -315 c0 -362 3 -376 72 -424 36 -26 53 -31 100 -30 68 0 110 20 149 71 l28 36 3 306 c2 168 1 325 -3 348 -17 114 -160 179 -260 119z\" />\n <path\n d=\"M635 5155 c-140 -21 -238 -63 -348 -152 -124 -100 -232 -257 -268 -393 -16 -59 -25 -2944 -10 -3273 8 -195 12 -230 34 -289 38 -105 85 -176 177 -268 132 -132 260 -197 410 -211 105 -9 2320 -24 2320 -15 0 3 -20 50 -44 103 -24 54 -55 135 -70 180 l-27 82 -1092 3 -1092 3 -53 29 c-66 37 -141 111 -174 173 l-26 48 -7 1258 -7 1257 2036 0 2036 0 0 -464 0 -463 86 -17 c48 -10 129 -31 182 -47 52 -16 97 -28 98 -26 2 2 0 428 -5 948 -10 1032 -7 994 -71 1119 -45 89 -78 135 -145 203 -126 127 -253 186 -477 222 l-37 6 -3 -234 -3 -233 -34 -67 c-40 -80 -101 -139 -179 -175 -49 -23 -70 -27 -152 -27 -84 0 -102 3 -157 29 -73 33 -138 98 -180 177 l-28 54 -3 238 -3 237 -275 0 -274 0 -1 -77 c0 -43 -4 -152 -8 -243 -5 -145 -9 -171 -30 -213 -52 -107 -180 -197 -290 -205 -164 -12 -307 64 -377 200 -27 52 -28 57 -35 293 -4 132 -8 241 -8 243 -1 1 -124 1 -273 0 l-273 -3 -5 -240 -5 -240 -29 -53 c-39 -70 -112 -137 -192 -174 -61 -29 -71 -30 -147 -25 -159 10 -268 80 -332 212 -29 60 -29 61 -33 285 -2 124 -7 228 -10 231 -4 3 -43 1 -87 -6z\" />\n <path\n d=\"M1079 3311 c-58 -8 -92 -30 -127 -83 -26 -40 -27 -47 -27 -162 0 -145 7 -186 42 -226 52 -62 64 -65 324 -65 l235 0 42 27 c69 46 77 71 77 243 0 124 -3 156 -17 182 -26 47 -70 73 -141 84 -69 10 -337 10 -408 0z\" />\n <path\n d=\"M2200 3314 c-60 -11 -71 -16 -104 -45 -56 -49 -69 -98 -64 -241 4 -130 14 -163 60 -204 43 -40 66 -45 231 -50 199 -8 323 5 366 36 58 41 66 68 66 235 0 175 -8 198 -81 241 -46 27 -49 27 -248 30 -110 1 -212 1 -226 -2z\" />\n <path\n d=\"M3310 3314 c-60 -11 -71 -16 -104 -45 -56 -48 -69 -97 -64 -241 4 -149 18 -186 87 -226 l46 -27 230 0 230 0 46 27 c72 43 84 75 84 243 0 167 -12 200 -82 242 -44 26 -50 26 -247 29 -110 1 -212 1 -226 -2z\" />\n <path\n d=\"M1061 2571 c-64 -17 -116 -70 -131 -137 -13 -52 -12 -179 0 -245 12 -61 32 -94 80 -126 32 -22 40 -23 274 -23 231 0 243 1 280 23 71 40 81 70 81 242 0 172 -8 197 -77 243 l-41 27 -216 2 c-119 1 -231 -2 -250 -6z\" />\n <path\n d=\"M2172 2571 c-45 -8 -101 -56 -123 -105 -14 -32 -19 -65 -19 -146 0 -160 17 -208 90 -257 32 -22 41 -23 273 -23 239 0 240 0 284 25 70 42 78 66 78 240 0 124 -3 156 -17 182 -24 44 -67 71 -129 83 -55 11 -382 11 -437 1z\" />\n <path\n d=\"M4125 2574 c-74 -8 -238 -45 -309 -71 -187 -67 -340 -165 -483 -310 -152 -154 -242 -299 -308 -496 -79 -239 -85 -517 -15 -777 29 -105 117 -280 191 -381 189 -254 426 -415 733 -497 95 -25 114 -27 311 -26 194 0 217 2 305 26 270 73 464 190 644 387 378 414 443 1027 159 1509 -225 383 -625 621 -1070 636 -65 2 -136 2 -158 0z m413 -406 c236 -81 426 -249 539 -473 141 -279 115 -658 -64 -921 -123 -180 -314 -320 -513 -373 -271 -73 -544 -31 -769 120 -184 123 -318 309 -381 530 -30 103 -38 296 -17 404 61 317 279 583 572 696 132 51 182 59 365 56 159 -4 169 -5 268 -39z\" />\n <path\n d=\"M4155 1996 c-23 -14 -51 -43 -65 -68 -24 -42 -25 -50 -28 -273 -4 -250 7 -415 32 -464 9 -17 35 -41 59 -53 40 -22 55 -23 307 -26 345 -5 400 0 446 40 48 42 64 78 64 139 0 63 -27 115 -77 149 -33 23 -45 24 -247 31 -116 4 -212 8 -212 8 -1 1 -5 92 -9 203 -4 111 -11 213 -17 227 -36 97 -163 140 -253 87z\" />\n <path\n d=\"M1050 1830 c-46 -11 -105 -76 -120 -131 -16 -58 -8 -252 13 -300 8 -20 32 -49 53 -65 l37 -29 244 -3 245 -3 44 26 c66 38 78 69 82 210 6 183 -13 240 -98 286 -29 16 -441 24 -500 9z\" />\n <path\n d=\"M2156 1830 c-42 -13 -93 -67 -112 -116 -13 -34 -16 -69 -12 -166 4 -130 14 -162 60 -205 41 -39 71 -43 305 -43 209 0 230 2 269 21 26 12 53 36 66 57 21 34 23 48 23 187 0 172 -8 197 -77 243 l-42 27 -225 2 c-124 1 -239 -2 -255 -7z\" />\n </g>\n </svg>\n </button>\n <button class=\"action-button\" id=\"btnOpenWhatsapp\"> \n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-film\" viewBox=\"0 0 16 16\">\n <path d=\"M0 1a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V1zm4 0v6h8V1H4zm8 8H4v6h8V9zM1 1v2h2V1H1zm2 3H1v2h2V4zM1 7v2h2V7H1zm2 3H1v2h2v-2zm-2 3v2h2v-2H1zM15 1h-2v2h2V1zm-2 3v2h2V4h-2zm2 3h-2v2h2V7zm-2 3v2h2v-2h-2zm2 3h-2v2h2v-2z\"/>\n</svg>\n \n \n \n \n </svg\n </button>\n <button class=\"action-button\" id=\"btnOpenYouTube\">\n <svg xmlns=\" http://www.w3.org/2000/svg\" width=\"1.3rem\" height=\"1.3rem\" fill=\"currentColor\"\n viewBox=\"0 0 16 16\">\n <path\n d=\"M8.051 1.999h.089c.822.003 4.987.033 6.11.335a2.01 2.01 0 0 1 1.415 1.42c.101.38.172.883.22 1.402l.01.104.022.26.008.104c.065.914.073 1.77.074 1.957v.075c-.001.194-.01 1.108-.082 2.06l-.008.105-.009.104c-.05.572-.124 1.14-.235 1.558a2.007 2.007 0 0 1-1.415 1.42c-1.16.312-5.569.334-6.18.335h-.142c-.309 0-1.587-.006-2.927-.052l-.17-.006-.087-.004-.171-.007-.171-.007c-1.11-.049-2.167-.128-2.654-.26a2.007 2.007 0 0 1-1.415-1.419c-.111-.417-.185-.986-.235-1.558L.09 9.82l-.008-.104A31.4 31.4 0 0 1 0 7.68v-.123c.002-.215.01-.958.064-1.778l.007-.103.003-.052.008-.104.022-.26.01-.104c.048-.519.119-1.023.22-1.402a2.007 2.007 0 0 1 1.415-1.42c.487-.13 1.544-.21 2.654-.26l.17-.007.172-.006.086-.003.171-.007A99.788 99.788 0 0 1 7.858 2h.193zM6.4 5.209v4.818l4.157-2.408L6.4 5.209z\" />\n </svg>\n </button>\n <button class=\"action-button\" id=\"btnOpenSpeedTest\">\n <svg xmlns=\" http://www.w3.org/2000/svg\" width=\"1.3rem\" height=\"1.3rem\" fill=\"currentColor\"\n viewBox=\"0 0 16 16\">\n <path\n d=\"M8 2a.5.5 0 0 1 .5.5V4a.5.5 0 0 1-1 0V2.5A.5.5 0 0 1 8 2zM3.732 3.732a.5.5 0 0 1 .707 0l.915.914a.5.5 0 1 1-.708.708l-.914-.915a.5.5 0 0 1 0-.707zM2 8a.5.5 0 0 1 .5-.5h1.586a.5.5 0 0 1 0 1H2.5A.5.5 0 0 1 2 8zm9.5 0a.5.5 0 0 1 .5-.5h1.5a.5.5 0 0 1 0 1H12a.5.5 0 0 1-.5-.5zm.754-4.246a.389.389 0 0 0-.527-.02L7.547 7.31A.91.91 0 1 0 8.85 8.569l3.434-4.297a.389.389 0 0 0-.029-.518z\" />\n <path fill-rule=\"evenodd\"\n d=\"M6.664 15.889A8 8 0 1 1 9.336.11a8 8 0 0 1-2.672 15.78zm-4.665-4.283A11.945 11.945 0 0 1 8 10c2.186 0 4.236.585 6.001 1.606a7 7 0 1 0-12.002 0z\" />\n \n </div>\n </div>\n <div class=\"button-hotspot\">\n <button type=\"button\" id=\"btnHotSpot\">\n <svg id=\"iconHotSpotOff\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" fill=\"currentColor\"\n class=\"bi bi-toggle-off\" viewBox=\"0 0 16 16\">\n <path\n d=\"M11 4a4 4 0 0 1 0 8H8a4.992 4.992 0 0 0 2-4 4.992 4.992 0 0 0-2-4h3zm-6 8a4 4 0 1 1 0-8 4 4 0 0 1 0 8zM0 8a5 5 0 0 0 5 5h6a5 5 0 0 0 0-10H5a5 5 0 0 0-5 5z\" />\n </svg>\n <svg id=\"iconHotSpotOn\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" fill=\"currentColor\"\n class=\"bi bi-toggle-on\" viewBox=\"0 0 16 16\">\n <path d=\"M5 3a5 5 0 0 0 0 10h6a5 5 0 0 0 0-10H5zm6 9a4 4 0 1 1 0-8 4 4 0 0 1 0 8z\" />\n </svg>\n <span>ROTEADOR</span>\n </button>\n </div>\n <script>\n const btnStartCheckUser = document.querySelector('#btnStartCheckUser');\n const btnOpenWhatsapp = document.querySelector('#btnOpenWhatsapp')\n const btnOpenYouTube = document.querySelector('#btnOpenYouTube');\n const btnOpenSpeedTest = document.querySelector('#btnOpenSpeedTest');\n const configVersion = document.getElementById('version');\n const btnHotSpot = document.querySelector(\"#btnHotSpot\");\n const iconHotSpotOff = document.querySelector(\"#iconHotSpotOff\");\n const iconHotSpotOn = document.querySelector(\"#iconHotSpotOn\");\n const networkDownloadElement = document.querySelector('#networkDownload');\n const networkUploadElement = document.querySelector('#networkUpload');\n\n const currentNetworkDownload = parseFloat(localStorage.getItem('networkDownload') ?? window?.DtGetNetworkDownloadBytes?.execute() ?? 0);\n const currentNetworkUpload = parseFloat(localStorage.getItem('networkUpload') ?? window?.DtGetNetworkUploadBytes?.execute() ?? 0);\n localStorage.setItem('networkDownload', currentNetworkDownload);\n localStorage.setItem('networkUpload', currentNetworkUpload);\n\n const formatBytes = bytes => {\n const sizes = ['B/s', 'KB/s', 'MB/s', 'GB/s', 'TB/s'];\n if (bytes === 0) return '0 B/s';\n const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));\n return (bytes / Math.pow(1024, i)).toPrecision(3) + ' ' + sizes[i];\n };\n\n const updateNetworkStats = () => {\n const newNetworkDownload = window?.DtGetNetworkDownloadBytes?.execute() ?? 0;\n const newNetworkUpload = window?.DtGetNetworkUploadBytes?.execute() ?? 0;\n\n networkDownloadElement.innerHTML = formatBytes(newNetworkDownload - currentNetworkDownload);\n networkUploadElement.innerHTML = formatBytes(newNetworkUpload - currentNetworkUpload);\n };\n\n const toggleHotSpot = () => {\n const hotSpotStatus = window?.DtGetStatusHotSpotService?.execute() ?? 'STOPPED';\n hotSpotStatus == 'RUNNING' ? stopHotSpot() : startHotSpot();\n };\n\n const startHotSpot = () => {\n window?.DtStartHotSpotService?.execute();\n iconHotSpotOn.style.display = 'block';\n iconHotSpotOff.style.display = 'none';\n };\n\n const stopHotSpot = () => {\n window?.DtStopHotSpotService?.execute();\n iconHotSpotOff.style.display = 'block';\n iconHotSpotOn.style.display = 'none';\n };\n\n const parseResponseData = data => {\n data = JSON.parse(data);\n if (data.total) {\n const total = data.total;\n document.getElementById('total').innerHTML = String(total).padStart(2, '0');\n }\n };\n\n const createConnection = () => {\n const config = JSON.parse(window?.DtGetDefaultConfig?.execute() ?? '{}');\n const urlCheckUser = new URL(config?.url_check_user ?? 'http://0.0.0.0:5000');\n urlCheckUser.protocol = 'ws:';\n return new WebSocket(urlCheckUser);\n };\n\n const startActions = socket => {\n socket.send(JSON.stringify({\n action: 'all',\n data: {}\n }));\n };\n\n const startSocket = () => {\n const socket = createConnection();\n socket.onopen = e => startActions(socket);\n socket.onmessage = e => parseResponseData(e.data);\n };\n\n btnStartCheckUser.addEventListener('click', () => DtStartCheckUser.execute());\n btnOpenWhatsapp.addEventListener('click', () => DtOpenExternalUrl.execute('https://topflix.fm/'));\n btnOpenYouTube.addEventListener('click', () => DtStartWebViewActivity.execute('https://youtube.com/'));\n btnOpenSpeedTest.addEventListener('click', () => DtStartWebViewActivity.execute('https://www.speedtest.net/'));\n btnHotSpot.addEventListener('click', toggleHotSpot);\n\n const hotSpotStatus = window?.DtGetStatusHotSpotService?.execute() ?? 'STOPPED';\n if (hotSpotStatus == 'RUNNING') {\n iconHotSpotOff.style.display = 'none';\n iconHotSpotOn.style.display = 'block';\n } else {\n iconHotSpotOn.style.display = 'none';\n iconHotSpotOff.style.display = 'block';\n }\n\n configVersion.innerHTML = window?.DtGetLocalConfigVersion?.execute() ?? '1.0';\n\n updateNetworkStats();\n startSocket();\n\n setInterval(() => {\n updateNetworkStats();\n configVersion.innerHTML = window?.DtGetLocalConfigVersion?.execute() ?? '1.0';\n }, 1000);\n </script>\n</body>\n\n</html>",
"type": "HTML",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
},
{
"id": 13955,
"label": "PAGINA WEBVIEW (POR SUA CONTA E RISCO)",
"name": "APP_WEB_VIEW",
"value": null,
"type": "HTML",
"status": "ACTIVE",
"user_id": "02d96cfd-0b7c-482d-8836-d016cef3b5e0"
}
]