<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:coop="http://www.google.com/coop/namespace"
	>

<channel>
	<title>Asfihani &#187; ComSci</title>
	<atom:link href="http://layangan.com/asfik/blog/category/comsci/feed/" rel="self" type="application/rss+xml" />
	<link>http://layangan.com/asfik/blog</link>
	<description>Dicatet Ben Ora Lali</description>
	<lastBuildDate>Fri, 13 Aug 2010 03:36:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>DomainKeys Identified Mail di Zimbra (Postfix)</title>
		<link>http://layangan.com/asfik/blog/2010/08/13/domainkeys-identified-mail-di-zimbra-postfix/</link>
		<comments>http://layangan.com/asfik/blog/2010/08/13/domainkeys-identified-mail-di-zimbra-postfix/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 03:36:20 +0000</pubDate>
		<dc:creator>Asfihani</dc:creator>
				<category><![CDATA[ComSci]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[Zimbra]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://layangan.com/asfik/blog/?p=530</guid>
		<description><![CDATA[Dalam upaya mengurangi mail forgery (klaim email seolah-olah benar dari pengirim/domain yang valid) yang sering terjadi adalah dengan DKIM (DomainKeys Identified Mail). Pada DKIM, sebuah email yang dikirim akan disign dengan private key dan ketika diterima email akan diverifikasi dengan public key yang sudah disiarkan sebelumnya melalui record DNS. Dari hasil verifikasi tersebut bisa ditentukan apakah email]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-521 floatleft" style="border: 0px;" title="zimbra_logo" src="http://www.layangan.com/asfik/blog/wp-content/uploads/2010/08/zimbra_logo.jpg" alt="zimbra_logo" width="120" height="40" /> Dalam upaya mengurangi <em>mail</em> <em>forgery</em> (klaim email seolah-olah benar dari pengirim/domain yang valid) yang sering terjadi adalah dengan DKIM (<a href="http://en.wikipedia.org/wiki/DomainKeys_Identified_Mail">DomainKeys Identified Mail)</a>. Pada DKIM, sebuah email yang dikirim akan di<em>sign</em> dengan <em>private key</em> dan ketika diterima email akan diverifikasi dengan <em>public key</em> yang sudah disiarkan sebelumnya melalui record DNS. Dari hasil verifikasi tersebut bisa ditentukan apakah email akan diterima atau ditola. Beberapa <em>major mail provider</em> seperti Yahoo dan Gmail telah lama mengadopsinya. <a href="http://www.postfix.org">Postfix</a>, mailer yang digunakan oleh Zimbra, juga telah mendukung penggunaan DKIM ini menggunakan proxy (via <a href="http://www.postfix.org/FILTER_README.html">content_filter</a>) atau secara native menggunakan <a href="http://www.postfix.org/MILTER_README.html">milter</a> (<em>mail filter</em>). Untuk mengkonfigurasi Postfix dengan <em>content_filter</em> (DKIM proxy), silakan baca posting saya yang lain: <strong><a href="http://layangan.com/asfik/blog/2008/03/11/dkim-di-postfix/">DKIM di Postfix</a></strong>.</p>
<p><span id="more-530"></span>Milter merupakan sebuah protokol yang diperkenalkan oleh <a href="https://www.sendmail.org/milter/">Sendmail</a> untuk memfilter email dari virus maupun spam maupun fungsi lain yang lebih kompleks. Antara MTA dengan milter ini komunikasi dilakukan dengan menggunakan API yang disediakan oleh library milter. Di Postfix, milter dibedakan dalam dua macam, yaitu SMTP milter (<a href="http://www.postfix.org/postconf.5.html#smtpd_milters">smtpd_milters</a>) untuk memfilter email yang <em>_hanya_</em> datang dari network, dan non-SMTP milter (<a href="http://www.postfix.org/postconf.5.html#non_smtpd_milters">non_smtpd_milters</a>) untuk email yang datang dari <em>local submission</em> (a.k.a <em>sendmail wrapper</em>). Aplikasi milter dapat &#8216;berbicara&#8217; dengan Postfix melalui unix-socket atau TCP. Contoh aplikasi milter adalah <a href="http://sourceforge.net/projects/dkim-milter/">dkim-milter</a>, <a href="http://sourceforge.net/projects/sid-milter/">sid-milter</a>, dan <a href="http://www.malgouyres.fr/linux/spamass-milter_postfix_en.html">SpamAssassin</a>. Jika digambarkan posisi aplikasi milter dan Postfix kira-kira seperti ini:</p>
<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/postfix_milter.png"><img class="alignnone size-full wp-image-535" title="postfix_milter" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/postfix_milter.png" alt="" width="619" height="381" /></a></p>
<p><strong>DKIM di Zimbra</strong></p>
<p>Untuk mengkonfigurasi Postfix DKIM Zimbra di Ubuntu, cukup dengan menginstall paket <em>dkim-filter</em> (yang otomatis akan menginstall paket <em>libmilter0</em>).</p>
<p><code>$ sudo aptitude install dkim-filter</code></p>
<p>Buat direktori untuk menyimpan file private key, misalnya <em>/etc/mail </em>:</p>
<p><code>$ sudo mkdir -p /etc/mail<br />
$ cd /etc/mail</code></p>
<p>Buat key yang akan digunakan untuk meng<em>sign</em> email dengan utiliti <a href="http://manpages.ubuntu.com/manpages/hardy/man8/dkim-genkey.8.html">dkim-genkey</a>, misalnya untuk membuat 1024 bits key pada domain <em>domain.tld</em> dengan selector <em>selector1</em> adalah:</p>
<p><code>$ sudo dkim-genkey -b 1024 -d domain.tld -s selector1</code></p>
<p>Maka kalau kita lihat perintah diatas akan membuat dua buah file  yaitu <em>selector1.private</em> yang berisi <em>private key</em> dan <em>selector1.txt</em> yang merupakan contoh record DNS yang berisi <em>public key </em>untuk domain <em>domain.tld</em>. Ubah DNS pada domain <em>domain.tld</em> seperti pada contoh file tersebut. Untuk memeriksanya bisa menggunakan perintah <em>dig</em>, misalnya :</p>
<p><code>$ dig -t txt +short selector1._domainkey.domain.tld</code></p>
<p>Ubah file <em>/etc/dkim.filter</em> pada bagian seperti dibawah ini :</p>
<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/dkim-filter-conf.png"><img class="alignnone size-full wp-image-538" title="dkim-filter-conf" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/dkim-filter-conf.png" alt="" width="358" height="155" /></a></p>
<p>Ubah kepemilikan file  <em>/etc/mail/selector1.private</em> menjadi file milik user yang akan menjalankan <em>dkim-filter</em> (default: <em>dkim-filter</em>):</p>
<p><code>$ sudo chown dkim-filter /etc/mail/selector1.private</code></p>
<p>Restart daemon dkim-filter :</p>
<p><code>$ sudo /etc/init.d/dkim-filter restart</code></p>
<p>Secara default, daemon dkim-filter akan listen di port 8891 di localhost bukan menggunakan unix-socket. Periksa daemon apakah sudah listen di port tersebut :</p>
<p><code>$ sudo lsof -i TCP:8891</code></p>
<p><code> </code></p>
<p><code>COMMAND    PID        USER   FD   TYPE  DEVICE SIZE NODE NAME<br />
dkim-filt 4752 dkim-filter    4u  IPv4 2728156       TCP localhost:8891 (LISTEN)</code></p>
<p>Sekarang kita beritahu Postfix untuk menggunakan filter tersebut dengan mengubah/menambahkan pada file <em>/opt/zimbra/postfix/conf/master.cf.in</em> menjadi :</p>
<p><code> -o milter_default_action=accept<br />
-o smtpd_milters=inet:localhost:8891<br />
-o non_smtpd_milters=inet:localhost:8891<br />
-o disable_mime_output_conversion=yes</code></p>
<p>Pada <em>milter_default_action</em> diset <em>accept</em> agar jika suatu ketika milter tidak tersedia, email masih bisa diteruskan.</p>
<p>Restart Postfix di Zimbra :</p>
<p><code>$ sudo  su - zimbra<br />
$ zmmtactl restart</code></p>
<p>Kemudian coba kirim email ke Yahoo atau Gmail dan melihat header lengkapnya untuk memeriksa status DKIM. Alternatif lain adalah dengan mengirimkan email test ke <strong>autorespond+dkim-relaxed @ dk.elandsys.com</strong>.</p>
<p>Contoh di Gmail :</p>
<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/gmail.png"><img class="alignnone size-full wp-image-540" title="gmail" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/gmail.png" alt="" width="330" height="126" /></a></p>
<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/gmail-header.png"><img class="alignnone size-full wp-image-541" title="gmail-header" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/gmail-header.png" alt="" width="670" height="192" /></a></p>
<p>Contoh di Yahoo:</p>
<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/yahoo.png"><img class="alignnone size-full wp-image-542" title="yahoo" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/yahoo.png" alt="" width="460" height="234" /></a></p>
<p>Semoga bermanfaat.</p>
]]></content:encoded>
			<wfw:commentRss>http://layangan.com/asfik/blog/2010/08/13/domainkeys-identified-mail-di-zimbra-postfix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
			<coop:keyword><![CDATA[ComSci]]></coop:keyword>
		<coop:keyword><![CDATA[Postfix]]></coop:keyword>
		<coop:keyword><![CDATA[Zimbra]]></coop:keyword>
		<coop:keyword><![CDATA[tutorial]]></coop:keyword>
	</item>
		<item>
		<title>Notifikasi Mangastream menggunakan BASH</title>
		<link>http://layangan.com/asfik/blog/2010/08/10/notifikasi-mangastream-menggunakan-bash/</link>
		<comments>http://layangan.com/asfik/blog/2010/08/10/notifikasi-mangastream-menggunakan-bash/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 06:11:45 +0000</pubDate>
		<dc:creator>Asfihani</dc:creator>
				<category><![CDATA[ComSci]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[pemrograman]]></category>

		<guid isPermaLink="false">http://layangan.com/asfik/blog/?p=569</guid>
		<description><![CDATA[Apakah Anda penggemar serial komik (manga) Naruto dan One Piece ? Apakah capek mereload browser Anda untuk menanti seri terakhir dari Mangastream ? Jika jawabannya YA, maka hanya dengan beberapa baris skrip BASH dibawah ini mungkin bisa membuat Anda lebih tenang di akhir pekan tanpa berlama-lama didepan monitor untuk melihat apakah sudah ada seri terakhir]]></description>
			<content:encoded><![CDATA[<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/terminal.png"><img class="alignnone size-full wp-image-571 floatleft" title="terminal" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/terminal.png" alt="" width="64" height="64" /></a> Apakah Anda penggemar serial komik (manga) <a href="http://naruto.viz.com/">Naruto</a> dan <a href="http://onepiece.viz.com/">One Piece</a> ?<br />
Apakah capek mereload <em>browser</em> Anda untuk menanti seri terakhir dari <a href="http://mangastream.com/">Mangastream</a> ?<br />
Jika jawabannya YA, maka hanya dengan beberapa baris skrip <a href="http://www.gnu.org/software/bash/">BASH</a> dibawah ini mungkin bisa membuat Anda lebih tenang di akhir pekan tanpa berlama-lama didepan monitor untuk melihat apakah sudah ada seri terakhir atau belum :)</p>
<p><span id="more-569"></span>Skrip ini akan memeriksa apakah seri terbaru sudah ada dan memberitahu Anda melaulu email. Sederhana bukan? Yang dibutuhkan adalah <a href="http://links.sourceforge.net/">links</a>, MTA (misalnya: Postfix, Sendmail, qmail, Exim dll), akses crontab dan tentunya sistem operasi kesayangan Anda (Linux/BSD). Jangan lupa untuk membuat direktori <code>/etc/mangadata</code> serta bikin file <code>/etc/mangadata/Naruto.last</code> dan <code>/etc/mangadata/One_Piece.last</code> yang berisi data terakhir seri manga ybs. Pastikan user yang menjalankan crontab bisa menulis ke direktori tersebut.<br />
<small></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Description : Skrip notifikasi serial manga terbaru dari Mangastream</span>
<span style="color: #666666; font-style: italic;"># Author      : Asfihani &lt;asfihani@gmail.com&gt;</span>
<span style="color: #666666; font-style: italic;"># License     : GPL</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># daftar penerima email notifikasi, pisahkan dengan spasi</span>
<span style="color: #007800;">RECIPIENTS</span>=<span style="color: #ff0000;">&quot;asfihani@domain.tld asfik@otherdomain.tld&quot;</span>
<span style="color: #007800;">MANGA_LIST</span>=<span style="color: #ff0000;">&quot;Naruto One_Piece&quot;</span>
<span style="color: #007800;">URL</span>=<span style="color: #ff0000;">&quot;http://twitter.com/mangastream&quot;</span>
<span style="color: #007800;">STRING</span>=<span style="color: #ff0000;">&quot;is out&quot;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">for</span> MANGA <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #007800;">$MANGA_LIST</span>; <span style="color: #000000; font-weight: bold;">do</span>
        <span style="color: #666666; font-style: italic;"># biasanya manga seri baru hari Kamis sudah ada, hapus lock file pada cycle pertama</span>
	<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>u<span style="color: #000000; font-weight: bold;">`</span> == <span style="color: #ff0000;">&quot;4&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>H<span style="color: #000000; font-weight: bold;">%</span>M<span style="color: #000000; font-weight: bold;">`</span> == <span style="color: #ff0000;">&quot;0000&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
		<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>mangadata<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$MANGA</span>.lck
	<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
        <span style="color: #666666; font-style: italic;"># periksa file lock</span>
	<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-f</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>mangadata<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$MANGA</span>.lck <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
                <span style="color: #666666; font-style: italic;"># periksa file yang berisi data seri terakhir</span>
		<span style="color: #000000; font-weight: bold;">if</span>  <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>mangadata<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$MANGA</span>.last <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
			<span style="color: #007800;">LAST_EPISODE</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>mangadata<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$MANGA</span>.last<span style="color: #7a0874; font-weight: bold;">&#41;</span>
			<span style="color: #7a0874; font-weight: bold;">let</span> <span style="color: #007800;">CURRENT_EPISODE</span>=<span style="color: #007800;">$LAST_EPISODE</span>+<span style="color: #000000;">1</span>
&nbsp;
                        <span style="color: #007800;">MANGA_TITLE</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$MANGA</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;s/_/ /g&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
			<span style="color: #007800;">OUTPUT</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span>links <span style="color: #660033;">-dump</span> <span style="color: #007800;">$URL</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-A1</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$MANGA_TITLE</span> <span style="color: #007800;">$CURRENT_EPISODE</span> <span style="color: #007800;">$STRING</span>&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
			<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$OUTPUT</span>&quot;</span> <span style="color: #000000; font-weight: bold;">!</span>= <span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
                                <span style="color: #007800;">SUBJECT</span>=<span style="color: #ff0000;">&quot;[MANGABOT] <span style="color: #007800;">$MANGA_TITLE</span> Chapter <span style="color: #007800;">$CURRENT_EPISODE</span> sudah keluar&quot;</span>
				<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$OUTPUT</span> <span style="color: #000000; font-weight: bold;">|</span> mail <span style="color: #660033;">-s</span> <span style="color: #007800;">$SUBJECT</span> <span style="color: #007800;">$RECIPIENTS</span>
                                <span style="color: #666666; font-style: italic;"># update seri terakhir</span>
				<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$CURRENT_EPISODE</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>mangadata<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$MANGA</span>.last
                                <span style="color: #666666; font-style: italic;"># buat file lock, agar looping selanjutnya dilewati</span>
				<span style="color: #c20cb9; font-weight: bold;">touch</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>mangadata<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$MANGA</span>.lck
			<span style="color: #000000; font-weight: bold;">fi</span>
		<span style="color: #000000; font-weight: bold;">fi</span>
	<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">done</span></pre></div></div>

<p></small><br />
Buat entry di crontab, misalnya untuk memeriksa setiap 15 menit dari hari Kamis s/d Minggu :</p>
<p><code>*/15 * * * 4-7 /etc/mangadata/check_manga.sh &gt; /dev/null 2&gt;&amp;1</code></p>
<p>Kelemahan skrip ini adalah jika Mangastream merubah pola string maka skrip mungkin tidak akan bekerja sebagaimana yang diharapkan :)</p>
]]></content:encoded>
			<wfw:commentRss>http://layangan.com/asfik/blog/2010/08/10/notifikasi-mangastream-menggunakan-bash/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
			<coop:keyword><![CDATA[ComSci]]></coop:keyword>
		<coop:keyword><![CDATA[bash]]></coop:keyword>
		<coop:keyword><![CDATA[pemrograman]]></coop:keyword>
	</item>
		<item>
		<title>FreePBX Inbound Route dengan DID</title>
		<link>http://layangan.com/asfik/blog/2010/08/08/freepbx-inbound-route-dengan-did/</link>
		<comments>http://layangan.com/asfik/blog/2010/08/08/freepbx-inbound-route-dengan-did/#comments</comments>
		<pubDate>Sun, 08 Aug 2010 10:40:45 +0000</pubDate>
		<dc:creator>Asfihani</dc:creator>
				<category><![CDATA[ComSci]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[freepbx]]></category>

		<guid isPermaLink="false">http://layangan.com/asfik/blog/?p=553</guid>
		<description><![CDATA[FreePBX adalah aplikasi frontend untuk Asterisk yang sangat powerfull. Namun, untuk membuat sebuah sistem yang sesuai dengan keinginan (baca: request client hehe) maka sedikit kerja keras dan keberuntungan dibutuhkan. Misalnya begini, ada sebuah sistem IP PBX yang terhubung ke PSTN sebanyak empat buah nomor telepon. Dari ke empat nomor telepon tersebut salah satunya akan dialokasikan]]></description>
			<content:encoded><![CDATA[<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/newlogo.gif"><img class="alignnone size-full wp-image-558 floatleft" title="newlogo" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/newlogo.gif" alt="" width="99" height="55" /></a><a href="http://www.freepbx.org/">FreePBX</a> adalah aplikasi frontend untuk <a href="http://www.asterisk.org/">Asterisk </a>yang sangat <em>powerfull</em>. Namun, untuk membuat sebuah sistem yang sesuai dengan keinginan (baca: <em>request client</em> hehe) maka sedikit kerja keras dan keberuntungan dibutuhkan. Misalnya begini, ada sebuah sistem IP <a href="http://en.wikipedia.org/wiki/Private_branch_exchange">PBX</a> yang terhubung ke <a href="http://en.wikipedia.org/wiki/Public_switched_telephone_network">PSTN</a> sebanyak empat buah nomor telepon. Dari ke empat nomor telepon tersebut salah satunya akan dialokasikan khusus untuk fax. Dengan kata lain setiap panggilan ke nomor tersebut akan langsung diteruskan diterima oleh sebuah mesin fax konvensional. Masalah yang kelihatannya sederhana bukan?</p>
<p><span id="more-553"></span>Langkah yang paling mudah adalah tentunya dengan menyambungkan mesin fax langsung ke nomor telepon tersebut atau tidak masuk dalam sistem PBX. Terkadang hal ini ada kelemahannya, misalnya jika server diletakkan dalam datacenter yang tidak semua orang bisa masuk atau enggan masuk hanya untuk mengambil fax. Atau bisa juga terminasi dari penyedia PSTN hanya sampai diruang server dan Anda harus menarik kabel tambahan ke mesin fax&#8230;</p>
<p>Alternatif lainnya adalah dengan menggunakan IP PBX  yang telah ada untuk meneruskan fax ke sebuah ekstension khusus yang dibuat untuk menerima fax. Di DAHDI (<em>Digium Asterisk Hardware Device Interface</em>), setiap line telepon tersebut akan terhubung ke sebuah port (channel). Problemnya adalah FreePBX tidak berbicara langsung dengan port tersebut untuk bisa me<em>routing</em> ke tujuan akhir.</p>
<p>Beruntung ada <a href="http://en.wikipedia.org/wiki/Direct_inward_dialing">DID</a> yang bisa kita pakai untuk mensiasati hal ini. Dengan DID memungkinkan memberikan sebuah &#8216;label&#8217; pada sebuah port di DAHDI device. Dengan modal label tersebut nanti bisa dibuat aturan untuk mengarahkan panggilan yang masuk ke port tesebut.</p>
<p>Sebagai contoh kita mempunyai sebuah DAHDI device TDMP400P dengan 4 buah port seperti dibawah ini dan akan menggunakan port 4 (atau channel 4) khusus untuk fax :</p>
<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/dahdi-channels.png"><img class="alignnone size-full wp-image-555" title="dahdi-channels" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/dahdi-channels.png" alt="" width="366" height="223" /></a></p>
<p>Pertama yang akan kita lakukan adalah mengubah context dari <em>from-pstn</em> ke<em> from-zaptel</em> dengan mengedit file <em>/etc/asterisk/dahdi-channels.conf</em> seperti dibawah ini :</p>
<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/dahdi-cfg.png"><img class="alignnone size-full wp-image-554" title="dahdi-cfg" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/dahdi-cfg.png" alt="" width="357" height="153" /></a></p>
<p>Jika ingin menggunakan channel tersebut <em>dedicated </em>buat fax (<em>no outgoing calls</em>), maka <em>group </em>juga diubah (<em>default: group=0</em>).</p>
<p>Kemudian dari menu <strong>Zap Channels DID</strong> tambahkan channel tersebut sesuai dengan DID yang diinginkan. Ini bisa diisi dengan sembarang nomor, namun agar lebih mudah maka kita isi dengan nomor telepon fax tersebut misalnya kita isi dengan nomor telepon <em>12345678 </em>seperti gambar berikut ini :</p>
<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/freepbx-did.png"><img class="alignnone size-full wp-image-556" title="freepbx-did" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/freepbx-did.png" alt="" width="595" height="221" /></a></p>
<p>Baru kita buat aturan dari menu <strong>Inbound Routes</strong> untuk memberitahu Asterisk agar meneruskan setiap panggilan yang masuk ke channel 4 ke ekstension <em>200 </em>:</p>
<p><a href="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/freepbx-inbound-route.png"><img class="alignnone size-full wp-image-557" title="freepbx-inbound-route" src="http://layangan.com/asfik/blog/wp-content/uploads/2010/08/freepbx-inbound-route.png" alt="" width="455" height="366" /></a></p>
<p>Perlu diperhatikan bahwa dalam beberapa hal file <em>dahdi-channels.conf</em> bisa saja berubah oleh program lain setiap server <em>reboot</em>, silakan diperiksa kembali :)</p>
]]></content:encoded>
			<wfw:commentRss>http://layangan.com/asfik/blog/2010/08/08/freepbx-inbound-route-dengan-did/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
			<coop:keyword><![CDATA[ComSci]]></coop:keyword>
		<coop:keyword><![CDATA[asterisk]]></coop:keyword>
		<coop:keyword><![CDATA[freepbx]]></coop:keyword>
	</item>
		<item>
		<title>Sedikit Catatan Migrasi Vpopmail ke Zimbra</title>
		<link>http://layangan.com/asfik/blog/2010/08/01/sedikit-catatan-migrasi-vpopmail-ke-zimbra/</link>
		<comments>http://layangan.com/asfik/blog/2010/08/01/sedikit-catatan-migrasi-vpopmail-ke-zimbra/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 02:51:47 +0000</pubDate>
		<dc:creator>Asfihani</dc:creator>
				<category><![CDATA[ComSci]]></category>
		<category><![CDATA[Zimbra]]></category>
		<category><![CDATA[howto]]></category>

		<guid isPermaLink="false">http://www.layangan.com/asfik/blog/?p=500</guid>
		<description><![CDATA[Berikut ini sedikit catatan pengalaman saya yang mungkin bermanfaat sewaktu memigrasikan sejumlah account email (350+) dari vpopmail ke Zimbra beberapa waktu yang lalu. Dalam catatan ini saya akan bahas secara garis besarnya aja. Sebelumnya perlu diingat bahwa memigrasikan sebuah sistem ke sistem lain itu lebih rumit dari pada membuat sistem baru. Maka dari itu persiapkanlah]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-521 floatleft" style="border: 0px;" title="zimbra_logo" src="http://www.layangan.com/asfik/blog/wp-content/uploads/2010/08/zimbra_logo.jpg" alt="zimbra_logo" width="120" height="40" />Berikut ini sedikit catatan pengalaman saya yang mungkin bermanfaat sewaktu memigrasikan sejumlah account email (350+) dari <a href="http://www.inter7.com/vpopmail/">vpopmail </a>ke <a href="http://www.zimbra.com/">Zimbra</a> beberapa waktu yang lalu. Dalam catatan ini saya akan bahas secara garis besarnya aja.</p>
<p>Sebelumnya perlu diingat bahwa memigrasikan sebuah sistem ke sistem lain itu <strong><em>lebih rumit</em></strong> dari pada membuat sistem baru. Maka dari itu persiapkanlah jauh-jauh hari apa yang bisa dikerjakan terlebih dahulu, meskipun itu hal yang kecil (misalnya dokumentasi) sehingga dalam proses migrasi nanti berjalan <em>smooth</em> dan Anda tidak jatuh dalam <a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself">DRY/DIE</a>. Jangan lupa catat semua yang dilakukan agar mempermudah <em>tracking</em> jika ada sesuatu yang tidak berjalan.</p>
<p><span id="more-500"></span>Beberapa hal yang perlu dipersiapkan sebelum migrasi dari sistem lama adalah :</p>
<ul>
<li>Daftar account dan informasi pendukung yang dibutuhkan seperti password, nama lengkap dan quota</li>
<li>Daftar <em>mailing-list</em></li>
<li>Daftar alias (forward .qmail)</li>
<li>Data <em>address book </em>webmail (jika ada)</li>
</ul>
<p>Kemudian pada sistem baru  sebaiknya :</p>
<ul>
<li>Zimbra diinstall pada partisi yang cukup (paling) besar, lebih baik partisi <em>/opt</em> dipisahkan</li>
<li>Mengaktifkan <em>clear-text</em> login pada servis IMAP (digunakan untuk sinkronisasi mailbox)</li>
<li>Mensetting IMAP agar menerima mail dengan ukuran besar (misalnya 50MB) untuk mengantisipasi email ukuran besar dari sistem lama (<em>zimbraMtaMaxMessageSize </em>dan<em> zimbraMailContentMaxSize</em>)</li>
</ul>
<p><strong>Account</strong></p>
<p><span style="font-style: normal;">Data user (account) yang akan dimigrasikan bisa diambil dari</span><em> vpasswd. </em>Data tersebut meliputi account, password (yang dienkripsi), clear password (kecuali jika vpopmail dikompile dengan -<em>-disable-clear-passwd</em>), nama lengkap dan quota. Sebagian penjelasan struktur field <em>vpasswd </em>adalah seperti ini (seperti yang dijelaskan oleh pak Ken Jones <a href="http://osdir.com/ml/mail.vpopmail/2002-09/msg00064.html">disini</a>) :</p>
<p><img class="alignnone size-full wp-image-511" style="border: 0px none;" title="passwd" src="http://www.layangan.com/asfik/blog/wp-content/uploads/2010/08/passwd1.jpg" alt="passwd" width="619" height="94" /></p>
<p>Dengan memanfaatkan perintah <a href="http://wiki.zimbra.com/wiki/Zmprov"><em>zmprov</em></a>, maka account yang telah ada tersebut bisa dibuat di server baru dengan melakukan <em>looping</em> pada file tersebut. Contoh perintah untuk membuat <em>asfik@domain.tld</em> (nama lengkap <em>Asfihani</em>) dengan password <em>rahasia </em>adalah :</p>
<p><code>zmprov ca asfik@domain.tld rahasia displayName 'Asfihani'</code></p>
<p><strong>Password</strong></p>
<p>Di Zimbra selain bisa menerima argumen clear-password pada saat membuat account, bisa dimungkinkan untuk mengganti account yang telah ada dengan cara memodifikasi atribut <em>userPassword </em>account ybs. Yang sudah saya coba adalah algoritma enkripsi CRYPT.  Cara ini sangat berguna untuk memigrasikan sebuah sistem lama ke sistem yang baru tanpa mengganti password user lama. Sehingga dari sisi pengguna, migrasi ini berjalan secara transparan tanpa ada proses reset password.</p>
<p><strong>Quota</strong></p>
<p>Informasi quota di vpopmail bisa diambil dari file vpasswd. Dengan mengubah attribut <em>zimbraMailQuota </em>kita dapat menerapkan quota tersebut.  Contoh untuk menerapkan quota 20MB (20971520 bytes) pada account <em>asfik@domain.tld</em> dengan <em>zmprov </em>adalah :</p>
<p><code>zmprov ma asfik@domain.tld zimbraMailQuota 20971520</code></p>
<p><strong>Mailbox</strong></p>
<p>Data paling penting yang harus dipindahkan tentunya adalah email-email account atau kita sebut saja mailbox. Untuk memindahkan data tersebut kita manfaatkan tool <a href="http://www.linux-france.org/prj/imapsync/">imapsync</a> yang berfungsi untuk menyalin data dari sistem lama ke sistem baru menggunakan protokol IMAP. Contoh untuk memigrasikan account <em>asfik@domain.tld</em> dari server lama (<em>10.126.10.10</em>) ke localhost (Zimbra) dengan password <em>rahasia </em>menggunakan imapsync adalah sebagai berikut :<br />
<code><br />
imapsync --buffersize 8192000 --nosyncacls --subscribe --syncinternaldates --noauthmd5 \<br />
--host1 10.126.10.10 --user1 asfik@domain.tld --password1 rahasia \<br />
--host2 127.0.0.1 --user2 asfik@domain.tld --password2 rahasia<br />
</code></p>
<p>Proses ini memakan waktu cukup lama. Pengalaman saya memindahkan 350 mailbox secara sekuensial dengan ukuran total 20 GB memakan waktu +- 5 jam! Mungkin jika Anda mempunya sumber daya perangkat yang memadai hal ini bisa dicoba dilakukan secara pararel :)</p>
<p><strong>Alias</strong></p>
<p>Alias (atau dot-forward) di vpopmail bisa dilihat pada direktori domain ybs dengan memperhatikan file<em> .qmail-*</em> atau menggunakan tool <a href="http://www.inter7.com/qmailadmin.html">qmailadmin</a>. Contoh untuk menambahkan alias <em>asfihani@domain.tld</em> ke account <em>asfik@domain.tld</em> :</p>
<p><code>zmprov aaa asfik@domain.tld asfihani@domain.tld</code></p>
<p><strong>Mailing-list</strong></p>
<p>Memindahkan mailing-list dari sistem vpopmail (tepatnya <a href="http://www.ezmlm.org/">ezmlm</a>) ke Zimbra memang sedikit <em>tricky</em>. Hal ini disebabkan karena Zimbra belum ada fitur mailing list seperti ezmlm. Memang sudah ada <em>Distribution List</em> yang sudah cukup untuk sekedar meneruskan email ke beberapa orang, namun fitur-fitur sebuah mailing-list seperti proteksi posting hanya dari member masih belum bisa dilakukan.</p>
<p>Untuk mengatasi hal ini kita gunakan GNU <a href="http://www.gnu.org/software/mailman/index.html">Mailman</a> dengan Apache dan Postfix yang listen di port yang lain (karena port default sudah digunakan oleh Zimbra). Kemudian pada Zimbra kita buat seluruh email alias dari Mailman tersebut (<em>admin, bounces, confirm, join, leave, owner, request, subscribe, unsubscribe</em>) untuk diredirect ke Postfix pada port alternatif tersebut dengan cara mengubah atribut <em>zimbraMailTransport</em>. Kalau digambarkan flow email yang mengarah ke mailing list kira-kira seperti ini:</p>
<p><img class="alignnone size-full wp-image-506" style="border: 0px;" title="zimbra_mailman" src="http://www.layangan.com/asfik/blog/wp-content/uploads/2010/08/zimbra_mailman.jpg" alt="zimbra_mailman" width="360" height="388" /></p>
<p>Untuk melihat mailing-list yang ada di sistem lama bisa menggunakan tool qmailadmin  atau beberapa perintah berikut ini yang mungkin bisa membantu:</p>
<p>Daftar moderator:<br />
<code>$ezmlm-list DIR/mod/</code></p>
<p>Daftar member:<br />
<code>$ezmlm-list DIR/</code></p>
<p>Prefix subject mailing list :<br />
<code>$cat DIR/prefix</code></p>
<p>Footer (jika ada) :<br />
<code>$cat DIR/text/trailer</code></p>
<p>Dimana DIR adalah direktori mailing-list,  misalnya:<em> /home/vpopmail/domains/domain.tld/list-name</em></p>
<p>Update: jika Anda tidak ingin menginstall Postfix dan Apache tambahan bisa mengikuti <a href="http://www.zimbra.com/forums/administrators/1380-solved-zimbra-mailman-howto.html">tutorial ini</a> (Thanks Mas Dudi).</p>
<p><strong>Address Book</strong></p>
<p>Jika sistem lama menggunakan <a href="http://squirrelmail.org/">Squirrelmail</a> sebagai webmailnya, maka data address book masing-masing user bisa dikonversi menjadi format <a href="http://en.wikipedia.org/wiki/Comma-separated_values">CSV</a>. Di Zimbra, import address book (<em>Contact</em>) menerima file CSV dengan format sebagai berikut :</p>
<p><code>"First Name","Last Name","E-mail Address","E-mail Display Name"</code></p>
<p>Untuk mengimport file address book di Zimbra bisa memanfaatkan perintah <a href="http://wiki.zimbra.com/wiki/Zmmailbox">zmmailbox</a>, misalnya perintah untuk mengimport file <em>asfik_domain_tld.csv</em> yang berisi address book ke account <em>asfik@domain.tld</em> :</p>
<p><code>zmmailbox -z -m asfik@domain.tld pru /Contacts asfik_domain_tld.csv</code></p>
<p>&#8212;</p>
<p>Demikian sedikit catatan yang mungkin berguna. Tertarik melakukan migrasi atau punya pengalaman yang bisa dishare? Silakan menulis komentar dibawah ini :)</p>
]]></content:encoded>
			<wfw:commentRss>http://layangan.com/asfik/blog/2010/08/01/sedikit-catatan-migrasi-vpopmail-ke-zimbra/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
			<coop:keyword><![CDATA[ComSci]]></coop:keyword>
		<coop:keyword><![CDATA[Zimbra]]></coop:keyword>
		<coop:keyword><![CDATA[howto]]></coop:keyword>
	</item>
		<item>
		<title>CodeIgniter: resizing image using SimpleImage</title>
		<link>http://layangan.com/asfik/blog/2010/07/12/codeigniter-resizing-image-using-simpleimage/</link>
		<comments>http://layangan.com/asfik/blog/2010/07/12/codeigniter-resizing-image-using-simpleimage/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 09:29:16 +0000</pubDate>
		<dc:creator>Asfihani</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[ComSci]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.layangan.com/asfik/blog/?p=477</guid>
		<description><![CDATA[The CodeIgniter (CI) framework is powerfull tool for rapid PHP application development. It has a lot of ready to use libraries and helpers. For example the Image Manipulation library resize function that lets you resize the original image, create a copy (with or without resizing), or create a thumbnail image. But, there is a minor]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-494 floatleft" style="border: 0pt none;" title="ci_logo2" src="http://www.layangan.com/asfik/blog/wp-content/uploads/2010/07/ci_logo.jpg" alt="ci_logo2" />The CodeIgniter (CI) framework is powerfull tool for rapid PHP application development. It has a lot of ready to use libraries and helpers. For example the <a href="http://codeigniter.com/user_guide/libraries/image_lib.html">Image Manipulation</a> library resize function that lets you resize the original image, create a copy (with or without resizing), or create a thumbnail image. But, there is a minor problem when resize image with main ratio enabled. For example, if you want to resize an 256px x256px earth images below to 128px x 128px.</p>
<p><span id="more-477"></span><img class="alignnone size-full wp-image-481" title="earth" src="http://www.layangan.com/asfik/blog/wp-content/uploads/2010/07/earth.jpg" alt="earth" width="256" height="256" /></p>
<p>The snippet Controller code :</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'image_library'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'gd2'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'source_image'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> FCPATH <span style="color: #339933;">.</span><span style="color: #0000ff;">'images/earth.jpg'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'create_thumb'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'maintain_ratio'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'width'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">128</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>load<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>library<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'image_lib'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$config</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>image_lib<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>resize<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span>FCPATH <span style="color: #339933;">.</span><span style="color: #0000ff;">'images/earth_thumb.jpg'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;img src=&quot;/images/earth_thumb.jpg&quot; alt=&quot;&quot; /&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>The result is 128px x 256px image :</p>
<p><img class="alignnone size-full wp-image-483" title="earth_thumb" src="http://www.layangan.com/asfik/blog/wp-content/uploads/2010/07/earth_thumb.jpg" alt="earth_thumb" width="128" height="256" /></p>
<p>Not as expected…until you have specified  <em>$config['height'] </em> value :) like  <em>$config['height'] = 128 </em> :)</p>
<p>Alternatively, there is excellent class called <a href="http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php">SimpleImage</a> by Simon Jarvis. We can use this class as library in CodeIgniter. First, create file <em>Simple_image.php</em> inside <em>system/application/libraries/ </em>directory and paste the code from above link. After php tags add :</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span> <span style="color: #990000;">defined</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'BASEPATH'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'No direct script access allowed'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Modify :</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> SimpleImage <span style="color: #009900;">&#123;</span></pre></div></div>

