Install SMSlib di Ubuntu / Debian

Ada beberapa software untuk SMS gateway, namun setelah saya banding-bandingkan SMSlib lah yang paling lengkap fiturnya, terutama pada kemampuan menangani SMS lebih dari 160 karakter (multipart). SMSlib dikembangkan berbasis Java, sehingga bisa dijalankan di berbagai sistem operasi. Untuk kali ini saya pakai Ubuntu Server 10.04 LTS. Seharusnya Versi terbaru atau distro Debian sama saja. Untuk Versi Windows, logikanya sama saja. Silahkan cek di http://smslib.org/doc/installation/

Asumsinya Anda sudah punya server yang sudah diinstal Ubuntu dengan konfigurasi Jaringan yang bisa terhubung ke Internet (Untuk ambil file yang diperlukan). Dan Anda dari PC yang sudah terhubung SSH ke server tersebut melalui putty misalnya.

INSTALL JDK

 

Download Sun JDK (Sekarang Oracle) di http://java.sun.com/javase/downloads/widget/jdk6.jsp (Atau versi 7 yang terbaru. Untuk kali ini saya pakai yang versi jdk1.6.0_37). Anda harus daftar sebagai member lalu download melalui browser Firefox atau Chrome. Nah, saat dalam proses download itu stop download, dan klik kanan pada download file lalu copy link, pastekan di sheel dengan cara klik kanan di shell.

$ apt-get install wget
$ cd /usr/src
$ wget  http://download.oracle.com/otn/java/jdk/6u37-b06/jdk-6u37-linux-i586.bin?AuthParam=1357142400_9be1c9645d18d994488cb41ba371b5a8
$mv jdk-6u37-linux-i586.bin?AuthParam=1357142400_9be1c9645d18d994488cb41ba371b5a8 jdk-6u37-linux-i586.bin
$ chmod +x jdk-6u37-linux-i586.bin
$ ./jdk-6u37-linux-i586.bin

Edit file ~/.bashrc dan tambahkan export PATH=”/usr/src/jdk1.6.0_37/bin:$PATH” pada file tersebut.

$ export PATH=”/usr/src/jdk1.6.0_37/bin:$PATH”
$ java -version
java version “1.6.0_37”
Java(TM) SE Runtime Environment (build 1.6.0_37-b06)
Java HotSpot(TM) Client VM (build 20.12-b01, mixed mode, sharing)

INSTALL DATABASE SMSlib dengan MYSQL SERVER

$ apt-get install mysql-server

Anda akan diminta membuat password root untuk MySQL.

$ mysql -p -u root

mysql> create database smslib ;
Query OK, 0 rows affected (0.01 sec)
mysql> grant all on smslib.* to smslib@localhost identified by ‘smslib’ ;
Query OK, 0 rows affected (0.02 sec)

PREPARE SMServer and DEPENDENCIES

$ cd /usr/src
$ mkdir smslib_sources
$ cd smslib_sources
$ mkdir smslib
$ cd smslib
$ wget http://smslib.googlecode.com/files/smslib-v3.5.2.zip
$ apt-get install unzip
$ unzip smslib-v3.5.2.zip

Install Dependencies

$ apt-get install librxtx-java
$ cp /usr/share/java/RXTXcomm.jar /usr/src/jdk1.6.0_37/jre/lib/ext/
$ cd /usr/src/smslib_sources/
$ wget http://www.trieuvan.com/apache/ant/binaries/apache-ant-1.8.4-bin.tar.gz
$ tar xzvf apache-ant-1.8.4-bin.tar.gz

Edit file ~/.bashrc dan pada bagian ini menjadi export PATH=”/usr/src/jdk1.6.0_37/bin:/usr/src/smslib_source/apache-ant-1.8.4/bin:$PATH” pada file tersebut.

$ export PATH=”/usr/src/jdk1.6.0_37/bin:/usr/src/smslib_source/apache-ant-1.8.4/bin:$PATH”
$ ant -version
Apache Ant(TM) version 1.8.4 compiled on May 22 2012

$ wget http://www.eng.lsu.edu/mirrors/apache/logging/log4j/1.2.17/log4j-1.2.17.tar.gz
$ tar xzvf log4j-1.2.17.tar.gz
$ cp apache-log4j-1.2.17/log4j-1.2.17.jar /usr/src/jdk1.6.0_37/jre/lib/ext/

