DJabberd
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/DJabberd.pm view on Meta::CPAN
$SIG{USR2} = sub { Carp::cluck("USR2") };
sub new {
my ($class, %opts) = @_;
my $self = {
'daemonize' => delete $opts{daemonize},
's2s_port' => delete $opts{s2s_port},
'c2s_port' => delete($opts{c2s_port}) || 5222, # {=clientportnumber}
'old_ssl' => delete $opts{old_ssl},
'vhosts' => {},
'fake_peers' => {}, # for s2s testing. $hostname => "ip:port"
'share_parsers' => 1,
'monitor_host' => {},
};
# if they set s2s_port to explicitly 0, it's disabled for all vhosts
# but not setting it means 5269 still listens, if vhosts are configured
# for s2s.
# {=serverportnumber}
$self->{s2s_port} = 5269 unless defined $self->{s2s_port};
croak("Unknown server parameters: " . join(", ", keys %opts)) if %opts;
bless $self, $class;
$server{$self} = $self;
Scalar::Util::weaken($server{$self});
return $self;
}
sub DESTROY {
delete $server{$_[0]};
}
# class method
sub foreach_vhost {
my (undef, $cb) = @_;
foreach my $server (values %DJabberd::server) {
foreach my $vhost (values %{$server->{vhosts}}) {
$cb->($vhost);
}
}
}
sub share_parsers { $_[0]{share_parsers} };
sub set_config_shareparsers {
my ($self, $val) = @_;
$self->{share_parsers} = as_bool($val);
}
sub set_config_declaremonitor {
my ($self, $val) = @_;
$self->{monitor_host}{$val} = 1;
}
# mimicing Apache's SSLCertificateKeyFile config
sub set_config_sslcertificatekeyfile {
my ($self, $val) = @_;
$self->{ssl_private_key_file} = as_abs_path($val);
}
# mimicing Apache's SSLCertificateFile
sub set_config_sslcertificatefile {
my ($self, $val) = @_;
$self->{ssl_cert_file} = as_abs_path($val);
}
# mimicing Apache's SSLCertificateChainFile
sub set_config_sslcertificatechainfile {
my ($self, $val) = @_;
$self->{ssl_cert_chain_file} = as_abs_path($val);
}
sub ssl_private_key_file { return $_[0]{ssl_private_key_file} }
sub ssl_cert_file { return $_[0]{ssl_cert_file} }
sub ssl_cert_chain_file { return $_[0]{ssl_cert_chain_file} }
sub set_config_oldssl {
my ($self, $val) = @_;
$self->{old_ssl} = as_bool($val);
}
sub set_config_unixdomainsocket {
my ($self, $val) = @_;
$self->{unixdomainsocket} = $val;
}
sub set_config_clientport {
my ($self, $val) = @_;
$self->{c2s_port} = as_bind_addr($val);
}
sub set_config_serverport {
my ($self, $val) = @_;
$self->{s2s_port} = as_bind_addr($val);
}
sub set_config_adminport {
my ($self, $val) = @_;
$self->{admin_port} = as_bind_addr($val);
}
sub set_config_intradomainlisten {
my ($self, $val) = @_;
$self->{cluster_listen} = $val;
}
sub set_config_pidfile {
my ($self, $val) = @_;
$self->{pid_file} = $val;
}
our %fake_peers;
sub set_fake_s2s_peer {
my ($self, $host, $ipendpt) = @_;
$fake_peers{$host} = $ipendpt;
}
sub fake_s2s_peer {
my ($self, $host) = @_;
return $fake_peers{$host};
}
sub set_config_casesensitive {
my ($self, $val) = @_;
$DJabberd::JID::CASE_SENSITIVE = as_bool($val);
}
sub add_vhost {
my ($self, $vhost) = @_;
my $sname = lc $vhost->name;
if (my $existing = $self->{vhosts}{$sname}) {
croak("Can't set vhost with name '$sname'. Already exists in this server.")
if $existing != $vhost;
view all matches for this distributionview release on metacpan - search on metacpan
( run in 1.776 second using v1.00-cache-2.02-grep-82fe00e-cpan-2cc899e4a130 )