Titre

Chargement...
Initialisation des services
0%
Chargement...

Tutoriels & Documentation

Chargement des tutoriels...

Titre de la vidéo

Assistant Evisions

×
Bonjour ! Je suis l'assistant virtuel d'Evisions Connect. Je peux vous aider à configurer votre portail, gérer vos stocks ou répondre à vos questions techniques. Comment puis-je vous aider aujourd'hui ?
×
×

Paiement de l'Abonnement

Le paiement est en cours de traitement via l'agrégateur choisi.

Abonnement Requis

Un abonnement actif est nécessaire pour accéder à cette fonctionnalité.

×

Frais d'intégration

Pour votre premier abonnement, des frais uniques d'intégration qui s'appliquent en plus du coût mensuel/annuel.

×

Centre d'Aide Vidéo

Intégration complète du système automatisé (Portails captif, mikhmon , mobile money)

Vente par Mobile Money

Vente Sans Impression Papier

Inventaire Automatique

Gestion des Stocks

Administration des Tickets

Créer un Portail Captif

Centre de Support Client

×

Discussions Actives

Aucune discussion pour le moment.
Sélectionnez une discussion dans la liste de gauche pour commencer.
Assistant IA
Discussions & Support
Ticket d'assistance
Besoin d'aide ?
>

⚠️ Pseudo incompatible

Le Service VPN ne supporte pas les espaces ni caractères spéciaux.

Actuel :

Lettres, chiffres, - et _ uniquement · min. 3 caractères

La page sera rechargée après le renommage. Utilisez le nouveau pseudo à la prochaine connexion.

Renommage...

Choisir un Portail

Portail Premium

Nom du portail

2 000 FCFA

Paiement unique • Accès à vie • Mises à jour incluses

Restauration de Données

Attention - Opération importante

  • Cette opération écrasera vos données actuelles avec celles de la sauvegarde sélectionnée.
  • Les données de configuration, vendeurs, tickets et historiques seront remplacés.
  • Cette action est irréversible. Assurez-vous d'exporter vos données actuelles avant de continuer.

Données protégées (non modifiées)

Solde / Balance
Abonnement
Crédits
Achats portails
Affiliations
Historique paiements

Sélectionnez une date de sauvegarde

Chargement des sauvegardes disponibles...

Préparation de la restauration...

Intégration OTP pour Portail Personnalisé

Comment ça fonctionne ?

Ce code intercepte le formulaire de connexion de votre portail captif et redirige l'utilisateur vers la page de paiement/vérification OTP avant de se connecter au hotspot.

  • L'utilisateur entre son code ticket
  • Il est redirigé vers la page de vérification OTP
  • Après vérification, la connexion MikroTik s'effectue automatiquement

Vos paramètres d'intégration

Non configuré
Non configuré
Non configuré

Intégration Automatique

Importez votre fichier login.html et laissez-nous faire le travail !

Glissez votre fichier ici

ou cliquez pour parcourir

Fichiers acceptés : .html, .htm
Code HTML à ajouter dans le <body>
<!-- ============================================
     EVISIONS CONNECT - INTÉGRATION OTP
     Formulaire caché pour la redirection
============================================ -->

<!-- Formulaire caché pour soumission MikroTik (après OTP) -->
<form name="sendin" action="$(link-login-only)" method="post" style="display:none">
    <input type="hidden" name="username" />
    <input type="hidden" name="password" />
    <input type="hidden" name="dst" value="$(link-orig)" />
    <input type="hidden" name="popup" value="true" />
</form>

<!-- Script MD5 requis pour CHAP -->
<script src="/md5.js"></script>

Instructions pour le HTML

1
Ajoutez le formulaire caché

Copiez ce code et collez-le juste après la balise <body> de votre page login.html

2
Vérifiez le fichier md5.js

Assurez-vous que le fichier md5.js est présent à la racine de votre hotspot

Code JavaScript à ajouter
<!-- ============================================
     EVISIONS CONNECT - INTÉGRATION OTP
     Script de redirection vers paiement
============================================ -->

<script>
// =============================================
// CONFIGURATION - VOS PARAMÈTRES EVISIONS
// =============================================
const EVISIONS_CONFIG = {
    adminId: '%%ADMIN_ID%%',
    paymentUrl: '%%PAYMENT_URL%%',
    dnsName: '%%DNS_NAME%%'
};

