📄 service.vb
字号:
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
' SQL Server
Imports System.Data.SqlClient
' BLOWFISH
Imports BlowfishNET
Imports BlowfishNET.BlowfishCFB
' Access
Imports System.Data.OleDb
<WebService(Namespace:="http://www.hectrix.com/ACTAtekAgent.service")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<SoapDocumentService(RoutingStyle:=SoapServiceRoutingStyle.RequestElement)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class Service
Inherits System.Web.Services.WebService
Implements IACTAtekAgent
Public Function encryptLog(ByVal encryptedLog() As Byte, ByVal photo As PhotoPart) As String Implements IACTAtekAgent.encryptLog
' CREATE IMPLENTAION CODE HERE
' Handles a single encyrpted log
DeCryptLog(encryptedLog, "1234")
Return ""
End Function
Public Function encryptLogMultiple(ByVal encryptedLogs() As eLog) As String Implements IACTAtekAgent.encryptLogMultiple
' CREATE IMPLENTAION CODE HERE
' Handle an array of encyrpted log
Dim no_logs, i As Integer
no_logs = encryptedLogs.Length
For i = 0 To no_logs - 1
DeCryptLog(encryptedLogs(i).encryptedLog, "1234")
Next
Return ""
End Function
Public Function log(ByVal magic As String, ByVal unencryptedLog As Log) As String Implements IACTAtekAgent.log
' CREATE IMPLENTAION CODE HERE
' Currently not used by the ACTAtek
Return ""
End Function
Public Function sync(ByVal magic As String, ByVal registrationID As String) As String Implements IACTAtekAgent.sync
' CREATE IMPLENTAION CODE HERE
' Currently not used by the ACTAtek
Return ""
End Function
'#################################################################################
'# Need access to Blowfish Encyrption/Decryption algorthim
'# Make DLL reference to BlowfishNET.dll
'#################################################################################
Private Sub DeCryptLog(ByVal encryptedLog() As Byte, ByVal magic As String)
' Blowfish CFB used to decrypt the log
Dim decryptedText As String
Dim decryptedLog(encryptedLog.Length) As Byte
' Key - Agent Magic
Dim key() As Byte = Encoding.UTF8.GetBytes(magic)
Dim bfCFB As New BlowfishCFB(key, 0, key.Length)
bfCFB.Decrypt(encryptedLog, 0, decryptedLog, 0, encryptedLog.Length)
' Decrypted log comes back as Tab delimited text
decryptedText = Encoding.UTF8.GetString(decryptedLog)
Dim c As Char = vbTab
Dim Log As New AgentLog
Dim logArray() As String
Dim TS As Long
Try
' Seperate the log items into an array
logArray = decryptedText.Split(c)
' Timestamp returned is UTC
TS = CLng(logArray(0)) ' 0. Log Time stamp
Log.TimeStamp = ConvertTime(TS) ' Need to convert Long back into a datetime
Log.UserID = logArray(1) ' 1. User ID
Log.EventTrigger = logArray(2) ' 2. Event
Log.OriginalSN = logArray(3) ' 3. Serial Number of terminal where log origianlly came from
Log.SenderSN = logArray(4) ' 4. Serial Number of termianl where log was sent from
Log.Remark = logArray(5) ' 5. Log Remark
Log.AccessMethod = logArray(6) ' 6. Log access method
Catch ex As Exception
'InsertLogs(ex.ToString)
End Try
Try
InsertLogs2Access(Log)
Catch ex As Exception
'InsertLogs(ex.ToString)
End Try
End Sub
Public Function ConvertTime(ByVal timeAsLong As Long) As Date
Dim time As Double
time = Convert.ToDouble(timeAsLong)
Dim baseTime As Date = New Date(1970, 1, 1) ' Unix epoch 01 01 1970 00:00:00
Dim res As Date
res = baseTime + TimeSpan.FromSeconds(time) ' Universal Time
res = res.ToLocalTime ' Convert to Local Timezone of PC
Return res
End Function
Public Sub InsertLogs2Access(ByRef log As AgentLog)
'insert Log into test access DB
Dim con As New System.Data.OleDb.OleDbConnection
Dim cmd As System.Data.OleDb.OleDbCommand
Dim SQL As String
Dim P(6) As OleDbParameter
Dim db_Path As String
db_Path = App_Path() & "TestData.mdb"
Try
con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = " & db_Path
con.Open()
SQL = "INSERT INTO ACTAtek_Logs (Time_Stamp,User_ID,"
SQL = SQL & "Event_Trigger,Original_SN,Sender_SN,Remark,Access_Method)"
SQL = SQL & " VALUES ("
SQL = SQL & "@0_Time"
SQL = SQL & ",@1_UserID"
SQL = SQL & ",@2_Trig"
SQL = SQL & ",@3_SNo"
SQL = SQL & ",@4_SNs"
SQL = SQL & ",@5_remark"
SQL = SQL & ",@6_method"
SQL = SQL & ")"
cmd = New OleDbCommand(SQL)
cmd.Connection = con
'Create the SQL parameter
P(0) = New OleDbParameter("@0_Time", OleDbType.Date)
P(1) = New OleDbParameter("@1_UserID", OleDbType.VarChar, 100)
P(2) = New OleDbParameter("@2_Trig", OleDbType.VarChar, 100)
P(3) = New OleDbParameter("@3_SNo", OleDbType.VarChar, 100)
P(4) = New OleDbParameter("@4_SNs", OleDbType.VarChar, 100)
P(5) = New OleDbParameter("@5_remark", OleDbType.VarChar, 100)
P(6) = New OleDbParameter("@6_method", OleDbType.VarChar, 100)
'' Assign the values
P(0).Value = log.TimeStamp
P(1).Value = log.UserID
P(2).Value = log.EventTrigger
P(3).Value = log.OriginalSN
P(4).Value = log.SenderSN
P(5).Value = log.Remark
P(6).Value = log.AccessMethod
cmd.Parameters.Add(P(0))
cmd.Parameters.Add(P(1))
cmd.Parameters.Add(P(2))
cmd.Parameters.Add(P(3))
cmd.Parameters.Add(P(4))
cmd.Parameters.Add(P(5))
cmd.Parameters.Add(P(6))
cmd.ExecuteNonQuery()
Catch ex As Exception
'InsertLogs(ex.ToString)
Finally
con.Close()
End Try
End Sub
Public Function App_Path() As String
' Application path
Return System.AppDomain.CurrentDomain.BaseDirectory()
End Function
'Public Sub InsertLogs(ByVal DecryptLog As String)
' 'insert into test SQL server Database
' Dim con As New SqlConnection
' Dim cmd As SqlCommand
' Dim SQL As String
' con = New SqlConnection("server=78.105.98.200;database=Testdata;uid=jian;pwd=hectrix123")
' con.Open()
' Try
' SQL = "INSERT INTO AgentLog1 "
' SQL = SQL & "(LogTime,DecryptLog)"
' SQL = SQL & " VALUES " & "('" & Now.ToString & "','" & DecryptLog & "')"
' cmd = New SqlCommand(SQL, con)
' cmd.ExecuteNonQuery()
' Catch ex As Exception
' Finally
' con.Close()
' End Try
'End Sub
End Class
Public Class AgentLog
Private _TimeStamp As Date
Private _UserID As String
Private _EventTrigger As String
Private _OriginalSN As String
Private _SenderSN As String
Private _Remark As String
Private _AccessMethod As String
Private _Photo As Byte()
Public Property TimeStamp() As Date
Get
Return _TimeStamp
End Get
Set(ByVal value As Date)
_TimeStamp = value
End Set
End Property
Public Property UserID() As String
Get
Return _UserID
End Get
Set(ByVal value As String)
_UserID = value
End Set
End Property
Public Property EventTrigger() As String
Get
Return _EventTrigger
End Get
Set(ByVal value As String)
_EventTrigger = value
End Set
End Property
Public Property OriginalSN() As String
Get
Return _OriginalSN
End Get
Set(ByVal value As String)
_OriginalSN = value
End Set
End Property
Public Property SenderSN() As String
Get
Return _SenderSN
End Get
Set(ByVal value As String)
_SenderSN = value
End Set
End Property
Public Property Remark() As String
Get
Return _Remark
End Get
Set(ByVal value As String)
_Remark = value
End Set
End Property
Public Property AccessMethod() As String
Get
Return _AccessMethod
End Get
Set(ByVal value As String)
_AccessMethod = value
End Set
End Property
Public Property Photo() As Byte()
Get
Return _Photo
End Get
Set(ByVal value As Byte())
_Photo = value
End Set
End Property
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -