engines/adva_user/vendor/plugins/authentication/lib/radius/dictionary.rb
def read(fp)
      fp.each_line {
	|line|
	next if line =~ /^\#/	# discard comments
	next if (sl = line.split(/\s+/)) == []
	case sl[0].upcase
	when "ATTRIBUTE"
	  @attr[sl[1]] = [sl[2].to_i, sl[3]] if (@attr[sl[1]] == nil)
	  @rattr[sl[2].to_i] = [sl[1], sl[3]] if (@rattr[sl[2].to_i] == nil)
	when "VALUE"
	  if (@attr[sl[1]] == nil)
	    $stderr.print("Warning: value given for unknown attribute #{sl[1]}");
	  else
	    if (@val[@attr[sl[1]][0]] == nil)
	      @val[@attr[sl[1]][0]] = {}
	    end
	    if (@rval[@attr[sl[1]][0]] == nil)
	      @rval[@attr[sl[1]][0]] = []
	    end
	    if (@val[@attr[sl[1]][0]][sl[2]] == nil)
	      @val[@attr[sl[1]][0]][sl[2]] = sl[3].to_i
	    end
	    if (@rval[@attr[sl[1]][0]][sl[3].to_i] == nil)
	      @rval[@attr[sl[1]][0]][sl[3].to_i] = sl[2]
	    end
	  end
	when "VENDORATTR"
	  sl[3] = Kernel::Integer(sl[3]) # this gets hex and octal
				# values correctly
	  @vsattr[sl[1].to_i] = {} if (@vsattr[sl[1].to_i] == nil)
	  @rvsattr[sl[1].to_i] = {} if (@rvsattr[sl[1].to_i] == nil)

	  if (@vsattr[sl[1].to_i][sl[2]] == nil)
	    @vsattr[sl[1].to_i][sl[2]] = sl[3..4]
	  end

	  if (@rvsattr[sl[1].to_i][sl[3]] == nil)
	    @rvsattr[sl[1].to_i][sl[3]] = [sl[2], sl[4]]
	  end
	when "VENDORVALUE"
	  sl[4] = Kernel::Integer(sl[4])
	  if (@vsattr[sl[1].to_i][sl[2]] == nil)
	    $stderr.print "Warning: vendor value for unknown vendor attribute #{sl[1]} found - ignored\n"
	  else
	    sl[1] = sl[1].to_i
	    @vsaval[sl[1]] = {} if @vsaval[sl[1].to_i] == nil
	    @rvsaval[sl[1]] = {} if @rvsaval[sl[1].to_i] == nil
	    if @vsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]] == nil
	      @vsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]] = {}
	    end

	    if @rvsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]] == nil
	      @rvsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]] = []
	    end

	    if @vsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]][sl[3]] == nil
	      @vsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]][sl[3]] = sl[4]
	    end

	    if @rvsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]][sl[4]] == nil
	      @rvsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]][sl[4]] = sl[3]
	    end
	  end
	else
	  $stderr.print "Warning: Weird dictionary line: #{line}\n"
	end
      }
    end
# Parse a dictionary file from an IO object and learn the
# name<->number mappings from it.  Only the /first/ definition
# will apply if multiple definitions are seen.  This method may be
# called multiple times with different IO objects, reading from
# several files.
#
# ====Parameters
#
# +fp+:: IO object from which to read the data
#
# ====Return
# None.  Any strangeness in the file results in a message being
# printed to stderr.
Parse a dictionary file from an IO object and learn the
name<->number mappings from it.  Only the /first/ definition
will apply if multiple definitions are seen.  This method may be
called multiple times with different IO objects, reading from
several files.

Parameters

+fp+:: IO object from which to read the data

