Rabu, 09 Oktober 2013

WebMin di ClearOS

Webmin sendiri adalah fasilitas administrasi via website, hampir semua jenis servis, dan berbagai customasi dapat dilakukan oleh webmin. Tentunya : webmin mempermudah mengubah konfigurasi / memanajemen linux yang dulunya dilakukan via konsole melalui ssh.

Di webmin, kita bisa mengkonfigurasi squid dengan tampilan GUI.
berikut cara instal webmin di clearOS

akses dahulu clearOS via putty menggunakan login root

setelah login,

ketik command berikut perbaris (copy paste juga bisa)

wget -c http://download.webmin.com/download/yum/webmin-1.510-1.noarch.rpm
rpm --import http://www.webmin.com/jcameron-key.asc
rpm -ivh webmin-1.510-1.noarch.rpm

setelah selesai, webmin dapat diakses via browser https://ipclearos:10000/

semoga membantu :)

Sumber : http://www.facebook.com/topic.php?uid=102609033133349&topic=12

Monitoring bandwidht

Salah satu aplikasi favorit saya untuk monitoring banwith adalah iftop. berikut cara pemasangannya di clearos


# yum -y install libpcap libpcap-devel ncurses ncurses-devel
# wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz
# tar -zxvf iftop-0.17.tar.gz
# cd iftop-0.17
# ./configure
# make
# make install
selesai... :D
untu mencobanya bisa ketik
# iftop 
 
untuk cara membacanya bisa kita lihat di tulisan di bawah ini 
yang saya tulis ulang dari blog agan http://paidjo.wordpress.com:
 
Untuk pengaturan bisa tekan h

Dan saya biasanya senang menggunakan pengaturan seperti ini. contoh:
 #iftop -i eth1 -P


setelah masuk tekan Shift+L kemudian tekan T
hasilnya akan seperti dibawah ini



kelebihanya nampak terdapat bar putih pemakaian Banwith per IP
  • Warna merah= statik BW/IP saat itu
  • Kuning=menunjukkan nilai dari bar yg bergerak, dari sini akan tau apakah user memakan banwithnya sendiri atau semakin panjang/tinggi dari permintaan di garis bar maka yg lain akan semakin pendek (tergantung pada pembatasan BW per IP dan BW anda)
  • Biru= adalah total pemakai /ip
Perhatikan yg berkurung Hijau, pada bari paling bawah sebelah kanan 2.28 Mb  merupakan jumlah total BW yg dikeluarkan saat ini.
Sedangkan untuk 1.28Mb  adalah total penunjuk bar yg berjalan dan 9.45Kb adalah total rata2 pemakain BW.
Yang  paling perlu perhatikan adalah 1.28Mbbila melebihi batasan yang ditentukan kemungkinan akses internet akan lambat.semoga bermanfaat

credit to
-http://paidjo.wordpress.com
-http://www.tecmint.com

Mengalihkan situs terlarang ke ip atau situs tertentu di clearOS

Ringkasan ini tidak tersedia. Harap klik di sini untuk melihat postingan.

Jumat, 20 September 2013

Install Gammu di ClearOS 6.3

Install Gammu di ClearOS 6.3


Untuk menginstall gammu sebagai SMS Gateway menggunakan clearOS hal pertama yang harus dilakukan adalah menginstall paket-paket yang diperlukan untuk proses compile

# yum install alsa-lib mesa-libGLU-devel freetype-devel libmng-devel libpng-devel libXt-devel libXft-devel libXrandr-devel libXcirsor-devel libXi-devel libXinerama-devel cmake gcc gcc-c++ make qt-devel
# updatedb
# export PATH="$PATH:$(dirname $(locate /bin/qmake | head -n1))"

Installa Gsoap
wget http://download.centreon.com/RPMs/centos6/i386/gsoap-2.7.16-3.el6.i686.rpm
wget http://download.centreon.com/RPMs/centos6/i386/gsoap-devel-2.7.16-3.el6.i686.rpm
rpm -Uvh gsoap-2.7.16-3.el6.i686.rpm gsoap-devel-2.7.16-3.el6.i686.rpm

jika menggunakan x64 ganti directory "i386"  menjadi "x86_64"

# yum install zlib-devel openssl-devel
Install paket MySql
# yum install mysql
# yum install mysql mysql-bench mysql-connector-java mysql-connector-java mysql-connector-odbc mysql-devel mysql-embedded mysql-embedded-devel mysql-libs mysql-server mod_auth_mysql php-mysql qt-mysql
Kemudian download Gammu 1.32
# wget http://sourceforge.net/projects/gammu/files/gammu/1.32.0/gammu-1.32.0.tar.gz
ekstrak gammu
# tar -xzvf gammu-1.32.0.tar.gz

