Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


[Résolu] Json log unrealircd et eggdrop
#16
Il y a encore quelques améliorations à faire dans le code ( en ce moment je n'ai pas beaucoup de temps pour faire du tcl ).


tcl
proc ::checkpays::log:gestion {level channel message} {
 
#set fo [open json.log a]
#puts $fo "** $message\n"
set text [string map {\]\\\s\[ %_# \\\s\[ _# \]\\\s %_ \\: ;} $message]
set text [string map {\\\s _ \"\[ \"# \]\" %\"} $text]
set text [string range $text [string first "json-log" $message]+9 end]
set text [string range $text 0 [string first ";msgid" $text]-1]
#putlog "*** To file"
#puts $fo "--> $text"
#close $fo
#putlog "JSON 1.1: $text"
 
set datas [::json::json2dict $text]
set nick [dict get $datas client name]
set username [dict get $datas client user username]
set ip [dict get $datas client hostname]
set ipdns [dict get $datas client ip]
set vhost [dict get $datas client user vhost]
set codepays [dict get $datas client geoip country_code]
set reputation [dict get $datas client user reputation]
set realname [string map {_ " " # \\\[ % \\\]} [dict get $datas client user realname]]
 
}


Il y a encore quelques petits ajustement à faire dans le realname, dans la variable :


tcl
set text [string map {\]\\\s\[ %_# \\\s\[ _# \]\\\s %_ \\: ;} $message]


Il faut faire une modification pour que les " dans le realname soit pris en compte parce qu'il me retourne une erreur :


tcl
Tcl error [::checkpays::log:gestion]: unexpected token "","" at position 75; expecting ","|"}"


Et je dois aussi faire une modification sur :


tcl
set realname [string map {_ " " # \\\[ % \\\]} [dict get $datas client user realname]]


pour qu'il me retransforme les \[ en # parce que si par exemple je met un # dans mon realname il m'affichera \[

Il y a aussi un problème avec l'unicode , pourtant dans le json le smiley/emoji est bien affiché, j'avais cru voir quelques part que eggdrop avait du mal avec l'unicode.

Exemple: https://pastebin.com/cw20yEW2

Il doit y avoir d'autres trucs encore à vérifier, j'aurai plus de temps bientôt.
  Reply
#17
En fait le json est très bon, et ce n'est pas la peine de faire toutes ces manipulations, une seule suffit:

tcl
proc logtest {level channel message} {
   set text [string map {\\\\" \\" \\\s " " \\ \\\\} $message]
   set text [string range $text [string first "json-log" $message]+9 [string first ";msgid" $text]-1]
   set datas [::json::json2dict $text]
   set user [dict get $datas client user]
   foreach key [dict keys $user] {
      putlog "$key is [dict get $user $key]"
   }
}



Code:
[14:44] username is zeolien577
[14:44] realname is zeolien577\s-\sInterface\sweb
[14:44] vhost is zeolia-8EA0FD6C.subs.proxad.net
[14:44] cloakedhost is zeolia-8EA0FD6C.subs.proxad.net
[14:44] servername is bds.zeolia.chat
[14:44] reputation is 4620
[14:44] security-groups is known-users websocket-users tls-and-known-users tls-users
[14:44] modes is ixz
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
  Reply
#18
C'est nickel, maintenant il gère très bien le # et " dans le realname , merci beaucoup !
  Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  [Demande] API JSON compteur utilisateurs bodtx 11 3,890 30/05/2019, 19:14
Last Post: bodtx
  [Résolu] Commande /plainte pseudo raison gérer par un eggdrop avec un alias Unrealircd Alucard`68 3 4,128 01/02/2017, 03:39
Last Post: Alucard`68

Forum Jump:


Users browsing this thread: 1 Guest(s)