|
@@ -119,220 +119,220 @@ INSECURE='no'
|
119
|
119
|
AMNESIC='no'
|
120
|
120
|
|
121
|
121
|
mesh_router_setup_script() {
|
122
|
|
- # create a setup script for a mesh router
|
123
|
|
- mesh_script_filename=$1
|
124
|
|
- echo "MY_USERNAME=${USERNAME}" > $mesh_script_filename
|
125
|
|
- echo "DEFAULT_DOMAIN_NAME=${USERNAME}" >> $mesh_script_filename
|
126
|
|
- echo 'SYSTEM_TYPE=mesh' >> $mesh_script_filename
|
127
|
|
- echo 'INSTALLING_ON_BBB=no' >> $mesh_script_filename
|
128
|
|
- echo 'USB_DRIVE=/dev/sda1' >> $mesh_script_filename
|
129
|
|
- echo 'DDNS_PROVIDER=' >> $mesh_script_filename
|
130
|
|
- echo 'DDNS_USERNAME=' >> $mesh_script_filename
|
131
|
|
- echo 'DDNS_PASSWORD=' >> $mesh_script_filename
|
132
|
|
- echo 'DEFAULT_LANGUAGE=en_GB.UTF-8' >> $mesh_script_filename
|
133
|
|
- echo 'MY_EMAIL_ADDRESS=' >> $mesh_script_filename
|
134
|
|
- echo 'ENABLE_CJDNS=no' >> $mesh_script_filename
|
135
|
|
- echo 'ENABLE_BATMAN=yes' >> $mesh_script_filename
|
136
|
|
- echo 'ENABLE_BABEL=no' >> $mesh_script_filename
|
137
|
|
- echo 'DEBIAN_REPO=' >> $mesh_script_filename
|
138
|
|
- echo 'NAMESERVER1=' >> $mesh_script_filename
|
139
|
|
- echo 'NAMESERVER2=' >> $mesh_script_filename
|
140
|
|
- echo 'BATMAN_CELLID=any' >> $mesh_script_filename
|
141
|
|
- echo 'WIFI_CHANNEL=9' >> $mesh_script_filename
|
|
122
|
+ # create a setup script for a mesh router
|
|
123
|
+ mesh_script_filename=$1
|
|
124
|
+ echo "MY_USERNAME=${USERNAME}" > $mesh_script_filename
|
|
125
|
+ echo "DEFAULT_DOMAIN_NAME=${USERNAME}" >> $mesh_script_filename
|
|
126
|
+ echo 'SYSTEM_TYPE=mesh' >> $mesh_script_filename
|
|
127
|
+ echo 'INSTALLING_ON_BBB=no' >> $mesh_script_filename
|
|
128
|
+ echo 'USB_DRIVE=/dev/sda1' >> $mesh_script_filename
|
|
129
|
+ echo 'DDNS_PROVIDER=' >> $mesh_script_filename
|
|
130
|
+ echo 'DDNS_USERNAME=' >> $mesh_script_filename
|
|
131
|
+ echo 'DDNS_PASSWORD=' >> $mesh_script_filename
|
|
132
|
+ echo 'DEFAULT_LANGUAGE=en_GB.UTF-8' >> $mesh_script_filename
|
|
133
|
+ echo 'MY_EMAIL_ADDRESS=' >> $mesh_script_filename
|
|
134
|
+ echo 'ENABLE_CJDNS=no' >> $mesh_script_filename
|
|
135
|
+ echo 'ENABLE_BATMAN=yes' >> $mesh_script_filename
|
|
136
|
+ echo 'ENABLE_BABEL=no' >> $mesh_script_filename
|
|
137
|
+ echo 'DEBIAN_REPO=' >> $mesh_script_filename
|
|
138
|
+ echo 'NAMESERVER1=' >> $mesh_script_filename
|
|
139
|
+ echo 'NAMESERVER2=' >> $mesh_script_filename
|
|
140
|
+ echo 'BATMAN_CELLID=any' >> $mesh_script_filename
|
|
141
|
+ echo 'WIFI_CHANNEL=9' >> $mesh_script_filename
|
142
|
142
|
}
|
143
|
143
|
|
144
|
144
|
while [[ $# > 1 ]]
|
145
|
145
|
do
|
146
|
|
- key="$1"
|
147
|
|
-
|
148
|
|
- case $key in
|
149
|
|
- -h|--help)
|
150
|
|
- show_help
|
151
|
|
- ;;
|
152
|
|
- -c|--config)
|
153
|
|
- shift
|
154
|
|
- CONFIG_FILENAME="$1"
|
155
|
|
- if [ ! -f $CONFIG_FILENAME ]; then
|
156
|
|
- echo $"Config file $CONFIG_FILENAME not found"
|
157
|
|
- exit 3
|
158
|
|
- fi
|
159
|
|
- DEFAULT_DOMAIN_NAME=$(cat $CONFIG_FILENAME | grep 'DEFAULT_DOMAIN_NAME' | awk -F '=' '{print $2}')
|
160
|
|
- ;;
|
161
|
|
- -t|--target|--board)
|
162
|
|
- shift
|
163
|
|
- IMAGE_TYPE="$1"
|
164
|
|
- ;;
|
165
|
|
- -u|--user|--username)
|
166
|
|
- shift
|
167
|
|
- USERNAME="$1"
|
168
|
|
- ;;
|
169
|
|
- -p|--password)
|
170
|
|
- shift
|
171
|
|
- PASSWORD="$1"
|
172
|
|
- if [ ${#PASSWORD} -lt $MINIMUM_PASSWORD_LENGTH ]; then
|
173
|
|
- echo $"Your password chould contain at least ${MINIMUM_PASSWORD_LENGTH} characters"
|
174
|
|
- exit 3628
|
175
|
|
- fi
|
176
|
|
- ;;
|
177
|
|
- --sshkey|--sshpubkey|--pubkey)
|
178
|
|
- shift
|
179
|
|
- SSH_PUBKEY="$1"
|
180
|
|
- ;;
|
181
|
|
- -s|--size)
|
182
|
|
- shift
|
183
|
|
- IMAGE_SIZE="$1"
|
184
|
|
- IMAGE_SIZE_SPECIFIED=1
|
185
|
|
- ;;
|
186
|
|
- # Box static IP address on the LAN
|
187
|
|
- --ip)
|
188
|
|
- shift
|
189
|
|
- BOX_IP_ADDRESS="$1"
|
190
|
|
- ;;
|
191
|
|
- # Router IP address on the LAN
|
192
|
|
- --iprouter)
|
193
|
|
- shift
|
194
|
|
- ROUTER_IP_ADDRESS="$1"
|
195
|
|
- ;;
|
196
|
|
- # nameserver 1
|
197
|
|
- --ns1|--nameserver1)
|
198
|
|
- shift
|
199
|
|
- NAMESERVER1="$1"
|
200
|
|
- ;;
|
201
|
|
- # nameserver 2
|
202
|
|
- --ns2|--nameserver2)
|
203
|
|
- shift
|
204
|
|
- NAMESERVER2="$1"
|
205
|
|
- ;;
|
206
|
|
- -i|--interactive)
|
207
|
|
- shift
|
208
|
|
- INTERACTIVE="$1"
|
209
|
|
- ;;
|
210
|
|
- -g|--generic)
|
211
|
|
- shift
|
212
|
|
- GENERIC_IMAGE="$1"
|
213
|
|
- ;;
|
214
|
|
- --minimal)
|
215
|
|
- shift
|
216
|
|
- MINIMAL_INSTALL="$1"
|
217
|
|
- ;;
|
218
|
|
- --ssh|--sshport)
|
219
|
|
- shift
|
220
|
|
- SSH_PORT="$1"
|
221
|
|
- ;;
|
222
|
|
- -v|--variant)
|
223
|
|
- shift
|
224
|
|
- VARIANT="$1"
|
225
|
|
- ;;
|
226
|
|
- -o|--onion)
|
227
|
|
- shift
|
228
|
|
- ONION_ONLY="$1"
|
229
|
|
- ;;
|
230
|
|
- -a|--amnesic)
|
231
|
|
- shift
|
232
|
|
- AMNESIC="$1"
|
233
|
|
- ;;
|
234
|
|
- -r|--repo|--repository)
|
235
|
|
- shift
|
236
|
|
- PROJECT_REPO="$1"
|
237
|
|
- ;;
|
238
|
|
- -m|--mirror)
|
239
|
|
- shift
|
240
|
|
- MIRROR="$1"
|
241
|
|
- ;;
|
242
|
|
- --debianonly|--basic|--minimal)
|
243
|
|
- shift
|
244
|
|
- DEBIAN_INSTALL_ONLY="$1"
|
245
|
|
- ;;
|
246
|
|
- --interface|--if)
|
247
|
|
- shift
|
248
|
|
- WIFI_INTERFACE="$1"
|
249
|
|
- ;;
|
250
|
|
- --ssid|--essid)
|
251
|
|
- shift
|
252
|
|
- WIFI_SSID="$1"
|
253
|
|
- ;;
|
254
|
|
- --wifitype)
|
255
|
|
- shift
|
256
|
|
- WIFI_TYPE="$1"
|
257
|
|
- ;;
|
258
|
|
- --wifipass|--passphrase)
|
259
|
|
- shift
|
260
|
|
- WIFI_PASSPHRASE="$1"
|
261
|
|
- ;;
|
262
|
|
- --hotspot)
|
263
|
|
- shift
|
264
|
|
- if [[ $"$1" == $'yes' || $"$1" == $'y' ]]; then
|
265
|
|
- WIFI_HOTSPOT='yes'
|
266
|
|
- fi
|
267
|
|
- ;;
|
268
|
|
- --networks)
|
269
|
|
- shift
|
270
|
|
- WIFI_NETWORKS_FILE="$1"
|
271
|
|
- ;;
|
272
|
|
- --insecure)
|
273
|
|
- shift
|
274
|
|
- INSECURE="$1"
|
275
|
|
- ;;
|
276
|
|
- *)
|
277
|
|
- # unknown option
|
278
|
|
- ;;
|
279
|
|
- esac
|
280
|
|
- shift
|
|
146
|
+ key="$1"
|
|
147
|
+
|
|
148
|
+ case $key in
|
|
149
|
+ -h|--help)
|
|
150
|
+ show_help
|
|
151
|
+ ;;
|
|
152
|
+ -c|--config)
|
|
153
|
+ shift
|
|
154
|
+ CONFIG_FILENAME="$1"
|
|
155
|
+ if [ ! -f $CONFIG_FILENAME ]; then
|
|
156
|
+ echo $"Config file $CONFIG_FILENAME not found"
|
|
157
|
+ exit 3
|
|
158
|
+ fi
|
|
159
|
+ DEFAULT_DOMAIN_NAME=$(cat $CONFIG_FILENAME | grep 'DEFAULT_DOMAIN_NAME' | awk -F '=' '{print $2}')
|
|
160
|
+ ;;
|
|
161
|
+ -t|--target|--board)
|
|
162
|
+ shift
|
|
163
|
+ IMAGE_TYPE="$1"
|
|
164
|
+ ;;
|
|
165
|
+ -u|--user|--username)
|
|
166
|
+ shift
|
|
167
|
+ USERNAME="$1"
|
|
168
|
+ ;;
|
|
169
|
+ -p|--password)
|
|
170
|
+ shift
|
|
171
|
+ PASSWORD="$1"
|
|
172
|
+ if [ ${#PASSWORD} -lt $MINIMUM_PASSWORD_LENGTH ]; then
|
|
173
|
+ echo $"Your password chould contain at least ${MINIMUM_PASSWORD_LENGTH} characters"
|
|
174
|
+ exit 3628
|
|
175
|
+ fi
|
|
176
|
+ ;;
|
|
177
|
+ --sshkey|--sshpubkey|--pubkey)
|
|
178
|
+ shift
|
|
179
|
+ SSH_PUBKEY="$1"
|
|
180
|
+ ;;
|
|
181
|
+ -s|--size)
|
|
182
|
+ shift
|
|
183
|
+ IMAGE_SIZE="$1"
|
|
184
|
+ IMAGE_SIZE_SPECIFIED=1
|
|
185
|
+ ;;
|
|
186
|
+ # Box static IP address on the LAN
|
|
187
|
+ --ip)
|
|
188
|
+ shift
|
|
189
|
+ BOX_IP_ADDRESS="$1"
|
|
190
|
+ ;;
|
|
191
|
+ # Router IP address on the LAN
|
|
192
|
+ --iprouter)
|
|
193
|
+ shift
|
|
194
|
+ ROUTER_IP_ADDRESS="$1"
|
|
195
|
+ ;;
|
|
196
|
+ # nameserver 1
|
|
197
|
+ --ns1|--nameserver1)
|
|
198
|
+ shift
|
|
199
|
+ NAMESERVER1="$1"
|
|
200
|
+ ;;
|
|
201
|
+ # nameserver 2
|
|
202
|
+ --ns2|--nameserver2)
|
|
203
|
+ shift
|
|
204
|
+ NAMESERVER2="$1"
|
|
205
|
+ ;;
|
|
206
|
+ -i|--interactive)
|
|
207
|
+ shift
|
|
208
|
+ INTERACTIVE="$1"
|
|
209
|
+ ;;
|
|
210
|
+ -g|--generic)
|
|
211
|
+ shift
|
|
212
|
+ GENERIC_IMAGE="$1"
|
|
213
|
+ ;;
|
|
214
|
+ --minimal)
|
|
215
|
+ shift
|
|
216
|
+ MINIMAL_INSTALL="$1"
|
|
217
|
+ ;;
|
|
218
|
+ --ssh|--sshport)
|
|
219
|
+ shift
|
|
220
|
+ SSH_PORT="$1"
|
|
221
|
+ ;;
|
|
222
|
+ -v|--variant)
|
|
223
|
+ shift
|
|
224
|
+ VARIANT="$1"
|
|
225
|
+ ;;
|
|
226
|
+ -o|--onion)
|
|
227
|
+ shift
|
|
228
|
+ ONION_ONLY="$1"
|
|
229
|
+ ;;
|
|
230
|
+ -a|--amnesic)
|
|
231
|
+ shift
|
|
232
|
+ AMNESIC="$1"
|
|
233
|
+ ;;
|
|
234
|
+ -r|--repo|--repository)
|
|
235
|
+ shift
|
|
236
|
+ PROJECT_REPO="$1"
|
|
237
|
+ ;;
|
|
238
|
+ -m|--mirror)
|
|
239
|
+ shift
|
|
240
|
+ MIRROR="$1"
|
|
241
|
+ ;;
|
|
242
|
+ --debianonly|--basic|--minimal)
|
|
243
|
+ shift
|
|
244
|
+ DEBIAN_INSTALL_ONLY="$1"
|
|
245
|
+ ;;
|
|
246
|
+ --interface|--if)
|
|
247
|
+ shift
|
|
248
|
+ WIFI_INTERFACE="$1"
|
|
249
|
+ ;;
|
|
250
|
+ --ssid|--essid)
|
|
251
|
+ shift
|
|
252
|
+ WIFI_SSID="$1"
|
|
253
|
+ ;;
|
|
254
|
+ --wifitype)
|
|
255
|
+ shift
|
|
256
|
+ WIFI_TYPE="$1"
|
|
257
|
+ ;;
|
|
258
|
+ --wifipass|--passphrase)
|
|
259
|
+ shift
|
|
260
|
+ WIFI_PASSPHRASE="$1"
|
|
261
|
+ ;;
|
|
262
|
+ --hotspot)
|
|
263
|
+ shift
|
|
264
|
+ if [[ $"$1" == $'yes' || $"$1" == $'y' ]]; then
|
|
265
|
+ WIFI_HOTSPOT='yes'
|
|
266
|
+ fi
|
|
267
|
+ ;;
|
|
268
|
+ --networks)
|
|
269
|
+ shift
|
|
270
|
+ WIFI_NETWORKS_FILE="$1"
|
|
271
|
+ ;;
|
|
272
|
+ --insecure)
|
|
273
|
+ shift
|
|
274
|
+ INSECURE="$1"
|
|
275
|
+ ;;
|
|
276
|
+ *)
|
|
277
|
+ # unknown option
|
|
278
|
+ ;;
|
|
279
|
+ esac
|
|
280
|
+ shift
|
281
|
281
|
done
|
282
|
282
|
|
283
|
283
|
if [[ $INTERACTIVE == "yes" || $INTERACTIVE == "y" || $INTERACTIVE == "Yes" ]]; then
|
284
|
|
- ${PROJECT_NAME}-config --minimal "$MINIMAL_INSTALL"
|
285
|
|
- if [ -f freedombone.cfg ]; then
|
286
|
|
- CONFIG_FILENAME=freedombone.cfg
|
287
|
|
- DEFAULT_DOMAIN_NAME=$(cat $CONFIG_FILENAME | grep 'DEFAULT_DOMAIN_NAME' | awk -F '=' '{print $2}')
|
288
|
|
- fi
|
|
284
|
+ ${PROJECT_NAME}-config --minimal "$MINIMAL_INSTALL"
|
|
285
|
+ if [ -f freedombone.cfg ]; then
|
|
286
|
+ CONFIG_FILENAME=freedombone.cfg
|
|
287
|
+ DEFAULT_DOMAIN_NAME=$(cat $CONFIG_FILENAME | grep 'DEFAULT_DOMAIN_NAME' | awk -F '=' '{print $2}')
|
|
288
|
+ fi
|
289
|
289
|
fi
|
290
|
290
|
|
291
|
291
|
if [[ $GENERIC_IMAGE == "yes" ]]; then
|
292
|
|
- USERNAME=$GENERIC_IMAGE_USERNAME
|
293
|
|
- PASSWORD=$GENERIC_IMAGE_PASSWORD
|
|
292
|
+ USERNAME=$GENERIC_IMAGE_USERNAME
|
|
293
|
+ PASSWORD=$GENERIC_IMAGE_PASSWORD
|
294
|
294
|
fi
|
295
|
295
|
|
296
|
296
|
if [ ! $PASSWORD ]; then
|
297
|
|
- # generate a random password
|
298
|
|
- PASSWORD="$(openssl rand -base64 30 | cut -c1-${MINIMUM_PASSWORD_LENGTH})"
|
|
297
|
+ # generate a random password
|
|
298
|
+ PASSWORD="$(openssl rand -base64 30 | cut -c1-${MINIMUM_PASSWORD_LENGTH})"
|
299
|
299
|
fi
|
300
|
300
|
|
301
|
301
|
# Move any existing images into a build subdirectory
|
302
|
302
|
image_types=( xz img sig vdi qcow2 )
|
303
|
303
|
for im in "${image_types[@]}"
|
304
|
304
|
do
|
305
|
|
- no_of_files=$(ls -afq ${CURR_DIR}/${PROJECT_NAME}*.${im} | wc -l)
|
306
|
|
- if (( no_of_files > 0 )); then
|
307
|
|
- if [ ! -d ${CURR_DIR}/build ]; then
|
308
|
|
- mkdir ${CURR_DIR}/build
|
309
|
|
- fi
|
310
|
|
- mv -f ${CURR_DIR}/${PROJECT_NAME}*.${im} ${CURR_DIR}/build
|
311
|
|
- fi
|
|
305
|
+ no_of_files=$(ls -afq ${CURR_DIR}/${PROJECT_NAME}*.${im} | wc -l)
|
|
306
|
+ if (( no_of_files > 0 )); then
|
|
307
|
+ if [ ! -d ${CURR_DIR}/build ]; then
|
|
308
|
+ mkdir ${CURR_DIR}/build
|
|
309
|
+ fi
|
|
310
|
+ mv -f ${CURR_DIR}/${PROJECT_NAME}*.${im} ${CURR_DIR}/build
|
|
311
|
+ fi
|
312
|
312
|
done
|
313
|
313
|
|
314
|
314
|
# Delete anything which didn't move
|
315
|
315
|
for im in "${image_types[@]}"
|
316
|
316
|
do
|
317
|
|
- no_of_files=$(ls -afq ${CURR_DIR}/${PROJECT_NAME}*.${im} | wc -l)
|
318
|
|
- if (( no_of_files > 0 )); then
|
319
|
|
- rm -f ${CURR_DIR}/${PROJECT_NAME}*.${im}
|
320
|
|
- fi
|
|
317
|
+ no_of_files=$(ls -afq ${CURR_DIR}/${PROJECT_NAME}*.${im} | wc -l)
|
|
318
|
+ if (( no_of_files > 0 )); then
|
|
319
|
+ rm -f ${CURR_DIR}/${PROJECT_NAME}*.${im}
|
|
320
|
+ fi
|
321
|
321
|
done
|
322
|
322
|
|
323
|
323
|
# Remove any existing login credentials file
|
324
|
324
|
if [ -f ${CURR_DIR}/${PROJECT_NAME}_login_credentials.txt ]; then
|
325
|
|
- rm ${CURR_DIR}/${PROJECT_NAME}_login_credentials.txt
|
|
325
|
+ rm ${CURR_DIR}/${PROJECT_NAME}_login_credentials.txt
|
326
|
326
|
fi
|
327
|
327
|
|
328
|
328
|
if [ -d $TEMPBUILD_DIR ]; then
|
329
|
|
- rm -rf $TEMPBUILD_DIR
|
|
329
|
+ rm -rf $TEMPBUILD_DIR
|
330
|
330
|
fi
|
331
|
331
|
mkdir -p $TEMPBUILD_DIR
|
332
|
332
|
if [ -f /usr/local/bin/$MAKEFILE ]; then
|
333
|
|
- cp /usr/local/bin/$MAKEFILE $TEMPBUILD_DIR/Makefile
|
|
333
|
+ cp /usr/local/bin/$MAKEFILE $TEMPBUILD_DIR/Makefile
|
334
|
334
|
else
|
335
|
|
- cp /usr/bin/$MAKEFILE $TEMPBUILD_DIR/Makefile
|
|
335
|
+ cp /usr/bin/$MAKEFILE $TEMPBUILD_DIR/Makefile
|
336
|
336
|
fi
|
337
|
337
|
|
338
|
338
|
cp -r /etc/${PROJECT_NAME}/* $TEMPBUILD_DIR
|
|
@@ -341,99 +341,99 @@ chown -R $CURR_USER:$CURR_USER $TEMPBUILD_DIR
|
341
|
341
|
cd $TEMPBUILD_DIR
|
342
|
342
|
|
343
|
343
|
if [[ $MINIMAL_INSTALL == "yes" ]]; then
|
344
|
|
- IMAGE_NAME=$'min'
|
|
344
|
+ IMAGE_NAME=$'min'
|
345
|
345
|
fi
|
346
|
346
|
|
347
|
347
|
if [[ $ONION_ONLY != "no" ]]; then
|
348
|
|
- IMAGE_NAME=$'onion'
|
|
348
|
+ IMAGE_NAME=$'onion'
|
349
|
349
|
fi
|
350
|
350
|
|
351
|
351
|
if [[ $VARIANT == 'mesh' ]]; then
|
352
|
|
- IMAGE_NAME=$'mesh'
|
353
|
|
- # typically not much disk space is needed for a mesh node
|
354
|
|
- if [ ! $IMAGE_SIZE_SPECIFIED ]; then
|
355
|
|
- IMAGE_SIZE=2G
|
356
|
|
- fi
|
|
352
|
+ IMAGE_NAME=$'mesh'
|
|
353
|
+ # typically not much disk space is needed for a mesh node
|
|
354
|
+ if [ ! $IMAGE_SIZE_SPECIFIED ]; then
|
|
355
|
+ IMAGE_SIZE=2G
|
|
356
|
+ fi
|
357
|
357
|
fi
|
358
|
358
|
|
359
|
359
|
if [[ $VARIANT == 'meshclient' || $VARIANT == 'meshusb' ]]; then
|
360
|
|
- IMAGE_NAME=$'meshclient'
|
361
|
|
- if [ ! $IMAGE_SIZE_SPECIFIED ]; then
|
362
|
|
- IMAGE_SIZE=6G
|
363
|
|
- fi
|
|
360
|
+ IMAGE_NAME=$'meshclient'
|
|
361
|
+ if [ ! $IMAGE_SIZE_SPECIFIED ]; then
|
|
362
|
+ IMAGE_SIZE=6G
|
|
363
|
+ fi
|
364
|
364
|
fi
|
365
|
365
|
|
366
|
366
|
if [[ $VARIANT == 'usb' ]]; then
|
367
|
|
- IMAGE_NAME=$'usb'
|
|
367
|
+ IMAGE_NAME=$'usb'
|
368
|
368
|
fi
|
369
|
369
|
|
370
|
370
|
# append amnesic to the image name if needed
|
371
|
371
|
if [[ $AMNESIC != 'no' ]]; then
|
372
|
|
- IMAGE_NAME="${IMAGE_NAME}-amnesic"
|
|
372
|
+ IMAGE_NAME="${IMAGE_NAME}-amnesic"
|
373
|
373
|
fi
|
374
|
374
|
|
375
|
375
|
cd $TEMPBUILD_DIR
|
376
|
376
|
make $IMAGE_TYPE \
|
377
|
|
- MYUSERNAME="$USERNAME" \
|
378
|
|
- MYPASSWORD="$PASSWORD" \
|
379
|
|
- ROUTER_IP_ADDRESS="$ROUTER_IP_ADDRESS" \
|
380
|
|
- BOX_IP_ADDRESS="$BOX_IP_ADDRESS" \
|
381
|
|
- NAMESERVER1="$NAMESERVER1" \
|
382
|
|
- NAMESERVER2="$NAMESERVER2" \
|
383
|
|
- PROJECT_NAME="$PROJECT_NAME" \
|
384
|
|
- CONFIG_FILENAME="$CONFIG_FILENAME" \
|
385
|
|
- IMAGE_SIZE="$IMAGE_SIZE" \
|
386
|
|
- SSH_PUBKEY="$SSH_PUBKEY" \
|
387
|
|
- GENERIC_IMAGE="$GENERIC_IMAGE" \
|
388
|
|
- MINIMAL_INSTALL="$MINIMAL_INSTALL" \
|
389
|
|
- SSH_PORT="$SSH_PORT" \
|
390
|
|
- ONION_ONLY="$ONION_ONLY" \
|
391
|
|
- IMAGE_NAME="$IMAGE_NAME" \
|
392
|
|
- PROJECT_REPO="$PROJECT_REPO" \
|
393
|
|
- MIRROR="$MIRROR" \
|
394
|
|
- BUILD_MIRROR="$MIRROR" \
|
395
|
|
- DEBIAN_INSTALL_ONLY="$DEBIAN_INSTALL_ONLY" \
|
396
|
|
- WIFI_INTERFACE="$WIFI_INTERFACE" \
|
397
|
|
- WIFI_SSID="$WIFI_SSID" \
|
398
|
|
- WIFI_TYPE="$WIFI_TYPE" \
|
399
|
|
- WIFI_PASSPHRASE="$WIFI_PASSPHRASE" \
|
400
|
|
- WIFI_HOTSPOT="$WIFI_HOTSPOT" \
|
401
|
|
- WIFI_NETWORKS_FILE="$WIFI_NETWORKS_FILE" \
|
402
|
|
- VARIANT="$VARIANT" \
|
403
|
|
- MINIMUM_PASSWORD_LENGTH="$MINIMUM_PASSWORD_LENGTH" \
|
404
|
|
- INSECURE="$INSECURE" \
|
405
|
|
- AMNESIC="$AMNESIC"
|
|
377
|
+ MYUSERNAME="$USERNAME" \
|
|
378
|
+ MYPASSWORD="$PASSWORD" \
|
|
379
|
+ ROUTER_IP_ADDRESS="$ROUTER_IP_ADDRESS" \
|
|
380
|
+ BOX_IP_ADDRESS="$BOX_IP_ADDRESS" \
|
|
381
|
+ NAMESERVER1="$NAMESERVER1" \
|
|
382
|
+ NAMESERVER2="$NAMESERVER2" \
|
|
383
|
+ PROJECT_NAME="$PROJECT_NAME" \
|
|
384
|
+ CONFIG_FILENAME="$CONFIG_FILENAME" \
|
|
385
|
+ IMAGE_SIZE="$IMAGE_SIZE" \
|
|
386
|
+ SSH_PUBKEY="$SSH_PUBKEY" \
|
|
387
|
+ GENERIC_IMAGE="$GENERIC_IMAGE" \
|
|
388
|
+ MINIMAL_INSTALL="$MINIMAL_INSTALL" \
|
|
389
|
+ SSH_PORT="$SSH_PORT" \
|
|
390
|
+ ONION_ONLY="$ONION_ONLY" \
|
|
391
|
+ IMAGE_NAME="$IMAGE_NAME" \
|
|
392
|
+ PROJECT_REPO="$PROJECT_REPO" \
|
|
393
|
+ MIRROR="$MIRROR" \
|
|
394
|
+ BUILD_MIRROR="$MIRROR" \
|
|
395
|
+ DEBIAN_INSTALL_ONLY="$DEBIAN_INSTALL_ONLY" \
|
|
396
|
+ WIFI_INTERFACE="$WIFI_INTERFACE" \
|
|
397
|
+ WIFI_SSID="$WIFI_SSID" \
|
|
398
|
+ WIFI_TYPE="$WIFI_TYPE" \
|
|
399
|
+ WIFI_PASSPHRASE="$WIFI_PASSPHRASE" \
|
|
400
|
+ WIFI_HOTSPOT="$WIFI_HOTSPOT" \
|
|
401
|
+ WIFI_NETWORKS_FILE="$WIFI_NETWORKS_FILE" \
|
|
402
|
+ VARIANT="$VARIANT" \
|
|
403
|
+ MINIMUM_PASSWORD_LENGTH="$MINIMUM_PASSWORD_LENGTH" \
|
|
404
|
+ INSECURE="$INSECURE" \
|
|
405
|
+ AMNESIC="$AMNESIC"
|
406
|
406
|
|
407
|
407
|
if [ ! "$?" = "0" ]; then
|
408
|
|
- echo $'Build failed'
|
409
|
|
- rm -rf $TEMPBUILD_DIR
|
410
|
|
- exit 1
|
|
408
|
+ echo $'Build failed'
|
|
409
|
+ rm -rf $TEMPBUILD_DIR
|
|
410
|
+ exit 1
|
411
|
411
|
fi
|
412
|
412
|
|
413
|
413
|
EXPECTED_EXTENSION='xz'
|
414
|
414
|
if [[ $IMAGE_TYPE == "qemu"* ]]; then
|
415
|
|
- EXPECTED_EXTENSION='qcow2'
|
|
415
|
+ EXPECTED_EXTENSION='qcow2'
|
416
|
416
|
fi
|
417
|
417
|
if [[ $IMAGE_TYPE == "virtualbox"* ]]; then
|
418
|
|
- EXPECTED_EXTENSION='vdi'
|
|
418
|
+ EXPECTED_EXTENSION='vdi'
|
419
|
419
|
fi
|
420
|
420
|
|
421
|
421
|
shopt -s nullglob
|
422
|
422
|
imgfiles=(build/${PROJECT_NAME}*.${EXPECTED_EXTENSION})
|
423
|
423
|
if [ ${#imgfiles[@]} -eq 0 ]; then
|
424
|
|
- echo $'Image was not created'
|
425
|
|
- rm -rf $TEMPBUILD_DIR
|
426
|
|
- exit 2
|
|
424
|
+ echo $'Image was not created'
|
|
425
|
+ rm -rf $TEMPBUILD_DIR
|
|
426
|
+ exit 2
|
427
|
427
|
fi
|
428
|
428
|
|
429
|
429
|
# Move images from temporary directory to the current directory
|
430
|
430
|
for im in "${image_types[@]}"
|
431
|
431
|
do
|
432
|
|
- no_of_files=$(ls -afq build/${PROJECT_NAME}*.${im} | wc -l)
|
433
|
|
- if (( no_of_files > 0 )); then
|
434
|
|
- mv build/${PROJECT_NAME}*.${im} ${CURR_DIR}/
|
435
|
|
- sudo chown ${CURR_USER}:${CURR_USER} ${CURR_DIR}/*.${im}
|
436
|
|
- fi
|
|
432
|
+ no_of_files=$(ls -afq build/${PROJECT_NAME}*.${im} | wc -l)
|
|
433
|
+ if (( no_of_files > 0 )); then
|
|
434
|
+ mv build/${PROJECT_NAME}*.${im} ${CURR_DIR}/
|
|
435
|
+ sudo chown ${CURR_USER}:${CURR_USER} ${CURR_DIR}/*.${im}
|
|
436
|
+ fi
|
437
|
437
|
done
|
438
|
438
|
|
439
|
439
|
# Remove the temporary directory
|
|
@@ -442,38 +442,45 @@ rm -rf ${TEMPBUILD_DIR}
|
442
|
442
|
cd ${CURR_DIR}
|
443
|
443
|
|
444
|
444
|
clear
|
445
|
|
-echo $"
|
|
445
|
+if [[ $VARIANT != 'meshclient' && $VARIANT != 'meshusb' && $VARIANT != 'mesh' ]]; then
|
|
446
|
+ echo $"
|
446
|
447
|
Image was created.
|
447
|
448
|
|
448
|
449
|
You will be able to log into it with:
|
449
|
450
|
"
|
450
|
|
-if [[ $IMAGE_TYPE != "virtualbox"* && $IMAGE_TYPE != "qemu"* ]]; then
|
451
|
|
- echo $" ssh $USERNAME@$DEFAULT_DOMAIN_NAME -p $SSH_PORT
|
|
451
|
+ if [[ $IMAGE_TYPE != "virtualbox"* && $IMAGE_TYPE != "qemu"* ]]; then
|
|
452
|
+ echo $" ssh $USERNAME@$DEFAULT_DOMAIN_NAME -p $SSH_PORT
|
452
|
453
|
|
453
|
454
|
Password: $PASSWORD
|
454
|
455
|
"
|
455
|
|
-else
|
456
|
|
- if [[ $IMAGE_TYPE != "qemu"* ]]; then
|
457
|
|
- echo $" Username: $USERNAME
|
|
456
|
+ else
|
|
457
|
+ if [[ $IMAGE_TYPE != "qemu"* ]]; then
|
|
458
|
+ echo $" Username: $USERNAME
|
458
|
459
|
Password: $PASSWORD
|
459
|
460
|
"
|
460
|
|
- else
|
461
|
|
- if [[ $IMAGE_TYPE != "qemu-x86_64"* && $IMAGE_TYPE != "qemu-amd64"* ]]; then
|
462
|
|
- echo "qemu-system-i386 -m ${VM_MEMORY} $(ls ${PROJECT_NAME}*.qcow2)"
|
463
|
|
- else
|
464
|
|
- echo "qemu-system-x86_64 -m ${VM_MEMORY} $(ls ${PROJECT_NAME}*.qcow2)"
|
465
|
|
- fi
|
466
|
|
- echo $"
|
|
461
|
+ else
|
|
462
|
+ if [[ $IMAGE_TYPE != "qemu-x86_64"* && $IMAGE_TYPE != "qemu-amd64"* ]]; then
|
|
463
|
+ echo "qemu-system-i386 -m ${VM_MEMORY} $(ls ${PROJECT_NAME}*.qcow2)"
|
|
464
|
+ else
|
|
465
|
+ echo "qemu-system-x86_64 -m ${VM_MEMORY} $(ls ${PROJECT_NAME}*.qcow2)"
|
|
466
|
+ fi
|
|
467
|
+ echo $"
|
467
|
468
|
Username: $USERNAME
|
468
|
469
|
Password: $PASSWORD
|
469
|
470
|
"
|
470
|
|
- fi
|
|
471
|
+ fi
|
|
472
|
+ fi
|
|
473
|
+else
|
|
474
|
+ echo $"
|
|
475
|
+Image was created.
|
|
476
|
+"
|
471
|
477
|
fi
|
|
478
|
+
|
472
|
479
|
ls -lh ${PROJECT_NAME}*.img ${PROJECT_NAME}*.sig ${PROJECT_NAME}*.xz ${PROJECT_NAME}*.vdi ${PROJECT_NAME}*.qcow2
|
473
|
480
|
|
474
|
481
|
# Remove the mesh script after use
|
475
|
482
|
if [[ $VARIANT == "mesh"* ]]; then
|
476
|
|
- rm -f $CONFIG_FILENAME
|
|
483
|
+ rm -f $CONFIG_FILENAME
|
477
|
484
|
fi
|
478
|
485
|
|
479
|
486
|
# record the default login credentials for later use
|
|
@@ -482,12 +489,16 @@ Password: $PASSWORD" > ${CURR_DIR}/${PROJECT_NAME}_login_credentials.txt
|
482
|
489
|
chmod 600 ${CURR_DIR}/${PROJECT_NAME}_login_credentials.txt
|
483
|
490
|
|
484
|
491
|
if [[ $IMAGE_TYPE != "virtualbox"* && $IMAGE_TYPE != "qemu"* ]]; then
|
485
|
|
- echo ''
|
486
|
|
- echo $'You can copy the image to a microSD card with:'
|
487
|
|
- echo ''
|
488
|
|
- echo " unxz -k ${PROJECT_NAME}*.img.xz"
|
489
|
|
- echo " sudo dd bs=1M if=${PROJECT_NAME}*.img of=/dev/sdX conv=fdatasync"
|
490
|
|
- echo ''
|
|
492
|
+ echo ''
|
|
493
|
+ if [[ $VARIANT != 'meshclient' && $VARIANT != 'meshusb' ]]; then
|
|
494
|
+ echo $'You can copy the image to a microSD card with:'
|
|
495
|
+ else
|
|
496
|
+ echo $'You can copy the image to a USB drive with:'
|
|
497
|
+ fi
|
|
498
|
+ echo ''
|
|
499
|
+ echo " unxz -k ${PROJECT_NAME}*.img.xz"
|
|
500
|
+ echo " sudo dd bs=1M if=${PROJECT_NAME}*.img of=/dev/sdX conv=fdatasync"
|
|
501
|
+ echo ''
|
491
|
502
|
fi
|
492
|
503
|
|
493
|
504
|
exit 0
|