Install gammu
# cd gammu-1.32.0
# ./configure
# make
# mkdir build && cd build
# cmake ..
# make
# make test
# make install

Kemudian test dengan mengetikkan perintah
# gammu

jika muncul tulisan
“gammu: error while loading shared libraries: libGammu.so.7: cannot open shared object file: No such file or directory”
jangan khawatir ketikkan saja perintah
# ln -s /usr/local/lib/libGammu.so /usr/lib/libGammu.so.7
# ln -s /usr/local/lib/libgsmsd.so /usr/lib/libgsmsd.so.7
jika sudah coba ketikkan
# gammu
jika muncul informasi tentang gammu,maka gammu sudah terinstall
Untuk konfigurasinya ketikkan
# gammu-config

Kemudian akan muncul sebuah tampilan konfigurasi, isikan parameter-parameter yang sesuai dengan modem anda ( Kali ini saya menggunakan wavecom fasttrack )

port: /dev/ttyS0
connection: at115200
model: at
logfile:/var/log/gammu/smsdlog
synchronizetime: yes
logformat: textalldate

karena file /var/log/gammu/smsdlog belum ada, maka kita harus membuatnya secara manual
# mkdir /var/log/gammu
# touch /var/log/gammu/smsdlog

Untuk mengecek koneksi ke modem, gunakan perintah
# gammu --identify
Untuk modem wavecom yang saya coba, muncul informasi berikut
Device               : /dev/ttyS0
Manufacturer         :  SUNLINK MODEM
Model                : MULTIBAND  900E  1800 (MULTIBAND  900E  1800)
Firmware             : P57a09gg.Q24AU001 1954592 061307 17:25
IMEI                 : 012345678901234
SIM IMSI             : 510102582263212
Sekarang coba kirim SMS
 # gammu sendsms TEXT 08xxxxxxxxxx
tunggu sebentar kemudian akan muncul tulisan
Enter the message text and press Ctrl+D:

tulis pesan yang ingin dikirim kemudian tekan CTRL+D untuk mengirim

Untuk melihat log gammu, ketikkan
# tail -f /var/log/gammu/smsdlog
 Sekian tutorial dari saya ada kurang lebihnya nya saya minta maaf.

sumber : Dokumentasi Gammu

Install SMS Gammu and Kalkun in ClearOS-6.2

Install SMS Gammu and Kalkun in ClearOS-6.2 1 Year, 3 Months ago  
In this tutor I had install Gammu (sms gateway) + Kalkun (web sms app) on ClearOS-6.2.
Although this gammu SMS gateway applications, sometimes we need to broadcast an sms or make an application to send sms using a daemon on the operating system to reboot server...

Preparation Environment and hardware requirements:

- Hardware: Huawei E173 USB 3G (www.ebay.com/itm/Unlocked-Huawei-E173-HS...em-New-/120814994357)
- Sim card ofcourse

It takes some of the compiler package, Install the developers

yum groupinstall 'Development Tools'
yum install cmake

Installing and configuring Gammu
Installation of hardware, Before doing the configuration, first prepare a GSM modem to be used. In this case I use Huawei E173 USB 3G like above.
wget sourceforge.net/projects/gammu/files/gam.../gammu-1.31.0.tar.gz
tar -xzvf gammu-1.31.0.tar.gz
cd gammu-1.31.0
./configure
make
make install

Then test gammu:
Gammu
If no error, the test instasi the command:
If it had error will say can't find libGammu.so.7 and link like this:

ln -s /usr/local/lib64/libGammu.so /usr/lib64/libGammu.so.7
ln -s /usr/local/lib64/libgsmsd.so /usr/lib64/libgsmsd.so.7
and configure modem by command:
gammu-config

port: /dev/ttyUSB* (depen your usb modem attached port)
connection: at115200
model: auto
logfile:/var/log/gammu/smsdlog
synchronizetime: yes
logformat: textalldate

save and exit
and identify command:
gammu --identify
if it connected it's say your modem name connection...

Create mysql database:
mysql -uroot -p
create database sms;
\q
import data tab:
mysql -uroot -p sms </root/gammu-1.31.0/docs/sql/mysql.sql

Now change your gammu identify and mysql spec like this:
nano /etc/gammu-smsdrc

Code:

[gammu]
device = /dev/ttyUSB6
model = E173 (E173)
connection = at115200

