Les fichiers sources
Site dynamique original : Reload page

( Reponse du 20/04/2024 11:21:51 UTC, par serveur :
    SERVER NAME : "www.trousperdu.org"
    SERVER_PORT : "80"
 Suite a la requete :
    HTTP_HOST : "www.trousperdu.org"
    REQUEST_URI : "/cgi-bin/viewsource.bin?/root/Web-Server/uconf/microconftrousperdu.sh"
 Adresse du demandeur : "18.222.125.171" ) :


LE SOURCE DU FICHIER "/mnt/hda1/root/Web-Server/uconf/microconftrousperdu.sh"
 ( du 15/12/2023 12:35:58 UTC ) :
-rwxr-xr-x 1 knoppix knoppix 15516 Dec 15 13:35 /mnt/hda1/root/Web-Server/uconf/microconftrousperdu.sh
#! /bin/bash
#NC imcp.ba@free.fr  IMCP Blandy Alain


#VERSION CLIENT microconftrousperdu.sh DU 1698394699  # 27/10/2023 08:18:19 UTC
#
#  CE PROGRAMME  microconftrousperdu.sh
# EST DESTINE A CHATER EN MODE TEXTE ET ENSUITE  
# A PRENDRE LA PAROLE EN AUDIO DANS LA CONFERENCE COURANTE
#   EN DIRECT OU EN PLAY BACK
#     IL Y A UN TIMEOUT INTERNE A INTERVENTION DANS LE SERVEUR
#      IL EST  EVENTUELLEMENT SOUS CONTROLE CHAT DE L OPERATEUR DISTANT
#   PEUT ENVOYER UNE PHOTO ( trombinoscope ) DOCUMENT GRAPHIQUE (explicatif)
#   QUI SERA DIFFUSE DANS HTML QUAND IL SEAR ACTIF AU MICRO
#
#
#  CE PROGRAMME CLIENT ETABLIS UNE LIAISON AVEC UN DES SERVEURS servmicroconf.sh

# PROGRAMME CLIENT POUR CHATER EN MODE TEXTE SOUS LINUX
#    ET ENSUITE TRANSMETTRE UN SON AUDIO
#     si un seul serveur est lance)
#      les differents clients sont servis a tour de role !!!....
#      le retour texte du serveur est toujours valide 
#     si plusieurs serveurs alors un seul client en audio !!!
#      les autres reste en mode chat texte uniquement ou photo

#  La presence d'un operateur sur les serveur n'est pas indispensable !! ??
# auquel ca les utilisateurs se debrouillent entre eux pour parler a tour de role ....
# en surveillant les messages html du status de la conference

#   =======================================

# suppose que l'on a charge
#      - le module netcat : nc
#            verifier  avec la commande : nc -h
#              si c'est pas le cas loader le module netcat
#                pour debian et suite
#                 su
#                    apt-get update
#                    apt-get install netcat 
#                      ...........
#            verifier  avec la commande : nc -h


# meme procedure pour sox ...........
#            verifier sox -h
#
#            tester ensuite
#            le petit programme  suivant
#              "  rec -t wav - | play -t wav - "
#               qui envois le son du micro sur le HP  ...
#                  avec un  bon volume sonore sans saturer !!!
#                   ( dans ce script un barregraphe est disponible )....
#
#            regler le mixeur son linux pour faire marcher tous ca
#
#

OSSL='openssl'; # usualy in /usr/bin see $PATH


#   =======================================
#   =======================================
#           MISE EN OEUVRE PAR COPIER COLLER
#
# FAIRE UN CD Dans un directory approprie
#  ex  : mkdir conference
#           cd conference
#
# OUVRIR OU CREER AVEC UN EDITEUR ./microconftrousperdu.sh
#   et vider la page ( tout selectionner ; supprimer  )
#
# AVEC VOTRE SEURFEUR DANS L ENCADRE DE COULEUR
# COPIER (CTL+C) tous ce fichier source 
#
# REVENIR dans l'editeur
#  FAIRE UN COLLER le (CTL+V) (ou boutton central sourie)
#    ET  SAUVEGARDER dans ./microconftrousperdu.sh 
#
# EN LIGNE DE COMMANDE :
#  RENDRE EXECUTABLE le fichier :
#    chmod +x ./microconftrousperdu.sh (0755)
#  LANCER  le client  ./microconfttrousperdu.sh
#     dans des fenetres xterm ou console ALT+F1 .... separees !
# ....

