Erreur protocole FTP
malik7-Jul-2008/9:19:12+2:00
Bonjour
J'obtiens un message d'erreur quand je tente d'accéder à un serveur en FTP:

>> read server
connecting to: rmc
** Script Error: Invalid argument: 02/2008/0:00
** Where: to-date
** Near: to date! :value

On dirait que le script (protocole FTP) récupère un mauvais format de date.

J'utilise REBOL/Core 2.7.6.3.1 14-Mar-2008 (rebol.exe).
La variable server est de la forme:
server: ftp://user1:pwd1@rmc:21

Merci pour votre aide.
Malik
Philippe7-Jul-2008/10:06:07+2:00
Bonjour,

L'implémentation du protocole ftp est parfois pleine de surprises, et je ne suis pas sûr que Rebol a couvert tous les cas rencontrés dans ce domaine, même si le scheme a été revu plusieurs fois.
En l'occurrence, je ne suis pas sûr que la RFC 959 explicite le format de date renvoyé par le serveur ftp pour les attributs de fichiers.
Tu peux peut-être passer en mode trace :
trace/net: on (et off après ton read ftp) pour avoir un peu plus de détails.


===Philippe
malik7-Jul-2008/15:59:20+2:00
Voici le log:

>> read server
URL Parse: edirmc edirmc rmc 21 none none
Net-log: ["Opening" "tcp" "for" "FTP"]
connecting to: rmc
Net-log: [none ["220" "230"]]
Net-log: {220 snfde serveur FTP (Version 4.1 Tue May 15 16:38:46 CDT 2001) prêt.}
Net-log: [["USER" port/user] "331"]
Net-log: "331 Mot de passe requis pour edirmc."
Net-log: [["PASS" port/pass] "230"]
Net-log: "230 Utilisateur edirmc connecté."
Net-log: ["SYST" "*"]
Net-log: "215 Type UNIX : L8 Version : BSD-44"
Net-log: ["PWD" "25"]
Net-log: {257 Le répertoire en cours est "/home/edirmc".}
Net-log: "Opening listen port 1194"
Net-log: [["PORT" port/locals/active-check] "200"]
Net-log: "200 Exécution de la commande PORT terminée."
Net-log: "Type: dir"
Net-log: ["TYPE A" "200"]
Net-log: "200 Type défini à A ; format défini à N."
Net-log: ["LIST" ["150" "125"]]
Net-log: {150 Etablissement de la connexion de données pour /bin/ls.}
Net-log: "Closing listen port 1194"
Net-log: "Closing data port 192.168.2.1 1194 20"
Net-log: [none ["226" "250"]]
Net-log: "226 Transfert terminé."
Net-log: "Closing cmd port 1191 21"
** Script Error: Invalid argument: 07/2008/0:00
** Where: to-date
** Near: to date! :value
>>

Je viens d'apprendre qu'il s'agit d'un serveur AIX.
Merci
Malik
malik8-Jul-2008/9:52:20+2:00
Bonjour
Les traces ne nous apprennent pas grand chose je pense, à part que le système sur le serveur est UNIX.
Rebol aurait donc un problème avec le protocole ftp et UNIX.
Qu'est-ce-que je peux faire ?

Merci
Malik
Didec8-Jul-2008/10:31:49+2:00
Des petites recherches dans la mailing-list (rappel : dispo sur rebol.org !!) montre que tu n'est pas le seul à avoir eu le pb :

http://www.rebol.org/cgi-bin/cgiwrap/rebol/ml-display-thread.r?m=rmlDKSK

http://www.rebol.org/cgi-bin/cgiwrap/rebol/ml-display-thread.r?m=rmlMJXS (un peu long !)

En résumé, le serveur FTP ne renvoi pas une date dans un format que Rebol reconnait.

La question est : peux-tu corriger la config du serveur FTP pour qu'il utilise un format plus standard ?

