
Partager:
Diana est défenseur des développeurs chez Vonage. Elle aime manger des huîtres fraîches.
Vonage 2024 Hackathon Winner Spotlight : Exécution de code à distance
Temps de lecture : 5 minutes
Rencontrer Sina Madani
Chez Vonage, nous aimons voir les développeurs repousser les limites, et lors de notre dernier hackathon à l'échelle de l'entreprise, Sina Madani l'a fait. Son projet, Exécution de code à distancechange la donne : il permet d'accéder à distance à une machine sans SSH ni client de bureau à distance. sans SSH ni client de bureau à distance.
Pensez-y : Que se passerait-il si vous deviez envoyer des commandes à une machine située à l'autre bout du monde, mais que vous ne puissiez pas utiliser SSH ? La solution de Sina rend cela possible en utilisant API de Vonage, Java et des techniques de mise en réseau. Son projet est également disponible sur GitHub.
Le défi : Accès à distance, pas de SSH
Secure Shell (SSH) et les clients de bureau à distance sont les plus utilisés pour l'accès à distance, mais ils présentent des limites :
Restrictions des pare-feux - Certains réseaux bloquent SSH.
Complexité pour l'utilisateur - La configuration des clés SSH et des règles d'accès n'est pas toujours simple.
Problèmes de sécurité - Les ports ouverts peuvent présenter un risque.
L'approche de Sina contourne ces problèmes en utilisant les API de messagerie et d'authentification de Vonage. les API de messagerie et d'authentification de Vonage de Vonage pour envoyer et exécuter des commandes en toute sécurité.
Comment ça marche
À la base, le projet permet à un utilisateur d'envoyer une commande par SMS, WhatsApp, Viber ou Messenger à l'aide de l'API Messages et, en cas d'authentification, la commande est exécutée sur le système distant. Le résultat est ensuite renvoyé par le même canal de messagerie.
Pile technologique/pré-requis
Compte de développeur Vonage avec un numéro de téléphone Vonage
Pour acheter un numéro de téléphone virtuel, rendez-vous sur votre tableau de bord API et suivez les étapes ci-dessous.
Purchase a phone numberAccédez à votre tableau de bord API
Naviguez vers CONSTRUIRE & GERER > Numbers > Acheter des Numbers.
Choisissez les attributs nécessaires et cliquez sur Rechercher
Cliquez sur le bouton Acheter à côté du numéro désiré et validez votre achat
Pour confirmer que vous avez acheté le numéro virtuel, allez dans le menu de navigation de gauche, sous CONSTRUIRE & GÉRER, cliquez sur Numéros, puis sur Vos Numéros
SDK Java de Vonage & APIs
Messages (SMS, WhatsApp, Viber, Messenger)
Verify (pour l'authentification)
Applications & Numbers (pour la gestion des numéros de programme)
Échange de cartes SIM (contrôle de sécurité)
Ngrok (pour exposer le serveur local en toute sécurité)
En coulisses
Voici la "magie" qui se cache derrière le projet de Sina :
1. Authentification et sécurité d'abord
Avant d'exécuter une commande, le système vérifie l'identité de l'utilisateur au moyen d'une authentification par SMS.
A lien d'authentification unique est envoyé via Authentification silencieuse.
Si la vérification des données mobiles échoue, une authentification vocale de secours par code PIN de secours basée sur la voix.
Les Numbers non autorisés sont automatiquement bloqués.
Si un utilisateur tente à nouveau de s'authentifier avant l'expiration du délai, il reçoit une notification de temps d'attente.
2. Exécution des commandes par la messagerie
Une fois authentifié, l'utilisateur peut envoyer une commande par SMS, WhatsApp ou un autre canal pris en charge. Le système :
Reçoit la commande
L'exécuter dans un shell restreint
Renvoie la sortie
3. Configuration automatisée pour un déploiement sans souci
L'application attribue dynamiquement attribue dynamiquement un numéro Vonage disponible pour traiter les messages.
Si nécessaire, un nouveau numéro est acheté et lié automatiquement.
Les URL des webhooks sont mises à jour dynamiquement par l'intermédiaire de l'API de Vonage.
Exécution du projet
Si vous voulez l'essayer vous-même, clonez le fichier repo et configurez votre fichier .env avec :
VONAGE_API_KEY: Vonage account API key.
VONAGE_API_SECRET: Vonage account API secret.
VONAGE_APPLICATION_ID: Vonage application UUID.
VONAGE_PRIVATE_KEY_PATH: Absolute path to the private key associated with your Vonage application.
TO_NUMBER: Client phone number that is allowed to run commands.
VONAGE_HACKATHON_SERVER_URL: External URL of the server. Typically, this would be an ngrok.app URL.
VCR_PORT: Port to run the demo on. By default, this is 8080.Si vous avez IntelliJ IDEA est installé, vous pouvez importer ce projet et l'exécuter dans l'IDE, où le point d'entrée est l'élément Application classe (src/main/java/com/vonage/hackathon/rce/Application.java).
Pour exécuter la démo de manière autonome à partir de la ligne de commande, procédez comme suit:
mvn install spring-boot:runBesoin d'aide pour trouver votre clé API et votre secret API ?
Ouvrez votre Page des paramètres de l'API pour accéder à votre clé et à votre secret API de Vonage, qui sont tous deux affichés comme indiqué dans la capture d'écran ci-dessous. La clé API se trouve en haut de la page, et pour accéder à votre secret API, veuillez vous référer à la sous-section "Secret du compte".
Remarque : si vous ne vous souvenez plus de votre secret API précédemment créé, cliquez sur "+ Créer un nouveau secret" et sauvegardez-le en toute sécurité.

Pour plus de commodité, vous pouvez ajouter ce qui suit à vos variables d'environnement (~/.bashrc or ~/.zshrc):
export VCR_PORT=9080
export NGROK_URL="https://[id].ngrok.app"
export VONAGE_HACKATHON_SERVER_URL=$NGROK_URL
function ngrokUrl() {
local url=$(curl -s localhost:4040/api/tunnels | jq -r '.tunnels[0].public_url')
sed -i '' "s|\(^export NGROK_URL=\).*|\1\"$url\"|" ~/.zshrc
source ~/.zshrc && echo $NGROK_URL
}Démarrez ensuite le service :
ngrok http $VCR_PORTVos webhooks Vonage seront automatiquement mis à jour pour pointer vers votre nouvelle URL Ngrok.
Conclusion
Et c'est tout ! En utilisant le SDK Java de Vonage, les capacités de messagerie et les flux de travail d'authentification, les développeurs peuvent créer des solutions qui vont au-delà de ce que la plupart des gens font sans les outils SSH ou de bureau à distance traditionnels - tout comme Sina l'a fait ! Si cela vous a donné des idées, essayez-le vous-même ! Vous pouvez également rejoindre la communauté des développeurs de Vonage sur Slack ou me suivre moi et/ou l'équipe DevEx sur X (anciennement Twitter). Faites-nous savoir ce que vous construisez - nous serions ravis de présenter votre projet ensuite !