#!/usr/bin/env ruby # Author:: Andrew Pennebaker # # KOPIMI # # == Synopsis # # yellosync: sets the time without using NTP require "open-uri" require "openssl" # Fixes certificate verification # http://situated.wordpress.com/2008/06/10/opensslsslsslerror-certificate-verify-failed-open-uri/ module OpenSSL module SSL remove_const :VERIFY_PEER end end OpenSSL::SSL::VERIFY_PEER=OpenSSL::SSL::VERIFY_NONE require "time" URL="https://time.yellosoft.us/" def get_platform if RUBY_PLATFORM.include?("mswin") return :windows elsif RUBY_PLATFORM.include?("linux") return :linux elsif RUBY_PLATFORM.include?("bsd") return :unix elsif RUBY_PLATFORM.include?("darwin") return :macosx end end def main platform=get_platform puts "Requires a privileged environment" # gksudo Provides graphical authentication for Linux. # Applescript has graphical authentication for Mac OS X. # sudo, su provide terminal authentication for Unix, Linux, Mac OS X. # Windows has 'runas,' which sucks. # # Result: This script must be run inside a privileged environment. # It's just too cumbersome to automate the authorization request. if platform==:linux or platform==:unix or platform==:macosx puts "Run using \'sudo\' or \'su\'" elsif platform==:windows puts "Run in a Command Prompt as administrator" end local_time=Time.now begin data=open(URL).read local_time=Time.parse(data).localtime rescue Timeout::Error puts "Cannot access #{URL}" rescue puts "Cannot access #{URL}" else # Windows if RUBY_PLATFORM.include?("mswin") command=format("time %02d:%02d", local_time.hour, local_time.min) # Linux elsif RUBY_PLATFORM.include?("linux") command=format("date -us \"%s\"", data) # Unix and Mac OS X elsif RUBY_PLATFORM.include?("bsd") or RUBY_PLATFORM.include?("darwin") command="date "+local_time.strftime("%m%d%H%M%Y.%S") end system(command) end end if __FILE__==$0 begin main rescue Interrupt=>e nil end end