summaryrefslogtreecommitdiffstats
path: root/ship
diff options
context:
space:
mode:
Diffstat (limited to 'ship')
-rw-r--r--ship/lib/core9
-rw-r--r--ship/lib/network13
-rw-r--r--ship/lib/tor19
-rwxr-xr-xship/src/remaster_iso64
-rwxr-xr-xship/src/tor_publish_ssh17
5 files changed, 101 insertions, 21 deletions
diff --git a/ship/lib/core b/ship/lib/core
index 3a6b33ff..1ef1fbf9 100644
--- a/ship/lib/core
+++ b/ship/lib/core
@@ -2,15 +2,22 @@
msg() { printf "$@\n" >&2 ;}
info() { msg "** $@" ;}
error() { msg "!! $@" ;}
+die() { error "$@" ;exit 1;}
exists(){ type "$1" >/dev/null 2>/dev/null; }
is_root(){
test $(id -u) -eq 0
+}
+
+defer(){
+ #close enough
+ trapstr="$1;${trapstr:-exit}"
+ trap "$trapstr" INT TERM EXIT KILL
}
esudo(){
# becomes root with sudo powers
# unless nosudo env is set
- if test "${nosudo-false}" != true || is_root; then
+ if test "${nosudo-false}" != true && ! is_root; then
echo "we're going sudo..." >&2
exec sudo -E "$0" "$@"
exit 23 # go to hell
diff --git a/ship/lib/network b/ship/lib/network
index 0e494514..74edcbac 100644
--- a/ship/lib/network
+++ b/ship/lib/network
@@ -46,15 +46,16 @@ which_telnet(){
# netcat
# busybox telnet
if [ -e "${TELNET:-does_not_exist}" ]; then
- info"Will be using $TELNET as Telnet Client"
+ info "Will be using $TELNET as Telnet Client"
+ echo $TELNET
elif exists telnet ;then
- TELNET="$(command -v telnet)"
+ command -v telnet
elif exists nc ;then
- TELNET="$(command -v nc)"
+ command -v nc
elif exists netcat;then
- echo "$(command -v netcat)"
+ command -v netcat
elif exists busybox;then
- echo "$(command -v busybox) telnet"
+ echo `command -v busybox` telnet
else
error "Cannot find telnet binary, please install either telnet-client or busybox or netcat or provided TELNET environment.\nbailing out!"
return 1
@@ -64,7 +65,7 @@ which_telnet(){
run_telnet(){
host="$1"
port="$2"
- $(which_telnet) $host $port
+ $(which_telnet) "$host" "$port"
}
send_irc(){
diff --git a/ship/lib/tor b/ship/lib/tor
new file mode 100644
index 00000000..8d9e33f1
--- /dev/null
+++ b/ship/lib/tor
@@ -0,0 +1,19 @@
+# can be set via env:
+# torrc - path to torrc (default: /etc/tor/torrc )
+# hidden_service_dir - path to hidden service (default: /var/lib/tor/hidden_service/ )
+
+
+torrc=${torrc:-/etc/tor/torrc}
+hidden_service_dir=${hidden_service_dir:-/var/lib/tor/hidden_service/}
+
+configure_hidden_service(){
+ if ! grep -q '^HiddenService' "$torrc" ;then
+ info "adding hidden service to $torrc"
+ cat >> "$torrc" << EOF
+HiddenServiceDir ${hidden_service_dir}
+HiddenServicePort 22 127.0.0.1:22
+EOF
+ else
+ info "HiddenServiceDir or Port already in $torrc, skipping!"
+ fi
+}
diff --git a/ship/src/remaster_iso b/ship/src/remaster_iso
new file mode 100755
index 00000000..a10034c9
--- /dev/null
+++ b/ship/src/remaster_iso
@@ -0,0 +1,64 @@
+#!/bin/sh
+#@include core
+set -efu
+isofile=${1:-archlinux-2013.06.01-dual.iso}
+outfile=$(basename ${isofile%.iso}.krebs.iso)
+info "outfile will be at $outfile"
+bdir=${bdir:-$HOME/build/arch}
+isodir=$bdir/iso
+isomnt=$bdir/isomount
+rootdir=$bdir/root
+outdir=$bdir/out
+info "bdir is at $bdir"
+[ ! -e "$isofile" ] && die "$isofile does not exist,bailing out"
+esudo "$@"
+
+
+#punani install genisoimage
+
+
+info "cleanup root dir"
+rm -rf $bdir
+mkdir -p $isomnt $rootdir
+info "mounting isofile ($isofile)"
+if is_root;then
+ mount -t iso9660 -o loop,ro $isofile $isomnt
+else
+ error "we are not root enough to mount the iso. Bailing Out"
+ exit 1
+
+fi
+defer "info 'unmounting $isomnt';umount $isomnt"
+
+info "copying from '$isomnt' to '$isodir'"
+cp -a "$isomnt" "$isodir"
+defer "info 'removing $isodir';rm -rf $isodir"
+info "extracting root-image squashfs"
+# we will not touch the kernel ... yet
+
+for arch in x86_64 i686;do
+ info "unpacking $isomnt/arch/$arch/root-image.fs.sfs"
+ mkdir -p "$outdir/$arch"
+ defer "info 'removing $outdir/$arch';rm -rf $outdir/$arch"
+ mkdir -p "$rootdir/$arch"
+ defer "info 'removing $rootdir/$arch';rm -rf $rootdir/$arch"
+ unsquashfs -f -d "$outdir/$arch" "$isodir/arch/$arch/root-image.fs.sfs"
+
+ mount "$outdir/$arch/root-image.fs" "$rootdir/$arch"
+ defer "info 'unmounting $rootdir/$arch';umount $rootdir/$arch"
+
+ info "Starting of the rootdir verkrepelung"
+ # do the magic here
+ arch-chroot $rootdir/$arch <<EOF
+ uname -a
+EOF
+ info "creating squashfs at $isodir/arch/$arch/root-image.fs.sfs"
+ mksquashfs "$outdir/$arch/root-image.fs" "$isodir/arch/$arch/root-image.fs.sfs" -noappend
+done
+
+info "creating Iso Image"
+genisoimage -l -r -J -V "ARCH_$(date +%Y%m)" \
+ -b isolinux/isolinux.bin -no-emul-boot \
+ -boot-load-size 4 -boot-info-table -c isolinux/boot.cat \
+ -o "$outdir/$outfile" "$isodir" | to_dots
+
diff --git a/ship/src/tor_publish_ssh b/ship/src/tor_publish_ssh
index df904444..14cb9cb4 100755
--- a/ship/src/tor_publish_ssh
+++ b/ship/src/tor_publish_ssh
@@ -2,24 +2,13 @@
#@include core
#@include network
#@include punani
-# can be set via env:
-# torrc - path to torrc (default: /etc/tor/torrc )
-# hidden_service_dir - path to hidden service (default: /var/lib/tor/hidden_service/ )
+#@include tor
+
-torrc=${torrc:-/etc/tor/torrc}
-hidden_service_dir=${hidden_service_dir:-/var/lib/tor/hidden_service/}
punani install tor
test -w "$torrc" || ( error "$torrc is not writable!"; exit 1 ) || exit 1
-if ! grep -q '^HiddenService' "$torrc" ;then
- info "adding hidden service to $torrc"
- cat >> "$torrc" << EOF
-HiddenServiceDir ${hidden_service_dir}
-HiddenServicePort 22 127.0.0.1:22
-EOF
-else
- info "HiddenServiceDir or Port already in $torrc, skipping!"
-fi
+configure_hidden_service
cat $hidden_service_dir/hostname | send_irc