Auteur Sujet: Reconnection automatique avec SC bonne nouvelle  (Lu 32671 fois)

Hors ligne gizmo622

  • Posteur
  • **
  • Messages: 13
Reconnection automatique avec SC bonne nouvelle
« le: 01 mai 2007, 16:22:47 »
Bonjour à tous,

Utilisant très souvent depuis quelques mois SC j'étais assez déçu qu'il ne propose pas de reconnection automatique en cas d'erreur réseau...
Hors je me suis penché sur le projet, et j'ai créér deux petits modules qui permettent à SC de se relancer tout seul à distance, j'ai testé cela fonctionne très bien.
Jusque quelques bogues à corriger.
Si cela vous interesse je partagerai mes sources.

Je tiens à remercier JL56 qui m'as fait connaître via son tutorial AutoIt car sans ce merveilleux petit logiciel de script je ne me serai jamais lancer dans l'aventure.
Et un deuxième merci pour les paramètres à utiliser quand on passe par un serveur proxy, moi qui pensait que l'on pouvait pas outrepasser les paramètres proxy avec SC.

Bon 1er mai à tous et oui il y en a qui bosse quand même

Hors ligne jl56

  • Modérateur
  • *****
  • Messages: 342
  • Sexe: Homme
    • tuto SCIII
Re : Reconnection automatique avec SC bonne nouvelle
« Réponse #1 le: 01 mai 2007, 20:57:00 »
bonjour gizmo622

il y a pas de quoi
REGDE WENS Sparad0x m'ont beaucoup aider au début
j'aide maintenant les autres surtout dans la partie SCIII et proxy que je maitrise
et je pense que c'est le principe d'un forum intelligent et de bonne esprit
comme l'est  ce forum
pour le code surtout si il est en autoit je suis preneur merci de ta proposition

a+ jl56

Hors ligne Sparad0x

  • Administrateur
  • *****
  • Messages: 496
Re : Reconnection automatique avec SC bonne nouvelle
« Réponse #2 le: 02 mai 2007, 23:56:13 »
Bonjour gizmo622,

Comme tu l'as sans doute remarqué, ce forum est très axé sur l'entraide!
Aussi, si tu désires partager tes exécutables, tes sources, et expliquer s'en servir au travers d'un petit tuto clair et concis, ce sera avec plaisir.
Je peux même héberger des fichiers sur le serveur du site si tu en as besoin.

Have Fun ;)

Sparad0x

Hors ligne benjy

  • Modérateur
  • *****
  • Messages: 430
  • Sexe: Homme
Re : Reconnection automatique avec SC bonne nouvelle
« Réponse #3 le: 03 mai 2007, 01:25:20 »
ah autoit ::) j'en ai fait des installation grace a lui, moi aussi je maitrise bien autoit, donc si tu ve filer tes sources , je suis preneur  :P
« Modifié: 09 mai 2007, 01:06:10 par benjy »
benjy[arrobas]ultravnc[point]fr

Hors ligne benjy

  • Modérateur
  • *****
  • Messages: 430
  • Sexe: Homme
Re : Reconnection automatique avec SC bonne nouvelle
« Réponse #4 le: 06 mai 2007, 19:57:33 »
J'attend tjs ces fameux script, sa serait cool que tu les affiches pour que chacun les utilisent et pourquoi pas les améliorer.
Je pense que tout le monde serait content d'en profiter, surtout que moi c'est souvent que ca m'arrive ces deconnection  :-[
Merci

@+ Benjy
benjy[arrobas]ultravnc[point]fr

Hors ligne gizmo622

  • Posteur
  • **
  • Messages: 13
Re : Reconnection automatique avec SC bonne nouvelle
« Réponse #5 le: 06 mai 2007, 21:23:15 »
Bonsoir, excuser moi si j'ai mis du temp à faire réapparition mais j'étais beaucoup pris et voulai corriger les bogues avant de mettre tout en ligne :

Donc voila les sources je les postes directement sur le forum car j'ai pas de serveur FTP sous la main pour les envoyer :

Les modules sont compilés avec AutoIt3

Les xx dans le code correpondent soit à des adresses de sites internet ou des prénom de technicien


