Installez vos webcounters vintage !


Compteur CGI en C pour serveur Web sous UNIX

[Téléchargement] [Guide d'installation] [Exemples d'utilisation]








Vous avez atteint la page du TheRaphit's Web Site dédiée aux webcounters, reliques des sites personnels du 20ème siècle.

Vous découvrirez ici des pièces de musée d'Internet mais pas que, puisque je vous propose ici en téléchargement le programme que j'utilisais en 1997, ainsi qu'un guide de configuration pour pouvoir l'installer sur votre serveur, et afficher ainsi vos propres compteurs vintage sur votre site !


Un webcounter, c'est quoi ?


A la grande époque du Web personnel, presque tous les sites tenus par des particuliers étaient hébergés par divers prestataires (fournisseur d'accès ou hébergeurs communautaires) en mutualisé, c'est à dire que tous les utilisateurs d'un hébergeur donné se partageaient le même serveur.

Seul l'opérateur du serveur avait donc accès à ses logs, pour autant que des journaux d'accès ne fussent tenus... En conséquence les propriétaires des sites hébergés n'avaient pas de moyen de connaître quelle était la popularité de leur site, et surtout quelle était la popularité des différentes pages de leur site.

C'est là que le webcounter entre en scène : il consiste en un petit insert dans le code HTML de la page, qui appelle un programme générant à la volée un bloc de texte ou une image qui indique le nombre de fois que le dit programme a été appelé. Suivant les types de compteurs il était possible de passer des paramètres, afin de disposer de plusieurs comptages différents au sein du même site.

Comme l'indique la page Wikipedia qui leur est dédiée, ceux-ci sont progressivement tombés en désuétude en même temps que l'hébergement mutualisé, et avec l'amélioration des outils d'analyse d'accès aux serveurs Web. Ils ont ensuite presque complètement disparu lorsque le Web s'est professionnalisé et la fin des sites personnels.

Vraiment disparus... Ou pas ?


Après plusieurs jours de recherches acharnées, en suivant un véritable jeu de piste, j'ai pu retrouver l'un de ces programmes, en l'occurence exactement celui que j'utilisais à l'époque : wwwcount 2.2. Très sûrement le meilleur programme de compteurs existant à ce moment-là, en comparaison le leader du moment (digits.com) c'était too poori. Ce n'est donc pas de la merde que je vous propose ici, sachez le.

Bref, j'ai reconstitué une archive du code source du programme, que je peux désormais vous mettre à disposition.


La somme MD5 de cette archive est : c2974056a66ae0619c03800e9a862e42. Celle-ci doit être identique à celle d'une autre copie de cette archive, qui est disponible directement sur mon site, via cette section sur la page concernant la restauration. C'est hébergé sur une autre machine.

Allez, je vous embarque pour un peu de counter-fun !
Installation du programme


Le programme est destiné à être installé sur un serveur sous UNIX. Il y a cependant un petit écart de 30 ans (une broutille) entre les systèmes pour lesquels il a été conçu et les OS modernes. Vous pourriez donc rencontrer quelques difficultés.

Le programme compile cependant sans problèmes sur une distribution récente de Linux x86_64 (noyau 6.x). Je sais qu'il ne compile pas sous FreeBSD malheureusement. Cependant le programme n'est constitué que d'un exécutable unique, donc après l'avoir compilé sur une machine Linux quelconque, il fonctionnera très certainement sur votre serveur si celui-ci est sous un système UNIX disposant d'une émulation Linux. C'est notamment le cas de FreeBSD et de certaines versions de Solaris.

Après décompression de l'archive, le répertoire du programme doit ressembler à ceci :


Vous devez notamment vérifier que les scripts sont bien exécutables

Voyons maintenant les différentes étapes d'installation :
  • Exécuter ./Count-config : ceci va lancer un script interactif vous demandant quelques informations sur votre système, et notamment où se situe le répertoire cgi-bin de votre serveur. Les répertoires d'installation du programme lui-même (sous /usr/local) sont assez logiques, mais vous voudrez peut-être tout mettre sur une partition dédiée, comme un /opt. En effet le répertoire data contenant les valeurs des compteurs sera par défaut /usr/local/etc/Counter/data si vous ne changez rien. Cela pourrait ne pas vous convenir.

    Il y a quelques options de configuration importantes que vous allez définir également à cette étape : notamment si vous souhaitez autoriser le programme à créer de nouveaux compteurs automatiquement, ou si vous souhaitez protéger l'accès au compteur via la variable HTTP_REFERER. Cette dernière option est indiquée comme étant expérimentale par l'auteur, car à l'époque il y avait de vieux navigateurs qui n'implémentaient pas le support des referrers. Ce n'est bien sûr plus du tout le cas aujourd'hui. Quoi ? Comment ? Qu'entends-je ? Qu'ouïs-je ?? Un truc qui fonctionne mieux au 21ème siècle qu'au 20ème ?! Eh oui, ça arrive.

  • Exécuter ./configure : étape classique de toute compilation, le script va vérifier que tous les outils nécessaires (notamment le compilateur) sont bien présents sur votre système. Sur une distribution Debian GNU/Linux, vous devez avoir installé le package build-essential afin de pouvoir passer cette phase.

  • Lancer la compilation avec make : celle-ci doit se dérouler sans erreurs. S'il y en a une, le programme make vous l'indiquera très clairement.

  • Exécuter ./Gen-conf : un autre script interactif qui vous assiste dans la rédaction du fichier de configuration du programme, à savoir count.conf. Cela va vous permettre de définir les noms DNS de votre serveur, comprenant en particulier ceux correspondant aux sites sur lesquels vous vouler insérer les compteurs. Ceci afin de constituer, entre autres, une liste d'autorisation d'appel au programme.

  • Installer le programme avec ./Count-install. Pour cela vous devez d'abord passer root sur votre serveur, ou utiliser sudo. Une fois ceci fait, vous devriez trouver le fichier binaire Count.cgi dans votre répertoire cgi-bin avec les bons droits UNIX (0755).
Avant de passer au vif du sujet, je vous recommande de vérifier que tout est en ordre au niveau du fichier count.conf mais aussi de la configuration de votre serveur.

Quelques notes à propos de la configuration


Le fichier de configuration, count.conf, présente trois sections différentes délimitées par { }. Les dernières lignes du fichier devraient ressembler à ce qui suit :
#
{
workstation.domaine.tld
192.0.2.69
}
# Auth block
{
serveur.domaine.tld
mymegawebsite.tld
}
# all possible names and IP address of your host can be referred.
{
serveur.domaine.tld
serveur
192.0.2.42
v4only.domaine.tld
v4only
}
#
La première section indique quels sont les hôtes pour lesquels vous souhaitez ignorer les hits : si le programme est appelé depuis ces adresses, il n'incrémentera pas les compteurs stockés sur le serveur.

La deuxième section indique quels sont les sites qui peuvent faire appel aux compteurs, le programme vérifiant cela grâce au HTTP_REFERER. Indiquez donc ici, en plus du nom de votre serveur, tous les noms de domaine correspondant aux sites sur lesquels vous voulez utiliser un compteur.

La troisième section indique enfin les différents noms correspondant au serveur sur lequel est intallé le programme.

Note HTTPS. Vous pouvez interroger le programme indifféremment en HTTP ou HTTPS, il n'y a rien à préciser dans sa configuration pour cela. Toutefois, gardez à l'esprit qu'appeler du contenu HTTP depuis une page HTTPS provoque la perte du HTTP_REFERER. Egalement, les navigateurs pourraient décider de ne pas charger du contenu considéré comme « non sécurisé » depuis une page HTTPS, et donc ne pas du tout afficher les compteurs.

Note IPv6 ! Le programme n'a pas été conçu pour fonctionner en IPv6. Il est donc possible que les noms DNS indiqués dans le fichier count.conf ne soient pas traités s'ils ont un enregistrement DNS AAAA, voire même que cela perturbe le fonctionnement global du programme. Aussi je vous recommande d'appeler le programme en IPv4 uniquement, via une URL correspondant à un nom DNS ne disposant que d'un enregistrement de type A. D'où le v4only.domaine.tld que je fais figurer dans mon exemple. Cela permettra également de vous assurer que les hits seront bien ignorés depuis votre poste de travail (première section) car votre serveur HTTP transmettra alors un REMOTE_ADDR IPv4 au programme.

Dinguerie spéciale 21ème siècle !! J'ai remarqué que certains navigateurs (mais pas tous) ignorent le tag HTML <IMG SRC="..."> servant à appeler un compteur lorsque la chaîne de caractères cgi-bin figure dans l'URL, et que des paramètres sont passés en fin d'URL (présence d'une séquence "?..."). Ce n'est pas une blague, le navigateur IGNORE purement et simplement le tag, n'affiche même pas une image manquante, et ne génère aucune connexion vers le serveur hébergeant le programme, ce que j'ai vérifié avec un tcpdump. C'est le cas de Chrome [desktop] et Firefox, mais pas de Chrome [mobile/Android] (!). Néanmoins vous pouvez blouzer ces navigateurs en créant un alias de votre répertoire cgi-bin au niveau de votre serveur HTTP, par exemple scripts ou progs, et à ce moment-là, ça fonctionne. Ce qu'il ne faut pas faire...