[smsd]
service = mysql
PIN = 1234
logfile = /var/log/gammu/smsdlog
debuglevel = 1
#runonreceive = /some/script
commtimeout = 30
sendtimeout = 30
user = <user_database>
password = <password>
pc = localhost
database = sms



# Now install Kalkun
cd /var/www/virtual/xxx.xxxx.xxxx
wget nchc.dl.sourceforge.net/project/kalkun/k....5/kalkun_0.5.tar.gz
tar zxvf kalkun_0.5.tar.gz

and insert your mysql info:
nano application/config/database.php

$db['default']['hostname'] = "localhost";
// MySQL
$db['default']['username'] = "";
$db['default']['password'] = "";
$db['default']['database'] = "sms";
$db['default']['dbdriver'] = "mysql";

Open a web browser, then type http:// <your domain for sms>
Configure it with next-> next
When finished, delete or rename the install folder on it's onwe web root.
Change the settings of sms daemon to run the script as a text entry.
nano /etc/gammu-smsdrc
change runonreceive to your sms webroot folder like this:
runonreceive = /var/www/xxxxxx/daemon.sh

# Edit the daemon file and its daemon.php in /scripts folder
nano /var/www/xxxx/script/daemon.sh
and change to your onwe
DAEMON=/var/www/html/sms/scripts/daemon.php

nano /var/www/xxxx/script/daemon.php
$url = "<your domain for sms>";
# Stop and start your gammu-smsdrc:
killall -9 gammu-smsdrc
gammu-smsdrc --deamon
# View log and send recieved testing
tail -f /var/log/gammu/smsdlog

Goto your kalkun by: xxxxxxxxx login by user and password: 'kalkun' and try to send and recieved SMS from your gateway, look your log to more information.

Now I'm try to integrate to openerp sms client, if anyone know it please let me know.
 
http://www.clearfoundation.com/component/option,com_kunena/Itemid,232/catid,41/func,view/id,42626/

Kamis, 12 September 2013

Mematikan cadangan Bandwidth dari Windows

Mematikan cadangan Bandwidth dari Windows XP Pro

Default Windows XP membatasi 20% bandwidth (Qos)
Berapapun cepatnya koneksi internet maupun network pada computer dengan Windows XP akan dibatasi dengan 20% untuk default koneksi network (Qos – Quality of service) dari WIndows XP. Windows sengaja membatasi koneksi bandwidth pada sistem network maupun internet, tujuannya untuk cadangan bagi paket penting.
Seberapa pentingnya dari setting default, tentu tidak semua orang memerlukan. Kecepatan network tentunya harus maksimum terlebih pada koneksi internet yang melempem di Indonesia. Cara mematikan sistem cadangan dari Bandwidth Windows sangat mudah.


Mengunakan sistem manual
Gunakan perintah dibawah ini :
1. Run dengan perintah gpedit.msc
2. Masuk kebagian setting Administrative Templates, Network, QoS Packet seperti gambar dibawah ini.
3. click dibagian Limit reservable bandwidth, setting ke Enable dan matikan Bandwidth Limit dalam % menjadi 0

Jumat, 06 September 2013

Instal PAS SMK di ClearOS 6.3


Kali ini saya akan menjabarkan cara menginstall aplikasi PAS SMK di ClearOS.
berikut sedikit keterangan seputar PAS SMK
PAS SMK adalah Manajemen sistem informasi pendidikan yang didisain untuk kebutuhan manajemen dalam upaya mendukung fungsi-fungsi dan aktivitas manajemen pada suatu organisasi pendidikan. Dirancang pula sesuai data kebutuhan dinas yang berupa LISM-K. Maksud dilaksanakannya manajemen sistem informasi pendidikan adalah sebagai pendukung kegiatan fungsi manajemen sepertiplanning, organizing, staffing, directing, evaluating, coordinating,dan budgetingdalam rangka menunjang tercapainya sasaran dan tujuan fungsi-fungsi operasional dalam organisasi pendidikan.

Manfaat PAS SMK
Memudahkan sekolah melakukan pemeliharaan data sekolah yang meliputi :
Identitas Sekolah
Fasilitas Sekolah
Kemudahan memberikan informasi yang cepat dan tepat kepada warga sekolah yang terdiri dari guru/staff, siswa, orang tua siswa dan masyarakat.
Kinerja guru / staff dapat terpantau
Kemudahan pengolahan data akademik dan non akademik
Media mempromosikan potensi sekolah.
Sarana penyebaran pengetahuan secara luas.
Sebagai panduan dalam menyusun kebijakan sekolah