#   =======================================
#   =======================================

# parametres

serveur='www.trousperdu.org';  #serveur a contacter par defaut

portmicro='5002';  #port a contacter par defaut ; ,serveur servmicroconf.sh

ident='?'; #identitee du demandeur par defaut : inconnue


# les parametres d'appel sont identifies par leur possition
# un parameter indefinis ( par defaut) est represente par le caractere '!'

if test "$1" != '' && test "$1" != '!'  ; then #parametre 1 si different de !
  serveur="$1"; # c'est le nom explicite du serveur
fi;

if test "$2" != ''&& test "$2" != '!' ; then #parametre 2 si different de !
  portmicro="$2"; # c'est le port explicite du serveur
fi;

if test "$3" != ''&& test "$3" != '!' ; then #parametre 3 si different de !
   ident="$3 $4 $5 $6 $7 $8 $9"; # identite explicite
else
   ident="`hostname -s`"; #identitee du demandeur par defaut sur hostname
   if test "$?" != '0'; then  #meme hostname ne marche pas !!!
     ident='no_name'; #identitee du demandeur par defaut inconnue ???
   fi;
fi;

# cette identite est transmise automatiquement au serveur


defaultfilepres='user_pres.wav'; #### FILE client    # nom fichier par defaut son de presentation du conferentie 
                                                       # tres cours "ici non prenom avec un silence" ( moins de 10 s)
                                                       # diffuse au prealable a toutes prise du micro
defaultfilephoto='user_photo.jpg'; #### FILE client  # nom fichier par defaut dans le directory de travail   250 * 175 
                                                       # sert de trombinoscope ou de dovument illustratio

# identite est transmisse au serveur qui l'affiche
#  le premier mot de identite,suivis du suffix jpg
#   selectionne dans le serveur apache l image (200*150 /conference/IDENT.jpg)
#    a transmettre du locuteur
#     si les horloges sont syncro 
#       la photo n'est transmise qu'une seule fois  200
#         ensuite on utlise le code appache  304 update
#          ca n'a pratiquement pas d effet sur le debit !!!!
#           pour instant on utilise une balise VIDEO sans image pour transmettre le son
#            on verra plus tard pour une image a faible debit !!!


#   ========================================

echo " $0 $* 
  PROGRAMME CLIENT POUR 
    CHATER EN MODE TEXTE
       avec le seveur $serveur TCP port $portmicro
                    (sous identitee $ident )

       ET ENSUITE seulement envoyer le SON local, une PHOTO  ... 

       ( usage : $0 $serveur $portmicro $ident
                            '!' : parametre par defaut ) 

       Appel simplifie 
           $0  ! ! votre_prenom_non patati patata

       Vos fichiers speciaux personnels :

         $defaultfilepres 
          # fichier son de presentation du conferentie 
          # tres cours ' ici non prenom ' avec un silence d'une segonde
          # a envoyer au serveur par la commande PRES (sans argument fichier)
             # utilise par le serveur au debut de votre intervention SON

         $defaultfilephoto
          # format  250 * 175  de preference
          # a envoyer par la commande PHOTO (sans argument fichier)
             # utilise par le serveur en HTML pendant votre intervention SON

";

echo -n "  tapper return "
read a;
echo;

# par convention les appel simple sous unix exec
# $0 represente le path appel du script
# et permet ici auto referencement du fichier script source
grep '#VERSION' $0 | grep -v grep;
echo;

# ---------------------------------------------------------
#pour limiter le debit sans perdre en qualitee  !!!!!
 modemicro=' -c 1 -r 11025 ' ;       #      decallage 1s     (172 kb/s ) (21.5 Ko/s)

 #modemicro=' -c 1 -r 6000 ';

# ne pas modifier ce parametre !!!!
# ( tel quel il permettrais th. d'avoir 5 ecouteurs par mega upload )

#   il est imoprtant que tous les locuteur est le meme modemicro
# sinon la mise bout a bout des inteventions dans le REPLAY final
# de esemble de la conference
# prends trop de temps  ou est impossible !!!!!!
# ---------------------------------------------------------

