⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 service.vb

📁 一款和门禁系统结合的SOAP API 程序
💻 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 + -