diff options
| -rw-r--r-- | ship/lib/core | 9 | ||||
| -rw-r--r-- | ship/lib/network | 13 | ||||
| -rw-r--r-- | ship/lib/tor | 19 | ||||
| -rwxr-xr-x | ship/src/remaster_iso | 64 | ||||
| -rwxr-xr-x | ship/src/tor_publish_ssh | 17 | 
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 | 