-------------Le module client à lancer depuis le poste qui veut controler le serveur -------------

#include <GUIConstants.au3>
#include <IE.au3>

Opt("TCPTimeout",1000) ;1000 milliseconds

global $nomserveur="xx.dyndns.org"
global $port_serveur_internet = 8080
global $socket
Global $res

$file = -1

if $CmdLine[0]=0 Then
  msgbox(64,"Info...","La ligne de commande est incorrecte"&@LF&"Usage : user")
  exit
else
  $user=$CmdLine[1] ; récupére le nom d'utilisateur via la ligne de commande (en premier paramètre)
EndIf

if $cmdline[0]=2 Then
  if($cmdline[2])=1 then $file=FileOpen("debug.log",2)     
endif

$ouinon = MsgBox(292,"Confirmer ?","Le client est il un xx ?")
if $ouinon=6 then
  Switch $user
    case "xx"
     $ch = 9001  
    case "xx"
      $ch = 9002
   case "xx"
     $ch = 9003
   case "xx"
     $ch = 9004
   case "xx"
     $ch = 9005
   case "xx"
      $ch = 9006
    case "xx"
     $ch = 9007
  EndSwitch
  RunWait("helpdeskclientssl.exe -proxy xx.dyndns.org:443 ID:"&$ch,"")
  MsgBox(64,"Info...","La session d'assistance est terminé...")
  Exit
EndIf
; Le client n'est pas un xx
Do
  $id=Random(1,9000,1)
  $res=TCPStartup()
  If($res)<>1 then
    msgbox(16,"Erreur","Erreur d'initialisation de la librairie Socket")
   Exit
  EndIf
  
  $serveur_internet=TCPNameToIP($nomserveur)
  If $serveur_internet="" Then
    MsgBox(16,"Erreur","Erreur pendant la résolution DNS de " &$nomserveur)
    exit
  EndIf
  
  $socket = TCPConnect($serveur_internet, $port_serveur_internet)
  If $socket = -1 Then
    MsgBox(16,"Erreur","Erreur de connection au serveur d'assistance")
    Exit
  EndIf
  
  $szData= 'user='&$user&'&etat=connect&id='&$id
  $longueur=StringLen($szData)
  $envoi="POST /connect.php HTTP/1.0" & @LF & "Connection: Close" & @LF & "Content-type: application/x-www-form-urlencoded" & @LF & "Content-Length: " & $longueur & @LF & @LF & $szdata & @LF
  $new = StringAddCR($envoi)
  
  $res=TCPSend($socket,$new)
  If($res=0) then
    msgbox(16,"Erreur","Erreur d'envoi des données d'etat au serveur d'assistance")
    Exit
  EndIf

  ; lecture de la réponse
  $buff=""
  $buff = TCPRecv($socket, 500) ; ne pas mettre un tampon trop fort car pas de reception parfois
  If($buff="") Then
    MsgBox(16,"Erreur","Erreur de réception des données d'etat du serveur d'assistance")
    Exit
  EndIf
  
  TCPCloseSocket($socket)

  if Stringright($buff,2)="ok" Then
    RunWait("helpdeskclientssl.exe -proxy xx.dyndns.org:443 ID:"&$id,"")
  EndIf

  $ouinon = MsgBox(292,"Confirmer ?","Cette session d'assistance est elle terminer ?")
  if $ouinon=6 then ; terminer la session
    $reponse=ReinitialiseConnect($user)
    if $reponse<>"" then
      MsgBox(16,"Erreur","Erreur pendant la réinitialisation du serveur d'assistance")
      exit
    Else
     MsgBox(64,"Info...","La session d'assistance est terminé...")
      exit
    Endif
  Endif
until $ouinon=6
;GUISetState(@SW_HIDE) ; cache l'interface utilisateur

