logrotate : stat of @ failed (No such file or directory)

Le
Laurent Hugé
Bonjour,

Après quelques semaines passée à passer ma machine en
LinuxFromScratch, je suis dans la phase de finition de configuration.
Essayant d'installer logrotate, je me retrouve face à une erreur que
je n'arrive pas à cerner :
- j'ai installé logrotate 3.3 (en mode débugage avec un fichier de
configuration logrotate.conf uniquement composé de /var/log
messages), j'obtiens ceci :
reading config file /etc/logrotate.conf
reading config info for /messages
Handling 1 logs
rotating pattern: /var/log/messages 104857600 bytes (5 rotations)
empty log files are not rotated old logs are removed
errors displayed on stderr
rotating file @
stat of @ failed: No such file or directory
log does not need rotating

- j'ai compilé logrotate 3.5.9, mais lors du make test, j'arrive à :
(cd test; ./test)
/usr/src/apps/système/logrotate-3.5.9/test
error: test-config.1:1 unexpected text
stat of pW@h@ failed: No such file or directory
(de multiple fois, pour chaque fichier de test en fait).

Ce qui m'inquiète, c'est que logrotate semble lire correctement le
fichier de configuration (il trouve bien /var/log/messages), mais
lorsqu'il tente d'y accéder, il génère une erreur ("rotating file
@").

J'ai inspecté le contenu de logrotate.c, mais tout semble correct.
L'erreur n'est relatée nulle part (ni sur Google, que je cherche ou
non selon logrotate, ni sur le bug report de Debian).
De plus, j'avais déjà installé logrotate sur mon autre machine
(LinuxFromScratch aussi) et je n'ai jamais eu une telle erreur.

En faisant passer logrotate via strace, je m'aperçois qu'il cherche à
accéder à une configuration (?) de popt. Dans le doute, j'ai
réinstallé popt, mais cela n'a rien changé (d'ailleurs, aucun de ces
fichiers n'est installé avec popt, ni n'est disponible dans les
sources).
Il vient aussi lire le fichier /usr/share/zoneinfo/Europe/Paris, mais
là, je ne vois pas pourquoi.
Dans quelle direction faut-il que je cherche ?
Par pitié, ne me dite pas que c'est la glibc qui plante :-( Je ne
verrais pas pourquoi elle ne plante que maintenant alors que j'ai
installé de nombreuses choses sans problème (du style KDE ou GNOME !)

