Milestone 4 reached (Go implementation, "NLnet 2019-02-022 - "GNS")

Bernd Fix <[email protected]>
Newsgroups gmane.network.gnunet.devel
Message-ID <[email protected]>
Dear GNUnet community,

I am happy to announce the completion of milestones 4 (GNS Zonemaster)
for the "Go implementation of GNS" which is a NLnet-funded project
"GNS (2019-02-022)".

The source code is written for Go1.18+; it can be found in the GNUnet 
Repository at "https://git.gnunet.org/gnunet-go.git/" with tag "v0.1.36"
in the master branch.

The Zonemaster-Go implementation does not only implement the classic
GNUnet zonemaster, but also covers namestore and identity functionality
(not exposed over UDS in this version). It provides a browser GUI for
managing zones, labels and resource records.

To run zonemaster-go on your machine after compiling the code, you need
a configuration file like this (store it as zonemaster.json in your
working directory):

{
     "zonemaster": {
         "period": 300,
         "storage": {
             "mode": "sqlite3",
             "file": "/var/lib/gnunet/gns/zonemaster.db"
         },
         "gui": "127.0.0.1:8100"
     },
     "dht": {
         "service": {
             "socket": "/tmp/gnunet-system-runtime/gnunet-service-dht.sock"
         }
     },
     "gns": {
         "replLevel": 10
     },
     "namecache": {
         "service": {
             "socket": 
"/tmp/gnunet-system-runtime/gnunet-service-namecache.sock"
         }
     },
     "rpc": {
         "endpoint": "127.0.0.1:8066"
     },
     "logging": {
         "level": 5
     }
}

Most parameters are self-explaining (hopefully):

* "zonemaster.period" is the time in seconds between publishing resource
    records for all local GNS zones.

* "zonemaster.storage.file" is the name of the SQLite3 database (name
    and identity store). Make sure the user running zonemaster has write
    access to the file.

* "zonemaster.gui" is the listening address for the GUI (limiting access
   to the local machine). Point your browser to "http://127.0.0.1:8100/"
   to see the dashboard for the local zones and  start editing...

* "dht" and "namecache" specify which UDS to use to communicate with the
   classic DHT and Namecache services. The zonemaster is publishing GNS
   blocks of your local zones using these services.

* "rpc" is currently disabled (not implemented); it will provide a
   JSON-RPC for other programs (e.g. command-line tools mimiking
   "gnunet-namestore" or "gnunet-identity") to create or change local
   zones, labels and records or for higher-level applications to e.g.
   generate boxed TLSA or SRV resource records for themselves.

To start the zonemaster:

   $ $GOPATH/bin/zonemaster-go -c zonemaster.json

Make sure the user running zonemaster is member of the "gnunet" group.


Only a limited number of resource record types are currently implemented:

* record types defined in "https://lsd.gnunet.org/lsd0001/"

   * GNS_TYPE_PKEY      // PKEY zone delegation
   * GNS_TYPE_EDKEY     // EDKEY zone delegation
   * GNS_TYPE_REDIRECT  // GNS delegation by name
   * GNS_TYPE_GNS2DNS   // DNS delegation by name
   * GNS_TYPE_NICK      // Nick name
   * GNS_TYPE_LEHO      // Legacy hostname
   * GNS_TYPE_BOX       // Boxed resource record

* a few basic DNS resource records

   * GNS_TYPE_DNS_A     // IPv4 address
   * GNS_TYPE_DNS_AAAA  // IPv6 address
   * GNS_TYPE_DNS_CNAME // CNAME in DNS
   * GNS_TYPE_DNS_TXT   // DNS TXT
   * GNS_TYPE_DNS_MX    // Mailbox

I would be happy to hear from you which additional records are most
needed; I will add implementations for them in a future version.

Cheers, Bernd.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.