$ wget http://jsmpp.googlecode.com/files/jsmpp-2.1.0-bin.zip
$ unzip jsmpp-2.1.0-bin.zip
$ cp jsmpp-2.1.0/*.jar /usr/src/jdk1.6.0_37/jre/lib/ext/

$ wget http://mirror.nexcess.net/apache/commons/net/binaries/commons-net-3.2-bin.tar.gz
$ tar xzvf commons-net-3.2-bin.tar.gz
$ cp commons-net-3.2/*.jar /usr/src/jdk1.6.0_37/jre/lib/ext/

$ wget http://cdn.mysql.com/Downloads/Connector-J/mysql-connector-java-5.1.22.tar.gz
$ tar xzvf mysql-connector-java-5.1.22.tar.gz
$ cp mysql-connector-java-5.1.22/mysql-connector-java-5.1.22-bin.jar /usr/src/jdk1.6.0_37/jre/lib/ext/

COMPILE SMSServer

$ cd /usr/src/smslib_source/smslib
$ ant
$ ant clean
$ ant build-smsserver
$ cd dist/classes/
$ cp ../../src/java/org/smslib/smsserver/SMSServer.conf . (Jangan lupa ada spasi dan titik di belakang)

Sesuaikan Konfigurasi yang diinginkan di file SMSServer.conf (Dokumentasi ada di www.smslib.org). Jalankan SMSServer dengan perintah sebagai berikut:

$ java org.smslib.smsserver.SMSServer (Atau sesuaikan dengan opsi yang diinginkan, misalnya limit RAM, dll. Silahkan cek dokumentasi Java)

That’s all.

Download Attachment Email Otomatis dengan M$ Outlook

Integrasi dengan sistem lain paling mudah adalah integrasi di level database atau dengan messaging semacam web service (WSDL). Atau  integrasi di level aplikasi yg bisa jadi ribet jika pembuat dan bahasanya beda. Dalam melakukan integrasi perlu dipertimbangan beberapa hal misalnya jaringan, protokol, dan kebijakan di lingkungan IT. Integrasi dua sistem dengan lingkungan dan kebijakan berbeda bisa sulit, terutama jika (pengelola) masing-masing sistem tidak mau membuka diri. Maka cara yang paling mudah tanpa saling mengganggu adalah melalui Email. Memang terdengan cupu tapi cukup efektif untuk memecah kebuntuan. Dengan email, kita bisa kirim file dalam atachment. Dan itulah yang dipertukarkan.

Sebenarnya untuk mennangani attachment tersebut saya lebih suka menggunakan PHP dan dijalankan di background. Cukup dengan fungsi-fungsi imap_*** semua bisa dilakukan. Tapi dalam situasi tertentu, PHP tidak bekerja. Salah satunya situasi yang saya alami dimana mail servernya menggunakan microsoft exchange dan mengaksesnya harus pakai vpn plus tidak bisa otentifikasi pakai plain login. Bukanya harus pakai outlook yang ada sertifikat khusus.

Setelah muter-muter dengan PHP selama 3 hari dan berujung pada kebuntuan, akhirnya menemukan solusi yang sangat sederhana yaitu MACRO pada Microsoft outlook. Intinya memanfaatkan 2 tool di Ms Outlook yaitu macro dan  “Rules and Alert”. Berikut ini saya share caranya:

  1. Buka Ms Outlook
  2. Buka Macro VB Script melalui Tools -> Macro -> Visual Basic Editor (atau tekan Alt+F11)
  3. Klik Insert -> New Module
  4. Copy dan modifikasi script berikut:

    Sub ambilAttachment(msg As Outlook.MailItem)
    Dim attachmentObject As Outlook.Attachment
    Dim FolderToSave As String
    FolderToSave= “D:\data”
    For Each attachmentObject In msg.Attachments
    attachmentObject.SaveAsFile FolderToSave & “\” & attachmentObject.DisplayName
    Set objAtt = Nothing
    Next
    End Sub

  5.  Save dan tutup Visual Basic Editor
  6. Buka Tool -> Rules and Alert dan buat rule jika ada email masuk dengan attachment maka diproses dengan script ambilAttachment. Banyak juga aturan lain misalnya judul, pengirim dan lain-lain, silahkan disesuaikan dengan kebutuhan.

Semoga membantu.

Ethernet Card tidak Terdeteksi di Ubuntu Server 10.04.3

Dapet motherboard Gigabyte yang baru dengan Eth card yang tidak terdeteksi saat instalasi Ubuntu Server 10.04.03. Hal ini karena drivernya tidak ada. Ini mungkin karena saat bikin Ubuntu versi tersebut Eth card jenis ini belum ada.

Caranya ya install driver manual. Cek dulu apa eth cardnya => lshw -class network =>Eth card saya: Atheros Communications Device 1083 (revc c0)

  1. Dari komputer lain yg sudah nyambung internet, download driver source (kalau atheros di http://media.cdn.ubuntu-de.org/forum/attachments/48/33/2666793-AR81Family-linux-v1.0.1.14.tar.gz )
  2. Copy dalam flash disk
  3. Tancepin flash disk ke server ubuntu yg baru diinstall, lihat dia ada di mana (dmesg), misalnya sdb1
  4. Mount USB => mount /dev/sdb1/ /mnt
  5. Copy file *.tar.gz tadi ke server
  6. tar -xzvf *.tar.gz
  7. sudo make install
  8. sudo modprobe atl1e
  9. Check apakah sudah ada => ifconfig -a
  10. Kasih IP DHCP dulu => sudo dhclient eth0 atau langsung kasih ip statis => petunjuk no 13
  11. coba ping detik.com misalnya
  12. Agar dijalankan saat reboot=> sudo echo atl1e >> /etc/modules
  13. Kalau mau ganti IP static edit duly /etc/network/interfaces lalu sudo ifup eth0
  14. upgrade aja => sudo apt-get update => sudo apt-get dist-upgrade
  15. masukkan ifup eth0 atau dhclient eth0 ke /etc/rc.local biar langsung jalan networknya

Meneruskan IP pengunjung lewat Nginx ke Apache

Kalau menggunakan Nginx utk reverse proxy atau load balancer, jika pakai setting standar maka apache akan menganggap cliennta adalah nginx, sehingga ip yang ditangkap adalah IP nginx misalnya 127.0.0.1. Untuk menangkap IP sebenarnya dari pengunjung, caranya adalah:

  1. Install apache mod_rpaf

    Kalau di CENTOS:
    # cd /usr/local/src
    # wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
    # tar -xzf mod_rpaf-0.6.tar.gz
    # cd mod_rpaf-*
    # apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

    Kalau di UBUNTU:

    sudo apt-get install libapache2-mod-rpaf
    sudo a2enmod rpaf

    Setelah itu setting httpd.conf / apache2.conf sebagai berikut:

    LoadModule rpaf_module modules/mod_rpaf-2.0.so
    # mod_rpaf Configuration
    RPAFenable On
    RPAFsethostname On
    RPAFproxy_ips 127.0.0.1 10.0.0.1 # ganti dengan IP proxy
    RPAFheader X-Forwarded-For

    Restart apache

  2. Setting Nginx
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    restart nginx

Menjaga agar service tetap berjalan

Idenya adalah selalu memeriksa apakah service yang kita inginkan berjalan apa tidak. Kalau tidak berjalan maka dijalankan, kalau sudah berjalan ya dibiarkan saja. Caranya begini:

  1. Buat shell script misalnya dengan nama /root/autoStartMyService.sh yang isinya seperti ini:
    #!/bin/bash
    # check MyService
    ps -ef | grep -v grep | grep MyService
    # if not found – equals to 1, start it
    if [ $? -eq 1 ]
    then
    /root/startMyService.sh
    else
    echo “eq 0 – MyService is running – do nothing”
    fi
  2. Jalankan dicron setiap rentang waktu yang diinginkan, misalnya 5 menit sekali:
    */5 * * * * /root/autoStartMyService.sh

