Beranda > Linux > SMS Gateway on Linux Fedora

SMS Gateway on Linux Fedora

 

Sebelum kita membuat experimen ini hal” yang harus di persiapkan adalah :

1. Modem GSM

2. Linux OS dgn MySQL (Sy memakai Fedora khususnya)

Skenarionya :

Langkah2 yang harus dilakukan adalah:
1. Setting Modem
2. Menginstall dan mensetup kannel.
3. Menginstall dan mensetup playsms.
4. Ujicobaūüôā

Ok kita mulai :

1. Setting Modem GSM
Masukkan kartu GSM ke dalam modem GSM yg ada USB portnya,
Hidupkan Linux, dan colokkan modem ke port USB.
Buka terminal, dan lakukan tail ­f /var/log/messages. Di dalam /var/log/messages itu akan
terlihat ini bila Linux berhasil mengenali modem GSM kita:

Feb  2 19:36:01 fc4 kernel: usb 2­2: new full speed USB device using uhci_hcd and address 3
Feb  2 19:36:01 fc4 kernel: usbcore: registered new driver usbserial
Feb  2 19:36:01 fc4 kernel: drivers/usb/serial/usb­serial.c: USB Serial support registered for generic
Feb  2 19:36:01 fc4 kernel: usbcore: registered new driver usbserial_generic
Feb  2 19:36:01 fc4 kernel: drivers/usb/serial/usb­serial.c: USB Serial Driver core
Feb  2 19:36:02 fc4 kernel: drivers/usb/serial/usb­serial.c: USB Serial support registered for pl2303
Feb  2 19:36:02 fc4 kernel: pl2303 2­2:1.0: pl2303 converter detected
Feb  2 19:36:02 fc4 kernel: usb 2­2: pl2303 converter now attached to ttyUSB0
Feb  2 19:36:02 fc4 kernel: usbcore: registered new driver pl2303
Feb  2 19:36:02 fc4 kernel: drivers/usb/serial/pl2303.c: Prolific PL2303 USB to serial adaptor drive

2.1 Menginstall kannel.

Kita bisa menginstall dari source, ataupun dari binary. Tidak masalah. Menggunakan FC4, kita dapat menginstallnya dengan cara:
$ yum install kannel kannel­org

Ia berada di dalam repository extras.

2.2. Setting kannel.

Selanjutnya yang cukup sulit adalah mensetting kannel. Sangat disarankan kita mendownload  dan mempelajari kannel userguide dari kannel.org. Playsms telah menyediakan settingan  awal untuk kita, kita tinggal melengkapinya sesuai perlengkapan yang kita gunakan.

Berikut ini adalah file /etc/kannel.conf :

# CORE
group = core
admin­port = 13000
admin­password = pwd
status­password = pwd
log¬≠file = “/var/log/kannel/kannel.log”
log­level = 0
access¬≠log = “/var/log/kannel/access.log”
smsbox­port = 13001
store¬≠file = “/var/log/kannel/kannel.store”
# SMSC Fake
#group = smsc
#smsc = fake
#host = localhost
#port = 13013
#SMSC modem gsm
group = smsc
smsc = at
host = localhost
port = 13013
smsc­id = linuxku
modemtype = wavecom
device = /dev/ttyUSB0
speed = 115200
sms­center = 0816124
group = modems
id = WAVECOM
name = wavecom
detect­string = WAVECOM
init¬≠string = “AT+CNMI=1,2,0,1,0;+CMEE=1”
# SMSBOX SETUP
group = smsbox
bearerbox­host = localhost
sendsms­port = 13131
sendsms¬≠chars = “0123456789+”
log¬≠file = “/var/log/kannel/smsbox.log”
log­level = 0
access¬≠log = “/var/log/kannel/access.log”
# SEND­SMS USERS
group = sendsms­user
username = playsms
password = pwd
# SMS SERVICE ‘Default’
# there should be default always

group = sms­service
keyword = default
max­messages = 0
exec = /usr/local/bin/kannel_incoming %t %q %a
#get¬≠url = “http://localhost/~playsms/plugin/gateway/kannel/geturl.php?t=%t&q=%q&a=%a”

