Enterprise-Onion-Toolkit/eotk

201 wiersze
4.1 KiB
Plaintext
Czysty Zwykły widok Historia

2017-02-04 10:06:42 +00:00
#!/bin/sh
# Enterprise Onion Toolkit
cd `dirname $0` || exit 1
export EOTK_HOME=`pwd` # expected by tools
2017-02-04 16:28:16 +00:00
# set project directory; this path is hard-replicated elsewhere
2017-02-04 10:06:42 +00:00
project_dir=$EOTK_HOME/projects.d
2017-02-04 16:28:16 +00:00
# set path
2017-02-05 13:14:47 +00:00
export PATH=$EOTK_HOME/opt.d:$EOTK_HOME/lib.d:$PATH
2017-02-04 16:28:16 +00:00
# meta
2017-02-04 10:06:42 +00:00
prog=`basename $0`
version=1.3
2017-02-04 10:06:42 +00:00
Warn() {
echo "$@" 1>&2
}
2017-02-04 10:06:42 +00:00
AllProjects() {
(
cd $project_dir
for d in *.d/ ; do
echo `basename $d .d`
done
)
}
Action() {
action=$1
shift
2017-02-04 12:57:02 +00:00
verbose=false
if [ "x$1" = "x" ] ; then
2017-02-04 12:45:05 +00:00
Warn "missing project name, try: '$prog projects' for a list, or '-a' for all"
return
elif [ "x$1" = "x-a" ] ; then
2017-02-04 10:06:42 +00:00
projects=`AllProjects`
2017-02-04 12:57:02 +00:00
verbose=true
2017-02-04 10:06:42 +00:00
else
projects="$*"
fi
2017-02-04 10:06:42 +00:00
for project in $projects ; do
2017-02-04 12:57:02 +00:00
$verbose && echo :::: $project ::::
2017-02-04 16:28:16 +00:00
sh $project_dir/$project.d/$action.sh
2017-02-04 10:06:42 +00:00
done
}
2017-02-07 13:57:12 +00:00
Populate() {
if [ -t 0 ] ; then
dots=true
else
dots=false
fi
2017-02-07 13:57:12 +00:00
cat "$@" |
while read line ; do
case "$line" in
*%NEW_ONION%*) # legacy / shorter / more common
onion=secrets.d/`$EOTK_HOME/eotk genkey`
2017-02-07 13:57:12 +00:00
echo "$line" | sed -e "s!%NEW_ONION%!$onion!"
;;
*%NEW_HARD_ONION%*)
onion=secrets.d/`$EOTK_HOME/eotk genkey`
echo "$line" | sed -e "s!%NEW_HARD_ONION%!$onion!"
;;
*%NEW_SOFT_ONION%*)
onion=`$EOTK_HOME/eotk genkey`
onion=`basename $onion .key`
echo "$line" | sed -e "s!%NEW_SOFT_ONION%!$onion!"
;;
2017-02-07 13:57:12 +00:00
*)
echo "$line"
;;
esac
if $dots ; then
echo ".\c" >/dev/tty
fi
2017-02-07 13:57:12 +00:00
done
if $dots ; then
echo "" >/dev/tty
fi
2017-02-07 13:57:12 +00:00
}
2017-02-07 10:05:53 +00:00
Configure() {
log=configure$$.log
for file in "$@" ; do
2017-02-07 13:57:12 +00:00
echo :::: $file ::::
case "$file" in
*.tconf)
file2=`basename $file .tconf`.conf
if [ -s $file2 ] ; then
echo $prog: $file: using existing $file2
else
2017-02-11 20:29:48 +00:00
echo $prog: $file: populating $file2 with onions, please be very patient...
Populate $file >$file2
2017-02-07 13:57:12 +00:00
fi
file="$file2"
;;
*) ;;
esac
echo $prog: $file: processing
2017-02-07 10:05:53 +00:00
if ! $EOTK_HOME/lib.d/do-configure.pl "$file" ; then
2017-02-07 13:57:12 +00:00
echo $prog: failure processing $file: see $log
2017-02-07 10:05:53 +00:00
exit 1
fi
done 2>$log
echo "$prog: done; log is in $log"
2017-02-07 10:05:53 +00:00
}
2017-02-04 10:06:42 +00:00
cmd="$1"
shift
case "$cmd" in
version)
2017-02-07 13:57:12 +00:00
echo $prog: $version $EOTK_HOME
2017-02-04 10:06:42 +00:00
if [ -f .gitignore ] ; then
git show -s --oneline
fi
;;
projects|proj)
AllProjects
;;
2017-02-07 13:57:12 +00:00
populate|pop)
Populate "$@"
;;
2017-02-04 10:06:42 +00:00
configure|config|conf)
2017-02-07 10:05:53 +00:00
Configure "$@"
2017-02-04 10:06:42 +00:00
;;
start) # project, or "-a"
2017-02-04 10:06:42 +00:00
Action start "$@"
;;
stop) # project, or "-a"
2017-02-04 10:06:42 +00:00
Action stop "$@"
;;
bounce|restart|reload) # project, or "-a"
2017-02-04 10:06:42 +00:00
Action bounce "$@"
;;
2017-02-11 20:29:48 +00:00
nxreload) # project, or "-a"
Action nxreload "$@"
;;
debugon) # project, or "-a"
2017-02-04 10:06:42 +00:00
Action debugon "$@"
;;
debugoff) # project, or "-a"
2017-02-04 10:06:42 +00:00
Action debugoff "$@"
;;
harvest|onions) # project, or "-a"
Action harvest "$@"
;;
status) # project, or "-a"
Action status "$@"
2017-02-04 10:06:42 +00:00
;;
2017-02-05 14:55:05 +00:00
maps|map) # project, or "-a"
2017-02-04 11:19:47 +00:00
Action maps "$@"
;;
2017-02-04 16:36:17 +00:00
ps)
2017-02-07 10:05:53 +00:00
ps auxww | grep /eotk/
2017-02-04 16:36:17 +00:00
;;
2017-02-05 13:14:47 +00:00
genkey|gen)
secrets=secrets.d
test -d $secrets || mkdir $secrets || exit 1
( cd $secrets ; generate-onion-key.sh )
;;
delete) # project, or "-a"
2017-02-07 13:57:12 +00:00
echo $prog: delete is tbd
2017-02-04 10:06:42 +00:00
;;
*)
echo "usage: $prog args ... # see README.md for docs" 1>&2
exit 1
;;
esac
exit 0