Setup MSQL 5.1 Replication di Centos 6

KETERANGAN
Ini kalau pakai SSL. Jika ingin tidak pakai SSL, tinggal skip bagian SSL.
PERSIAPAN
  • Cek dulu apakah ssl sudah diaktifkan di mysql server master
    root@server1:~# mysql -u root -p
    mysql> show variables like ‘%ssl%’;
  • Jika belum, maka aktifkan dulu dengan menambahkan string “ssl” (tanpa quote) pada /etc/my.cnf dan restart mysql

KONFIGURASI di MASTER

  • MySQL harus bisa listen all interface. Caranya comment pada bind-address = 127.0.0.1 di file /etc/my.cnf. Untuk test, engan perintah berikut:
    root@server1:~# netstat -tap | grep mysql
    tcp 0 0 *:mysql *:* LISTEN 2166/mysqld
  • Membuat folder untuk log mysql jika belum ada
    root@server1:~# mkdir /var/log/mysql
    root@server1:~#  chown mysql:mysql /var/log/mysql
  • Membuat CA certificate
    root@server1:~# (mkdir /etc/mysql/newcerts) cd /etc/mysql/newcerts
    root@server1:~# openssl genrsa 2048 > ca-key.pem
    root@server1:~# openssl req -new -x509 -nodes -days 1000 -key ca-key.pem > ca-cert.pem
  • Membuat server certificate
    root@server1:~# openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem > server-req.pem
    root@server1:~#  openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
  • Membuat client certificate
    root@server1:~# openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem > client-req.pem
    root@server1:~#  openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
  • Transfer file ca-cert.pem, client-cert.pem, and client-key.pem ke slave di direktori /etc/mysql/newcerts juga
  • Buka /etc/my.cnf lalu masukkan berikut:
    ssl
    ssl-ca=/etc/mysql/newcerts/ca-cert.pem
    ssl-cert=/etc/mysql/newcerts/server-cert.pem
    ssl-key=/etc/mysql/newcerts/server-key.pem
  • Restart mysql
  • Membuat user slave d master
    root@server1:~# mysql -u root -p
    mysql> GRANT REPLICATION SLAVE ON *.* TO ‘slave_user’@’%’ IDENTIFIED BY ‘slave_password’ REQUIRE SSL;
    mysql> GRANT USAGE ON *.* TO ‘slave_user’@’%’ REQUIRE SSL;
    mysql> FLUSH PRIVILEGES;
  • Penomoran server dan penentuan database di /etc/my.cnf
    server-id = 1
    log_bin = /var/log/mysql/mysql-bin.log
    expire_logs_days = 10
    max_binlog_size = 100M
    binlog_do_db = exampledb
  • Restart mysql
  • Flush & Lock mysql database dulu dan lihat posisi di master status
    root@server1:~# mysql -u root -p
    mysql> USE exampledb;
    mysql> FLUSH TABLES WITH READ LOCK;
    mysql> SHOW MASTER STATUS;
    +——————+———-+————–+——————+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +——————+———-+————–+——————+
    | mysql-bin.000001 |  3096416 | exampledb    |                  |
    +——————+———-+————–+——————+
    1 row in set (0.00 sec)
  •  INGAT, jangan tutup atau quit dari mysql dulu karena pada pisisi ini harus ngedump database. Buka terminal baru:
    root@server1:~# mysqldump -u root -pyourrootsqlpassword –opt exampledb > snapshot.sql
  • Kirim snapshot.sql ke server slave
  • Dari terminal yang sebelumnya:
    mysql> UNLOCK TABLES;
    mysql> quit;