Cela étant dit, il est plus que temps de passer au plat de résistance.

Exemples d'utilisation, et fonctions principales


Count 2.2 est hautement personnalisable. Je vais en décrire ici les fonctions principales avec quelques exemples de rendus.

Les compteurs que je vous présente ici sont des vrais ! Vous pouvez donc recharger cette page afin de voir ce que produit l'incrémentation sur les différents styles. Ah bah oui, vous vous êtes cru sur Mygale ou bien ? Ce n'est pas de l'hébergement de PD ici :D :D :D

Le programme génrère des images au format GIF, que vous pouvez insérer dans vos pages comme n'importe quelle image statique, le navigateur du client ne faisant pas la différence. La structure générale de l'appel au programme, en HTML, est celle-ci :
<IMG SRC="http://serveur.domaine.tld/repertoire/Count.cgi?fonction1=arg1&fonction2=arg2&...&df=my-counter.dat">
Le programme va prendre en paramètre plusieurs fonctions différentes, lesquels attendent des arguments qui leur sont spécifiques.

Voyons ensemble quelques une de ces fonctions et les arguments sur lesquels vous pouvez jouer.
Et voilà pour l'essentiel.

L'archive du programme contient une documentation complète (en anglais) si vous souhaitez en savoir davantage. En attendant ces petits compteurs ont fasciné [Compteur] visiteurs depuis le 18 janvier 2025 !
Si vous souhaitez bénéficier d'un compteur pour votre petite homepage mais que vous ne pouvez malheureusement pas installer le programme sur le serveur qui vous héberge, alors venez me trouver sur IRCnet.

Je me ferai un plaisir de vous en mettre quelques uns à disposition gratuitement, car je serai ravi d'aider un autre rédacteur de page personnelle !

[Go faire exploser les compteurs de mon site !]