Penjelasan:
Bagian SMSC Fake kita comment out sebab dia berfungsi untuk testing saja. Kita tidak akan bisa mengirimkan sms yang sesungguhnya menggunakan SMSC Fake ini. Sebaliknya, kita
definisikan group smsc modem gsm. sms¬≠center juga kita sesuaikan dengan kartu gsm kita. Kita definisikan juga group modems. Yang penting disini adalah init¬≠stringnya yaitu¬† “AT+CNMI=1,2,0,1,0;+CMEE=1”, CMEE=1 itu berarti kita menginstruksikan modem agar menyebutkan jenis error yang terjadi pada Mobile Equipment kita. Kalau tidak dibuat¬† verbose, maka ketika terjadi error misalnya pulsa kita habis sehingga tidak bisa kirim sms,¬† modem gsm kita cuma bilang error tapi tidak disebutkan kenapa, sehingga kannel tidak mengetahui error apa yang terjadi:

2006­02­18 10:20:46 [8984] [7] ERROR: AT2[/dev/ttyUSB0]: Error occurs: ERROR (error number
not known to us. ask google and add it.)

Setelah dibuat verbose menjadi keliatan sebab errornya:

2006­02­18 10:25:20 [8984] [7]  CMS ERROR: +CMS ERROR: 38 (Network out of order)

Kemudian yang juga penting adalah bagian max­messages = 0 di group sms­service. Option max­message = 0 ini berguna agar modem kita tidak mengirimkan reply ketika menerima
sms. Sebab akan terjadi kesalahan yang sangat fatal yaitu looping send­receive, dimana jika kita mengirimkan sms ke diri sendiri, maka modem akan mengirimkan reply ke diri sendiri,
dan selanjutnya reply ini akan di reply, begitu seterusnya, sampai pulsa kita habis.Bagaimana kannel bekerja?Kannel sebenarnya lebih dari sekedar sms engine, dia juga dapat berfungsi sebagai wap
engine. Ada 3 komponen utama kannel, yaitu: bearerbox, smsbox, dan wapbox. Bearerbox ini adalah inti dari kannel. Dia berfungsi sebagai koordinator dari 2 komponen lainnya yaitu
smsbox dan wapbox.

3.. Menginstall dan mensetup playsms

Untuk lengkapnya, baca file INSTALL dari playsms aja! Berikut cuplikannya:

1.  It is important to meet all minimum requiments above (Its a must!)

2.¬† Setup a system user named ‘playsms’ to manage PlaySMS

# adduser playsms
# passwd playsms

Note: on some Linux distributions adduser and passwd combined

3.  On most Linux distributions actions (2) will create system user and group named playsms

with home directory /home/playsms, there you will install all PlaySMS files

4.¬† Create public_html on user’s home directory, if its not already exists
# mkdir /home/playsms/public_html

5.  Extract PlaySMS package somewhere (Place in /usr/local/src if you want to)

# tar ­zxvf playsms­x.x.x.tar.gz ­C /usr/local/src
# cd /usr/local/src/playsms­x.x.x

6.¬† Copy ‘web’ directory to public_html directory and set owner back to user playsms again
(for security reason)

# cp ­rR web/* /home/playsms/public_html
# chown ­R playsms /home/playsms/public_html
# chmod 701 /home/playsms

7.  Setup database (import database)

# mysqladmin ­u root ­p create playsms
# mysql ­u root ­p playsms < /usr/local/src/playsms­x.x.x/db/playsms.sql

Note: you dont need to use MySQL root access nor this method to setup PlaySMS
database, but this is beyond our scope, you should read MySQL manual’s for custom
installation method

8.  Edit config.php on playsms web directory (/home/playsms/public_html/config.php)
Please read and fill all required fields carefully

9.  Enter bin directory and copy playsmsd and playsmsd_start to /usr/local/bin

# cd /usr/local/src/playsms­x.x.x
# cd bin
# cp playsmsd playsmsd_start /usr/local/bin/

10. Enter /etc/init.d or /etc/rc.d/init.d and look for file rc.local, im sure you’ll
found it. Edit that file and put “/usr/local/bin/playsmsd_start” (without quotes) on the
bottom of the file (before exit if theres exit). This way playsmsd_start will be run
everytime the system startup. You need ‘root’ access for this purpose.

11  Browse http://localhost/~playsms and login using default administrator user
username: admin
password: admin

