Lite wallet server
https://hush.is
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.8 KiB
54 lines
1.8 KiB
// Copyright (c) 2019-2024 Duke Leto and The Hush developers
|
|
// Copyright (c) 2019-2020 The Zcash developers
|
|
// Distributed under the GPLv3 software license
|
|
package frontend
|
|
|
|
import (
|
|
"net"
|
|
|
|
"git.hush.is/hush/lightwalletd/common"
|
|
"github.com/btcsuite/btcd/rpcclient"
|
|
"github.com/pkg/errors"
|
|
ini "gopkg.in/ini.v1"
|
|
)
|
|
|
|
func NewZRPCFromConf(confPath string) (*rpcclient.Client, error) {
|
|
cfg, err := ini.Load(confPath)
|
|
if err != nil {
|
|
return nil, errors.Wrap(err, "failed to read config file")
|
|
}
|
|
|
|
rpcaddr := cfg.Section("").Key("rpcbind").String()
|
|
rpcport := cfg.Section("").Key("rpcport").String()
|
|
username := cfg.Section("").Key("rpcuser").String()
|
|
password := cfg.Section("").Key("rpcpassword").String()
|
|
|
|
return NewZRPCFromCreds(net.JoinHostPort(rpcaddr, rpcport), username, password)
|
|
}
|
|
|
|
// NewZRPCFromFlags gets hushd rpc connection information from provided flags.
|
|
func NewZRPCFromFlags(opts *common.Options) (*rpcclient.Client, error) {
|
|
// Connect to local Hush RPC server using HTTP POST mode.
|
|
connCfg := &rpcclient.ConnConfig{
|
|
Host: net.JoinHostPort(opts.RPCHost, opts.RPCPort),
|
|
User: opts.RPCUser,
|
|
Pass: opts.RPCPassword,
|
|
HTTPPostMode: true, // Hush only supports HTTP POST mode
|
|
DisableTLS: true, // Hush does not provide TLS by default
|
|
}
|
|
return rpcclient.New(connCfg, nil)
|
|
}
|
|
|
|
func NewZRPCFromCreds(addr, username, password string) (*rpcclient.Client, error) {
|
|
// Connect to local hush RPC server using HTTP POST mode.
|
|
connCfg := &rpcclient.ConnConfig{
|
|
Host: addr,
|
|
User: username,
|
|
Pass: password,
|
|
HTTPPostMode: true, // Hush only supports HTTP POST mode
|
|
DisableTLS: true, // Hush does not provide TLS by default
|
|
}
|
|
// Notice the notification parameter is nil since notifications are
|
|
// not supported in HTTP POST mode.
|
|
return rpcclient.New(connCfg, nil)
|
|
}
|
|
|