func ReinitialiseConnect($user)
  if $file<>-1 then FileWriteLine($file,@LF&"--- Début de la réinitialisation du serveur d'assistance ---"&@LF)
  if $file<>-1 then FileWriteLine($file,"Lance la connection au serveur d'assistance vers : IP "&$serveur_internet & " PORT "&$port_serveur_internet)
  $socket=-1 ; réinitialise l'etat de la variable Global $socket
  if $file<>-1 then FileWriteLine($file,"Ouvre un socket")
  $socket = TCPConnect($serveur_internet , $port_serveur_internet)
  If $socket = -1 Then
    if $file<>-1 then FileWriteLine($file,"Erreur de connection au serveur d'assistance Adresse IP : " &$serveur_internet & " sur le port : " &$port_serveur_internet)
   return "Erreur de connection au serveur d'assistance"
    exit
  EndIf
  if $file<>-1 then FileWriteLine($file,"Connection au serveur d'assistance réussi")
  
  $szData= 'user='&$user&'&etat=pasdeconn' ; disconnnect
  $longueur=StringLen($szData)
  $envoi="POST /connect.php HTTP/1.0" & @LF & "Connection: Close" & @LF & "Content-type: application/x-www-form-urlencoded" & @LF & "Content-Length: " & $longueur & @LF & @LF & $szdata & @LF
  $new = StringAddCR($envoi)
  
  if $file<>-1 then FileWriteLine($file,"Lance la requête d'envoi de données au serveur d'assistance"&@LF&@LF&$new)
  $res=TCPSend($socket,$new)
  if($res=0) then
    if $file<>-1 then fileWriteLine($file,"Erreur d'envoi de la requête de données au serveur d'assistance")
   Return "Erreur d'envoi des données au serveur d'assistance"
  EndIf
  if $file<>-1 then FileWriteLine($file,"Requête d'envoi de données du serveur d'assistance réussi")
  
  ; lecture de la réponse
  if $file<>-1 then fileWriteLine($file,"Lance la requête de réception des données du serveur d'assistance")
  $buff=""
  $buff = TCPRecv($socket, 500) ; ne pas mettre un tampon trop fort car pas de reception parfois
  if($buff="") Then
   Return "Erreur de réception des données de réinitialisation du serveur d'assistance"
    if $file<>-1 then FileWriteLine($file,"Erreur de réception des données du serveur d'assistance")
  endif
  if $file<>-1 then FileWriteLine($file,"Requête de réception des données du serveur d'assistance réussi")
  
  if Stringright($buff,2)="ok" Then
    if $file<>-1 then FileWriteLine($file,"Réception des données du serveur d'assistance réussi")
   return ""
  Else
   if $file<>-1 then FileWriteLine($file,"Erreur de réception des données du serveur d'assistance : "&@LF&@LF&$buff)
    return "Erreur en reception des données : " &$buff
  endif
endfunc

Func OnAutoItExit() ; automatiquement appeler en quand d'erreur
if $socket>1 Then ; ferme le socket uniquement si ce dernier à été ouvert
  TCPCloseSocket($socket)
  if $file<>-1 then FileWriteLine($file,"Ferme un socket")
  TCPShutdown()
  if $file<>-1 then FileWriteLine($file,"Libère la bibliothèque d'initialisation socket")
  if $file<>-1 then FileWriteLine($file,"Fin de la session")
EndIf
if $file<>-1 then FileClose($file)
EndFunc

Le reste dans l'autre post

Hors ligne gizmo622

  • Posteur
  • **
  • Messages: 13
Re : Reconnection automatique avec SC bonne nouvelle
« Réponse #6 le: 06 mai 2007, 21:23:31 »
-------------Le module serveur doit être lancer après que le client soit lancer (en attente)----------

Opt("TrayIconHide",1) ; cache l'icone de send.exe

FileChangeDir(@ProgramFilesDir&"\xxx\Helpdesk")
$FileDebug = FileOpen("debug.log",1)
if($filedebug=-1) then MsgBox(16,"Attention !","Erreur de création du fichier debug...")

#include <GUIConstants.au3>
#include <IE.au3>

Opt("TCPTimeout",30000) ;30 secondes
Global $glob,$compteur=0,$ancienid,$file_proxy,$file,$handle,$socket,$FileDebug,$Temp_Debut,$Temp_Fin

