forked from hakwerk/labca
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcommander
More file actions
executable file
·213 lines (200 loc) · 6.08 KB
/
Copy pathcommander
File metadata and controls
executable file
·213 lines (200 loc) · 6.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
#!/usr/bin/env bash
set -e
LOGFILE=/home/labca/logs/commander.log
err_report() {
echo "ERROR! On line $1 in commander script"
}
trap 'err_report $LINENO' INT TERM ERR
dn=$(dirname $0)
source "$dn/utils.sh"
function wait_server() {
local url="$1"
local status=0
local cnt=0
while [ $cnt -lt 20 ] && [ "$status" != "200" ]; do
status=$(curl -o /dev/null -sSL --head --write-out '%{http_code}\n' $url)
let cnt=$cnt+1
if [ $cnt -lt 10 ] && [ "$status" != "200" ]; then
sleep 3
fi
done
}
read txt
case $txt in
"trust-store")
cp /etc/nginx/ssl/labca_cert.pem /usr/local/share/ca-certificates/labca_cert.crt
cp ~labca/admin/data/root-ca.pem /usr/local/share/ca-certificates/root-ca.crt
update-ca-certificates &>>$LOGFILE
;;
"docker-restart")
cd /home/labca/boulder
docker-compose stop &>>$LOGFILE
wait_down $PS_MYSQL &>>$LOGFILE
wait_down $PS_BHSM &>>$LOGFILE
wait_down $PS_LABCA &>>$LOGFILE
wait_down $PS_BOULDER &>>$LOGFILE
docker-compose rm -f bhsm &>>$LOGFILE
docker-compose up -d &>>$LOGFILE
wait_up $PS_MYSQL &>>$LOGFILE
wait_up $PS_BHSM &>>$LOGFILE
wait_up $PS_LABCA &>>$LOGFILE
wait_up $PS_BOULDER $PS_BOULDER_COUNT &>>$LOGFILE
;;
"acme-request")
cd /etc/nginx/ssl
[ -e account.key ] || openssl genrsa 4096 > account.key
[ -e labca_key.pem ] || openssl genrsa 4096 > labca_key.pem
san=$(openssl x509 -noout -text -in labca_cert.pem | grep DNS:)
openssl req -new -sha256 -key labca_key.pem -subj "/" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=$san")) > domain.csr
chown -R www-data:www-data *
url=$(grep 'DEFAULT_DIRECTORY_URL =' /home/labca/acme_tiny.py | sed -e 's/.*=[ ]*//' | sed -e 's/\"//g')
wait_server $url
/home/labca/labca/renew
ln -sf /home/labca/labca/cron_d /etc/cron.d/labca
ln -sf /home/labca/labca/logrotate_d /etc/logrotate.d/labca
;;
"nginx-remove-redirect")
perl -i -p0e 's/\n # BEGIN temporary redirect\n location = \/ \{\n return 302 \/admin\/;\n }\n # END temporary redirect\n//igs' /etc/nginx/sites-available/labca
;;
"nginx-reload")
service nginx reload
;;
"nginx-restart")
service nginx restart
;;
"log-cert")
tail -200 /etc/nginx/ssl/acme_tiny.log
exit 0
;;
"log-boulder")
cd /home/labca/boulder
docker-compose logs -f --no-color --tail=50 boulder
;;
"log-audit")
cd /home/labca/boulder
docker-compose logs --no-color boulder | grep "\[AUDIT\]" | grep -v "grpc: parseServiceConfig error unmarshaling due to unexpected end of JSON input" | tail -50
docker-compose logs -f --no-color --tail=0 boulder
;;
"log-activity")
cd /home/labca/boulder
echo "GMT"
docker-compose logs --no-color boulder | grep "\[AUDIT\]" | grep -v "grpc: parseServiceConfig error unmarshaling due to unexpected end of JSON input" | tail -15
exit 0
;;
"log-labca")
cd /home/labca/boulder
docker-compose logs -f --no-color --tail=50 labca
;;
"log-web")
tail -f -n 50 /var/log/nginx/access.log
;;
"log-weberr")
tail -200 /var/log/nginx/error.log
exit 0
;;
"log-components")
timezone=$(cat /etc/timezone)
nginx=$(ps -eo lstart,args | grep nginx | grep master | grep -v grep | cut -c 5-24)
svc=$(ps -eo lstart,args | grep tcpserver | grep sudo | grep -v grep | cut -c 5-24)
boulder=$(ps -eo lstart,args | grep bin/boulder-wfe2 | grep -v grep | cut -c 5-24)
labca=$(ps -eo lstart,args | grep -- "-host-port 3000" | grep -v grep | cut -c 5-24)
echo "$timezone|$nginx|$svc|$boulder|$labca"
exit 0
;;
"log-stats")
timezone=$(cat /etc/timezone)
uptime=$(uptime -s)
procs=$(ps -ef --no-headers | wc -l)
total=$(free -b --si | grep 'Mem:' | perl -p0e 's/.*?\s+(\d+)\s+.*/$1/')
avail=$(free -b --si | grep 'Mem:' | perl -p0e 's/.*\s+(\d+)$/$1/')
let used=$total-$avail
echo "$timezone|$uptime|$procs|$used|$avail"
exit 0
;;
"revoke-cert")
read serial
read reasonCode
cd /home/labca/boulder
docker-compose exec -T boulder bin/admin-revoker serial-revoke --config labca/config/admin-revoker.json $serial $reasonCode 2>&1
;;
"test-email")
read recipient
cd /home/labca/boulder
docker-compose exec -T boulder bin/mail-tester --config labca/config/expiration-mailer.json $recipient 2>&1
;;
"boulder-start")
cd /home/labca/boulder
docker-compose up -d bmysql
docker-compose up -d bhsm
docker-compose up -d boulder
wait_up $PS_MYSQL &>>$LOGFILE
wait_up $PS_BHSM &>>$LOGFILE
wait_up $PS_BOULDER $PS_BOULDER_COUNT &>>$LOGFILE
;;
"boulder-stop")
cd /home/labca/boulder
docker-compose stop boulder
docker-compose stop bhsm
docker-compose stop bmysql
wait_down $PS_MYSQL &>>$LOGFILE
wait_down $PS_BHSM &>>$LOGFILE
wait_down $PS_BOULDER &>>$LOGFILE
;;
"boulder-restart")
cd /home/labca/boulder
docker-compose stop boulder
docker-compose stop bhsm
docker-compose stop bmysql
wait_down $PS_MYSQL &>>$LOGFILE
wait_down $PS_BHSM &>>$LOGFILE
wait_down $PS_BOULDER &>>$LOGFILE
docker-compose up -d bmysql
docker-compose up -d bhsm
docker-compose up -d boulder
wait_up $PS_MYSQL &>>$LOGFILE
wait_up $PS_BHSM &>>$LOGFILE
wait_up $PS_BOULDER $PS_BOULDER_COUNT &>>$LOGFILE
;;
"labca-restart")
cd /home/labca/boulder
docker-compose stop labca
wait_down $PS_LABCA &>>$LOGFILE
docker-compose up -d labca
wait_up $PS_LABCA &>>$LOGFILE
;;
"svc-restart")
service labca stop
wait_down $PS_SERVICE &>>$LOGFILE
service labca start
wait_up $PS_SERVICE &>>$LOGFILE
;;
"log-backups")
ls -1tr /home/labca/backup
exit 0
;;
"log-server-backup")
/home/labca/labca/backup
exit 0
;;
"backup-delete")
read backup
rm -f /home/labca/backup/$backup
;;
"backup-restore")
read backup
/home/labca/labca/restore $backup
;;
"server-restart")
reboot
;;
"server-shutdown")
halt
;;
*)
echo "Unknown command '$txt'. ERROR!"
exit 1
;;
esac
echo "ok"
# TODO:
# upgrade the labca stuff