Freebox Server (Pop V8/ Delta V7 / Revolution V6 / Server Mini 4K)

  • État En cours de résolution
  • Type de tâche Autre
  • Catégorie Freebox OS → API
  • Assignée à Romain FLIEDEL (rfliedel)
  • Système d'exploitation Freebox Server V7 (Delta)
  • Sévérité Basse
  • Priorité Normale
  • Basée sur la version 4.1.5
  • Due pour la version Non décidé
  • Date d'échéance Non décidé

FS#29900 - Utilisation des api

Bonjour,

j’explore actuellement l’utilisation des api freebox, je constate que la doc n’est pas à jours, il y est fait mention de la v5 des api, quand je fait une requete mDNS je constate que les api sont en fait en V7.

Il est fait mention de websocket dans cette doc, il n’est pas fait mention de l’url pour les utiliser, et de fait j’ai essayer tout ce qu’il me passait par la tête et rien n’a fonctionner.

Ma demande consiste donc a avoir la doc à jour, et dans l’intervalle je ne serais pas contre un p’tit exemple d’utilisation des websockets ou au moins l’url du endpoint.

Cette tache ne dépend pas d'autre tache

Neustradamus (Neustradamus_)
mercredi 20 janvier, 2021 23:45:51

Actuellement le SDK n'est pas à jour...

Il faudrait aussi faire une mise à jour de :
- https://dev.freebox.fr/sdk/
- https://dev.freebox.fr/sdk/os/

nicolas nba (nbanba)
mardi 3 mai, 2022 16:36:56

Bonjour

Avez vous trouvé ?

Cordialement
nbanba

nicolas nba (nbanba)
vendredi 6 mai, 2022 21:23:12

Bonjour

Les websocket ont étés documentés dans l API à partir de la version 8.2

Des exemples supplémentaires dans la doc seraient bienvenus

Avec la doc (je ne suis pas développeur), j ai réussi a faire un script en bash qui utilise les API pour faire les actions suivantes sur les VM:
- shutdown (acpi)
- stop (force)
- start
- restart
- liste / status des VM
- lance la console (avec les websocket api)

Donc si vous cherchez toujours à utiliser les websocket, je peux vous passer et vous expliquer le script. C est très basique mais ca m a permis de comprendre comment ça fonctionne sur la Freebox delta.

Cordialement
nbanba

Starli0n (Starli0n)
mercredi 21 septembre, 2022 00:08:15

Bonjour,

Je serai intéressé par votre script pour une connexion en websocket @nbanba.

Pouvez-vous me partager le code ?

Cordialement

nicolas nba (nbanba)
mercredi 21 septembre, 2022 09:36:52

Bonjour

@Starli0n : vous trouverez le code ici :
https://github.com/nbanb https://github.com/nbanb

Les projets les plus intéressants sont :

la librairy : fbx-delta-nba_bash_api.sh
le programme de contrôle des VM : fbxvm-ctrl

