/
main.go
65 lines (55 loc) · 1.59 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package main
import (
"flag"
"github.com/conformal/btcrpcclient"
"github.com/conformal/btcutil"
"github.com/conformal/btcwire"
"io/ioutil"
"log"
"net/http"
"path/filepath"
"strconv"
)
var address = flag.String("address", ":8080", "Websocket listen address")
var rpcHost = flag.String("rpchost", "localhost:8334", "Hostname for RPC Server")
var rpcUser = flag.String("rpcuser", "", "Username for RPC access")
var rpcPass = flag.String("rpcpass", "", "Password for RPC access")
var rpcCert = flag.String("rpccert", "", "Certificate for RPC access")
func main() {
flag.Parse()
ntfnHandlers := btcrpcclient.NotificationHandlers{
OnTxAccepted: func(hash *btcwire.ShaHash, amount btcutil.Amount) {
h.broadcast <- []byte(strconv.FormatFloat(amount.ToUnit(0), 'f', -1, 64))
log.Printf("Tx Accepted: %v (%s)", hash, amount.String())
},
}
var certFile string
if *rpcCert != "" {
certFile = *rpcCert
} else {
btcdHomeDir := btcutil.AppDataDir("btcd", false)
filepath.Join(btcdHomeDir, "rpc.cert")
certFile = filepath.Join(btcdHomeDir, "rpc.cert")
}
certs, _ := ioutil.ReadFile(certFile)
connCfg := &btcrpcclient.ConnConfig{
Host: *rpcHost,
Endpoint: "ws",
User: *rpcUser,
Pass: *rpcPass,
Certificates: certs,
}
// Connect to btcd server
client, err := btcrpcclient.New(connCfg, &ntfnHandlers)
if err != nil {
log.Fatal(err)
}
client.NotifyNewTransactions(false)
// Start Websocket server
go h.run()
http.HandleFunc("/", serveWs)
err = http.ListenAndServe(*address, nil)
if err != nil {
log.Fatal("Error starting http listener: ", err)
}
}