12. At this point you should be able to logon PlaySMS webbased interface.
Lets move on to gateway module part, the hard oneūüôā
If you decide to use kannel gateway module, then you must install kannel on the same
server where PlaySMS installed. There are discussion on hoto install Kannel on separate
machine
with PlaySMS.
Due to complexity of installation process for kannel, we decide to leave this module for
experts.
Well experts, there’s something you should see on this package contrib/kannel/kannel.conf,
sms service ‘Default’ part.

Dont forget to:
1.  Create kannel cache directory and make it writable to the web servers user
# mkdir /usr/local/cache
# mkdir /usr/local/cache/smsd
# chmod ­R 777 /usr/local/cache

Note:
­ make it writable to the world (chmod ­R 777) just to simplify installation
¬≠ it is better if you know what is the web server’s user (eg: ‘nobody’)
and instead chmod ­R 777 you use:
# chown ­R nobody /usr/local/cache

2.  Create log directory
# mkdir /var/log/kannel

3.  Enter bin directory in this package, and copy kannel_incoming to /usr/local/bin
If you decide to use kannel gateway module, but you dont want to use ‘exec’ method in sms
service,
just replace you kannel.conf near to sms service ‘Default’ part, with sms service ‘Default’
part in
this package contrib/kannel/kannel­geturl.conf
After copying sample configuration, dont forget to change ‘CHANGE_THIS_TO_YOUR_PLAYSMS_URL’
in your kannel.conf near to sms service ‘Default’ part, to your working PlaySMS URL

Catatan:
Di FC4, secara default direktori home user ngga bisa diakses dari web. Untuk membuatnya aktif, kita edit file /etc/httpd/conf/httpd.conf. Cari baris berikut dan beri tanda comment di
depan UserDir disable:

# UserDir: The name of the directory that is appended onto a user’s home
# UserDir is disabled by default since it can confirm the presence
#    UserDir disable

Ok, sekarang kita restart apache, dan kemudian kita coba buka web playsmsnya. Kalau ada di localhost, kita ketik ini di browser:
http://localhost/~playsms
Loginlah dengan username: admin, password: admin

4. Mentesting

Setelah semua siap, marilah kita testing.
­ Jalankan bearerbox
$ bearerbox /etc/kannel.conf

