package DJabberd::Bot::Admin; use strict; use warnings; use base 'DJabberd::Bot'; use DJabberd::Util qw(exml); use List::Util qw(first); our $logger = DJabberd::Log->get_logger(); sub finalize { my ($self) = @_; $self->{nodename} ||= "admin"; $self->SUPER::finalize(); } sub set_config_users { my ($self, $users) = @_; my @users = split /\s+/, $users; $self->{users}->{$_}++ foreach @users; } sub process_text { my ($self, $text, $from, $ctx) = @_; # access control: return if $self->{users} && !$self->{users}->{$from->node}; warn "doing process for text: $text\n"; $self->{buffer} = ""; eval { DJabberd::Connection::Admin::process_line($self, $text); }; if ($@) { $self->{buffer} = "Error: $@"; } $ctx->reply($self->{buffer}); } sub write { my ($self, $data) = @_; $self->{buffer} .= $data . "\n"; } # specifically for being a connection::admin object: sub end { } 1;