Pour info, voici la sortie de strace logrotate -d /etc
logrotate.conf :
execve("/usr/sbin/logrotate", ["logrotate", "-d", "/etc
logrotate.conf"], [/* 34 vars */]) = 0
brk(0) = 0x8050c6c
open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_sizer315, }) = 0
old_mmap(NULL, 72315, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40016000
close(3) = 0
open("/usr/lib/libpopt.so.0", O_RDONLY) = 3
read(3, "177ELF11133120023",
1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size2098, }) = 0
old_mmap(NULL, 29744, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x40028000
mprotect(0x4002f000, 1072, PROT_NONE) = 0
old_mmap(0x4002f000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE
MAP_FIXED, 3, 0x6000) = 0x4002f000
close(3) = 0
open("/lib/libc.so.6", O_RDONLY) = 3
read(3, "177ELF111331340Y1",
1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size30673, }) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0x40030000
old_mmap(NULL, 1242308, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x40031000
mprotect(0x4015a000, 25796, PROT_NONE) = 0
old_mmap(0x4015a000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE
MAP_FIXED, 3, 0x128000) = 0x4015a000
old_mmap(0x4015e000, 9412, PROT_READ|PROT_WRITE, MAP_PRIVATE
MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4015e000
close(3) = 0
munmap(0x40016000, 72315) = 0
brk(0) = 0x8050c6c
brk(0x8051c6c) = 0x8051c6c
brk(0) = 0x8051c6c
brk(0x8052000) = 0x8052000
open("/etc/popt", O_RDONLY) = -1 ENOENT (No such file or
udirectory)
getuid32() = 0
geteuid32() = 0
open("/root/.popt", O_RDONLY) = -1 ENOENT (No such file or
directory)
stat64("/etc/logrotate.conf", {st_mode=S_IFREG|0600,
st_size8, }) = 0
open("/etc/logrotate.conf", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0600, st_size8, }) = 0
lseek(3, 0, SEEK_END) = 108
lseek(3, 0, SEEK_SET) = 0
read(3, "compressnotifempty/var/log/me", 108) = 108
close(3) = 0
write(2, "reading config file /etc/logrota", 40) = 40
lstat64("@", 0xbffff120) = -1 ENOENT (No such file or
directory)
write(2, "reading config info for /var/log", 42) = 42
open("/var/lib/logrotate.status", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size), }) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0x40016000
read(3, "logrotate state -- version 1", 4096) = 29
read(3, "", 4096) = 0
close(3) = 0
munmap(0x40016000, 4096) = 0
write(2, "Handling 1 logs", 16) = 16
write(2, "rotating pattern: /var/log/messa", 36) = 36
write(2, "104857600 bytes ", 16) = 16
write(2, "(5 rotations)", 14) = 14
write(2, "empty log files are not rotated ", 32) = 32
write(2, "old logs are removed", 21) = 21
write(2, "errors displayed on stderr", 27) = 27
time(NULL) = 1081453962
open("/usr/share/zoneinfo/Europe/Paris", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size82, }) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0x40016000
read(3, "TZifff",
4096) = 1082
close(3) = 0
munmap(0x40016000, 4096) = 0
write(2, "rotating file 23423@4", 20) = 20
stat64("@", 0xbffff380) = -1 ENOENT (No such file or
directory)
write(2, "stat of 23423@4 failed: No such fi", 48) = 48
write(2, "log does not need rotating", 27) = 27
exit_group(1) = ?
--
Laurent Hugé (pour m'écrire, ôter PasDeSpam de l'adresse de courriel)
GPG fingerprint = 3AFF A106 39D9 DB2C 885D 41C3 76DC 2C3F 01BE 5D4A
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
no_spam
Le #1039069
On Thu, 08 Apr 2004 22:15:35 +0200, Laurent Hugé wrote:

Bonjour,

Après quelques semaines passée à passer ma machine en
LinuxFromScratch, je suis dans la phase de finition de configuration.
Essayant d'installer logrotate, je me retrouve face à une erreur que
je n'arrive pas à cerner :
- j'ai installé logrotate 3.3 (en mode débugage avec un fichier de
configuration logrotate.conf uniquement composé de /var/log
messages), j'obtiens ceci :
reading config file /etc/logrotate.conf
reading config info for /messages
Handling 1 logs
rotating pattern: /var/log/messages 104857600 bytes (5 rotations)
empty log files are not rotated old logs are removed
errors displayed on stderr
rotating file @
stat of @ failed: No such file or directory
log does not need rotating

- j'ai compilé logrotate 3.5.9, mais lors du make test, j'arrive à :
(cd test; ./test)
/usr/src/apps/système/logrotate-3.5.9/test
error: test-config.1:1 unexpected text
stat of @ failed: No such file or directory
... (de multiple fois, pour chaque fichier de test en fait).