; AVEC PROXY
FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Lit la valeur Proxy de la BDR")
$proxyenable = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "ProxyEnable")
if $proxyenable="1" Then
  FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Le proxy est activé sur le poste")
  $username=""
  $password=""
  FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Vérifie si le fichier proxy existe déjà")
  if FileExists("proxy")=1 Then
   FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Ouvre le fichier Proxy en lecture")
   $file_proxy=FileOpen("proxy",0)
   if $file_proxy=-1 Then
     MsgBox(16,"Erreur","Impossible d'ouvrir le fichier de configuration")
     exit
   Endif
   $ligne=FileReadLine($file_proxy,1)
   if $ligne=1 Then
     MsgBox(16,"Erreur","Erreur de lecture du fichier de configuration")
     exit
   Endif
   $pos=StringInStr($ligne,";")
   $taillechaine=StringLen($ligne)
   
   $username=StringLeft($ligne,$pos-1)
    $password=Stringmid($ligne,$pos+1,$taillechaine-$pos+1)
   
   if $username="" or $password="" then
     MsgBox(16,"Erreur","Erreur de lecture de la configuration proxy")
      exit    
   Endif
  else
    $username = InputBox("Paramètres proxy ? ", "Vous utiliser un proxy, entrez votre nom d'utilisateur S.V.P.", "", "",100,150)
    $password = InputBox("Paramètres proxy ? ", "Vous utiliser un proxy, entrez votre mot de passe S.V.P. ", "", "",100,150)
    if $username="" or $password="" then
      MsgBox(4096, "Erreur ", " Erreur de saisie recommencer ! ")
      Exit
    Endif
 
    $file_proxy=FileOpen("proxy",2)
    if $file_proxy=-1 Then
     MsgBox(16,"Erreur","Erreur de création du fichier de configuration")
     Exit
   Endif
   $res=FileWriteLine($file_proxy,$username&";"&$password)
    if($res=0) Then
     MsgBox(16,"Erreur","Erreur pendant l'écriture du fichier de configuration")
     Exit
   EndIf
   FileClose($file_proxy)
  Endif
   
  envset("http_proxy_user", $username)
  envSet("http_proxy_password",$password)
 
  ; Interface IHM

  $handle=GuiCreate("Helpdesk", 430, 280,-1,-1,$DS_MODALFRAME+$DS_SETFOREGROUND+$WS_POPUPWINDOW+$WS_CAPTION, $WS_EX_TOOLWINDOW)
  $liste=GUICtrlCreateList("", 10,10,200,196, $LBS_NOTIFY, $WS_EX_CLIENTEDGE)
  GuiCtrlSetData(-1, "xx|xx|xx|xx|xx|xx|xx", "xx")
  GuiCtrlCreatePic("logo.bmp",220,15, 200,181)
  GUICtrlCreateLabel("Avant d'établir une connection, veuillez nous contacter au xx.xx.xx.xx.xx",40,225)
  GUICtrlCreateLabel("http://www.xxx.fr",220,200)
  $debug=GUICtrlCreateLabel("Etat : en attente...",10,260,500)
  $bouton1=GUICtrlCreateButton("Quitter",350,250,70,25)    ; quitter le logiciel
  $bouton2=GUICtrlCreateButton("Notre site Internet",240,250,100,25) ; site internet
  $bouton3=GUICtrlCreateButton("Lancer",80,200,50,20)      ; Lancer l'assistance
 
  Sleep(1000) ; laisse le temp au controle de bien s'initialiser
  GUISetState(@SW_SHOW)

  While 1
    $msg = GUIGetMsg()
    Select
      case $msg = $bouton1
      exit
      case $msg = $bouton2
       $oIE = _IECreate ("www.xxx.fr")
       _IENavigate($oIE,"http://www.xxx.fr")
     case $msg = $bouton3
       $prenom=GUICtrlRead($liste)
       ExitLoop
     case $msg = $GUI_EVENT_CLOSE
       OnAutoItExit()
      Exit
    EndSelect
  Wend
 
  Switch $prenom
    case "xx"
     $ch = 9001 
    case "xx"
      $ch = 9002
   case "xx"
     $ch = 9003
   case "xx"
     $ch = 9004
   case "xx"
     $ch = 9005
   case "xx"
      $ch = 9006
    case "xx"
     $ch = 9007
  EndSwitch
 
  $retour=CreeFile($ch,$prenom)
  If $retour<>"" then
    MsgBox(16,"Erreur",$retour)
   exit
  Endif
 
  GUISetState(@SW_HIDE) ; cache l'interface utilisateur
  RunWait("Helpdeskserver.exe","",@SW_HIDE)
  MsgBox(64,"Information","La Session d'assistance est terminé...",5)
  Exit
