Greenwall V0.7 - Bot réseau (Network bot)

Description


Bien le bonjours !

Il y a fort longtemps que je n'ai pas posté de source sur ircfr et je renou aujourd'hui
avec un outil fort pratique, un des mes projets secondaires, Greenwall.

Greenwall est un outil réseau qui vous aides a gérer les connexions entrantes sur votre ordinateur.

Attention ce n'est PAS un pare-feux, c'est un outil complémentaire au pare-feux.

Imaginons deux secondes que votre ordinateur sois votre maison et que votre pare-feux sois votre cloture alentours.

Votre cloture vous protèges que des intrus pénètre sur votre terrain.

Si des intrus trouvent un trou dans votre cloture, ils vont pénétrer chez vous.

Le pare-feux est la pour empêcher les vautours de passer mais une fois qu'il ont réussis par "le trou", votre pare-feux devient totalement inutile.

La ou intervient Greenwall, il s'occupe de tout les connexions "ACTIVES"

Cela veut dire touts les connexions qui ont été établis sois volontairements sois involontairements

Si Greenwall voit des intrus du "mauvais coté de la cloture", il demande quoi faire avec si ne sais pas, ou s'occupe de les sortirs immédiatement.
-----------------------

-Dès détection d'adresse ip inconnu, vous avez la possibilité de "kicker la connexion", "bannir la connexion" "autoriser la connexion définitivement" "autoriser le port d'entrée définitivement" "désactiver/activer le réseau sur l'adaptateur en cours (bouton panique)"

-Sur un système de liste verte et liste noir, vous pourrez gérer les entrées "accepter et bloquer"

-En cas d'absence (AFK), Greenwall peut automatiquement kicker l'intru dans un intervale programmé

-Touts les activités suspectes peuvent être loggés, consultés aux besoins, ou envoyer par courrier interne.

-Greenwall scan aussi le réseau local pour les connexions malveillantes venant de l'intérieur

-Si la connexion entrante provient d'un programme en arrière plan ou d'un malware, greenwall termine de force le processus en cours responsable de la connexion établi.

----------------

-Vous aurez la première fois a autoriser vos logiciels qui demandent internet pour fonctionner.

-Vous n'aurez qu'a le faire qu'une seule fois pour être bon définitivement. Une fois touts vos logiciels autorisés, vous serez tranquille sauf .. pour les cas d'alerte !

-Les ports 80 et 443 sont par défauts enlevés du scan, je vous déconseilles fortement de changer ce paramètre.

-Je vous déconseilles pour le moment de tourner Greenwall en même temps que le P2P. Une MAJ pour ignorer les connexions provenants des clients torrents sera bientot ajouté.

-Par soucis d'autorisations, vous devez utiliser un compte windows ADMINISTRATEUR

-----------------

-Greenwall prend en charge l'encryption ssl pour l'envoie du courrier et doit installer plusieurs librairies sur votre système.

-Un redémarrage de windows vous seras proposé si des librairies sont manquantes et installés ( Obligatoire pour la prise en charge )

-Vous pouvez utiliser vos informations de connexions de votre service de messagerie externe pour le service de courrier (Gmail,Outlook,Laposte,...)

-Selectionner votre service dans la liste sous les options, ou entrez l'adresse smtp correspondante avec votre nom d'utilisateur et votre mot de passe habituelle

-----------------

-Si vous avez des questions ou des bugs fort merci de me contacter : dj328i@hotmail.com

-Plusieurs mise a jours sont prévues dans les prochaines semaines

-----------------

F12 Pour lancer Greenwall ( Placer Mirc en systray )

Le fichier contenant les Dialogs se trouve dans le ZIP ( Contenu du zip obligatoire )

//load -rs greenwall/greenwall.000 - pour charger le script

-----------------

MISE A JOURS - 0.7

- Corrections de plusieurs bugs
- Ajout d'un dll manquant pour le client smtp
- Permet dorénavent de recevoir les alertes sur votre appareil android

-----------------


; Création du fichier batch pour la sélection de l'adaptateur réseau ( utilisation de la fonction pause pour fermer la fenêtre via n'importe quelle touche
alias adapterfile {
  write greenwalladapter.bat @echo off
  write greenwalladapter.bat wmic nic get $+(name,$chr(44)) index
  write greenwalladapter.bat pause
}


