diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 7a2fece..1594708 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -26,6 +26,6 @@ find /tmp ! -user daemon -exec chown daemon:daemon {} \; & # lancement des daemons -su-exec daemon:daemon /app/public/irc3_wrapper.sh start +su-exec daemon:daemon /app/public/irc3_wrapper.sh ws npm run watcher & exec su-exec daemon:daemon npm start diff --git a/public/IRC3sp.pl b/public/IRC3sp.pl index 8b9710e..9b1b417 100755 --- a/public/IRC3sp.pl +++ b/public/IRC3sp.pl @@ -21,11 +21,11 @@ " $programme -t table -r répertoire [ -e extension ]* [ -s fichier_sortie ] [ -l log ] [ -cq ]\n" . " $programme -t table -f (fichier_entrée|-) [ -s fichier_sortie ] [ -l log ] [ -cq ]\n" . " $programme -t table -j [ -f fichier_entrée ] [ -s fichier_sortie ] [ -l log ] [ -cq ]\n" . - " $programme -t table -p FIFO [ -l log ] [ -c ]\n" . + " $programme -t table -p FIFO [ -l log ] [ -cw ]\n" . " $programme -h\n\n"; -my $version = "4.3.2"; -my $dateModif = "17 Août 2022"; +my $version = "4.4.1"; +my $dateModif = "29 Août 2022"; my @table = (); my %genre = (); @@ -45,7 +45,7 @@ my $repertoire = undef; my $sortie = undef; my $table = undef; -my $top = undef; +my $ws = undef; my @extensions = (); my $recherche = 0; # Getopt::Long::Configure("no_ignore_case"); @@ -65,6 +65,7 @@ "repertoire=s" => \$repertoire, "sortie=s" => \$sortie, "table=s" => \$table, + "webservice" => \$ws, ); }; $SIG{__WARN__} = sub {warn $_[0];}; @@ -95,6 +96,8 @@ print " -s indique le nom du fichier où sera écrit le résultat du traitement \n"; print " -t indique le nom du fichier contenant la ressource, c'est-à-dire la liste \n"; print " des termes à rechercher \n\n"; + print " -w indique que le programme est utilisé par un “webservice” qui modifie le fichier \n"; + print " envoyé en ne gardant que les objets JSON \n\n"; print "Ressource : \n"; print " Le fichier de ressource contient un terme par ligne. On peut indiquer pour \n"; print " un terme sa forme préférentielle en ajoutant après le terme une ou plusieurs \n"; @@ -266,7 +269,8 @@ $json = undef; $sortie = undef; my $retour = undef; - + my @json = (); + while( 1 ) { open(INP, "<:raw", $fifo) or die "$!,"; # binmode(INP, ":raw"); @@ -277,13 +281,22 @@ } elsif ( /^%% FIN JOB/o ) { $sortie = undef; + if ( $ws ) { + $json = '[' . join(",", @json) . ']'; + @json = (); + } ($json, $retour) = passe1($json); print OUT $json; close OUT; $json = undef; } elsif ( $sortie ) { - $json .= $_; + if ( $ws ) { + push(@json, $_); + } + else { + $json .= $_; + } } elsif ( /^%% STOP IRC3/o ) { unlink $fifo; diff --git a/public/irc3_wrapper.sh b/public/irc3_wrapper.sh index 5655caa..188bc49 100755 --- a/public/irc3_wrapper.sh +++ b/public/irc3_wrapper.sh @@ -8,7 +8,7 @@ function usage { -echo "Usage : $programme (start|job|stop) " +echo "Usage : $programme (start|ws|job|stop) " echo " $programme help " } @@ -18,7 +18,7 @@ Usage ===== - $programme (start|job|stop) + $programme (start|ws|job|stop) $programme help Options @@ -27,6 +27,7 @@ job envoie les données au programme “IRC3sp.pl” start lance le programme “IRC3sp.pl” en mode “nohup” stop arrête le programme “IRC3sp.pl” + ws lance le programme “IRC3sp.pl” en mode “nohup” et “webservice” EOT @@ -35,7 +36,12 @@ function lance_irc3 { -nohup /app/public/IRC3sp.pl -t /app/public/CoL.txt -p /tmp/fifo_irc3 -c & #> /dev/null & +nohup IRC3sp.pl -t CoL.txt -p /tmp/fifo_irc3 -c & +} + +function lance_irc3_ws +{ +nohup /app/public/IRC3sp.pl -t CoL.txt -p /tmp/fifo_irc3 -c -w > /tmp/logIrc3.txt 2>&1 & } function arrete_irc3 @@ -52,23 +58,19 @@ then mkfifo -m 0666 /tmp/fifo_job_$$ - data=$(cat) - { - echo "DEBUT<<<<<<<<<<<<<<<<<<"; - echo "$data"; - echo "FIN >>>>>>>>>>>>>>>>>>>"; - } >> /tmp/debug_input_$$ # debug + data=$(cat /dev/stdin) (echo "%% JOB POUR FIFO /tmp/fifo_job_$$"; echo "$data"; echo "%% FIN JOB") > /tmp/fifo_irc3 cat /tmp/fifo_job_$$ - rm -f /tmp/fifo_job_$$ + rm -f /tmp/fifo_job_$$fi fi } -trap 'if [[ -f /tmp/fifo_job_$$ ]]; then echo ok; fi' HUP INT TERM EXIT +trap 'if [[ -p /tmp/fifo_job_$$ ]]; then rm /tmp/fifo_job_$$; fi' HUP INT TERM EXIT + # Options if [[ -z $1 ]] then @@ -82,6 +84,9 @@ elif [[ $1 = "start" ]] then lance_irc3 + elif [[ $1 = "ws" ]] + then + lance_irc3_ws elif [[ $1 = "stop" ]] then arrete_irc3