class Bandshell::StaticAddressing
Static IPv4 addressing. We use the IPAddress gem to validate that the address information is vaguely correct (weeding out errors like the gateway being on another subnet)
Attributes
address[RW]
gateway[RW]
nameservers[RW]
netmask[RW]
Public Class Methods
description()
click to toggle source
# File lib/bandshell/netconfig.rb, line 351 def self.description "Static Addressing" end
new(args={})
click to toggle source
# File lib/bandshell/netconfig.rb, line 314 def initialize(args={}) @nameservers = args['nameservers'] @address = args['address'] @netmask = args['netmask'] @gateway = args['gateway'] end
Public Instance Methods
addressing_type()
click to toggle source
# File lib/bandshell/netconfig.rb, line 321 def addressing_type 'static' end
args()
click to toggle source
# File lib/bandshell/netconfig.rb, line 325 def args { 'address' => @address, 'netmask' => @netmask, 'gateway' => @gateway, 'nameservers' => @nameservers } end
interfaces_lines()
click to toggle source
# File lib/bandshell/netconfig.rb, line 334 def interfaces_lines [ "address #{@address}", "netmask #{@netmask}", "gateway #{@gateway}" ] end
nameservers_flat()
click to toggle source
# File lib/bandshell/netconfig.rb, line 398 def nameservers_flat @nameservers.join(',') end
nameservers_flat=(separated_list)
click to toggle source
These next two methods are for the web interface, where it’s more convenient to enter a bunch of nameservers on one line than to have to deal with an array of fields.
# File lib/bandshell/netconfig.rb, line 386 def nameservers_flat=(separated_list) servers = separated_list.strip.split(/\s*[,|:;\s]\s*/) servers.each do |server| server.strip! p server if not IPAddress.valid? server fail "One or more invalid IP addresses in nameserver list" end end @nameservers = servers end
safe_assign()
click to toggle source
# File lib/bandshell/netconfig.rb, line 357 def safe_assign [ :address, :netmask, :gateway, :nameservers_flat ] end
validate()
click to toggle source
# File lib/bandshell/netconfig.rb, line 361 def validate @address.strip! @netmask.strip! @gateway.strip! if not IPAddress.valid_ipv4?(@address) fail "Static address is invalid" end p @netmask if not IPAddress.valid_ipv4_netmask?(@netmask) fail "Static netmask is invalid" end p @netmask subnet = IPAddress::IPv4.new(@address) subnet.netmask = @netmask if not subnet.include? IPAddress::IPv4.new(gateway) fail "Gateway provided is unreachable" end end
write_configs()
click to toggle source
# File lib/bandshell/netconfig.rb, line 343 def write_configs File.open('/etc/resolv.conf','w') do |resolvconf| @nameservers.each do |nameserver| resolvconf.puts("nameserver #{nameserver}"); end end end