Le programme ne fonctionne pas sans la librairy. Il faut aussi télécharger le binaire (ou build les sources) du client websocat, les instructions sont dans le changelog de la librairy.
Mais si vous voulez, j'ai déjà build 2 versions de websocat (arm64 et amd64) incluant une fonction qui n'est pas dans la main branche du dépot github de websocat et permettant de gérér l'interruption de la session quand le terminal (stty) est en mode "raw" sans utiliser de programmes externes comme "dtach" ou "screen" (Vitaly Shukela le développeur de websocat à release cette fonction pour le use case précis de l'accès à la console des VM Freebox).
Je peux vous fournir les binaires compilés ou le code et la procédure pour build (c'est du RUST)

Il y a d'autres projets dans le dépot GitHub (fbx-reboot, fbxvm-status) mais ils sont beaucoup moins avancés que le programme fbxvm-ctrl.
Je n'ai pas eu trop de temps cet été, mais je maintiendrai ces dépots GitHub tant que j'aurais une Freebox Delta et j'apporterai au fur et à mesure d'autres fonctionnalités

Voici l'help du script fbxvm-ctrl :

fbxvm-ctrl USE FREEBOX REST API TO MANAGE FREEBOX-DELTA VIRTUAL MACHINES

usage: ./fbxvm-ctrl list
usage: ./fbxvm-ctrl listdisk /path/to/freebox_VM/folder
usage: ./fbxvm-ctrl <verb> <object> <param>
usage: ./fbxvm-ctrl vmid <action> <param|mode(optionnal)>

- action = <start|shutdown(acpi)|stop(force)|restart|detail|modify|console>
- param  = <name=|vcpu=|memory=|disk_type=|disk_path=|...>
- mode   = ('console' only & optionnal) = <""|detached|screen>

VERB :   - add        : create virtual machine or create virtual machine disk 
         - del        : delete virtual machine or delete virtual machine disk 
         - resize     : resize virtual machine disk - disk-only 

ACTION : - start     : simply start VM
   	 - shutdown  : (acpi) send an ACPI shutdown command to VM
   	 - stop      : (force) set a PSU restart command to VM = electrical stop
   	 - restart   : simply restart VM 
   	 - detail    : print VM configuration detail (all parameters of Freebox API VM object)
   	 - modify    : modify VM parameter
   	 - console   : connect VM console

OBJECT : - vm        : freebox delta virtual machine 
         - disk      : freebox delta virtual machine disk

PARAM :  - name=                : name of this VM - VM-only (string, max 31 characters) 
         - vcpu=                : number of virtual CPUs to allocate to this VM - VM-only (integer)
  	 - memory=              : memory allocated to this VM in megabytes - VM-only (integer)
	 - disk_type=           : type of disk image, values : qcow2|raw - VM+disk (string)
  	 - disk_path=           : path to the hard disk image of this VM - VM+disk (string)
  	 - disk_size=           : hard disk final size in bytes (integer) - disk-only
  	 - disk_shrink=         : allow or not the disk to be shrink - disk-only (bool) DANGEROUS
  	 - cd_path=             : path to CDROM device ISO image - optional - VM-only (string) 
  	 - os=                  : VM OS: unknown|fedora|debian|ubuntu|freebsd|centos|jeedom|homebridge 
  	 - enable_screen=       : virtual screen using VNC websocket protocol - VM-only (bool) 
  	 - bind_usb_ports=      : syntax : bind_usb_ports='"usb-external-type-c","usb-external-type-a"' 
	 - enable_cloudinit=    : enable or not  passing data through cloudinit - VM-only (bool) 
  	 - cloudinit_hostname=  : when cloudinit is enabled: hostname (string, max 59 characters)
  	 - cloudinit_userdata=  : path to file containing user-data raw yaml (file max 32767 characters)

WARNING : when modifying VM, if you do not explicitly specify on the cmdline 'cloudinit_userdata=$val',
	  previous values for 'cloudinit_userdata' parameter will be reset to null ('') 

MODE ('console' only options) :
 	 - if <mode> is ommited, console is launched directly from terminal (basic mode)	
	 - if <mode> is "detached" console is launched detached from terminal (detached mode)	
	 - if <mode> is "screen" console is launched in a screen (alternative mode)	

---> "detached" and "screen" mode require you install "GNU dtach" or "GNU screen" programm

N'hésitez pas à me solliciter si vous avez besoin d'aide
Cordialement
nbanba

Starli0n (Starli0n)
mardi 27 septembre, 2022 15:21:30

Thank you @nbanba for your help

I am coding in Python and I trying to initiate a websocket connection to replace an API call.

Concretely, I want to check the lan connections activity on my freebox in websocket instead of api
ie: https://dev.freebox.fr/sdk/os/lan/#lan-browser

but I am not sure it is even possible, even though the documentation implies that it is possible:
https://dev.freebox.fr/sdk/os/# (WebSocket API)

Chargement...