EndIf

func CreeFile($ch,$prenom)
  ;creation du fichier de connection
  $file=fileopen("helpdesk.txt",2) 
  if $file=-1 then return "Erreur pendant la création du fichier de connection..."
  FileWriteLine($file,"[DIRECT]")
  FileWriteLine($file,"[HOST]")
  FileWriteLine($file,$prenom)
  FileWriteLine($file,"-id "&$ch&" -sslproxy -connect xx.dyndns.org:443 -noregistry")
  FileClose($file)
  return ""
EndFunc

; SANS PROXY
$temp_debut=TimerInit()

FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Chemin d'execution : " &@WorkingDir)
FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Lit la clé run de la BDR")
if RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run","Helpdesk")="" then
  ; Interface IHM
  FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" La clé dans la BDR n'existe pas, création de GUI")
  $handle=GuiCreate("Helpdesk", 430, 280,-1,-1, $WS_CAPTION, $WS_EX_TOOLWINDOW)
  $liste=GUICtrlCreateList("", 10,10,200,196, $LBS_NOTIFY, $WS_EX_CLIENTEDGE)
  GuiCtrlSetData(-1, "xx|xx|xx|xx|xx|xx|xx", "xx")
  GuiCtrlCreatePic("logo.bmp",220,15, 200,181)
  GUICtrlCreateLabel("Avant d'établir une connection, veuillez nous contacter au xx.xx.xx.xx.xx",40,225)
  GUICtrlCreateLabel("http://www.xxx.fr",220,200)
  $debug=GUICtrlCreateLabel("Etat : en attente...",10,260,500)
  $bouton2=GUICtrlCreateButton("Notre site Internet",240,250,100,25) ; site internet
  $bouton1=GUICtrlCreateButton("Quitter",350,250,70,25)    ; quitter le logiciel
  $bouton3=GUICtrlCreateButton("Lancer",80,200,50,20)      ; Lancer l'assistance
  Sleep(1000)
  GUISetState(@SW_SHOW)
  FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Création interface GUI créé")
  While 1
    $msg = GUIGetMsg()
    Select
      case $msg = $bouton1
       exit 
      case $msg = $bouton2
       $oIE = _IECreate ("www.xxx.fr")
       _IENavigate($oIE,"http://www.xxx.fr")
      case $msg = $bouton3
       $prenom=GUICtrlRead($liste)
        exitloop
     case $msg = $GUI_EVENT_CLOSE
       OnAutoItExit()
      Exit
   EndSelect
  Wend

  GUISetState(@SW_HIDE) ; cache l'interface utilisateur
Else
  FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" La clé dans la BDR est présente")
  if $CmdLine[0]<>0 Then
    $prenom=$CmdLine[1]
    FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Ligne de commande : Prenom = " & $prenom)
  Else
   FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Ligne de commande incorrecte, redémarrer l'ordinateur")
    MsgBox(16,"Erreur","Ligne de commande incorrect !"&@LF&"Redémarrer votre ordinateur...")
   Exit
  EndIf
EndIf

FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Entre dans la boucle")
do
  reconnect($compteur)
  $compteur=$compteur+1
Until reconnect($compteur)<>"lance" ; si la fonction renvoi une valeur différente de "lance" alors fin de la session d'assistance

FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Supprime la clé Run de la BDR")
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run","Helpdesk")
FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Session d'assistance terminée")
MsgBox(64,"Info...","La Session d'assistance est terminé...",5)

