From 485b206f61c3b03caa0d21f9e16465b1c298003b Mon Sep 17 00:00:00 2001 From: William Lallemand Date: Thu, 30 May 2024 08:38:18 +0200 Subject: [PATCH] DOC: replace the README by a markdown version This patch removes the old README file and replaces it with a more modern markdown version which allows clickable links on the github page. It also adds some of the Github Actions worfklow Status. This patch includes the HAProxy png in the doc directory. --- README | 22 ---------- README.md | 61 +++++++++++++++++++++++++++ doc/HAProxyCommunityEdition_60px.png | Bin 0 -> 15078 bytes 3 files changed, 61 insertions(+), 22 deletions(-) delete mode 100644 README create mode 100644 README.md create mode 100644 doc/HAProxyCommunityEdition_60px.png diff --git a/README b/README deleted file mode 100644 index a2c8b192b..000000000 --- a/README +++ /dev/null @@ -1,22 +0,0 @@ -The HAProxy documentation has been split into a number of different files for -ease of use. - -Please refer to the following files depending on what you're looking for : - - - INSTALL for instructions on how to build and install HAProxy - - BRANCHES to understand the project's life cycle and what version to use - - LICENSE for the project's license - - CONTRIBUTING for the process to follow to submit contributions - -The more detailed documentation is located into the doc/ directory : - - - doc/intro.txt for a quick introduction on HAProxy - - doc/configuration.txt for the configuration's reference manual - - doc/lua.txt for the Lua's reference manual - - doc/SPOE.txt for how to use the SPOE engine - - doc/network-namespaces.txt for how to use network namespaces under Linux - - doc/management.txt for the management guide - - doc/regression-testing.txt for how to use the regression testing suite - - doc/peers.txt for the peers protocol reference - - doc/coding-style.txt for how to adopt HAProxy's coding style - - doc/internals for developer-specific documentation (not all up to date) diff --git a/README.md b/README.md new file mode 100644 index 000000000..35291ecfe --- /dev/null +++ b/README.md @@ -0,0 +1,61 @@ +# HAProxy + +[![alpine/musl](https://github.com/haproxy/haproxy/actions/workflows/musl.yml/badge.svg)](https://github.com/haproxy/haproxy/actions/workflows/musl.yml) +[![AWS-LC](https://github.com/haproxy/haproxy/actions/workflows/aws-lc.yml/badge.svg)](https://github.com/haproxy/haproxy/actions/workflows/aws-lc.yml) +[![openssl no-deprecated](https://github.com/haproxy/haproxy/actions/workflows/openssl-nodeprecated.yml/badge.svg)](https://github.com/haproxy/haproxy/actions/workflows/openssl-nodeprecated.yml) +[![Illumos](https://github.com/haproxy/haproxy/actions/workflows/illumos.yml/badge.svg)](https://github.com/haproxy/haproxy/actions/workflows/illumos.yml) +[![NetBSD](https://github.com/haproxy/haproxy/actions/workflows/netbsd.yml/badge.svg)](https://github.com/haproxy/haproxy/actions/workflows/netbsd.yml) +[![VTest](https://github.com/haproxy/haproxy/actions/workflows/vtest.yml/badge.svg)](https://github.com/haproxy/haproxy/actions/workflows/vtest.yml) + +![HAProxy logo](doc/HAProxyCommunityEdition_60px.png) + +HAProxy is a free, very fast and reliable reverse-proxy offering high availability, load balancing, and proxying for TCP +and HTTP-based applications. + +## Installation + +The [INSTALL](INSTALL) file describes how to build HAProxy. +A [list of packages](https://github.com/haproxy/wiki/wiki/Packages) is also available on the wiki. + +## Getting help + +The [discourse](https://discourse.haproxy.org/) and the [mailing-list](https://www.mail-archive.com/haproxy@formilux.org/) +are available for questions or configuration assistance. You can also use the [slack](https://slack.haproxy.org/) or +[IRC](irc://irc.libera.chat/%23haproxy) channel. Please don't use the issue tracker for these. + +The [issue tracker](https://github.com/haproxy/haproxy/issues/) is only for bug reports or feature requests. + +## Documentation + +The HAProxy documentation has been split into a number of different files for +ease of use. It is available in text format as well as HTML. The wiki is also meant to replace the old architecture +guide. + +- [HTML documentation](http://docs.haproxy.org/) +- [HTML HAProxy LUA API Documentation](https://www.arpalert.org/haproxy-api.html) +- [Wiki](https://github.com/haproxy/wiki/wiki) + +Please refer to the following files depending on what you're looking for: + + - [INSTALL](INSTALL) for instructions on how to build and install HAProxy + - [BRANCHES](BRANCHES) to understand the project's life cycle and what version to use + - [LICENSE](LICENSE) for the project's license + - [CONTRIBUTING](CONTRIBUTING) for the process to follow to submit contributions + +The more detailed documentation is located into the doc/ directory: + + - [ doc/intro.txt ](doc/intro.txt) for a quick introduction on HAProxy + - [ doc/configuration.txt ](doc/configuration.txt) for the configuration's reference manual + - [ doc/lua.txt ](doc/lua.txt) for the Lua's reference manual + - [ doc/SPOE.txt ](doc/SPOE.txt) for how to use the SPOE engine + - [ doc/network-namespaces.txt ](doc/network-namespaces.txt) for how to use network namespaces under Linux + - [ doc/management.txt ](doc/management.txt) for the management guide + - [ doc/regression-testing.txt ](doc/regression-testing.txt) for how to use the regression testing suite + - [ doc/peers.txt ](doc/peers.txt) for the peers protocol reference + - [ doc/coding-style.txt ](doc/coding-style.txt) for how to adopt HAProxy's coding style + - [ doc/internals ](doc/internals) for developer-specific documentation (not all up to date) + +## License + +HAProxy is licensed under [GPL 2](doc/gpl.txt) or any later version, the headers under [LGPL 2.1](doc/lgpl.txt). See the +[LICENSE](LICENSE) file for a more detailed explanation. diff --git a/doc/HAProxyCommunityEdition_60px.png b/doc/HAProxyCommunityEdition_60px.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7acc430986a4a2532acfdabfebe6ba9117c0f7 GIT binary patch literal 15078 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 literal 0 HcmV?d00001