**Motivations:** - Consigner l'état actuel du dépôt (cron, service-login-verify, website-skeleton, userwallet, docs). - Centraliser les modifications en attente. **Root causes:** - N/A (commit groupé). **Correctifs:** - N/A. **Evolutions:** - Cron quotidien restart services : script local sans SSH, systemd (bitcoin-signet, bitcoin, APIs, dashboard, userwallet, website-skeleton) + Docker (mempool, bitcoin-signet-instance). - Feature cron-restart-services-local : documentation et règle scripts locaux / pas d'SSH. - service-login-verify : module vérification login (buildAllowedPubkeys, verifyLoginProof, nonceCache). - website-skeleton : app iframe UserWallet, config, systemd unit. - userwallet : collectSignatures, relay. - docs : DOMAINS_AND_PORTS, README, WEBSITE_SKELETON ; features userwallet-contrat-login, timeouts-backoff, service-login-verify. **Pages affectées:** - data/restart-services-cron.sh, data/restart-services.log, data/sync-utxos.log - features/cron-restart-services-local.md, features/service-login-verify.md, features/userwallet-contrat-login-reste-a-faire.md, features/userwallet-timeouts-backoff.md - docs/DOMAINS_AND_PORTS.md, docs/README.md, docs/WEBSITE_SKELETON.md - configure-nginx-proxy.sh - service-login-verify/ (src, dist, node_modules) - userwallet/src/utils/collectSignatures.ts, userwallet/src/utils/relay.ts - website-skeleton/
5.0 KiB
5.0 KiB
website-skeleton
Squelette d’un site web qui intègre UserWallet en iframe : écoute des messages postMessage (auth-request, login-proof, error), vérification des preuves de login via service-login-verify, et affichage du statut (accepté / refusé).
Objectif
Fournir un projet minimal, prêt à l’emploi, pour :
- embarquer UserWallet dans une page via iframe ;
- communiquer avec l’iframe via
postMessage(Channel Messages) ; - vérifier les preuves de login côté parent avec le package
service-login-verify.
Utile comme base pour un service (certificator, zapwall, etc.) qui consomme UserWallet et doit valider les sessions.
Emplacement et structure
- Dossier :
website-skeleton/à la racine du dépôt (à côté deuserwallet/,service-login-verify/,api-relay/). - Stack : Vite, TypeScript, dépendance
service-login-verify(file:../service-login-verify).
Fichiers principaux
| Fichier | Rôle |
|---|---|
index.html |
Page avec iframe UserWallet, zone de statut, bouton « Demander auth » |
src/main.ts |
Chargement iframe, écoute message, envoi auth-request, appel verifyLoginProof, mise à jour du statut |
src/config.ts |
USERWALLET_ORIGIN, DEFAULT_VALIDATEURS (placeholder) |
package.json |
Scripts dev / build / preview, dépendance service-login-verify |
start.sh |
Build + vite preview sur le port 3024 (production) |
vite.config.ts |
preview.allowedHosts: ['skeleton.certificator.4nkweb.com'] pour éviter 403 via proxy |
website-skeleton.service |
Unité systemd pour servir le site |
install-website-skeleton.sh |
Installation locale (build, systemd) |
README.md |
Instructions d’installation, configuration et utilisation |
Prérequis
- service-login-verify : exécuter
npm run builddans../service-login-verifyavant d’installer ou builder le skeleton. - UserWallet : à servir sur l’URL configurée (
USERWALLET_ORIGIN) pour que l’iframe fonctionne.
Installation et commandes
cd website-skeleton
npm install
npm run build
- Développement :
npm run dev→ serveur surhttp://localhost:3024. - Preview :
npm run previewaprès build.
Configuration
Origine UserWallet
- Fichier :
src/config.ts. - Variable :
USERWALLET_ORIGIN= URL de l’iframe ettargetOriginpourpostMessage. - Défauts :
- En dev :
http://localhost:3018(UserWallet en dev sur ce port). - En prod :
https://userwallet.certificator.4nkweb.com.
- En dev :
- Override : variable d’environnement
VITE_USERWALLET_ORIGIN(ex.VITE_USERWALLET_ORIGIN=http://localhost:3018 npm run dev).
Validateurs
- Fichier :
src/config.ts, objetDEFAULT_VALIDATEURS. - Rôle : structure des validateurs de l’action login (placeholder).
- Usage réel : remplacer par les validateurs issus du contrat du service (action login), ou les charger depuis une API / un channel.
Utilisation
- Lancer UserWallet (dev ou déployé) sur l’URL configurée.
- Lancer le skeleton (
npm run devou servirdist/). - Ouvrir la page du skeleton : l’iframe affiche UserWallet.
- Demander auth : cliquer « Demander auth (auth-request) » → envoi de
auth-requestà l’iframe. - Login : effectuer le flux de login dans l’iframe ; à la fin, UserWallet envoie
login-proofau parent. Le skeleton appelleverifyLoginProof, puis affiche « Login accepté » ou « Login refusé : … ».
Messages postMessage
| Type | Sens | Rôle du skeleton |
|---|---|---|
auth-request |
Parent → iframe | Envoyé au clic sur « Demander auth ». |
auth-response |
Iframe → parent | Affichage « Auth reçu ». |
login-proof |
Iframe → parent | Vérification via verifyLoginProof, mise à jour du statut. |
error |
Iframe → parent | Affichage du message d’erreur. |
Déploiement
- Port : 3024 (aucun conflit avec le Dashboard, 3020).
- Backend : machine 192.168.1.168 (site + service systemd).
- Proxy : 192.168.1.100 ; Nginx route
skeleton.certificator.4nkweb.com→http://192.168.1.168:3024. - Certificat : Let's Encrypt sur le proxy pour
skeleton.certificator.4nkweb.com(viaconfigure-nginx-proxy.sh/update-proxy-nginx.sh).
Installation
-
Sur la machine backend (192.168.1.105) :
./website-skeleton/install-website-skeleton.shConstruit le front, installe et démarre le service systemd (
website-skeleton.service). -
Proxy + certificat : à partir de la racine du dépôt,
./update-proxy-nginx.shConfigure Nginx sur le proxy (.100), génère le certificat pour
skeleton.certificator.4nkweb.com, recharge Nginx.
Voir docs/DOMAINS_AND_PORTS.md pour les domaines et ports.
Références
- Package vérification :
service-login-verify/,features/service-login-verify.md - Iframe et login :
userwallet/,features/userwallet-contrat-login-reste-a-faire.md(§ 3.7) - Relais :
api-relay/,docs/DOMAINS_AND_PORTS.md