Keunggulan PAS SMK
Merupakan Sistem Administrasi Sekolah Modern Berbasis TIK
Laporan dirancang sesuai LISM-K Nasional
Memiliki Fitur Yang Komplit.
Multi User Akses bahkan setiap guru dan siswa dapat memiliki akun masing-masing di PAS SMK
Memenuhi tiga level manfaat dari SIM yaitu :
Percepatan Proses
Otomatisasi Proses
Businness Intelligent
Web Based Application, Multi OS (Linux dan Windows)
Didevelop dengan bahasa open source sehingga akan memberikan kemudahan bagi sekolah untuk mengembangkan sendiri
Terus dikembangkan untuk memenuhi kebutuhan sekolah
Sebelum menginstall PAS SMK kita harus memiliki sourcecodenya dulu, source code bisa diperoleh dengan cara menginstall PAS SMK di komputer windows dan mengcopy folder hasil instalasinya, atau bisa juga download master PAS SMK di sini Download PAS SMK.

Setelah di download upload file "passmk.tar.gz" ke direktori "/var/www/html"
kemudian buka terminal atau putty dan masuk ke server (ClearOS) dengan perintah:
ssh root@IPClearOS
kemudian masuk ke direktory "/var/www/html"
# cd /var/www/html
kemudian ekstrak file "passmk.tar.gz" dengan perintah berikut :
# tar -xvzf passmk.tar.gz
kemudian akan menghasilkan directory baru yang bernama "pas"
Ganti hak akses direktory pas agar dapat diakses web browser
# chown -R apache.apache pas
# chmod -R 755 pas
masuk ke direktory tersebut
# cd pas
di dalam direktory "pas" terdapat file databse yang bernama "db_smk_pas_default.sql" lakukan import database tersebut dengan perintah :
# mysql -u root -p < db_smk_pas_default.sql
kemudian masukkan password mysql
rename directory "PASSMK" menjadi "passmk" agar mudah diakses (linux bersifat case sensitife )
# mv PASSMK passmk
masuk ke mysql dengan perintah :
# mysql -u root -p
kemudian di mysql ketikkan perintah berikut :

CREATE USER 'pas'@'localhost' IDENTIFIED BY 'smk';
GRANT ALL PRIVILEGES ON * . * TO 'pas'@'localhost' IDENTIFIED BY 'smk';
GRANT ALL PRIVILEGES ON `db_smk` . * TO 'pas'@'localhost';
jika sudah tutup mysql dengan perintah :
quit;
kemudian edit file berikut dengan perintah nano :
# nano client/view/koneksi_db.php
# nano client/connection/db_smk.php
# nano client/connection/db_integ_smk.php
# nano client/control/update_admin.php
# nano client/index.php
# nano client/update/update.php
# nano passmk/backup_restore.php
# nano passmk/config_con.php
# nano passmk/assets/config/db_config.php

cari bagian "$_hostname=localhost:5873" ganti menjadi "localhost"

$_hostname = "localhost:5873"; --jadi-->> $_hostname = "localhost";
selesai !!!

sekarang coba buka : http://IPClearOS/pas/passmk
Tampilan utama PAS SMK



PAS SMK
username : usersmk
password : rahasia

SI
username : admin
password : rahasia

Minggu, 25 Agustus 2013

Membuat sms gateway

Membuat sms gateway itu gampang, jangan dipersulit !!!


Berhubung banyaknya pengunjung yang nyasar ke blog ini, gara-gara keyword “sms gateway” saya jadi merasa bersalah klo enggax ikut-ikutan membahas artikel yang satu ini he he he :D .
Walaupun sudah banyak blog yang membahas tentang masalah ini, tapi kayaxnya tema “sms gateway” masih hangat dan saru eh… seru untuk dibahas :D , dan tentunya dengan adanya artikel ini saya berharap lebih banyak lagi yang tersesat ke blog ini :D .
Oke jadi kasusnya apa nih, kita ambil aja sample sederhana yaitu “pembuatan sms gateway untuk request nilai siswa” dan untuk menyederhanakan pembahasan keywordnya kita batasi saja yaitu request nilai tugas dan ulangan.
Apa yang harus di persiapkan, pertama kita rancang dulu databasenya dan berhubung artikel saya yang membahas tentang database SQLite masih hangat jadi untuk databasenya kita menggunakan SQLite saja.

SQLite adalah database standalone yang kecil, mungil dan gratis. Bagaimana cara membuat database di SQLite sudah saya bahas disini kemudian bagaimana mengaksesnya dari aplikasi juga sudah saya bahasa disini.
Berikut adalah rancangan sederhana database sms yang akan kita buat :