Si c'est non, alors il faut patcher le protocol FTP de Rebol pour ne pas se planter sur la conversion de la date, mais je ne sais pas quelles peuvent être les implications de cette modif.
malik8-Jul-2008/15:02:32+2:00
Merci !
Je me suis inspiré de ce que j'y ai lu pour créer un "patch" du protocole ftp à partir du script prot-ftp.r, que j'ai appelé prot-ftp-unix.r, dans lequel j'ai mis en commentaire les lignes qui font appel à la fonction add-date (car c'est dans la déclaration de cette fonction que l'on trouve le seul mot "to-date" qui pose problème).
Ensuite j'ai chargé ce patch en faisant: do %prot-ftp-unix.r
Résultat: je peux copier un fichier de mon poste sur le serveur.
Par contre gros problème: je ne peux ni supprimer ni renommer un fichier qui est sur le serveur et ce n'est pas du à un problème de droit
Tout se passe comme si le fichier n'existait pas:

>> delete server/test07.txt
connecting to: rmc
** Access Error: Cannot delete ftp://edirmc:edirmc@rmc:21/test07.txt
** Near: delete server/test07.txt
>> exists? server/test07.txt
connecting to: rmc
== false
>>

La commande list-dir donne:
>> list-dir server
connecting to: rmc
avr 09:17 anomdelins.brut.sav avr 09:17 anomkanban.brut.sav
avr 09:17 delinssrf.brut.sav avr 09:17 kanbansrf.brut.sav
avr 09:23 CUMDS.3A avr 09:23 CUMKS.2A
jan 08:34 lpdest.edirmc jan 2003 .profile
jul 08:15 anomdelins.brut jul 08:15 anomkanban.brut
jul 08:15 CUMKANO jul 08:15 delinssrf.brut
jul 08:15 kanbansrf.brut jul 08:16 CUMDANO
jul 12:16 test07.txt jul 12:37 fc2int.seq
jul 13:36 AVIEXP.OK1 jul 14:24 test08.txt
jul 17:41 AVIEXP.OK3 jul 18:50 AVIEXP.OK2
jul 2005 .sh_history jul 2007 mbox
jul 21:08 journal.rmc

Mais quand je fais "read server" pour avoir la liste des répertoires et fichiers présents j'obtiens:
[%jul%2008:15%20anomdelins.brut %avr%2009:17%20anomdelins.brut.sav %jul%2008:15%20anomkanban.bru
t %avr%2009:17%20anomkanban.brut.sav %jul%2013:36%20AVIEXP.OK1 %jul%2018:50%20AVIEXP.OK2 %jul%20
17:41%20AVIEXP.OK3 %jul%2008:16%20CUMDANO %avr%2009:23%20CUMDS.3A %jul%2008:15%20CUMKANO %avr%20
09:23%20CUMKS.2A %jul%2008:15%20delinssrf.brut %avr%2009:17%20delinssrf.brut.sav %jul%2012:37%20
fc2int.seq %jul%2021:08%20journal.rmc %jul%2008:15%20kanbansrf.brut %avr%2009:17%20kanbansrf.bru
t.sav %jan%2008:34%20lpdest.edirmc %jul%202007%20%20mbox %jan%202003%20%20.profile %jul%202005%2
0%20.sh_history %jul%2012:16%20test07.txt]

Là je suis vraiment inquiêt sur les possibilités du protocole ftp de Rebol avec Unix...
Je ne sais plus quoi faire.
Philippe8-Jul-2008/16:12:06+2:00
Salut,

Le diagnostic sur add-date est viable, c'est bien ton serveur qui ne te renvoie pas le bon format de date (du au parsing ko au préalable).
Par contre, on ne peut pas tout mettre sur le dos de Rebol.
Ne pourrais-tu pas demander à ce que ce serveur ai un format de date standard (genre Tue Jul 8 16:02:50 CEST 2008
) ? je pense que toutes les actions nécessitant un parsing du listing de répertoire seront ko ou les champs mal attribués (genre le pointeur file sur un chiffre au lieu d'un nom de fichier).

===Philippe
malik8-Jul-2008/17:13:53+2:00
Ok, je vais demander si on peut faire ça.
Merci.

Login required to Post.


Powered by RebelBB and REBOL 2.7.8.4.2