|
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.
-
La fonction
dd (digit directory) définit le style des chiffres du compteur,
les valeurs possibles de l'argument étant les lettres de A à E .
Style A : 
Style B : 
Style C : 
Style D : 
Style E :
-
La fonction
ft (frame thickness) fixe l'épaisseur du
cadre du compteur. Il s'agit d'un nombre entier. Notamment, la valeur
1 permet de ne pas afficher de cadre du tout.
Sans cadre (valeur 1 ) : 
Cadre fin - bordure (valeur 2 ) : 
Cadre épais (valeur 9 ) :
-
La fonction
frgb (frame RGB) vous permet de choisir la couleur du cadre, en spécifiant en paramètre une couleur 24 bits via son codage RGB hexadécimal. Il n'est pas nécessaire de préfixer celui-ci d'un # ou
de 0x .
Exemple avec FFFFFF (blanc) : 
Autre exemple (ici, couleur 551A8B ) : 
Couleur Paladin - F48CBA (j'étais o-bli-gé de la mettre celle-là) :
-
Les fonctions
md et pad (maximum digits et padding) permettent de contrôler le nombre de chiffres que le compteur affichera. Si la valeur actuelle du compteur est inférieure à 10md, alors des zéros devant le nombre seront affichés si la valeur de pad est à T (true). La valeur F (false) désactivera ces zéros non significatifs.
Maximum neuf chiffres, avec padding : 
Maximum six chiffres (valeur par défaut), mais sans zéros non significatifs : 
Il est intéressant de noter que md va donc
définir le nombre maximum que pourra afficher le compteur, et que l'auteur du programme
a limité la valeur de md à
10 . J'espère donc que
vous n'aviez pas prévu de faire plus de dix milliards de hits sur vos pages !
-
Voici maintenant une fonction qui s'avérer fort utile :
incr
(increment) permet d'appeler le compteur mais sans l'incrémenter. Cela peut notamment
vous servir à afficher le même compteur sur plusieurs pages d'une même
section de votre site, sans que cela ne compte un hit à chaque fois. Vous pouvez aussi
suivre le compteur d'une page depuis une autre, comme dans mon exemple ci-dessous. Seule
la valeur F a un intérêt, puisque la
valeur T est celle par défaut, sans
utiliser cette fonction.
Ce compteur est celui qui figure sur la page concernant la reconstruction de mon site, il s'incrémentera si celle-ci est visitée, mais pas lors du rechargement de la page que vous lisez
actuellement.
-
Fonction moins intéressante mais qui peut avoir son utilité,
lit
(literal) permet de fixer la valeur affichée par le compteur, en passant
celle-ci en argument. Vous n'êtes pas limité à dix chiffres ! Mais vous ne
pouvez afficher que des chiffres.
Biiiip ! Biiiip ! Initializing counter... 
Affichage de tous les chiffres du style C (mon préféré), chacun en deux exemplaires :
-
J'en arrive enfin à la dernière fonction de l'appel au programme, et bien sûr la plus importante : la fonction
df (data file) indique au programme quel compteur il doit afficher, en appelant un fichier
.dat stocké sur le serveur. Il est à noter cependant que ce paramètre
est facultatif.
Il est par exemple inutile avec lit (voir
ci-dessus) mais de manière générale, l'omettre fera afficher au programme un
nombre aléatoire. Cela peut servir à des fins de test.
Le numéro gagnant de cette semaine est le !
Allez-y, misez des sous !! (Oui, plein)
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é
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 !]
|