[ninux-dev] Convertire NetJSON a UCI

Nemesis nemesis at ninux.org
Tue Oct 6 18:02:51 CEST 2015


Ho scritto di più sull'argomento qui:
http://nemesisdesign.net/blog/coding/netjsonconfig-convert-netjson-to-openwrt-uci/

Nemesis


On 09/18/2015 07:13 PM, Nemesis wrote:
> A lavoro sto scrivendo un tool per convertire NetJSON a UCI che mi
> aiuterà a mandare in pensione OpenWISP Manager.
>
> La libreria si chiama netjsonconfig
> <https://github.com/openwisp/netjsonconfig>.
>
> L'obiettivo finale è poter salvare la configurazione dei device in un
> unico campo JSONinvece che 3mila tabelle SQL tutte intrecciate.
>
> Sto ottenendo risultati incoraggianti, ad esempio, questo NetJSON:
>
>         {
>             "type": "DeviceConfiguration",
>             "interfaces": [
>                 {
>                     "name": "wlan0",
>                     "type": "wireless",
>                     "addresses": [
>                         {
>                             "address": "192.168.1.1",
>                             "mask": 24,
>                             "proto": "static",
>                             "family": "ipv4"
>                         }
>                     ],
>                     "wireless": {
>                         "radio": "radio0",
>                         "mode": "access_point",
>                         "ssid": "MyWifiAP",
>                         "hidden": True
>                     }
>                 }
>             ],
>             "radios": [
>                 {
>                     "name": "radio0",
>                     "phy": "phy0",
>                     "driver": "mac80211",
>                     "protocol": "802.11n",
>                     "channel": 3,
>                     "channel_width": 20,
>                     "tx_power": 3
>                 }
>             ]
>         }
>
> Diventa:
>
>     package network
>
>     config interface 'wlan0'
>         option ifname 'wlan0'
>         option ipaddr '192.168.1.1/24'
>         option proto 'static'
>
>     package wireless
>
>     config wifi-device 'radio0'
>         option channel '3'
>         option htmode 'HT20'
>         option hwmode '11g'
>         option phy 'phy0'
>         option txpower '3'
>         option type 'mac80211'
>
>     config wifi-iface
>         option device 'radio0'
>         option hidden '1'
>         option mode 'ap'
>         option network 'wlan0'
>         option ssid 'MyWifiAP'
>
> Qui c'è il codice del test, se ci buttate un occhio dovreste capire
> facilmente cosa succede, è molto leggibile:
> https://github.com/openwisp/netjsonconfig/blob/master/tests/test_openwrt.py#L625-L684
>
> Per svilupparla sto seguendo la documentazione di UCI
> <http://wiki.openwrt.org/doc/uci> e sto imparando una marea di cose!
>
> Ogni tanto provo le config generate su un routerino e pare che
> funzionano, ma sicuramente quando si andrà a regime ne scoprirò delle
> belle ... :-D
>
> Cmq la buona notizia in tutto questo è che lo strumento finale che
> uscirà fuori da tutto questo lavoro lo potremo utilizzare anche in
> ninux, ogni isola, gruppo o individuo potrebbe farsi il suo
> configuratore con i suoi template ecc.
>
> L'altra buona notizia è che l'architettura della libreria permette di
> aggiungere il supporto a più firmware creando nuovi backend. Quindi si
> possono potenzialmente scrivere backend per versioni customizzate di
> OpenWRT, DDWRT, Libremesh o addirittura AirOS (che ha un file di
> configurazione che non è molto lontano da quello che esce fuori
> facendo "uci show" su OpenWRT), l'importante è che il backend avrà
> come output una configurazione installabile.
>
> Nemesis
>
>
> _______________________________________________
> ninux-dev mailing list
> ninux-dev at ml.ninux.org
> http://ml.ninux.org/mailman/listinfo/ninux-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ml.ninux.org/pipermail/ninux-dev/attachments/20151006/a0b8732d/attachment-0001.html>


More information about the ninux-dev mailing list