Skip to main content

Freebox thin client

Project description

Freebox client library

Features

  • Full API coverage
  • Https and Mdns discovery
  • Thin client wrapper library (~250 lines)
  • CLI script example to access any command

pipeline status coverage report

Script

A script called pyfbx is installed and can be used like this:

To register the application:

$ pyfbx SuperAppId

Once registration is done on the device, write down the application token.

Using this app token, acquire a session token to execute a test command.

$ pyfbx -t '<TOKEN>' SuperAppId
$ pyfbx -t 'f:<TOKEN_FILE>' SuperAppId

You can run any commands on the freebox and retrieve complete result or single value

$ pyfbx -t f:/home/foo/token.txt SuperAppId -c 'Contacts.Create_a_contact(\
post_data={"display_name": "Sandy Kilo", "first_name": "Sandy", "last_name":"Kilo"})'
{   'birthday': '',
    'company': '',
    'display_name': 'Sandy Kilo',
    'first_name': 'Sandy',
    'id': 17,
    'last_name': 'Kilo',
    'last_update': 1554378898,
    'notes': '',
    'photo_url': ''}

$ pyfbx -t f:token.txt -u https://0s2efr3i.fbxos.fr:15628 id -c "Connection.Get_the_current_Connection_status()['rate_up']"
1700

Note : Don't forget to escape token and command with quotes.

The complete script help is:

pyfbx -h
usage: pyfbx [-h] [-c COMMAND] [-t TOKEN] [-v] [-n] [-u URL] app_id

positional arguments:
  app_id                application identifier

optional arguments:
  -h, --help            show this help message and exit
  -c COMMAND, --command COMMAND
                        command, defaults to
                        System.Get_the_current_system_info()
  -t TOKEN, --token TOKEN
                        token (or f:<filename>)
  -v, --verbose         increase verbosity to INFO, use twice for DEBUG
  -n, --http            Disable MDNS and use http known address
  -u URL, --url URL     specific url to query

Library usage

The REST API is generated at runtime with the creation of class attributes for all Freebox subsystems.

>>> from pyfbx import Fbx
>>> f=Fbx()             # By default, this will perform MDNS discovery
>>> f=Fbx(nomdns=True)  # Use faster http api discovery
>>> f.<TAB>
f.Airmedia         f.Download_Config  f.Lan              f.Rrd              f.Upnpav
f.Call             f.Download_Feeds   f.Lcd              f.Share            f.Vpn
f.Connection       f.Freeplug         f.Nat              f.Storage          f.Vpn_Client
f.Contacts         f.Fs               f.Network_Share    f.Switch           f.Wifi
f.Dhcp             f.Ftp              f.Parental         f.System           f.mksession(
f.Download         f.Igd              f.Pvr              f.Upload           f.register(
>>> f.Freeplug.<TAB>
f.Freeplug.Get_a_particular_Freeplug_information(
f.Freeplug.Reset_a_Freeplug(
f.Freeplug.Get_the_current_Freeplugs_networks(

# Register application to get app token. Physical access is required.
>>> token = f.register("AppId", "My App", "PC")
# Generate session token
>>> f.mksession(app_id="AppId", token=token)

>>> help(f.Lan.Update_the_current_Lan_configuration)
Help on method Update_the_current_Lan_configuration:

Update_the_current_Lan_configuration(post_data) method of pyfbx.client.Lan instance
    Update the current Lan configuration

    Url parameters:
    Post data:PostData

>>> help(f.Contacts.Access_a_given_contact_entry)
Help on method Access_a_given_contact_entry:

Access_a_given_contact_entry(id) method of pyfbx.client.Contacts instance
    Access a given contact entry

    Url parameters: id
    Post data:

>>> f.Lan.Get_the_current_Lan_configuration()
{'name_dns': 'freebox-server', 'name': 'Freebox Server', 'name_mdns': 'Freebox-Server', 
'mode': 'router', 'name_netbios': 'Freebox_Server', 'ip': '192.168.1.254'}

# Any subsequent call to mksession will refresh the session token
>>> f.mksession()

Developpment

Testing

You can run tests with

pip3 install -r requirements-dev.txt
pytest tests

Currently to get 100% library coverage, a Freebox sitting on its default IP (192.168.1.254) is required.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

pyfbx-0.0.5rc0-py3.7.egg (67.7 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page