// =============================================
// FONCTION D'INTERCEPTION DU LOGIN
// =============================================
function doLogin() {
    // Chercher le champ username visible (pas le hidden)
    const usernameField = document.getElementById('inputUser')
                       || document.querySelector('input[name="username"]:not([type="hidden"])')
                       || document.querySelector('form:not([name="sendin"]) input[name="username"]')
                       || document.login?.username;
    
    if (!usernameField) {
        console.error('EVISIONS: Champ username non trouvé');
        return true;
    }
    
    const username = usernameField.value ? usernameField.value.trim() : '';
    // Mode ticket: password = username si pas de champ password séparé
    const passwordField = document.querySelector('input[name="password"]:not([type="hidden"])');
    const password = passwordField ? passwordField.value : username;
    
    if (!username) {
        alert('Veuillez entrer votre code de connexion.');
        return false;
    }
    
    let targetUrl = EVISIONS_CONFIG.paymentUrl 
        + '?mode=display'
        + '&user=' + encodeURIComponent(username)
        + '&password=' + encodeURIComponent(password);
    
    if (EVISIONS_CONFIG.adminId) {
        targetUrl += '&adminId=' + encodeURIComponent(EVISIONS_CONFIG.adminId);
    }
    
    if (EVISIONS_CONFIG.dnsName) {
        targetUrl += '&dnsName=' + encodeURIComponent(EVISIONS_CONFIG.dnsName);
    }
    
    console.log('EVISIONS: Redirection vers', targetUrl);
    window.location.href = targetUrl;
    
    return false;
}

// =============================================
// CONNEXION AUTOMATIQUE (callback après OTP)
// =============================================
function evisions_autoLogin(username, password) {
    if (typeof hexMD5 === 'function' && document.sendin) {
        document.sendin.username.value = username;
        document.sendin.password.value = hexMD5('$(chap-id)' + password + '$(chap-challenge)');
        document.sendin.submit();
    } else if (document.login) {
        document.login.username.value = username;
        if (document.login.password) document.login.password.value = password;
        document.login.submit();
    }
}

// =============================================
// INITIALISATION AU CHARGEMENT
// =============================================
document.addEventListener('DOMContentLoaded', function() {
    const params = new URLSearchParams(window.location.search);
    const autoUsername = params.get('username');
    const autoPassword = params.get('password');
    
    if (autoUsername && autoPassword) {
        setTimeout(function() {
            evisions_autoLogin(autoUsername, autoPassword);
        }, 500);
        return;
    }
    
    // Attachement aux formulaires (éviter sendin)
    if (document.login) {
        document.login.onsubmit = function() { return doLogin(); };
    }
    
    const loginForm = document.getElementById('loginForm');
    if (loginForm) {
        loginForm.onsubmit = function(e) { e.preventDefault(); return doLogin(); };
    }
    
    // Chercher tout formulaire avec un champ username visible
    document.querySelectorAll('form').forEach(function(form) {
        if (form.name === 'sendin') return; // Ignorer le formulaire caché
        const usernameInput = form.querySelector('input[name="username"]:not([type="hidden"])');
        if (usernameInput) {
            form.onsubmit = function(e) { e.preventDefault(); return doLogin(); };
        }
    });
});
</script>

Instructions pour le JavaScript

1
Copiez le script

Collez ce code juste avant la balise </body> de votre page login.html

2
Les valeurs sont automatiquement configurées

Les valeurs adminId, paymentUrl et dnsName sont déjà remplies avec vos paramètres

3
Adaptez si nécessaire

Si votre formulaire utilise des sélecteurs différents, modifiez les lignes de récupération du username/password

Code Complet (HTML + JS)
<!-- ============================================================
     EVISIONS CONNECT - CODE D'INTÉGRATION OTP COMPLET
     
     ⚠️ IMPORTANT - AVANT DE COLLER CE CODE :
     Supprimez d'abord le code existant suivant de votre fichier login.html :
     
     <form name="sendin" action="$(link-login-only)" method="post">
       <input type="hidden" name="username" />
       <input type="hidden" name="password" />
       <input type="hidden" name="dst" value="$(link-orig)" />
       <input type="hidden" name="popup" value="true" />
     </form>
     <script type="text/javascript" src="/md5.js"></script>
     <script type="text/javascript">
     <!--
         function doLogin() {
       document.sendin.username.value = document.login.username.value;
       document.sendin.password.value = hexMD5('$(chap-id)' + document.login.username.value + '$(chap-challenge)');
       document.sendin.submit();
       return false;
         }
     //-->
     </script>
     
     Instructions:
     - Le formulaire caché : collez après <body>
     - Le script : collez avant </body>
