You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ncdns/ncdumpzone/ncdumpzone/ncdumpzone.go

68 lines
1.9 KiB
Go

package main
import (
"os"
"github.com/hlandau/xlog"
"github.com/namecoin/btcd/rpcclient"
"gopkg.in/hlandau/easyconfig.v1"
"gopkg.in/hlandau/easyconfig.v1/cflag"
"github.com/namecoin/ncdns/namecoin"
"github.com/namecoin/ncdns/ncdumpzone"
)
var log, _ = xlog.New("ncdumpzone-main")
var (
flagGroup = cflag.NewGroup(nil, "ncdumpzone")
rpchostFlag = cflag.String(flagGroup, "namecoinrpcaddress",
"127.0.0.1:8336", "Namecoin RPC host:port")
rpcuserFlag = cflag.String(flagGroup, "namecoinrpcusername", "",
"Namecoin RPC username")
rpcpassFlag = cflag.String(flagGroup, "namecoinrpcpassword", "",
"Namecoin RPC password")
rpccookiepathFlag = cflag.String(flagGroup, "namecoinrpccookiepath", "",
"Namecoin RPC cookie path (used if password is unspecified)")
formatFlag = cflag.String(flagGroup, "format", "zonefile", "Output "+
"format. \"zonefile\" = DNS zone file. "+
"\"firefox-override\" = Firefox cert_override.txt format. "+
"\"url-list\" = URL list.")
)
var conn *namecoin.Client
var config = easyconfig.Configurator{
ProgramName: "ncdumpzone",
}
func main() {
err := config.Parse(nil)
if err != nil {
log.Fatalf("Couldn't parse configuration: %s", err)
}
// Connect to local namecoin core RPC server using HTTP POST mode.
connCfg := &rpcclient.ConnConfig{
Host: rpchostFlag.Value(),
User: rpcuserFlag.Value(),
Pass: rpcpassFlag.Value(),
CookiePath: rpccookiepathFlag.Value(),
HTTPPostMode: true, // Namecoin core only supports HTTP POST mode
DisableTLS: true, // Namecoin core does not provide TLS by default
}
// Notice the notification parameter is nil since notifications are
// not supported in HTTP POST mode.
conn, err = namecoin.New(connCfg, nil)
if err != nil {
log.Fatalf("Couldn't create RPC client: %s", err)
}
defer conn.Shutdown()
err = ncdumpzone.Dump(conn, os.Stdout, formatFlag.Value())
if err != nil {
log.Fatalf("Couldn't dump zone: %s", err)
}
}