1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
|
Imports System.Security.Cryptography
Imports System.text
Imports System.Net.sockets
Imports System
Imports System.Net
Imports System.Threading
Imports Microsoft.VisualBasic
Imports System.ServiceProcess.ServiceBase
Imports Microsoft.Win32
Imports System.Windows.forms
'----------------------------------------------
Public Class EssWitchService
'--------------------------------- Declaration de variables -----------------------------------
Public reception As New Threading.ManualResetEvent(False)
Dim toto As String = ""
Private listener As Net.Sockets.TcpListener
Const PORT_NUM As Integer = 1039
Dim EndPoint As Net.IPEndPoint
Dim regg As String = ""
'---Fonction au demarrage du service :Lancement du thread correspondant à la fonction "General" et qui va tourner en boucle---
Protected Overrides Sub OnStart(ByVal args() As String)
Dim thread As New System.Threading.Thread(AddressOf General)
thread.IsBackground = True
thread.Start()
End Sub
'----------------------------Thread qui va tourner en boucle et attendre une connexion d'un client-------------------
Public Sub General()
Try
Dim ipLocale As Long = 16777343
EndPoint = New Net.IPEndPoint(ipLocale, 1039)
Dim listener As New TcpListener(EndPoint)
listener.Start()
While True
reception.Reset()
listener.BeginAcceptTcpClient(New AsyncCallback(AddressOf AcceptCallback), listener)
reception.WaitOne()
End While
Catch ex As Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
End Sub
'---------------------------------Fonction qui sera lancée lorsque qu'un client va se connecter--------------------------
Public Sub AcceptCallback(ByVal ar As IAsyncResult)
Try
Dim bit(1024) As Byte
Dim biit(1024) As Byte
Dim listener As TcpListener = CType(ar.AsyncState, TcpListener)
Dim client As TcpClient = listener.EndAcceptTcpClient(ar)
Dim stream As NetworkStream = client.GetStream()
stream.Read(bit, 0, bit.Length)
Dim valeurrecue As String = System.Text.Encoding.ASCII.GetString(bit)
Dim cle As String = getMd5Hash()
Dim tailleCle As Integer = cle.Length
Dim tailleVal As Integer = valeurrecue.Length
Dim tailleV As Integer = tailleVal - tailleCle
Dim key As String = valeurrecue.Substring(0, tailleCle)
Dim val1 As String = valeurrecue.Substring(tailleCle, tailleV)
Dim longueur As Integer = valeurrecue.Length()
'Dim val2 As String = val1.Trim()
'Dim log As log4Raid
'log = New log4Raid("C:\User\U349428\Documents\Visual Studio 2005\Projects\EssWitchService\log", "log")
'log.EcrireLog("valeur2", val2 + "p")
Dim cc As Integer = val1.IndexOf("#")
Dim val2 As String = val1.Substring(0, cc)
Dim ok As Boolean = False
If key.Equals(cle) Then
ok = True
End If
If ok Then
BG1.RunWorkerAsync(val2)
biit = System.Text.Encoding.ASCII.GetBytes(toto.ToCharArray)
stream.Write(biit, 0, biit.Length)
End If
reception.Set()
Catch ex As Exception
End Try
End Sub
'--------------Fonction de codage--------------------------------------------
Function getMd5Hash() As String
Dim ordi As String = System.Environment.MachineName
Dim acrypt As String = ordi
Dim md5Hasher As MD5 = MD5.Create()
Dim data As Byte() = md5Hasher.ComputeHash(Encoding.Default.GetBytes(acrypt))
Dim sBuilder As New StringBuilder()
Dim i As Integer
For i = 0 To data.Length - 1
sBuilder.Append(data(i).ToString("x2"))
Next i
Return sBuilder.ToString()
End Function
'----------------- Fonction correspondant à l'arret du service ---------------------------
Protected Overrides Sub OnStop()
listener.Stop()
End Sub
Private Sub BG1_Work(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BG1.DoWork
Dim arg As String = CStr(e.Argument)
Dim retour As String
If (arg = "activ") Then
retour = "on"
e.Result = CStr(retour)
ElseIf (arg = "desactiv") Then
retour = "off"
e.Result = CStr(retour)
Else
retour = "erreur"
e.Result = CStr(retour)
End If
End Sub
Private Sub BG1_RunWorkerCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BG1.RunWorkerCompleted
Dim Resulte As String = CStr(e.Result)
Dim renvoie As String
Dim log As log4Raid
log = New log4Raid("C:\User\U349428\Documents\Visual Studio 2005\Projects\EssWitchService\log", "log")
If (Resulte = "on") Then
Try
setValeurEssAuto("true")
Catch ex As Exception
log.EcrireLog("exception", ex.Message)
End Try
renvoie = "activee"
ElseIf (Resulte = "off") Then
Try
setValeurEssAuto("false")
Catch ex As Exception
log.EcrireLog("exception", ex.Message)
End Try
renvoie = "desactivee"
Else
renvoie = "erreur"
End If
toto = renvoie
End Sub
End Class |
Partager