============================================================ -->

<!-- ========== PARTIE 1 : FORMULAIRE CACHÉ (après <body>) ========== -->

<form name="sendin" action="$(link-login-only)" method="post" style="display:none">
    <input type="hidden" name="username" />
    <input type="hidden" name="password" />
    <input type="hidden" name="dst" value="$(link-orig)" />
    <input type="hidden" name="popup" value="true" />
</form>
<script src="/md5.js"></script>


<!-- ========== PARTIE 2 : SCRIPT PRINCIPAL (avant </body>) ========== -->

<script>
// EVISIONS CONNECT - CONFIGURATION
const EVISIONS_CONFIG = {
    adminId: '%%ADMIN_ID%%',
    paymentUrl: '%%PAYMENT_URL%%',
    dnsName: '%%DNS_NAME%%'
};

function doLogin() {
    // Chercher le champ username visible (pas le hidden du formulaire sendin)
    const usernameField = document.getElementById('inputUser')
                       || document.querySelector('input[name="username"]:not([type="hidden"])')
                       || document.querySelector('form:not([name="sendin"]) input[name="username"]')
                       || document.login?.username;
    
    if (!usernameField) return true;
    
    const username = usernameField.value ? usernameField.value.trim() : '';
    const passwordField = document.querySelector('input[name="password"]:not([type="hidden"])');
    const password = passwordField ? passwordField.value : username;
    
    if (!username) {
        alert('Veuillez entrer votre code de connexion.');
        return false;
    }
    
    let targetUrl = EVISIONS_CONFIG.paymentUrl 
        + '?mode=display'
        + '&user=' + encodeURIComponent(username)
        + '&password=' + encodeURIComponent(password);
    
    if (EVISIONS_CONFIG.adminId) {
        targetUrl += '&adminId=' + encodeURIComponent(EVISIONS_CONFIG.adminId);
    }
    if (EVISIONS_CONFIG.dnsName) {
        targetUrl += '&dnsName=' + encodeURIComponent(EVISIONS_CONFIG.dnsName);
    }
    
    window.location.href = targetUrl;
    return false;
}

function evisions_autoLogin(username, password) {
    if (typeof hexMD5 === 'function' && document.sendin) {
        document.sendin.username.value = username;
        document.sendin.password.value = hexMD5('$(chap-id)' + password + '$(chap-challenge)');
        document.sendin.submit();
    } else if (document.login) {
        document.login.username.value = username;
        if (document.login.password) document.login.password.value = password;
        document.login.submit();
    }
}

document.addEventListener('DOMContentLoaded', function() {
    const params = new URLSearchParams(window.location.search);
    const autoUsername = params.get('username');
    const autoPassword = params.get('password');
    
    if (autoUsername && autoPassword) {
        setTimeout(function() { evisions_autoLogin(autoUsername, autoPassword); }, 500);
        return;
    }
    
    if (document.login) {
        document.login.onsubmit = function() { return doLogin(); };
    }
    const loginForm = document.getElementById('loginForm');
    if (loginForm) {
        loginForm.onsubmit = function(e) { e.preventDefault(); return doLogin(); };
    }
    // Ignorer le formulaire sendin
    document.querySelectorAll('form').forEach(function(form) {
        if (form.name === 'sendin') return;
        const usernameInput = form.querySelector('input[name="username"]:not([type="hidden"])');
        if (usernameInput) {
            form.onsubmit = function(e) { e.preventDefault(); return doLogin(); };
        }
    });
});
</script>

Important - Configuration Walled Garden

N'oubliez pas d'ajouter votre domaine de paiement dans la configuration Walled Garden de votre routeur MikroTik pour que la redirection fonctionne correctement.

Étape Préalable Obligatoire

Avant de coller le code d'intégration, vous devez supprimer le formulaire sendin et la fonction doLogin() existants dans votre fichier login.html. Ces éléments seront remplacés par notre version compatible OTP.

