App-KGB
view release on metacpan or search on metacpan
script/kgb-bot view on Meta::CPAN
$ENV{PATH}='/usr/bin/:/usr/games';
my $polygen;
unless ( $polygen = File::Which::which('polygen') ) {
KGB->debug("missing polygen binary\n");
}
$ENV{PATH} = $oldpath;
return $polygen;
}
sub merge_conf_hash($$);
sub merge_conf_hash($$) {
my ( $dst, $src ) = @_;
while ( my ($k, $v) = each %$src ) {
if ( ref($v) ) {
if ( exists $dst->{$k} ) {
die
"Error merging key '$k': source is a reference, but destination is scalar\n"
unless ref( $dst->{$k} );
ref( $dst->{$k} ) eq ref($v)
or die
script/kgb-bot view on Meta::CPAN
}
else {
die
"Error merging key '$k': source is scalar, but destination is not\n"
if exists $dst->{$k} and ref( $dst->{$k} );
$dst->{$k} = $v;
}
}
}
sub parse_conf_file($;$);
sub parse_conf_file($;$) {
my $src = shift;
my $met = shift // {};
return {} if $met->{$src}++;
my $conf = {};
KGB->debug("Loading '$src.");
if ( -d $src ) {
-r _ or die "'$src' is not readable\n";
-x _ or die "'$src' is not usable (missing execute permission)\n";
script/kgb-bot view on Meta::CPAN
if ( exists $conf->{webhook}
and exists $conf->{webhook}{allowed_networks} )
{
$_ = Net::IP->new($_) for @{ $conf->{webhook}{allowed_networks} };
}
KGB->debug( JSON::XS->new->convert_blessed(1)->encode($conf) );
return $conf;
}
sub load_conf($) {
my $file = shift;
my $conf = read_conf($file);
# Save globals
$config_file = Cwd::realpath($file);
$config = $conf;
return $conf;
}
sub reload_conf() {
my $new_conf = eval { KGB::read_conf($config_file) };
if ($@) {
KGB->out("Error in configuration file: $@");
return -1;
}
if ( $new_conf->{soap}{service_name} ne $config->{soap}{service_name}
or $new_conf->{soap}{server_port} ne $config->{soap}{server_port}
or $new_conf->{soap}{server_addr} ne $config->{soap}{server_addr} )
{
KGB->out("Cannot reload configuration file, restarting\n");
script/kgb-bot view on Meta::CPAN
use App::KGB::Painter;
use List::MoreUtils qw(any);
use List::Util qw(max);
use Net::IP;
use POE;
use Text::Glob qw(match_glob);
sub colorize { KGB::SOAP::colorize( @_ ) };
sub colorize_change { KGB::SOAP::colorize_change( @_ ) };
sub webhook_error(\@$;$$) {
my $env = shift;
my $message = shift;
my $code = shift // HTTP::Status::HTTP_BAD_REQUEST;
my $content = shift // $message;
KGB->debug("Webhook error: $message");
my $response = $env->[ARG1];
$response->code($code);
$response->message($message);
$response->content($content);
script/kgb-bot view on Meta::CPAN
unless ( defined $short_url ) {
KGB->out(
"URL shortening service '$service' failed to shorten '$url'.");
return monkey_shorten_git_hashes($url);
}
KGB->count('URLs_shortened');
return $short_url;
}
sub trim_lines(\@$@) {
my ( $chanids, $repoid, @strings ) = @_;
# Standard says 512 (minus \r\n), anyway that's further trimmed when
# resending to clients because of prefix.
# Let's trim on 400, to be safe
my $MAGIC_MAX_LINE = ( 400 - length("PRIVMSG ")
- max( map( length($KGB::config->{chanidx}{$_}{name}), @$chanids ) ) );
my @tmp;
while ( $_ = shift @strings ) {
if ( length($_) > $MAGIC_MAX_LINE ) {
( run in 0.756 second using v1.01-cache-2.11-cpan-65fba6d93b7 )