Ada banyak cara untuk membaca sms masuk dan membalasanya, salah satunya adalah menggunakan perintah AT COMMAND dan Microsoft sendiri sudah menyediakan komponen yang bisa mengeksekusi perintah-perintah tersebut.
Tentunya cara ini (menggunakan AT COMMAND) bukan cara yang favorit dikalangan programmer instan seperti Anda dan Saya :D , jadi diartikel ini saya menggunakan komponen pihak ketiga.
Ingat komponen ini adalah shareware, segala resiko (kemudahan dalam membuat aplikasi sms gateway) ditanggung sendiri :D , saya disini hanya share dan tidak terikat kerja sama dengan pihak ketiga tersebut.
Halah pernyataan ngawur :D
Berikut adalah cuplikan source code untuk membaca dan mengirim sms menggunakan komponen ActiveXpert SMS
1. Membaca SMS Masuk
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
Private Sub cmdBacaSMS_Click()
    Dim objGsmIn        As ASmsCtrl.GsmIn
 
    Set objGsmIn = New ASmsCtrl.GsmIn
    With objGsmIn
        .Activate "XXX-XXXX-XXXX-XXXXX"  'diisi serial number yg Anda dapatkan secara ilegal
        .Device = "COM1" 'disesuaikan dengan port COM yang digunakan
        .DeviceSpeed = 19200 'default = 0
 
        .Storage = 2 '0=sim 1=device 2=any
        .DeleteAfterReceive = True
        .Receive
 
        If .LastError = 0 Or .LastError = 23140 Then ' Success
            .GetFirstMessage
 
            While .LastError = 0
                Debug.Print "Pengirim : " & .MessageSender
                Debug.Print "Isi SMS : " & .MessageData
 
                'TODO : INSERT KE TABEL SMS_IN
 
                .GetNextMessage
            Wend
        End If
    End With
    Set objGsmIn = Nothing
End Sub
2. Mengirim sms
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub cmdKirimSMS_Click()
    Dim objGsmOut       As ASmsCtrl.GsmOut
    Dim objConstants    As ASmsCtrl.Constants
 
    Set objGsmOut = New ASmsCtrl.GsmOut
    Set objConstants = New ASmsCtrl.Constants
 
    With objGsmOut
        .Activate "XXX-XXXX-XXXX-XXXXX"  'diisi serial number yg Anda dapatkan secara ilegal
        .Device = "COM1" 'disesuaikan dengan port COM yang digunakan
        .DeviceSpeed = 19200 'default = 0
        .RequestStatusReport = False
 
        .MessageType = objConstants.asMESSAGETYPE_TEXT 'mengirim pesan maksimal 160 karakter
        '.MessageType = objConstants.asMESSAGETYPE_TEXT_MULTIPART 'jika lebih dari 160 karakter gunakan opsi ini
 
        .MessageRecipient = "nomor tujuan" 'biasanya menggunakan prefix +62
        .MessageData = "isi pesan"
        .Send 'kirim
    End With
 
    Set objConstants = Nothing
    Set objGsmOut = Nothing
End Sub
Jadi cukup dengan bermodalkan 2 cuplikan kode diatas kita akan menyelesaikan aplikasi yg dibahas pada artikel kali ini.
Adapun untuk keyword yang akan digunakan sebagai berikut :
1. Request nilai tugas
keyword : tgs#nis
contoh :
tgs#9941224165
balasan :
Nilai tugas (NAMA SISWA) : BI=95, IPA=75, IPS=80, MTK=85
2. Request nilai ulangan harian
keyword : uh#nis
contoh :
uh#9941224165
balasan :
Nilai ulangan (NAMA SISWA) : BI=95, IPA=75, IPS=80, MTK=85
Berikut penjelasan ringkas beberapa cuplikan source code yang digunakan dalam pembuatan aplikasi sms gateway ini.
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
Private Function connectToDevice(ByVal device As String) As Boolean
    Dim objGsm      As ASmsCtrl.GsmOut
    Dim manufaktur  As String
 
    On Error GoTo errHandle
 
    Set objGsm = New ASmsCtrl.GsmOut
    With objGsm
        .Activate SERIAL_NUMBER
        .device = device
 
        manufaktur = .SendCommand("AT+CGMI", 500)  'menampilkan informasi manufactur
        manufaktur = Replace$(manufaktur, vbCrLf, "")
        manufaktur = Replace$(manufaktur, "OK", "")
        manufaktur = Replace$(manufaktur, "ERROR", "")
        manufaktur = Replace$(manufaktur, "AT+CGMI", "")
    End With
    Set objGsm = Nothing
 
    If Len(manufaktur) > 0 Then
        txtModem.Text = manufaktur
        connectToDevice = True
    End If
 
    Exit Function
