summaryrefslogtreecommitdiff
path: root/bin/leap_ca_daemon
diff options
context:
space:
mode:
Diffstat (limited to 'bin/leap_ca_daemon')
-rwxr-xr-xbin/leap_ca_daemon59
1 files changed, 59 insertions, 0 deletions
diff --git a/bin/leap_ca_daemon b/bin/leap_ca_daemon
new file mode 100755
index 0000000..13c0691
--- /dev/null
+++ b/bin/leap_ca_daemon
@@ -0,0 +1,59 @@
+#!/usr/bin/ruby
+
+#
+# LEAP Client Certificate Generation Daemon
+#
+
+BASE_DIR = File.expand_path('../..', File.symlink?(__FILE__) ? File.readlink(__FILE__) : __FILE__)
+
+begin
+ #
+ # try without rubygems (might be already loaded or not present)
+ #
+ require 'leap_ca/version'
+rescue LoadError
+ #
+ # try with rubygems
+ #
+ require "#{BASE_DIR}/lib/leap_ca/version.rb"
+ LeapCA::REQUIRE_PATHS.each do |path|
+ path = File.expand_path(path, BASE_DIR)
+ $LOAD_PATH.unshift path unless $LOAD_PATH.include?(path)
+ end
+ require 'rubygems'
+ require 'leap_ca/version'
+end
+
+# Graceful Ctrl-C
+Signal.trap("SIGINT") do
+ puts "\nQuit"
+ exit
+end
+
+# this changes later, so save the initial current directory
+CWD = Dir.pwd
+
+# handle --version ourselves
+if ARGV.grep(/--version/).any?
+ puts "leap_ca #{LeapCA::VERSION}, ruby #{RUBY_VERSION}"
+ exit(0)
+end
+
+# --fill-pool will fill the pool and then exit
+if ARGV.grep(/--fill-pool/).any?
+ require 'leap_ca'
+ pool = LeapCA::Pool.new(:size => LeapCA::Config.max_pool_size)
+ pool.fill
+ exit(0)
+end
+
+#
+# Start the daemon
+#
+require 'daemons'
+if ENV["USER"] == "root"
+ options = {:app_name => 'leap_ca', :dir_mode => :system} # this will put the pid file in /var/run
+else
+ options = {:app_name => 'leap_ca', :dir_mode => :normal, :dir => '/tmp'} # this will put the pid file in /tmp
+end
+Daemons.run("#{BASE_DIR}/lib/leap_ca_daemon.rb", options)