Voir le code à supprimer
<form name="sendin" action="$(link-login-only)" method="post">
  <input type="hidden" name="username" />
  <input type="hidden" name="password" />
  <input type="hidden" name="dst" value="$(link-orig)" />
  <input type="hidden" name="popup" value="true" />
</form>
<script type="text/javascript" src="/md5.js"></script>
<script type="text/javascript">
<!--
    function doLogin() {
  document.sendin.username.value = document.login.username.value;
  document.sendin.password.value = hexMD5('$(chap-id)' + document.login.username.value + '$(chap-challenge)');
  document.sendin.submit();
  return false;
    }
//-->
</script>

Résumé de l'intégration

1
⚠️ Supprimez l'ancien code

Recherchez et supprimez le formulaire sendin et la fonction doLogin() existants (voir ci-dessus)

2
Copiez le code complet

Utilisez le bouton "Copier Tout" ci-dessus

3
Placez les parties au bon endroit

Le formulaire caché après <body>, le script avant </body>

4
Configurez Walled Garden

Ajoutez votre domaine de paiement dans la configuration MikroTik

5
Testez !

Connectez-vous à votre hotspot et vérifiez que la redirection fonctionne

🎛️ Gestion Routeur & Tickets

🗄️
👤
📋
Prêt Tout est synchronisé
MikroTik RouterOS
Hors ligne
ROS
📜 Vérification...
🌐 Portail: —
🕐 Jamais
🎫
Tickets Firebase (stock)
🟢
Sessions actives (hotspot)
👥
Total utilisateurs (routeur) ▶ Voir
📶
Profils hotspot
📊
Catégories Firebase
⚙️ Ressources système Inconnu
CPU Load
Uptime
Board / Modèle
Architecture
🌐 Réseau & Identité
Nom du réseau
Identité routeur
Adresse IP
Adresse MAC
RouterOS Version
Admin ID
🎫 Stock de tickets par profil 0 catégories
Aucune donnée disponible. Connectez-vous pour charger le stock.
📶 Profils Hotspot 0 profils
Aucun profil disponible.
💡 Envoie un ordre au routeur MikroTik via Firebase. Le routeur le détectera lors de sa prochaine vérification et créera les tickets automatiquement.
⚠️ Configuration dynamique : Le format des identifiants (username/password) est lu par le routeur depuis Firebase à chaque exécution. Vous pouvez modifier les paramètres dans l'onglet Identifiants — le routeur les appliquera automatiquement au prochain cycle, sans redéploiement.
📡 Cliquez sur pour récupérer les profils directement depuis le routeur MikroTik (nécessite script cyber9 déployé). Seuls les profils routeur sont affichés ici.
💤 Aucune commande en cours
Aucune commande en attente
Aucun historique
Cliquez "Reconnecter & Charger" pour charger les profils.
ℹ️ Les champs URL et ID Administrateur sont verrouillés et récupérés automatiquement depuis votre session. Les profils et tarifs sont chargés depuis users-data/{adminId}.

🔧 Diagnostic rapide

📋 Si vos scripts ne s'exécutent pas, vérifiez dans le Terminal Winbox :
/system script print where name~"cyber9" /system scheduler print where name~"cyber9"
Si les schedulers n'existent pas, allez dans l'onglet Publier, cliquez Générer les Scripts, puis copiez les commandes de ⏰ Schedulers dans le Terminal.

Pour tester un script manuellement :
/system script run cyber9-sync /system script run cyber9-tickets
☁️ Sauvegarde automatique — Vos modifications sont enregistrées dans Firebase en temps réel. Le routeur les appliquera automatiquement sans redéploiement du script. ✅ Sauvegardé
🔄 Mode Username = Password Le mot de passe sera identique au nom d'utilisateur. Idéal pour les tickets simples.
🛡️ Anti-doublon Le routeur vérifiera que chaque ticket n'existe pas déjà. Si un doublon est détecté, il régénère automatiquement jusqu'à atteindre la quantité demandée (max 10× tentatives).

👤 Nom d'utilisateur

wifi-3a7f21b0

🔒 Mot de passe

pass7f21

🎫 Aperçu ticket complet

Username:
wifi-3a7f21b0
Password:
pass7f21

Le script enverra ces données du routeur vers Firebase automatiquement.

