[
{
"id": 22166,
"label": "Nome do app",
"name": "APP_NAME",
"value": "DTunnel VPN",
"type": "STRING",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22167,
"label": "Logo do app",
"name": "APP_LOGO",
"value": "https://i.imgur.com/X8N65Tk.png",
"type": "IMAGE",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22168,
"label": "Imagem de fundo",
"name": "APP_BACKGROUND_IMAGE",
"value": "https://i.imgur.com/J0G1Gz4.jpg",
"type": "IMAGE",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22169,
"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": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22170,
"label": "Cor de fundo",
"name": "APP_BACKGROUND_COLOR",
"value": "#080e16c7",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22171,
"label": "Cor do card inicial",
"name": "APP_CARD_COLOR",
"value": "#1d242e73",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22172,
"label": "Raio do card inicial",
"name": "APP_CARD_RADIUS",
"value": 20,
"type": "INTEGER",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22173,
"label": "Cor do card de status",
"name": "APP_CARD_STATUS_COLOR",
"value": "#1d242e73",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22174,
"label": "Raio do card de status",
"name": "APP_CARD_STATUS_RADIUS",
"value": 25,
"type": "INTEGER",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22175,
"label": "Cor do card de configurações",
"name": "APP_CARD_CONFIG_COLOR",
"value": "#1D1D1D",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22176,
"label": "Cor do fundo dos dialogs",
"name": "APP_DIALOG_BACKGROUND_COLOR",
"value": "#1D1D1D",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22177,
"label": "Cor do fundo do dialog de log",
"name": "APP_DIALOG_LOGGER_COLOR",
"value": "#1D1D1D",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22178,
"label": "Cor das bordas",
"name": "APP_BORDER_COLOR",
"value": "#1d242e73",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22179,
"label": "Cor dos inputs",
"name": "APP_INPUT_COLOR",
"value": "#1d242e73",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22180,
"label": "Raio dos inputs",
"name": "APP_INPUT_RADIUS",
"value": 25,
"type": "INTEGER",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22181,
"label": "Cor dos textos",
"name": "APP_TEXT_COLOR",
"value": "#FFFFFFFF",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22182,
"label": "Cor dos botões",
"name": "APP_BUTTON_COLOR",
"value": "#1d242e73",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22183,
"label": "Raio dos botões",
"name": "APP_BUTTON_RADIUS",
"value": 25,
"type": "INTEGER",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22184,
"label": "Cor dos icones",
"name": "APP_ICON_COLOR",
"value": "#FFFFFFFF",
"type": "COLOR",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22185,
"label": "Exibir modo de conexão",
"name": "APP_SHOW_CONNECTION_MODE",
"value": true,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22871,
"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": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22186,
"label": "Iniciar o app automaticamente ao reiniciar o dispositivo",
"name": "APP_AUTO_START",
"value": false,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22187,
"label": "Usar limiter de conexão",
"name": "APP_CONNECTION_LIMITER",
"value": false,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22188,
"label": "Usar botão de atualizações",
"name": "APP_BTN_UPDATE_ENABLED",
"value": true,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22189,
"label": "Usar botão de registros",
"name": "APP_BTN_LOGGER_ENABLED",
"value": true,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22190,
"label": "Usar botão de pagina webview",
"name": "APP_BTN_PAGE_ENABLED",
"value": true,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22191,
"label": "Ativar dialog de erros",
"name": "APP_DIALOG_ERROR_ENABLED",
"value": true,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22192,
"label": "Ativar dialog de checkuser",
"name": "APP_CHECKUSER_DIALOG_ENABLED",
"value": true,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22193,
"label": "Ativar toast de sucesso",
"name": "APP_SUCCESS_TOAST_ENABLED",
"value": true,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22194,
"label": "Ativar toast de erro",
"name": "APP_ERROR_TOAST_ENABLED",
"value": true,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22195,
"label": "Usar layout webview",
"name": "APP_LAYOUT_WEBVIEW_ENABLED",
"value": false,
"type": "BOOLEAN",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22196,
"label": "Mensagem",
"name": "APP_MESSAGE",
"value": null,
"type": "TEXT",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22197,
"label": "URL de atualização do aplicativo",
"name": "APP_UPDATE_URL",
"value": null,
"type": "URL",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22198,
"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": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22199,
"label": "LAYOUT WEBVIEW (POR SUA CONTA E RISCO)",
"name": "APP_LAYOUT_WEBVIEW",
"value": "",
"type": "HTML",
"status": "INACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22200,
"label": "ANDROID WEBVIEW (POR SUA CONTA E RISCO)",
"name": "APP_SUPPORT_BUTTON",
"value": "<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>5172750168 - @gvnet1</title>
<style>
:root {
font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
line-height: 1.5;
font-weight: 400;
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
--space-status-bar: 10px;
--space-nav-bar: 33px;
}
@-webkit-keyframes onePulse {
0% {
box-shadow: 0px 0px 4px 0px rgba(255, 255, 255, 0.5);
}
50% {
box-shadow: 0px 0px 4px 8px rgba(255, 255, 255, 0.1);
}
100% {
box-shadow: 0px 0px 4px 4px rgba(255, 255, 255, 0.5);
}
}
@keyframes onePulse {
0% {
box-shadow: 0px 0px 4px 0px rgba(255, 255, 255, 0.5);
}
50% {
box-shadow: 0px 0px 4px 8px rgba(255, 255, 255, 0.1);
}
100% {
box-shadow: 0px 0px 4px 4px rgba(255, 255, 255, 0.5);
}
}
*,
*::before,
*::after {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html,
body,
main {
width: 100%;
height: 100%;
}
body {
background: transparent;
}
main {
max-width: 650px;
display: flex;
flex-direction: column;
justify-content: space-between;
margin: 0 auto 0 auto;
padding: var(--space-status-bar) 10px var(--space-nav-bar) 10px;
}
section.top {
width: 100%;
height: auto;
display: flex;
align-items: center;
}
section.top button {
margin-left: auto;
padding: 3.5%;
display: flex;
align-items: center;
justify-content: center;
gap: 7px;
border: 0;
border-radius: 10px;
background: #000000;
}
section.top button svg {
color: #ffffff;
}
section.top button span {
color: #ffffff;
font-weight: 500;
font-size: 0.7rem;
}
section.bottom {
width: 100%;
height: auto;
/* background: blue; */
display: flex;
flex-direction: column;
align-items: center;
}
section.bottom div.container-local-ip {
width: auto;
height: auto;
display: flex;
align-items: center;
padding: 10px 15px;
border-radius: 10px;
background: #000000;
transition: all 0.3s ease 0.1s;
}
section.bottom div.container-local-ip span {
width: 100%;
height: auto;
color: #ffffff;
font-weight: 500;
font-size: 0.8rem;
}
section.bottom div.container-tools {
width: 100%;
height: auto;
display: flex;
justify-content: center;
position: relative;
}
section.bottom div.container-tools button {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
margin: 7% 0px 0px 0px;
padding: 10px 6%;
border: 0;
border-radius: 10px;
box-shadow: 0px 0px 4px 0px rgba(255, 255, 255, 0.5);
transition: all linear;
background: #000000;
}
section.bottom div.container-tools button svg {
color: #ffffff;
}
section.bottom div.container-tools button span {
color: #ffffff;
}
section.bottom div.container-tools ul {
width: auto;
min-width: 90%;
max-width: 300px;
height: 55px;
display: flex;
align-items: center;
justify-content: space-around;
gap: 5px;
position: absolute;
bottom: 90%;
padding: 0 5px;
border-radius: 50px;
box-shadow: 0px 0px 4px 0px rgba(255, 255, 255, 0.5);
opacity: 0;
transform: scale(0);
transform-origin: bottom center;
transition: all 0.3s ease 0.1s;
background: rgba(3, 169, 244, 0.2);
}
section.bottom div.container-tools ul li {
width: 40px;
height: 40px;
display: flex;
justify-content: center;
align-items: center;
border: 1px solid #ffffff;
border-radius: 50%;
box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.5);
background: rgba(0, 0, 0, 0.5);
}
section.bottom div.container-tools ul li svg {
color: #ffffff;
}
section.bottom div.container-tools.active button {
-webkit-animation: onePulse 0.6s forwards linear;
animation: onePulse 0.6s forwards linear;
}
section.bottom div.container-tools.active ul {
opacity: 1;
transform: scale(1);
}
.hidden {
opacity: 0;
visibility: hidden;
}
.display-none {
display: none;
}
</style>
</head>
<body>
<main>
<section class="top">
<button type="button">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-git"
viewBox="0 0 16 16"
>
<path
d="M15.698 7.287 8.712.302a1.03 1.03 0 0 0-1.457 0l-1.45 1.45 1.84 1.84a1.223 1.223 0 0 1 1.55 1.56l1.773 1.774a1.224 1.224 0 0 1 1.267 2.025 1.226 1.226 0 0 1-2.002-1.334L8.58 5.963v4.353a1.226 1.226 0 1 1-1.008-.036V5.887a1.226 1.226 0 0 1-.666-1.608L5.093 2.465l-4.79 4.79a1.03 1.03 0 0 0 0 1.457l6.986 6.986a1.03 1.03 0 0 0 1.457 0l6.953-6.953a1.031 1.031 0 0 0 0-1.457"
/>
</svg>
<span id="version-value">Buscando versão...</span>
</button>
</section>
<section class="bottom">
<div class="container-local-ip">
<span id="local-ip">Procurando IP...</span>
</div>
<div class="container-tools">
<button type="button" title="Ferramentas">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-nut"
viewBox="0 0 16 16"
>
<path
d="m11.42 2 3.428 6-3.428 6H4.58L1.152 8 4.58 2h6.84zM4.58 1a1 1 0 0 0-.868.504l-3.428 6a1 1 0 0 0 0 .992l3.428 6A1 1 0 0 0 4.58 15h6.84a1 1 0 0 0 .868-.504l3.429-6a1 1 0 0 0 0-.992l-3.429-6A1 1 0 0 0 11.42 1H4.58z"
/>
<path
d="M6.848 5.933a2.5 2.5 0 1 0 2.5 4.33 2.5 2.5 0 0 0-2.5-4.33zm-1.78 3.915a3.5 3.5 0 1 1 6.061-3.5 3.5 3.5 0 0 1-6.062 3.5z"
/>
</svg>
<span>Ferramentas</span>
</button>
<ul>
<li id="checkuser">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-calendar2-week"
viewBox="0 0 16 16"
>
<path
d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H2z"
/>
<path
d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5V4zM11 7.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm-3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm-5 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1z"
/>
</svg>
</li>
<li id="battery">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-battery-half"
viewBox="0 0 16 16"
>
<path d="M2 6h5v4H2V6z" />
<path
d="M2 4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H2zm10 1a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h10zm4 3a1.5 1.5 0 0 1-1.5 1.5v-3A1.5 1.5 0 0 1 16 8z"
/>
</svg>
</li>
<li id="apn">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-wrench-adjustable-circle"
viewBox="0 0 16 16"
>
<path
d="M12.496 8a4.491 4.491 0 0 1-1.703 3.526L9.497 8.5l2.959-1.11c.027.2.04.403.04.61Z"
/>
<path
d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0Zm-1 0a7 7 0 1 0-13.202 3.249l1.988-1.657a4.5 4.5 0 0 1 7.537-4.623L7.497 6.5l1 2.5 1.333 3.11c-.56.251-1.18.39-1.833.39a4.49 4.49 0 0 1-1.592-.29L4.747 14.2A7 7 0 0 0 15 8Zm-8.295.139a.25.25 0 0 0-.288-.376l-1.5.5.159.474.808-.27-.595.894a.25.25 0 0 0 .287.376l.808-.27-.595.894a.25.25 0 0 0 .287.376l1.5-.5-.159-.474-.808.27.596-.894a.25.25 0 0 0-.288-.376l-.808.27.596-.894Z"
/>
</svg>
</li>
<li id="clean">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-trash3"
viewBox="0 0 16 16"
>
<path
d="M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5ZM11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H2.506a.58.58 0 0 0-.01 0H1.5a.5.5 0 0 0 0 1h.538l.853 10.66A2 2 0 0 0 4.885 16h6.23a2 2 0 0 0 1.994-1.84l.853-10.66h.538a.5.5 0 0 0 0-1h-.995a.59.59 0 0 0-.01 0H11Zm1.958 1-.846 10.58a1 1 0 0 1-.997.92h-6.23a1 1 0 0 1-.997-.92L3.042 3.5h9.916Zm-7.487 1a.5.5 0 0 1 .528.47l.5 8.5a.5.5 0 0 1-.998.06L5 5.03a.5.5 0 0 1 .47-.53Zm5.058 0a.5.5 0 0 1 .47.53l-.5 8.5a.5.5 0 1 1-.998-.06l.5-8.5a.5.5 0 0 1 .528-.47ZM8 4.5a.5.5 0 0 1 .5.5v8.5a.5.5 0 0 1-1 0V5a.5.5 0 0 1 .5-.5Z"
/>
</svg>
</li>
<li id="speedtest">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-speedometer2"
viewBox="0 0 16 16"
>
<path
d="M8 4a.5.5 0 0 1 .5.5V6a.5.5 0 0 1-1 0V4.5A.5.5 0 0 1 8 4zM3.732 5.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 10a.5.5 0 0 1 .5-.5h1.586a.5.5 0 0 1 0 1H2.5A.5.5 0 0 1 2 10zm9.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 9.31a.91.91 0 1 0 1.302 1.258l3.434-4.297a.389.389 0 0 0-.029-.518z"
/>
<path
fill-rule="evenodd"
d="M0 10a8 8 0 1 1 15.547 2.661c-.442 1.253-1.845 1.602-2.932 1.25C11.309 13.488 9.475 13 8 13c-1.474 0-3.31.488-4.615.911-1.087.352-2.49.003-2.932-1.25A7.988 7.988 0 0 1 0 10zm8-7a7 7 0 0 0-6.603 9.329c.203.575.923.876 1.68.63C4.397 12.533 6.358 12 8 12s3.604.532 4.923.96c.757.245 1.477-.056 1.68-.631A7 7 0 0 0 8 3z"
/>
</svg>
</li>
</ul>
</div>
</section>
</main>
<!-- FUNÇÕES DO APP -->
<script>
const appStatusBar = () => DtGetStatusBarHeight.execute()
const appNavBar = () => DtGetNavigationBarHeight.execute()
const appLocalIp = () => Android.getLocalIP()
const appBattery = () => DtIgnoreBatteryOptimizations.execute()
const appApn = () => DtStartApnActivity.execute()
const appLink = (value) => DtStartWebViewActivity.execute(value)
const appOpenBrowser = (url) => DtOpenExternalUrl.execute(url)
const appClean = () => DtCleanApp.execute()
const appCheckUser = () => DtStartCheckUser.execute()
const appGetConfigVersion = () =>
DtGetLocalConfigVersion.execute() ?? "1.0"
</script>
<!-- DOM WRAPPER -->
<script>
const Dom = (selector) => {
const _elements = document.querySelectorAll(selector)
const wrapper = {
on(listeners) {
for (const [event, listener] of Object.entries(listeners)) {
_elements.forEach((element) => {
element.addEventListener(event, listener)
})
}
return wrapper
},
toggleClass: (token, force) => {
_elements.forEach((element) => {
element.classList.toggle(token, force)
})
return wrapper
},
html(value) {
_elements.forEach((element) => (element.innerHTML = value))
return wrapper
},
}
return wrapper
}
</script>
<!-- VÁRIAVEIS -->
<script>
const version = Dom("#version-value")
const containerLocalIp = Dom("section.bottom div.container-local-ip")
const localIp = Dom("#local-ip")
const containerTools = Dom("section.bottom div.container-tools")
const toolsButton = Dom("section.bottom div.container-tools button")
const tools = Dom("section.bottom div.container-tools ul")
const checkuser = Dom("#checkuser")
const battery = Dom("#battery")
const apn = Dom("#apn")
const CleanDataApp = Dom("#clean")
const speedtest = Dom("#speedtest")
</script>
<!-- FUNÇÕES -->
<script>
document.documentElement.style.setProperty(
"--space-status-bar",
`${appStatusBar() + 10}px`
)
document.documentElement.style.setProperty(
"--space-nav-bar",
`${appNavBar() + 10}px`
)
const toggleTools = () => {
containerLocalIp.toggleClass("hidden")
containerTools.toggleClass("active")
}
const carrierLocalIp = () => {
setInterval(() => {
const carrierLocalIp = appLocalIp()
if (!carrierLocalIp) {
localIp.html("Procurando IP...")
} else if (carrierLocalIp === "127.0.0.1") {
localIp.html("NO IP")
} else {
localIp.html(`${carrierLocalIp}`)
}
}, 500)
}
const configVersion = () => {
setInterval(() => {
const getAtualVersion = appGetConfigVersion()
version.html(`VERSÃO: ${getAtualVersion}`)
}, 1000)
}
carrierLocalIp()
configVersion()
</script>
<!-- AÇÕES -->
<script>
toolsButton.on({ click: () => toggleTools() })
checkuser.on({ click: () => appCheckUser() })
battery.on({ click: () => appBattery() })
apn.on({ click: () => appApn() })
CleanDataApp.on({ click: () => appClean() })
speedtest.on({ click: () => appLink("https://speed.cloudflare.com/") })
</script>
</body>
</html>",
"type": "HTML",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
},
{
"id": 22201,
"label": "PAGINA WEBVIEW (POR SUA CONTA E RISCO)",
"name": "APP_WEB_VIEW",
"value": null,
"type": "HTML",
"status": "ACTIVE",
"user_id": "d37036c7-833d-4246-8b45-c0ce6e8daaa2"
}
]