alias analyse {
  ; Requête des informations réseau - résultat vers fichier externe
  if !$exists(greenwalldata.000) { querycmd greenwalldata.000 netstat -ano }

  ; Mise en htable des informations reçue, envois vers les logs ou la console 
  if $crc(greenwalldata.000) && !%onwork && !$hget(0) {
    var %x 5 | var %y 1 | %onwork = 1

    ; loop start
    while %x <= $lines(greenwalldata.000) {
      hmake %y 5 | unset %z | %z = $addtok(%z,$read(greenwalldata.000,%x),32)
      if ($readini(greenwallpreferences.ini,preferences,console) && !$window(@console)) || $window(@console) { openconsole }

      if $readini(greenwallpreferences.ini,preferences,console) || $window(@console) {
      echo @console %y protocol $gettok(%z,1,32) | echo @console %y from $gettok(%z,2,32)
      echo @console %y coming $gettok(%z,3,32) | echo @console %y state $gettok(%z,4,32) | echo @console %y pid $gettok(%z,5,32) }

      if $readini(greenwallpreferences.ini,preferences,logconsole) { 
      var %gl1 $addtok(%gl1,protocol-from-coming-state-pid,45) | var %gl2 1 | while %gl2 <= 5 { write $+(greenwalllogs,$replace($date,$chr(47),$chr(45)),$chr(45),console.txt) %y $gettok(%gl1,%gl2,45) $gettok(%z,%gl2,32) | inc %gl2 } }
      
      hadd %y protocol $gettok(%z,1,32)
      hadd %y from $gettok(%z,2,32)
      hadd %y coming $gettok(%z,3,32)
      if $gettok(%z,0,32) == 5 { hadd %y state $gettok(%z,4,32) }
      hadd %y pid $gettok(%z,5,32)
    
      inc %y | inc %x | %data = 1 } 
      ;loop end
      if %data && $readini(greenwallpreferences.ini,preferences,console) || $window(@console) { unset %data | echo 4 @console $+($str($chr(45),6),$time,$str($chr(45),6)) }
      if %data && $readini(greenwallpreferences.ini,preferences,logconsole) { write $+(greenwalllogs,$replace($date,$chr(47),$chr(45)),$chr(45),console.txt) $+($str($chr(45),6),$time,$str($chr(45),6)) }
      unset %onwork | .remove greenwalldata.000
  }

  if $hget(0) && !$exists(greenwalldata.000) && !%onwork {
    %onwork = 1 | set %c 1 
    
    ; Vérification des données en htable et actions selon les préférences de l'utilisateur
    ; loop start
    while %c <= $hget(0) {
      if $check.port($getport($hget(%c,coming))) { goto jump02 }
      if !$readini(greenwallpreferences.ini,preferences,scanlan) && $left($hget(%c,coming),7) == 192.168 { goto jump02 }   
      if $left($hget(%c,coming),2) != 0. && $left($hget(%c,coming),5) != 127.0 && $left($hget(%c,coming),1) != $chr(91) && $hget(%c,state) == established && !$check.open { 
      if $check.black { cmd taskkill /t /pid $hget(%c,pid) /f | goto jump02 } 
      if $check.green { newalert } }
      : jump02
    inc %c }
    ; loop end
  }
  hfree -w * | unset %onwork
}

; Retourne une chaine entre deux entrt
alias between if $3 { return $mid($1,$calc($pos($1,$chr($asc($2)),1) +1),$calc($pos($1,$chr($asc($3)),1) -1 - $pos($1,$chr($asc($2)),1))) }

; Création du fichier batch externe pour l'activation du compte administrateur windows ( AnglaisFrançais - Changer la condition et le code de langage pour que la fonction sois valide dans un auter langue )
alias cadmin {
  write greenwalladmin.bat @echo off
  write greenwalladmin.bat net user $iif($language == eng,administrator,administrateur) $+($chr(47),active,$chr(58),yes)
  write greenwalladmin.bat pause
}

; Vérifie le contenu de la liste noir
alias check.black {
 var %y 1 | while %y <= $ini(greenwallblack.ini,black,0) {
 if $readini(greenwallblack.ini,black,%y) isin $hget(%c,coming) { return 1 } 
 inc %y }
 return 0
}

; Vérifie la présence de double lors d'un ajout manuel sur la liste vertenoirports
alias check.exists { 
 var %ceip 1 | while %ceip <= $did($1,1).lines { 
 if $did($1,5) == $iif($1 == listeports,$did($1,1,%ceip),$left($did($1,1,%ceip),$calc($pos($did($1,1,%ceip),$chr(45),1) -2))) { did -ra $1 5 Existant | Return 1 } 
 inc %ceip } | return 0 
}

; vérifie le contenu de la liste verte
alias check.green {
 var %x 1 | while %x <= $ini(greenwallgreen.ini,green,0) {
 if $readini(greenwallgreen.ini,green,%x) isin $hget(%c,coming) { return 0 } 
 inc %x }
 return 1
}

; Vérifie si l'alerte détecté est déja afficher a l'écran
alias check.open {
 var %chop 1 | while %chop <= $dialog(0) {
 if newalert isin $dialog(%chop) && $getaddress($hget(%c,coming)) == $did($dialog(%chop),4) { return 1 }
 inc %chop }
 return 0
}

; Vérifie la liste des ports autorisés
alias check.port {
  var %c 1 | while %c <= $ini(greenwallgreen.ini,ports,0) {
  if $1 == $readini(greenwallgreen.ini,ports,%c) { return 1 } 
  inc %c } | return 0 
}  

; Vérifie la présence des librairies ssl, les installe si nécéssaire et indique si une librairie était manquante ( reboot nécéssaire pour prise en charge )
alias check.ssl {
 var %ssl 0 | if !$exists($+($windir,system32libeay32.dll)) { .copy -o greenwalllibeay32.dll $+($windir,system32) | var %ssl 1 }
 if !$exists($+($windir,system32libeay32.dll)) && 64 isin $ucarch { copy -o greenwalllibeay32.dll $+($windir,syswow64) | var %ssl 1 }
 if !$exists($+($windir,system32libssl32.dll)) { .copy greenwalllibssl32.dll $+($windir,system32) | var %ssl 1 }
 if !$exists($+($windir,system32libssl32.dll)) && 64 isin $ucarch { copy -o greenwalllibssl32.dll $+($windir,syswow64) | var %ssl 1 }
 if !$exists($+($windir,system32ssleay32.dll)) { .copy greenwallssleay32.dll $+($windir,system32) }
 if !$exists($+($windir,system32ssleay32.dll)) && 64 isin $ucarch { copy -o greenwallssleay32.dll $+($windir,syswow64) | var %ssl 1 }
 if !$exists($+($windir,system32msvcr70.dll)) { .copy greenwallmsvcr70.dll $+($windir,system32) | %ssl = 1 }
 if !$exists($+($windir,system32msvcr70.dll)) && 64 isin $ucarch { .copy -o greenwallmsvcr70.dll $+($windir,syswow64) | %ssl = 1 }
 return %ssl
}

