Probleme avec /ftp_send

Résolu
cs_megatchu Messages postés 9 Date d'inscription jeudi 26 octobre 2006 Statut Membre Dernière intervention 28 février 2009 - 1 janv. 2009 à 15:59
cs_megatchu Messages postés 9 Date d'inscription jeudi 26 octobre 2006 Statut Membre Dernière intervention 28 février 2009 - 4 janv. 2009 à 14:58
Bonjours, ayant voulu créer un système de logs automatique que mes utilisateurs pourraient voir directement sur le net, après beaucoup de recherche, je suis tomber sur une source plus qu' intéressante, celle de kenji, j'ai eu quelques petits problèmes d'hébergement sur free ( mais free on le sait bien, c'est gratuit, et tout ce qui ets gratuit, y'a mieux ;o ) et donc je me suis tourné sur un hebergement proffessionnel, le fichier à effectivement été envoyé mais... pas entièrement.

J'ai localisé le problème qui viendrait de la ligne :
<li>var %pos $ftpdata_get(%sock,pos) , %file $ftpdata_get(%sock,file)
</li><li> bread %file %pos 8192 &data
</li>Cependant, je ne sais pas vraiment d'ou viens le problème, j'ai modifier les valeurs de %pos et 8192 manuellement, et je peut plus ou moins avoir le fichier en entier, mais étant donné qu'il change dès qu'un utilisateur parle, arrive, part ou quit, je ne peut pas vraiment m'amuser à remodifier ces lignes à chaques actions...

J'espère donc trouver une réponse dans ce site de qualité, je suis ouvert à toute proposition d'explication plus approndonfis ;)

7 réponses

uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
2 janv. 2009 à 17:27
logs $+ .html ne sert strictement à rien, logs.html suffit.
Et si tu changes le 8192 en $calc($file(%file).size - %pos) ça donne quoi ?

Cordialement, uaip.
3
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
2 janv. 2009 à 18:47
En réflechissant, le 8192, c'est en gros pour découper un fichier en parties de 8192 octets chacune, pour justement éviter de déborder (je viens d'aller voir le code d'origine).
Or le code que je t'ai donné ne fait pas ça.
Essaye ceci :
; tant que la totalité du fichier n'a pas été envoyée..
  if (%pos < $file(%file).size) {
    bread %file %pos $iif($calc($file(%file).size - %pos) < 8182,$v1,$v2) &data
    sockwrite $sockname &data
    ftpdata_add %sock pos $calc(%pos + $bvar(&data,0))
  }
J'y crois pas trop, mais bon, autant essayer.

Cordialement, uaip.
3
Zova Messages postés 150 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 24 août 2010 2
1 janv. 2009 à 17:11
Pour moi ton problème se situe dans ces lignes là :

  ; tant que la totalité du fichier n'a pas été envoyée..
  [javascript:mhlp('ifthenelse#c_if'); if](%pos<[javascript:mhlp('fileident#i_file'); $file](%file).size){
     [javascript:mhlp('binaryfile#c_bread'); bread]%file%pos8192 &amp;data
     [javascript:mhlp('socket#c_sockwrite'); sockwrite][javascript:mhlp('socket#i_sockname'); $sockname] &amp;data
     ftpdata_add%sock pos [javascript:mhlp('textident#i_calc'); $calc](%pos + [javascript:mhlp('binaryfile#i_bvar'); $bvar](&amp;data,0))
  }


mais je n'ai pas exactement tout compris à ce que tu essaye de faire, et je n'ai jamais testé ce snippet donc voilà une petite orientation qui je l'espère pourra t'aider ;)
.:]| z0va / Zova |[:.
0
cs_megatchu Messages postés 9 Date d'inscription jeudi 26 octobre 2006 Statut Membre Dernière intervention 28 février 2009
1 janv. 2009 à 17:42
Bin en fait, je voudrais faire un système de log dans le style de BotTool qui est payant, donc je voulais le faire a ma sauce histoire de l'avoir gratuitement.

Et pour m'éviter d'uploader constamment a la main le fichier des logs, j'ai fait un script rapide dans le genre :

on *:text:*:#: {
  if ($date != %date) {
    set %date $date
    write html/logs $+ .html   Logs du $date

  }
  write html/logs $+ .html   ( $time ) $nick : $strip($1-)

  ftp_send
}

sauf que ftp_send envois bien le fichier, mais il manque un bout du log, et donc je pensais que le problème venais de là, je vais voir ta suggestion merci ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zova Messages postés 150 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 24 août 2010 2
1 janv. 2009 à 17:54
hum ta solution est bien moyenne car si quelqu'un flood^^


tu devrai opter pour un timer toutes les n minutes qui inscris dans le fichier html les phrases manquantes, ça rallongerait le code mais je pense que ça serait une solution bien meilleure :)

.:]| z0va / Zova |[:.
0
cs_megatchu Messages postés 9 Date d'inscription jeudi 26 octobre 2006 Statut Membre Dernière intervention 28 février 2009
2 janv. 2009 à 18:09
Ah effectivement je ne sais pas si c'est ton intervention uaip ( ça a commencer a se resoudre tout seul dans la matiné ) mais ça marche ! xD
Merci ;)

Et j'ai un autre probleme ( oui, moi et les socket ça fait la racine de 2 :/ )

Puisque la version .html marche, je souhaite donc en faire une version en .txt afin de l'exploiter plus facilement sur une administration, seulement, quand je l'upload j'ai :

/sockwrite: 't_ftpsend_72752718' queue would exceed 16384 bytes (line 88, senlogstxt)

Ca correspond au "paragraphe" :

; tant que la totalité du fichier n'a pas été envoyée..
  if (%pos < $file(%file).size) {
    bread %file %pos 8182 &data
    sockwrite $sockname &data
    ftpdata_add %sock pos $calc(%pos + $bvar(&data,0))
  }

J'ai déja tenté de remplacer 8182 par $calc($file(%file).size - %pos), et ça marche un peu mieux, mais le probleme reste persistant : au lieu d'avoir 10 fois le message je ne l'ai plus qu'une seule fois, mais le fichier ne s'upload pas.
(je pense a une incompatibilité avec l'autre ftp_send, en sachant que j'ai renommé l'alias du deuxieme en ftp_sendd afin de m'y retrouver )

Voilà merci ;)
0
cs_megatchu Messages postés 9 Date d'inscription jeudi 26 octobre 2006 Statut Membre Dernière intervention 28 février 2009
4 janv. 2009 à 14:58
Merci ça amrche super bien ;)
Merci aussi Zova ;o
0
Rejoignez-nous