Return
None.  Any strangeness in the file results in a message being
printed to stderr.
Parse a dictionary file from an IO object and learn the name< - > number mappings from it . Only the / first / definition will apply if multiple definitions are seen . This method may be called multiple times with different IO objects reading from several files . Parameters + fp + :: IO object from which to read the data Return None . Any strangeness in the file results in a message being printed to stderr .
def read(fp)
      fp.each_line {
	|line|
	next if line =~ /^\#/	
	next if (sl = line.split(/\s+/)) == []
	case sl[0].upcase
	when "ATTRIBUTE"
	  @attr[sl[1]] = [sl[2].to_i, sl[3]] if (@attr[sl[1]] == nil)
	  @rattr[sl[2].to_i] = [sl[1], sl[3]] if (@rattr[sl[2].to_i] == nil)
	when "VALUE"
	  if (@attr[sl[1]] == nil)
	    $stderr.print("Warning: value given for unknown attribute #{sl[1]}");
	  else
	    if (@val[@attr[sl[1]][0]] == nil)
	      @val[@attr[sl[1]][0]] = {}
	    end
	    if (@rval[@attr[sl[1]][0]] == nil)
	      @rval[@attr[sl[1]][0]] = []
	    end
	    if (@val[@attr[sl[1]][0]][sl[2]] == nil)
	      @val[@attr[sl[1]][0]][sl[2]] = sl[3].to_i
	    end
	    if (@rval[@attr[sl[1]][0]][sl[3].to_i] == nil)
	      @rval[@attr[sl[1]][0]][sl[3].to_i] = sl[2]
	    end
	  end
	when "VENDORATTR"
	  sl[3] = Kernel::Integer(sl[3]) 
	  @vsattr[sl[1].to_i] = {} if (@vsattr[sl[1].to_i] == nil)
	  @rvsattr[sl[1].to_i] = {} if (@rvsattr[sl[1].to_i] == nil)
	  if (@vsattr[sl[1].to_i][sl[2]] == nil)
	    @vsattr[sl[1].to_i][sl[2]] = sl[3..4]
	  end
	  if (@rvsattr[sl[1].to_i][sl[3]] == nil)
	    @rvsattr[sl[1].to_i][sl[3]] = [sl[2], sl[4]]
	  end
	when "VENDORVALUE"
	  sl[4] = Kernel::Integer(sl[4])
	  if (@vsattr[sl[1].to_i][sl[2]] == nil)
	    $stderr.print "Warning: vendor value for unknown vendor attribute #{sl[1]} found - ignored\n"
	  else
	    sl[1] = sl[1].to_i
	    @vsaval[sl[1]] = {} if @vsaval[sl[1].to_i] == nil
	    @rvsaval[sl[1]] = {} if @rvsaval[sl[1].to_i] == nil
	    if @vsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]] == nil
	      @vsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]] = {}
	    end
	    if @rvsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]] == nil
	      @rvsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]] = []
	    end
	    if @vsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]][sl[3]] == nil
	      @vsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]][sl[3]] = sl[4]
	    end
	    if @rvsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]][sl[4]] == nil
	      @rvsaval[sl[1]][@vsattr[sl[1]][sl[2]][0]][sl[4]] = sl[3]
	    end
	  end
	else
	  $stderr.print "Warning: Weird dictionary line: #{line}\n"
	end
      }
    end
def read ( fp ) fp . each_line { | line | next if line =~ / ^ \# / next if ( sl = line . split ( / \s + / ) ) == [ ] case sl [ 0 ] . upcase when "ATTRIBUTE" @attr [ sl [ 1 ] ] = [ sl [ 2 ] . to_i , sl [ 3 ] ] if ( @attr [ sl [ 1 ] ] == nil ) @rattr [ sl [ 2 ] . to_i ] = [ sl [ 1 ] , sl [ 3 ] ] if ( @rattr [ sl [ 2 ] . to_i ] == nil ) when "VALUE" if ( @attr [ sl [ 1 ] ] == nil ) $stderr . print ( "Warning: value given for unknown attribute #{sl[1]}" ) ; else if ( @val [ @attr [ sl [ 1 ] ] [ 0 ] ] == nil ) @val [ @attr [ sl [ 1 ] ] [ 0 ] ] = { } end if ( @rval [ @attr [ sl [ 1 ] ] [ 0 ] ] == nil ) @rval [ @attr [ sl [ 1 ] ] [ 0 ] ] = [ ] end if ( @val [ @attr [ sl [ 1 ] ] [ 0 ] ] [ sl [ 2 ] ] == nil ) @val [ @attr [ sl [ 1 ] ] [ 0 ] ] [ sl [ 2 ] ] = sl [ 3 ] . to_i end if ( @rval [ @attr [ sl [ 1 ] ] [ 0 ] ] [ sl [ 3 ] . to_i ] == nil ) @rval [ @attr [ sl [ 1 ] ] [ 0 ] ] [ sl [ 3 ] . to_i ] = sl [ 2 ] end end when "VENDORATTR" sl [ 3 ] = Kernel :: Integer ( sl [ 3 ] ) @vsattr [ sl [ 1 ] . to_i ] = { } if ( @vsattr [ sl [ 1 ] . to_i ] == nil ) @rvsattr [ sl [ 1 ] . to_i ] = { } if ( @rvsattr [ sl [ 1 ] . to_i ] == nil ) if ( @vsattr [ sl [ 1 ] . to_i ] [ sl [ 2 ] ] == nil ) @vsattr [ sl [ 1 ] . to_i ] [ sl [ 2 ] ] = sl [ 3 .. 4 ] end if ( @rvsattr [ sl [ 1 ] . to_i ] [ sl [ 3 ] ] == nil ) @rvsattr [ sl [ 1 ] . to_i ] [ sl [ 3 ] ] = [ sl [ 2 ] , sl [ 4 ] ] end when "VENDORVALUE" sl [ 4 ] = Kernel :: Integer ( sl [ 4 ] ) if ( @vsattr [ sl [ 1 ] . to_i ] [ sl [ 2 ] ] == nil ) $stderr . print "Warning: vendor value for unknown vendor attribute #{sl[1]} found - ignored\n" else sl [ 1 ] = sl [ 1 ] . to_i @vsaval [ sl [ 1 ] ] = { } if @vsaval [ sl [ 1 ] . to_i ] == nil @rvsaval [ sl [ 1 ] ] = { } if @rvsaval [ sl [ 1 ] . to_i ] == nil if @vsaval [ sl [ 1 ] ] [ @vsattr [ sl [ 1 ] ] [ sl [ 2 ] ] [ 0 ] ] == nil @vsaval [ sl [ 1 ] ] [ @vsattr [ sl [ 1 ] ] [ sl [ 2 ] ] [ 0 ] ] = { } end if @rvsaval [ sl [ 1 ] ] [ @vsattr [ sl [ 1 ] ] [ sl [ 2 ] ] [ 0 ] ] == nil @rvsaval [ sl [ 1 ] ] [ @vsattr [ sl [ 1 ] ] [ sl [ 2 ] ] [ 0 ] ] = [ ] end if @vsaval [ sl [ 1 ] ] [ @vsattr [ sl [ 1 ] ] [ sl [ 2 ] ] [ 0 ] ] [ sl [ 3 ] ] == nil @vsaval [ sl [ 1 ] ] [ @vsattr [ sl [ 1 ] ] [ sl [ 2 ] ] [ 0 ] ] [ sl [ 3 ] ] = sl [ 4 ] end if @rvsaval [ sl [ 1 ] ] [ @vsattr [ sl [ 1 ] ] [ sl [ 2 ] ] [ 0 ] ] [ sl [ 4 ] ] == nil @rvsaval [ sl [ 1 ] ] [ @vsattr [ sl [ 1 ] ] [ sl [ 2 ] ] [ 0 ] ] [ sl [ 4 ] ] = sl [ 3 ] end end else $stderr . print "Warning: Weird dictionary line: #{line}\n" end } end
Parse a dictionary file from an IO object and learn the
name<->number mappings from it.
Parse a dictionary file from an IO object and learn the name< - > number mappings from it .
# discard comments # this gets hex and octal # values correctly
fp