while test '1' == '1'; do # pour relancer la connection au serveur

 tty -s; # attache a une tty
 if test "$?" != '0' ; then
     break; #pour tuer tache plus ou pas  attache a xterm
 fi;  #sinon elle encombre et bloque etant ratachees a init pid 1

   (
     #cette commande est envoye de maniere transparente au serveur !!!!
     echo  " ident `date -u +%s` ' $ident ' - HELO $serveur  ($portmicro) "; #envois vers le serveur
     #permetra  aussi au serveur de verifier aussi que cette horloge est ok

     echo -e "
 Demande de cession envoye .... ?  ($ident)

  Chat en mode texte suivis de envois audio 

           Tapper votre texte ci-apres ....

              pour arreter CTL+C  (pour liberer le serveur)..

           Attention envois d'une ligne vide permet de passer
           en mode en diffusion micro direct conference
           SON

           SON nomdefichier : diffuse le play back en conference
                              et garde la main ...

             toutes autres 'ligne de commande' sera interprete
                PHOTO (fichier jpg) envois d'une image au serveur
                PRES (fichier wav) envois d'un jingeul de presentation

             ou sera expediee tel quel en chat au serveur
              qui peut vous repondre par chat texte " 1>&2; #en immediat sur stderr


     while  echo -n '> ' 1>&2; read ; do #lire les lignes recus sur stdin

       # traitements segondaire de la ligne recuee
       minus="`echo $REPLY | tr [A-Z] [a-z]`";  #transformer en  minuscule
                                         # en supprimant les blancs initiaux et finaux

       vus=''; #aucune commande connue detecte
       # partie transmission son : en live ou en playback
       if test "${minus/son}" != "$minus" || test "$minus" = ''; then  #SON ou alias ligne vide
          #transmission d'un son
          vus='SON'; # type de commande detecte

          fileson="`echo $REPLY | (read a b c ;echo $b;)`";  #extraire deuxieme argument
          if test "$fileson" == ''; then  #si pas argument alors prise du micro en direct (/dev/dsp ?)

              # micro
              echo "$vus"; #commande distale de commutation audio ( retour texte toujours possibe) !!!

              echo "Demarrage transmission  micro ... ; CTL+C pour terminer enregistrement ! " 1>&2; #en immediat sur stderr
              rec $modemicro -t wav - ;  #avec barre graph visible;
              echo "  Fin Transmission son micro : ( pas ou plus disponnible ) !" 1>&2; #en immediat sur stderr

              #echo "Quit";
              break ;#ici on a fini on doit tuer nc

          else  # argument fichier son a transmettre
                # (play back enregistre par recorder.sh)

             if test -f $fileson ; then # tester acces au fichier

                echo "$vus"; #commande distale de commutatio audio ( retour texte toujours possibe) !!!

                echo "Demarrage transmission fichier $fileson ..." 1>&2; #en immediat sur stderr
                sox -t wav $fileson $modemicro -t wav - ; #fileson est cense entre enrgistre au bon format avec recorder.sh
                echo "  Fin de la Transmission du fichier son $fileson !" 1>&2; #en immediat sur stderr

                echo "  Attendez un peut  .... Tapper CTL+C " 1>&2; #en immediat sur stderr
                #dure de attente correspendant a duree audio 

                #echo "Quit";
                break ;#ici on a fini la transmission on doit tuer nc  KOKKKKKKKKKKKKKKKKKKKKK  ????

             else

                echo "Pas de fichier $fileson ! " 1>&2; #en immediat sur stderr
                echo "  ( PWD  ` /bin/pwd ` ) " 1>&2; #en immediat sur stderr
                echo "  Recessir votre ligne de commande : $vus fichier.wav  ? " 1>&2; #en immediat sur stderr
                # deuxieme chance

             fi;

          fi;

          #revenier en attente de lecture ligne commande deuxieme chance

      fi;

      # TBDF  autres traitement ligne de commande !!!!!!!!!!!!!!!!!!!
      #elseif commande envois image  ......       !!!!!!!!!!!!!!!!!!!!!!!
      #elseif commande envois son   .........     !!!!!!!!!!!!!!!!!!!!!

      filebinaire=''; #indicateur de presence commande fichier binaire a transmettre

      if test "$vus" == '' && test "${minus/photo}" != "$minus" ; then  # photo
         #transmission d'une photo ou document graphique poiur la confrencve
         vus='PHOTO';
         filebinaire="`echo $REPLY | (read a b c ;echo $b;)`";  #deuxieme argument
         if test "$filebinaire" == ''; then  #si pas argument
             filebinaire="$defaultfilephoto"; #par defaut
             # dans le directory de travail   250 * 175 
         fi;
      fi;

      if test "$vus" == '' && test "${minus/pres}" != "$minus" ; then  # presentaion sonore
         #transmission d'une presentation sonore
         vus='PRES';
         filebinaire="`echo $REPLY | (read a b c ;echo $b;)`";  #deuxieme argument
         if test "$filebinaire" == ''; then  #si pas argument
             filebinaire="$defaultfilepres"; #par defaut
             # dans le directory de travail   wav de moins de 10s
         fi;
      fi;

      if test "$filebinaire" != ''; then # si binaire a transmettre

         echo "   Commande $vus : fichier $filebinaire  a transmettre au nom de $ident.  ...." 1>&2; 
         if ! test -f $filebinaire; then # test presence fichier
              echo "   Commande $vus : fichier $filebinaire  impossible a ouvrir ????
                    ( PWD  ` /bin/pwd ` )
                    syntaxe : $vus [fichier_binaire_a_transmettre]" 1>&2; 
              filebinaire=''; # annulation transmission
              #on recommance !!!!! deuxieme chance
         else 
            echo "$vus"; #envois de la commande au serveur
            sleep 1; #attente serveur

            #traitement commun
            echo "   Commande $vus : fichier $filebinaire  envois par $OSSL ...." 1>&2; 
            $OSSL enc -base64 <$filebinaire;  #envois vers serveur
            if test "$?" != '0'; then
               echo "   Commande $vus : fichier $filebinaire  ERREUR $?  $OSSL ???" 1>&2; 
            else 
               echo "   Commande $vus : fichier $filebinaire  envoye par $OSSL." 1>&2; 
               echo "     Verifier le resulta avec la page html Status. " 1>&2; 
            fi;

            echo 'STOPSTOPSTOP';   #fin de base 64
            # il n'y a pas de break : on reviends en lecture de liugne de commande sans couper nc
         fi;
      fi;

      filebinaire='';

      if test "$vus" == ''; then #else #ligne commande non identifie !!!

          echo  "$REPLY";  #simple echo distant vers le serveur 
                # (commande quit non intereperete localement )

          echo "   ( Des que vous etes pret a emettre en audio
    et que le locuteur precedent a fini  
    ou ci vous recevez instruction GO 
     Tapper
    une ligne vide pour expedier le son de votre micro
    ou tapper la commande
     SON nomdefichieratransmettre.wav (pour un playback)

       La commande
        PHOTO [nomlfichier.jpg]
        met a jours votre photo identite ...  
       La commande
        PRES [nomdefichier.wav]
        met a jour votre identitee sonore ..." 1>&2; 

      fi;


     done;

        # mypid="`bash -c 'echo $PPID'`";
        # echo "Bash pid $mypid ------------" 1>&2;

        # tuer NC par fin de pipe !!!

   ) | 
           nc  $serveur $portmicro   |  # -v mode bavard

        (
           while read ; do # ligne recue du serveur en entiere (avec les blanc ...) mise en couleur

             echo;  #pour finir barre graphe
             echo -n -e '\033[01;33m';   # mode colore jaune pour les reponses   ESC devant le 033 metre un back slach \\
             echo -n -E "$REPLY";        # ligne recue entiere (avec les blanc ...) 
             echo    -e '\033[00m';      # mode normal                           ESC  devant le 033 metre un back slach \\

           done;
        );

   echo "
 Pas ou plus de Connection disponnible !  ";

   echo -n "
   Voulez vous relancer la connection (ligne vide oui) : ";
   read a; echo;
   if test "$a" != ''; then break; fi;

   echo  -n "   Nouvel  essai ...";
   sleep 3;echo ' !';  #histoire de donneer la parole a d'autre ....

done;

echo "
      $0 $* 
          PROGRAMME TERMINE
";

#  copier coller jusque ici inclus !!!
#
#


Adresse du demandeur : "18.222.125.171"

NC imcp.ba@trousperdu.org imcp.ba@free.fr IMCP Blandy Alain
Statistiques