========================================= GNUnet-Go: Status report for Milestone #2 =========================================
I am happy to announce the completion of the 2nd milestone for the GNUnet-Go project. The objective was to implement recursive resolution of GNS names and to handle special GNS record types like PKEY, GNS2DNS, BOX and others. N.B.: This release is using the new GNUnet crypto for version 0.12 (in some ways GNUnet-Go triggered these changes) and is NOT COMPATIBLE with older versions of GNUnet. If you want to check out for yourself, here is how to do it on a Linux box: (1) A running GNUnet node: -------------------------- Something all of you should have already... ;) You should also have created a GNS zone with some names and records in it. (2) Install Go1.13 on you computer: ----------------------------------- Either install a binary version at https://golang.org/dl/ or compile from sources after cloning the repo https://github.com/golang/go. Make sure the required environment variables are setup correctly (check with 'set | grep "^GO"' for meaningful settings). (3) Install required dependencies: ---------------------------------- $ go get -u golang.org/x/crypto/... $ go get -u golang.org/x/text/... $ go get -u github.com/bfix/gospel/... $ go get -u github.com/miekg/dns/... (4) Clone the gnunet-go repository and compile: ----------------------------------------------- $ git clone https://gnunet.org/git/gnunet-go.git $ cd gnunet-go $ ./build.sh (5) Run the gnunet-go-gns service: ---------------------------------- * The executable 'gnunet-service-gns-go' is found in the bin/ folder; copy it anywhere you like - it does not have dependencies (statically linked). * Copy the file "<repo>/src/config/gnunet-config.json" to the folder you want to use as the working directory for the service. This is the config file for Go-based GNUnet services. You can look at it (it is very small at the moment), but there should be no need to change something. * Start the service from the working directory; it will create a new socket 'gnunet-service-gns-go.sock' for message exchange (requests). The service will run as a foreground process and output log messages directly to the console (best to run it in a separate screen). * Create a small new GNUnet config file to tell GNUnet utilities which GNS socket to use; we want them to use our new socket. Easiest is to copy the existing gnunet.conf to gnunet-go.conf and add the following entry: [gns] UNIXPATH=/tmp/gnunet-system-runtime/gnunet-service-gns-go.sock Don't change the master gnunet.conf as it will for sure break your existing GNUnet node! * Do recursive name resolution with the Go-based GNS service, for example: $ gnunet-gns -t TLSA -u _443._tcp.myweb.myzone -c gnunet-go.conf The next milestone will handle revocation of zone keys: the GNS service will check for non-revoked PKEYs during resolution and GNUnet-Go will get its second service implementation (REVOCATION). Cheers, Bernd. P.S.: Please let me know if you are are testing GNUnet-Go and have problems, suggestions or errors. Feedback is appreciated! >Y<