Func reconnect($compteur)
  $temp_fin = TimerDiff($temp_debut)
  if($temp_fin/1000)/60>300 Then ;5 heures
    FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Fin de session d'assistance du au temps 5 Heures")
   return "connectepas"
  EndIf
 
  FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Temp : " & $temp_fin)
  FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Charge la Dll Winsock")
  $res=TCPStartup()
  FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Lance la résolution DNS")
  $serveur_internet=TCPNameToIP("xxx.dyndns.org")
  if $serveur_internet="" then
    FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Résolution DNS échoué, Attend 1 Minute")
   Sleep(30000) ; Attend 30 secondes
    FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Relance la boucle")
   Return("lance")
  Endif
  $port_serveur_internet = 8080
  FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Connection d'un socket")
  $socket = TCPConnect($serveur_internet , $port_serveur_internet)
  $szData= 'user='&$prenom
  $longueur=StringLen($szData)
  $envoi="POST /send.php HTTP/1.0" & @LF & "Connection: Close" & @LF & "Content-type: application/x-www-form-urlencoded" & @LF & "Content-Length: " & $longueur & @LF & @LF & $szdata & @LF
  $new = StringAddCR($envoi)
  FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Lance la requête au serveur")
  $res=TCPSend($socket,$new)
  ; lecture de la réponse
  $buff=""
  $buff = TCPRecv($socket, 500) ; ne pas mettre un tampon trop fort car pas de reception parfois
  FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Lit la réponse de la requête"&@LF&@LF&$buff&@LF&@LF)
  $glob=$buff
  $pos=StringInStr($glob,"/",0,6)
  $pos=$pos+1
  $len=StringLen($glob);
  $ch=StringMid($glob,$pos,$len) ; récupère le id de connection
  FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" ID de connection : " &$ch)
  FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Ferme le socket ouvert")
  TCPCloseSocket($socket)
  FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Libère la Dll socket")
  TCPShutdown()
  FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Valeur de connection : " &StringMid($glob,$pos-8,7))
  if(StringMid($glob,$pos-8,7))="connect" Then
   ;creation du fichier de connection
   FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Crée le fichier de connection")
    $file=fileopen("helpdesk.txt",2)
    FileWriteLine($file,"[DIRECT]")
    FileWriteLine($file,"[HOST]")
    FileWriteLine($file,$prenom)
    FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Ecriture fichier d'assistance : " & "-id "&$ch&" -sslproxy -connect xx.dyndns.org:443 -noregistry")
   FileWriteLine($file,"-id "&$ch&" -sslproxy -connect xx.dyndns.org:443 -noregistry")
    FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Ferme le fichier d'assistance")
   FileClose($file)
    FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Ecrit la clé Run dans la BDR")
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Helpdesk", "REG_SZ", "" & @WorkingDir & "" & "\send.exe" & " " & $prenom)
   if $compteur=0 then
     $ancienid=$ch
     FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Lance le Helpdesk avec ID : "&$ch & " Compteur = 0")
     RunWait("Helpdeskserver.exe","",@SW_HIDE)
     FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Relance la boucle, renvoi lance")
     return "lance"
    else ; $compteur>0
     if $ancienid<>$ch then
       FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Lance le Helpdesk avec ID : "&$ch & " Compteur = "&$compteur)
      $ancienid=$ch ; remet à jour la variable ancienid avec le ch en cours
      RunWait("Helpdeskserver.exe","",@SW_HIDE)
       FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Relance la boucle, renvoi lance")
      return "lance"
      endif
    endif
  else
   FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Renvoi connecte pas")
   return "connectepas"
  endif
EndFunc

Func OnAutoItExit() ; automatiquement appeler en quand d'erreur
  if $file_proxy<>-1 then
    FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Ferme le fichier Proxy")
   FileClose($file_proxy)
  Endif
  if $handle<>0 then
    FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Détruit l'interface GUI")
   GUIDelete($handle)
  EndIf
  if $file<>-1 then
    FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Ferme le fichier de Connection")
   FileClose($file)
  EndIf
  if $socket<>-1 then
    FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Ferme le Socket")
   TCPCloseSocket($socket)
  Endif
  FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Libère la dll Winsock")
  TCPShutdown()
  If $FileDebug<>-1 Then
    FileWriteLine($FileDebug,@hour&"-"&@min&"-"&@SEC&" Ferme le fichier de Debug")
    FileClose($FileDebug)
  Endif
EndFunc
---------------Fichier Send.php-------------
<?php
$id=mysql_connect("127.0.0.1","root","");
$link=mysql_select_db("bhelpdesk",$id);

$user=$_POST['user'];

$req="SELECT * FROM cliserv WHERE user='$user'";
$result=mysql_query($req) or die(mysql_error());

