gnunet-developers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From: Bernd Fix
Subject: Milestone 4 reached (Go implementation, "NLnet 2019-02-022 - "GNS")
Date: Sat, 22 Oct 2022 16:16:49 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0

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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]