-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathods-kaspcheck.in
110 lines (96 loc) · 3.42 KB
/
ods-kaspcheck.in
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#!@RUBY@ -I@OPENDNSSEC_LIB_DIR@
#
# $Id$
#
# Copyright (c) 2009 Nominet UK. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
require 'kasp_checker.rb'
require 'optparse'
require 'ostruct'
include KASPChecker
class OptionsParser
#
# Return a structure describing the options.
#
def self.parse(args)
# The options specified on the command line will be collected in *options*.
# We set default values here.
path = "@OPENDNSSEC_CONFIG_DIR@"
options = OpenStruct.new
options.rng_path = "@OPENDNSSEC_SCHEMA_DIR@"
options.xmllint = "@XMLLINT@"
options.default_conf_file = path + "/conf.xml"
opts = OptionParser.new do |opts|
opts.banner = "Usage: ods-kaspcheck [options]"
opts.separator ""
opts.separator "Specific options:"
# conf.xml
opts.on("-c", "--conf [PATH_TO_CONF_FILE]",
"Path to OpenDNSSEC configuration file",
" (defaults to " + options.default_conf_file + ")") do |ext|
options.conf_file = ext
end
# kasp.xml
opts.on("-k", "--kasp [PATH_TO_KASP_FILE]",
"Path to KASP policy file",
" (defaults to the path given in the configuration file)") do |ext|
options.kasp_file = ext
end
opts.on("-v", "--version", # Override default
"Display version information") do |x|
print "@VERSION@\n"
exit
end
opts.separator ""
opts.separator "Common options:"
# No argument, shows at tail. This will print an options summary.
# Try it and see!
opts.on_tail("-h", "-?", "--help", "Show this message") do
puts opts
exit
end
end
begin
opts.parse!(args)
rescue OptionParser::InvalidOption => e
print "#{e}\n"
puts opts
exit(1)
end
options
end # parse()
end
checker = Checker.new
options = OptionsParser.parse(ARGV)
if (options.conf_file)
checker.conf_file = options.conf_file
else
checker.conf_file = options.default_conf_file
end
if (options.kasp_file)
checker.kasp_file = options.kasp_file
end
checker.rng_path = options.rng_path
checker.xmllint = options.xmllint
checker.check()