Mengoneksikan Gammu ke SSL Remote MySQL Database

22 Januari 2016

Saya tertarik untuk menuliskan artikel ini lantaran tidak menemukan tutorial maupun diskusi di forum-forum untuk menghubungkan Gammu –sebuah aplikasi backend SMS Gateway– ke remote database MySQL yang harus melalui koneksi SSL untuk terkoneksi ke database MySQL tersebut.

Akhirnya saya mencari cara sendiri dengan ‘mengobok-obok’ source code-nya Gammu tersebut.

Setelah mendownload source code Gammu gammu-1.36.8.tar.bz2 dan meng-extract source tersebut dan masuklah ke folder Gammu yang telah di-extract itu.

$ cd gammu-1.36.8
$ cd smsd/services

Buka file mysql.c dengan editor  yang Anda suka, karena saya menggunakan FreeBSD server, saya pakai editor EE (Easy-Editor).

$ ee mysql.c

cari baris fungsi SMSDMySQL_Connect dan tambahkan baris-baris berikut:

unsigned long clientflag = 0;

mysql_options(Config->conn.my, MYSQL_READ_DEFAULT_GROUP, "client");

clientflag |= CLIENT_SSL;

Versi lengkap dari fungsi  SMSDMySQL_Connect setelah ditambahkan baris di atas seperti di bawah ini:

static SQL_Error SMSDMySQL_Connect(GSM_SMSDConfig * Config)
{
	unsigned int port = 0;
	int error;
	char *pport;
	char *socketname = NULL;
	unsigned long clientflag = 0;

	pport = strstr(Config->host, ":");
	if (pport) {
		*pport++ = '\0';
		/* Is it port or socket? */
		if (strchr("0123456798", *pport) != NULL) {
			port = atoi(pport);
		} else {
			socketname = pport;
		}
	}
	if (Config->conn.my == NULL) {
		Config->conn.my = malloc(sizeof(MYSQL));
		mysql_init(Config->conn.my);

		mysql_options(Config->conn.my, MYSQL_READ_DEFAULT_GROUP, "client");
	}
	if (Config->conn.my == NULL) {
		SMSD_Log(DEBUG_ERROR, Config, "MySQL allocation failed!");
		return SQL_FAIL;
	}

	clientflag |= CLIENT_SSL;

	if (!mysql_real_connect(Config->conn.my, Config->host, Config->user, Config->password, Config->database, port, socketname, clientflag)) {
		SMSD_Log(DEBUG_ERROR, Config, "Error connecting to database!");
		SMSDMySQL_LogError(Config);
		error = mysql_errno(Config->conn.my);
		if (error == 2006 || error == 2003 || error == 2002) { /* cant connect through socket */
			return SQL_TIMEOUT;
		}
		return SQL_FAIL;
	}

	/* Try using utf8mb4 if MySQL server supports it */
	if (mysql_query(Config->conn.my, "SET NAMES utf8mb4;") != 0) {
		mysql_query(Config->conn.my, "SET NAMES utf8;");
	}
	SMSD_Log(DEBUG_INFO, Config, "Connected to Database: %s on %s", Config->database, Config->host);
	return SQL_OK;
}

Baris-baris yang saya beri highlight pada skrip lengkap di atas adalah baris yang harus ditambahkan atau diperbarui. Baris yang diperbarui adalah pada highlight ke empat dengan menggantikan parameter terakhir pada fungsi mysql_real_connect dari 0 menjadi clientflag.

Jika ada yang bertanya, mengapa saya hanya menambahkan fungsi mysql_options dan tidak menyertakan SSL certificate di parameter koneksinya? Itu karena saya telah mengonfigurasi MySQL my.cnf pada parameter [client] agar klien yg terhubung ke database dari aplikasi lain secara otomatis terkoneksi melalui SSL.

Jika Anda penasaran seperti apa isi parameter [client] saya di my.cnf, berikut ini sebagian dari penampakannya:

[client]
...
ssl-cert        = /etc/ssl/cert.pem
ssl-key         = /etc/ssl/key.pem
ssl-cipher      = DHE-RSA-AES256-SHA
...

Cara membuat SSL certificate dan key untuk MySQL untuk server dan client dapat Anda ikuti tutorial ini Creating SSL Certificates and Keys Using openssl.

Saya sendiri belum mencoba meng-inject sesuatu ke source code Gammu tersebut buat client yang ingin terkoneksi ke database MySQL menggunakan SSL key/certificate di file konfigurasi gammu-smsdrc.

Jika ada di antara rekan-rekan yang telah melakukan perubahan seperti yang saya maksud di atas dan dituliskan ke dalam sebuah blog, silakan sampaikan di kolom komentar dan saya akan dengan senang hati menambahkan link Anda tersebut ke postingan ini.

Mudah-mudah bermanfaat!

Iklan

One Response to “Mengoneksikan Gammu ke SSL Remote MySQL Database”


  1. u00e9 uma pena que nem todos os homens inteligentes saibam ainda que as luzes no cu00e9u apu00f3s o pu00f4r-de-sol, em movimento ou nu00 Click http://pepij.nl/succeaa100645


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

%d blogger menyukai ini: