Koha/C4/SIP/Sip/Configuration.pm
Colin Campbell 7e7b3731dc Bug 8433 Remove unused 'use English'
Adding a use English to mosules which dont may
waste a few CPU cycles and bytes of storage
but doesnt add anything to the sum of human happiness

Remove unnecessary use English's
Removed already commented out but equally unnrcessary
use Exporter in same modules

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com>
2013-01-13 08:42:50 -05:00

93 lines
2.4 KiB
Perl

#
# parse-config: Parse an XML-format
# ACS configuration file and build the configuration
# structure.
#
package Sip::Configuration;
use strict;
use warnings;
use XML::Simple qw(:strict);
use Sip::Configuration::Institution;
use Sip::Configuration::Account;
use Sip::Configuration::Service;
my $parser = new XML::Simple( KeyAttr => { login => '+id',
institution => '+id',
service => '+port' },
GroupTags => { listeners => 'service',
accounts => 'login',
institutions => 'institution', },
ForceArray=> [ 'service',
'login',
'institution' ],
ValueAttr => { 'error-detect' => 'enabled',
'min_servers' => 'value',
'max_servers' => 'value'} );
sub new {
my ($class, $config_file) = @_;
my $cfg = $parser->XMLin($config_file);
my %listeners;
foreach my $acct (values %{$cfg->{accounts}}) {
new Sip::Configuration::Account $acct;
}
# The key to the listeners hash is the 'port' component of the
# configuration, which is of the form '[host]:[port]/proto', and
# the 'proto' component could be upper-, lower-, or mixed-cased.
# Regularize it here to lower-case, and then do the same below in
# find_server() when building the keys to search the hash.
foreach my $service (values %{$cfg->{listeners}}) {
new Sip::Configuration::Service $service;
$listeners{lc $service->{port}} = $service;
}
$cfg->{listeners} = \%listeners;
foreach my $inst (values %{$cfg->{institutions}}) {
new Sip::Configuration::Institution $inst;
}
return bless $cfg, $class;
}
sub error_detect {
my $self = shift;
return $self->{'error-detect'};
}
sub accounts {
my $self = shift;
return values %{$self->{accounts}};
}
# sub policy {
# my $self = shift;
# return values %{$self->{policy}};
# }
sub find_service {
my ($self, $sockaddr, $port, $proto) = @_;
my $portstr;
foreach my $addr ('', '*:', "$sockaddr:") {
$portstr = sprintf("%s%s/%s", $addr, $port, lc $proto);
Sys::Syslog::syslog("LOG_DEBUG", "Configuration::find_service: Trying $portstr");
last if (exists(($self->{listeners})->{$portstr}));
}
return $self->{listeners}->{$portstr};
}
1;
__END__
my $config = new Sip::Configuration $ARGV[0];
foreach my $acct ($config->accounts) {
print "Found account '", $acct->name, "', part of '"
print $acct->institution, "'\n";
}
1;