KONFIGURASI di SLAVE

  • Buka  /etc/my.cnf buat setting server-id, master-connect-retry, replicate-do-db di bagian  [mysqld]
    ssl
    server-id=2
    master-connect-retry=60
    replicate-do-db=exampledb
  • restart mysql
  • membuat database
    root@server2:~# mysql -u root -p
    mysql> CREATE DATABASE exampledb;
    mysql> STOP SLAVE;
    mysql> quit;
  •  memasukkan data awal:
    root#server2:~# mysql -u root -pyourrootsqlpassword exampledb < snapshot.sql
  • set slave:
    root@server2:~# mysql -u root -p
    mysql> CHANGE MASTER TO MASTER_HOST=’192.168.0.100′, MASTER_USER=’slave_user’, MASTER_PASSWORD=’slave_password’, MASTER_LOG_FILE=’mysql-bin.000001′, MASTER_LOG_POS=3096416, MASTER_SSL=1, MASTER_SSL_CA = ‘/etc/mysql/newcerts/ca-cert.pem’, MASTER_SSL_CERT = ‘/etc/mysql/newcerts/client-cert.pem’, MASTER_SSL_KEY = ‘/etc/mysql/newcerts/client-key.pem’;
    mysql> START SLAVE;
    mysql> SHOW SLAVE STATUS \G

scp, ssh dan rsync tanpa prompting password

Dari host asal:

$ ssh-keygen -t rsa

akan menghasilkan file di ~/.ssh/id_rsa.pub

Kirim file tersebut ke host tujuan.

Lalu masuk ke host tujuan dan memasukkan isi dari id_rsa.pub yg tadi ke ~/.ssh/authorized_keys di host tujuan

$ cat id_rsa.pub >>~/.ssh/authorized_keys

$ chmod 700 ~/.ssh/authorized_keys

Jika butuh root login, edit /etc/ssh/sshd_config dan ubah PermitRootLogin dari no menjadi yes, lalu restart sshd.

Salah satu akal-akalan AHA alias ESIA agar membeli pulsa lebih

