kanoi
8 years ago
1 changed files with 153 additions and 0 deletions
@ -0,0 +1,153 @@ |
|||||||
|
#!/bin/bash |
||||||
|
# |
||||||
|
tab=" " |
||||||
|
# |
||||||
|
cmd=" |
||||||
|
a genoff - turn off mark and payout generation (2 commands) |
||||||
|
b genon - turn on mark and payout generation (2 commands) |
||||||
|
c hold user - put a payout hold on user |
||||||
|
d lock user reason - put a mining lock on user| a blank reason unlocks user |
||||||
|
e pay block - display payout info for block height |
||||||
|
f opay payoutid - orphan payoutid |
||||||
|
g unhold user - remove a payout hold on a user |
||||||
|
h ban ip eventname - ban an ip eventname, forever until ckdb restart |
||||||
|
i unban ip eventname - unban an ip eventname| use 'exp' to clear it afterwards |
||||||
|
j exp - remove all expired IP bans |
||||||
|
k block height - show block details |
||||||
|
l reject height blockhash - reject a block as unworthy| when it wasn't actually a block, just a close share |
||||||
|
m reject2 height blockhash type desc - reject a block with type and desc| e.g. 'Stale' and 'Share was submitted after the block changed' |
||||||
|
n terminate - I'll be back |
||||||
|
" |
||||||
|
# |
||||||
|
msg=" |
||||||
|
a marks.1.action=genoff|payouts.1.action=genoff |
||||||
|
b marks.1.action=genon|payouts.1.action=genon |
||||||
|
c setatts.1.ua_HoldPayouts.str=Y${tab}username=@user@ |
||||||
|
d userstatus.1.username=@user@${tab}status=@reason@ |
||||||
|
e query.1.request=payout${tab}height=@block@ |
||||||
|
f payouts.1.action=orphan${tab}payoutid=@payoutid@ |
||||||
|
g expatts.1.attlist=HoldPayouts${tab}username=@user@ |
||||||
|
h events.1.action=ban${tab}ip=@ip@${tab}eventname=@eventname@ |
||||||
|
i events.1.action=unban${tab}ip=@ip@${tab}eventname=@eventname@ |
||||||
|
j events.1.action=expire |
||||||
|
k query.1.request=block${tab}height=@height@ |
||||||
|
l blockstatus.1.action=reject${tab}height=@height@${tab}blockhash=@blockhash@${tab}info= |
||||||
|
m blockstatus.1.action=reject${tab}height=@height@${tab}blockhash=@blockhash@${tab}info=@type@:@desc@ |
||||||
|
n terminate |
||||||
|
" |
||||||
|
# grep pattern matching the starting field used in cmd -> msg |
||||||
|
letters="[a-n]" |
||||||
|
# params allowed to be entered as blank (but will be prompted for if blank) |
||||||
|
allowblank="|reason|" |
||||||
|
# |
||||||
|
cproc() |
||||||
|
{ |
||||||
|
echo "$cmd" | cut -d' ' -f2 | tr "\n" "|" | sed -e "s/|||*/|/g" |
||||||
|
} |
||||||
|
# |
||||||
|
getex() |
||||||
|
{ |
||||||
|
let="`echo "$cmd" | grep "^$letters $1 " | cut -d' ' -f1`" |
||||||
|
echo "$msg" | grep "^$let " | cut -d' ' -f2- |
||||||
|
} |
||||||
|
# |
||||||
|
dsp0() |
||||||
|
{ |
||||||
|
grep -v "^$" | cut -d' ' -f2- | tr "|" "\n" | sed -e "s/^/ /" |
||||||
|
} |
||||||
|
# |
||||||
|
dsp() |
||||||
|
{ |
||||||
|
echo "$cmd" | grep "^$letters $1 " | dsp0 |
||||||
|
} |
||||||
|
# |
||||||
|
cmds="`cproc`" |
||||||
|
# |
||||||
|
cmdz() |
||||||
|
{ |
||||||
|
echo "$cmds" | tr '|' ' ' | sed -e "s/^ *//" -e "s/ *$//" |
||||||
|
} |
||||||
|
# |
||||||
|
pars() |
||||||
|
{ |
||||||
|
echo "$cmd" | grep "^$letters $1" | cut -d'-' -f1 | cut -d' ' -f3- |
||||||
|
} |
||||||
|
# |
||||||
|
show() |
||||||
|
{ |
||||||
|
echo "$1" | sed -e "s/$tab/'TAB'/g" -e "s/|/ and /g" |
||||||
|
} |
||||||
|
# |
||||||
|
usAge() |
||||||
|
{ |
||||||
|
echo "usAge: `basename $0` [cmd [params...]]" |
||||||
|
echo " missing cmd or required params are prompted for" |
||||||
|
echo " it's easiest to just run `basename $0` with no cmd/params :)" |
||||||
|
echo " params can't contain TAB or '|'" |
||||||
|
echo " cmd [params...] is one of:" |
||||||
|
echo "$cmd" | dsp0 |
||||||
|
exit 1 |
||||||
|
} |
||||||
|
# |
||||||
|
if [ "$1" = "-?" -o "$1" = "-h" -o "$1" = "-help" -o "$1" = "--help" ] ; then |
||||||
|
usAge |
||||||
|
fi |
||||||
|
# |
||||||
|
if [ -z "$1" ] ; then |
||||||
|
echo "(`cmdz`)" |
||||||
|
read -p " or '?' for help: " cm |
||||||
|
else |
||||||
|
cm="$1" |
||||||
|
fi |
||||||
|
# |
||||||
|
ok="`echo "$cmds" | grep "|$cm|"`" |
||||||
|
# |
||||||
|
if [ -z "$ok" ] ; then |
||||||
|
usAge |
||||||
|
fi |
||||||
|
# |
||||||
|
echo "`dsp $cm`" |
||||||
|
ex0="`getex $cm`" |
||||||
|
# |
||||||
|
p="1" |
||||||
|
for i in `pars $cm` ; do |
||||||
|
p="$[$p+1]" |
||||||
|
v="${@:$p:1}" |
||||||
|
if [ -z "$v" ] ; then |
||||||
|
read -p "$i: " v |
||||||
|
fi |
||||||
|
t="`echo "$v" | grep "$tab"`" |
||||||
|
if [ "$t" ] ; then |
||||||
|
echo "ERR: values can't contain TAB" |
||||||
|
usAge |
||||||
|
fi |
||||||
|
m="`echo "$v" | grep "|"`" |
||||||
|
if [ "$m" ] ; then |
||||||
|
echo "ERR: values can't contain '|'" |
||||||
|
usAge |
||||||
|
fi |
||||||
|
ab="`echo "$allowblank" | grep "|$i|"`" |
||||||
|
if [ -z "$ab" ] ; then |
||||||
|
if [ -z "$v" ] ; then |
||||||
|
echo "ERR: $i can't be blank" |
||||||
|
usAge |
||||||
|
fi |
||||||
|
fi |
||||||
|
ex="`echo "$ex0" | sed -e "s|@$i@|$v|g"`" # allow / |
||||||
|
ex0="$ex" |
||||||
|
done |
||||||
|
# |
||||||
|
s="" |
||||||
|
multi="`echo "$ex0" | grep '|'`" |
||||||
|
if [ "$multi" ] ; then |
||||||
|
s="s" |
||||||
|
fi |
||||||
|
# |
||||||
|
echo "Command$s: `show "$ex0"`" |
||||||
|
read -p "ok? (y): " ok |
||||||
|
if [ "${ok:0:1}" = "y" ] ; then |
||||||
|
echo "$ex0" | tr "|" "\n" | ./ckpmsg -n ckdb -s /opt/ -N listenercmd |
||||||
|
echo "Done" |
||||||
|
else |
||||||
|
echo "Aborted" |
||||||
|
fi |
Loading…
Reference in new issue