; Raccourcie pour le prompt de commande
alias cmd run cmd /c $1- 

; Change le délais pour le scan du réseau et redémarre le timer
alias delayrestart writeini greenwallpreferences.ini preferences scandelay $did(optiongw,16) | if $timer(analyse) { .timeranalyse off | .timeranalyse 0 $did(optiongw,16) analyse }

; Vérifie la validité d'une adresse courriel
alias emailvalid return $iif($count($1,@) == 1 && $count($1,$chr(46)) == 1 && $len($left($1,$calc($pos($1,@,1) -1))) > 2 && $len($between($1,@,.)) > 2 && $chr(46) isin $right($1,4) && $len($right($1,$calc($len($1) - $pos($1,.,1)))) > 1 && $chr(32) !isin $1 && $remove($1,$chr(45),$chr(46),$chr(64),$chr(95)) isalnum ,1,0)  

; Lance ou maximise la fenêtre de démarrage
alias F12 { 
 if $dialog(startgw) { dialog -e startgw | goto jump04  }  
 include greenwallhndl.000 | open startgw
 : jump04
 }
 
;  Récupère l'adresse dans la chaine de caractère 
alias getaddress return $left($1,$calc($pos($1,$chr(58),1) -1)) 
 
; Récupère tout les nombres dans une chaine
alias getallnum { 
  var %gan 1 | var %gang

  while %gan <= $len($1) {
  if $mid($1,%gan,1) isnum || $2- isin $mid($1,%gan,1) { var %gang $+(%gang,$mid($1,%gan,1)) }
  inc %gan }

  return %gang
}

; Ip de provenance et port utilisé sur la même chaine, séparation des données 
alias getport return $mid($1,$calc($pos($1,$chr(58),1) +1))

; Vérification au démarrage et lancement du timer de l'analyse 
alias greenwall {
  .timers off | unsetall | include greenwallhndl.000
  if !$readini(greenwallpreferences.ini,preferences,adminshow) { open admingw }
  if !$exists(greenwalladapter.bat) { adapterfile }
  if !$exists(greenwalladmin.bat) { cadmin }
  if !$timer(analyse) { .timeranalyse 0 $readini(greenwallpreferences.ini,preferences,scandelay) analyse }
}

;  Raccourcie
alias include .load -rs $1-

; Retourne le langage du système d'exploitation utilisé par l'utilisateur
alias language return $replace($registeryread(HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsLanguage,InstallLanguage),0809,eng)

; Charge la liste des fichiers logs existants
alias load.logs var %logs 1 | while %logs <= $findfile(greenwalllogs,*,0) { if $right($findfile(greenwalllogs,*,%logs),9) == alert.txt || $right($findfile(greenwalllogs,*,%logs),11) == console.txt  { did -a logsgw 1 $nopath($findfile(greenwalllogs,*,%logs)) } | inc %logs }

; Contenu du message pour l'envoie des logs par courriel
alias log.message.a return Voici vos logs greenwall tel que demandé 
alias log.message.b return Vous les trouverez attachés en pièce jointe avec ce courriel

; Libère les informations sur l'adaptateur réseau par defaut et désactive l'adaptateur ( SI WIFI )
alias netoff cmd ipconfig /release | cmd wmic path win32_networkadapter where $+(index=,$did(chooseadapter,2)) call disable

; Ouvre une nouvelle alerte ( dans une fenêtre supplémentaire si besoin )
alias newalert if !$dialog(newalert31) && $calc($dialog(0) +1) < 32 { open $+(newalert,$calc($dialog(0) +1)) }
 
; Raccourci pour l'ouverture des dialogs, bloque en cas d'existance pour éviter un retour d'erreur 
alias open if !$dialog($1) { dialog -mod $1 $1 } | if $dialog($1) { dialog -e $1 }