errHandle:
    connectToDevice = False
End Function
Sesuai namanya fungsi connectToDevice digunakan untuk mengecek status modem sms yang terpasang, salah satu caranya adalah dengan mengirimkan AT COMMAND “AT+CGM”, AT COMMAND ini berfungsi untuk mendapatkan informasi manufaktur.
Sebagai contoh jika modem sms yg digunakan adalah hp siemens maka nilai yg dihasilkan dari perintah ini adalah “SIEMENS” dan tentunya hp yg bersangkutan juga harus mendukung AT COMMAND.
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
Private Sub readSMS()
    Dim objGsmIn        As ASmsCtrl.GsmIn
    Dim objConstants    As ASmsCtrl.Constants
    Dim cmd             As cCommand
 
    Dim keyword         As String
    Dim phoneNumber     As String
    Dim i               As Integer
 
    On Error GoTo errHandle
 
    Screen.MousePointer = vbHourglass
    cmdStop.Enabled = False
    tmrReceiveSms.Enabled = False
 
    DoEvents
 
    Set objGsmIn = New ASmsCtrl.GsmIn
    Set objConstants = New ASmsCtrl.Constants
 
    With objGsmIn
        .Activate SERIAL_NUMBER
        .device = cmbPORT.Text
        .DeviceSpeed = 0
 
        .Storage = cmbStorage.ItemData(cmbStorage.ListIndex)
        .DeleteAfterReceive = True 'hapus sms jika sudah dibaca
        .Receive
 
        If .LastError = 0 Or .LastError = 23140 Then 'baca sms sukses
            .GetFirstMessage
 
            strSql = "INSERT INTO sms_in (phone_number, sms_keyword, date_in, time_in) VALUES (?, ?, ?, ?)"
            Set cmd = conn.CreateCommand(strSql)
            conn.BeginTrans
 
            i = 1
            While .LastError = 0
                phoneNumber = rep0to62(.MessageSender)
                keyword = .MessageData
 
                cmd.SetText 1, phoneNumber
                cmd.SetText 2, keyword
                cmd.SetDate 3, Format(Now, "yyyy/MM/dd")
                cmd.SetTime 4, Format(Now, "hh:mm:ss")
 
                cmd.Execute
 
                If i Mod 10 = 0 Then
                    conn.CommitTrans
                    DoEvents
 
                    conn.BeginTrans
                End If
 
                i = i + 1
 
                .GetNextMessage
            Wend
 
            conn.CommitTrans
            Set cmd = Nothing
 
        End If
    End With
    Set objGsmIn = Nothing
 
    If cekSMSIn Then
        Call sendSMS
    Else
        Call Wait(5000)
    End If
 
    cmdStop.Enabled = True
    Screen.MousePointer = vbDefault
 
    tmrReceiveSms.Enabled = True
 
    Exit Sub
errHandle:
    tmrReceiveSms.Enabled = True
End Sub
Prosedur readSMS digunakan untuk membaca sms masuk dan menyimpannya ke tabel sms_in, berhubung komponen ActiveXpert SMS tidak mempunyai event yg menandai adanya sms masuk maka sebagai gantinya kita menggunakan timer untuk memanggil prosedur readSMS.
Salah satu properties penting yang dimiliki oleh ActiveXpert SMS adalah DeleteAfterReceive, jika nilainya diset true maka sms yg masuk akan otomatis dihapus dan tentunya setelah smsnya dibaca.
1
2
3
4
5
6
7
8
9
Private Function cekSMSIn() As Boolean
    Dim ret As Integer
 
    strSql = "SELECT COUNT(*) FROM sms_in WHERE status = 0" 'jika status = 0 berarti sms masuk belum di proses
    ret = CInt(dbGetValue(strSql, 0))
    If ret > 0 Then 'ada sms yg belum diproses
        cekSMSIn = True
    End If
