<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">Ho scritto di più sull'argomento qui:<br>
<a class="moz-txt-link-freetext" href="http://nemesisdesign.net/blog/coding/netjsonconfig-convert-netjson-to-openwrt-uci/">http://nemesisdesign.net/blog/coding/netjsonconfig-convert-netjson-to-openwrt-uci/</a><br>
<br>
Nemesis<br>
<br>
<br>
On 09/18/2015 07:13 PM, Nemesis wrote:<br>
</div>
<blockquote cite="mid:55FC4648.2000600@ninux.org" type="cite">
<meta http-equiv="content-type" content="text/html;
charset=windows-1252">
<font face="Helvetica, Arial, sans-serif"><font face="Helvetica,
Arial, sans-serif">A lavoro sto scrivendo u<font
face="Helvetica, Arial, sans-serif">n <font
face="Helvetica, Arial, sans-serif">tool per convertire
NetJSON a UCI che mi aiuterà a mandare in pensione
OpenWISP Manager.<br>
<br>
<font face="Helvetica, Arial, sans-serif">La libreria si
chiama <a moz-do-not-send="true"
href="https://github.com/openwisp/netjsonconfig">netjsonconfig</a>.</font><br>
<br>
<font face="Helvetica, Arial, sans-serif">L'obiettivo
finale è </font>poter salvare la configu<font
face="Helvetica, Arial, sans-serif">razione dei device
in <font face="Helvetica, Arial, sans-serif">un unico
campo JSON<font face="Helvetica, Arial, sans-serif">
invece che 3<font face="Helvetica, Arial,
sans-serif">mila tabelle SQL tutte intrecciate.<br>
<br>
<font face="Helvetica, Arial, sans-serif"><font
face="Helvetica, Arial, sans-serif">Sto
ottenendo risultati in<font face="Helvetica,
Arial, sans-serif">coraggianti, ad esempio,
questo NetJSON:<br>
</font></font></font></font></font></font></font></font></font></font></font><br>
<meta http-equiv="content-type" content="text/html;
charset=windows-1252">
{<br>
"type": "DeviceConfiguration",<br>
"interfaces": [<br>
{<br>
"name": "wlan0",<br>
"type": "wireless",<br>
"addresses": [<br>
{<br>
"address": "192.168.1.1",<br>
"mask": 24,<br>
"proto": "static",<br>
"family": "ipv4"<br>
}<br>
],<br>
"wireless": {<br>
"radio": "radio0",<br>
"mode": "access_point",<br>
"ssid": "MyWifiAP",<br>
"hidden": True<br>
}<br>
}<br>
],<br>
"radios": [<br>
{<br>
"name": "radio0",<br>
"phy": "phy0",<br>
"driver": "mac80211",<br>
"protocol": "802.11n",<br>
"channel": 3,<br>
"channel_width": 20,<br>
"tx_power": 3<br>
}<br>
]<br>
}<br>
<br>
Diventa:<br>
<blockquote>package network<br>
<br>
config interface 'wlan0'<br>
option ifname 'wlan0'<br>
option ipaddr '192.168.1.1/24'<br>
option proto 'static'<br>
<br>
package wireless<br>
<br>
config wifi-device 'radio0'<br>
option channel '3'<br>
option htmode 'HT20'<br>
option hwmode '11g'<br>
option phy 'phy0'<br>
option txpower '3'<br>
option type 'mac80211'<br>
<br>
config wifi-iface<br>
option device 'radio0'<br>
option hidden '1'<br>
option mode 'ap'<br>
option network 'wlan0'<br>
option ssid 'MyWifiAP'<br>
</blockquote>
Qui c'è il codice del test, se ci buttate un occhio dovreste
capire facilmente cosa succede, è molto leggibile:<br>
<a moz-do-not-send="true" class="moz-txt-link-freetext"
href="https://github.com/openwisp/netjsonconfig/blob/master/tests/test_openwrt.py#L625-L684">https://github.com/openwisp/netjsonconfig/blob/master/tests/test_openwrt.py#L625-L684</a><br>
<br>
Per svilupparla sto seguendo la <a moz-do-not-send="true"
href="http://wiki.openwrt.org/doc/uci">documentazione di UCI</a>
e sto imparando una marea di cose!<br>
<br>
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<br>
<br>
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.<br>
<br>
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.<br>
<br>
Nemesis<br>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
ninux-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:ninux-dev@ml.ninux.org">ninux-dev@ml.ninux.org</a>
<a class="moz-txt-link-freetext" href="http://ml.ninux.org/mailman/listinfo/ninux-dev">http://ml.ninux.org/mailman/listinfo/ninux-dev</a>
</pre>
</blockquote>
<br>
</body>
</html>