Module: OpenC3::ConfigKeywordModel
- Included in:
- InterfaceModel, MicroserviceModel
- Defined in:
- lib/openc3/models/config_keyword_model.rb
Instance Method Summary collapse
-
#parse_port(parser, keyword, parameters) ⇒ Object
Parse a PORT keyword, appending [number, protocol] to @ports.
-
#validate_secret(parser, keyword, parameters) ⇒ Object
Validate a SECRET / BRIDGE_SECRET definition.
Instance Method Details
#parse_port(parser, keyword, parameters) ⇒ Object
Parse a PORT keyword, appending [number, protocol] to @ports.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/openc3/models/config_keyword_model.rb', line 22 def parse_port(parser, keyword, parameters) usage = "PORT <Number> <Protocol (Optional)" parser.verify_num_parameters(1, 2, usage) begin @ports << [Integer(parameters[0])] rescue # In case Integer fails raise ConfigParser::Error.new(parser, "Port must be an integer: #{parameters[0]}", usage) end protocol = ConfigParser.handle_nil(parameters[1]) if protocol # Per https://kubernetes.io/docs/concepts/services-networking/service/#protocol-support if %w(TCP UDP SCTP).include?(protocol.upcase) @ports[-1] << protocol.upcase else raise ConfigParser::Error.new(parser, "Unknown port protocol: #{parameters[1]}", usage) end else @ports[-1] << 'TCP' end end |
#validate_secret(parser, keyword, parameters) ⇒ Object
Validate a SECRET / BRIDGE_SECRET definition. FILE type paths are restricted to Secrets.secret_file_dir to prevent reading or overwriting arbitrary files.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/openc3/models/config_keyword_model.rb', line 45 def validate_secret(parser, keyword, parameters) type = parameters[0].to_s.upcase unless ['ENV', 'FILE'].include?(type) raise ConfigParser::Error.new(parser, "Unknown secret type '#{parameters[0]}' for #{keyword}. Must be ENV or FILE.") end # Normalize in place so the stored secret matches what the operator and # Secrets.setup match on, both of which compare against 'ENV' / 'FILE' and # use the path exactly as given. parameters[0] = type if type == 'FILE' begin parameters[2] = Secrets.validate_file_path(parameters[2]) rescue ArgumentError => error raise ConfigParser::Error.new(parser, "#{keyword} #{error.}") end end end |