☁️ Sauvegarde automatique — Les options de synchronisation sont sauvegardées dans Firebase. Le routeur les appliquera au prochain cycle sans redéploiement. ✅ Sauvegardé
Profils HotspotListe complète des profils utilisateur
État du routeurUptime, version, CPU, RAM, identité
Utilisateurs actifsNombre de clients connectés
Stock de ticketsTickets restants par profil
HeartbeatSignal de vie périodique

⚙️ Options avancées

Log détaillé
Vérification SSL
Envoyer erreurs à Firebase
Supprimer commande après traitement
☁️ Génère les scripts MikroTik, les publie sur le cloud Firebase, et vous donne une commande unique à coller dans le Terminal de votre routeur.
🔧 Version RouterOS : Via Netlify Backend — scripts identiques v6/v7 (aucun JSON sur le routeur)
⚡ COMMANDE D'INSTALLATION CLOUD

Collez cette ligne unique dans le Terminal Winbox de votre routeur :

🎫 Script Principal
⬆ Cliquez "Générer les Scripts"...
📡 Script Sync
⬆ Cliquez "Générer les Scripts"...
⏰ Schedulers
⬆ Cliquez "Générer les Scripts"...
💻 Commande Unique (Terminal)
⬆ Cliquez "Générer les Scripts"...
📌 ① Fichier .rsc (recommandé) : Téléchargez, uploadez dans Files du routeur, puis /import cyber9-setup.rsc (v7) ou /import cyber9-setup-v6.rsc (v6)
② Terminal : Copiez la commande unique et collez-la dans le terminal Winbox/SSH
🔴 Vérifiez les Schedulers ! Après déploiement, assurez-vous que les schedulers cyber9-tickets et cyber9-sync sont bien créés dans System → Scheduler sur votre routeur. Si le script de synchronisation ne s'exécute pas automatiquement, copiez les commandes de l'onglet ⏰ Schedulers et collez-les dans le Terminal du routeur.

