CLEANUP: removed obsolete examples an move a few to better places
The following example files awere removed as irrelevant by this
time :
auth.cfg check.conf ssl.cfg haproxy.spec
The following scripts were removed as having been unused for more
than a decade :
debug2ansi debug2html debugfind check init.haproxy stats_haproxy.sh
seemless_reload.txt was moved to doc/ where it's more suitable.
haproxy.vim was moved to contrib/syntax-highlight/
scripts/create-release was updated not to try to update haproxy.spec
anymore.
diff --git a/examples/haproxy.vim b/contrib/syntax-highlight/haproxy.vim
similarity index 100%
rename from examples/haproxy.vim
rename to contrib/syntax-highlight/haproxy.vim
diff --git a/examples/seamless_reload.txt b/doc/seamless_reload.txt
similarity index 100%
rename from examples/seamless_reload.txt
rename to doc/seamless_reload.txt
diff --git a/examples/auth.cfg b/examples/auth.cfg
deleted file mode 100644
index 08d0034..0000000
--- a/examples/auth.cfg
+++ /dev/null
@@ -1,134 +0,0 @@
-global
-# chroot /var/empty/
-# uid 451
-# gid 451
- log 192.168.131.214:8514 local4 debug
- maxconn 8192
-
-defaults
- timeout connect 3500
- timeout queue 11000
- timeout tarpit 12000
- timeout client 30000
- timeout http-request 40000
- timeout http-keep-alive 5000
- timeout server 40000
- timeout check 7000
-
- option contstats
- option log-health-checks
-
-################################
-userlist customer1
- group adm users tiger,xdb
- group dev users scott,tiger
- group uat users boss,xdb,tiger
- user scott insecure-password cat
- user tiger insecure-password dog
- user xdb insecure-password hello
- user boss password $6$k6y3o.eP$JlKBx9za966ud67qe45NSQYf8Nw.XFuk8QVRevoLh1XPCQDCBPjcU2JtGBSS0MOQW2PFxHSwRv6J.C0/D7cV91
-
-userlist customer1alt
- group adm
- group dev
- group uat
- user scott insecure-password cat groups dev
- user tiger insecure-password dog groups adm,dev,uat
- user xdb insecure-password hello groups adm,uat
- user boss password $6$k6y3o.eP$JlKBx9za966ud67qe45NSQYf8Nw.XFuk8QVRevoLh1XPCQDCBPjcU2JtGBSS0MOQW2PFxHSwRv6J.C0/D7cV91 groups uat
-
-# Both customer1 and customer1alt userlist are functionally identical
-
-frontend c1
- bind 127.101.128.1:8080
- log global
- mode http
-
- acl host_stats hdr_beg(host) -i stats.local
- acl host_dev hdr_beg(host) -i dev.local
- acl host_uat hdr_beg(host) -i uat.local
-
- acl auth_uat http_auth_group(customer1) uat
-
- # auth for host_uat checked in frontend, use realm "uat"
- http-request auth realm uat if host_uat !auth_uat
-
- use_backend c1stats if host_stats
- use_backend c1dev if host_dev
- use_backend c1uat if host_uat
-
-backend c1uat
- mode http
- log global
-
- server s6 192.168.152.206:80
- server s7 192.168.152.207:80
-
-backend c1dev
- mode http
- log global
-
- # require users from customer1 assigned to group dev
- acl auth_ok http_auth_group(customer1) dev
-
- # auth checked in backend, use default realm (c1dev)
- http-request auth if !auth_ok
-
- server s6 192.168.152.206:80
- server s7 192.168.152.207:80
-
-backend c1stats
- mode http
- log global
-
- # stats auth checked in backend, use default realm (Stats)
- acl nagios src 192.168.126.31
- acl guests src 192.168.162.0/24
- acl auth_ok http_auth_group(customer1) adm
-
- stats enable
- stats refresh 60
- stats uri /
- stats scope c1
- stats scope c1stats
-
- # unconditionally deny guests, without checking auth or asking for a username/password
- stats http-request deny if guests
-
- # allow nagios without password, allow authenticated users
- stats http-request allow if nagios
- stats http-request allow if auth_ok
-
- # ask for a username/password
- stats http-request auth realm Stats
-
-
-################################
-userlist customer2
- user peter insecure-password peter
- user monica insecure-password monica
-
-frontend c2
- bind 127.201.128.1:8080
- log global
- mode http
-
- acl auth_ok http_auth(customer2)
- acl host_b1 hdr(host) -i b1.local
-
- http-request auth unless auth_ok
-
- use_backend c2b1 if host_b1
- default_backend c2b0
-
-backend c2b1
- mode http
- log global
-
- server s1 192.168.152.201:80
-
-backend c2b0
- mode http
- log global
-
- server s1 192.168.152.201:80
diff --git a/examples/check b/examples/check
deleted file mode 100755
index d7e01d2..0000000
--- a/examples/check
+++ /dev/null
@@ -1,540 +0,0 @@
-#!/usr/bin/perl
-###################################################################################################################
-# $Id:: check 20 2007-02-23 14:26:44Z fabrice $
-# $Revision:: 20 $
-###################################################################################################################
-# Authors : Fabrice Dulaunoy <fabrice@dulaunoy.com>
-#
-# Copyright (C) 2006-2007 Fabrice Dulaunoy <fabrice@dulaunoy.com>
-#
-# This program 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 2 of the License, or (at your
-# option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
-#
-# This program 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.
-###################################################################################################################
-#
-###################################################################################################################
-
-use strict;
-
-package MyPackage;
-use Config::General;
-use Getopt::Std;
-use LWP::UserAgent;
-use URI;
-use File::Basename;
-
-# CVS VSERSION
-#my $VERSION = do { my @rev = ( q$Revision: 20 $ =~ /\d+/g ); sprintf "%d." . "%d" x $#rev, @rev };
-# SVN VERSION
-my $VERSION = sprintf "1.%02d", '$Revision: 20 $ ' =~ /(\d+)/;
-
-my %option;
-
-getopts( "vHhc:", \%option );
-
-if ( $option{ h } )
-{
- print "Usage: $0 [options ...]\n\n";
- print "Where options include:\n";
- print "\t -h \t\t\tthis help (what else ?)\n";
- print "\t -H \t\t\tshow a sample config file\n";
- print "\t -v \t\t\tprint version and exit\n";
- print "\t -c file \t\tuse config file (default /etc/check.conf)\n";
- print "\n\t This is a small program parsing the config file \n";
- print "\t and checking one or more condition on one or more servers\n";
- print "\t these condition could be \n";
- print "\t\t HTTP return code list (with optinal Host Header and optional Basic Authentication) \n";
- print "\t\t a regex over a HTTP GET (with optinal Host Header and optional Basic Authentication)\n";
- print "\t\t a regex over a FTP GET ( with optional Basic Authentication)\n";
- print "\t\t a TCP open port\n";
- print "\t the result state is an AND over all tests \n";
- print "\t this result could be \n";
- print "\t\t a simple HTTP return state (\"200 OK\" or \"503 Service Unavailable\" \n";
- print "\t\t a HTML page with a status OK or NOK for each test\n";
- print "\t\t a HTML page with a staus OK or NOK for each test in a row of a TABLE\n";
- print "\n\t The natural complement of this tools is the poll_check tool\n";
- print "\t The result code of this tools is designed to fit the HAPROXY requirement (test over a port not related to the WEB server)\n";
-}
-
-if ( $option{ H } )
-{
- print "\t A sample config file could be:\n";
- print <<'EOF';
-
- ###########################################################
- # listening port ( default 9898 )
- port 9899
-
- # on which IP to bind (default 127.0.0.1 ) * = all IP
- host 10.2.1.1
-
- # which client addr is allow ( default 127.0.0.0/8 )
- #cidr_allow = 0.0.0.0/0
-
- # verbosity from 0 to 4 (default 0 = no log )
- log_level = 1
-
- # daemonize (default 0 = no )
- daemon = 1
-
- # content put a HTML content after header
- # (default 0 = no content 1 = html 2 = table )
- content = 2
-
- # reparse the config file at each request ( default 0 = no )
- # only SIGHUP reread the config file)
- reparse = 1
-
- # pid_file (default /var/run/check.pid )
- # $$$ = basename of config file
- # $$ = PID
- pid_file=/var/run/CHECK_$$$.pid
-
- # log_file (default /var/log/check.log )
- # $$$ = basename of config file
- # $$ = PID
- log_file=/var/log/CHECK_$$$.log
-
- # number of servers to keep running (default = 5)
- min_servers = 2
-
- # number of servers to have waiting for requests (default = 2)
- min_spare_servers = 1
-
- # maximum number of servers to have waiting for requests (default = 10)
- max_spare_servers =1
-
- # number of servers (default = 50)
- max_servers = 2
-
-
- ###########################################################
- # a server to check
- # type could be get , regex or tcp
- #
- # get = do a http or ftp get and check the result code with
- # the list, coma separated, provided ( default = 200,201 )
- # hostheader is optional and send to the server if provided
- #
- # regex = do a http or ftp get and check the content result
- # with regex provided
- # hostheader is optional and send to the server if provided
- #
- # tcp = test if the tcp port provided is open
- #
- ###########################################################
-
- <realserver>
- url=http://127.0.0.1:80/apache2-default/index.html
- type = get
- code=200,201
- hostheader = www.test.com
- </realserver>
-
-
- <realserver>
- url=http://127.0.0.1:82/apache2-default/index.html
- type = get
- code=200,201
- hostheader = www.myhost.com
- </realserver>
-
- <realserver>
- url= http://10.2.2.1
- type = regex
- regex= /qdAbm/
- </realserver>
-
- <realserver>
- type = tcp
- url = 10.2.2.1
- port =80
- </realserver>
-
- <realserver>
- type = get
- url = ftp://USER:PASSWORD@10.2.3.1
- code=200,201
- </realserver>
- ###########################################################
-
-
-
-EOF
-
-}
-
-if ( $option{ h } || $option{ H } )
-{
- exit;
-}
-
-if ( $option{ v } ) { print "$VERSION\n"; exit; }
-
-use vars qw(@ISA);
-use Net::Server::PreFork;
-@ISA = qw(Net::Server::PreFork);
-
-my $port;
-my $host;
-my $reparse;
-my $cidr_allow;
-my $log_level;
-my $log_file;
-my $pid_file;
-my $daemon;
-my $min_servers;
-my $min_spare_servers;
-my $max_spare_servers;
-my $max_servers;
-my $html_content;
-
-my $conf_file = $option{ c } || "/etc/check.conf";
-my $pwd = $ENV{ PWD };
-$conf_file =~ s/^\./$pwd/;
-$conf_file =~ s/^([^\/])/$pwd\/$1/;
-my $basename = basename( $conf_file, ( '.conf' ) );
-my $CONF = parse_conf( $conf_file );
-
-my $reparse_one = 0;
-
-$SIG{ HUP } = sub { $reparse_one = 1; };
-
-my @TEST;
-my $test_list = $CONF->{ realserver };
-if ( ref( $test_list ) eq "ARRAY" )
-{
- @TEST = @{ $test_list };
-}
-else
-{
- @TEST = ( $test_list );
-}
-
-my $server = MyPackage->new(
- {
- port => $port,
- host => $host,
- cidr_allow => $cidr_allow,
- log_level => $log_level,
- child_communication => 1,
- setsid => $daemon,
- log_file => $log_file,
- pid_file => $pid_file,
- min_servers => $min_servers,
- min_spare_servers => $min_spare_servers,
- max_spare_servers => $max_spare_servers,
- max_servers => $max_servers,
- }
-);
-
-$server->run();
-exit;
-
-sub process_request
-{
- my $self = shift;
- if ( $reparse || $reparse_one )
- {
- $CONF = parse_conf( $conf_file );
- }
- my $result;
- my @TEST;
- my $test_list = $CONF->{ realserver };
-
- if ( ref( $test_list ) eq "ARRAY" )
- {
- @TEST = @{ $test_list };
- }
- else
- {
- @TEST = ( $test_list );
- }
-
- my $allow_code;
- my $test_item;
- my $html_data;
- foreach my $test ( @TEST )
- {
- my $uri;
- my $authority;
- my $URL = $test->{ url };
- $uri = URI->new( $URL );
- $authority = $uri->authority;
-
- if ( exists $test->{ type } )
- {
- if ( $test->{ type } =~ /get/i )
- {
- my $allow_code = $test->{ code } || '200,201';
- $test_item++;
- my $host = $test->{ hostheader } || $authority;
- my $res = get( $URL, $allow_code, $host );
- if ( $html_content == 1 )
- {
- if ( $res )
- {
- $html_data .= "GET OK $URL<br>\r\n";
- }
- else
- {
- $html_data .= "GET NOK $URL<br>\r\n";
- }
- }
- if ( $html_content == 2 )
- {
- if ( $res )
- {
- $html_data .= "<tr><td>GET</td><td>OK</td><td>$URL</td></tr>\r\n";
- }
- else
- {
- $html_data .= "<tr><td>GET</td><td>NOK</td><td>$URL</td></tr>\r\n";
- }
- }
- $result += $res;
- }
- if ( $test->{ type } =~ /regex/i )
- {
- my $regex = $test->{ regex };
- $test_item++;
- my $host = $test->{ hostheader } || $authority;
- my $res = regex( $URL, $regex, $host );
- if ( $html_content == 1 )
- {
- if ( $res )
- {
- $html_data .= "REGEX OK $URL<br>\r\n";
- }
- else
- {
- $html_data .= "REGEX NOK $URL<br>\r\n";
- }
- }
- if ( $html_content == 2 )
- {
- if ( $res )
- {
- $html_data .= "<tr><td>REGEX</td><td>OK</td><td>$URL</td></tr>\r\n";
- }
- else
- {
- $html_data .= "<tr><td>REGEX</td><td>NOK</td><td>$URL</td></tr>\r\n";
- }
- }
- $result += $res;
- }
- if ( $test->{ type } =~ /tcp/i )
- {
- $test_item++;
- my $PORT = $test->{ port } || 80;
- my $res = TCP( $URL, $PORT );
- if ( $html_content == 1 )
- {
- if ( $res )
- {
- $html_data .= "TCP OK $URL<br>\r\n";
- }
- else
- {
- $html_data .= "TCP NOK $URL<br>\r\n";
- }
- }
- if ( $html_content == 2 )
- {
- if ( $res )
- {
- $html_data .= "<tr><td>TCP</td><td>OK</td><td>$URL</td></tr>\r\n";
- }
- else
- {
- $html_data .= "<tr><td>TCP</td><td>NOK</td><td>$URL</td></tr>\r\n";
- }
- }
- $result += $res;
- }
- }
- }
-
- my $len;
- if ( $html_content == 1 )
- {
- $html_data = "\r\n<html><body>\r\n$html_data</body></html>\r\n";
- $len = ( length( $html_data ) ) - 2;
- }
- if ( $html_content == 2 )
- {
- $html_data = "\r\n<table align='center' border='1' >\r\n$html_data</table>\r\n";
- $len = ( length( $html_data ) ) - 2;
- }
-
- if ( $result != $test_item )
- {
- my $header = "HTTP/1.0 503 Service Unavailable\r\n";
- if ( $html_content )
- {
- $header .= "Content-Length: $len\r\nContent-Type: text/html; charset=iso-8859-1\r\n";
- }
- print $header . $html_data;
- return;
- }
- my $header = "HTTP/1.0 200 OK\r\n";
- if ( $html_content )
- {
- $header .= "Content-Length: $len\r\nContent-Type: text/html; charset=iso-8859-1\r\n";
- }
- print $header. $html_data;
-}
-
-1;
-
-##########################################################
-##########################################################
-# function to REGEX on a GET from URL
-# arg: uri
-# regex to test (with extra parameter like perl e.g. /\bweb\d{2,3}/i )
-# IP
-# port (optionnal: default=80)
-# ret: 0 if no reply
-# 1 if reply
-##########################################################
-##########################################################
-sub regex
-{
- my $url = shift;
- my $regex = shift;
- my $host = shift;
-
- $regex =~ /\/(.*)\/(.*)/;
- my $reg = $1;
- my $ext = $2;
- my %options;
- $options{ 'agent' } = "LB_REGEX_PROBE/$VERSION";
- $options{ 'timeout' } = 10;
- my $ua = LWP::UserAgent->new( %options );
- my $response = $ua->get( $url, "Host" => $host );
- if ( $response->is_success )
- {
- my $html = $response->content;
- if ( $ext =~ /i/ )
- {
- if ( $html =~ /$reg/si )
- {
- return 1;
- }
- }
- else
- {
- if ( $html =~ /$reg/s )
- {
- return 1;
- }
- }
- }
- return 0;
-}
-
-##########################################################
-##########################################################
-# function to GET an URL (HTTP or FTP) ftp://FTPTest:6ccount4F@brice!@172.29.0.146
-# arg: uri
-# allowed code (comma seaparated)
-# IP
-# port (optionnal: default=80)
-# ret: 0 if not the expected vcode
-# 1 if the expected code is returned
-##########################################################
-##########################################################
-sub get
-{
- my $url = shift;
- my $code = shift;
- my $host = shift;
-
- $code =~ s/\s*//g;
- my %codes = map { $_ => $_ } split /,/, $code;
- my %options;
- $options{ 'agent' } = "LB_HTTP_PROBE/$VERSION";
- $options{ 'timeout' } = 10;
- my $ua = LWP::UserAgent->new( %options );
- my $response = $ua->get( $url, "Host" => $host );
- if ( $response->is_success )
- {
- my $rc = $response->{ _rc };
- if ( defined $codes{ $rc } )
- {
- return 1;
- }
- }
- return 0;
-}
-
-##########################################################
-##########################################################
-# function to test a port on a host
-# arg: hostip
-# port
-# timeout
-# ret: 0 if not open
-# 1 if open
-##########################################################
-##########################################################
-sub TCP
-{
- use IO::Socket::PortState qw(check_ports);
- my $remote_host = shift;
- my $remote_port = shift;
- my $timeout = shift;
-
- my %porthash = ( tcp => { $remote_port => { name => 'to_test', } } );
- check_ports( $remote_host, $timeout, \%porthash );
- return $porthash{ tcp }{ $remote_port }{ open };
-}
-
-##############################################
-# parse config file
-# IN: File PATH
-# Out: Ref to a hash with config data
-##############################################
-sub parse_conf
-{
- my $file = shift;
-
- my $conf = new Config::General(
- -ConfigFile => $file,
- -ExtendedAccess => 1,
- -AllowMultiOptions => "yes"
- );
- my %config = $conf->getall;
- $port = $config{ port } || 9898;
- $host = $config{ host } || '127.0.0.1';
- $reparse = $config{ reparse } || 0;
- $cidr_allow = $config{ cidr_allow } || '127.0.0.0/8';
- $log_level = $config{ log_level } || 0;
- $log_file = $config{ log_file } || "/var/log/check.log";
- $pid_file = $config{ pid_file } || "/var/run/check.pid";
- $daemon = $config{ daemon } || 0;
- $min_servers = $config{ min_servers } || 5;
- $min_spare_servers = $config{ min_spare_servers } || 2;
- $max_spare_servers = $config{ max_spare_servers } || 10;
- $max_servers = $config{ max_servers } || 50;
- $html_content = $config{ content } || 0;
-
- $pid_file =~ s/\$\$\$/$basename/g;
- $pid_file =~ s/\$\$/$$/g;
- $log_file =~ s/\$\$\$/$basename/g;
- $log_file =~ s/\$\$/$$/g;
-
- if ( !( keys %{ $config{ realserver } } ) )
- {
- die "No farm to test\n";
- }
- return ( \%config );
-}
-
diff --git a/examples/check.conf b/examples/check.conf
deleted file mode 100644
index 48e8ba1..0000000
--- a/examples/check.conf
+++ /dev/null
@@ -1,93 +0,0 @@
-
-# listening port ( default 9898 )
-port 9899
-
-# on which IP to bind (default 127.0.0.1 ) * = all IP
-#host 10.2.1.1
-
-# which client addr is allow ( default 127.0.0.0/8 )
-#cidr_allow = 0.0.0.0/0
-
-# verbosity from 0 to 4 (default 0 = no log )
-log_level = 1
-
-# daemonize (default 0 = no )
-daemon = 1
-
-# content put a HTML content after header
-# (default 0 = no content 1 = html 2 = table )
-content = 2
-
-# reparse the config file at each request ( default 0 = no )
-# only SIGHUP reread the config file)
-reparse = 1
-
-# pid_file (default /var/run/check.pid )
-# $$$ = basename of config file
-# $$ = PID
-pid_file=/var/run/CHECK_$$$.pid
-
-# log_file (default /var/log/check.log )
-# $$$ = basename of config file
-# $$ = PID
-log_file=/var/log/CHECK_$$$.log
-
-# number of servers to keep running (default = 5)
-min_servers = 2
-
-# number of servers to have waiting for requests (default = 2)
-min_spare_servers = 1
-
-# maximum number of servers to have waiting for requests (default = 10)
-max_spare_servers =1
-
-# number of servers (default = 50)
-max_servers = 2
-
-
-###########################################################
-# a server to check
-# type could be get , regex or tcp
-
-# get = do a http or ftp get and check the result code with
-# the list, coma separated, provided ( default = 200,201 )
-# hostheader is optional and send to the server if provided
-
-# regex = do a http or ftp get and check the content result
-# with regex provided
-# hostheader is optional and send to the server if provided
-
-# tcp = test if the tcp port provided is open
-
-#<realserver>
-# url=http://127.0.0.1:80/apache2-default/index.html
-# type = get
-# code=200,201
-# hostheader = www.test.com
-#</realserver>
-
-
-#<realserver>
-# url=http://127.0.0.1:82/apache2-default/index.html
-# type = get
-# code=200,201
-# hostheader = www.myhost.com
-#</realserver>
-
-<realserver>
- url= http://10.2.2.1
- type = regex
- regex= /qdAbm/
-</realserver>
-
-<realserver>
- type = tcp
- url = 10.2.2.1
- port =80
-</realserver>
-
-#<realserver>
-# type = get
-# url = ftp://FTPuser:FTPpassword@10.2.3.1
-# code=200,201
-#</realserver>
diff --git a/examples/debug2ansi b/examples/debug2ansi
deleted file mode 100644
index 6ba345d..0000000
--- a/examples/debug2ansi
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-tr -d '\015' | sed -e 's,\(: Cookie:.*$\),'$'\e''\[35m\1'$'\e''\[0m,gi' -e 's,\(: Set-Cookie:.*$\),'$'\e''\[31m\1'$'\e''\[0m,gi' -e 's,\(^[^:]*:[^:]*srvhdr.*\)$,'$'\e''\[32m\1'$'\e''\[0m,i' -e 's,\(^[^:]*:[^:]*clihdr.*\)$,'$'\e''\[34m\1'$'\e''\[0m,i'
diff --git a/examples/debug2html b/examples/debug2html
deleted file mode 100644
index 866b761..0000000
--- a/examples/debug2html
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-(echo '<html><body><pre>'; tr -d '\015' | sed -e 's,\(: Cookie:.*$\),<font color="#e000c0">\1</font>,gi' -e 's,\(: Set-Cookie:.*$\),<font color="#e0a000">\1</font>,gi' -e 's,\(^[^:]*:[^:]*srvhdr.*\)$,<font color="#00a000">\1</font>,i' -e 's,\(^[^:]*:[^:]*clihdr.*\)$,<font color="#0000c0">\1</font>,i' -e 's,\(^.*\)$,<tt>\1</tt>,' ; echo '</pre></body></html>')
diff --git a/examples/debugfind b/examples/debugfind
deleted file mode 100644
index 88e9760..0000000
--- a/examples/debugfind
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/bash
-if [ $# -lt 2 ]; then
- echo "Usage: $0 regex debug_file > extracted_file"
- exit 1
-fi
-word=$1
-file=$2
-exec grep $(for i in $(grep $word $file |cut -f1 -d: | sort -u ) ; do echo -n '\('$i':\)\|'; done; echo '^$') $file
diff --git a/examples/haproxy.spec b/examples/haproxy.spec
deleted file mode 100644
index f57a3b6..0000000
--- a/examples/haproxy.spec
+++ /dev/null
@@ -1,472 +0,0 @@
-Summary: HA-Proxy is a TCP/HTTP reverse proxy for high availability environments
-Name: haproxy
-Version: 2.0-dev7
-Release: 1
-License: GPL
-Group: System Environment/Daemons
-URL: http://www.haproxy.org/
-Source0: http://www.haproxy.org/download/1.6/src/devel/%{name}-%{version}.tar.gz
-BuildRoot: %{_tmppath}/%{name}-%{version}-root
-BuildRequires: pcre-devel
-Requires: /sbin/chkconfig, /sbin/service
-
-%description
-HA-Proxy is a TCP/HTTP reverse proxy which is particularly suited for high
-availability environments. Indeed, it can:
-- route HTTP requests depending on statically assigned cookies
-- spread the load among several servers while assuring server persistence
- through the use of HTTP cookies
-- switch to backup servers in the event a main one fails
-- accept connections to special ports dedicated to service monitoring
-- stop accepting connections without breaking existing ones
-- add/modify/delete HTTP headers both ways
-- block requests matching a particular pattern
-
-It needs very little resource. Its event-driven architecture allows it to easily
-handle thousands of simultaneous connections on hundreds of instances without
-risking the system's stability.
-
-%prep
-%setup -q
-
-# We don't want any perl dependecies in this RPM:
-%define __perl_requires /bin/true
-
-%build
-%{__make} USE_PCRE=1 DEBUG="" ARCH=%{_target_cpu} TARGET=linux26
-
-%install
-[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}
-
-%{__install} -d %{buildroot}%{_sbindir}
-%{__install} -d %{buildroot}%{_sysconfdir}/rc.d/init.d
-%{__install} -d %{buildroot}%{_sysconfdir}/%{name}
-%{__install} -d %{buildroot}%{_mandir}/man1/
-
-%{__install} -s %{name} %{buildroot}%{_sbindir}/
-%{__install} -c -m 755 examples/%{name}.init %{buildroot}%{_sysconfdir}/rc.d/init.d/%{name}
-%{__install} -c -m 755 doc/%{name}.1 %{buildroot}%{_mandir}/man1/
-
-%clean
-[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}
-
-%post
-/sbin/chkconfig --add %{name}
-
-%preun
-if [ $1 = 0 ]; then
- /sbin/service %{name} stop >/dev/null 2>&1 || :
- /sbin/chkconfig --del %{name}
-fi
-
-%postun
-if [ "$1" -ge "1" ]; then
- /sbin/service %{name} condrestart >/dev/null 2>&1 || :
-fi
-
-%files
-%defattr(-,root,root)
-%doc CHANGELOG README doc/architecture.txt doc/configuration.txt doc/intro.txt doc/management.txt doc/proxy-protocol.txt
-%doc %{_mandir}/man1/%{name}.1*
-
-%attr(0755,root,root) %{_sbindir}/%{name}
-%dir %{_sysconfdir}/%{name}
-%attr(0755,root,root) %config %{_sysconfdir}/rc.d/init.d/%{name}
-
-%changelog
-* Tue Jun 11 2019 Willy Tarreau <w@1wt.eu>
-- updated to 2.0-dev7
-
-* Fri Jun 7 2019 Willy Tarreau <w@1wt.eu>
-- updated to 2.0-dev6
-
-* Sun Jun 2 2019 Willy Tarreau <w@1wt.eu>
-- updated to 2.0-dev5
-
-* Wed May 22 2019 Willy Tarreau <w@1wt.eu>
-- updated to 2.0-dev4
-
-* Wed May 15 2019 Willy Tarreau <w@1wt.eu>
-- updated to 2.0-dev3
-
-* Tue Mar 26 2019 Willy Tarreau <w@1wt.eu>
-- updated to 2.0-dev2
-
-* Tue Feb 26 2019 Willy Tarreau <w@1wt.eu>
-- updated to 2.0-dev1
-
-* Sat Dec 22 2018 Willy Tarreau <w@1wt.eu>
-- updated to 2.0-dev0
-
-* Wed Dec 19 2018 Willy Tarreau <w@1wt.eu>
-- updated to 1.9.0
-
-* Sun Dec 16 2018 Willy Tarreau <w@1wt.eu>
-- updated to 1.9-dev11
-
-* Sat Dec 8 2018 Willy Tarreau <w@1wt.eu>
-- updated to 1.9-dev10
-
-* Sun Dec 2 2018 Willy Tarreau <w@1wt.eu>
-- updated to 1.9-dev9
-
-* Sun Nov 25 2018 Willy Tarreau <w@1wt.eu>
-- updated to 1.9-dev8
-
-* Sun Nov 18 2018 Willy Tarreau <w@1wt.eu>
-- updated to 1.9-dev7
-
-* Sun Nov 11 2018 Willy Tarreau <w@1wt.eu>
-- updated to 1.9-dev6
-
-* Sun Oct 28 2018 Willy Tarreau <w@1wt.eu>
-- updated to 1.9-dev5
-
-* Sun Oct 21 2018 Willy Tarreau <w@1wt.eu>
-- updated to 1.9-dev4
-
-* Sat Sep 29 2018 Willy Tarreau <w@1wt.eu>
-- updated to 1.9-dev3
-
-* Wed Sep 12 2018 Willy Tarreau <w@1wt.eu>
-- updated to 1.9-dev2
-
-* Thu Aug 2 2018 Willy Tarreau <w@1wt.eu>
-- updated to 1.9-dev1
-
-* Sun Nov 26 2017 Willy Tarreau <w@1wt.eu>
-- updated to 1.9-dev0
-
-* Sun Nov 26 2017 Willy Tarreau <w@1wt.eu>
-- updated to 1.8.0
-
-* Sun Nov 19 2017 Willy Tarreau <w@1wt.eu>
-- updated to 1.8-rc4
-
-* Sat Nov 11 2017 Willy Tarreau <w@1wt.eu>
-- updated to 1.8-rc3
-
-* Fri Nov 3 2017 Willy Tarreau <w@1wt.eu>
-- updated to 1.8-rc2
-
-* Tue Oct 31 2017 Willy Tarreau <w@1wt.eu>
-- updated to 1.8-rc1
-
-* Sun Oct 22 2017 Willy Tarreau <w@1wt.eu>
-- updated to 1.8-dev3
-
-* Fri Jun 2 2017 Willy Tarreau <w@1wt.eu>
-- updated to 1.8-dev2
-
-* Mon Apr 3 2017 Willy Tarreau <w@1wt.eu>
-- updated to 1.8-dev1
-
-* Fri Nov 25 2016 Willy Tarreau <w@1wt.eu>
-- updated to 1.8-dev0
-
-* Fri Nov 25 2016 Willy Tarreau <w@1wt.eu>
-- updated to 1.7.0
-
-* Wed Nov 9 2016 Willy Tarreau <w@1wt.eu>
-- updated to 1.7-dev6
-
-* Tue Oct 25 2016 Willy Tarreau <w@1wt.eu>
-- updated to 1.7-dev5
-
-* Sun Aug 14 2016 Willy Tarreau <w@1wt.eu>
-- updated to 1.7-dev4
-
-* Tue May 10 2016 Willy Tarreau <w@1wt.eu>
-- updated to 1.7-dev3
-
-* Mon Mar 14 2016 Willy Tarreau <w@1wt.eu>
-- updated to 1.7-dev2
-
-* Sun Dec 20 2015 Willy Tarreau <w@1wt.eu>
-- updated to 1.7-dev1
-
-* Tue Oct 13 2015 Willy Tarreau <w@1wt.eu>
-- updated to 1.7-dev0
-
-* Tue Oct 13 2015 Willy Tarreau <w@1wt.eu>
-- updated to 1.6.0
-
-* Tue Oct 6 2015 Willy Tarreau <w@1wt.eu>
-- updated to 1.6-dev7
-
-* Mon Sep 28 2015 Willy Tarreau <w@1wt.eu>
-- updated to 1.6-dev6
-
-* Mon Sep 14 2015 Willy Tarreau <w@1wt.eu>
-- updated to 1.6-dev5
-
-* Sun Aug 30 2015 Willy Tarreau <w@1wt.eu>
-- updated to 1.6-dev4
-
-* Sun Aug 30 2015 Willy Tarreau <w@1wt.eu>
-- updated to 1.6-dev4
-
-* Wed Jul 22 2015 Willy Tarreau <w@1wt.eu>
-- updated to 1.6-dev3
-
-* Wed Jun 17 2015 Willy Tarreau <w@1wt.eu>
-- updated to 1.6-dev2
-
-* Wed Mar 11 2015 Willy Tarreau <w@1wt.eu>
-- updated to 1.6-dev1
-
-* Thu Jun 19 2014 Willy Tarreau <w@1wt.eu>
-- updated to 1.6-dev0
-
-* Thu Jun 19 2014 Willy Tarreau <w@1wt.eu>
-- updated to 1.5.0
-
-* Wed May 28 2014 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev26
-
-* Sat May 10 2014 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev25
-
-* Sat Apr 26 2014 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev24
-
-* Wed Apr 23 2014 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev23
-
-* Mon Feb 3 2014 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev22
-
-* Tue Dec 17 2013 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev21
-
-* Mon Dec 16 2013 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev20
-
-* Mon Jun 17 2013 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev19
-
-* Wed Apr 3 2013 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev18
-
-* Fri Dec 28 2012 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev17
-
-* Mon Dec 24 2012 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev16
-
-* Wed Dec 12 2012 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev15
-
-* Mon Nov 26 2012 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev14
-
-* Thu Nov 22 2012 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev13
-
-* Mon Sep 10 2012 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev12
-
-* Mon Jun 4 2012 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev11
-
-* Mon May 14 2012 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev10
-
-* Tue May 8 2012 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev9
-
-* Mon Mar 26 2012 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev8
-
-* Sat Sep 10 2011 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev7
-
-* Fri Apr 8 2011 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev6
-
-* Tue Mar 29 2011 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev5
-
-* Sun Mar 13 2011 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev4
-
-* Thu Nov 11 2010 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev3
-
-* Sat Aug 28 2010 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev2
-
-* Wed Aug 25 2010 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev1
-
-* Sun May 23 2010 Willy Tarreau <w@1wt.eu>
-- updated to 1.5-dev0
-
-* Sun May 16 2010 Willy Tarreau <w@1wt.eu>
-- updated to 1.4.6
-
-* Thu May 13 2010 Willy Tarreau <w@1wt.eu>
-- updated to 1.4.5
-
-* Wed Apr 7 2010 Willy Tarreau <w@1wt.eu>
-- updated to 1.4.4
-
-* Tue Mar 30 2010 Willy Tarreau <w@1wt.eu>
-- updated to 1.4.3
-
-* Wed Mar 17 2010 Willy Tarreau <w@1wt.eu>
-- updated to 1.4.2
-
-* Thu Mar 4 2010 Willy Tarreau <w@1wt.eu>
-- updated to 1.4.1
-
-* Fri Feb 26 2010 Willy Tarreau <w@1wt.eu>
-- updated to 1.4.0
-
-* Tue Feb 2 2010 Willy Tarreau <w@1wt.eu>
-- updated to 1.4-rc1
-
-* Mon Jan 25 2010 Willy Tarreau <w@1wt.eu>
-- updated to 1.4-dev8
-
-* Mon Jan 25 2010 Willy Tarreau <w@1wt.eu>
-- updated to 1.4-dev7
-
-* Fri Jan 8 2010 Willy Tarreau <w@1wt.eu>
-- updated to 1.4-dev6
-
-* Sun Jan 3 2010 Willy Tarreau <w@1wt.eu>
-- updated to 1.4-dev5
-
-* Mon Oct 12 2009 Willy Tarreau <w@1wt.eu>
-- updated to 1.4-dev4
-
-* Thu Sep 24 2009 Willy Tarreau <w@1wt.eu>
-- updated to 1.4-dev3
-
-* Sun Aug 9 2009 Willy Tarreau <w@1wt.eu>
-- updated to 1.4-dev2
-
-* Wed Jul 29 2009 Willy Tarreau <w@1wt.eu>
-- updated to 1.4-dev1
-
-* Tue Jun 09 2009 Willy Tarreau <w@1wt.eu>
-- updated to 1.4-dev0
-
-* Sun May 10 2009 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.18
-
-* Sun Mar 29 2009 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.17
-
-* Sun Mar 22 2009 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.16
-
-* Sat Apr 19 2008 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.15
-
-* Wed Dec 5 2007 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.14
-
-* Thu Oct 18 2007 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.13
-
-* Sun Jun 17 2007 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.12
-
-* Sun Jun 3 2007 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.11.4
-
-* Mon May 14 2007 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.11.3
-
-* Mon May 14 2007 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.11.2
-
-* Mon May 14 2007 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.11.1
-
-* Mon May 14 2007 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.11
-
-* Thu May 10 2007 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.10.2
-
-* Tue May 09 2007 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.10.1
-
-* Tue May 08 2007 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.10
-
-* Sun Apr 15 2007 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.9
-
-* Tue Apr 03 2007 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.8.2
-
-* Sun Apr 01 2007 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.8.1
-
-* Sun Mar 25 2007 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.8
-
-* Wed Jan 26 2007 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.7
-
-* Wed Jan 22 2007 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.6
-
-* Wed Jan 07 2007 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.5
-
-* Wed Jan 02 2007 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.4
-
-* Wed Oct 15 2006 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.3
-
-* Wed Sep 03 2006 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.2
-
-* Wed Jul 09 2006 Willy Tarreau <w@1wt.eu>
-- updated to 1.3.1
-
-* Wed May 21 2006 Willy Tarreau <willy@w.ods.org>
-- updated to 1.2.14
-
-* Wed May 01 2006 Willy Tarreau <willy@w.ods.org>
-- updated to 1.2.13
-
-* Wed Apr 15 2006 Willy Tarreau <willy@w.ods.org>
-- updated to 1.2.12
-
-* Wed Mar 30 2006 Willy Tarreau <willy@w.ods.org>
-- updated to 1.2.11.1
-
-* Wed Mar 19 2006 Willy Tarreau <willy@w.ods.org>
-- updated to 1.2.10
-
-* Wed Mar 15 2006 Willy Tarreau <willy@w.ods.org>
-- updated to 1.2.9
-
-* Sat Jan 22 2005 Willy Tarreau <willy@w.ods.org>
-- updated to 1.2.3 (1.1.30)
-
-* Sun Nov 14 2004 Willy Tarreau <w@w.ods.org>
-- updated to 1.1.29
-- fixed path to config and init files
-- statically linked PCRE to increase portability to non-pcre systems
-
-* Sun Jun 6 2004 Willy Tarreau <willy@w.ods.org>
-- updated to 1.1.28
-- added config check support to the init script
-
-* Tue Oct 28 2003 Simon Matter <simon.matter@invoca.ch>
-- updated to 1.1.27
-- added pid support to the init script
-
-* Wed Oct 22 2003 Simon Matter <simon.matter@invoca.ch>
-- updated to 1.1.26
-
-* Thu Oct 16 2003 Simon Matter <simon.matter@invoca.ch>
-- initial build
diff --git a/examples/init.haproxy b/examples/init.haproxy
deleted file mode 100644
index 295d50a..0000000
--- a/examples/init.haproxy
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/bin/sh
-#
-# config.rc sample with defaults :
-# service haproxy
-# config /etc/haproxy/haproxy.cfg
-# maxconn 1024
-#
-config="/etc/haproxy/haproxy.cfg"
-maxconn=1024
-
-bin=/usr/sbin/haproxy
-cmdline='$bin -D'
-
-. $ROOT/sbin/init.d/default
-
-if [ -e "$config" ]; then
- maintfd=`grep '^\([^#]*\)\(listen\|server\)' $config|wc -l`
-else
- maintfd=0
-fi
-
-maxfd=$[$maxconn*2 + $maintfd]
-if [ $maxfd -lt 100 ]; then
- maxfd=100;
-fi
-cmdline="$cmdline -n $maxconn -f $config"
-ulimit -n $maxfd
-
-# to get a core when needed, uncomment the following :
-# cd /var/tmp
-# ulimit -c unlimited
-
-# soft stop
-function do_stop {
- pids=`pidof -o $$ -- $PNAME`
- if [ ! -z "$pids" ]; then
- echo "Asking $PNAME to terminate gracefully..."
- kill -USR1 $pids
- echo "(use kill $pids to stop immediately)."
- fi
-}
-
-# dump status
-function do_status {
- pids=`pidof -o $$ -- $PNAME`
- if [ ! -z "$pids" ]; then
- echo "Dumping $PNAME status in logs."
- kill -HUP $pids
- else
- echo "Process $PNAME is not running."
- fi
-}
-
-main $*
-
diff --git a/examples/ssl.cfg b/examples/ssl.cfg
deleted file mode 100644
index 5d96bfb..0000000
--- a/examples/ssl.cfg
+++ /dev/null
@@ -1,26 +0,0 @@
-# This configuration is a simplified example of how to use ssl on front
-# and backends with additional certificates loaded from a directory for SNI
-# capable clients.
-
-global
- maxconn 100
-
-defaults
- mode http
- timeout connect 5s
- timeout client 5s
- timeout server 5s
-
-frontend myfrontend
- # primary cert is /etc/cert/server.pem
- # /etc/cert/certdir/ contains additional certificates for SNI clients
- bind :443 ssl crt /etc/cert/server.pem crt /etc/cert/certdir/
- bind :80
- default_backend mybackend
-
-backend mybackend
- # a http backend
- server s3 10.0.0.3:80
- # a https backend
- server s4 10.0.0.3:443 ssl verify none
-
diff --git a/examples/stats_haproxy.sh b/examples/stats_haproxy.sh
deleted file mode 100644
index 25f23d3..0000000
--- a/examples/stats_haproxy.sh
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/bin/bash
-
-## contrib by prizee.com
-
-socket='/var/run/haproxy.stat'
-
-if ! type socat >/dev/null 2>&1 ; then
- echo "can't find socat in PATH" 1>&2
- exit 1
-fi
-
-printUsage ()
-{
- echo -e "Usage : $(basename $0) [options] -s section
---section -s section\t: section to use ( --list format)
-Options :
---socket -S [socket]\t: socket to use (default: /var/run/haproxy.stat)
---list -l\t\t: print available sections
---help -h\t\t: print this message"
-}
-
-getRawStat ()
-{
- if [ ! -S $socket ] ; then
- echo "$socket socket unavailable" 1>&2
- exit 1
- fi
-
- if ! printf "show stat\n" | socat unix-connect:${socket} stdio | grep -v "^#" ; then
- echo "cannot read $socket" 1>&2
- exit 1
- fi
-}
-
-getStat ()
-{
- stats=$(getRawStat | grep $1 | awk -F "," '{print $5" "$8}')
- export cumul=$(echo $stats | cut -d " " -f2)
- export current=$(echo $stats | cut -d " " -f1)
-}
-
-showList ()
-{
- getRawStat | awk -F "," '{print $1","$2}'
-}
-
-set -- `getopt -u -l socket:,section:,list,help -- s:S:lh "$@"`
-
-while true ; do
- case $1 in
- --socket|-S) socket=$2 ; shift 2 ;;
- --section|-s) section=$2 ; shift 2 ;;
- --help|-h) printUsage ; exit 0 ;;
- --list|-l) showList ; exit 0 ;;
- --) break ;;
- esac
-done
-
-if [ "$section" = "" ] ; then
- echo "section not specified, run '$(basename $0) --list' to know available sections" 1>&2
- printUsage
- exit 1
-fi
-
-cpt=0
-totalrate=0
-while true ; do
- getStat $section
- if [ "$cpt" -gt "0" ] ; then
- sessionrate=$(($cumul-$oldcumul))
- totalrate=$(($totalrate+$sessionrate))
- averagerate=$(($totalrate/$cpt))
- printf "$sessionrate sessions/s (avg: $averagerate )\t$current concurrent sessions\n"
- fi
- oldcumul=$cumul
- sleep 1
- cpt=$(($cpt+1))
-done
diff --git a/scripts/create-release b/scripts/create-release
index 68781b2..4eb1fc1 100755
--- a/scripts/create-release
+++ b/scripts/create-release
@@ -177,17 +177,6 @@
echo '$Format:%ci$' > VERDATE
echo "$DATE" >> VERDATE
-echo "Updating haproxy.spec ..."
-sed -e "s/^Version: .*/Version: $NEW/" < examples/haproxy.spec >examples/haproxy.spec- && mv examples/haproxy.spec- examples/haproxy.spec
-
-(sed -ne '0,/^%changelog/p';
- date -d "$DATE" "+* %a %b %e %Y $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>"
- echo "- updated to $(cat VERSION)"
- echo
-) < examples/haproxy.spec >examples/haproxy.spec-
-sed -ne '0,/^%changelog/d;p' < examples/haproxy.spec >>examples/haproxy.spec-
-mv examples/haproxy.spec- examples/haproxy.spec
-
# updating branch and date in all modified doc files except the outdated architecture.txt
for file in doc/intro.txt doc/configuration.txt doc/management.txt $(git diff --name-only v${OLD}.. -- doc); do
if [ ! -e "$file" ]; then continue; fi
@@ -207,7 +196,7 @@
-i include/common/version.h
if [ -n "$INTERACTIVE" ]; then
- vi CHANGELOG VERSION VERDATE examples/haproxy*.spec \
+ vi CHANGELOG VERSION VERDATE \
src/haproxy.c doc/configuration.txt \
$(git diff --name-only v${OLD}.. -- doc)
fi