diff --git a/SUMMARY.md b/SUMMARY.md index 016c69cf..3a57a02f 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -12,3 +12,6 @@ * [REGION.refresh.sh](astroport-20h12/uplanet.refresh.sh/region.refresh.sh.md) * [G1PalPay.sh](astroport-20h12/g1palpay.sh.md) * [tools/Connect\_PLAYER\_To\_Gchange.sh](astroport-20h12/tools-connect\_player\_to\_gchange.sh.md) +* [API](api/README.md) + * [PLAYER.sh](api/player.sh.md) + * [QRCODE.sh](api/qrcode.sh.md) diff --git a/api/README.md b/api/README.md new file mode 100644 index 00000000..35581d21 --- /dev/null +++ b/api/README.md @@ -0,0 +1,96 @@ +# API + +Les scripts situés dans le répertoire `/API` de l'écosystème Astroport.ONE fournissent une variété de fonctionnalités via une interface API, allant de la gestion des joueurs et des zones géographiques à la génération de clés et la gestion des QR codes + +#### 1. `PLAYER.sh` + +Ce script gère les interactions avec les joueurs, en particulier les opérations liées aux TiddlyWikis (TW) des joueurs. + +**Fonctionnalités Principales :** + +* **Exportation de Tiddlers** : Permet d'exporter des tiddlers spécifiques tagués avec un certain mot-clé. +* **Gestion des @PASS** : (Commenté) Création de passes pour les joueurs. +* **Ajout de Médias** : (Commenté) Ajout de vidéos YouTube, PDF, ou images au TW du joueur. + +**Exemple de Commande :** + +```bash +GET /?player=PLAYER&moa=json&tag=FILTER +``` + +#### 2. `DRAGONS.sh` + +Ce script est utilisé pour détecter les stations UPLANET en cours d'exécution et récupérer leurs coordonnées GPS. + +**Fonctionnalités Principales :** + +* **Détection des Stations** : Recherche des stations UPLANET en cours d'exécution et collecte leurs coordonnées GPS. +* **Retour des Données en JSON** : Retourne les données des stations détectées au format JSON. + +**Exemple de Commande :** + +```bash +GET /?dragons +``` + +#### 3. `ZONE.sh` + +Ce script est utilisé pour rechercher les numéros de TW dans une zone géographique spécifiée. + +**Fonctionnalités Principales :** + +* **Détection des TW dans une Zone** : Recherche les numéros de TW dans une zone géographique spécifiée par des coordonnées de latitude et de longitude. +* **Retour des Données en JSON** : Retourne les données des TW trouvés au format JSON. + +**Exemple de Commande :** + +```bash +GET /?zone=DEG&ulat=LAT&ulon=LON +``` + +#### 4. `UPLANET.sh` + +Ce script est dédié aux applications OSM2IPFS et UPlanet Client App. Il gère les atterrissages UPLANET et la création de ZenCards et AstroIDs. + +**Fonctionnalités Principales :** + +* **Gestion des Atterrissages UPLANET** : Vérifie et enregistre les coordonnées géographiques des joueurs. +* **Création de ZenCards et AstroIDs** : Génère des ZenCards et des AstroIDs pour les joueurs. + +**Exemple de Commande :** + +```bash +GET /?uplanet=EMAIL&zlat=LAT&zlon=LON&g1pub=PASS +``` + +#### 5. `QRCODE.sh` + +Ce script gère les opérations liées aux QR codes, y compris les redirections HTTP et les opérations multi-clés. + +**Fonctionnalités Principales :** + +* **Redirection HTTP** : Redirige les liens HTTP encodés dans les QR codes. +* **Opérations Multi-Clés** : Gère les opérations liées aux clés PGP, G1Milgram, et autres. + +**Exemple de Commande :** + +```bash +GET /?qrcode=URLENCODEDSTRING&logo=IMAGE +``` + +#### 6. `SALT.sh` + +Ce script gère les opérations d'authentification par clé privée en utilisant les paramètres `salt` et `pepper`. + +**Fonctionnalités Principales :** + +* **Génération de Clés** : Génère des clés à partir des paramètres `salt` et `pepper`. +* **Messagerie** : Extrait les messages de Gchange+ pour un utilisateur donné. + +**Exemple de Commande :** + +```bash +GET /?salt=SALT&pepper=PEPPER&APPNAME=messaging +``` + +#### diff --git a/api/player.sh.md b/api/player.sh.md new file mode 100644 index 00000000..169a13e1 --- /dev/null +++ b/api/player.sh.md @@ -0,0 +1,116 @@ +# PLAYER.sh + +Le script `PLAYER.sh` dans le répertoire `/API` de l'écosystème Astroport.ONE est conçu pour gérer les interactions avec les joueurs, en particulier les opérations liées aux TiddlyWikis (TW) des joueurs. + +Il permet d'exporter des tiddlers spécifiques, de gérer les passes (fonctionnalité désactivée), et d'ajouter des médias au TiddlyWiki des joueurs (fonctionnalité désactivée). Le script utilise des requêtes HTTP pour communiquer avec les clients et renvoie les données sous forme de JSON. + + + + Voici une analyse détaillée de son fonctionnement : + +#### Fonctionnalités Principales + +1. **Initialisation et Configuration** : + * Le script commence par définir le chemin du script (`MY_PATH`) et le normalise pour obtenir un chemin absolu. + * Il source un fichier de configuration commun (`my.sh`) pour utiliser des fonctions et des variables partagées. + * Il initialise les variables nécessaires à partir des arguments passés au script. +2. **Gestion des Requêtes HTTP** : + * Le script prépare une réponse HTTP avec les en-têtes appropriés pour permettre les requêtes CORS (Cross-Origin Resource Sharing). +3. **Exportation de Tiddlers** : + * Si le paramètre `APPNAME` est `moa`, le script exporte les tiddlers spécifiques tagués avec un certain mot-clé (`WHAT`). + * Il utilise TiddlyWiki pour charger le fichier `index.html` du joueur et exporter les tiddlers dans un fichier JSON. + * La réponse est envoyée au client sous forme de JSON. +4. **Gestion des @PASS** : + * (Commenté) Le script contient une section pour la création de passes pour les joueurs, mais cette fonctionnalité est désactivée. +5. **Ajout de Médias** : + * (Commenté) Le script contient une section pour l'ajout de vidéos YouTube, PDF, ou images au TW du joueur, mais cette fonctionnalité est désactivée. + +#### Étapes du Script + +1. **Définition des Variables et Chemins** : + + ```bash + MY_PATH="`dirname \"$0\"`" + MY_PATH="`( cd \"$MY_PATH\" && pwd )`" + . "${MY_PATH}/../tools/my.sh" + start=`date +%s` + PORT=$1 + PLAYER=$2 + APPNAME=$3 + OBJ=$5 + HTTPCORS="HTTP/1.1 200 OK Access-Control-Allow-Origin: ${myASTROPORT} Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: GET Server: Astroport.ONE Content-Type: text/html; charset=UTF-8 " + ``` +2. **Vérification du Joueur** : + + * Le script vérifie si le joueur (`PLAYER`) est fourni et valide. + * Il récupère l'adresse IPNS de l'astronaute (`ASTRONAUTENS`) associée au joueur. + + ```bash + [[ ! ${PLAYER} ]] && (echo "${HTTPCORS} BAD PLAYER - EXIT" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1 + ASTRONAUTENS=$(ipfs key list -l | grep -w ${PLAYER} | cut -d ' ' -f1) + [[ ! ${ASTRONAUTENS} ]] && (echo "${HTTPCORS} UNKNOWN PLAYER ${PLAYER} - EXIT" | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &) && exit 1 + ``` +3. **Exportation de Tiddlers** : + + * Si `APPNAME` est `moa`, le script exporte les tiddlers tagués avec `WHAT` (par défaut `G1CopierYoutube`). + * Il utilise TiddlyWiki pour charger le fichier `index.html` du joueur et exporter les tiddlers dans un fichier JSON. + * La réponse est envoyée au client sous forme de JSON. + + ```bash + if [[ ${APPNAME} == "moa" ]]; then + [[ ! ${WHAT} ]] && WHAT="G1CopierYoutube" + echo "EXPORT MOATUBE ${PLAYER} ${WHAT}" + tiddlywiki --load ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html --output ~/.zen/tmp/ --render '.' "${PLAYER}.moatube.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "[tag[${WHAT}]]" + if [[ ! ${THIS} || ${THIS} == "json" ]]; then + echo "${HTTPCORS}" > ~/.zen/tmp/${MOATS}.${PLAYER}.http + sed -i "s~text/html~application/json~g" ~/.zen/tmp/${MOATS}.${PLAYER}.http + cat ~/.zen/tmp/${PLAYER}.moatube.json >> ~/.zen/tmp/${MOATS}.${PLAYER}.http + cat ~/.zen/tmp/${MOATS}.${PLAYER}.http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 & + fi + end=`date +%s` + echo "(TW) MOA Operation time was "`expr $end - $start` seconds. + exit 0 + fi + ``` +4. **Gestion des @PASS** : + + * (Commenté) Le script contient une section pour la création de passes pour les joueurs, mais cette fonctionnalité est désactivée. + + ```bash + #~ if [[ ${APPNAME} == "atpass" ]]; then + #~ echo "CREATING @PASS" + #~ end=`date +%s` + #~ echo "(@PASS) creation time was "`expr $end - $start` seconds. + #~ exit 0 + #~ fi + ``` +5. **Ajout de Médias** : + + * (Commenté) Le script contient une section pour l'ajout de vidéos YouTube, PDF, ou images au TW du joueur, mais cette fonctionnalité est désactivée. + + ```bash + #~ if [[ ${APPNAME} == "youtube" || ${APPNAME} == "pdf" || ${APPNAME} == "image" ]]; then + #~ APPNAME=$(echo ${APPNAME} | sed -r 's/\<./\U&/g' | sed 's/ //g') ## First letter Capital + #~ [[ ! ${THIS} ]] && THIS="https://www.youtube.com/watch?v=BCl2-0HBJ2c" + #~ echo ">>> COPY ${APPNAME} for ${PLAYER} from ${THIS}" + #~ G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub) + #~ [[ ! ${G1PUB} ]] && espeak "NOT MY PLAYER " && echo "${PLAYER} IS NOT MY PLAYER" && exit 1 + #~ echo "================================================" + #~ echo "${PLAYER} : ${myIPFS}/ipns/${ASTRONAUTENS}" + #~ echo " = /ipfs/${TW}" + #~ echo "================================================" + #~ ${MY_PATH}/../ajouter_media.sh "${THIS}" "${PLAYER}" "${APPNAME}" & + #~ echo "${HTTPCORS}" > ~/.zen/tmp/${MOATS}.${PLAYER}.http + #~ echo "${myIPFS}/ipns/${ASTRONAUTENS}" >> ~/.zen/tmp/${MOATS}.${PLAYER}.http + #~ ( + #~ cat ~/.zen/tmp/${MOATS}.${PLAYER}.http | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 + #~ rm ~/.zen/tmp/${MOATS}.${PLAYER}.http + #~ ) & + #~ # ### REFRESH CHANNEL COPY + #~ end=`date +%s` + #~ echo "(TW) MOA Operation time was "`expr $end - $start` seconds. + #~ exit 0 + #~ fi + ``` + +#### diff --git a/api/qrcode.sh.md b/api/qrcode.sh.md new file mode 100644 index 00000000..1926a9ba --- /dev/null +++ b/api/qrcode.sh.md @@ -0,0 +1,140 @@ +# QRCODE.sh + +*** + +L'API `QRCODE` permet de gérer diverses opérations liées aux QR codes, y compris la redirection de liens, la gestion des clés IPNS, et l'interaction avec des chaînes de blocs comme G1. Voici les détails sur les différentes fonctionnalités de cette API. + +#### Fonctionnement Général + +L'API `QRCODE` est accessible via des requêtes HTTP GET. Les paramètres de la requête déterminent l'action spécifique à effectuer. Voici les principales fonctionnalités : + +#### Redirection de Liens Web + +Si le QR code contient un lien HTTP, l'API redirige simplement vers ce lien. + +**Exemple de requête :** + +```http +GET /?qrcode=http://example.com +``` + +**Réponse :** + +```http +HTTP/1.1 302 Found +Location: http://example.com +``` + +#### Gestion des Stations + +Pour rafraîchir une station et ouvrir l'interface G1PalPay, utilisez le paramètre `station`. + +**Exemple de requête :** + +```http +GET /?qrcode=station +``` + +**Réponse :** + +```http +HTTP/1.1 302 Found +Location: http:// +``` + +#### QR Code PGP Encrypté + +Pour gérer un QR code contenant un message PGP encrypté, utilisez le paramètre `pass` pour fournir la phrase de passe. + +**Exemple de requête :** + +```http +GET /?qrcode=-----BEGIN%20PGP%20MESSAGE-----~~jA0ECQMC5iq8...&pass=coucou +``` + +**Réponse :** + +```http +HTTP/1.1 200 OK +Content-Type: text/html +... +``` + +#### Mode G1Voeu + +Pour retourner l'adresse IPNS d'un souhait (voeu) ou un lien direct vers un tag spécifique dans TiddlyWiki. + +**Exemple de requête :** + +```http +GET /?qrcode=G1Tag&tw=_IPNS_PLAYER_&json +``` + +**Réponse :** + +```http +HTTP/1.1 200 OK +Content-Type: application/json +... +``` + +#### Conversion d'Adresse IPNS + +Pour convertir une adresse IPNS en lien G1 ou vice versa. + +**Exemple de requête :** + +```http +GET /?qrcode=12D3Koo...&getipns=on +``` + +**Réponse :** + +```http +HTTP/1.1 200 OK +Content-Type: text/html +... +``` + +#### Paramètres + +| Paramètre | Type | Description | +| --------- | -------- | ------------------------------------------------------------- | +| `qrcode` | `string` | **Requis**. Le contenu du QR code | +| `pass` | `string` | **Optionnel**. Phrase de passe pour déchiffrer le message PGP | +| `getipns` | `string` | **Optionnel**. Convertir une adresse IPNS | +| `tw` | `string` | **Optionnel**. Adresse IPNS de TiddlyWiki | +| `json` | `string` | **Optionnel**. Retourner le résultat en format JSON | + +#### Exemples d'Utilisation + +**Redirection de Lien Web** + +```http +GET /?qrcode=http://example.com +``` + +**Rafraîchir une Station** + +```http +GET /?qrcode=station +``` + +**QR Code PGP Encrypté** + +```http +GET /?qrcode=-----BEGIN%20PGP%20MESSAGE-----~~jA0ECQMC5iq8...&pass=coucou +``` + +**Mode G1Voeu** + +```http +GET /?qrcode=G1Tag&tw=_IPNS_PLAYER_&json +``` + +**Conversion d'Adresse IPNS** + +```http +GET /?qrcode=12D3Koo...&getipns=on +``` +