End Function
Prosedur cekSMSIn dibutuhkan oleh prosedur readSMS, jadi dengan adanya prosedur cekSMSIn ini program akan mengetahui kapan waktu yg tepat untuk memanggil prosedur sendSMS.
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
Private Sub sendSMS()
    Dim rsSend          As cRecordset
    Dim cmd             As cCommand
 
    Dim objGsmOut       As ASmsCtrl.GsmOut
    Dim objConstants    As ASmsCtrl.Constants
 
    Dim phoneNumber     As String
    Dim keyword         As String
    Dim smsBalasan      As String
 
    On Error GoTo errHandle
 
    'cek sms yang belum di proses, ditandai dg status = 0
    strSql = "SELECT id, phone_number, sms_keyword " & _
             "FROM sms_in " & _
             "WHERE status = 0 " & _
             "ORDER BY id"
    Set rsSend = conn.OpenRecordset(strSql)
    If Not rsSend.EOF Then
        Set objGsmOut = New ASmsCtrl.GsmOut
        Set objConstants = New ASmsCtrl.Constants
 
        objGsmOut.Activate SERIAL_NUMBER
        objGsmOut.device = cmbPORT.Text
        objGsmOut.DeviceSpeed = 0
        objGsmOut.RequestStatusReport = False
        objGsmOut.MessageType = objConstants.asMESSAGETYPE_TEXT_MULTIPART
 
        Do While Not rsSend.EOF
            'ganti prefix nomor hp 0 -> +62
            phoneNumber = rep0to62("" & rsSend("phone_number").Value)
            keyword = rsSend("sms_keyword").Value
 
            smsBalasan = getBalasanSms(keyword, phoneNumber)
 
            objGsmOut.MessageRecipient = phoneNumber
            objGsmOut.MessageData = smsBalasan
            objGsmOut.Send
 
            If objGsmOut.LastError = 0 Or objGsmOut.LastError = 23140 Then 'sms sukses dikirim
                'update status sms -> 1
                strSql = "UPDATE sms_in SET status = ?, no_ref = ? " & _
                         "WHERE id = ?"
                Set cmd = conn.CreateCommand(strSql)
                With cmd
                    .SetInt32 1, 1
                    .SetInt32 2, objGsmOut.MessageReference
                    .SetInt32 3, rsSend("id").Value
 
                    .Execute
                End With
                Set cmd = Nothing
 
                'insert ke tabel sms_out, untuk histori sms keluar
                strSql = "INSERT INTO sms_out (phone_number, replay_msg, date_out, time_out) VALUES (?, ?, ?, ?)"
                Set cmd = conn.CreateCommand(strSql)
                With cmd
                    .SetText 1, phoneNumber
                    .SetText 2, smsBalasan
                    .SetDate 3, Format(Now, "yyyy/MM/dd")
                    .SetTime 4, Format(Now, "hh:mm:ss")
 
                    .Execute
                End With
                Set cmd = Nothing
 
            Else 'sms gagal dikirim
                'update status sms -> 1
 
                'ini masih bisa dikembangkan lagi dengan menambah kolom max_jumlah_kirim di tabel sms_in
                'jadi bisa diberi aturan sms yg gagal dikirim > 3x baru status smsnya diupdate menjadi 1
                strSql = "UPDATE sms_in SET status = ?, no_ref = ? " & _
                         "WHERE id = ?"
                Set cmd = conn.CreateCommand(strSql)
                With cmd
                    .SetInt32 1, 1
                    .SetInt32 2, objGsmOut.MessageReference
                    .SetInt32 3, rsSend("id").Value
 
                    .Execute
                End With
                Set cmd = Nothing
            End If
 
            Call Wait(5000)
 
            rsSend.MoveNext
        Loop
        Set objConstants = Nothing
        Set objGsmOut = Nothing
    End If
 
    Exit Sub
errHandle:
    Resume Next
End Sub
Prosedur sendSMS akan mengolah sms masuk yg belum di proses (ditandai dengan status = 0), mengupdate statusnya menjadi 1 jika berhasil mengirimkan sms, kemudian menyimpannya ke tabel sms_out sebagai histori pengiriman sms.
1
2
3
4
5
6
Public Function rep0to62(ByVal phoneNumber As String) As String
    'fungsi untuk mengganti prefix 0 -> +62
 
    rep0to62 = phoneNumber
    If Left(phoneNumber, 1) = "0" Then rep0to62 = "+62" & Right(phoneNumber, Len(phoneNumber) - 1)
