Membuat aktivasi dongle bagian akhir – 1 dongle untuk semua

Posted by Kamarudin • 2 minute read • Comments

Oke akhirnya kita sudah memutuskan untuk membuat proteksi software dengan menggunakan dongle, tetapi kita masih punya 1 masalah lagi yang harus kita selesaikan yaitu kemudahan dalam mengimplementasikan jenis aktivasi ini.

Rencananya software yang kita buat akan diinstall dibeberapa komputer misal 1 server dengan 10 klien, yang jadi pertanyaan dimanakah donglenya akan dipasang ? Di komputer server ? Komputer klien ? Ganti-gantian ? Atau semua komputer akan dipasang dongle :laughing:

Jelas solusi yang terbaik dan tidak akan dibantah klien kita adalah cukup dipasang di komputer server, kalo begitu aplikasi klien harus mempunyai cara untuk mengetahui apakah status dongle di server dipasang/tidak atau donglenya valid/tidak.

Saat ini ada 2 cara yang mungkin bisa kita lakukan :

  1. Status donglenya kita simpan di database, dengan cara ini kita mungkin akan membuat program tambahan yang sifatnya realtime mengecek status dongle kemudian menyimpannya ke database, sehingga hal ini memungkinkan klien mengetahui status terakhir dongle.
  2. Status dongle hanya akan dicek jika ada request dari klien, jelas ini cara yang lebih efektif jadi enggak perlu harus realtime mengecek status dongle dan tentunya hal ini akan lebih menghemat memory.

Baik cara 1 atau 2 tetap mengharuskan kita untuk membuat program tambahan dan karena kita sudah memutuskan untuk menggunakan cara ke 2 otomatis ada sedikit keahlian pemrograman yang harus kita ketahui.

Dan untungnya Anda sudah pernah main-main kesini, sini dan sini tetapi akan lebih MANTEB kalo Anda sudah nyampe kesini dan sini ;-) sehingga untuk membuat aplikasi tambahan tersebut jadi lebih gampang.

1. Aplikasi server

Intinya aplikasi ini hanya menerima koneksi masuk, melakukan pengecekan dongle kemudian memberikan balasanke klien (true|false). Data yang masuk divalidasi terlebih dahulu jika bernilai string “reqStatusDongle” baru diproses.

Private Sub Socket_DataArrival(Index As Integer, ByVal bytesTotal As Long)
    Dim ret             As Boolean

    Dim strData         As String
    Dim statusDongle    As String

    On Error GoTo errHandle

    ' Grab the data from the specified Winsock object, and pass it to the parent.
    Call Socket(Index).GetData(strData)
    DoEvents

    'hanya data dengan string 'reqStatusDongle' yg akan diproses
    If strData = "reqStatusDongle" Then
        If isValidDongle Then
            statusDongle = "true"
        Else
            statusDongle = "false"
        End If

        ret = send(Index, statusDongle) 'kirim status dongle ke klien
    End If

    Exit Sub
errHandle:
   Call Socket(Index).Close
End Sub

Aplikasi server ini akan lebih baik jika dijadikan service dan Anda bisa membaca artikel cara mudah dan gampang membuat aplikasi service dengan VB6, karena dari sekian banyak contoh-contoh membuat service yang beredar di pasaran banyak yang sesat dan menyesatkan. He he he just kidding :)

2. Aplikasi klien

Aplikasi klien ditambahkan 1 form khusus untuk merequest status dongle

Private Sub Form_Load()
    If startConnect("127.0.0.1") Then
        'ingat hanya string 'reqStatusDongle' yang akan diproses oleh server
        If Not send("reqStatusDongle") Then
            MsgBox "Aplikasi Toekang Cek Doengle belum aktif", vbExclamation, "Warning"
            Unload Me
        End If

    Else
        MsgBox "Aplikasi Toekang Cek Doengle belum aktif", vbExclamation, "Warning"
        Unload Me
    End If
End Sub

Private Sub Socket_DataArrival(ByVal bytesTotal As Long)
    Dim dataMasuk   As String

    'On Error Resume Next

    Socket.GetData dataMasuk
    If dataMasuk = "true" Then 'dongle sudah terpasang dan valid
        MsgBox "dongle valid"
        'TODO : tampilkan form utama disini
    Else
        MsgBox "Maaf dongle belum terpasang, aplikasi tidak bisa dilanjutkan", vbExclamation, "Peringatan"
    End If

    Unload Me
End Sub

Oke mungkin itu saja yang bisa saya bahas, sample program bisa didownload disini.

Selamat mencoba :blush:

Comments