<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <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
                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=utf-8">
    Â Â Â Â Â Â Â  {<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 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
      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>
  </body>
</html>