DOC: remove the ultra-obsolete TODO file
This one was still written in french and outdated since 1.4 or so.
diff --git a/TODO b/TODO
deleted file mode 100644
index 74b3cce..0000000
--- a/TODO
+++ /dev/null
@@ -1,181 +0,0 @@
-* x-forwarded-for
-* implémenter l'option "log global" au niveau proxy pour utiliser les logs
- globaux.
-* matching case-insensitive
-* implémenter outgoing addr
-* loguer t_cnx, t_data, t_total
-+ factoriser la fonction de log (send_log = send_syslog+warning+alert)
-+ désactivation du keep-alive (suppression des ^Connection: et ajout des Connection: close)
- -> 4 lignes (2 del, 2 add) suffisent.
-+ ne pas loguer certaines adresses IP sources
- -> pour les health-checks uniquement -> pas de log pour les requêtes
- vides (option dontlognull)
-- mesurer le tps consommé entre deux select, et fournir la conso CPU :
- %cpu = 100 * (tpreselect(n+1)-tpostselect(n)) / (tpreselect(n+1)-tpreselect(n))
-* implémenter limitation fd dans la conf : setrlimit(RLIMIT_NOFILE, ...)
-- implémenter core/no-core dans la conf : setrlimit(RLIMIT_CORE, ...)
-- optimiser les regex pour accélérer les matches :
- - compter les matches
- - si match(n) & ([n].cpt > [n-1].cpt) & ([n].action == [n-1].action), swap(n,n-1)
- - régulièrement, diviser tous les compteurs (lors d'un dépassement par exemple)
-- filtrage sur l'adresse IP source, et stocker le pointeur sur la dernière regex
- matchée dans la "session" pour accélérer les regex.
-- gestion keep-alive
-
-+ handle parametrable HTTP health-checks replies
-- differentiate http headers and http uris
-- support environment variables in config file
-- support keep-alive
-- support SSL
-
-===================== demandes ==========================
-ok> 1) écoute sur une plage de ports :
-ok> listen XXX 1.2.3.4:21000-21060
-ok>
-ok> 2) écoutes multiples :
-ok> listen XXX 1.2.3.4:21000
-ok> bind 2.3.4.5:21001
-ok> bind 2.3.4.5:21000-21060
-ok>
-ok> => on en arrive à ceci :
-ok>
-ok> listen XXX [ address:port ]
-ok> bind addr:plage-port[,[addr:]plage-port]*
-ok> bind ...
-ok> ...
-ok>
-ok> => proxy->listen_fd et proxy->listen_addr doivent être
-ok> mis dans des listes
-ok> => OK pour listen, implémenter le BIND.
-ok>
-ok> 3) reconnexion sur le même port sur le serveur :
-ok>
-ok> server XXX 1.2.3.4[:port]
-ok> si <port> n'est pas spécifié, on utilise le même port que celui qui a reçu
-ok> la connexion. Dans ce cas, il faut pouvoir forcer le port du health-check
-ok> par un nouveau parametre "port".
-ok>
-ok> => ça permet les forwardings de plages :
-ok>
-ok> listen XXX
-ok> bind 1.2.3.4:10000-11000
-ok> server 1.2.3.5
-ok>
-4) paramètres par défaut :
- créer une section "defaults" qui précise les paramètres par défaut pour les
- sections suivantes, concernant les paramètres suivants :
- ok- les logs
- ok- les modes (tcp/http)
- ok- le balancing (round-robin/source)
- ok- les time-outs
- ok- maxconn
- ok- redisp
- ok- les options
- ok- le retry
- ok- les checks
- ok- les cookies/captures
- - les options des serveurs ?
- - les filtres et regex ?
-
-* implémenter "balance source" pour faire un hash sur la source.
- permettre de spécifier un masque sur lequel s'applique le hachage,
- ainsi qu'une option pour hacher en fonction de l'adresse dans le
- champ "x-forwarded-for". Problème pour le support des pannes: ce
- type de hash est utile là où la persistence par cookie ne peut pas
- s'appliquer, donc comment faire pour assurer un maximum de persistence
- en cas de panne ?
-
-6) possibilité d'un process séparé par listen :
- listen XXX
- fork [ group_id ]
-
- le fait de spécifier group_id fera que toutes les instances utilisant le
- même identifiant de groupe seront gérées par un même processus.
-
- -> plus souple et plus compréhensible de faire des sections par processus,
- ce qui résoud également le cas ci-dessous. Ex:
- process_group X
- nbproc X
- uid X
- chroot X
- listen ...
-
-7) gérer un chroot/uid/gid différents par process :
- listen XXX
- chroot /truc
- uid 123
- gid 456
-
-8) beaucoup de paramètres pourraient être spécifiques aux serveurs et non
- aux instances. Exemples :
- * adresse IP source pour atteindre le serveur
- - méthode de health-check (proto, ...)
- * méthode de health-check (port)
- - poids
- - alerte en cas de disparition
- - le nombre max de sessions à lui envoyer
-
-ok> 9) ajouter des paramètres optionnels à l'option "httpchk" permettant
-ok> de forcer la méthode, la version HTTP et des headers.
-ok> ex: option httpchk -> OPTIONS / HTTP/1.0
-ok> option httpchk /test -> OPTIONS /test HTTP/1.0
-ok> option httpchk HEAD / HTTP/1.0\nHost:\ www -> tel quel
-
-Todo for 1.1
-============
-* "no more server" alert
-* config check
-- anti-flapping
-
-Todo for 1.2
-============
-- direct <server> <regex> <match>
-- new config syntax allowing braces to be able to shorten lines
-- insert/learn/check/log unique request ID, and add the ability
- to block bad responses.
-- IPv6 :
-* listen [ip4.ip4.ip4.ip4]:port[-port]
-* listen [ip6::...ip6]/port[-port]
-- server xxx ipv4 | ipv4: | ipv4:port[-port] | ipv6/ | ipv6/port[-port]
-* appcookie
-* weighted round robin
-- option to shutdown(listen_sock) when max connections reached
-* epoll
-- replace the event scheduler with an O(log(N)) one. The timer queue will
- need a tree with a known end (to speed up queueing of latest events), and
- no entry for eternity.
-- refine memory management so that the request buffer is only allocated in
- cli_read() and response buffer during srv_read(). This would protect against
- attacks with thousands connections : 20000 connections consume 340 MB RSS and
- 1.3 GB VSZ on Linux. Data should be in a separate buffer to prevent any
- activity on the buffer's pointers from touching the buffer page itself.
-- make buffer size configurable in global options
-* monitor number of simultaneous sessions in logs (per srv/inst/global)
-* ignore leading empty lines in HTTP requests
-+ limit the per-server number of sessions and queue incoming connections
- => still needs refinement (actions at servers UP/DOWN, timeouts)
-- new 'timeout' keyword to set all timeouts (including the queue)
-- ability to intercept an URI to report statistics
-- ability to intercept an URI to return 404
-- embedded error pages loaded in memory at startup time (eg: for expired time
- in connection queue)
-
-
-TODO for 1.3
-============
- - check all copyrights
- - fix Makefile.bsd
- - separate inline functions to put them in files covered by GPL
- - implement HTTP status 414 - request URI too long
- - implement 'use_filters <proxy>' and 'use_backend <proxy>'
- - fix the logs. The logs might be defined from the frontend and
- augmented depending on the backends' options. Another solution
- would be to support a 'log' type entity just like the frontend,
- filters and backend, on which every entity could rely.
- - implement 'on uri <uri> <proxy>', 'on host <host> <proxy>'
- - remove the first now useless hop in hdr_idx
- - balance on URI hash (specify length or depth)
- - balance on any header hash (eg: host)
- - balance with redirections to real servers
- - multi-site LB with weighted redirections to the remote one
-