Ce qui m'inquiète, c'est que logrotate semble lire correctement le
fichier de configuration (il trouve bien /var/log/messages), mais
lorsqu'il tente d'y accéder, il génère une erreur ("rotating file
@").


Ca vient soit du fichier logrotate.conf, soit du contenu de
/var/log/messages (un fichier nommé '@' ?)
les poster serait peut-être judicieux...

g.patel
Le #1036920
On Fri, 09 Apr 2004 00:52:56 +0200, no_spam

Ca vient soit du fichier logrotate.conf, soit du contenu de
/var/log/messages (un fichier nommé '@' ?)
les poster serait peut-être judicieux...


euh, ça doit vouloir dire 'poster une petite partie de
/var/log/messages'

[ gerard]# ls -al /var/log/messages
-rw-r----- 1 root root 3940318 avr 9 08:39 /var/log/messages

Gérard Patel

no_spam
Le #1036562
On Fri, 09 Apr 2004 06:41:38 +0000, gerard patel wrote:

On Fri, 09 Apr 2004 00:52:56 +0200, no_spam

Ca vient soit du fichier logrotate.conf, soit du contenu de
/var/log/messages (un fichier nommé '@' ?)
les poster serait peut-être judicieux...


euh, ça doit vouloir dire 'poster une petite partie de
/var/log/messages'

[ gerard]# ls -al /var/log/messages
-rw-r----- 1 root root 3940318 avr 9 08:39 /var/log/messages


Pardon, je me suis trompé, je voulais dire poster le contenu de /var/log:
ls -al /var/log
Désolé.


Laurent Hugé
Le #1035932
Pardon, je me suis trompé, je voulais dire poster le contenu de
/var/log: ls -al /var/log
Non, non, je suis sûr de ma configuration.

Pour ceux qui en doutent encore :
- /etc/logrotate.conf :
compress
notifempty

/var/log/messages {
rotate 5
weekly
size 100M
postrotate
endscript
}

- ls -al /var/log :
total 391404
drwx------ 3 root root 4096 9 avril .
drwxr-xr-x 13 root root 4096 4 mars ..
-rw-r--r-- 1 root root 307519529 9 avril auth.log
-rw-r--r-- 1 root root 768 28 février btmp
-rw-r--r-- 1 root root 0 27 mars cron.log
-rw-r--r-- 1 root root 1318 5 avril cups.err
-rw-r--r-- 1 root root 455913 9 avril cups.log
-rw-r--r-- 1 root root 1243237 9 avril daemon.err
-rw-r--r-- 1 root root 1616541 9 avril daemon.log
-rw-r--r-- 1 root root 0 27 mars emergency
-rw-r--r-- 1 root root 99533 9 avril kdm.log
-rw-r--r-- 1 root root 1711 7 avril kernel.err
-rw-r--r-- 1 root root 267025 9 avril kernel.log
-rw-r--r-- 1 root root 14801416 27 mars kern.log
-rw-r--r-- 1 root root 1945596 9 avril lastlog
-rw-r--r-- 1 root root 0 28 février mail.log
-rw-r--r-- 1 root root 72498119 9 avril messages
-rw-r--r-- 1 root root 32650 7 mars
scrollkeeper.log
-rw-r--r-- 1 root root 1137 27 mars servicelog
drwx------ 8047 root root 184320 9 avril snort
-rw-r--r-- 1 root root 599490 29 février sys.log
-rw-r--r-- 1 root root 15587 9 avril user.log
-rw-r--r-- 1 root root 688896 9 avril wtmp
-rw-r--r-- 1 root root 40905 9 avril
XFree86.0.log
-rw-r--r-- 1 root root 41734 8 avril
XFree86.0.log.old
-rw-r--r-- 1 root root 41541 9 avril
XFree86.1.log
-rw-r--r-- 1 root root 40575 8 avril
XFree86.1.log.old
-rw-r--r-- 1 root huge 41405 2 avril
XFree86.2.log
-rw-r--r-- 1 root huge 41328 30 mars
XFree86.2.log.old

Bon, alors maintenant, qu'est-ce que je fais ? Il y a bien une
évaluation de stat (je suppose) qui ne fonctionne pas comme prévu.
--
Laurent Hugé (pour m'écrire, ôter PasDeSpam de l'adresse de courriel)
GPG fingerprint = 3AFF A106 39D9 DB2C 885D 41C3 76DC 2C3F 01BE 5D4A

no_spam
Le #1038293
On Fri, 09 Apr 2004 19:50:32 +0200, Laurent Hugé wrote:

Pardon, je me suis trompé, je voulais dire poster le contenu de
/var/log: ls -al /var/log
Non, non, je suis sûr de ma configuration.

Pour ceux qui en doutent encore :
...

OK, ça semble correct, sauf qu'il faut relancer syslog-ng après avoir
bougé /var/log/messges. J'ai:
postrotate
/etc/init.d/syslog-ng reload > /dev/null 2>&1 || true
endscript
Mais ça n'est pas là que tu a un problème...

Bon, alors maintenant, qu'est-ce que je fais ? Il y a bien une
évaluation de stat (je suppose) qui ne fonctionne pas comme prévu.
Effectivement.

D'après le strace, le nom du fichier est ''
ce qui est bien étrange.
Vérifie, avec hexedit, qu'il n'y a pas, par hasard, des caractères
non imprimables dans le fichier de conf.
Sinon, je ne vois pas...
Ou une information erronée dans /var/lib/logrotate/status ?
Essayes toujours de relancer le strace en affichant la totalité
des messages, et en ne gardant que les open/read/write/close
avec:
strace -v -e trace=open,close,read,write
Ce nom doit bien venir de quelque part !


Laurent Hugé
Le #1040523

Effectivement.
D'après le strace, le nom du fichier est ''
ce qui est bien étrange.
Alors j'ai tout fait pas à pas.

Vérifie, avec hexedit, qu'il n'y a pas, par hasard, des caractères
non imprimables dans le fichier de conf.
J'ai bien vérifié que rien de spécial n'apparaissait. Dans le doute,

j'ai même réécrit complètement le fichier logrotate.conf.
Aucun impact sur la sortie.
Sinon, je ne vois pas...
Ou une information erronée dans /var/lib/logrotate/status ?
$ cat /var/lib/logrotate.status

logrotate state -- version 1
Essayes toujours de relancer le strace en affichant la totalité
des messages, et en ne gardant que les open/read/write/close
avec:
strace -v -e trace=open,close,read,write
Je ne connaissait pas, c'est pratique !

En tous cas , voici la sortie :
open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
close(3) = 0
open("/usr/lib/libpopt.so.0", O_RDONLY) = 3
read(3, "177ELF11133120023"...,
1024) = 1024
close(3) = 0
open("/lib/libc.so.6", O_RDONLY) = 3
read(3, "177ELF111331340Y1"...,
1024) = 1024
close(3) = 0
open("/etc/popt", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/root/.popt", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/etc/logrotate.conf", O_RDONLY) = 3
read(3, "compressnnotifemptynn/var/log/me"..., 95) = 95
close(3) = 0
write(2, "reading config file /etc/logrota"..., 40) = 40
write(2, "reading config info for /var/log"..., 42) = 42
open("/var/lib/logrotate.status", O_RDONLY) = 3
read(3, "logrotate state -- version 1n", 4096) = 29
read(3, "", 4096) = 0
close(3) = 0
write(2, "Handling 1 logsn", 16) = 16
write(2, "rotating pattern: /var/log/messa"..., 36) = 36
write(2, "104857600 bytes ", 16) = 16
write(2, "(5 rotations)n", 14) = 14
write(2, "empty log files are not rotated ", 32) = 32
write(2, "old logs are removedn", 21) = 21
write(2, "errors displayed on stderrn", 27) = 27
open("/usr/share/zoneinfo/Europe/Paris", O_RDONLY) = 3
read(3, "TZifff"...,
4096) = 1082
close(3) = 0
write(2, "rotating file ", 20) = 20
write(2, "stat of failed: No such fi"..., 48) = 48
write(2, "log does not need rotatingn", 27) = 27
Ce nom doit bien venir de quelque part !
Oui, mais je ne vois rien de spécial, en dehors de la lecture de mon

fichier zoneinfo (si effectivement, les appels de popt sont normaux).
--
Laurent Hugé (pour m'écrire, ôter PasDeSpam de l'adresse de courriel)
GPG fingerprint = 3AFF A106 39D9 DB2C 885D 41C3 76DC 2C3F 01BE 5D4A

g.patel
Le #1528114
On Thu, 08 Apr 2004 22:15:35 +0200, Laurent =?ISO-8859-15?Q?Hugé?
Après quelques semaines passée à passer ma machine en
LinuxFromScratch, je suis dans la phase de finition de configuration.
Essayant d'installer logrotate
(...)

rotating file @
stat of @ failed: No such file or directory
log does not need rotating

- j'ai compilé logrotate 3.5.9, mais lors du make test, j'arrive à :


Quelques observations :

- la lecture des fichiers de journal à compacter se fait dans
le fichier config.c, routine readConfigFile; cette routine
d'environ 600 lignes de C avec des while, if, imbriqués a
gogo est un exemple de code susceptible de donner des
résultats semi-aléatoires lors de toute variation imprévue
des entrées. Il est envisageable qu'une erreur plus ou moins
énorme de configuration se répercute dans cette construction
d'une manière imprévisible.
- apparemment la lecture des fichiers de configuration
comporte des appels à des fonctions liées à la gestion des
utilisateurs, qui doit probablement fonctionner correctement
pour que cette routine marche.
- popt est utilisé pour lire les options de ligne de commande
- la lecture des fichiers de zones de temps est probablement
causée par l'appel de fonctions comme localtime, qui sont
apparemment utilisées pour déterminer si un fichier doit etre
compressé en fonction de sa durée de rétention, etc...
- la version de logrotate utilisée est assez antique. Peut-etre
une version récente serait capable de détecter et de reporter
une (éventuelle) erreur de configuration de manière plus
claire.

Gérard Patel

no_spam
Le #1528113
On Mon, 12 Apr 2004 20:19:04 +0200, Laurent Hugé wrote:

J'ai bien vérifié que rien de spécial n'apparaissait. Dans le doute,
j'ai même réécrit complètement le fichier logrotate.conf.
Aucun impact sur la sortie.
Sinon, je ne vois pas...
Ou une information erronée dans /var/lib/logrotate/status ?
$ cat /var/lib/logrotate.status

logrotate state -- version 1


J'ai la version 2...
J'ai essayé ton fichier de conf sur ma machine, ça marche nickel.
J'utilise logrotate 3.6.5 et j'ai vérifié qu'ils n'utilise pas
de librairie autre que la libc (2.3.2) et popt (0.0.0).
Donc, ça ne viens pas de ta config.
Tu peux essayer d'effacer /var/lib/logrotate.status
Sinon, d'installer une autre version de la libpopt (s'il y en a)
et un logrotate à jour.
Je ne vois rien de mieux...