<p>To :</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Simple_image <span style="color: #009900;">&#123;</span></pre></div></div>

<p>Dont forget to remove php closing tag (?&gt;) at the end of the file as stated <a href="http://codeigniter.com/user_guide/general/styleguide.html#php_closing_tag">here</a>. And let&#8217;s call the library inside the code :</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>load<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>library<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'simple_image'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>simple_image<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span>load<span style="color: #009900;">&#40;</span>FCPATH <span style="color: #339933;">.</span><span style="color: #0000ff;">'images/earth.jpg'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>simple_image<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>resizeToWidth<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>simple_image<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>save<span style="color: #009900;">&#40;</span>FCPATH <span style="color: #339933;">.</span><span style="color: #0000ff;">'images/earth_thumb.jpg'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span>FCPATH <span style="color: #339933;">.</span><span style="color: #0000ff;">'images/earth_thumb.jpg'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;img src=&quot;/images/earth_thumb.jpg&quot; alt=&quot;&quot; /&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>The code render image with correct size :</p>
<p><img class="alignnone size-full wp-image-489" title="earth_thumb2" src="http://www.layangan.com/asfik/blog/wp-content/uploads/2010/07/earth_thumb2.jpg" alt="earth_thumb2" width="128" height="128" /></p>
<p><em>Image source: http://twitrounds.com/</em></p>
]]></content:encoded>
			<wfw:commentRss>http://layangan.com/asfik/blog/2010/07/12/codeigniter-resizing-image-using-simpleimage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
			<coop:keyword><![CDATA[CodeIgniter]]></coop:keyword>
		<coop:keyword><![CDATA[ComSci]]></coop:keyword>
		<coop:keyword><![CDATA[programming]]></coop:keyword>
	</item>
	</channel>
</rss>