Vérifiez aussi avec : /system scheduler print where name~"cyber9"
🛡️ Walled Garden (Domaines autorisés)
💡 Ces commandes vident d'abord le Walled Garden existant, puis ajoutent tous les domaines nécessaires (paiement, Firebase, OTP, etc.). Elles sont automatiquement incluses dans le fichier .rsc et la commande d'installation cloud.
# ═══ EVISIONS CONNECT — Walled Garden Setup ═══ # Collez dans le Terminal MikroTik (Winbox/SSH) # --- NETTOYAGE: Supprime TOUTES les regles Walled Garden --- /ip hotspot walled-garden remove [find] :delay 1s # --- Firebase & Infrastructure --- /ip hotspot walled-garden add dst-host="*.firebaseio.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="*.firebaseapp.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="*.googleapis.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="firestore.googleapis.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="firebasestorage.googleapis.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="securetoken.googleapis.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="fonts.googleapis.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="identitytoolkit.googleapis.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="*.cloudfunctions.net" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="firebasejs.com" dst-port=80,443 action=allow # --- CDN & Assets --- /ip hotspot walled-garden add dst-host="*.cloudflare.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="cdnjs.cloudflare.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="www.gstatic.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="ssl.gstatic.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="fonts.gstatic.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="*.netlify.app" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="*.github.io" dst-port=80,443 action=allow # --- Paiement: FedaPay --- /ip hotspot walled-garden add dst-host="*.fedapay.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="cdn.fedapay.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="api.fedapay.com" dst-port=80,443 action=allow # --- Paiement: CinetPay --- /ip hotspot walled-garden add dst-host="*.cinetpay.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="cdn.cinetpay.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="api-checkout.cinetpay.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="aws-mm-webpayment.bizao.com*" dst-port=80,443 action=allow # --- Paiement: FeexPay --- /ip hotspot walled-garden add dst-host="*.feexpay.me" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="api.feexpay.me" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="feexpay.me" dst-port=80,443 action=allow # --- Paiement: FlexPay (RDC) --- /ip hotspot walled-garden add dst-host="*.flexpay.cd" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="backend.flexpay.cd" dst-port=80,443 action=allow # --- Paiement: LengoPay --- /ip hotspot walled-garden add dst-host="*.lengopay.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="portal.lengopay.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="europe-west1-alima-1698786537194.cloudfunctions.net" dst-port=80,443 action=allow # --- Paiement: Money Fusion --- /ip hotspot walled-garden add dst-host="*.moneyfusion.net" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="pay.moneyfusion.net" dst-port=80,443 action=allow # --- Paiement: Wave --- /ip hotspot walled-garden add dst-host="*.wave.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="pay.wave.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="*.wave.ci" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="*.wave.sn" dst-port=80,443 action=allow # --- Paiement: Moneroo --- /ip hotspot walled-garden add dst-host="*.moneroo.io" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="app.moneroo.io" dst-port=80,443 action=allow # --- Paiement: KKiaPay --- /ip hotspot walled-garden add dst-host="*.kkiapay.me" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="api.kkiapay.me" dst-port=80,443 action=allow # --- Paiement: PayDunya --- /ip hotspot walled-garden add dst-host="*.paydunya.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="app.paydunya.com" dst-port=80,443 action=allow # --- Paiement: PayGate Global --- /ip hotspot walled-garden add dst-host="*.paygateglobal.com" dst-port=80,443 action=allow # --- Paiement: Dohone --- /ip hotspot walled-garden add dst-host="*.dohone.com" dst-port=80,443 action=allow # --- Paiement: PawaPay --- /ip hotspot walled-garden add dst-host="*.pawapay.io" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="api.pawapay.io" dst-port=80,443 action=allow # --- Paiement: Paystack --- /ip hotspot walled-garden add dst-host="*.paystack.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="api.paystack.co" dst-port=80,443 action=allow # --- Paiement: LigdiCash --- /ip hotspot walled-garden add dst-host="*.ligdicash.com" dst-port=80,443 action=allow # --- Paiement: Lygos --- /ip hotspot walled-garden add dst-host="*.lygosapp.com" dst-port=80,443 action=allow # --- Paiement: MyPVIT --- /ip hotspot walled-garden add dst-host="*.mypvit.com" dst-port=80,443 action=allow # --- Paiement: PayCard --- /ip hotspot walled-garden add dst-host="*.paycard.co" dst-port=80,443 action=allow # --- Paiement: Bizao --- /ip hotspot walled-garden add dst-host="*.bizao.com" dst-port=80,443 action=allow # --- Paiement: Sonotic --- /ip hotspot walled-garden add dst-host="*.sonotic.net" dst-port=80,443 action=allow # --- Google OTP / reCAPTCHA --- /ip hotspot walled-garden add dst-host="*.google.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="www.google.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="*.recaptcha.net" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="www.recaptcha.net" dst-port=80,443 action=allow # --- SMS: Africa's Talking --- /ip hotspot walled-garden add dst-host="*.africastalking.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="api.africastalking.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="api.sandbox.africastalking.com" dst-port=80,443 action=allow # --- Email: Brevo --- /ip hotspot walled-garden add dst-host="*.brevo.com" dst-port=80,443 action=allow /ip hotspot walled-garden add dst-host="api.brevo.com" dst-port=80,443 action=allow
EN DIRECT
0 tickets
Aucune sélection
Connectez-vous pour voir le stock en temps réel.
# Utilisateur Mot de passe Profil Prix Statut Créé le
Aucun ticket chargé
💡 Créez des profils hotspot directement sur le routeur MikroTik via Firebase. Le script on-login est généré automatiquement selon la version RouterOS (v6 ou v7) pour gérer l'expiration des tickets.
🖥️ Version RouterOS : Connectez-vous pour détecter
Durée après laquelle le ticket expire automatiquement (via scheduler MikroTik).
Durée maximale de chaque session de connexion. Laisser vide pour illimité.
/
Laisser 0 = pas de limitation de débit.
Le script on-login calcule et enregistre la date d'expiration à la première connexion. Recommandé pour les offres à durée limitée.
💤 Aucune création de profil en cours
Connectez-vous et cliquez "Rafraîchir" pour voir les profils.
Aucun historique
🔄 Interopérabilité Multi-Routeurs — Un ticket acheté sur un routeur fonctionne automatiquement sur tous les routeurs du même groupe. Les tickets sont synchronisés en temps réel via Firebase. ✅ Sauvegardé
⚡ Activer l'interopérabilité Active la synchronisation des tickets entre routeurs du même groupe. Un 3ème script cyber9-interop sera généré.
Commandes
Directes
Avec paramètres
Catégories
Chargement des commandes…
⚙️
Aperçu du script

                            
                            
⚙️
Commande en cours
Annuler ?

Créer un profil hotspot

OK

👥 Tickets Routeur 0

Chargement des tickets...

Détails du ticket