CPAN Testers Metabase has a certificate

As an update to my previous post, David Golden has posted an update that the certificate for metabase.cpantesters.org is now signed by a certificate authority that is included in Mozilla-CA! This means anyone who was using my hypothetical distribution as a work-around in the mean time should not only stop using it, but it will no longer connect as the certificate has changed! You’d end up with the following error:

CPAN::Reporter: Test::Reporter: error from 'Test::Reporter::Transport::Metabase::CPANTesters:'
fact submission failed: Can't connect to metabase.cpantesters.org:443 (certificate verify failed) at C:\strawberry\perl\site\lib/Metabase/Client/Simple.pm line 111
...
        Test::Reporter::Transport::Metabase::CPANTesters::send('Test::Reporter::Transport::Metabase::CPANTesters=HASH(0x7a932b8)', 'Test::Reporter=HASH(0x62cb790)') called at C:\strawberry\perl\site\lib/Test/Reporter.pm line 279
...

Simply modify your CPAN::Reporter configuration to use the standard Metabase transport with the CPAN Testers metabase URI. Here is a short script you can run to automatically update your configuration:

#!/usr/bin/env perl
 
use 5.006;
use CPAN::Reporter::Config;
 
my $config_file = CPAN::Reporter::Config::_get_config_file();
my $config = CPAN::Reporter::Config::_open_config_file();
 
my ($class, %args) = split m{\s+}mosx, $config->{_}->{transport};
 
if ($class eq 'Metabase::CPANTesters') {
    print "Modifying configuration file transport line from\n", $config->{_}->{transport}, "\n";
    # Correct the transport information
    $class = 'Metabase';
    $args{uri} = 'https://metabase.cpantesters.org/api/v1/';
    $config->{_}->{transport} = "$class " . join q{ }, %args;
    print "to\n", $config->{_}->{transport}, "\n";
    # Write the configuration
    $config->write($config_file);
    print "Done\n";
}
elsif ($config->{_}->{transport}) {
    # Modification does not look necessary
    print "Leaving transport configuration set to\n", $config->{_}->{transport}, "\n";
}
else {
    # Modification does not look like it should occur
    print "Not modifying configuration without transport directive\n";
}
 
exit 0;

In order to be fully capable of submitting reports through CPAN::Reporter, be sure to have the following modules installed:

IO::Socket::SSL
Mozilla::CA

For a full uninstall of the hypothetical distribution, please see the UNINSTALL file now included with the distribution.

Leave a Reply