#!/bin/sh
#
# Onelya VDS Manager - ilk acilis betigi (FreeBSD rc.d)
# VMware Tools'u sunucu ici komut calistiramayan eski sistemler icin (ornek FreeBSD 9.2 / open-vm-tools 8.6).
# Modul kurulum betigini VM'in guestinfo.onelya.script ayarina (base64) yazar ve sunucuyu yeniden baslatir;
# bu betik acilista onu okuyup bir kez calistirir. Sonuc /tmp/.ovds_ssh_<token>.rc dosyasina yazilir,
# modul SSH ile okur ve guestinfo'yu temizler.
#
# Kurulum (SABLON VM'in icinde, bir kez):
#   fetch/scp ile /usr/local/etc/rc.d/onelya_firstboot konumuna kopyalayin
#   chmod 555 /usr/local/etc/rc.d/onelya_firstboot
#   echo 'onelya_firstboot_enable="YES"' >> /etc/rc.conf
#
# PROVIDE: onelya_firstboot
# REQUIRE: LOGIN
# KEYWORD: nojail

. /etc/rc.subr

name="onelya_firstboot"
rcvar="onelya_firstboot_enable"
start_cmd="onelya_firstboot_start"
stop_cmd=":"

: ${onelya_firstboot_vmtoolsd:="/usr/local/bin/vmtoolsd"}
: ${onelya_firstboot_db:="/var/db/onelya-firstboot.done"}

ovds_get()
{
	if [ -x "${onelya_firstboot_vmtoolsd}" ]; then
		"${onelya_firstboot_vmtoolsd}" --cmd "info-get guestinfo.onelya.$1" 2>/dev/null && return 0
	fi
	for t in /usr/local/bin/vmware-rpctool /usr/sbin/vmware-rpctool /usr/bin/vmware-rpctool; do
		[ -x "$t" ] && "$t" "info-get guestinfo.onelya.$1" 2>/dev/null && return 0
	done
	return 1
}

onelya_firstboot_start()
{
	T=$(ovds_get token | tr -cd '0-9')
	[ -n "$T" ] || return 0
	if [ -f "${onelya_firstboot_db}" ] && [ "$(cat "${onelya_firstboot_db}")" = "$T" ]; then
		return 0
	fi
	echo "Onelya: ilk acilis yapilandirmasi ($T)"
	umask 077
	B=/tmp/.ovds_fb_$T.b64
	S=/tmp/.ovds_fb_$T.sh
	ovds_get script | tr -d ' \r\n' > "$B"
	if [ ! -s "$B" ]; then
		echo 99 > /tmp/.ovds_ssh_$T.rc
		return 0
	fi
	{ b64decode -r < "$B" > "$S" 2>/dev/null && [ -s "$S" ]; } || \
		{ base64 -d "$B" > "$S" 2>/dev/null && [ -s "$S" ]; } || \
		openssl base64 -d -A -in "$B" -out "$S"
	chmod 700 "$S"
	I=/bin/sh
	head -1 "$S" | grep -q bash && [ -x /usr/local/bin/bash ] && I=/usr/local/bin/bash
	"$I" "$S" >> /var/log/onelya-vds.log 2>&1
	rc=$?
	rm -f "$B" "$S"
	echo "$T" > "${onelya_firstboot_db}"
	echo "$rc" > /tmp/.ovds_ssh_$T.rc
	echo "Onelya: tamamlandi (cikis kodu $rc)"
}

load_rc_config $name
: ${onelya_firstboot_enable:="YES"}
run_rc_command "$1"
