35 lines
		
	
	
		
			897 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			897 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
UPDATES_VM=`qvm-get-updatevm`
 | 
						|
 | 
						|
QREXEC_CLIENT=/usr/lib/qubes/qrexec_client
 | 
						|
 | 
						|
if [ -z "$UPDATES_VM" ]; then
 | 
						|
    echo "UpdateVM not set, exiting!" >&2
 | 
						|
    exit 1
 | 
						|
fi
 | 
						|
 | 
						|
if ! xl domid "$UPDATES_VM" > /dev/null 2>&1; then
 | 
						|
    echo "UpdateVM not started, exiting!"
 | 
						|
    exit 1
 | 
						|
fi
 | 
						|
 | 
						|
# dd is supposed to not allow memory exhaustion
 | 
						|
# grep does basic sanity checking
 | 
						|
# there seems to be no way to pass output of date +%s.%N to date,
 | 
						|
# so we use human-readable format
 | 
						|
 | 
						|
CURRENT_TIME="$($QREXEC_CLIENT -d $UPDATES_VM 'user:date -u' |
 | 
						|
	dd count=1 2>/dev/null |
 | 
						|
	grep '^[A-Za-z]* [A-Za-z]* [ 0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [A-Z]* [0-9][0-9][0-9][0-9]$'|
 | 
						|
	head -1)"
 | 
						|
 | 
						|
if [ -n "$CURRENT_TIME" ] ; then 
 | 
						|
	echo Syncing Dom0 clock: setting time "$CURRENT_TIME"...
 | 
						|
	sudo date -u -s "$CURRENT_TIME" ;
 | 
						|
	echo Done.
 | 
						|
else
 | 
						|
	echo "Error while parsing the time obtained from the UpdateVM ($UPDATES_VM).."
 | 
						|
fi
 | 
						|
 |