Testeur de ports routeur

Programmation d'applications complexes
KrisJNT
Messages : 110
Inscription : ven. 31/oct./2008 16:51

Testeur de ports routeur

Message par KrisJNT »

Salut à tous !
Voici un testeur de ports pour routeur :

general.pb :

Code : Tout sélectionner

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)

MessageRequester("AVERTISSEMENT !", "Il est recommander de n'ouvrir aucun programme utilisant Internet pendant les phases de test, et de laisser les programmes déjà démarrés dans l'été où ils sont. Merci.", #MB_ICONWARNING)

If Not InitNetwork()
  MessageRequester("Erreur fatale.", "Impossible d'initialiser le réseau ! Le programme va se fermer.", #MB_ICONERROR)
  End
EndIf

CreateImage(0, 256, 256)
StartDrawing(ImageOutput(0))
  Box(0, 0, 256, 256, $FFFFFF)
StopDrawing()

IncludeFile "Common.pb"

Open_gui()

Repeat ; Start of the event loop
  
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
  
  GadgetID = EventGadget() ; Is it a gadget event?
  
  EventType = EventType() ; The event type
  
  ;You can place code here, and use the result as parameters for the procedures
  
  If Event = #PB_Event_Gadget
    Select GadgetID
    Case #hy1
      MessageRequester("Information :", "Ceci va démarrer votre navigateur web par défaut.", #MB_ICONINFORMATION)
      RunProgram("http://localiser-ip.com")
      
    Case #hy2
      MessageRequester("A propos", "Développé par SoftAtom. Le site web n'est pas encore ouvert. Plus d'info à pertricot@yahoo.fr")
      
    Case #tcp1
      If CreateNetworkServer(0, Val(GetGadgetText(#port)), #PB_Network_TCP)
        SetGadgetText(#diagS, "Le port spécifié est disponible en mode TCP")
        CloseNetworkServer(0)
      Else
        SetGadgetText(#diagS, "Le port spécifié semble utilisé en mode TCP")
      EndIf
      
    Case #udp1
      If CreateNetworkServer(0, Val(GetGadgetText(#port)), #PB_Network_UDP)
        SetGadgetText(#diagS, "Le port spécifié est disponible en mode UDP")
        CloseNetworkServer(0)
      Else
        SetGadgetText(#diagS, "Le port spécifié semble utilisé en mode UDP")
      EndIf
      
    Case #add
      If Val(GetGadgetText(#portS)) <= Val(GetGadgetText(#portE))
        If GetGadgetState(#udp2)
          AddGadgetItem(#testList, -1, GetGadgetText(#portS)+"-"+GetGadgetText(#portE)+":UDP")
        Else
          AddGadgetItem(#testList, -1, GetGadgetText(#portS)+"-"+GetGadgetText(#portE)+":TCP")
        EndIf
      Else
        MessageRequester("Erreur !", "Le port final doit être supérieur au port de début", #MB_ICONERROR)
      EndIf
      
    Case #rem
      If GetGadgetState(#testList) >= 0
        RemoveGadgetItem(#testList, GetGadgetState(#testList))
      EndIf
      
    Case #go1
      For i = 0 To CountGadgetItems(#testList) - 1
        t$ = GetGadgetItemText(#testList, i)
        portS = Val(Left(t$, FindString(t$, "-", 1)-1))
        portE = Val(Left(Mid(t$, FindString(t$, "-", 1)+1), Len(Mid(t$, FindString(t$, "-", 1)+1))-4))
        If Right(t$, 3) = "TCP" : mode = #PB_Network_TCP : Else : mode = #PB_Network_UDP : EndIf
        AddGadgetItem(#diagM, -1, t$+Chr(10)+"En phase de test...")
        SetGadgetAttribute(#progress, #PB_ProgressBar_Maximum, portE-portS)
        result$ = ""
        For port = portS To portE
          SetGadgetState(#progress, port-portS)
          If Not CreateNetworkServer(0, port, mode)
            result$ + Str(port) + ";"
          Else
            CloseNetworkServer(0)
          EndIf
          WindowEvent()
        Next
        If result$ = ""
          result$ = "Tous les ports sont disponibles.."
        EndIf
        SetGadgetItemText(#diagM, CountGadgetItems(#diagM) - 1, Left(result$, Len(result$)-1), 1)
      Next

    Case #test2
      x = 0
      y = 0
      CreateImage(1, 256, 256)
      For i = 0 To 65536
        color = 0
        If Not CreateNetworkServer(0, i, #PB_Network_TCP)
          color = $FF
          tcp$ = "Utilisé"
        Else
          CloseNetworkServer(0)
          tcp$ = "Libre"
        EndIf
        If Not CreateNetworkServer(0, i, #PB_Network_UDP)
          If color = $FF : color = $FFFFFF : Else : color = $FF8800 : EndIf
          udp$ = "Utilisé"
        Else
          CloseNetworkServer(0)
          udp$ = "Libre"
        EndIf
        WindowEvent()
        StartDrawing(ImageOutput(1))
          DrawImage(ImageID(0), 0, 0)
          Plot(x, y, color)
        StopDrawing()
        StartDrawing(ImageOutput(0))
          DrawImage(ImageID(1), 0, 0)
        StopDrawing()
        SetGadgetState(#progressIMG, ImageID(1))
        x + 1
        If x = 256 : x = 0 : y + 1 : EndIf
        If tcp$ = "Utilisé" Or udp$ = "Utilisé"
          id = CreateImage(#PB_Any, 16, 16)
          StartDrawing(ImageOutput(id))
            Box(0, 0, 16, 16, 0)
            Box(1, 1, 14, 14, color)
          StopDrawing()
          AddGadgetItem(#diagE, -1, Str(i)+Chr(10)+tcp$+Chr(10)+udp$, ImageID(id))
        EndIf
      Next
EndSelect
    
  EndIf
  
Until Event = #PB_Event_CloseWindow ; End of the event loop

End
Common.pb :

Code : Tout sélectionner

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)


;- Window Constants
;
Enumeration
  #gui
EndEnumeration

;- Gadget Constants
;
Enumeration
  #panel
  #hy1
  #hy2
  #Text_0
  #port
  #tcp1
  #udp1
  #diagS
  #testList
  #Text_2
  #portS
  #Text_3
  #portE
  #tcp2
  #udp2
  #add
  #rem
  #progress
  #go1
  #diagM
  #progressIMG
  #test2
  #diagE
EndEnumeration

;- StatusBar Constants
;
Enumeration
  #status
EndEnumeration


;- Image Plugins

Procedure Open_gui()
  If OpenWindow(#gui, 442, 93, 340, 400, "Port Tester",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )

      If CreateGadgetList(WindowID(#gui))
        HyperLinkGadget(#hy1, 0, 370, 170, 20, "Connaître mon IP", RGB(0, 0, 0))
        HyperLinkGadget(#hy2, 170, 370, 170, 20, "A propos...", RGB(0, 0, 0))
        
        ;-
        PanelGadget(#panel, 0, 0, 340, 370)
        AddGadgetItem(#panel, -1, "Diagnostic simple")
        TextGadget(#Text_0, 8, 8, 90, 20, "Numéro du port :")
        StringGadget(#port, 108, 8, 220, 20, "", #PB_String_Numeric)
        ButtonGadget(#tcp1, 8, 38, 140, 30, "Test TCP")
        ButtonGadget(#udp1, 188, 38, 140, 30, "Test UDP")
        TextGadget(#diagS, 8, 78, 320, 50, "Tests non effectués.", #PB_Text_Border)
        AddGadgetItem(#panel, -1, "Diagnostic manuel")
        ListViewGadget(#testList, 8, 8, 110, 70)
        TextGadget(#Text_2, 128, 8, 130, 20, "Numéro du port de début  :")
        StringGadget(#portS, 258, 8, 70, 20, "", #PB_String_Numeric)
        TextGadget(#Text_3, 128, 38, 130, 20, "Numéro du port de fin  :")
        StringGadget(#portE, 258, 38, 70, 20, "", #PB_String_Numeric)
        OptionGadget(#tcp2, 128, 68, 70, 20, "Test TCP")
        OptionGadget(#udp2, 128, 88, 70, 20, "Test UDP")
        ButtonGadget(#add, 228, 68, 100, 40, "Ajouter")
        ButtonGadget(#rem, 8, 78, 110, 30, "Retirer")
        ProgressBarGadget(#progress, 8, 148, 320, 20, 0, 0)
        ButtonGadget(#go1, 8, 118, 320, 30, "Lancer le test")
        
        ;-
        ListIconGadget(#diagM, 8, 178, 320, 160, "Test effectué", 100)
        AddGadgetColumn(#diagM, 1, "Ports utilisés", 216)
        AddGadgetItem(#panel, -1, "Diagnostic complet")
        ImageGadget(#progressIMG, 8, 78, 260, 260, ImageID(0), #PB_Image_Border)
        ButtonGadget(#test2, 288, 78, 40, 260, "Test", #PB_Button_MultiLine)
        
        ;-
        ListIconGadget(#diagE, 8, 8, 320, 60, "Port", 100)
        AddGadgetColumn(#diagE, 1, "Résultat TCP", 100)
        AddGadgetColumn(#diagE, 2, "Résultat UDP", 100)
        CloseGadgetList()
        
      EndIf
    EndIf
EndProcedure
Voila !
Bons tests !

:D

KrisJNT