Laurent Hugé
Le #1044321

J'ai la version 2...
J'ai essayé ton fichier de conf sur ma machine, ça marche nickel.
Oui. En fait, je l'ai simplement copié de mon autre PC, puis voyant

que cela ne marchait pas, j'ai supprimé toutes les entrées après la
première. Dans il n'y avait pas de raison que cela ne fonctionne pas
(sauf influence vaudou ;-)
J'utilise logrotate 3.6.5 et j'ai vérifié qu'ils n'utilise pas
de librairie autre que la libc (2.3.2) et popt (0.0.0).
Donc, ça ne viens pas de ta config.
Tu peux essayer d'effacer /var/lib/logrotate.status
Je l'avais déjà essayé, mais il est réécrit à l'identique à chaque

exécution de logrotate.
Sinon, d'installer une autre version de la libpopt (s'il y en a)
et un logrotate à jour.
En cherchant via Freshmeat, je n'ai trouvé que la libpopt-1.7 (que

j'avais déjà réinstallé), donc rien de neuf de ce côté.
Pour logrotate, je ne savait pas que la version 3.5.9 était antique
(au dire de gerard patel ;-). Effectivement, si ni Freshmeat ni
Sourceforge ne proposent de version de logrotate, une recherche sous
Google (en ajoutant 3.6 pour la version) m'a permis de trouver la
version 3.6.8 !
Je l'installe donc, mais son exécution me donne :
reading config file /etc/logrotate.conf
reading config info for /var/log/messages

