cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# $Id$
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync## @file
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# VirtualBox Validation Kit - TestBoxScript Service Setup on Mac OS X (darwin).
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync#
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync#
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Copyright (C) 2006-2014 Oracle Corporation
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync#
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# available from http://www.virtualbox.org. This file is free software;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# you can redistribute it and/or modify it under the terms of the GNU
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# General Public License (GPL) as published by the Free Software
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync#
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# The contents of this file may alternatively be used under the terms
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# of the Common Development and Distribution License Version 1.0
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# (CDDL) only, as it comes in the "COPYING.CDDL" file of the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# VirtualBox OSE distribution, in which case the provisions of the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# CDDL are applicable instead of those of the GPL.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync#
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# You may elect to license modified versions of this file under the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# terms and conditions of either the GPL or the CDDL or both.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync#
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncMY_CONFIG_FILE=/Library/LaunchDaemons/org.virtualbox.testboxscript.plist
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync##
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Checks for a boolean option pair --$2/--no-$2 in the XMLARGS variable,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# storing the result in the TESTBOXSCRIPT_XXX variable $1.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdarwin_check_for_option_bool() {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync MY_TMP=`echo "${XMLARGS}" | sed -ne 's|^.*<string>--'"$2"'</string>.*$|yes|p'`
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -n "${MY_TMP}" ]; then
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync eval $1="yes";
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync MY_TMP=`echo "${XMLARGS}" | sed -ne 's|^.*<string>--no-'"$2"'</string>.*$|yes|p'`
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -n "${MY_TMP}" ]; then
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync eval $1="no";
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync return 0;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync}
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync##
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Checks for an option $2 taking an argument, storing the result in the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# TESTBOXSCRIPT_XXX variable $1.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdarwin_check_for_option_arg() {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync MY_TMP=`echo "${XMLARGS}" | sed -ne 's|^.*<string>--'"$2"'</string> *<string>\([^<>]*\)</string>.*$|\1|p'`
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -n "${MY_TMP}" ]; then
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync eval $1="\"${MY_TMP}\"";
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync return 0;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync}
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync##
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Loads config values from the current installation.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync#
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncos_load_config() {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -r "${MY_CONFIG_FILE}" ]; then
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync # User.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync MY_TMP=`/usr/bin/tr '\n' ' ' < "${MY_CONFIG_FILE}" \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync | /usr/bin/sed \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync -e 's/ */ /g' \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync -e 's|\(</[[:alnum:]]*>\)<|\1 <|g' \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync -e 's|^.*<key>UserName</key> *<string>\([^<>]*\)</string>.*$|\1|'`;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -n "${MY_TMP}" ]; then
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync TESTBOXSCRIPT_USER="${MY_TMP}";
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync # Arguments.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync XMLARGS=`/usr/bin/tr '\n' ' ' < "${MY_CONFIG_FILE}" \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync | /usr/bin/sed \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync -e 's/ */ /g' \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync -e 's|\(</[[:alnum:]]*>\)<|\1 <|g' \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync -e 's|^.*ProgramArguments</key> *<array> *\(.*\)</array>.*$|\1|'`;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync darwin_check_for_option_arg TESTBOXSCRIPT_SYSTEM_UUID system-uuid
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync darwin_check_for_option_arg TESTBOXSCRIPT_SCRATCH_ROOT scratch-root
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync darwin_check_for_option_arg TESTBOXSCRIPT_TEST_MANAGER test-manager
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync darwin_check_for_option_bool TESTBOXSCRIPT_HWVIRT hwvirt
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync darwin_check_for_option_bool TESTBOXSCRIPT_NESTED_PAGING nested-paging
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync darwin_check_for_option_bool TESTBOXSCRIPT_IOMMU io-mmu
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync darwin_check_for_option_arg TESTBOXSCRIPT_BUILDS_PATH builds-path
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync darwin_check_for_option_arg TESTBOXSCRIPT_BUILDS_TYPE builds-server-type
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync darwin_check_for_option_arg TESTBOXSCRIPT_BUILDS_NAME builds-server-name
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync darwin_check_for_option_arg TESTBOXSCRIPT_BUILDS_SHARE builds-server-share
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync darwin_check_for_option_arg TESTBOXSCRIPT_BUILDS_USER builds-server-user
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync darwin_check_for_option_arg TESTBOXSCRIPT_BUILDS_PASSWD builds-server-passwd
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync darwin_check_for_option_arg TESTBOXSCRIPT_TESTRSRC_PATH testrsrc-path
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync darwin_check_for_option_arg TESTBOXSCRIPT_TESTRSRC_TYPE testrsrc-server-type
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync darwin_check_for_option_arg TESTBOXSCRIPT_TESTRSRC_NAME testrsrc-server-name
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync darwin_check_for_option_arg TESTBOXSCRIPT_TESTRSRC_SHARE testrsrc-server-share
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync darwin_check_for_option_arg TESTBOXSCRIPT_TESTRSRC_USER testrsrc-server-user
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync darwin_check_for_option_arg TESTBOXSCRIPT_TESTRSRC_PASSWD testrsrc-server-passwd
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync ## @TODO darwin_check_for_option_arg TESTBOXSCRIPT_PYTHON python
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync}
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync##
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Adds an argument ($1) to MY_ARGV (XML plist format).
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync#
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncdarwin_add_args() {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync while [ $# -gt 0 ];
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync do
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync case "$1" in
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync *\<* | *\>* | *\&*)
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync MY_TMP='`echo "$1" | sed -e 's/&/&amp;/g' -e 's/</&lt;/g' -e 's/>/&gt;/g'`';
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync MY_ARGV="${MY_ARGV} <string>${MY_TMP}</string>";
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync ;;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync *)
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync MY_ARGV="${MY_ARGV} <string>$1</string>";
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync ;;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync esac
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync shift;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync done
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync MY_ARGV="${MY_ARGV}"'
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync ';
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync return 0;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync}
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncos_install_service() {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync MY_ARGV=""
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -n "${TESTBOXSCRIPT_PYTHON}" ]; then
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync darwin_add_args "${TESTBOXSCRIPT_PYTHON}"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync darwin_add_args "${TESTBOXSCRIPT_DIR}/testboxscript/testboxscript.py"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ "${TESTBOXSCRIPT_HWVIRT}" = "yes" ]; then darwin_add_args "--hwvirt"; fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ "${TESTBOXSCRIPT_HWVIRT}" = "no" ]; then darwin_add_args "--no-hwvirt"; fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ "${TESTBOXSCRIPT_NESTED_PAGING}" = "yes" ]; then darwin_add_args "--nested-paging"; fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ "${TESTBOXSCRIPT_NESTED_PAGING}" = "no" ]; then darwin_add_args "--no-nested-paging"; fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ "${TESTBOXSCRIPT_IOMMU}" = "yes" ]; then darwin_add_args "--io-mmu"; fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ "${TESTBOXSCRIPT_IOMMU}" = "no" ]; then darwin_add_args "--no-io-mmu"; fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -n "${TESTBOXSCRIPT_SYSTEM_UUID}" ]; then darwin_add_args "--system-uuid" "${TESTBOXSCRIPT_SYSTEM_UUID}"; fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -n "${TESTBOXSCRIPT_TEST_MANAGER}" ]; then darwin_add_args "--test-manager" "${TESTBOXSCRIPT_TEST_MANAGER}"; fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -n "${TESTBOXSCRIPT_SCRATCH_ROOT}" ]; then darwin_add_args "--scratch-root" "${TESTBOXSCRIPT_SCRATCH_ROOT}"; fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -n "${TESTBOXSCRIPT_BUILDS_PATH}" ]; then darwin_add_args "--builds-path" "${TESTBOXSCRIPT_BUILDS_PATH}"; fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -n "${TESTBOXSCRIPT_BUILDS_TYPE}" ]; then darwin_add_args "--builds-server-type" "${TESTBOXSCRIPT_BUILDS_TYPE}"; fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -n "${TESTBOXSCRIPT_BUILDS_NAME}" ]; then darwin_add_args "--builds-server-name" "${TESTBOXSCRIPT_BUILDS_NAME}"; fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -n "${TESTBOXSCRIPT_BUILDS_SHARE}" ]; then darwin_add_args "--builds-server-share" "${TESTBOXSCRIPT_BUILDS_SHARE}"; fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -n "${TESTBOXSCRIPT_BUILDS_USER}" ]; then darwin_add_args "--builds-server-user" "${TESTBOXSCRIPT_BUILDS_USER}"; fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -n "${TESTBOXSCRIPT_BUILDS_PASSWD}" ]; then darwin_add_args "--builds-server-passwd" "${TESTBOXSCRIPT_BUILDS_PASSWD}"; fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -n "${TESTBOXSCRIPT_TESTRSRC_PATH}" ]; then darwin_add_args "--testrsrc-path" "${TESTBOXSCRIPT_PATH_TESTRSRC}"; fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -n "${TESTBOXSCRIPT_BUILDS_TYPE}" ]; then darwin_add_args "--testrsrc-server-type" "${TESTBOXSCRIPT_TESTRSRC_TYPE}"; fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -n "${TESTBOXSCRIPT_BUILDS_NAME}" ]; then darwin_add_args "--testrsrc-server-name" "${TESTBOXSCRIPT_TESTRSRC_NAME}"; fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -n "${TESTBOXSCRIPT_BUILDS_SHARE}" ]; then darwin_add_args "--testrsrc-server-share" "${TESTBOXSCRIPT_TESTRSRC_SHARE}"; fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -n "${TESTBOXSCRIPT_BUILDS_USER}" ]; then darwin_add_args "--testrsrc-server-user" "${TESTBOXSCRIPT_TESTRSRC_USER}"; fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -n "${TESTBOXSCRIPT_BUILDS_PASSWD}" ]; then darwin_add_args "--testrsrc-server-passwd" "${TESTBOXSCRIPT_TESTRSRC_PASSWD}"; fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync # Note! It's not possible to use screen 4.0.3 with the launchd due to buggy
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync # "setsid off" handling (and possible other things).
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync cat > "${MY_CONFIG_FILE}" <<EOF
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<?xml version="1.0" encoding="UTF-8"?>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<plist version="1.0">
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync<dict>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync <key>Label</key> <string>org.virtualbox.testboxscript</string>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync <key>UserName</key> <string>${TESTBOXSCRIPT_USER}</string>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync <key>WorkingDirectory</key> <string>${TESTBOXSCRIPT_DIR}</string>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync <key>Enabled</key> <true/>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync <key>RunAtLoad</key> <true/>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync <key>KeepAlive</key> <true/>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync <key>StandardInPath</key> <string>/dev/null</string>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync <key>StandardOutPath</key> <string>/dev/null</string>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync <key>StandardErrorPath</key> <string>/dev/null</string>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync <key>ProgramArguments</key>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync <array>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync ${MY_ARGV}</array>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync</dict>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync</plist>
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncEOF
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync return 0;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync}
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncos_enable_service() {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync launchctl load "${MY_CONFIG_FILE}"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync return 0;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync}
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncos_disable_service() {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -r "${MY_CONFIG_FILE}" ]; then
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync launchctl unload "${MY_CONFIG_FILE}"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync return 0;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync}
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncos_add_user() {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync NEWUID=$(expr `dscl . -readall /Users UniqueID | sed -ne 's/UniqueID: *\([0123456789]*\) *$/\1/p' | sort -n | tail -1 ` + 1)
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if [ -z "$NEWUID" -o "${NEWUID}" -lt 502 ]; then
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync NEWUID=502;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync fi
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync dscl . -create "/Users/${TESTBOXSCRIPT_USER}" UserShell /bin/bash
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync dscl . -create "/Users/${TESTBOXSCRIPT_USER}" RealName "VBox Test User"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync dscl . -create "/Users/${TESTBOXSCRIPT_USER}" UniqueID ${NEWUID}
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync dscl . -create "/Users/${TESTBOXSCRIPT_USER}" PrimaryGroupID 80
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync dscl . -create "/Users/${TESTBOXSCRIPT_USER}" NFSHomeDirectory "/Users/vbox"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync dscl . -passwd "/Users/${TESTBOXSCRIPT_USER}" "password"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync mkdir -p "/Users/${TESTBOXSCRIPT_USER}"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync}
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncos_final_message() {
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync cat <<EOF
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncAdditional things to do:"
89d83566d15e7a4303105286006497bbba4af42evboxsync 1. Change the 'Energy Saver' options to never turn off the computer:
89d83566d15e7a4303105286006497bbba4af42evboxsync $ systemsetup -setsleep Never
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync 2. Check 'Restart automatically if the computer freezes' if available in
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync the 'Energy Saver' settings.
89d83566d15e7a4303105286006497bbba4af42evboxsync $ systemsetup -setrestartfreeze on
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync 3. In the 'Sharing' panel enable (VBox/Oracle):
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync a) 'Remote Login' so ssh works.
89d83566d15e7a4303105286006497bbba4af42evboxsync $ systemsetup -setremotelogin on
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync b) 'Remote Management, tick all the checkboxes in the sheet dialog.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync Open the 'Computer Settings' and check 'Show Remote Management
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync status in nmenu bar', 'Anyone may request permission to control
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync screen' and 'VNC viewers may control screen with password'. Set the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync VNC password to 'password'.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync 4. Make sure the proxy is configured correctly for your network by going to
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync the 'Network' panel, open 'Advanced...'. For Oracle this means 'TCP/IP'
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync should be configured by 'DHCP' (IPv4) and 'automatically' (IPv6), and
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync the 'Proxies' tab should have 'Automatic Proxy Configuration' checked
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync with the URL containing 'http://wpad.oracle.com/wpad.dat'. (Make sure
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync to hit OK to close the dialog.)
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync 5. Configure NTP to the nearest local time source. For VBox/Oracle this
89d83566d15e7a4303105286006497bbba4af42evboxsync means wei01-time.de.oracle.com:
89d83566d15e7a4303105286006497bbba4af42evboxsync $ systemsetup -setnetworktimeserver wei01-time.de.oracle.com
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync 6. Configure the vbox (pw:password) account for automatic login.
89d83566d15e7a4303105286006497bbba4af42evboxsync 7. Configure the kernel to keep symbols:
89d83566d15e7a4303105286006497bbba4af42evboxsync $ sudo nvram boot-args="keepsyms=1"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncEnjoy!
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncEOF
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync}
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync