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