Handling 1 logs

rotating pattern: /var/log/messages 104857600 bytes (5 rotations)
empty log files are not rotated, old logs are removed
considering log @
stat of @ failed: No such file or directory

avec une strace :
open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
close(3) = 0
open("/usr/lib/libpopt.so.0", O_RDONLY) = 3
read(3, "177ELF11133120023"...,
1024) = 1024
close(3) = 0
open("/lib/libc.so.6", O_RDONLY) = 3
read(3, "177ELF111331340Y1"...,
1024) = 1024
close(3) = 0
open("/etc/popt", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/root/.popt", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/etc/logrotate.conf", O_RDONLY|O_LARGEFILE) = 3
read(3, "compressnnotifemptynn/var/log/me"..., 95) = 95
close(3) = 0
write(2, "reading config file /etc/logrota"..., 40) = 40
write(2, "reading config info for /var/log"..., 43) = 43
open("/var/lib/logrotate.status", O_WRONLY|O_CREAT|O_TRUNC
O_LARGEFILE, 0666) = 3
write(3, "logrotate state -- version 2n", 29) = 29
close(3) = 0
write(2, "nHandling 1 logsn", 17) = 17
write(2, "nrotating pattern: /var/log/mess"..., 38) = 38
write(2, "104857600 bytes ", 16) = 16
write(2, "(5 rotations)n", 14) = 14
write(2, "empty log files are not rotated,"..., 33) = 33
write(2, "old logs are removedn", 21) = 21
open("/usr/share/zoneinfo/Europe/Paris", O_RDONLY) = 3
read(3, "TZifff"...,
4096) = 1082
close(3) = 0
write(2, "considering log \", 25) = 25
write(2, "stat of \1@ failed: No such"..., 51) = 51

et un /var/lib/logrotate.status :
logrotate state -- version 2
Je ne vois rien de mieux...
Aïe :-((

--
Laurent Hugé (pour m'écrire, ôter PasDeSpam de l'adresse de courriel)
GPG fingerprint = 3AFF A106 39D9 DB2C 885D 41C3 76DC 2C3F 01BE 5D4A

Laurent Hugé
Le #1041706

Quelques observations :

- la lecture des fichiers de journal à compacter se fait dans
le fichier config.c, routine readConfigFile; cette routine
d'environ 600 lignes de C avec des while, if, imbriqués a
gogo est un exemple de code susceptible de donner des
résultats semi-aléatoires lors de toute variation imprévue
des entrées. Il est envisageable qu'une erreur plus ou moins
énorme de configuration se répercute dans cette construction
d'une manière imprévisible.
- apparemment la lecture des fichiers de configuration
comporte des appels à des fonctions liées à la gestion des
utilisateurs, qui doit probablement fonctionner correctement
pour que cette routine marche.
- popt est utilisé pour lire les options de ligne de commande
- la lecture des fichiers de zones de temps est probablement
causée par l'appel de fonctions comme localtime, qui sont
apparemment utilisées pour déterminer si un fichier doit etre
compressé en fonction de sa durée de rétention, etc...
- la version de logrotate utilisée est assez antique. Peut-etre
une version récente serait capable de détecter et de reporter
une (éventuelle) erreur de configuration de manière plus
claire.
Bien. Comme je l'ai détaillé dans l'autre fil, je n'ai pas progressé

malgré un passage à logrotate 3.6.8 !
Quel autre voie peut-il y avoir ?
--
Laurent Hugé (pour m'écrire, ôter PasDeSpam de l'adresse de courriel)
GPG fingerprint = 3AFF A106 39D9 DB2C 885D 41C3 76DC 2C3F 01BE 5D4A

Publicité
Poster une réponse
Anonyme