The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl -w
use strict;
use Getopt::Long;
use Firefox::Application;

my $ff = Firefox::Application->new();

# Check the network proxy settings
my $prefs = $ff->repl->expr(<<'JS');
  Components.classes["@mozilla.org/preferences-service;1"]
    .getService(Components.interfaces.nsIPrefBranch);
JS

print "Your proxy settings are\n";
print "Proxy type\t",  $prefs->getIntPref('network.proxy.type'),"\n";
print "HTTP  proxy\t", $prefs->getCharPref('network.proxy.http'),"\n";
print "HTTP  port\t",  $prefs->getIntPref('network.proxy.http_port'),"\n";
print "SOCKS proxy\t", $prefs->getCharPref('network.proxy.socks'),"\n";
print "SOCKS port\t",  $prefs->getIntPref('network.proxy.socks_port'),"\n";

# Switch off the proxy
if ($prefs->getIntPref('network.proxy.type') != 0) {
    $prefs->setIntPref('network.proxy.type',0);
};

# Switch on the manual proxy configuration
$prefs->setIntPref('network.proxy.type',1);


=head1 NAME

proxy-settings.pl - display and change the proxy settings of Firefox

=head1 SYNOPSIS

proxy-settings.pl

=head1 DESCRIPTION

This shows how to read and write configuration settings
from L<about:config> . Particularly, it shows how
to switch the proxy settings in Firefox on and off.

=cut