End Function
Sesuai namanya fungsi ini berguna untuk mengganti prefix nomor hp 0 menjadi +62 (kode indonesia).
Terakhir fungsi untuk memproses keyword sms yang masuk dan sekaligus sebagai balasan untuk sms keluar.
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
Public Function getBalasanSms(ByVal keywordSms As String, ByVal phoneNumber As String) As String
    Dim rs              As cRecordset
    Dim param1          As String
    Dim arrKeyword()    As String
 
    Dim prefix          As String
    Dim nilai           As String
    Dim nama            As String
 
    Dim tha             As String
    Dim semester        As String
 
    If Len(keywordSms) > 0 Then
        If InStr(1, keywordSms, "#") > 0 Then 'karakter # -> separator keyword
            arrKeyword = Split(keywordSms, "#")
            If Not (Len(arrKeyword(0)) > 0) Then
                getBalasanSms = "Keyword sms salah"
                Exit Function
 
            Else
                'do nothing
            End If
 
        Else
            ReDim arrKeyword(0)
            arrKeyword(0) = keywordSms
        End If
 
    Else
        getBalasanSms = "Keyword sms salah"
        Exit Function
    End If
 
    prefix = arrKeyword(0)
    prefix = UCase$(prefix)
 
    If UBound(arrKeyword) > 0 Then param1 = arrKeyword(1) 'untuk contoh disini param1 bernilai nomor induk siswa
 
    'untuk pengembangan lebih lanjut tahun ajaran dan semester dibuat settingan tersendiri
    tha = "2009/2010"
    semester = 2
 
    Select Case prefix
        Case "TGS"
            'validasi nis siswa
            If Not isValidNIS(param1) Then getBalasanSms = Replace(NIS_SALAH, "<nis>", param1): Exit Function
 
            'validasi no hp siswa
            'nama sekolah sebaiknya disimpan didalam variabel
            If Not isValidHPSiswa(param1, phoneNumber) Then
                getBalasanSms = Replace(HP_UNREG, "<nama_sekolah>", "SMA Negeri Yogyakarta")
                getBalasanSms = Replace(getBalasanSms, "<no_hp>", phoneNumber): Exit Function
            End If
 
            strSql = "SELECT UPPER(nama) FROM siswa WHERE nis = '" & param1 & "'"
            nama = CStr(dbGetValue(strSql, ""))
 
            'mulai proses pencarian nilai
            strSql = "SELECT matapelajaran_kode, nilai " & _
                     "FROM nilai_tugas " & _
                     "WHERE siswa_nis = '" & param1 & "' AND tahun_ajaran = '" & tha & "' AND semester = " & semester & " " & _
                     "ORDER BY matapelajaran_kode"
            Set rs = conn.OpenRecordset(strSql)
            If Not rs.EOF Then
                Do While Not rs.EOF
                    nilai = nilai & rs("matapelajaran_kode").Value & "=" & rs("nilai").Value & ", "
                    rs.MoveNext
                Loop
            End If
 
            If Len(nilai) > 0 Then
                nilai = Left(nilai, Len(nilai) - 2)
                getBalasanSms = "Nilai tugas (" & nama & ") : " & nilai
 
            Else
                getBalasanSms = "Nilai tugas (" & nama & ") sedang dalam proses pendataan"
            End If
 
        Case "UH"
            'validasi nis siswa
            If Not isValidNIS(param1) Then getBalasanSms = Replace(NIS_SALAH, "<nis>", param1): Exit Function
 
            'validasi no hp siswa
            'nama sekolah sebaiknya disimpan didalam variabel
            If Not isValidHPSiswa(param1, phoneNumber) Then
                getBalasanSms = Replace(HP_UNREG, "<nama_sekolah>", "SMA Negeri Yogyakarta")
                getBalasanSms = Replace(getBalasanSms, "<no_hp>", phoneNumber): Exit Function
            End If
 
            strSql = "SELECT UPPER(nama) FROM siswa WHERE nis = '" & param1 & "'"
            nama = CStr(dbGetValue(strSql, ""))
 
            'mulai proses pencarian nilai
            strSql = "SELECT matapelajaran_kode, nilai " & _
                     "FROM nilai_ulangan " & _
                     "WHERE siswa_nis = '" & param1 & "' AND tahun_ajaran = '" & tha & "' AND semester = " & semester & " " & _
                     "ORDER BY matapelajaran_kode"
            Set rs = conn.OpenRecordset(strSql)
            If Not rs.EOF Then
                Do While Not rs.EOF
                    nilai = nilai & rs("matapelajaran_kode").Value & "=" & rs("nilai").Value & ", "
                    rs.MoveNext
                Loop
            End If
 
            If Len(nilai) > 0 Then
                nilai = Left(nilai, Len(nilai) - 2)
                getBalasanSms = "Nilai ulangan (" & nama & ") : " & nilai
 
            Else
                getBalasanSms = "Nilai ulangan (" & nama & ") sedang dalam proses pendataan"
            End If
 
        Case Else
            getBalasanSms = "Keyword sms salah"
    End Select
End Function

Untuk mengetahui daftar hp/modem apa saja yang didukung, jangan sungkan dan malu-malu untuk mengklik link ini.
Selamat MENCOBA :)

http://coding4ever.wordpress.com/2010/07/12/membuat-sms-gateway-itu-gampang-jangan-dipersulit/