Put the ones I need right now in
This commit is contained in:
@ -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
76
auth.go
@ -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
|
||||
}
|
||||
|
31
auth_test.go
31
auth_test.go
@ -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")
|
||||
}
|
||||
|
||||
}
|
||||
|
80
manager.go
Normal file
80
manager.go
Normal 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
1
manager_test.go
Normal file
@ -0,0 +1 @@
|
||||
package i2pcontrol
|
Reference in New Issue
Block a user