Class: ConcertoConfigServer

Inherits:
Sinatra::Base
  • Object
show all
Defined in:
lib/bandshell/application/app.rb

Constant Summary collapse

CONNECTION_METHODS =

push these over to netconfig.rb? Our list of available physical-layer connection methods…

[ 
  Bandshell::WiredConnection, 
  Bandshell::WirelessConnection 
]
ADDRESSING_METHODS =

… and available layer-3 addressing methods.

[ 
  Bandshell::DHCPAddressing, 
  Bandshell::StaticAddressing 
]
LOCALHOSTS =

Hosts we allow to access configuration without authenticating.

[ 
  IPAddress.parse("127.0.0.1"),    # ipv4 
  IPAddress.parse("::ffff:127.0.0.1"),  # ipv6-mapped ipv4
  IPAddress.parse("::1")      # ipv6
]

Instance Method Summary collapse

Instance Method Details

#do_assign(params, instance) ⇒ Object

Set the arguments on an instance of a given configuration class. This uses the safe_assign method that should be present in all configuration classes to determine which values are allowed to be passed via form fields (i.e. which ones are subject to validation)



324
325
326
327
328
329
330
331
332
# File 'lib/bandshell/application/app.rb', line 324

def do_assign(params, instance)
  safe = instance.safe_assign

  params.each do |param, value|
    if safe.include? param.intern
      instance.send((param + '=').intern, value)
    end
  end
end

#extract_class_args(params, target_class) ⇒ Object

Extract arguments from a set of form data that are intended to go to a specific network configuration class. These fields have names of the form ‘ClassName/field_name’; this function returns a hash in the form { ‘field_name’ => ‘value } containing the configuration arguments.



308
309
310
311
312
313
314
315
316
317
318
# File 'lib/bandshell/application/app.rb', line 308

def extract_class_args(params, target_class)
  result = { }
  params.each do |key, value|
    klass, arg = key.split('/', 2)
    if klass == target_class
      result[arg] = value
    end
  end

  result
end

#pick_class(name, list) ⇒ Object

Given the name of a class, pick a class out of a list of allowed classes. This is used for parsing the form input for network configuration.



300
301
302
# File 'lib/bandshell/application/app.rb', line 300

def pick_class(name, list)
  list.find { |klass| klass.basename == name }
end

#player_infoObject



41
42
43
44
# File 'lib/bandshell/application/app.rb', line 41

def player_info
  # Note: probably not thread-safe.
  @@player_info ||= Bandshell::PlayerInfo.new
end