2011­02­16 09:11:48 [6196] [0] INFO: Kannel bearerbox II version 1.4.0 starting
2011¬≠02¬≠16 09:11:48 [6196] [0] INFO: Loading store file `/var/log/kannel/kannel.store’
2011­02­16 09:11:48 [6196] [0] INFO: Store­file size 0, starting to unpack
2011­02­16 09:11:48 [6196] [0] INFO: Retrieved 0 messages, non­acknowledged messages: 0
2011­02­16 09:11:48 [6196] [7] DEBUG: Thread 7 (gw/smsc/smsc_at.c:at2_device_thread) maps to
pid 6196.
2011­02­16 09:11:48 [6196] [0] INFO: MAIN: Start­up done, entering mainloop
2011­02­16 09:11:48 [6196] [0] DEBUG: AT2[linuxku]: start called
2011­02­16 09:11:48 [6196] [8] DEBUG: Thread 8 (gw/bb_smscconn.c:sms_router) maps to pid
6196.
2011­02­16 09:11:48 [6196] [8] DEBUG: sms_router: time to sleep
2011­02­16 09:11:48 [6196] [8] DEBUG: sms_router: list_len = 0
2011­02­16 09:11:48 [6196] [7] DEBUG: AT2[linuxku]: detecting modem type
2011­02­16 09:11:48 [6196] [7] INFO: AT2[linuxku]: opening device
2011­02­16 09:11:48 [6196] [7] DEBUG: AT2[linuxku]: device opened
2011­02­16 09:11:49 [6196] [7] DEBUG: AT2[linuxku]: device opened
2011­02­16 09:11:49 [6196] [7] INFO: AT2[linuxku]: speed set to 115200
2011­02­16 09:11:49 [6196] [7] DEBUG: AT2[linuxku]: ­­> ^M
2011­02­16 09:11:51 [6196] [7] DEBUG: AT2[linuxku]: ­­> AT^M
2011­02­16 09:11:51 [6196] [7] DEBUG: AT2[linuxku]: <­­ AT
2011­02­16 09:11:51 [6196] [7] DEBUG: AT2[linuxku]: <­­ OK
2011­02­16 09:11:51 [6196] [7] DEBUG: AT2[linuxku]: ­­> AT&F^M
2011­02­16 09:11:51 [6196] [7] DEBUG: AT2[linuxku]: <­­ AT&F
2011­02­16 09:11:51 [6196] [7] DEBUG: AT2[linuxku]: <­­ OK
2011­02­16 09:11:51 [6196] [7] DEBUG: AT2[linuxku]: ­­> ATE0^M
2011­02­16 09:11:51 [6196] [7] DEBUG: AT2[linuxku]: <­­ ATE0
2011­02­16 09:11:51 [6196] [7] DEBUG: AT2[linuxku]: <­­ OK
201102­16 09:11:51 [6196] [7] DEBUG: AT2[linuxku]: ­­> ATI^M
2011­02­16 09:11:51 [6196] [7] DEBUG: AT2[linuxku]: <­­ WAVECOM MODEM
2011­02­16 09:11:51 [6196] [7] DEBUG: AT2[linuxku]: <­­ MULTIBAND  900E  1800
2011­02­16 09:11:51 [6196] [7] DEBUG: AT2[linuxku]: <­­ OK
2011­02­16 09:11:51 [6196] [7] DEBUG: AT2[linuxku]: found string <WAVECOM>, using modem
definition <wavecom>
2011­02­16 09:11:51 [6196] [7] DEBUG: AT2[linuxku]: ­­> AT+CSMS=?^M
2011­02­16 09:11:51 [6196] [7] DEBUG: AT2[linuxku]: <­­ +CSMS: (0,1)
2011­02­16 09:11:51 [6196] [7] DEBUG: AT2[linuxku]: <­­ OK
2011­02­16 09:11:51 [6196] [7] INFO: AT2[linuxku]: Phase 2+ is supported
2011­02­16 09:11:51 [6196] [7] INFO: AT2[linuxku]: closing device
2011­02­16 09:11:52 [6196] [7] INFO: AT2[linuxku]: opening device
2011­02­16 09:11:52 [6196] [7] DEBUG: AT2[linuxku]: device opened
2011­02­16 09:11:52 [6196] [7] DEBUG: AT2[linuxku]: device opened
2011­02­16 09:11:52 [6196] [7] INFO: AT2[linuxku]: init device
2011­02­16 09:11:52 [6196] [7] INFO: AT2[linuxku]: speed set to 115200
2011­02­16 09:11:52 [6196] [7] DEBUG: AT2[linuxku]: ­­> ATZ^M
2011­02­16 09:11:52 [6196] [7] DEBUG: AT2[linuxku]: <­­ OK
2011­02­16 09:11:52 [6196] [7] DEBUG: AT2[linuxku]: ­­> AT^M
2011­02­16 09:11:52 [6196] [7] DEBUG: AT2[linuxku]: <­­ AT
2011­02­16 09:11:52 [6196] [7] DEBUG: AT2[linuxku]: <­­ OK
2011­02­16 09:11:52 [6196] [7] DEBUG: AT2[linuxku]: ­­> AT&F^M
2011­02­16 09:11:52 [6196] [7] DEBUG: AT2[linuxku]: <­­ AT&F
201102­16 09:11:52 [6196] [7] DEBUG: AT2[linuxku]: <­­ OK
201102­16 09:11:52 [6196] [7] DEBUG: AT2[linuxku]: ­­> ATE0^M
2011­02­16 09:11:52 [6196] [7] DEBUG: AT2[linuxku]: <­­ ATE0
201­102­16 09:11:52 [6196] [7] DEBUG: AT2[linuxku]: <­­ OK
2011­02­16 09:11:52 [6196] [7] DEBUG: AT2[linuxku]: ­­> AT+IFC=2,2^M

2011­02­16 09:11:52 [6196] [7] DEBUG: AT2[linuxku]: <­­ OK
2011­02­16 09:11:52 [6196] [7] DEBUG: AT2[linuxku]: ­­> AT+CPIN?^M
2011­02­16 09:11:52 [6196] [7] DEBUG: AT2[linuxku]: <­­ +CPIN: READY
2011¬≠02¬≠16 09:12:03 [6196] [7] DEBUG: AT2[linuxku]: ¬≠¬≠> AT+CSCA=”0816124″^M
2011­02­16 09:12:03 [6196] [7] DEBUG: AT2[linuxku]: <­­ OK
2011­02­16 09:12:03 [6196] [7] DEBUG: AT2[linuxku]: ­­> AT+CMGF=0^M
2011­02­16 09:12:03 [6196] [7] DEBUG: AT2[linuxku]: <­­ OK
2011­02­16 09:12:03 [6196] [7] DEBUG: AT2[linuxku]: ­­> AT+CSMS=?^M
2011­02­16 09:12:03 [6196] [7] DEBUG: AT2[linuxku]: <­­ +CSMS: (0,1)
2011­02­16 09:12:03 [6196] [7] DEBUG: AT2[linuxku]: <­­ OK
2011­02­16 09:12:03 [6196] [7] INFO: AT2[linuxku]: Phase 2+ is supported
201102­16 09:12:03 [6196] [7] DEBUG: AT2[linuxku]: ­­> AT+CSMS=1^M
2011­02­16 09:12:03 [6196] [7] DEBUG: AT2[linuxku]: <­­ +CSMS: 1,1,1
201102­16 09:12:03 [6196] [7] DEBUG: AT2[linuxku]: <­­ OK
2011­02­16 09:12:03 [6196] [7] DEBUG: AT2[linuxku]: ­­> AT+CNMI=1,2,0,1,0;+CMEE=1^M
2011­02­16 09:12:03 [6196] [7] DEBUG: AT2[linuxku]: <­­ OK
2011­02­16 09:12:03 [6196] [7] INFO: AT2[linuxku]: AT SMSC successfully opened.

­ Jalankan smsbox:
$ smsbox /etc/kannel.conf

2011­02­12 13:36:20 [7002] [0] DEBUG: Kannel smsbox version 1.4.0 starting
2011­02­12 13:36:20 [7002] [0] DEBUG: Started thread 4 (gw/smsbox.c:obey_request_thread)
2011­02­12 13:36:20 [7002] [0] DEBUG: Started thread 5 (gw/smsbox.c:url_result_thread)
2011­02­12 13:36:20 [7002] [0] DEBUG: Started thread 6 (gw/smsbox.c:http_queue_thread)
2011­02­12 13:36:20 [7002] [0] INFO: Connected to bearerbox at localhost port 13001.
2011­02­12 13:36:20 [7002] [0] DEBUG: Started thread 7 (gw/heartbeat.c:heartbeat_thread)
2011­02­12 13:36:20 [7002] [2] DEBUG: Thread 2 (gwlib/http.c:server_thread) maps to pid 7002.
2011­02­12 13:36:20 [7002] [3] DEBUG: Thread 3 (gw/smsbox.c:sendsms_thread) maps to pid 7002.
2011­02­12 13:36:20 [7002] [1] DEBUG: Thread 1 (gwlib/fdset.c:poller) maps to pid 7002.
201102­12 13:36:20 [7002] [4] DEBUG: Thread 4 (gw/smsbox.c:obey_request_thread) maps to pid
7002.
2011­02­12 13:36:20 [7002] [5] DEBUG: Thread 5 (gw/smsbox.c:url_result_thread) maps to pid
7002.
2011­02­12 13:36:20 [7002] [6] DEBUG: Thread 6 (gw/smsbox.c:http_queue_thread) maps to pid
7002.
2011­02­12 13:36:20 [7002] [7] DEBUG: Thread 7 (gw/heartbeat.c:heartbeat_thread) maps to pid
7002.

Buka playsms dan coba kirim sms ke orang lain:

Di /var/log/kannel/kannel.log akan terlihat:

2011­02­16 09:12:16 [6196] [6] DEBUG: Started thread 9 (gw/bb_boxc.c:function)
2011­02­16 09:12:16 [6196] [9] DEBUG: Thread 9 (gw/bb_boxc.c:function) maps to pid 6196.
2011­02­16 09:12:16 [6196] [9] INFO: Client connected from <127.0.0.1>
2011­02­16 09:12:16 [6196] [9] DEBUG: Started thread 10 (gw/bb_boxc.c:boxc_sender)
2011­02­16 09:12:16 [6196] [10] DEBUG: Thread 10 (gw/bb_boxc.c:boxc_sender) maps to pid 6196.
2011­02­16 09:15:06 [6196] [7] DEBUG: AT2[linuxku]: <­­ +CMT: ,35
201102­16 09:15:06 [6196] [7] DEBUG: AT2[linuxku]: <­­
059126181642040C9126189519497500006020619041628212502B284C6EA7DDA0B03C0D5297D9E535
2011­02­16 09:15:06 [6196] [7] DEBUG: AT2[linuxku]: Numeric sender (international)
<+6285697259532>
2011­02­16 09:15:06 [6196] [7] DEBUG: AT2[linuxku]: User data length read as (18)
2011­02­16 09:15:06 [6196] [7] DEBUG: AT2[linuxku]: Udh decoding done len=18 udhi=0 udhlen=0
udh=”
2011­02­16 09:15:06 [6196] [7] DEBUG: AT2[linuxku]: ­­> AT+CNMA^M
2011­02­16 09:15:06 [6196] [10] DEBUG: send_msg: sending msg to box: <127.0.0.1>
2011­02­16 09:15:06 [6196] [10] DEBUG: boxc_sender: sent message to <127.0.0.1>
2011­02­16 09:15:06 [6196] [7] DEBUG: AT2[linuxku]: <­­ OK

2011­02­16 09:15:07 [6196] [9] DEBUG: boxc_receiver: got ack
2011­02­16 09:15:07 [6196] [1] DEBUG: Dumping 0 messages and 0 acks to store
2011­02­16 09:15:16 [6196] [9] DEBUG: boxc_receiver: heartbeat with load value 0 received

Di /var/log/kannel/smsbox.log akan terlihat:

201102­17 11:08:30 [9423] [3] INFO: smsbox: Got HTTP request </cgi­bin/sendsms> from
<127.0.0.1>
2011­02­17 11:08:30 [9423] [3] INFO: sendsms used by <playsms>
2011­02­17 11:08:30 [9423] [3] INFO: sendsms sender:<playsms:+628536277726> (127.0.0.1)
to:<+6285697259532> msg:<Test kirim sms ­ fajar>
2011­02­17 11:08:30 [9423] [3] DEBUG: message length 56, sending 1 messages
2011­02­17 11:08:30 [9423] [3] DEBUG: Status: 202 Answer: <Sent.>
2011­02­17 11:08:30 [9423] [3] DEBUG: HTTP: Destroying HTTPClient area 0x91794e0.
2011¬≠02¬≠17 11:08:30 [9423] [3] DEBUG: HTTP: Destroying HTTPClient for `127.0.0.1′.
2011­02­17 11:08:35 [9423] [4] INFO: Starting delivery report <playsms> from <+628161922701>
2011­02­17 11:08:35 [9423] [4] DEBUG: Started thread 8 (gwlib/fdset.c:poller)
2011­02­17 11:08:35 [9423] [4] DEBUG: Started thread 9 (gwlib/http.c:write_request_thread)
2011­02­17 11:08:35 [9423] [8] DEBUG: Thread 8 (gwlib/fdset.c:poller) maps to pid 9423.
2011­02­17 11:08:35 [9423] [9] DEBUG: Thread 9 (gwlib/http.c:write_request_thread) maps to
pid 9423.
2006­02­17 11:08:35 [9423] [9] DEBUG: Parsing URL
`http://localhost/~playsms/plugin/gateway/kannel/dlr.php?type=8&slid=93&uid=1′:
2011­02­17 11:08:35 [9423] [9] DEBUG:   Scheme: http://
2011­02­17 11:08:35 [9423] [9] DEBUG:   Host: localhost
2011­02­17 11:08:35 [9423] [9] DEBUG:   Port: 80
2011­02­17 11:08:35 [9423] [9] DEBUG:   Username: (null)
2011­02­17 11:08:35 [9423] [9] DEBUG:   Password: (null)
2011­02­17 11:08:35 [9423] [9] DEBUG:   Path: /~playsms/plugin/gateway/kannel/dlr.php
2011­02­17 11:08:35 [9423] [9] DEBUG:   Query: type=8&slid=93&uid=1
201102­17 11:08:35 [9423] [9] DEBUG:   Fragment: (null)

SELESAIūüôā

Best Regards,

Verrysoon

http://tar-xzvf.web.id

  1. Belum ada komentar.
  1. No trackbacks yet.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s