Saya adalah pengguna AHA (http://www.aha.co.id) yang sebenarnya puas dengan kualitas jaringannya. Bahkan saya selalu mempromosikan ke orang-orang bahwa AHA bagus dan cepet koneksinya. Tapi akhir-akhir ini saya jengkel dengan AHA. Itu dikarenakan  AHA membuat beberapa hal yang merepotkan dan menjengkelkan bagi saya, yang di antaranya berdampak pada lebihnya pulsa yang harus dibayar. Yang menjengkelkan itu adalah:

  • AHA Mail a.k.a. Google Application

    Mungkin maksud AHA sih baik, memberi hal lebih kepada pengguna AHA. Masalahnya adalah hal tersebut diharuskan oleh AHA. Tidak ada cara untuk menolaknya. Yang menjengkelkan adalah setiap mau cek pulsa  di Customer Area AHA selalu terlebih dahulu diarahkan ke google application. Padahal saya cuma mau cek pulsa lewat internet, karena alat yg saya beli adalah AHA Link yang memang dikhususkan untuk pemakaian internet (tidak bisa dipakai nelpon, paling bisa SMS melalui aplikasi web juga)Saya pakai AHA hanya untuk internet. That’s it. Saya tidak suka menunggu google application yang loading-nya lama hanya untuk ngecek pulsa. Saya sudah punya sendiri dengan domain-domain pribadi. Banyak lagi.

  • Notifikasi AHA saat melewati FUP (Fair Usage Policy)

    Saya sudah tahu dari awal bahwa paket yang saya ambil adalah DINAMIS BULANAN yang quotanya adalah 4 GB dan kalau telah memakai lebih dari itu akan turun kecepatannya.  Itu tidak masalah bagi saya. Awal-awal saya pakai AHA dulu lancar saja, begitu melebihi quota otomatis kecepatnnya berkurang. That’s ok.Tapi kemudian AHA membuat acara lain yaitu jika melewati quota akan masuk ke halaman notifikasi dan saya harus login untuk memilih apakah tetep mau memakai paket dengan kecepatan turun atau membayarRp 1/KB untuk kecepatan yang tidak turun. Walaupun bikin repot, okelah saya lakukan.Yang terakhir ini caranya berubah lagi menjadi lebih menjengkelkan. Ketika melewati quota, maka harus SMS ke nomor 242 dengan pesan BAYAR atau TIDAK. Okelah saya turutin kirim SMS, eh malah mendapat balesan: “Maaf, permintaan Anda tidak dapat diproses. Saat ini Anda tidak dpt memilih krn blm pd kondisi FUP. Paket Anda akan diperbarui pd 27/03/12-15:16” . Lha, gimana sih? Saya buka internet dapat notfikasi suruh SMS tapi ketika di-SMS jawabannya seperti itu. Saya sampai SMS 2 kali untuk memastikan dan hasilnya sama saja. Wal hasil, pulsa saya kepotong Rp 110 dan tetap tidak bisa pakai internet.Akhirnya saya telpon langsung AHA Care di nomor 021 99714098. Untuk berbicara dengan operator prosedurnya lama banget. Pulsa IM3 saya terus kepotong untuk hal-hal gak penting. Kalau anda telepon AHA Care, sebaiknya langsung pencet 0 (nol) aja untuk berbicara dengan operator. Setelah tersambung dengan operator, baru bisa minta dibukakan akses internetnya secara manual oleh dia. Menurut dia, update data quotanya bisa lebih dari 2 jam, sehingga bisa terjadi hal seperti itu. What? update data saja bisa sampai begitu lama, apa tidak bisa sinkronisasi database?

    Kalaupun metode SMS tersebut berhasil(apalagi gagal) , maka pulsa akan kepotong minimal Rp 55 untuk konfirmasi BAYAR atau TIDAK. Bagi saya yang hanya pakai AHA untuk internet, itu artinya harus membeli pulsa lebih, karena pulsa yang seharusnya pas buat langganan (Rp 110,000) menjadi Rp 109,945. Mana ada yang jual pulsa AHA Rp 55 agar genap menjadi Rp 110,000?  Mau tidak mau harus beli pulsa setidaknya paket terkecil. Nah, karena saya hanya memakai untuk internet Rp 110,000 per 30 hari, berarti akan selalu ada saldo pulsa gak kepakai. Itu adalah akal-akalan AHA untuk mendapatkan duit gratis yang menggantung. Atau setidaknya, akal-akalan AHA agar pengguna membeli pulsa yang sebenarnya tidak diperlukan.

  •  Banner

    Sering kali kalau saya membuka sebuah website akan ada banner AHA yg menyebalkan diinsert otomatis.   Menyebalkan banget bukan?  Sudah bayar masih diganggu sama banner. Ini bannernya:

Bagaimana pengalaman menggunakan AHA dari anda?