Put the ones I need right now in

This commit is contained in:
idk
2020-01-09 17:27:17 -05:00
parent a38102f705
commit 52e3e05c2c
9 changed files with 188 additions and 18 deletions

View File

View File

@ -1,18 +0,0 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
# go-i2pcontrol
An easy-to-use library for the i2pcontrol rpc interface.
Don't use it yet, it's not even a little done.
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCAAdFiEEcNIGBzi++AUjrK/311wDs5teFOEFAluZu+wACgkQ11wDs5te
FOHXYwgAsENgOMEXFpc/3hVPlm4A45f6OLrnapj2gcJGlTeYLnmCUqlc+vaKCUVd
K8yseQz4emd5g0ItnAasMtTVnSxAaN9F1Ngva+XzelxLKGoaItkFbA3+CPUrYQ3j
5Agq53VU5M2xwboO6gGi4NUHEUdhil8sQ5q6i/bGdeULzU2Fjh0C6xWBfieyGA42
ZscCMY9dATGYiU2eAB1cIUdss3Z8vy8WfP472ZfCCAgHo+VOH6hUDQ7nLy2yc1h0
qlaNUqpEhsfPnyOAR9pkdyTNLBCScs6tdpb4F0zxZ9SJPDVNjoPg4TYjHW1OMOE1
Usx1Osd0F5by7CG2sTRhh7QV4gnv8w==
=XdAP
-----END PGP SIGNATURE-----

76
auth.go
View File

@ -0,0 +1,76 @@
package i2pcontrol
import (
"crypto/tls"
"crypto/x509"
"github.com/ybbus/jsonrpc"
"io/ioutil"
"net/http"
)
var (
rpcClient jsonrpc.RPCClient
RPCOpts *jsonrpc.RPCClientOpts
token string
)
//
func Initialize(host, port, path string) {
RPCOpts = &jsonrpc.RPCClientOpts{
HTTPClient: &http.Client{
Transport: &http.Transport{
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true,
},
},
},
}
rpcClient = jsonrpc.NewClientWithOpts("http://"+host+":"+port+"/"+path+"/", RPCOpts)
}
func InitializeWithSelfSignedCert(host, port, path, cert string) error {
caCert, err := ioutil.ReadFile(cert)
if err != nil {
return err
}
caCertPool := x509.NewCertPool()
caCertPool.AppendCertsFromPEM(caCert)
RPCOpts = &jsonrpc.RPCClientOpts{
HTTPClient: &http.Client{
Transport: &http.Transport{
TLSClientConfig: &tls.Config{
RootCAs: caCertPool,
},
},
},
}
rpcClient = jsonrpc.NewClientWithOpts("http://"+host+":"+port+"/"+path+"/", RPCOpts)
return nil
}
func Call(method string, params interface{}) (map[string]interface{}, error) {
response, err := rpcClient.Call(method, params)
if err != nil {
return nil, err
}
if response.Error != nil {
return nil, response.Error
}
//var retv string
var retpre map[string]interface{}
err = response.GetObject(&retpre)
return retpre, nil
}
func Authenticate(password string) (int, error) {
retpre, err := Call("Authenticate", map[string]interface{}{
"API": 1,
"Password": "itoopie",
})
if err != nil {
return -1, err
}
token = retpre["Token"].(string)
version := int(retpre["API"].(float64))
return version, nil
}

View File

@ -0,0 +1,31 @@
package i2pcontrol
import (
//"log"
"testing"
)
func TestAuth(t *testing.T) {
Initialize("localhost", "7657", "jsonrpc")
result, err := Authenticate("itoopie")
if err != nil {
t.Fatal(err)
}
t.Log("Connected to API version 1:", result)
t.Log("Token for this testing session:", token)
echo, err := Echo("Hello I2PControl")
if err != nil {
t.Fatal(err)
}
t.Log(echo, "Is there an echo in here?")
update, err := FindUpdates()
if err != nil {
t.Fatal(err)
}
if update {
t.Log("Your I2P router needs an update")
} else {
t.Log("Your I2P router doesn't need an update")
}
}

View File

View File

View File

80
manager.go Normal file
View File

@ -0,0 +1,80 @@
package i2pcontrol
func Echo(echo string) (string, error) {
retpre, err := Call("Echo", map[string]interface{}{
"Echo": echo,
"Token": token,
})
if err != nil {
return "", err
}
result := retpre["Result"].(string)
return result, nil
}
func RestartGraceful() (string, error) {
_, err := Call("RouterManager", map[string]interface{}{
"RestartGraceful": nil,
"Token": token,
})
if err != nil {
return "", err
}
return "Graceful Restart Initiated", nil
}
func Restart() (string, error) {
_, err := Call("RouterManager", map[string]interface{}{
"Restart": nil,
"Token": token,
})
if err != nil {
return "", err
}
return "Restart Initiated", nil
}
func ShutdownGraceful() (string, error) {
_, err := Call("RouterManager", map[string]interface{}{
"ShutdownGraceful": nil,
"Token": token,
})
if err != nil {
return "", err
}
return "Graceful Shutdown Initiated", nil
}
func Shutdown() (string, error) {
_, err := Call("RouterManager", map[string]interface{}{
"Shutdown": nil,
"Token": token,
})
if err != nil {
return "", err
}
return "Shutdown Initiated", nil
}
func FindUpdates() (bool, error) {
retpre, err := Call("RouterManager", map[string]interface{}{
"FindUpdates": nil,
"Token": token,
})
if err != nil {
return false, err
}
result := retpre["FindUpdates"].(bool)
return result, nil
}
func Update() (string, error) {
_, err := Call("RouterManager", map[string]interface{}{
"Update": nil,
"Token": token,
})
if err != nil {
return "", err
}
return "Update initiated", nil
}

1
manager_test.go Normal file
View File

@ -0,0 +1 @@
package i2pcontrol