install_on_devices   [plain text]


#!/bin/zsh

roots="/tmp/security.roots.tgz"
syms="/tmp/security.syms.tgz"
srcs="/tmp/security.src.tgz"
sshopts=(-o CheckHostIP=no -o StrictHostKeyChecking=no -o NoHostAuthenticationForLocalhost=yes -o UserKnownHostsFile=/dev/null)

locations=(`mobdev list | awk '/UDID/ { gsub(/^(.*location ID = )+|(,.*)+$/, ""); print}'`)

mysrcdir=`pwd`
port_offset=20000

symdir="/var/mobile/secsyms"

for location in $locations
do
	echo 'Installing to location '"$location"

	tcprelay --portoffset $port_offset --locationid $location ssh >/dev/null 2>&1 &

	(( sshport = $port_offset + 22 ))

	echo "Copying roots to device (via port $sshport)"
	scp -P $sshport $sshopts $roots $syms $srcs root@localhost:/var/mobile/

	echo "SSH to device and do commands"
	ssh  $sshopts -p $sshport root@localhost << END
/bin/hostname
/sbin/mount -uw /
mkdir -p /var/mobile/syms
mkdir -p /var/mobile/srcs
rm -rf /var/mobile/syms/*
rm -rf /var/mobile/srcs/*
/usr/local/bin/darwinup install "/var/mobile/`basename $roots`" | grep -v '^  /'
/usr/local/bin/darwinup uninstall superseded > /dev/null 2>&1 || true
touch /System/Library/Caches/com.apple.xpcd/xpcd_cache.dylib
/usr/local/bin/mobile_install rebuild internal
/bin/launchctl stop com.apple.securityd
/bin/launchctl stop com.apple.security.cloudkeychainproxy3
/bin/launchctl stop com.apple.security.CircleJoinRequest
tar -xzvf "/var/mobile/`basename $syms`" -C /var/mobile/syms >/dev/null
tar -xzvf "/var/mobile/`basename $srcs`" -C /var/mobile/srcs >/dev/null
END

	kill -HUP %%
done

echo "in lldb: settings set target.source-map ""$mysrcdir"" /var/mobile/srcs/"
echo "in lldb: add-dsym /var/mobile/syms/securityd.dSYM"