An open API service indexing awesome lists of open source software.

https://github.com/eyedeekay/i2prpcapi_aliases

curl commands as functions for interacting with the i2pcontrol api, because I'm too tired to keep working on the go version all night.
https://github.com/eyedeekay/i2prpcapi_aliases

bash-aliases i2p

Last synced: 3 months ago
JSON representation

curl commands as functions for interacting with the i2pcontrol api, because I'm too tired to keep working on the go version all night.

Awesome Lists containing this project

README

        

# i2prpcapi_aliases

curl commands as functions for interacting with the i2pcontrol api, because I'm
too tired to keep working on the go version all night.

## Shell function library for gathering information from the i2pcontrol bridge.

This can pretty much be used as a library for use in bash or other shells. More
usage information will show up here soon.

## Installation:

sudo make install

will place the scripts in /usr/lib/i2prpccurl/ and the settings in
/etc/i2prpc/i2prpc.conf.

sudo make remove

will remove the scripts and settings.

### /usr/lib/i2prpccurl/aliases.sh

#### Line-By-Line:

##### Assure the i2pcontrol_host and i2pcontrol_port environment variables are set

if [ -z "$i2pcontrol_host" ]; then
i2pcontrol_host="127.0.0.1"
fi

if [ -z "$i2pcontrol_port" ]; then
i2pcontrol_port="7650"
fi

##### Authenticate to the rpc interface with a password method wrapper

authenticate(){
/usr/bin/curl -s -k --data-binary "{
\"jsonrpc\":\"2.0\",
\"id\":\"$1\",
\"method\":\"Authenticate\",
\"params\":{
\"API\": 1,
\"Password\": \"$2\"}
}" -H 'content-type:application/json-rpc;' "https://$i2pcontrol_host:$i2pcontrol_port/" 2>&1 |
tr ',{}' '\n' |
tr -d '"' | sed 's|result:||g' | tr ':' '=' | sed '/^\s*$/d'
}

##### Exportable token function

token(){
authenticate "$1" "$2" | grep "Token" | sed 's|Token=|export Token=|g'
}

##### i2pecho (Echo in i2pcontrol) method wrapper

i2pecho(){
/usr/bin/curl -s -k --data-binary "{
\"jsonrpc\":\"2.0\",
\"id\":\"$1\",
\"method\":\"Echo\",
\"params\":{
\"Token\": \"$Token\",
\"Echo\": \"$1\"}
}" -H 'content-type:application/json-rpc;' "https://$i2pcontrol_host:$i2pcontrol_port/" 2>&1 |
tr ',{}' '\n' |
tr -d '"' | sed 's|result:||g' | tr ':' '=' | sed '/^\s*$/d'
}

##### i2pcontrol (I2PControl in i2pcontrol) method wrapper

i2pcontrol(){
/usr/bin/curl -s -k --data-binary "{
\"jsonrpc\":\"2.0\",
\"id\":\"$1\",
\"method\":\"I2PControl\",
\"params\":{
\"$1\": \"$2\",
\"Token\": \"$Token\"}
}" -H 'content-type:application/json-rpc;' "https://$i2pcontrol_host:$i2pcontrol_port/" 2>&1 |
tr ',{}' '\n' |
tr -d '"' | sed 's|result:||g' | tr ':' '=' | sed '/^\s*$/d'
}

##### Set the i2pcontrol password

password(){
i2pcontrol "i2pcontrol.password" "$1"
}

##### Export a changed i2pcontrol password(WIP)

exportpassword(){
i2pcontrol "i2pcontrol.password" "$1" | sed 's/^/export /'
}

##### routerinfo (RouterInfo in i2pcontrol) method wrapper

routerinfo(){
/usr/bin/curl -s -k --data-binary "{
\"jsonrpc\":\"2.0\",
\"id\":\"$1\",
\"method\":\"RouterInfo\",
\"params\":{
\"$1\": \"null\",
\"Token\": \"$Token\"}
}" -H 'content-type:application/json-rpc;' "https://$i2pcontrol_host:$i2pcontrol_port/" 2>&1 |
tr ',{}' '\n' |
tr -d '"' | sed 's|result:||g' | tr ':' '=' | sed '/^\s*$/d' | grep -v 'id='
}

##### show router status

routerstatus(){
routerinfo "i2p.router.status"
}

##### exportable router status

exportrouterstatus(){
routerinfo "i2p.router.status" | sed 's/^/export /'
}

routerupstime(){
routerinfo "i2p.router.uptime"
}

exportrouterupstime(){
routerinfo "i2p.router.uptime" | sed 's/^/export /'
}

routerversion(){
routerinfo "i2p.router.version"
}

exportrouterversion(){
routerinfo "i2p.router.version" | sed 's/^/export /'
}

routernetbwinbound1s(){
routerinfo "i2p.router.net.bw.inbound.1s"
}

exportrouternetbwinbound1s(){
routerinfo "i2p.router.net.bw.inbound.1s" | sed 's/^/export /'
}

routernetbwinbound15s(){
routerinfo "i2p.router.net.bw.inbound.15s"
}

exportrouternetbwinbound15s(){
routerinfo "i2p.router.net.bw.inbound.15s" | sed 's/^/export /'
}

routernetbwoutbound1s(){
routerinfo "i2p.router.net.bw.outbound.1s"
}

