hacf-fr / freebox-api

Manage your freebox in Python using the Freebox OS API
https://readthedocs.org/projects/freebox-api/
GNU General Public License v3.0
31 stars 17 forks source link

Manque de permissions #639

Closed theogiraudet closed 2 months ago

theogiraudet commented 2 months ago

Bonjour ! Tout d'abord, merci pour cette library ! Je souhaiterais pouvoir contrôler la création de Wifi Guest par le biais d'un programme Python. Malheureusement, je me retrouve face à un manque de permission :

freebox_api.exceptions.InsufficientPermissionsError: Request failed (APIResponse: {"uid": "d2eb11f7e98cae2e405f957a2c394320", "success": false, "missing_right": "settings", "msg": "Cette application n'est pas autoris\u00e9e \u00e0 acc\u00e9der \u00e0 cette fonction", "result": {"password_salt": "..."}, "error_code": "insufficient_rights"})
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x0000020ADCE86AE0>
Unclosed connector
connections: ['[(<aiohttp.client_proto.ResponseHandler object at 0x0000020ADD9B22D0>, 45365.89)]']
connector: <aiohttp.connector.TCPConnector object at 0x0000020ADD6AC4A0>

J'ai parcouru un peu la documentation de la Freebox, mais je ne vois rien concernant ces dites permissions autrement que, à la création de l'app token, on se voit conférer les permissions par défaut. Je n'ai pas non plus trouvé de moyen, par le biais de Freebox OS, de gérer les applications et leurs permissions. Il y a-t-il moyen de se donner les permissions en question ou mon petit projet tombe à l'eau ?

Voici mon code actuel :

async def main():
    freebox = Freepybox(app_desc, "conf.json")
    await freebox.open('m2txrwtz.fbxos.fr', 2816)
    keys = await freebox.wifi.get_wifi_custom_keys()
    password = None
    for key in keys:
        if key['params']['description'] == "generated":
            password = key['params']['key']

    if password is not None:
        if not exists("qrcode.png"):
            generate_qrcode(password)
    else:
        passphrase = generate_passphrase(5)
        print(passphrase)
        await freebox.wifi.create_wifi_custom_key({
            "description": "generated",
            "key": passphrase,
            "max_use_count": 100,
            "duration": 604800,
            "access_type": "net_only"
        })
        generate_qrcode(passphrase)

    await freebox.close()

Merci par avance !

theogiraudet commented 2 months ago

Bon finalement j'ai trouvé ! Pour ceux que ça intéresse, on peut régler ça dans Freebox OS/Paramètres de la Freebox/Gestion des accès/Applications.