; Ouverture du windows pour la console ( Placé selon la résolution de l'écran )
alias openconsole window -dok0 +e @Console $int($calc($window(-1).h / 1.8)) $int($calc($window(-1).w / 10)) 450 600

; Permet de faire une requête interne pour le prompt de commande windows sans utiliser une fenêtre extérieur 
alias querycmd {
  var %com $+(cmd,$ticks) | .comopen %com Wscript.Shell
  if (!$comerr) .comclose %com $com(%com,run,1,bstr,cmd.exe /c pushd $mircdir && $2- > $1 2>&1,uint,7,bool,true)
}

; Envoie une demande silencieuse au client smtp
alias quietmail {
  var %com $+(cmd,$ticks) | .comopen %com Wscript.Shell
  if (!$comerr) .comclose %com $com(%com,run,1,bstr,cmd.exe /c $mircdirgreenwallsmtp.000 $1-,uint,7,bool,true)
}

; Lecture des clefs de registre windows
alias registeryread {
  .comopen registeryread WScript.Shell
  if !$comerr { var %b = $com(registeryread,RegRead,3,bstr,$+($1,$2)),%rr = $com(registeryread).result
  .comclose registeryread | return %rr } | return 
} 

; Contenu du message pour l'envoie des alertes par courriel
alias sendalert.message.a return Une connexion non autorisé a été établie sur : $winvar(computername)
alias sendalert.message.b return Voici les informations associées a cette connexion :
alias sendalert.message.c return Origine : $did($dname,2)
alias sendalert.message.d return Provenance : $did($dname,4)
alias sendalert.message.e return Heure : $time
alias sendalert.message.f return Port : $did($dname,7)
alias sendalert.message.g return PID : $did($dname,9)

; Retourne l'architecture du processeur
alias ucarch return $registeryread(HKEY_LOCAL_MACHINESystemCurrentControlSetControlSession ManagerEnvironment,PROCESSOR_ARCHITECTURE)

; Retourne le chemin du dossier d'installation de windows
alias windir return $winvar(windir)

; Retourne les variables d'environment windows ( pourrait utiliser $envar de la 7.38 mais deviendrait incompatible avec touts les versions antérieurs )
alias winvar {
 var %wsh = wsh $+ $ticks, %tmp = $$1
 .comopen %wsh wscript.shell
 if ($isid) {
 %tmp = $com(%wsh,expandenvironmentstrings,1,bstr*,% $+ $1%)
 %tmp = $com(%wsh).result }
 else {
 var %env = env $+ $ticks
 %tmp = $com(%wsh,environment,2,bstr*,process,dispatch* %env)
 %tmp = $iif($0 < 2,$com(%env,remove,1,bstr*,$1),$com(%env,item,4,bstr*,$1,bstr*,$2-)) }
 
 :error
 if ($com(%wsh)) .comclose %wsh
 if ($com(%env)) .comclose %env
 if ($isid) && ($+(%,$1,%) !iswm %tmp) return %tmp
}

;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;

on 1:dialog:newalert*:init:0:{
  if $readini(greenwallpreferences.ini,preferences,soundon) { splay greenwallalert.mp3 } 

  if $readini(greenwallpreferences.ini,preferences,logalert) {
  write $+(greenwalllogs,$replace($date,$chr(47),$chr(45)),$chr(45),alert.txt) $+($chr(91),Alerte intrusion,$chr(32),$chr(45),$chr(32),$date,$chr(32),$chr(45),$chr(32),$time,$chr(93))
  write $+(greenwalllogs,$replace($date,$chr(47),$chr(45)),$chr(45),alert.txt) Origine : $getaddress($hget(%c,from))
  write $+(greenwalllogs,$replace($date,$chr(47),$chr(45)),$chr(45),alert.txt) Provenance : $getaddress($hget(%c,coming))
  write $+(greenwalllogs,$replace($date,$chr(47),$chr(45)),$chr(45),alert.txt) Port : $getport($hget(%c,coming))
  write $+(greenwalllogs,$replace($date,$chr(47),$chr(45)),$chr(45),alert.txt) PID : $hget(%c,pid) }
  
  did -ra $+(newalert,$dialog(0)) 2 $mid($hget(%c,from),1,$calc($pos($hget(%c,from),$chr(58),1) -1))
  did -ra $+(newalert,$dialog(0)) 4 $mid($hget(%c,coming),1,$calc($pos($hget(%c,coming),$chr(58),1) -1)) 
  did -ra $+(newalert,$dialog(0)) 7 $getport($hget(%c,coming))
  if $hget(%c,state) { did -ra $+(newalert,$dialog(0)) 10 $upper($hget(%c,state)) } 
  if $hget(%c,pid) { did -ra $+(newalert,$dialog(0)) $iif($hget(%c,pid) == established,10,9) $hget(%c,pid) }
  if $readini(greenwallpreferences.ini,preferences,autokick) && $readini(greenwallpreferences.ini,preferences,autokickdelay) isnum && $readini(greenwallpreferences.ini,preferences,autokickdelay) > 0 && $readini(greenwallpreferences.ini,preferences,autokickdelay) < 100 { 
  if $readini(greenwallpreferences.ini,preferences,sendalert) { quietmail -f alert@greenwall.net -t $readini(greenwallpreferences.ini,preferences,smtpto) -u Greenwall Alerte $fulldate -m $sendalert.message.a n $sendalert.message.b n n $sendalert.message.c n $sendalert.message.d n $sendalert.message.e n $sendalert.message.f n $sendalert.message.g -s $+($readini(greenwallpreferences.ini,preferences,smtpserver),$chr(58),$readini(greenwallpreferences.ini,preferences,smtpport)) $iif($readini(greenwallpreferences.ini,preferences,smtpuser),-o tls=yes -o $+(username=,$readini(greenwallpreferences.ini,preferences,smtpuser)) -o $+(password=,$readini(greenwallpreferences.ini,preferences,smtpmdp)) -o timeout=15)  } 
  $+(.timer,$did($dname,4)) 1 $readini(greenwallpreferences.ini,preferences,autokickdelay) cmd taskkill /t /pid $did($dname,9) /f 
  $+(.timer,close,$did($dname,4)) 1 $readini(greenwallpreferences.ini,preferences,autokickdelay) dialog -x $dname } 
}

on 1:dialog:newalert*:close:0:if $calc($dialog(0) -1) == 0 { splay stop } | $+(.timer,close,$did($dname,4)) off

on 1:dialog:newalert*:sclick:*:{ 
  var %odns $dname
  if $did == 14 || $did == 15 { 
  var %na $calc($ini($+(greenwall,$iif($did == 14,green,black),.ini),$iif($did == 14,green,black),0) +1) 
  writeini $+(greenwall,$iif($did == 14,green,black),.ini) $iif($did == 14,green,black) %na $did($dname,4) 
  writeini $+(greenwall,$iif($did == 14,green,black),.ini) Date %na $fulldate 
  if $did == 15 { cmd taskkill /t /pid $did($dname,9) /f } 
  $+(.timer,close,$did($dname,4)) off | $+(.timer,$did($dname,4)) off
  if $dialog(%odns) { dialog -x %odns | splay stop } }
  
  if $did == 16 { cmd taskkill /t /pid $did($dname,9) /f | $+(.timer,$did($dname,4)) off | $+(.timer,close,$did($dname,4)) off | dialog -x $dname }
  if $did == 19 { open chooseadapter | did -ra chooseadapter 4 Activer | did -b chooseadapter 5 }
  if $did == 20 { run $+(http://whois.domaintools.com/,$did($dname,4)) }
  
  if $did == 17 { 
  if $readini(greenwallpreferences.ini,preferences,portadd) { writeini greenwallgreen.ini ports $calc($ini(greenwallgreen.ini,ports,0) +1) $did($dname,7) | dialog -x $dname | goto jump03 }
  %pa = $did($dname,7) | open portautorisation 
  : jump03 }
  
  if $did == 18 { 
  if $readini(greenwallpreferences.ini,preferences,defaultadapter) isnum { netoff | goto jump01 }
  open chooseadapter 
  : jump01
  }
}

;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;

on 1:dialog:chooseadapter:sclick:*:{
  if $did == 3 { run greenwalladapter.bat }  
  if $did == 4 && $did(chooseadapter,2) isnum { 
  if $did(chooseadapter,4) == Désactiver { netoff | if $did(chooseadapter,5).state { writeini greenwallpreferences.ini preferences defaultadapter $did(chooseadapter,2) } | dialog -x chooseadapter } 
  if $did(chooseadapter,4) == Activer { cmd wmic path win32_networkadapter where $+(index=,$did(chooseadapter,2)) call enable | .timer 1 2 cmd ipconfig /renew | dialog -x chooseadapter } 
  }
}

;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;

on 1:dialog:portautorisation:init:0:did -ra portautorisation 1 Attention le port : %pa | unset %pa

on 1:dialog:portautorisation:sclick:*:{
  if $did == 4 { 
  writeini greenwallgreen.ini ports $calc($ini(greenwallgreen.ini,ports,0) +1) $getallnum($did(portautorisation,1)) 
  if $did(portautorisation,7).state { writeini greenwallpreferences.ini preferences portadd 1 } | dialog -x portautorisation }

  if $did == 6 { dialog -x portautorisation }
}

;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;

on 1:dialog:startgw:init:0:{
  if $check.ssl { open sslgw }
  did -b startgw $iif($timer(analyse),1,2) | did -ra startgw 3 Status - $iif($timer(analyse),ON,OFF) 
  if !$exists(greenwalllogs) { mkdir greenwalllogs } | if $exists(greenwalltmp.ini) { .remove greenwalltmp.ini }
}

on 1:dialog:startgw:sclick:*:{
  if $did == 1 { greenwall | did -e startgw 2 | did -b startgw 1 | did -ra startgw 3 Status - ON }
  if $did == 2 { .timeranalyse off | did -b startgw 2 | did -e startgw 1 | did -ra startgw 3 Status - OFF }
  if $did == 4 { open optiongw | dialog -x startgw } 
  if $did == 5 { openconsole | beep 2 }
  if $did == 6 { open logsgw } 
}

;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;

on 1:dialog:optiongw:sclick:*:{
  if $did == 1 && $did(optiongw,1).state { writeini greenwallpreferences.ini preferences onboot 1 | cmd reg add HKCUSoftwareMicrosoftWindowsCurrentVersionRun /v Greenwall /t REG_SZ /d $shortfn($mircexe) }
  if $did == 1 && !$did(optiongw,1).state { remini greenwallpreferences.ini preferences onboot | cmd reg delete HKCUSoftwareMicrosoftWindowsCurrentVersionRun /v Greenwall /f }
  if $did == 2 { $iif($did(optiongw,2).state,writeini,remini) greenwallpreferences.ini preferences logalert 1 }
  if $did == 5 { $iif($did(optiongw,5).state,writeini,remini) greenwallpreferences.ini preferences logconsole 1 }
  if $did == 11 { $iif($did(optiongw,11).state,writeini,remini) greenwallpreferences.ini preferences scanlan 1 }
  if $did == 13 { $iif($did(optiongw,13).state,writeini,remini) greenwallpreferences.ini preferences soundon 1 }
  if $did == 19 || $did == 22 || $did == 24 { open $replace($did,19,listeverte,22,listenoir,24,listeports) }
  if $did == 25 { dialog -x optiongw | open startgw }
  if $did == 27 { open smtpinfo }
  if $did == 7 { 
  if $did(optiongw,7).state { writeini greenwallpreferences.ini preferences autokick 1 | writeini greenwallpreferences.ini preferences autokickdelay 30 }
  did -r optiongw 8 | if !$did(optiongw,7).state { .remini greenwallpreferences.ini preferences autokick | .remini greenwallpreferences.ini preferences autokickdelay } 
  }
}

on 1:start:if $readini(greenwallpreferences.ini,preferences,onboot) { greenwall }

on 1:dialog:optiongw:init:0:{
  if $readini(greenwallpreferences.ini,preferences,onboot) { did -c optiongw 1 }
  if $readini(greenwallpreferences.ini,preferences,logalert) { did -c optiongw 2 }
  if $readini(greenwallpreferences.ini,preferences,logconsole) { did -c optiongw 5 }
  if $readini(greenwallpreferences.ini,preferences,autokick) { did -c optiongw 7 }
  if $readini(greenwallpreferences.ini,preferences,autokickdelay) isnum { did -ra optiongw 8 $readini(greenwallpreferences.ini,preferences,autokickdelay) }
  if $readini(greenwallpreferences.ini,preferences,scandelay) isnum { did -ra optiongw 16 $readini(greenwallpreferences.ini,preferences,scandelay) }
  if $readini(greenwallpreferences.ini,preferences,scanlan) { did -c optiongw 11 }
  if $readini(greenwallpreferences.ini,preferences,soundon) { did -c optiongw 13 } 
}

on 1:dialog:optiongw:edit:*: {
  if $did == 8 && $did(optiongw,7).state && $did(optiongw,8) isnum { .timersaveopt1 1 2 writeini greenwallpreferences.ini preferences autokickdelay $did(optiongw,8) }
  if $did == 16 && $did(optiongw,16) isnum && $did(optiongw,16) > 14 { delayrestart }
}

;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;

on 1:dialog:listeverte:init:0:did -h listeverte 5,6 | var %lv 1 | while %lv <= $ini(greenwallgreen.ini,green,0) { did -a listeverte 1 $readini(greenwallgreen.ini,green,%lv) - $readini(greenwallgreen.ini,date,%lv) | inc %lv }

on 1:dialog:listeverte:sclick:*:{ 
  if $did == 3 && $did(listeverte,1).sel { 
  if $exists(greenwalltmp.ini) { .remove greenwalltmp.ini }
  var %sellv $did(listeverte,1).sel | did -d listeverte 1 %sellv
  
  if !$did(listeverte,1).lines { .remini greenwallgreen.ini green | .remini greenwallgreen.ini date | goto jump05 }
  
  if $did(listeverte,1).lines == 1 { 
  .remini greenwallgreen.ini green | .remini greenwallgreen.ini date 
  writeini greenwallgreen.ini green 1 $left($did(listeverte,1,1),$calc($pos($did(listeverte,1,1),$chr(45),1) -2))
  writeini greenwallgreen.ini date 1 $mid($did(listeverte,1,1),$calc($pos($did(listeverte,1,1),$chr(45),1) +2)) | goto jump05 }
  
  var %xlv 1 | while %xlv <= $did(listeverte,1).lines { writeini greenwalltmp.ini green %xlv $left($did(listeverte,1,%xlv),$calc($pos($did(listeverte,1,%xlv),$chr(45),1) -2)) | inc %xlv }  
  var %xlv2 1 | while %xlv2 <= $did(listeverte,1).lines { writeini greenwalltmp.ini date %xlv2 $mid($did(listeverte,1,%xlv2),$calc($pos($did(listeverte,1,%xlv2),$chr(45),1) +2)) | inc %xlv2 } 
  .remini greenwallgreen.ini green | .remini greenwallgreen.ini date 
  var %xlv3 1 | while %xlv3 <= $ini(greenwalltmp.ini,green,0) { writeini greenwallgreen.ini green %xlv3 $readini(greenwalltmp.ini,green,%xlv3) | inc %xlv3 }
  var %xlv4 1 | while %xlv4 <= $ini(greenwalltmp.ini,date,0) { writeini greenwallgreen.ini date %xlv4 $readini(greenwalltmp.ini,date,%xlv4) | inc %xlv4 } 
  .timer 1 2 .remove greenwalltmp.ini | if $did(listeverte,1).lines { did -c listeverte 1 $iif(%sellv == 1,1,$calc(%sellv -1)) }
  : jump05
  }
  
  if $did == 4 && !$did(listeverte,5).visible { .timerlv1 1 1 did -v listeverte 5,6 | .timerlv2 1 2 did -h listeverte 5,6 | .timerlv3 1 3 did -v listeverte 5,6 }
  
  if $did == 6 && $remove($did(listeverte,5),$chr(46)) isnum && $count($did(listeverte,5),$chr(46)) == 3 && !$check.exists(listeverte) { 
  writeini greenwallgreen.ini green $calc($ini(greenwallgreen.ini,green,0) +1) $did(listeverte,5) 
  writeini greenwallgreen.ini date $calc($ini(greenwallgreen.ini,date,0) +1) $fulldate
  did -a listeverte 1 $did(listeverte,5) - $readini(greenwallgreen.ini,date,$ini(greenwallgreen.ini,date,0)) | did -r listeverte 5 | beep 3 }
  
  if $did == 7 && $did(listeverte,1).sel { run $+(http://whois.domaintools.com/,$left($did(listeverte,1,$did(listeverte,1).sel),$calc($pos($did(listeverte,1,$did(listeverte,1).sel),$chr(45),1) -2))) }
} 

on 1:dialog:listeverte:close:0:.timerlv* off

;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;

on 1:dialog:listenoir:init:0:did -h listenoir 5,6 | var %ln 1 | while %ln <= $ini(greenwallblack.ini,black,0) { did -a listenoir 1 $readini(greenwallblack.ini,black,%ln) - $readini(greenwallblack.ini,date,%ln) | inc %ln }

on 1:dialog:listenoir:sclick:*:{ 
  if $did == 3 && $did(listenoir,1).sel {  
  if $exists(greenwalltmpn.ini) { .remove greenwalltmpn.ini }  
  var %selln $did(listenoir,1).sel  | did -d listenoir 1 $did(listenoir,1).sel 
  
  if !$did(listenoir,1).lines { .remini greenwallblack.ini black | .remini greenwallblack.ini date | goto jump06 }
  
  if $did(listenoir,1).lines == 1 { 
  .remini greenwallblack.ini black | .remini greenwallblack.ini date 
  writeini greenwallblack.ini black 1 $left($did(listenoir,1,1),$calc($pos($did(listenoir,1,1),$chr(45),1) -2))
  writeini greenwallblack.ini date 1 $mid($did(listenoir,1,1),$calc($pos($did(listenoir,1,1),$chr(45),1) +2)) | goto jump06 }
  
  var %xlvn 1 | while %xlvn <= $did(listenoir,1).lines { writeini greenwalltmpn.ini black %xlvn $left($did(listenoir,1,%xlvn),$calc($pos($did(listenoir,1,%xlvn),$chr(45),1) -2)) | inc %xlvn }  
  var %xlv2n 1 | while %xlv2n <= $did(listenoir,1).lines { writeini greenwalltmpn.ini date %xlv2n $mid($did(listenoir,1,%xlv2n),$calc($pos($did(listenoir,1,%xlv2n),$chr(45),1) +2)) | inc %xlv2n } 
  .remini greenwallblack.ini black | .remini greenwallblack.ini date 
  var %xlv3n 1 | while %xlv3n <= $ini(greenwalltmpn.ini,black,0) { writeini greenwallblack.ini black %xlv3n $readini(greenwalltmpn.ini,black,%xlv3n) | inc %xlv3n }
  var %xlv4n 1 | while %xlv4n <= $ini(greenwalltmpn.ini,date,0) { writeini greenwallblack.ini date %xlv4n $readini(greenwalltmpn.ini,date,%xlv4n) | inc %xlv4n } 
  .timer 1 2 .remove greenwalltmpn.ini | if $did(listenoir,1).lines { did -c listenoir 1 $iif(%selln == 1,1,$calc(%selln -1)) }
  : jump06
  }
  
  if $did == 4 && !$did(listenoir,5).visible { .timerln1 1 1 did -v listenoir 5,6 | .timerln2 1 2 did -h listenoir 5,6 | .timerln3 1 3 did -v listenoir 5,6 } 
  
  if $did == 6 && $remove($did(listenoir,5),$chr(46)) isnum && $count($did(listenoir,5),$chr(46)) == 3 && !$check.exists(listenoir) { 
  writeini greenwallblack.ini black $calc($ini(greenwallblack.ini,black,0) +1) $did(listenoir,5) 
  writeini greenwallblack.ini date $calc($ini(greenwallblack.ini,date,0) +1) $fulldate
  did -a listenoir 1 $did(listenoir,5) - $readini(greenwallblack.ini,date,$ini(greenwallblack.ini,date,0)) | did -r listenoir 5 | beep 3 }
  
  if $did == 7 && $did(listenoir,1).sel { run $+(http://whois.domaintools.com/,$left($did(listenoir,1,$did(listenoir,1).sel),$calc($pos($did(listenoir,1,$did(listenoir,1).sel),$chr(45),1) -2))) }
}
    
on 1:dialog:listenoir:close:0:.timerln* off

;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;

on 1:dialog:listeports:init:0:did -h listeports 5,6 | var %lp 1 | while %lp <= $ini(greenwallgreen.ini,ports,0) { did -a listeports 1 $readini(greenwallgreen.ini,ports,%lp) | inc %lp }

on 1:dialog:listeports:sclick:*:{ 
  if $did == 3 && $did(listeports,1).sel {  
  if $exists(greenwalltmpp.ini) { .remove greenwalltmpp.ini }  
  var %sellp $did(listeports,1).sel | did -d listeports 1 %sellp
  var %xlvp 1 | while %xlvp <= $did(listeports,1).lines { writeini greenwalltmpp.ini ports %xlvp $did(listeports,1,%xlvp) | inc %xlvp }  
  .remini greenwallgreen.ini ports | var %xlv2p 1 | while %xlv2p <= $ini(greenwalltmpp.ini,ports,0) { writeini greenwallgreen.ini ports %xlv2p $readini(greenwalltmpp.ini,ports,%xlv2p) | inc %xlv2p }
  .timer 1 2 .remove greenwalltmpp.ini | did -c listeports 1 $iif(%sellp == 1,1,$calc(%sellp -1)) }
  
  if $did == 4 && !$did(listeports,5).visible { .timerlp1 1 1 did -v listeports 5,6 | .timerlp2 1 2 did -h listeports 5,6 | .timerlp3 1 3 did -v listeports 5,6 }

  if $did == 6 && $did(listeports,5) isnum && $did(listeports,5) > 0 && $did(listeports,5) < 65536 && !$check.exists(listeports) { 
  writeini greenwallgreen.ini ports $calc($ini(greenwallgreen.ini,ports,0) +1) $did(listeports,5) 
  did -a listeports 1 $did(listeports,5) | did -r listeports 5 | beep 3 }
} 

on 1:dialog:listeports:close:0:.timerlp* off

;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;

on 1:dialog:admingw:sclick:*:{
  if $did == 5 { dialog -x admingw }
  if $did == 6 { cmd shutdown /l }
  if $did == 7 { run greenwalladmin.bat }
  if $did == 8 { $iif($did(admingw,8).state,.writeini,.remini) greenwallpreferences.ini preferences adminshow 1 }
}  

;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;

on 1:dialog:logsgw:init:0:load.logs

on 1:dialog:logsgw:sclick:*:{
 if $did == 4 && $crc($+(greenwalllogs,$did(logsgw,1,$did(logsgw,1).sel))) { 
 var %logs3 $did(logsgw,1,$did(logsgw,1).sel) | if $file($+(greenwalllogs,%logs3)).size > 51199 { did -a logsgw 2 Logs - Fichier trop large pour cette fenêtre | run $+(greenwalllogs,%logs3) | goto jump07 }
 did -r logsgw 1 | var %logs2 1 | if $file($+(greenwalllogs,%logs3)).size > 20479 { did -ra logsgw 2 Logs - En chargement - Merci de patienter }
 while %logs2 <= $lines($+(greenwalllogs,%logs3)) { did -a logsgw 1 $read($+(greenwalllogs,%logs3),%logs2) | inc %logs2 } 
 did -ra logsgw 2 Logs - %logs3 
 : jump07 }
 
 if $did == 5 { did -r logsgw 1 | load.logs | did -ra logsgw 2 Logs }
 if $did == 3 && $did(logsgw,1).sel { quietmail -f logs@greenwall.net -t $readini(greenwallpreferences.ini,preferences,smtpto) -u Greenwall Logs $fulldate -m $log.message.a n $log.message.b -s $+($readini(greenwallpreferences.ini,preferences,smtpserver),$chr(58),$readini(greenwallpreferences.ini,preferences,smtpport)) -a $shortfn($+($mircdirgreenwalllogs,$did(logsgw,1,$did(logsgw,1).sel))) $iif($readini(greenwallpreferences.ini,preferences,smtpuser),-o tls=yes -o $+(username=,$readini(greenwallpreferences.ini,preferences,smtpuser)) -o $+(password=,$readini(greenwallpreferences.ini,preferences,smtpmdp)) -o timeout=15) } 
 if $did == 7 && $did(logsgw,1).sel { var %logssel $did(logsgw,1).sel | .remove $+(greenwalllogs,$did(logsgw,1,$did(logsgw,1).sel)) | did -d logsgw 1 $did(logsgw,1).sel | did -c logsgw 1 $iif(%logssel == 1,1,$calc(%logssel -1)) | beep 1 } 
}

;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;

on 1:dialog:sslgw:sclick:*:{ 
  if $did == 5 { dialog -x sslgw }
  if $did == 6 { cmd shutdown -r -t 10 -c "Redémarrage pour la prise en charge ssl" }
}

;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;

on 1:dialog:smtpinfo:init:0:{
 if $readini(greenwallpreferences.ini,preferences,smtpserver) { did -ra smtpinfo 1 $readini(greenwallpreferences.ini,preferences,smtpserver) }
 if $readini(greenwallpreferences.ini,preferences,smtpmdp) { did -ra smtpinfo 4 $readini(greenwallpreferences.ini,preferences,smtpmdp) }
 if $readini(greenwallpreferences.ini,preferences,smtpport) { did -ra smtpinfo 6 $readini(greenwallpreferences.ini,preferences,smtpport) }
 if $readini(greenwallpreferences.ini,preferences,smtpto) { did -ra smtpinfo 8 $readini(greenwallpreferences.ini,preferences,smtpto) }
 if $readini(greenwallpreferences.ini,preferences,smtpuser) { did -ra smtpinfo 12 $readini(greenwallpreferences.ini,preferences,smtpuser) }
 if $readini(greenwallpreferences.ini,preferences,sendalert) { did -c smtpinfo 14 }
} 



on 1:dialog:smtpinfo:sclick:*:{
 if $did == 11 { open smtpserver }
 if $did == 14 { $iif($did(smtpinfo,14).state,.writeini,.remini) greenwallpreferences.ini preferences sendalert 1 | if !$readini(greenwallpreferences.ini,preferences,androidinfo) { open androidinfo } }
 if $did == 10  { 
 if $did(smtpinfo,1) && $did(smtpinfo,6) isnum && $did(smtpinfo,6) > 0 && $did(smtpinfo,6) < 65536 && $emailvalid($did(smtpinfo,8)) {
 var %smtp 1 | var %smtp2 $addtok(%smtp2,smtpserver-smtpmdp-smtpport-smtpto-smtpuser,45) 
 var %smtp5 1 | while %smtp5 <= 5 { if !$did(smtpinfo,$gettok(%smtp3,%smtp5,45)) { .remini greenwallpreferences.ini preferences $gettok(%smtp2,%smtp5,45) } | inc %smtp5 }
 var %smtp3 $addtok(%smtp3,1-4-6-8-12,45) | while %smtp <= 5 { if $did(smtpinfo,$gettok(%smtp3,%smtp,45)) { writeini greenwallpreferences.ini preferences $gettok(%smtp2,%smtp,45) $did(smtpinfo,$gettok(%smtp3,%smtp,45)) } | inc %smtp } | dialog -x smtpinfo | goto jump08 } 
 did -ra smtpinfo 10 Erreur } 
 : jump08
}

;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;

on 1:dialog:smtpserver:init:0:var %smtp4 1 | while %smtp4 <= $ini(greenwallsmtp.ini,smtp,0) { did -a smtpserver 1 $ini(greenwallsmtp.ini,smtp,%smtp4) | inc %smtp4 } | did -a smtpserver 1 $str($chr(58),3) A titre indicatif seulement | did -a smtpserver 1 $str($chr(58),3) Peut changer ou ne plus être valide
 
on 1:dialog:smtpserver:sclick:3:{
 if $did(smtpserver,1).sel && $dialog(smtpinfo) && $left($did(smtpserver,1,$did(smtpserver,1).sel),1) != $chr(58) { 
 did -ra smtpinfo 1 $getaddress($readini(greenwallsmtp.ini,smtp,$did(smtpserver,1,$did(smtpserver,1).sel))) 
 did -ra smtpinfo 6 $getport($readini(greenwallsmtp.ini,smtp,$did(smtpserver,1,$did(smtpserver,1).sel))) | dialog -x smtpserver }
} 

;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;

on 1:dialog:androidinfo:sclick:5:writeini greenwallpreferences.ini preferences androidinfo 1

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.