Config::Proxy
===============

This module converts the configuration file of an HTTP proxy
server to a parse tree and provides methods for various operations
on this tree, such as: searching, modifying and saving it to a file.

Two proxy implementations are supported: HAProxy and Pound.

EXAMPLE 1

   use Config::HAProxy;
  
   # Parse HAProxy configuration file
   my $cfg = Config::HAProxy->new->parse;

   # Print IP addresses and ports of the configured backends
   foreach my $srv (map { $_->select(name => 'server') }
                   $cfg->tree->select(name => 'backend')) {
      print $srv->arg(1),"\n";
   }

EXAMPLE 2

   use Config::Pound;

   # Parse pound configuration file
   my $cfg = Config::Pound->new->parse;

   # Print IP addresses and ports of the configured backends
   foreach my $lstn ($cfg->select(name => 'ListenHTTPS')) {
       foreach my $svc ($lstn->select(name => 'Service')) {
  	   foreach my $be ($svc->select(name => 'Backend')) {
	       my ($addr, $port) = ($be->select(name => 'Address'),
				    $be->select(name => 'Port'));
	       next unless defined($addr) && defined($port);
	       print $be->locus, ": ", $addr->arg(0), ":", $port->arg(0), "\n";
	   }
       }
   }

INSTALLATION

To install this module type the following:

   perl Makefile.PL
   make
   make test
   make install

COPYRIGHT AND LICENCE

Copyright (C) 2018-2024 by Sergey Poznyakoff

This library is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.

It is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License along
with this library. If not, see <http://www.gnu.org/licenses/>.