$array=mysql_fetch_array($result);
$etat=$array['etat'];
$id=$array['id'];
mysql_close();
echo "$etat/$id";
?>
------------Fichier connect.php---------------
<?php
$id=mysql_connect("127.0.0.1","root","");
$link=mysql_select_db("bhelpdesk",$id);

$user=$_POST['user'];
$etat=$_POST['etat'];
$id=$_POST['id'];

$req="UPDATE cliserv SET etat='$etat',id='$id' WHERE user='$user'";
mysql_query($req) or die(mysql_error());
mysql_close();
echo "ok";
?>
----------------------------------------

Je n'ai pas le temp matériel de réaliser en détail un tutorial de fonctionnement
mais j'ai testé et cela fonctionne très bien.

Pour les fichiers send.php et connect.php, il faut les placer sur un serveur web qui sait gérer le php4.

Bonne soirée à tous

je suis à votre écoute si vous avez des questions à me poser.
« Modifié: 06 mai 2007, 21:25:15 par gizmo622 »

Hors ligne jl56

  • Modérateur
  • *****
  • Messages: 342
  • Sexe: Homme
    • tuto SCIII
Re : Reconnection automatique avec SC bonne nouvelle
« Réponse #7 le: 06 mai 2007, 22:56:17 »
bonjour gizmo622

et merci pour ton script

cela me semble tres complet
je ne comprend pas tout  mais j'analyserais cela un peut plus tard

merci

a+ jl56

Hors ligne benjy

  • Modérateur
  • *****
  • Messages: 430
  • Sexe: Homme
Re : Reconnection automatique avec SC bonne nouvelle
« Réponse #8 le: 07 mai 2007, 18:35:31 »
moi pareil j'analyserai ca plus tard, en tout cas merci pour le script et félicitation pour ton travail , bravo ;)
benjy[arrobas]ultravnc[point]fr

Hors ligne wenceslas

  • Modérateur
  • *****
  • Messages: 665
  • Sexe: Homme
    • Mon Site Web ...
Re : Reconnection automatique avec SC bonne nouvelle
« Réponse #9 le: 07 mai 2007, 19:28:57 »
Bonjour gizmo622,

Merci beaucoup pour la mise à disposition de ton script !!  :D

Bonne soirée,

++
Wens

Hors ligne benjy

  • Modérateur
  • *****
  • Messages: 430
  • Sexe: Homme
Re : Reconnection automatique avec SC bonne nouvelle
« Réponse #10 le: 09 mai 2007, 01:26:18 »
bon encore bravo pour ton script, j'avoue deja m'avoir penché sur les sockets mais je trouvé ca trop compliqué (je m'amuser a faire des chats grace au socket avant  :) pas plus ).


Au sujet du script : - ou est WinVNC.exe ?  d'apres ce que j'ai compri, il y en a pas on est d'accord? tu utilise les socket pour te connecter à l'adresse voulu sur le port voulu et tu créer une interface graphique qui ressemble a celle du sc c'est bien ca?

si c'est ca comment et par quel fonction (que je ne connait pas) arrive tu a avoir une vision de l'ordinateur distant?

merci pr tes réponses qui m'éclaireront

@+ benjy
benjy[arrobas]ultravnc[point]fr

Hors ligne gizmo622

  • Posteur
  • **
  • Messages: 13
Re : Reconnection automatique avec SC bonne nouvelle
« Réponse #11 le: 09 mai 2007, 16:19:53 »
Bonjour,

Dans le module client il y a une ligne

" if Stringright($buff,2)="ok" Then
    RunWait("helpdeskclientssl.exe -proxy xx.dyndns.org:443 ID:"&$id,"")
  EndIf
"

Qui lance la partie client RunWait("helpdeskclientssl.exe") c'est ici que je lance winvnc client

Dans le module serveur c'est le même principe

Hors ligne benjy

  • Modérateur
  • *****
  • Messages: 430
  • Sexe: Homme
Re : Reconnection automatique avec SC bonne nouvelle
« Réponse #12 le: 09 mai 2007, 23:09:34 »
ok ok merci pr tes precisions, je ne tarderai pas à le tester ;D
benjy[arrobas]ultravnc[point]fr