exportrouternetbwoutbound1s(){
routerinfo "i2p.router.net.bw.outbound.1s" | sed 's/^/export /'
}

routernetbwoutbound15s(){
routerinfo "i2p.router.net.bw.outbound.15s"
}

exportrouternetbwoutbound15s(){
routerinfo "i2p.router.net.bw.outbound.15s" | sed 's/^/export /'
}

routernetstatus(){
routerinfo "i2p.router.net.status"
}

exportrouternetstatus(){
routerinfo "i2p.router.net.status" | sed 's/^/export /'
}

routernetstatus(){
routerinfo "i2p.router.net.status"
}

exportrouternetstatus(){
routerinfo "i2p.router.net.status" | sed 's/^/export /'
}

routernetdbactivepeers(){
routerinfo "i2p.router.netdb.activepeers"
}

exportrouternetdbactivepeers(){
routerinfo "i2p.router.netdb.activepeers" | sed 's/^/export /'
}

routernetdbfastpeers(){
routerinfo "i2p.router.netdb.fastpeers"
}

exportrouternetdbfastpeers(){
routerinfo "i2p.router.netdb.fastpeers" | sed 's/^/export /'
}

routernetdbhighcapacitypeers(){
routerinfo "i2p.router.netdb.highcapacitypeers"
}

exportrouternetdbhighcapacitypeers(){
routerinfo "i2p.router.netdb.highcapacitypeers" | sed 's/^/export /'
}

routernetdbisreseeding(){
routerinfo "i2p.router.netdb.isreseeding"
}

exportrouternetdbisreseeding(){
routerinfo "i2p.router.netdb.isreseeding" | sed 's/^/export /'
}

routernetdbknownpeers(){
routerinfo "i2p.router.netdb.knownpeers"
}

exportrouternetdbknownpeers(){
routerinfo "i2p.router.netdb.knownpeers" | sed 's/^/export /'
}

routermanager(){
/usr/bin/curl -s -k --data-binary "{
\"jsonrpc\":\"2.0\",
\"id\":\"$1\",
\"method\":\"RouterManager\",
\"params\":{
\"Token\": $Token,
\"$1\": \"null\"}
}" -H 'content-type:application/json-rpc;' "https://$i2pcontrol_host:$i2pcontrol_port/" 2>&1 |
tr ',{}' '\n' |
tr -d '"' | sed 's|result:||g' | tr ':' '=' | sed '/^\s*$/d'
}

routerreseed(){
routermanager "Reseed"
}

routershutdown(){
routermanager "Shutdown"
}

routershutdowngraceful(){
routermanager "ShutdownGraceful"
}

networksetting(){
/usr/bin/curl -s -k --data-binary "{
\"jsonrpc\":\"2.0\",
\"id\":\"$1\",
\"method\":\"NetworkSetting\",
\"params\":{
\"Token\": $Token,
\"$1\": $2 }
}" -H 'content-type:application/json-rpc;' "https://$i2pcontrol_host:$i2pcontrol_port/" 2>&1 |
tr ',{}' '\n' | tr -d '"' | sed 's|result:||g' | tr ':' '=' |
sed '/^\s*$/d'
}

routernetbwin(){
if [ -z "$1" ]; then
Value="null"
else
Value="$1"
fi
networksetting "i2p.router.net.bw.in" "$Value"
}

exportrouternetbwin(){
routernetbwin $1 | sed 's/^/export /'
}

routernetbwout(){
if [ -z "$1" ]; then
Value="null"
else
Value="$1"
fi
networksetting "i2p.router.net.bw.out" "$Value"
}

routernetbwout(){
routernetbwout $1 | sed 's/^/export /'
}

clientservicesinfo(){
/usr/bin/curl -s -k --data-binary "{
\"jsonrpc\":\"2.0\",
\"id\":\"$1\",
\"method\":\"ClientServicesInfo\",
\"params\":{
\"Token\": $Token,
\"$1\": \"null\"}
}" -H 'content-type:application/json-rpc;' "https://$i2pcontrol_host:$i2pcontrol_port/" 2>&1 |
tr ',{}' '\n' | tr -d '"' | sed 's|result:||g' | tr ':' '=' |
sed '/^\s*$/d'
}

tunnelinfo(){
clientservicesinfo "I2PTunnel" | grep -v "I2PTunnel" | grep -v "client" |
perl -p -e 's/=\n/=/' | sed 's|address=|"|g' |
sed 's|.b32.i2p|.b32.i2p"|g' | grep -v jsonrpc | tr -d '-'
}

exporttunnelinfo(){
tunnelinfo | sed 's/^/export /'
}

socksinfo(){
clientservicesinfo "SOCKS" | grep -v "SOCKS" | grep -v jsonrpc
}

exportsocksinfo(){
socksinfo | sed 's/^/export /'
}

saminfo(){
clientservicesinfo "SAM" | grep -v "SAM" | grep -v jsonrpc
}

exportsaminfo(){
saminfo | sed 's/^/export /'
}

bobinfo(){
clientservicesinfo "BOB" | grep -v "BOB" | grep -v jsonrpc
}

exportbobinfo(){
bobinfo | sed 's/^/export /'
}

i2pcpinfo(){
clientservicesinfo "I2CP" | grep -v "I2CP" | grep -v jsonrpc
}

exporti2pcpinfo(){
i2pcpinfo | sed 's/^/export /'
}