Tutorial GTK garlic
Visualisasi Molekul dengan garlic garlic, free molecular visualization program, protein structure, DNA structure, PDB, molecular rendering, biological macromolecule, unix, linux, free software download, open source software, Damir Zucic.
H
arus diakui bahwa sekolahsekolah di Indonesia kebanyakan menggantungkan dirinya kepada program-program yang proprietary. Bahkan terkadang sampai kalangan beberapa universitas pun berpendapat bahwa software proprietary adalah solusi yang terbaik untuk komputasi, mengingat tren pasar dan ketersediaan dukungan dari vendor. Sebagai pendukung free software, alangkah baiknya apabila kita mampu menerobos ke setiap pelosok ilmu pendidikan dan meningkatkan produktivitas dengan menggunakan free software tersebut. Tulisan kali ini akan menerobos ke bidang ilmu yang mempelajari molekular dan memperkenalkan garlic untuk meningkatkan daya kreasinya. Ya, Anda dapat menggunakan garlic untuk memvisualisasikan molekul, struktur protein, struktur DNA, makromolekul biologi dan hal sejenis lainnya dalam suatu antarmuka yang mudah. Jauh lebih mudah apabila Anda menggunakan program pengolah citra ataupun pengolah vektor untuk membuatnya secara manual. Dan jauh
50
Gambar 1. Antarmuka garlic
INFOLINUX MEI 2003
lebih lebih stabil daripada program molekular lainnya, menurut sang pembuat, DR. Damir Zucic. Segala visualisasi yang Anda buat akan membuat Anda terus, terus, terus, dan terus ingin mencipta, dengan bantuan garlic. Mari...
garlic dan cara penggunaannya garlic lahir pada akhir bulan September 1998, ketika sang penciptanya memerlukan visualisator yang baik untuk gambar molekul. Bosan mencobacoba dengan RasMol, akhirnya sang jenius ini mempelajari pemrograman X dan mempersembahkan garlic sebagai proyek pertamanya yang serius. Nama garlic dapat diartikan sebagai sebuah inti yang dilengkapi dengan berbagai pelengkap di luarnya, kurang lebih sama seperti bawang putih. garlic juga dapat diartikan sebagai singkatan dari GNU, Analysis and Rendering, LInux, serta C (bahasa C). Anda bisa mendapatkan garlic di situsnya, http://pref.etfos.hr/sources/ garlic/. Anda bisa membaca petunjuk langkah demi langkah untuk melakukan kompilasi yang telah ditulis dengan sangat baik. Apabila menggunakan Debian, Anda dapat memberikan perintah apt-get install garlic garlic-doc. garlic telah dimasukkan sebagai paket standar dari distro Debian GNU/ Linux. Asumsikan garlic telah terinstalasi, Anda
www.infolinux.web.id
bisa menjalankannya dengan perintah garlic. Dan sebuah window pun akan dihadirkan kepada Anda. Sebuah antarmuka yang menyebalkan apabila kita belum menyelam ke dalamnya, dan harus diakui sebagai antarmuka yang luar biasa seiring dengan penggunaan. (Hampir) semua dari kontrol program garlic dapat dilakukan dengan menggunakan keyboard. Hampir semua perintah dapat diberikan dalam bentuk pendek tiga karakter. Berikut ini kita akan melihat perintah-perintah alam garlic. ADD ADD Melakukan ekspansi pada. seleksi yang sedang aktif. ANG ANGLE Mendefinisikan derajat. ATO ATOMS Mengubah gaya penggambaran untuk atom. BAC BACKBONE Menggambar tulang belakang (backbone). BACKG BACKGROUND Mengubah warna latar belakang window utama. BG BACKGROUND Sama seperti BACKG. BON BONDS Mengubah gaya penggambaran rangka. CAT CATCH Mengaktifkan suatu struktur. CEN CENTER Mengubah sistem koordinat internal. COL COLOR Mengatur warna. COM COMPARE Membandingkan dua sekuens. DIS DISCARD Mengabaikan perubahan pada struktur. DOC DOCK Menyiapkan dua struktur untuk docking. EXE EXECUTE Menjalankan script garlic. EXI EXIT Keluar dari sesi garlic. EXP EXPAND Sama seperti ADD. FAD FADING Mengubah parameter color fading. FG FOREGROUND Mengubah warna window utama. FON FONT Mengubah font. FOREG FOREGROUND Sama seperti FG.
Tutorial Tutorialgarlic GTK
Gambar 2. Membuka struktur dari file
Memanipulasi buffer. Menampilkan atom terpilih. Mengubah parameter slab. Mengubah gaya penggambaran untuk rangka disulfida. STE STEREO Mengubah ke modus steroe. TAG TAG Meng-assign tag untuk suatu struktur. TAK TAKE Sama seperti CATCH. TBG TEXT_BACKGROUND Mengubah warna teks latar. TFG TEXT_FOREGROUND Memeriksa warna teks. TIT TITLE Menambahkan judul ke window utama. TRA TRANSLATE Menerjemahkan struktur. VEN VENN Menggambar diagram Venn. WHE WHEEL Menggambar roda helikal. WIN WINDOW Mengatur lebar sliding pada window. SHO SHOW SLA SLAB SSB SSB
1 2 3
4 5 6 7 8 9 delete
enter Setiap perintah tersebut dapat diketikan setiap saat. Selain perintah pada garlic, ada baiknya bagi kita untuk mengetahui tombol-tombol keyboard yang dapat digunakan untuk mempercepat navigasi. Anda juga bisa menggunakan mouse dan mengklik pada tombol yang tersedia. Untuk penggunaan keyboard, garlic menggunakan tombol fungsi (F1, F2...) dan keypad yang terletak di bagian kanan keyboard. Berikut ini adalah referensi singkat untuk navigasi menggunakan keyboard.
Menyembunyikan atom yang telah dipilih. HYB HYBONDS Membuat tulang-tulang hidrogen. IGN IGNORE Tidak melakukan apa-apa. LAB LABELS Menampilkan label. LOA LOAD Membuka file. LOG LOG menulis perintah ke dalam file log. MON MONO Berpindah ke modus mono. MOV MOVE Mendefinisikan object yang ingin dipindahkan. NEI NEIGHBORHOOD Menampilkan atau menyembunyikan object tetangga. PAU PAUSE Melakukan pause (untuk eksekusi script). PLA PLANE Manipulasi plane. PLO PLOT Melakukan plot untuk averaged hydrophob. POS POSITION Memindahkan struktur ke lokasi tertentu. QUI QUIT Sama seperti EXIT. RAD RADIUS Mendefinisikan ukuran jarijari bola. RAM RAMACHANDRAN Menggambar plot Ramachandran. REA READ Sama seperti LOAD. REG REGISTER Melakukan registrasi garlic. RES RESTRICT Membatasi seleksi aktif. ROT ROTATE Melakukan rotasi atas struktur. SAV SAVE Menyimpan ke dalam file. SCA SCALE Memilih skala hydrophobicity. SEL SELECT Memilih atom. SEQ SEQUENCE
HID HIDE
/ * + F1
F2
Memindahkan kembali permukaan slab pada sumbu sesuai arah positif. Melakukan rotasi pada struktur searah jarum jam pada sumbu x. Memindahkan kembali permukaan slab pada sumbu z sesuai arah: negatif. Melakukan rotasi pada struktur searah jarum jam pada sumbu y. Memindahkan struktur pada sumbu z sesuai arah positif. Melakukan rotasi berlawanan arah jarum jam pada sumbu y. Melakukan rotasi berlawanan arah jarum jam pada sumbu z. Melakukan rotasi berlawanan arah jarum jam pada sumbu x. Melakukan rotasi searah jarum jam pada sumbu z. Memindahkan permukaan slab yang dekat pada sumbu z sesuai arah positif. Memindahkan permukaan slab yang dekat pada sumbu z sesuai arah negatif. Memindahkan struktur ke kiri. Memindahkan struktur ke kanan (minus) memindahkan struktur ke atas (plus) memindahkan struktur ke bawah. Memindahkan permukaan warna belakang pada sumbu z sesuai arah positif. Memindahkan permukaan warna belakang pada sumbu z sesuai arah negatif.
Gambar 3. Merotasikan struktur
www.infolinux.web.id
INFOLINUX MEI 2003
51
Gambar 4. Memindahkan struktur
Gambar 5. Mendekatkan struktur
Gambar 6. Memodifikasi ukuran rangka
Tutorial GTK garlic
Gambar 7. Mengubah gambar atom menjadi gambar bola
F3
Memindahkan permukaan warna depan pada sumbu z sesuai arah positif. F4 Memindahkan permukaan warna depan pada sumbu z sesuai arah negatif. Escape Kembali ke modus penggambaran utama. Efek dari kontrol-kontrol tersebut masih dapat dimodifikasi ukurannya dengan tombol pengubah berikut ini: shift besar alt_shift besar sekali control kecil shift_control kecil sekali Sehingga penekanan alt_shift / akan memindahkan struktur ke kiri dalam jarak yang sangat besar.
52
INFOLINUX MEI 2003
Mulai! Mulai! Mulai! Berikut ini kita akan memodifikasi sebuah struktur asam amino tunggal yang disediakan dalam bentuk yang sangat sederhana menjadi bentuk visualisasi yang mencengangkan! Anda bisa melupakan mouse untuk sementara. Setiap langkah akan melibatkan penggunaan tombol-tombol keyboard. Langkah-langkahnya adalah: 1 . Jalankan garlic. Setelah dijalankan, garlic akan menampilkan sebuah window. 2 . Kita perlu menggunakan sebuah struktur yang telah disediakan garlic. Untuk itu, kita perlu membuka sebuah file dengan nama trp.pdb. File tersebut umumnya terletak di / usr/share/doc/garlic/examples/. Cobalah mencari ke lokasi lain
www.infolinux.web.id
apabila distro Anda meletakkannya di tempat yang berbeda. Perhatikan juga prefix kompilasi apabila Anda melakukan kompilasi sendiri. Berikan perintah: loa /usr/share/doc/garlic/examples/ trp.pdb Sekarang, seharusnya area kerja garlic Anda telah menampilkan sebuah struktur asam amino. (lihat Gambar 2.) 3 . Bermain-mainlah dengan tombol 4,6,2 dan 8 untuk melakukan rotasi. Anda juga dapat menggunakan perintah rot untuk merotasikan struktur. Contoh penggunaan perintah rot adalah: rot x 90 untuk merotasikan struktur sebesar 90 derajat pada sumbu x. Setelah
4.
5.
6.
7.
mencoba, kembalikanlah struktur dalam pandangan awal. (lihat Gambar 3.) Bermain-mainlah dengan tombol / ,*,- dan + untuk melakukan perpindahakan posisi struktur. Anda dapat pula menggunakan perintah pos untuk memindahkan struktur ke posisi yang spesifik. Contoh penggunaan pos adalah: pos 0 0 0 yang akan memindahkan struktur ke tengah-tengah layar. Setelah selesai mencoba, berikan perintah pos 0 0 0. (lihat Gambar 4.) Berikan perintah pos 0 0 -120 untuk mendekatkan struktur ke mata kita. (lihat Gambar 5.) Berikan perintah bon 0 untuk menggambar rangka dengan ukuran pixel 0. Karena digambar dengan ukuran pixel 0, maka rangka menjadi tidak kelihatan. Anda juga bisa mencoba ukuran rangka yang lain dengan memberikan nilai dari 0 sampai 5 untuk perintah bon. Setelah mencoba-coba, berikan perintah bon 4. (lihat Gambar 6.) Berikan perintah ato bal untuk menggantikan gambar atom menjadi gambar bola. Untuk memperindah gambar atom, Anda mungkin menginginkan parameter ba2 untuk perintah ato. Selain bal dan ba2, Anda bisa juga mencoba big, bi2, spa, sp2. Setelah mencoba-coba, berikan perintah ato ba2. (lihat Gambar 7.)
Gambar 8. Memberikan kesan membara pada atom
Gambar 9. Penambahan plane dan label
8 . Sekarang kita akan bermainmain dengan warna. Anda bisa mencoba untuk memberikan perintah col dengan nilainilai berikut sebagai parameternya: red, green, blue, yellow, cyan, magenta, white, yellowGambar 10. Sentuhan personal struktur asam amino green, cyanmelakukan loa sebanyak jumlah struktur grezen, cyan-blue, magenta-blue, apabila semuanya disimpan di dalam magenta-red, orange, hot, cold, cpk. file. Kemudian berikan perintah cat Setelah mencoba-coba, berikan
untuk memilih struktur dimana n perintah col hot. (lihat Gambar 8.) adalah nomor urut struktur dimulai dari 9 . Sebagai sentuhan akhir, berikan 1. Setelah berhasil memilih suatu perintah plane dan label. Bagaimana struktur, Anda bebas untuk pendapat Anda tentang struktur memodifikasinya seperti langkahasam amino kita sekarang? langkah sebelumnya. Untuk keluar tanpa Bagaimana perbandingan dengan menyimpan Anda bisa menggunakan gambar awal? (lihat Gambar 9.) perintah dis all. Untuk menyimpan 10. Kreasikan struktur asam amino berikan perintah sav. Anda dengan menekan tombol F1, Bagaimana kesan Anda tentang F2, F3, dan F4. Jadikanlah ini program ini? Belajar kimia dan biologi sebagai sentuhan personal Anda menjadi lebih menyenangkan ? Mari kita yang penuh kreativitas! (lihat buktikan bahwa sekolah akan lebih Gambar 10.) menyenangkan apabila kita menggunakan sistem operasi GNU/Linux dan Berikut ini adalah petunjuk bagi Anda free software lainnya. Salam. yang ingin bekerja dengan beberapa Noprianto ([email protected]) struktur sekaligus. Anda harus
Tutorial Tutorialgarlic GTK
www.infolinux.web.id
INFOLINUX MEI 2003
53
Tutorial C++ GTK
Expad, Editor Multifile dengan Qt Bagian 2 dari 3 Artikel Sebagaimana disinggung di bagian sebelumnya, Expad akan merupakan sebuah editor teks dengan fitur tab editing. Bagian kedua ini akan mengupas mengenai teknik implementasi fitur tersebut.
A
pakah susah mewujudkan sebuah sistem penyunting teks dengan kemampuan tab editing? Ternyata tidak. Triknya adalah dengan menampung si editor (lihat kelas Editor di bagian pertama) dalam tab-tab sendiri. Qt telah menyediakan widget bernama QTabWidget. Untuk membubuhkan sedikit perluasan kemampuannya, QTabWidget akan dimodifikasi menjadi kelas baru yang bernama Tab.
Tab Kelas Tab dideklarasikan pada file tab.h di bawah ini: #ifndef __TAB_H #define __TAB_H
Melihat definisi widget Tab di file header tab.h jelaslah bahwa widget ini persis seperti induknya, QTabWidget, dengan hanya fungsi-fungsi ekstra untuk menambahkan sebuah widget Editor baru menjadi salah satu tabnya atau menghapus tab yang sudah ada. Tab-tab di QTabWidget biasa disebut page dan inilah yang akan di-cast ke widget Editor. Sederhana saja, bukan? Implementasi kelas Tab cukup pendek dan dituangkan dalam file tab.cpp sebagaimana ditunjukkan di bawah ini: #include “tab.moc” #include “editor.h” #include #include // — implementation of Tab —-
class Editor;
public: Tab( QWidget * parent=0, const char * name=0, WFlags f=0 ): QTabWidget( parent, name, f ) {}; int count(); void addEditor( Editor* e, const QString& t ); Editor* currentEditor(); void removeEditor( Editor* e ); }; #endif
54
INFOLINUX MEI 2003
if( !e ) return; addTab( e, t ); setCurrentPage( count() - 1 ); e->show(); show(); } void Tab::removeEditor( Editor* e ) { if( !e ) return; removePage( e ); delete e; show(); } Editor* Tab::currentEditor() { return dynamic_cast<Editor*>( currentPage() ); } Fungsi anggota addEditor dan removeEditor, sesuai namanya, akan menyisipkan sebuah editor baru atau menghapus editor yang dimaksud. Tentu saja, editor tersebut harus dibuat terlebih dahulu karena bukan merupakan tanggung jawab si kelas Tab ini. Karena user dapat beralih-alih tab, maka sebuah fungsi tambahan currentEditor diperlukan untuk mengetahui editor mana yang kini tengah aktif.
Window utama: Expad
#include
class Tab: public QTabWidget { Q_OBJECT
{
int Tab::count() { return tabBar()->count(); } void Tab::addEditor( Editor* e, const QString& t )
Fungsionalitas paling berat ada pada kelas Expad sebagai widget yang merupakan window utama. Expad punya sejumlah slot yang berfungsi melakukan operasi file, penyuntingan, dan lain-lain. Lebih jelasnya, lihat file header expad.h berikut ini. #ifndef __EXPAD_H #define __EXPAD_H
dynamic_cast ? Ya, dynamic_cast adalah proses casting yang murni dialek C++. Anda tidak akan menemukannya di program C biasa. Berbeda dengan casting ala C yang hanya memaksakan satu tipe variabel ke tipe lainnya, dynamic_cast juga mengikutsertakan faktor mungkin tidaknya variabel tersebut di-casting. Contohnya dalam kasus untuk kelas Tab, variabel yang tipenya QWidget bisa dicasting ke tipe Editor, asal variabel tersebut memang merupakan sebuah Editor. Ini hanya mungkin karena Editor adalah turunan dari QTextEdit yang juga turunan dari QWidget.
www.infolinux.web.id
Tutorial C++ GTK
Tab
#include class Tab; class DirList; class QAction; class QWidget; class QSplitter;
Editor
class Expad: public QMainWindow { Q_OBJECT
Menu
DirList
public: Expad(); protected: void initActions(); void initMenu();
Unsur-unsur antarmuka dari Expad
QAction* ma_FileSaveAs; QAction* ma_FileClose; QAction* ma_FileCloseAll; QAction* ma_FileQuit;
private slots: void fileNew(); void fileOpen(); void fileSave(); void fileSaveAs(); void fileClose(); void fileCloseAll(); void fileQuit();
QAction* ma_EditUndo; QAction* ma_EditRedo; QAction* ma_EditCut; QAction* ma_EditCopy; QAction* ma_EditPaste; QAction* ma_EditSelectAll; QAction* ma_About;
void editUndo(); void editRedo(); void editCut(); void editCopy(); void editPaste(); void editSelectAll(); void about(); void tabChanged( QWidget* ); void openFile( const QString& filename ); private: // main widgets QSplitter* splitter; Tab *tabs; DirList* dirlist; // actions QAction* ma_FileNew; QAction* ma_FileOpen; QAction* ma_FileSave;
}; #endif Begitu banyak QAction yang ada di Expad mencerminkan pendekatannya yang sedikit berbeda soal penanganan input dari user. Sebuah QAction sendiri adalah abstraksi dari suatu tindakan tertentu yang berasal dari user. Contohnya, ma_FileNew adalah action untuk membuat dokumen baru. Selain melalui menu File, New, user dapat juga memicu action ini menggunakan keyboard dengan shortcut tertentu, dalam contoh ini adalah Ctrl+N. Keuntungannya adalah bahwa satu action saja bisa digunakan sebagai representasi item di menu program dan sebagai tombol shortcut sehingga terasa cukup mudah dan praktis. Implementasi kelas Expad diletakkan pada file tersendiri bernama expad.cpp.
www.infolinux.web.id
Karena cukup panjang, maka isi file tersebut akan dibahas secara tahap demi tahap sehingga tiap bagian pentingnya dapat teranotasi dengan jelas. Mula-mula, simaklah prolog file expad.cpp berikut konstruktor Expad berikut: #include “expad.moc” #include “editor.h” #include “dirlist.h” #include “tab.h” #include #include #include #include #include #include #include #include #include // — implementation of Expad —const char* app = “Expad”; Expad::Expad() : QMainWindow( 0, “Expad”, WDestructiveClose ) { initActions(); initMenu(); splitter = new QSplitter( this ); setCentralWidget( splitter );
INFOLINUX MEI 2003
55
Tutorial C++ GTK dirlist = new DirList( splitter); splitter->setResizeMode( dirlist, QSplitter::KeepSize ); connect( dirlist, SIGNAL( selected( const QString& ) ), this, SLOT( openFile( const QString& ) ) ); tabs = new Tab( splitter ); connect( tabs, SIGNAL( currentChanged( QWidget* ) ), this, SLOT( tabChanged( QWidget* ) ) ); fileNew(); statusBar()->message( “Ready”, 2000 ); resize( 450, 400 ); } Tanggung jawab terbesar si konstruktor adalah menyusun layout dari tampilan program. Sebagaimana bisa dilihat pada gambar sebelumnya, ada dua elemen utama dalam satu window, yaitu panel direktori (DirList) dan editor (Tab). Sudah sewajarnya kedua elemen ini tampil saling bersisian, namun dengan sebuah pembatas (splitter) yang dapat digerakkan untuk mengatur pembagian ruangan bagi keduanya. Dengan Qt, hal demikian menjadi mudah berkat widget QSplitter. Dua widget lain yang ingin dipisahkan tinggal menjadikan si splitter sebagai parent-nya. Sepintas, barangkali Anda bisa lihat bahwa urusan inisialisai tampilan lainnya dilakukan di fungsi initActions dan initMenu berikut:
void Expad::initActions() { ma_FileNew = new QAction( this ); ma_FileNew->setText( “New” ); ma_FileNew->setAccel( CTRL + Key_N ); connect( ma_FileNew, SIGNAL( activated() ), this, SLOT( fileNew() ) );
ma_EditRedo = new QAction( this ); ma_EditRedo->setText( “Redo”); connect( ma_EditRedo, SIGNAL( activated() ), this, SLOT( editRedo() ) );
ma_FileSave = new QAction( this ); ma_FileSave->setText( “Save” ); ma_FileSave->setAccel( CTRL + Key_S ); connect( ma_FileSave, SIGNAL( activated() ), this, SLOT( fileSave() ) ); ma_FileSaveAs = new QAction( this ); ma_FileSaveAs->setText( “Save As” ); connect( ma_FileSaveAs, SIGNAL( activated() ), this, SLOT( fileSaveAs() ) ); ma_FileClose = new QAction( this ); ma_FileClose->setText( “Close” ); ma_FileClose->setAccel( CTRL + Key_W ); connect( ma_FileClose, SIGNAL( acti vated() ), this, SLOT( fileClose() ) ); ma_FileCloseAll = new QAction( this ); ma_FileCloseAll->setText( “Close All” ); connect( ma_FileCloseAll, SIGNAL( activated() ), this, SLOT( fileCloseAll() ) );
Jika Anda programer Java, pastilah tidak asing dengan teknik Qt dalam melakukan pengaturan layout. Tetapi, bila Anda lebih familiar dengan kakas pengembangan di Windows seperti Borland Delphi atau Microsoft Visual Basic, layout bisa jadi membuat kepala pening. Memang, widgetwidget di Qt tidak memiliki posisi yang ditentukan oleh lokasi pikselnya. Masingmasing akan menempatkan dirinya sendiri sesuai tempat yang disediakan, dalam hal ini menjadi urusan si pengatur layout. Ada beberapa pilihan layout, seperti vertikal, horizontal, ataupun grid. Anda bahkan bisa memasang nested layout atau layout dalam layout. Cara termudah untuk mendesain layout yang tepat adalah dengan menggunakan aplikasi yang cocok untuk kebutuhan ini, yaitu Qt Designer. Dengan modal point-and-click, layout serumit apapun jadi mudah. Coba dan rasakan sendiri!
INFOLINUX MEI 2003
ma_EditUndo = new QAction( this ); ma_EditUndo->setText( “Undo”); ma_EditUndo->setAccel( CTRL + Key_Z ); connect( ma_EditUndo, SIGNAL( activated() ), this, SLOT( editUndo() ) );
ma_FileOpen = new QAction( this ); ma_FileOpen->setText( “Open” ); ma_FileOpen->setAccel( CTRL + Key_O ); connect( ma_FileOpen, SIGNAL( activated() ), this, SLOT( fileOpen() ) );
Manajemen layout
56
ma_FileQuit = new QAction( this ); ma_FileQuit->setText( “Quit” ); ma_FileQuit->setAccel( CTRL + Key_X ); connect( ma_FileQuit, SIGNAL( activated() ), this, SLOT( fileQuit() ) );
www.infolinux.web.id
ma_EditCut = new QAction( this ); ma_EditCut->setText( “Cut”); ma_EditCut->setAccel( CTRL + Key_X ); connect( ma_EditCut, SIGNAL( activated() ), this, SLOT( editCut() ) ); ma_EditCopy = new QAction( this ); ma_EditCopy->setText( “Copy”); ma_EditCopy->setAccel( CTRL + Key_C ); connect( ma_EditCopy, SIGNAL( activated() ), this, SLOT( editCopy() ) ); ma_EditPaste = new QAction( this ); ma_EditPaste->setText( “Paste”); ma_EditPaste->setAccel( CTRL + Key_V ); connect( ma_EditPaste, SIGNAL( acti vated() ), this, SLOT( editPaste() ) ); ma_EditSelectAll = new QAction( this ); ma_EditSelectAll->setText( “Select All”); ma_EditSelectAll->setAccel( CTRL + Key_A ); connect( ma_EditSelectAll, SIGNAL( activated() ), this, SLOT( editSelectAll() ) ); ma_About = new QAction( this ); ma_About->setText( “About...”); connect( ma_About, SIGNAL( activated() ), this, SLOT( about() ) ); } // initialize menu void Expad::initMenu() {
Tutorial C++ GTK QPopupMenu *file_menu = new QPopupMenu( this ); menuBar()->insertItem( “&File”, file_menu ); ma_FileNew->addTo( file_menu ); ma_FileOpen->addTo( file_menu ); file_menu->insertSeparator(); ma_FileSave->addTo( file_menu ); ma_FileSaveAs->addTo( file_menu ); file_menu->insertSeparator(); ma_FileClose->addTo( file_menu ); ma_FileCloseAll->addTo( file_menu ); file_menu->insertSeparator(); ma_FileQuit->addTo( file_menu ); QPopupMenu *edit_menu = new QPopupMenu( this ); menuBar()->insertSeparator(); menuBar()->insertItem( “&Edit”, edit_menu ); ma_EditUndo->addTo( edit_menu ); ma_EditRedo->addTo( edit_menu ); edit_menu->insertSeparator(); ma_EditCut->addTo( edit_menu ); ma_EditCopy->addTo( edit_menu ); ma_EditPaste->addTo( edit_menu ); edit_menu->insertSeparator(); ma_EditSelectAll->addTo( edit_menu ); QPopupMenu *help_menu = new QPopupMenu( this ); menuBar()->insertSeparator(); menuBar()->insertItem( “&Help”, help_menu ); ma_About->addTo( help_menu ); } Dalam fungsi Expad::initMenu() , sejumlah action yang diciptakan di Expad::initActions() disisipkan ke menu utama dan ke toolbar (jika memang ingin ada toolbar) hanya dengan memanggil fungsi addTo dari masing-masing action. Anda tidak perlu lagi membuat item menu khusus sebagaimana yang sudah-sudah (lihat lagi misalnya program QSimpleApp di InfoLINUX No. 8/2001). Selain menyederhanakan, teknik ini akan mengurangi duplikasi kode program yang tidak perlu. Pada slot-slot yang mengurusi file, yakni fileNew(), fileOpen(), fileSave(), fileSaveAs(), fileClose(), serta fileCloseAll(), sebagian besar hanya bertindak sebagai jembatan untuk memanggil fungsi-fungsi yang tepat dari Editor ataupun Tab.
Perhatikan fungsi Expad::openFile(). Dengan memberikan argumen berupa nama file yang ingin dibuka, fungsi tersebut akan mendelegasikan tugas pembukaan file tersebut ke Editor::load(). Barangkali Anda perlu melihat ulang bagian pertama tulisan ini untuk mencermati implementasi Editor::load(). // opens the given file as new document void Expad::openFile( const QString& filename ) { if( !filename.isEmpty() ) { Editor* editor = new Editor( tabs ); editor->setFilename( filename ); editor->load(); tabs->addEditor( editor, editor->title() ); } } Fungsi Expad::fileNew() lebih mudah lagi. Cukup buat saja editor baru dan sisipkan ke dalam kumpulan tab yang sudah ada. // creates a new blank document void Expad::fileNew() { Editor* editor = new Editor( tabs ); editor->setFilename( QString::null ); tabs->addEditor( editor, editor->title() ); } Beberapa fungsi lain untuk urusan file merupakan slot. Jadi bisa saja slot ini diaktifkan dari menu (via QAction yang tepat). Untuk itu, perlu juga ditanyakan kepada user nama file yang akan dibuka atau disimpan. Untunglah Qt menyediakan fasilitas kotak dialog yang sudah built-in, yaitu QFileDialog. // opens and loads a document void Expad::fileOpen() { QString filename; filename = QFileDialog::getOpenFileName( dirlist->dir(), QString::null, this); openFile( filename ); } // saves active document void Expad::fileSave() { Editor* editor = tabs->currentEditor();
www.infolinux.web.id
if( !editor) return; if( editor->filename().isEmpty() ) fileSaveAs(); editor->save(); } // saves document to a different name void Expad::fileSaveAs() { Editor* editor = tabs->currentEditor(); if( !editor) return; QString filename; filename = QFileDialog::getSaveFileName( dirlist->dir(), QString::null, this); if( !filename.isEmpty() ) { editor->setFilename( filename ); editor->save(); tabs->changeTab( editor, editor->title() ); } } // closes active document void Expad::fileClose() { Editor* editor = tabs->currentEditor(); if( !editor ) return; tabs->removeEditor( editor ); } // closes all document void Expad::fileCloseAll() { while( tabs->currentEditor() ) { Editor* editor = tabs->currentEditor(); tabs->removeEditor( editor ); } } Ariya Hidayat ([email protected])
Edisi berikutnya: Bagian terakhir akan mengupas mengenai mekanisme kerja dari operasi penyuntingan seperti copy, cut, paste, sekaligus merangkaikan kesemua kelas yang diperlukan menjadi satu aplikasi utuh. Jangan lewatkan pula unjuk gigi kemampuan Qt dengan ilustrasi untuk menghasilkan versi Windows dari Expad.
INFOLINUX MEI 2003
57
Tutorial GTK shell
Tampil Indah dengan shell Membuat aplikasi interaktif dan menarik di console tidak harus selalu menggunakan bahasa pemrograman yang rumit dengan memanggil pustaka yang rumit pula. Cobalah shell script terlebih dahulu...
S
alah satu fenomena yang cukup menarik untuk di amati di dunia UNIX dan GNU/Linux adalah lengketnya pengguna dengan aplikasi console. Tidak peduli seberapa indah dan mudah Nautilus misalnya, pengguna kerap kali masih lebih memilih program ls misalnya. Berbagai alasan pun dikemukakan. Mulai lambatnya aplikasi berbasis GUI sampai kesetiaan dengan program-program di console. Walau, memang tidak setiap pengguna GNU/Linux lantas membenci keindahan yang ditawarkan oleh berbagai desktop yang indah-indah tersebut. Sebagai seorang developer, tak jarang Anda menjumpai masalahmasalah yang seharusnya dapat diselesaikan dengan solusi yang tidak begitu rumit. Memberi peringatan kepada user-user di sistem ketika memasuki sesi sistem misalnya. Anda bisa saja meminta administrator sistem Anda untuk menambahkan sebaris perintah berikut: echo “Halo $LOGNAME, jangan nakalnakal ya...” Akan tetapi, perintah tersebut yang mungkin dimasukkan ke dalam file .bash_profile apabila Anda menggunakan BASH, rasa-rasanya kurang efektif walaupun dijalankan setiap kali user memasuki sesi sistem. Terlalu sederhana, terlalu tidak mencolok, terlalu kecil dan macammacam alasan lainnya. User pun seringkali kelupaan membaca pesanpesan satu baris semacam ini. Lantas bagaimana? Membuat newline banyak-banyak di awal dan akhir pesan peringatan? Ini mungkin saja merupakan solusi. Akan tetapi, bagaimana dengan permasalahan lain
58
INFOLINUX MEI 2003
seperti ketika user-user Anda meminta frontend untuk program cal? Alasannya bisa saja karena program yang berguna untuk menampilkan kalender itu kurang informatif, kurang mudah dan macammacam alasan lainnya. Sekali lagi, lantas bagaimana? Mengabaikan saja permintaan user rasa-rasanya bukan hal yang cukup bijak, walau membuat aplikasi sendiri untuk mencukupi kebutuhan user mungkin lebih tidak bijak lagi, apalagi kalau Anda memiliki segudang kerjaan. GNU/Linux hadir dengan sejumlah tool yang sebenarnya sangat berguna, akan tetapi terkadang sangat kurang dari sisi dandanannya. Tool-tool tersebut pun umumnya dapat menjadi solusi atas beberapa permasalahan. Jika ditambah dialog, atau whiptail, yang akan menjadi intisari dari artikel ini, berbagai tampilan indah akan muncul dan selamat tinggal hitam putih pun terucap. Semuanya menggunakan shell script dan tool-tool standar!
Shell script Kebanyakan distro saat ini datang bersama berbagai shell. Tinggal menyesuaikan selera, begitulah bahasa iklannya. Akan tetapi, apakah semua shell lantas mendukung shell script? Atau apakah shell script yang ditulis di BASH akan dapat terbaca di CSH misalnya? Atau apakah yang berhak menyandang gelar shell script hanyalah script yang dibuat oleh BASH, yag notabene adalah shell yang super komplit? Shell script hanyalah sekumpulan perintah (yang disimpan di dalam sebuah file) yang dijalankan oleh shell. Para veteran MS DOS akan menyebut ini kurang lebih seperti batch file. Pengguna MS DOS, yang mengenal satu jenis shell, yakni command.com
www.infolinux.web.id
,tidak akan bertanya-tanya tentang portabilitas. Sebuah shell yang akan menyandang predikat “dapat menjalankan shell script” haruslah komplian dengan standar POSIX. Oleh karena itulah, shell script yang Anda tulis di dalam shell yang menuruti standar POSIX tersebut, dapat dijalankan di shell manapun yang menuruti standar. BASH adalah contoh shell yang menuruti standar. Begitupun dengan shell-shell besar. Perbedaannya hanya pada perintah spesifik shell. Terus bagaimana dengan shell-shell kecil? Penulis kerapkali menggunakan ASH, shell yang cukup kecil dan tetap mampu menjalankan shell script yang ada. Berbagai shell default biasanya juga “mengaliaskan namanya” dengan sh untuk kompatibilitas.
Dialog dan Whiptail Ketikkan perintah berikut ini dan amati hasilnya: echo “Sehat-sehat saja, $LOGNAME ?” Kemudian ketikkan perintah lain berikut dan amati pula hasilnya: dialog —yesno “sehat-sehat saja, $LOGNAME?” 10 40 Apabila tidak terjadi pesan kesalahan, tentunya Anda bisa membandingkan tingkat keindahan dan interaktifitas di antara keduanya. Yang pertama hanya muncul dalam satu baris teks, sementara yang kedua hadir dalam sebuah kotak dialog lengkap dengan tombol YES dan NO. Keduanya ditulis dengan satu perintah! Bagi Anda yang menemui pesan kesalahan semacam dialog: command not found, berarti program dialog belum terinstal pada sistem Anda.
Kotak dialog dengan dialog
Kemudian gantilah kata dialog pada perintah yang kedua dengan whiptail dan cermati perbedaannya. whiltail —yesno “sehat-sehat saja, $LOGNAME?” 10 40 Keduanya memberikan tampilan yang kurang lebih mirip. Permasalahannya mungkin hanya pada masalah selera. Dialog dibangun di atas pustaka ncurses, sementara whiptail dibangun di atas pustaka newt. Pada whiptail yang penulis pakai (0.50.17 - Debian 3.0r0), kekurangan masih terdapat di sana sini, terutama apabila dibandingkan dengan dialog. Untuk selanjutnya, di dalam artikel ini, kita akan menggunakan dialog. Bagi Anda yang jatus cinta dengan whiptail, dalam beberapa contoh, Anda dapat mengganti tulisan dialog menjadi whiptail.
Dialog 101 Dialog dibuat untuk memudahkan para pembuat shell script dalam meningkatkan keindahan dan interaktivitas aplikasi. Apa saja yang datang bersama dialog? Mari kita lihat satu per satu.
msgbox Fitur yang satu ini mungkin termasuk dalam salah satu fitur standar. Message box dapat digunakan untuk memberikan pesan. Seorang administrator mungkin akan menyukai fitur
Kotak dialog dengan whiptail
yang satu ini, terutama apabila digunakan untuk menarik perhatian user ketika memasuki sesi sistem. Untuk memberikan pesan “halo” di atas sebuah kotak dialog berukuran 10x40 karakter, perintah berikut ini dapat digunakan. dialog —msgbox halo 10 40
dibedakan dengan opsi —backtitle) opsi —timeout <sec> untuk memberikan batas waktu sebelum dialog Anda keluar secara otomatis. Sangat baik apabila digunakan untuk pesan yang tidak terlalu penting, yang akan menutup otomatis setelah beberapa lama diabaikan.
Secara default, sebuah tombol dengan label “OK” telah tersedia untuk Anda. Kurang suka? Lebih suka kata “yoi” untuk menggantikan “OK”? Cobalah perintah berikut ini: dialog —ok-label yoi —msgbox halo 10 40
Sebagai catatan, opsi-opsi tersebut berlaku secara umum, termasuk untuk fitur lainnya.
Masih kurang indah? Baiklah. Coba kita tambahkan judul di latar belakang. Sebuah opsi —backtitle dapat digunakan. Cobalah perintah berikut ini: dialog —backtitle “PESAN DARI ADMIN” —ok-label yoi —msgbox halo 10 40 Selain itu, beberapa opsi berikut ini mungkin menarik perhatian Anda: opsi —title <str> untuk menambahkan judul pada dialog (harap
Tutorial Tutorial shell GTK
textbox Fitur yang satu ini digunakan untuk menampilkan isi suatu file teks dalam dialog yang menarik. Anda mungkin bisa menampilkan pesan tentang lisensi atau hal-hal lain yang disimpan dalam file menggunakan fitur ini. Kurang terkesan? Tunggu dulu. Sekilas
Pesan dengan msgbox dialog
www.infolinux.web.id
INFOLINUX MEI 2003
59
Fitur gauge nan informatif
mungkin terkesan biasa-biasa saja. Akan tetapi, jika diamati lebih lanjut, fitur yang satu ini juga datang dengan persentase teks yang telah ditampilkan, dukungan scroll yang dapat diakses dengan tombol navigasi keyboard dan, voila: fitur search yang dapat diakses dengan menekan tombol / dan? Terkesan? Cobalah fitur ini dengan memberikan perintah: dialog —textbox /etc/passwd 10 40
yesno Kotak dialog yes no seringkali Anda temui di aplikasi berbasiskan GUI. Lain ceritanya dengan aplikasi console. Anda umumnya akan diharus menjawab yes/no dengan mengetikkan y atau n, bahkan yes atau no. Dengan fitur yesno yang disediakan, lupakan saja penekanan tombol y atau n tersebut. Cobalah fitur ini dengan memberikan perintah: dialog —yesno “Apakah Anda sehat-sehat saja, saudara $LOGNAME?” 10 40 Baiklah. Masalah mulai muncul. Bagaimana sang penulis shell script bisa mengetahui seorang memilih tombol Yes atau No? Untuk itu, program dialog, secara konsisten mengembalikan nilai 0 untuk penekanan OK atau Yes, 1 untuk Cancel atau No dan -1 untuk kasuskasus lainnya. Untuk memeriksa return value
60
INFOLINUX MEI 2003
Tutorial GTK shell
Memilih file kini mudah dengan fselect
perintah sebelumnya, Anda bisa mengevaluasi variabel $?. Dengan demikian, blok perintah berikut ini akan melengkapi kotak dialog yesno kita menjadi lebih informatif. dialog —yesno “Apakah Anda baik-baik saja, saudara $LOGNAME?” 10 40 export retval=$? if [ $retval -eq 0 ] then dialog —msgbox “Syukurlah $LOGNAME, Anda baik-baik saja” 10 40 else dialog —msgbox “Aduh ! Bagaimana ini $LOGNAME, apa yang Anda rasakan?” 10 40 fi Bisa Anda cermati bahwa dengan fitur yesno dan msgbox kita bisa meningkatkan interaktivitas dan menjadikan aplikasi kita lebih informatif.
inputbox dan passwordbox Ingin meminta input dari user? Tidak masalah berkat datangnya fitur inputbox. Segala input akan disimpan ke dalam stderr. Berikan perintah berikut ini untuk mencoba: dialog —inputbox halo 10 40 Fitur inputbox juga dilengkapi dengan kemampuan untuk memasukkan nilai default, yang dalam beberapa kondisi akan membantu user dalam memasukkan nilai tertentu. Fitur
www.infolinux.web.id
inputbox ini serupa dengan passwordbox yang berguna untuk pengambilan informasi sensitif seperti halnya password. Perbedaannya adalah jika pada inputbox, teks yang dimasukkan akan dicetak di layar, maka pada passwordbox, teks yang dimasukkan tidak terlihat. Jika pada inputbox pemberian nilai default akan sangat membantu user, maka pada passwordbox hal ini sangat tidak dianjurkan. Hal tersebut disebabkan karena pemberian nilai yang tidak terlihat oleh pemakai tentu saja tidak ada gunanya, di samping meningkatkan risiko melemahnya keamanan sistem karena pemberian nilai tersebut dapat diamati di dalam process table.
gauge Memberikan informasi tentang seberapa jauh pekerjaan telah terselesaikan dapat Anda lakukan berkat adanya fitur gauge dari dialog. Gauge berfungsi seperti halnya sebuah progress bar. Nilai persentase dari gauge dapat dibaca dari standard input. Berikut ini adalah blok perintah yang dapat Anda berikan untuk menguji fitur gauge: i=0 while [ $i -le 100 ] do echo $i | dialog —gauge processing 10 40 sleep 0.01
Fitur calendar membuat shell script semakin indah
let i=$i+1 done Dalam contoh tersebut, kita menggunakan perintah sleep yang berfungsi untuk menunda suatu anak proses (di mana dalam contoh tersebut waktu tunda adalah 0.01 detik). Nilai variabel i tersebut kita cetak dan berikan kepada program dialog yang menerimanya sebagai standard input untuk gauge.
fselect Ini dia fitur yang luar biasa dari dialog. Sebuah file selector! Dengan fitur ini, Anda bisa memanjakan user Anda dengan mengizinkannya untuk memilih nama file dengan antarmuka yang indah daripada meminta user Anda untuk mengetikkan serangkaian path yang panjang. Sama seperti halnya inputbox, keluaran dari fselect akan disimpan di dalam stderr. Berikut ini adalah perintah untuk mencoba fselect: dialog —fselect / 10 40
calendar Seperti kasus yang telah dibahas bahwa program cal, walau telah memiliki tampilan yang bagus, tetap kurang interaktif, maka dengan fitur calendar dari dialog, semua masalah telah terpecahkan. Fitur yang satu ini mengizinkan Anda menampilkan kalender saat ini ataupun masa depan
Tutorial Tutorial shell GTK
Fitur checklist dari dialog
dan masa lalu serta mengembalikan nilai dalam format tanggal/bulan/tahun ketika user keluar dari kotak dialog ini. Berikan perintah berikut ini untuk mencoba calendar: dialog —calendar halo 10 40
Ketikkan contoh berikut ini untuk mencoba checklist: dialog —checklist “Distro yang Anda gunakan” 20 60 10 Debian Debian on Redhat Redhat off Slackware Slackware off other other off
radiolist
menu
Setelah memanjakan kita dengan berbagai fitur yang telah dibahas, kini radiolist datang untuk menambah serangkaian fitur. Sesuai dengan namanya, radiolist menyediakan kemampuan untuk membentuk serangkaian pilihan dimana hanya memperbolehkan satu pilihan aktif. Sama seperti fitur lainnya, nilai terpilih dicetak di stderr ketika user mengakhiri dialog. Ketikkan contoh berikut ini untuk mencoba radiolist: dialog —radiolist “Distro yang Anda gunakan” 20 60 10 Debian Debian on Redhat Redhat off Slackware Slackware off other other off
Katakanlah user harus memilih satu dari beberapa pilihan. Dalam situasi seperti itu, Anda bisa menggunakan radiolist, walau kurang memenuhi antarmuka yang ramah untuk pemakai. Untunglah dialog juga menyediakan fitur menu yang dapat digunakan untuk pembuatan menu. Nilai kembalian dicetak ke dalam stderr. Ketikkan contoh berikut untuk mencoba menu: dialog —menu “Kegiatan sehari-hari” 20 60 10 makan makan minum minum tidur tidur
checklist Apabila radiolist hanya mengizinkan satu pilihan aktif, maka checklist mengizinkan pemilihan beberapa item sekaligus. Ketika user mengakhiri dialog, semua pilihan akan dikembalikan dalam format “pil1” “pil2” “pil3” .... Nilai kembalian tersebut dalam diproses di dalam iterasi for ataupun dapat dipisahkan dengan program cut.
www.infolinux.web.id
Luar biasa! Hanya itulah kesan yang terucap untuk program yang satu ini. Dengan dialog, beberapa solusi yang memerlukan antarmuka ramah dapat dibuat hanya dalam hitungan menit. Bayangkan apabila Anda harus membuatnya dengan berbagai bahasa pemrograman dilengkapi pula dengan penggunaan pustaka ncurses. Waktu yang dihemat bisa Anda gunakan untuk keperluan lainnya. Bagi Anda yang bermain di GNOME, tersedia pula gdialog yang menawarkan antarmuka lebih ramah lagi. Salam. Noprianto ([email protected])
INFOLINUX MEI 2003
61
Tutorial GTK Zope
Berkenalan dengan Zope Using Zope means: To Present Dynamic Content, To Manage your Web Site, To Secure Your Web Site, To Provide Network Services, To Integrate Diverse Content, To Provide Scalability...
D
unia cepat berubah. Termasuk perubahan dalam cara mengembangkan aplikasi web. Mari sejenak melangkah ke beberapa tahun yang lalu. Bisa membuat aplikasi web dengan menulis kode HTML saja sudah merupakan hal yang luar biasa. Apalagi bisa menambahkan sedikit keindahan dengan bantuan JavaScript. Dan seiring dengan berjalannya waktu, berbagai tool untuk server side scripting pun mulai merajalela. Kebutuhan pengguna pun semakin bertambah. Bagi beberapa pihak, website dinamis seperti halnya website penyedia berita yang di-update dalam hitungan detik sudah mencukupi. Akan tetapi, website dinamis tersebut bagi beberapa pihak bukanlah merupakan solusi atas masalah yang mereka hadapi. Mereka butuh lebih. Mereka butuh kolaborasi yang lebih powerful. Mereka butuh simple content management. Mereka butuh web components. Dan untuk itu, mereka butuh Zope...
Zope Zope Zope... Zope adalah sebuah framework untuk membangun aplikasi berbasiskan web. Aplikasi-aplikasi web seperti halnya SourceForge dan Yahoo! dapat dibangun dengan menggunakan Zope. Zope sendiri tidak bisa disetarakan dengan PHP, JSP ataupun bahasa-bahasa server side scripting lainnya. Zope memberikan lebih dari sekadar kemampuan untuk melakukan scripting. Lantas, apakah yang diberikan oleh Zope? Jika Anda melakukan instalasi Zope, Anda akan mendapatkan: Sebuah web server. Zope datang bersama dengan sebuah web server yang dapat diandalkan. Akan tetapi, jika hati Anda sudah tertambat pada web server lain seperti Apache, maka Zope bisa diatur untuk saling bekerja sama dengannya.
62
INFOLINUX MEI 2003
Sebuah FTP server. Tampilan berbasiskan web. Yah. Anda hanya membutuhkan sebuah browser yang andal untuk bekerja dengan Zope Management Interface. Galeon ataupun Konqueror sudah lebih dari mencukupi. Di Zope Management Interface tersebut Anda bisa mengatur Zope Anda, mengatur user sampai mengembangkan aplikasi yang kompleks dalam lingkungan kerja yang kolaboratif. Object database. Zope adalah penerapan dari Object Oriented Programming. Bekerja dengan Zope adalah bekerja dengan object-object. Dengan Zope Management Interface, Anda bisa bekerja dengan objectobject tersebut seperti halnya bekerja dengan file manager. Kerja sama dengan database relational. Zope memungkinkan Anda bekerja dengan database relational seperti Oracle, PostgreSQL, Sybase, MySQL, dan lain sebagainya. Dukungan scripting. Bagian ini mungkin bisa disetarakan dengan PHP, JSP ataupun bahasa server side scripting lainnya. Zope mengizinkan Anda untuk bekerja dengan berbagai bahasa, mulai Python, Perl sampai bawaan Zope sendiri: DTML (Document Template Markup Language). Zope juga diberikan dibawah lisensi yang bersifat open source sehingga dapat dikembangkan lebih lanjut. Dapatkan Zope di http://www.zope.org dan lakukan instalasi sesuai dengan instruksi yang diberikan. Zope sendiri dikembangkan hampir seluruhnya menggunakan Python. Pada saat artikel ini ditulis, Zope telah mencapai versi 2.6.
Zope dari sisi bisnis Kenapa harus menggunakan Zope untuk
www.infolinux.web.id
membangun aplikasi web? Berikut ini adalah sedikit pandangan dari sisi bisnis:
powerful collaboration Membuat suatu website yang kompleks tentunya buka tugas satu atau dua orang saja. Dalam website berskala besar, seperti halnya website sebuah koran, tentunya isi yang ditulis dapat didelegasikan kepada beberapa penanggung jawab, di mana penanggung jawab mendelegasikan tugas-tugas yang lebih kecil kepada orang-orang lainnya. Lantas, apakah orang-orang tersebut harus mengetikkan kode HTML sendiri ketika ingin membuat perubahan yang cukup mendasar? Satu kelebihan yang datang bersama Zope adalah semua hal dapat diatur dengan klik sana dan sini. Dan semuanya berbasiskan web sehingga pengguna awam pun, yang diserahi tanggung jawab dapat menggunakan Zope Management Interface. Untuk mengantisipasi kesalahan, Zope menyediakan fasilitas undo, version, dan beberapa tool lainnya yang memungkinkan orang banyak dapat saling bekerja sama dengan aman. Bukankah tanggung jawab suatu website yang besar bukan milik satu dua orang saja?
Simple Content Management Umumnya, aplikasi web secara tradisional dipisahkan menjadi tiga lapisan. Data dan informasi lainnya di simpan di dalam database, program yang mengendalikan keseluruhan aplikasi di simpan di dalam file-file dan HTML serta layout lainnya disimpan di tempat lain pula. Salah satu kerugian dari cara tradisional tersebut adalah penggunaan berbagai hal dan komponen yang berujung kepada kemampuan dan produktivitas setiap anggota tim. Berbagai hal dan komponen terpisah
Selamat datang di Zope
tersebut juga memiliki tingkat keamanan masing-masing di mana kerentanan salah satu komponen bisa saja berakibat fatal. Dan tidak adanya satu interface global di mana setiap orang bisa bekerja sama dengan cara yang mudah. Zope menyediakan semua hal tersebut. Semua komponen di dalam Zope berada di dalam sistem yang koheren. Semua bicara hal yang seragam soal keamanan, web based management, pencarian data, clustering, sindikasi, dan berbagai hal lainnya. Dengan menggabungkan konsepkonsep tersebut di dalam satu tempat yang teratur, Zope mengizinkan penggunanya untuk menggunakan seperangkat tool canggih untuk membangun aplikasi web yang kompleks. Zope juga dapat digabungkan dengan mudah dengan berbagai tool eksternal. Soal kerja sama, itu tinggal diatur.
Web Components Dunia berubah. Web berubah. Banyak hal yang berubah. Dimulai dari saat ini sampai saat-saat di depan, aplikasi web tidak hanya dapat diakses dari browser. Akan tiba zaman di mana bukan saatnya lagi membuka suatu website dengan duduk terpaku di depan komputer. Suatu halaman web dapat diakses dari mana saja. Hal tersebut dimungkinkan dengan adanya web service. Dan Zope mendukungnya.
Kegunaan Zope Sebelum kita memulai berkenalan lebih lanjut dengan Zope, ada baiknya kita
melihat di mana saja Penambahan atau pengurangan server kegunaan Zope dari atau entiti lainnya bukanlah masalah bagi berbagai sisi. Zope. Dengan Zope Enterprise Object, Dalam semuanya beres. menampilkan sebuah website yang Mulai! Mulai! Mulai! dinamis, Zope Mencoba mungkin merupakan salah satu menyediakan segala cara terbaik untuk mengerti Zope. sesuatu yang Anda Jalankan Zope yang telah Anda instalasi butuhkan. Sebut saja dan bukalah web browser Anda. Secara mulai dari fitur default, Zope berjalan pada port 8080. pencarian informasi Apabila Anda menggunakan distribusi sampai hubungan ke Debian GNU/Linux, Zope berjalan pada berbagai sistem port 9673. database. Arahkan web browser Anda pada Bicara soal alamat di mana Zope berjalan. Apabila management sebuah website, tentunya instalasi dilakukan dengan sukses, Anda kita sepakat apabila sebuah website akan melihat suatu halaman yang sederhana dapat diatur dengan usaha berisikan ucapan selamat datang di Zope. yang relatif kecil. Akan tetapi, Kemudian arahkan web browser Anda bagaimana dengan website yang sangat pada halaman manage. Apabila Zope kompleks dengan campur tangan berjalan pada server lokal melalui port berbagai pihak? Rumit. Situasi yang 9673, maka arahkan web browser Anda terpecah-pecah pada cara pengemke http://localhost:9673/manage. Untuk bangan website tradisional tidak memasuki Zope management interface memungkinkan Anda untuk mengatur tersebut, Anda perlu melakukan segala hal dalam satu tempat yang otentikasi terlebih dahulu dengan sama. Dengan zope, semua urusan pasangan username dan password yang beres. Dengan Zope, pengaturan data, telah Anda spesifikasikan pada saat business logic dan tampilan dapat diatur instalasi. Apabila otentikasi berhasil, melalui satu tempat. Zope juga dapat Anda akan dibawa menuju halaman menangani website yang kecil sampai depan Zope Management Interface. website dengan ukuran bergiga-giga Mari melongok sejenak ke dalam bytes. Semuanya hanya menggunakan ZMI. ZMI terbagi ke dalam tiga frame. sebuah web browser. Frame yang paling atas menunjukkan Zaman sekarang ini, keamanan informasi tentang login dan aksi yang menjadi satu kunci penting. Hal tersebut bersesuaian dengannya. Frame paling tentunya telah disadari oleh Zope. Semua kiri, navigator, mengizinkan Anda tugas dapat didelegasikan kepada pihak yang bertanggung jawab dengan hak yang tertentu pula. Pengaturannya pun mudah, cukup dengan klik-klik pada web browser Anda. Kemudian, kita sampai pada salah satu isu yang cukup penting bagi kalangan enterprise: skalabilitas. Zope Management Interface
Tutorial Tutorial Zope GTK
www.infolinux.web.id
INFOLINUX MEI 2003
63
untuk melakukan navigasi terhadap isiisi direktori Anda, sama sepertinya ketika bekerja dengan beberapa file manager populer. Dan frame paling kanan yang berukuran paling besar adalah daerah kerja Anda. Direktori-direktori pada frame sebelah kiri dapat diakses dari web browser dengan alamat relatif terhadap alamat di mana Zope di akses. Cobalah merujuk ke direktori Control_Panel dan cermati beberapa hal di direktori ini.
Membuat aplikasi sederhana Pada kesempatan kali ini, kita akan mencoba membuat satu aplikasi sederhana. Tujuan dari aplikasi tersebut adalah memperkenalkan konsep user di Zope dan pembuatan aplikasi web menggunakan DTML. Untuk itu, kita akan membuat user baru terlebih dahulu. User yang kali pertama Anda ciptakan pada saat instalasi sebaiknya jangan dipakai untuk kegiatan sehari-hari. Untuk membuat user baru, arahkan mouse Anda ke frame sebelah kiri dan pilihlah direktori acl_users. Di area kerja frame sebelah kanan, Anda akan menjumpai tombol untuk menambahkan user. Klik dan berikan informasi yang secukupnya untuk menambahkan user. Untuk saat in, berikan roles Manager kepada user yang ingin Anda buat tersebut. Management user pada Zope memerlukan pembahasan tersendiri.
64
INFOLINUX MEI 2003
Membuat user baru pada Zope
Membuat sebuah direktori baru
Setelah itu, logout-lah dan login Zope menggunakan sistem orang tua kembali dengan user yang baru saja dan anak seperti halnya pada OOP. Pada Anda ciptakan. Kemudian klik mouse saat http://localhost:9673/tes diakses, Anda ke direktori root pada frame Zope akan menampilkan suatu informasi. sebelah kiri. Setelah area kerja Anda pada Berasal dari manakah informasi tersebut? frame sebelah kanan menampakkan isi Lazimnya, informasi didapatkan dari isi dari direktori root tersebut, arahkan direktori tersebut. Akan tetapi, apabila mouse Anda pada combo box yang direktori tersebut masih kosong, secara terdapat di bagian kanan layar Anda dan otomatis, Zope akan mencari ke direktori pilihlah item Folder. Dengan orang tuanya, dan dengan demikian menambahkan item Folder, Anda telah Zope akan menampilkan informasi yang membuat sebuah direktori baru di sama seperti http://localhost:9673 ketika direktori root. Berikan nama test dan title kita mengakses http://localhost:9673/ tes. Title digunakan untuk memperjelas tes. kegunaan dari direktori tersebut. Setelah Mari kita membuat tampilan yang semuanya selesai, Anda akan melihat sedikit berbeda. Bagi Anda yang akrab direktori baru di direktori root Anda. dengan pemrograman web, tentunya Selamat! Anda baru saja membuat Anda mengenal istilah index.html, sebuah direktori baru. Anda bisa index.php, index.jsp, dan lain mengakses direktori tersebut lewat web sebagainya yang notabene diatur di web browser dengan alamat http:// server sebagai start page untuk direktori. localhost:9673/tes. Begitupun dengan Zope. Akan tetapi, Alamat tersebut mengasumsikan Anda menggunakan port 9673. Gantilah nomor port tersebut sesuai dengan nomor port yang Anda gunakan. Tampilan yang terlihat di alamat http:/ /localhost:9673/tes tersebut akan sama seperti tampilan pada http://localhost:9673. Mengapa hal tersebut bisa terjadi? Mengakses sebuah direktori baru
Tutorial GTK Zope
www.infolinux.web.id
Menambahkan Dokumen DTML baru
secara default, nama start page adalah index_html. Entiti pada Zope tidak perlu diberikan ekstensi. Cukup sebutkan nama object-nya saja. Pindahkan direktori aktif ke direktori tes. Kemudian arahkan mouse Anda ke tempat di mana pertama Anda menambah sebuah direktori. Akan tetapi, untuk saat ini, pilihkan item DTML Document karena kita akan menambahkan sebuah dokumen DTML. Berikan nama index_html. Judul dapat Anda isi dengan string apa saja. Anda juga bisa mengupload file yang telah Anda buat. Di direktori tes kini telah terdapat sebuah Dokumen DTML baru dengan nama index_html. Arahkan kembali web browser Anda ke http://localhost:9673/ tes dan cermati perubahan tampilannya. Hal ini disebabkan karena start page index_html telah berisikan sesuatu yang lain, yang merupakan isi default. Zope secara otomatis mengisikan nilai default ke beberapa entiti yang buat. Saat ini, kita akan bersiap-siap untuk mengedit index_html tersebut. Kembalilah aktif ke dalam direktori tes pada ZMI dan arahkan mouse Anda ke area kerja frame kanan. Klik tombol mouse Anda pada index_html dan dalam sekejap Anda akan dibawa ke layar edit index_html tersebut. Di halaman ini, Anda diberi kesempatan untuk mengisikan isi index_html datau mengupload file yang telah Anda buat. Anda juga bisa mengubah title dari index_html di halaman ini.
Layar edit index_html
Mari kita analisis isi dari index_html yang disediakan oleh Zope.
This is the Document.
bagaimana DTML bekerja sama dengan HTML. Sekali lagi akan menampilkan judul atau nama dokumen. Sementara baris terakhir memiliki penjelasan seperti pada baris pertama. DTML sendiri memiliki banyak tag. Anda bisa merujuk ke http:// localhost:9673/HelpSys apabila Help System Zope telah terinstalasi. Bagaimana kesan Anda tentang Zope? Artikel ini memberikan sedikit gambaran tentang Zope dan DTML. Untuk membuat aplikasi, selain DTML, Anda juga bisa menggunakan ZPT ataupun External Method yang bisa berupa script Python ataupun Perl. Sampai ketemu dengan artikel Zope yang lain. Selamat mencoba! Zope zope zope.... Noprianto ([email protected])
Dari potongan kode tersebut, minimal kita menjumpai satu hal baru, yakni tag . DTML, seperti halnya HTML juga menggunakan istilah tag. Dan tag yang akan dibahas di artikel ini adalah tag yang berguna untuk menampilkan isi sebuah variabel. Baris pertama, yakni akan menampilkan isi dari variabel standard_html_header. Dapat dari manakah isi variabel ini? Karena tidak terdapat variabel ini di dalam isi direktori tes, maka Zope akan mencari ke direktori orang tuanya (yaitu root) dan akan menemukan entiti standard_ html_header di sana. Nilai ini akan ditampilkan ke web browser. Kemudian pada baris kedua kita akan melihat Tampilan baru direktori tes
Tutorial Tutorial Zope GTK
www.infolinux.web.id
INFOLINUX MEI 2003
65
Tutorial NFS GTK
Sharing File di Jaringan dengan NFS File atau direktori milik sebuah komputer dapat diakses oleh komputer lain. Bahkan harddisk dan CD-ROM sebuah komputer seakan-akan menjadi milik komputer lain. Mirip share dan map di jaringan Windows.
N
FS merupakan program aplikasi untuk memudahkan kita dalam melakukan sharing file atau data. Melalui NFS, memungkinkan mesin Anda untuk melakukan mounting mesin orang lain atau server melalui remote. Sehingga bisa saling berbagi data atau menjalankan program aplikasi.
Konfigurasi server NFS Sebelum Anda menjalankan NFS, Anda harus melakukan beberapa konfigurasi file. File-file tersebut antara lain adalah: /etc/exports /etc/hosts.allow /etc/hosts.deny Dalam artikel ini, kami menggunakan asumsi PC yang digunakan adalah seperti berikut ini: Server menggunakan nomor IP: 192.168.0.254 Untuk worstation/PC klien, masingmasing menggunakan nomor IP: 192.168.0.1 192.168.0.2 192.168.0.3 Adapun langkah-langkah yang harus dilakukan adalah sebagai berikut: 1. Mengekspor NFS Filesystems Cara setting konfigurasi /etc/exports adalah sebagai berikut: Pada konsol, login sebagai root: Login: root Password: Lakukan editing pada file /etc/exports, seperti berikut ini: root@localhost # vi /etc/exports
66
INFOLINUX MEI 2003
Pada file /etc/exports, tambahkan direktori dan user seperti berikut ini: /usr/share/doc 192.168.0.1(ro) 192.168.0.2(ro) 192.168.0.3(ro) /home/siswa 192.168.0.1(rw) 192.168.0.2(rw) 192.168.0.3(rw) Simpan hasil pekerjaan Anda. 2. Konfigurasi /etc/hosts.deny /etc/hosts.deny berfungsi untuk melakukan pemblokiran akses ke server terhadap semua IP yang ada. Langkahnya adalah sebagai berikut: Lakukan editing pada file /etc/ hosts.deny, pada konsol ketikkan sebagai berikut: root@localhost # vi /etc/hosts.deny Isikan kalimat seperti berikut ini: portmap:ALL lockd:ALL mountd:ALL rquotad:ALL statd:ALL Simpan hasil pekerjaan Anda. 3. Konfigurasi /etc/hosts.allow /etc/hosts.allow berfungsi untuk mengizinkan IP mana saja yang bisa terhubung ke server. Adapun langkahnya adalah sebgai berikut: Lakukan editing pada file /etc/ hosts.allow, pada konsol ketikkan sebagai berikut: root@localhost # vi /etc/hosts.allow Isikan alamat IP, seperti berikut ini: lockd: 192.168.0.1 , 192.168.0.2 , 192.168.0.3 rquotad: 192.168.0.1 , 192.168.0.2 , 192.168.0.3 mountd: 192.168.0.1 , 192.168.0.2 , 192.168.0.3
www.infolinux.web.id
statd: 192.168.0.1 , 192.168.0.2 , 192.168.0.3 4. Menjalankan service pendukung setelah kita selesai melakukan konfigurasi, selanjutnya kita jalankan service-service pendukung seperti tersebut di bawah ini: Portmap Jalankan service portmap, dengan cara sebagai berikut: root@localhost # /etc/init.d/portmap start NFS Selanjutnya jalankan service NFS, sebagai berikut: root@localhost # /etc/init.d/nfs start Untuk memastikan program NFS dan program portmap sudah berjalan, lakukan monitoring dengan menggunakan rpcinfo dan pastikan hasilnya sama dengan keterangan di bawah ini: root@localhost # rpcinfo -p program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100011 1 udp 749 rquotad 100011 2 udp 749 rquotad 100005 1 udp 759 mountd 100005 1 tcp 761 mountd 100005 2 udp 764 mountd 100005 2 tcp 766 mountd 100005 3 udp 769 mountd 100005 3 tcp 771 mountd 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 300019 1 tcp 830 amd 300019 1 udp 831 amd 100024 1 udp 944 status 100024 1 tcp 946 status
Tutorial GTK NFS 100021 1 udp 1042 nlockmgr 100021 3 udp 1042 nlockmgr 100021 4 udp 1042 nlockmgr 100021 1 tcp 1629 nlockmgr 100021 3 tcp 1629 nlockmgr 100021 4 tcp 1629 nlockmgr
Skema Jaringan NFS Server Server Linux
Menjalankan ulang export /etc/exports yang telah Anda edit belum bisa dilihat hasilnya sampai Anda menjalankan-ulang, dengan menuliskan sintaks perintah berikut ini: root@localhost # exportfs -ra
192.168.0.254
Perintah tersebut berfungsi untuk memaksa nfsd membaca ulang file / etc/exports, yang telah Anda modifikasi. Linux/Unix Workstation 192.168.0.2
Konfigurasi Klien NFS Setelah Anda selesai melakukan setting NFS pada server, maka langkah selanjutnya adalah melakukan setting NFS pada mesin klien. Kami berasumsi mesin klien Anda menggunakan nomor IP 192.168.0.1 Berikut ini merupakan langkah-langkah untuk melakukan setting klien NFS. Pada konsol, login sebagai root: Login: root Password: Sebelum memulai, pastikan file /proc/ filesystems ada baris berisi nfs, seperti berikut ini: root@localhost # more /proc/filesystems nodev rootfs nodev bdev nodev proc nodev sockfs nodev tmpfs nodev shm nodev pipefs ext2 nodev devfs nodev devpts reiserfs vfat ext3 nodev usbdevfs nfs nodev autofs iso9660
Linux/Unix Workstation 192.168.0.1
Adapun cara untuk melakukan mounting direktori-direktori remote adalah sebagai berikut: Pada konsol, login sebagai root Login: root Password: password Buatlah direktori baru pada direktori /mnt, misalnya doc dan share [root@localhost:~] # cd /mnt [root@localhost:~] # mkdir /mnt/doc [root@localhost:~] # mkdir /mnt/share Kemudian lakukan mounting direktori pada server, caranya sebagai berikut: [root@localhost:~] # mount 192.168.0.254:/usr/share/doc/ /mnt/ doc [root@localhost:~] # mount 192.168.0.254:/home/siswa /mnt/ share Untuk melakukan unmounting direktori pada server atau PC tujuan, Anda cukup mengetikkan perintah sebagai berikut: [root@localhost:~] # umount /mnt/doc [root@localhost:~] # umount /mnt/share
www.infolinux.web.id
Linux/Unix Workstation 192.168.0.3
Untuk menjalankan mounting direktori-direktori remote secara otomatis pada saat komputer klien dinyalakan, Anda bisa melakukan editing pada file /etc/fstab, sebagai berikut: Pada konsol, login sebagai root Login: root Password: Lakukan editing pada file /etc/fstab, seperti berikut ini: [root@localhost:~] # vi /etc/fstab Tambahkan kalimat sebagai berikut: 192.168.0.254:/usr/share/doc/ /mnt/ doc nfs ro 0 0 192.168.0.254:/home/siswa /mnt/ share nfs rw 0 0 Kemudian simpan hasil pekerjaan Anda. Pada saat PC Anda dinyalakan, Anda bisa langsung mengakses data atau menggunakan program aplikasi secara bersama-sama. Selamat mencoba. R. Kresno Aji ([email protected])
INFOLINUX MEI 2003
67
Tutorial Wine GTK
Wine:
Saat bekerja dengan Linux, Anda ingin menjalankan aplikasi MS Windows tanpa logout atau reboot? Ada dua pilihan bagus tapi tidak free, VMWare atau Win4Lin. Jika ingin yang free meski tidak istimewa, cobalah Wine.
68
Gambar 1. Setup CodeWeavers Wine
INFOLINUX MEI 2003
Langkah kedua, jalankan perintah setup: winesetup Langkah ketiga, pada tampilan seperti Gambar 1, tekan Next dan Next lalu Finish. Untuk menguji coba, jalankan salah satu program di MS Windows, misalnya Winamp yang ada dalam direktori C:/ Program Files/Winamp/ winamp.exe. Jika partisi Windows dimount pada /c (biasanya /mnt/ windows atau /mnt/ dos), jalankan perintah berikut: wine /c/Program\ Files/ Winamp/winamp.exe
T
utorial singkat ini akan menjelas kan cara menginstalasi salah satu program emulasi Windows, yaitu CodeWeavers Wine. Paket binari program ini tersedia di CD InfoLINUX edisi Maret 2003. CodeWeavers (www.codeweavers.com) merupakan perusahaan pembuat software di Linux dan Unix untuk menjalankan aplikasi MS Windows. CodeWeavers Wine adalah salah satu paket yang dikembangkan dari projek Wine (www.winehq.org). Instalasi CodeWeavers Wine ini sangat mudah karena berbentuk RPM. Kecuali jika distro Anda tidak mendukung RPM, sehingga harus menginstalasi paket Wine yang berformat lain, misalnya kompilasi dari source yang juga tersedia di CD InfoLINUX. CATATAN: Pengguna Mandrake 9.0 pantas gembira, karena Wine telah disertakan dalam paket RPM di CD ke-2. Langkah pertama, instalasi paket, misalnya dengan perintah: rpm -Uvh codeweacers-wine-200209047.i386.rpm
Menjalankan Aplikasi Windows di Linux Gambar 2. XMMS dan Wine Menjalankan Winamp
yang dijalankan dari dengan wine Mandrake menghasilkan suara yang lebih baik daripada dijalankan dengan Codeweavers-wine. Dua jenis wine ini belum stabil, sehingga belum bisa menjalankan aplikasi besar semacam Microsoft Office.
Gambar 3. Wine Menjalankan Paint Shop Pro
Gambar 2 memperlihatkan perbandingan tampilan player MP3 di Linux (XMMS, gambar atas) dengan di Windows (Winamp, gambar bawah). Gambar 3 adalah dekstop WindowMaker di Linux sedang menampilkan program pengolah gambar di Windows, Paint Shop Pro. Berdasarkan pengalaman penulis dengan Mandrake 9.0, lebih baik menggunakan paket Wine dari CD Mandrake daripada Codeweavers-wine dari CD InfoLINUX. Misalnya, Winamp
www.infolinux.web.id
CodeWeavers telah berhasil mengembangkan aplikasi Linux untuk menjalankan Microsoft Office 97/2000, Lotus Notes, dan lain-lain, yaitu CrossOver Office. Produk lainnya, CrossOver Plugin, dapat mengaktifkan plugin Windows, seperti QuickTime, ShockWave Director, Windows Media Player 6.4, Word Viewer, Excel Viewer, PowerPoint Viewer, dan lain-lain. langsung dari web browser Linux. Sayangnya, semua itu tidak free. Rusmanto ([email protected])
Tutorial Gnomemeeting Tutorial GTK
GnomeMeeting:
InfoLINUX April 2003. Adapun kebutuhan program Gnomemeeting, antara lain sebagai berikut: File library yang dibutuhkan: 1 . openh323 >= 1.8.0-2 2 . pwlib 3 . libopenh323.so.1 4 . libpt.so.1 Untuk aplikasi Gnomemeeting, kami menggunakan program versi berikut: gnomemeeting-0.93-3mdk.i586.rpm
VoIP atau Telepon via Internet Bertelepon jarak jauh antarkota bahkan antarnegara tidak mesti membayar mahal. Linux dengan Gnomemeeting-nya dapat membantu Anda ber-SLJJ atau SLI via Internet. Istilah populernya VoIP Merdeka.
G
nomemeeting merupakan program aplikasi bawaan Gnome, yang memungkinkan kita untuk melakukan komunikasi dua arah ataupun lebih. Baik melalui teks (chatting), maupun dengan menggunakan mikrofon atau webcam. Komunikasi suara ini sering disebut VoIP (Voice over Internet Protocol). Fungsinya hampir sama seperti kita menggunakan aplikasi Netmeeting dari Microsoft® (Lihat Gambar 1.). Baru-baru ini, kami mencoba kemampuan Gnomemeeting untuk berhubungan dengan Microsoft Netmeeting®. Dengan menggunakan dua buah PC dan sebuah kabel cross. Penggunaan Gnomemeeting secara intranet ini, dimaksudkan agar kami bisa mengetahui respon dari masing-masing PC, satu sama lain secara baik. Anda tidak perlu mengkhawatirkan, artikel ini bisa Anda coba secara online menggunakan jaringan internet yang terpasang pada PC Anda. Sepanjang Anda mengetahui alamat IP dari lawan Gambar 1. Gnomemeeting dan Netmeeting
bicara Anda. Atau Anda dapat menggunakan bantuan dari server ILS, yang bisa anda jalankan dengan menekan tombol ikon bergambar buku dan tulisan ILS. Pada penggunaan Gnomemeeting kali ini, kami menggunakan sistem operasi Linux Mandrake 9.0, yang tersambung dengan Microsoft® Windows 2000 Advance Server®. Adapun spesifikasinya adalah sebagai berikut: Linux Mandrake 9.0 Processor AMD Duron 1,2GB RAM 256MB Alamat IP: 192.168.1.1 Microsoft Advance Server 2000 Processor Pentium III/733MHz RAM 512MB Alamat IP: 192.168.1.254
Instalasi dan konfigurasi Gnomemeeting Untuk melakukan instalasi Gnomemeeting, Anda harus memastikan bahwa prgram ini sudah terpasang, pada saat Anda melakukan instalasi sistem Linux pada PC Anda. Untuk memastikannya, Anda bisa mengetikkan perintah berikut ini: masaji@path:~ > rpm -qa |grep meeting gnomemeeting-0.93-3mdk
Jika file library yang dibutuhkan sudah terpasang pada sistem Anda, selanjutnya Anda bisa melakukan langkah-langkah kompilasi sebagai berikut: 1 . Pada konsol, lakukan login sebagai root login: root Password: password (ganti dengan pasword Anda) Anda juga bisa menjadi root, pada saat Anda login sebagai user biasa atau pada waktu menggunakan X Window, dengan mengetikkan sintaks perintah pada konsol sebagai berikut: [user@localhost:~] $ su -l root Password: (isi dengan password root Anda) 2. Pindah direktori Selanjutnya Anda bisa pindah ke direktori, di mana Gnomemeeting berada. Misalkan file tersebut berada pada direktori /mnt/cdrom/Mandrake/RPMS2/. Anda bisa mengetikkan perintah berikut ini: [root@localhost:~] # cd /mnt/cdrom/ Mandrake/RPMS2/ 3. Instalasi Gnomemeeting Selanjutnya, Anda bisa mengetikkan perintah berikut ini: [root@localhost:RPMS2] # rpm -ivh gnomemeeting-0.93-3mdk.i586.rpm gnomemeeting ############################# #############################
Instalasi Gnomemeeting Jika belum melakukan instalasi Gnomemeeting, Anda bisa melakukan kompilasi dengan menggunakan paket source atau rpm yang tersedia di CD
www.infolinux.web.id
Konfigurasi Gnomemeeting Selanjutnya, untuk melakukan konfigurasi Gnomemeeting, Anda bisa menjalankan langkah-langkah konfigurasi
INFOLINUX MEI 2003
69
Tutorial GTK Gnomemeeting Gnomemeeting sebagai berikut: 1 . Untuk menjalankan Gnomemeeting, caranya sederhana. Pada konsol, Anda bisa mengetikkan perintah berikut ini: [masaji@localhost:~] $ gnomemeeting &
2 . Jika menggunakan Linux Mandrake 9.0 dan KDE, Anda bisa menjalankan Gnomemeeting dengan mengklik pada bagian: K Menu Networking - Other - Gnomemeeting. Seperti yang diperlihatkan pada Gambar 7.
jaringan internet, seperti: modem, ADSL, ISDN atau jaringan intranet, menggunakan LAN serta Anda atur sendiri (custom). Jika PC Anda merupakan PC Desktop, yang tidak terhubung ke jaringan lain selain internet, Anda bisa menggunakan modem dial-up maupun ISDN atau ADSL. Namun jika PC Anda terhubung ke server, Anda bisa memilih penggunaan TI/LAN. Lihat Gambar 5.
Gambar tersebut merupakan jendela konfigurasi Gnomemeeting, jika Anda baru kali pertama menjalankan program tersebut. Tekan tombol [OK] untuk pindah ke jendela konfigurasi berikutnya. 2 . Selanjutnya, Anda akan melihat tampilan selamat datang dari GnomeMeeting Configuration Assistant, seperti tampak pada Gambar 3.
Gambar 4. Bantuan kedua mengisi data pribadi
Gambar 3. Bantuan pertama konfigurasi Gnomemeeting
Tekan tombol [Forward] untuk masuk pada jendela konfigurasi selanjutnya. 3 . Selanjutnya, Anda bisa mengisikan: nama, alamat e-mail, lokasi, dan komentar. Anda juga bisa mencentang () pada bagian Do not register me to the GnomeMeeting ILS directory, jika Anda tidak ingin mendaftarkan diri pada GnomeMeeting ILS directory. Selengkapnya, Anda bisa melihat pada Gambar 4. Tekan tombol [Forward] untuk masuk pada jendela konfigurasi selanjutnya. 4 . Pada jendela selanjutnya, Anda akan mendapatkan pilihan koneksi jaringan, apakah Anda akan menggunakan
70
INFOLINUX MEI 2003
Gambar 5. Bantuan ketiga memilih jenis koneksi
Pada gambar di atas, tampak secara default menggunakan jaringan modem. Klik tombol [Forward] untuk melanjutkan ke jendela selanjutnya. 5 . Sampai di sini konfigurasi Gnomemeeting sudah selesai, seperti diperlihatkan pada Gambar 6.
Menjalankan Gnomemeeting Untuk menjalankan Gnomemeeting ada dua cara, antara lain sebagai berikut: 1 . Pada X Window, Anda bisa membuka konsol, kemudian menjalankan program Gnomemeeting dengan mengetikkan perintah sebagai berikut: [masaji@localhost:~] $ gnomemeeting &
www.infolinux.web.id
Gambar 6. Konfigurasi selesai
Gambar 7. Mencari menu menjalankan Gnomemeeting
Setelah Gnomemeeting berjalan, tampilannya dapat Anda lihat seperti Gambar 8. Setelah Gnomemeeting berjalan, Anda bisa memulai dengan mengisikan nomor IP yang dapat Anda panggil atau dengan cara mencari pada tombol ILS, yang Gambar 8. Tampilan Gnomemeeting
Gambar 2. Jendela awal konfigurasi Gnomemeeting
Selanjutnya akan tampak tampilan gambar seperti Gambar 2.
Gambar 9. Mengontak teman dengan Alamat IP
Tutorial Gnomemeeting Tutorial GTK 5 . Setelah tersambung kepada Gatekeeper, Anda bisa melakukan sambungan ke rekan maupun famili Anda yang menggunakan jaringan VoIP Merdeka, dengan mengetikkan nomor seperti tersebut di bawah ini: 0111 a xxxxxxxx
terletak pada tombol sebelah kiri atas pada gambar di atas. Pada contoh ini, kami langsung melakukan panggilan dengan mengisikan nomor IP tujuan, dilanjutkan dengan menekan tombol [Enter] atau mengklik menu: Call - Connect, seperti diperlihatkan pada Gambar 9. Anda juga bisa melakukan sambungan, dengan mengklik pada tombol bergambar kabel pada bagian atas sebelah kanan pada gambar tersebut di atas. Pada PC Windows 2000 Advance Server, jika Microsoft Netmeeting dijalankan, akan tampak adanya jendela konfirmasi penerimaan, seperti Gambar 10.
Gambar 12. Netmeeting berkomunikasi dengan Gnomemeeting
menekan tombol bergambar speaker beserta tombol bergambar pegangan pintu di bawahnya. Untuk penggunaan web camera, Anda tinggal menekan tombol bergambar kamera di sebelah kiri. Anda bisa menggunakan kamera USB yang banyak beredar saat ini.
Keterangan: 0111: merupakan nomor Gatekeeper (IIX) yang harus Anda tuliskan dengan benar. huruf n merupakan kode area sesuai dengan nomor tujuan Anda. xxxxxxxx merupakan nomor dari rekan/famili Anda yang tersambung ke VoIP Merdeka.
Jika konfirmasi Anda terima, maka selanjutnya akan tampak daftar user yang sedang online pada PC Windows dengan user Anan akan menerima user Kresno Aji dari PC Linux. Pada Gambar 11 dan 12, diperlihatkan posisi masing-masing, baik pada PC Windows maupun pada PC Linux, kondisi user yang sedang online. Pada Gnomemeeting, Anda bisa melakukan chatting dengan menekan tombol bertuliskan Hi, yang terletak pada posisi sebelah kiri atas pada gnomemeeting. Untuk pengaturan suara dan penggunaan mikrofon, Anda bisa
Gambar 11. Gnomemeeting berkomunikasi dengan Netmeeting
Selanjutnya tekan tombol bergambar kabel.
www.infolinux.web.id
Gambar 10. MS Windows Netmeeting
Untuk menggunakan jaringan VoIP Merdeka, komputer harus terhubung ke Internet, baik menggunakan WaveLAN maupun modem telpon biasa. Komputer juga harus memiliki sound card, mikrofon, headphone (peralatan ini sebaiknya digunakan karena lebih baik dari speaker eksternal dalam mengatasi feedback). Ikuti langkah-langkah seperti berikut ini: 1 . Setelah tampil jendela GnomeMeeting, klik pada bagian Edit Preferences (Gambar 13). Klik pada bagian Directory Settings. 2 . Pada tab Gatekeeper, bagian Registering Method, pilih Gatekeeper host. Isi alamat IP Gatekeeper yang akan Anda akses, seperti diperlihatkan pada Gambar 14. 3 . Setelah di-close, Gnomemeeting akan mencari Gatekeeper untuk melakukan registrasi via Internet. 4 . Untuk melakukan pembicaraan dengan relasi maupun saudara Anda, pada kolom berisi callto://. Anda bisa tes dengan mengetikkan alamat IP seperti di bawah ini: 202.148.53.18
Gambar 13. Edit Preferences Gnomemeeting
Cara penggunaan VoIP Merdeka
Gambar 14. Setting untuk akses Gatekeeper
Misalnya, Anda ingin melakukan hubungan denga rekan Anda di Denpasar-Bali yang tersambung ke VoIP Merdeka dengan nomor area 0361 dan nomor telponnya adalah 1234567. Anda bisa menuliskan sebagai berikut: 0111 361 1234567 Untuk lebih jelasnya bagaimana penomoran telepon VoIP Merdeka, lihat www.voipmerdeka.net. Nah, selamat mencoba! R. Kresno Aji ([email protected])
INFOLINUX MEI 2003
71
Tutorial SSH GTK
SSH:
Meningkatkan Keamanan Remote Login Sekarang bukan lagi era telnet, karena sangat tidak aman. Informasi yang Anda ketik ketika telnet dapat dicuri dengan mudah. Tiba saatnya Anda beralih ke ssh.
F
asilitas remote login yang memungkinkan user suatu sistem untuk menjalankan perintah dari jarak jauh, telah berkembang dari waktu ke waktu. Di satu sisi fasilitas ini memberikan keuntungan bagi user, karena tidak lagi harus dibatasi oleh lokasi, namun di sisi lain fasilitas ini membuka celah bagi tangan-tangan jahil untuk mengacaukan sistem. Sejak penggunaan telnet sebagai program remote login ditinggalkan, secara de facto ssh merupakan program remote login yang paling banyak digunakan, karena ssh yang relatif lebih aman dibanding dengan metode lainnya. Namun demikian, bukan berarti ssh menjamin sepenuhnya tidak akan terjadi penyusupan. Oleh karena itulah, tulisan ini dibuat untuk lebih meningkatkan keamanan remote login menggunakan ssh. Tulisan ini mengasumsikan pembaca sudah terbiasa paling tidak menggunakan ssh client untuk melakukan sesi remote login. Bagi pembaca yang belum terbiasa menggunakan ssh client, silahkan berkonsultasi dengan manual page ssh(1).
SSH SSH (ssh client) adalah program yang digunakan “logging” ke suatu mesin lain. Dengan SSH, user dapat meng-eksekusi perintah-perintah yang tersedia di mesin lain tersebut. SSH ditujukan sebagai pengganti rlogin dan rsh, untuk menyediakan komunikasi yang aman dan
72
INFOLINUX MEI 2003
terenkripsi antara dua host menggunakan jaringan yang seperti kita tahu tidak aman. Seperti yang disebutkan sebelumnya, di sini terjadi interaksi antara dua “untrusted” host. Salah satu dari kedua untrusted host tersebut bertindak sebagai “SSH server host”, sedangkan yang lainnya sebagai “SSH client host”. SSH server host menjalankan sebuah program daemon yang bernama sshd untuk memberi layanan logging, sedangkan SSH client host menggunakan program SSH client (selanjutnya hanya akan digunakan ssh untuk menyebut SSH client) untuk mengakses sshd. Kedua ssh dan sshd, pada distrubusi UNIX like seperti BSD dan GNU/Linux hampir dipastikan telah tersedia pada instalasi standar. Pada BSD dan GNU/ Linux, distribusi paket ssh biasanya menggunakan OpenSSH. Begitu pula pada tulisan ini, mengasumsikan Anda menggunakan OpenSSH sebagai paket penyedia ssh dan sshd.
OpenSSH OpenSSH yang merupakan software FREE hasil kerja tim OpenBSD memiliki fasilitas yang tidak kalah bagusnya dibandingkan dengan produk komersial yang serupa. Pada kenyataannya, secara de facto, OpenSSH menjadi standar fasilitas “remote login” pada sebagian besar OS UNIX like. Sebut saja, OpenBSD dan FreeBSD serta semua distribusi GNU/Linux, semuanya menggunakan OpenSSH. OpenSSH
www.infolinux.web.id
menyediakan dukungan kedua protokol SSH versi 1 dan versi 2 sebagai media komunikasi aman dan terenkripsi yang terjadi antara ssh dan sshd. Tulisan ini tidak akan membahas secara mendalam mengenai protokol SSH versi 1 dan versi 2. Tulisan ini juga tidak akan menjelaskan cara instalasi OpenSSH. Bagi Anda yang ingin mengetahui lebih jauh mengenai spesifikasi Protokol SSH silakan berkonsultasi dengan manual page ssh(1) dan sshd(8). Begitu pula bagi Anda yang tertimpa nahas tidak memiliki instalasi OpenSSH pada sistem, silakan berkonsultasi dengan file INSTALL dan README yang tersedia bersama dengan distribusi source code OpenSSH.
Konfigurasi sshd Langkah pertama mengamankan komunikasi ssh antardua host adalah dengan melakukan pengetatan pada sisi sshd. Konfigurasi standar sshd pada kebanyakan distribusi biasanya belum optimal dalam hal pemanfaatan fasilitas keamanan yang mampu diberikan oleh OpenSSH. Konfigurasi sshd tersimpan dalam file /etc/ssh/sshd_config. Perilaku sshd akan mengikuti definisi yang dibuat di dalam file tersebut. Anda bisa memerintahkan sshd untuk berperilaku berbeda dengan memberikan parameter tambahan pada command line saat menjalankan sshd. Setelah melakukan perubahan pada file konfigurasi, hendaknya Anda mengirimkan sinyal SIGHUP kepada sshd agar ia membaca kembali file konfigurasi dan memberikan efek atas perubahan yang dibuat. Jalan alternatif untuk memerintahkan sshd untuk membaca ulang file konfigurasi adalah dengan cara me-restart daemon itu. Hampir dipastikan pada distribusi GNU/Linux atau BSD menyertakan script yang akan mempermudah proses restart ini, periksalah direktori script ini distribusi OS Anda, biasanya di /etc/init.d. Berikut ini beberapa kata kunci konfigurasi sshd yang akan disesuaikan. Kata kunci konfigurasi ini bukanlah daftar lengkap, melainkan hanya beberapa bagian saja yang dianggap perlu
Tutorial SSH GTK disesuaikan dalam rangka langkah pengamanan. Daftar lengkap konfigurasi sshd dapat Anda temui di manual page sshd_config(5).
AllowGroups Kata kunci ini dapat diikuti dengan sebuah daftar pattern nama group. Setiap pattern nama group, jika lebih dari satu, dipisahkan oleh spasi. Jika disebutkan, maka user yang diperbolehkan login adalah user yang termasuk dalam group yang disebutkan pada kata kunci ini. Penggunaan wildcards “*” dan “?” diperbolehkan dan hanya nama group yang dapat dipergunakan, group ID numerik tidak dikenal di sini. Contoh berikut ini mengakibatkan hanya user-user yang termasuk dalam group “wheel” saja yang bisa melakukan remote login. AllowGroups wheel
AllowUsers Kata kunci ini memberikan efek yang mirip dengan efek AllowGroups, hanya saja kata kunci ini berlaku untuk pattern nama user. AllowUsers shiro henry salman yanofsky rojul Baris di atas mengindikasikan hanya user-user shiro, henry, salman, yanofski, dan rojul yang diperkenankan untuk melakukan remote login. Jika pattern user diberikan dalam format USER@HOST, maka USER dan HOST diperiksa secara terpisah untuk membatasi USER supaya hanya melakukan remote login dari HOST saja. Contoh berikut membatasi agar user henry hanya melakukan remote login dari host boypyt.nurulfikri.co.id. AllowUsers [email protected]
DenyGroups Kata kunci ini kebalikan dari AllowGroups. Gunakan kata kunci ini jika jumlah group yang tidak diizinkan melakukan remote login lebih sedikit dibanding jumlah group yang diizinkan, jika sebaliknya, maka gunakan AllowGroups. Hal ini bukan keharusan, melainkan hanya untuk kemudahan saja. Bayangkan jiga ada 99 group yang dimaksudkan untuk tidak diizinkan
remote login dan hanya 1 group yang diizinkan. Suatu hal yang masuk akal jika anda menggunakan AllowGroups, karena Anda hanya perlu menyebutkan satu pattern group saja. Bandingkan jika Anda menggunakan DenyGroups pada kasus ini, di mana anda harus menyebutkan 99 pattern group.
DenyUsers Mirip dengan DenyGroups, DenyUsers ini kebalikan dari AllowUsers. Trik penggunaannya pun serupa dengan kata kunci DenyGroups.
ClientAliveInterval Jika dalam waktu yang cukup lama Anda meninggalkan console remote Anda tanpa ada aktivitas, sshd akan tetap mempertahankan koneksi agar tetap terjalin. Hal ini merupakan risiko keamanan tersendiri bisa pada saat itu ada orang jahil yang memanfaatkan kelengahan Anda. Oleh karena itu, Anda perlu memberi waktu pada sshd agar mengirimkan pesan untuk meminta respon jika tidak menerima paket data dari ssh pada interval tertentu. Berikan interval waktu dalam detik pada kata kunci ClientAliveInterval agar sshd mengirim “Alive Message” jika terjadi idle. Jika anda memberikan interval 0, maka sshd tidak akan pernah mengirim alive message. ClientAliveInterval 60
ClientAliveCountMax Kata kunci ini menyebutkan jumlah maksimum alive message boleh dikirim oleh sshd tanpa mendapat respon. Jika jumlah ini tercapai dan tetap tidak ada respon dari client, sshd akan memutuskan koneksi yang terjadi dengan client. ClientAliveContMax 5 Alive message yang dikirim oleh sshd menggunakan kanal terenkripsi. Oleh karena itu, jaminan tidak terjadinya “spoof” terhadap pesan ini bisa diandalkan.
LoginGraceTime Kata kunci ini menyebutkan waktu dalam detik di mana sshd akan memutuskan
www.infolinux.web.id
hubungan pada saat user gagal melakukan otentikasi. Memperkecil waktu default (600) mungkin akan meningkatkan keamaan, maka perkecil waktu default konfigurasi ini. LoginGraceTime 300
MaxStartups Kata kunci ini memberi nilai maksimum koneksi yang gagal terotentikasi pada “waktu yang sama”. Penggunaan “waktu yang sama” mungkin kurang tepat. Untuk menghindari kesalahpahaman, istilah “concurrent” lebih tepat untuk digunakan. Selanjutnya, bila ada percobaan koneksi lain, maka koneksi itu di “drop” oleh sshd sampai koneksi itu berhasil diauthentikasi atau LoginGraceTime terlampaui. Secara default, nilai MaxStartups adalah 10. Perkecil nilai ini untuk memperkecil peluang keberhasilan “brute attack”. MaxStartups 5
PasswordAuthentication Bila kata kunci ini diberi nilai “yes”, maka metode otentikasi menggunakan password akan diperbolehkan. Otentikasi menggunakan password adalah yang paling umum digunakan. Namun demikian, penggunaan metode ini menurut penulis memberikan peluang untuk terjadinya “brute attack”. Meskipun brute attack sudah diantisipasi dengan LoginGraceTime dan MaxStartups, ada baiknya metode otentikasi password benar-benar ditiadakan. Sebagai pengganti otentikasi password, digunakan metode “Key Authentication”. Metode ini cenderung lebih aman, karena menggunakan sepasang key yang dibuat secara acak. Password dapat digunakan untuk mencegah key digunakan oleh orang yang tidak berhak. Perlu Anda perhatikan, bahwa password yang digunakan oleh key dan sshd (yang diperbolehkan oleh PasswordAuthentication) adalah berbeda. Password yang digunakan oleh key adalah untuk memeriksa apakah key tersebut digunakan oleh orang yang berhak. Jika key berhasil diverifikasi, selanjutnya sshd akan menggunakan key tersebut untuk meng
INFOLINUX MEI 2003
73
Tutorial SSH GTK koneksi. Sedangkan jika menggunakan otentikasi password, sudah tidak memperhatikan key, asalkan seseorang berhasil memasukkan password yang benar, maka sshd akan mengotentikasi koneksi. Di sini terlihat dengan jelas peningkatan keamanan dengan menggunakan Key Authentication. Mengenai key yang akan digunakan pada prosedur otentikasi akan dibahas pada bagian lain tulisan ini. PasswordAuthentication no
PermitRootLogin Kata kunci ini sebaiknya diberi nilai “no” untuk mencegah login secara langsung menggunakan account “root”. Hal ini semata-mata untuk mempersulit percobaan mengambil alih kendali sistem. PermitRootLogin no Dengan demikian, setiap sesi login harus didahului dengan otentikasi sebagai user biasa. Barulah kemudian user yang berhasil diotentikasi otentikasi boleh mengubah previlege-nya ke “root”.
PubkeyAuthentication Memberi nilai “yes” pada kata kunci ini, berarti memperbolehkan otentikasi menggunakan key. Pada kata kunci sebelumnya, PasswordAuthentication sudah dicegah, oleh karena itulah kata kunci ini seharusnya diperbolehkan. PubkeyAuthentication yes Kata kunci lain yang tidak disebutkan di sini, seperti yang telah diutarakan sebelumnya, dijelaskan secara detail di manual page sshd_config(5). Kata kuncikata kunci itu (yang tidak disebutkan di sini), adalah kata kunci yang menurut pandangan penulis tidak memberikan efek signifikan untuk keamanan atau memiliki nilai default yang cukup aman, sehingga tidak perlu lagi dilakukan modifikasi padanya.
Aktivasi efek konfigurasi Setelah melakukan perubahan konfigurasi, agar memberikan efek pada sshd, selanjutnya Anda perlu memberikan sinyal SIGHUP kepada sshd. Identifikasilah pid sshd lalu kirim sinyal
74
INFOLINUX MEI 2003
ke sana. Berikut ini langkah-langkah pengiriman sinyalnya: # kill -HUP ‘cat /var/run/sshd.pid‘ Perhatikan: yang digunakan adalah tanda “ ` “ (backtick) bukan “ ‘ “ (single quote). Jika di sistem Anda tersedia script sshd, maka Anda bisa juga menggunakan script itu untuk me-restart sshd tanpa harus mengirim sinyal SIGHUP supaya sshd kembali membaca file konfigurasi. Berikut ini penggunaan script init sshd di distribusi GNU/Linux SuSE, RedHat dan Mandrake. SuSE, RedHat, dan Mandrake: # /etc/init.d/sshd restart atau hanya di SuSE: # rcsshd restart atau hanya di Mandrake: # service sshd restart
Authentication Key Secara keseluruhan, perubahan yang dilakukan pada perilaku sshd (modifikasi sshd_config) mengakibatkan satu penyesuaian prosedur koneksi dilihat dari sisi client. Penyesuaian tersebut adalah pada metode otentikasi. Dengan perubahan di sisi sshd, maka client tidak lagi diberikan peluang untuk melakukan otentikasi menggunakan password, client hanya diberi peluang untuk mengotentikasikan dirinya dengan menggunakan “Authentication Key” atau Kunci Authentikasi. Paling tidak, setiap user yang ingin melakukan remote login ke server, harus memiliki dua kunci. Kunci tersebut adalah “Private Key” dan “Public Key”. Private key adalah kunci pribadi yang harus dijaga oleh setiap user. Kunci tersebut tidak boleh jatuh ke tangan orang lain. Izin baca-tulis-eksekusi untuk “group” dan “other” pada kunci ini harus ditiadakan. Kunci ini adalah identitas pribadi yang digunakan oleh sshd untuk melakukan authentikasi dan memutuskan untuk memperbolehkan atau tidak memperbolehkan sesi login user. Sedangkan public key adalah kunci pasangan private key. Public key ini akan disimpan di sisi sshd dan boleh dibaca secara global.
www.infolinux.web.id
Membuat Private/Public Key Sekarang saatnya untuk membuat kedua kunci yang dibutuhkan tersebut. Gunakan ssh-keygen untuk membuat Authentication Key yang akan digunakan bersama ssh(1). $ ssh-keygen -t dsa Option -t diperlukan untuk mendefinisikan metode enkrip yang akan digunakan pada key-pair (public/private key) yang akan dibuat. Anda bisa memilih dsa atau rsa sebagai metode enkrip key-pair. Selanjutnya Anda diminta memutuskan tempat di mana key akan disimpan. Tekan saja ENTER jika key hendak disimpan di tempat default ~/.ssh/id_dsa Enter passphrase (empty for no passphrase): Enter same passphrase again: Anda diminta untuk memberi password untuk key yang akan di-generate sebanyak dua kali (yang terakhir digunakan untuk meyakinkan password yang dimaksud sesuai dengan keinginan Anda). Seperti yang dijelaskan sebelumnya, password ini akan digunakan untuk memastikan pengguna key ini adalah yang berhak menggunakannya. Proses generate key-pair memakan waktu tidak terlalu lama, walaupun tergantung pada kecepatan prosesor mesin Anda. Setelah proses selesai keypair akan tersimpan di dalam direktori ~/ .ssh sebagai ~./ssh/id_dsa untuk private key dan ~/.ssh/id_dsa.pub untuk public key.
Menyelenggarakan koneksi SSH lebih aman UNIX Client Dengan memiliki key-pair, user sudah dapat melakukan koneksi yang aman ke sshd. Pada saat client memulai koneksi, sshd (server) akan memeriksa daftar public key yang diperbolehkan untuk login. Daftar tersebut diambil dari file ~./ ssh/authorized_keys. Oleh karena itulah, public key yang dimiliki user harus masuk dalam daftar itu. Di mesin server, tambahkan isi id_dsa.pub ke dalam file ~/.ssh/authorized_keys. $ cat id_dsa.pub > ~/.ssh/ authorized_key
Tutorial SSH GTK sebelumnya (id_dsa atau id_rsa) di salah satu folder windows. Setelah itu, jalankan PuTTYgen. Setelah tampil window PuTTYgen, pilihlah Convertions Import keys, lalu pilihlah Private key rsa atau dsa yang akan di konversi ke format PuTTY.
Windows Client Untuk user yang akan menyelenggarakan koneksi ssh menggunakan Windows sebagai clientnya, biasa nya menggunakan PuTTY sebagai program ssh client. PuTTY bisa di-download secara gratis dari http://www.chiark.greenend.org.uk/ sgtatham/putty/download.html. Jika Anda menggunakan PuTTY, maka jangan lupa untuk men-download juga PuTTYgen. PuTTY tidak mengenal authentication key yang dibuat OpenSSH secara langsung. Oleh karena itulah, key yang anda buat sebelumnya harus dikonversi dahulu ke dalam format yang dimengerti oleh PuTTY. Langkah-langkah konversi key dari format OpenSSH ke format putty adalah sebagai berikut: Pertama siapkan file yang berisi private key yang telah di-generate
Setelah Anda berhasil memberikan password key, PuTTYgen akan melakukan konversi format tersebut ke format yang dikenal oleh PuTTY. Simpanlah hasil konversi tersebut. Untuk menyimpan hasil konversi tekan tombol “Save the generated key”, karena saat ini Anda meng-generate Private Key, maka pilih lah tombol “Save private key”. Hasil konversi yang dilakukan oleh PuTTYgen bisa Anda gunakan untuk Gambar 4. Save Key mengotentikasi koneksi ssh. Untuk Memulai sesi ssh, sekarang jalankan PuTTY, masukkan nama host atau IP address host tujuan login. Jangan lupa untuk memilih protokol ssh (port 22). Lalu dari menu pilihan PuTTY, yang terletak di sebelah kiri, pilihlah SSH Auth. Dari menu Authentikasi SSH PuTTY, bukalah Private key yang dihasilkan dari konversi oleh PuTTYgen sebelumnya. Lalu pilih Open untuk memulai koneksi. Kemudian Anda akan diminta untuk memasukkan nama user yang ingin digunakan dalam sesi login, serta kembali diminta untuk memasukkan
jika hanya satu public key yang diperbolehkan, atau gunakan double redirection “>>” jika ingin ada lebih dari satu public key dalam daftar tersebut untuk memasukkan public key lainnya. Jika public key teridentifikasi sebagai key yang diperbolehkan login, server akan memberikan tantangan berupa nomor acak kepada client yang mencoba login. Nomor acak tersebut dienkripsi menggunakan public key user bersangkutan. Tantangan nomor acak itu hanya bisa didekripsi dengan menggunakan private key pasangan yang tepat, yaitu private key yang dimiliki user. Private key ini menggunakan id_dsa yang terdapat di dalam file ~/.ssh/identity. Tambahkan isi id_dsa ke dalam file ~/.ssh/identity di host client, agar ssh client dapat menjawab tantangan nomor acak dengan tepat. $ cat id_dsa > ~/.ssh/identity
Gambar 1. PuTTY key-gen
Gambar 5. PuTTY
Gambar 2. Import Keys
Gambar 3. Key Password
www.infolinux.web.id
Gambar 6. Auth Key PuTTY
password Private Key. Jika semua berjalan mulus, maka sesi ssh berhasil dilakukan oleh PuTTY, seperti berikut ini. login as: shiro Authentication with public key “importedopenssh-key” Passphrase for key “imported-openssh-key”: [shiro@aurum shiro]$ Dengan pembatasan di sisi server (sshd) akan memaksa user di sisi client untuk Gambar 7. Load Private Key menggunakan metode koneksi dengan lebih aman. Setelah mempersiapkan key-pair, selanjutnya koneksi ssh bisa dilakukan seperti biasa. Tidak ada perbedaan cara penggunaan ssh client dengan perubahan ini, hanya saja di sini tidak lagi digunakan password user di sistem. Password yang ditanyakan pada awal koneksi adalah password yang digunakan pada saat membuat key-pair. Berikut ini ilustrasi percobaan login setelah langkah-langkah pengamanan. [shiro@aurum shiro]$ ssh 192.168.1.253 Enter passphrase for key ’/home/shiro/ .ssh/identity’: (masukkan password key-pair) [shiro@cobalt shiro]$ Reza Iskandar Achmad ([email protected])
Untuk membuka Private key Anda akan diminta memberikan password key, masukkan password yang digunakan saat pembuatan key tersebut.
INFOLINUX MEI 2003
75
Tutorial GTK OpenMOSIX
Clustering di Linux dengan OpenMOSIX Bagian 1 dari 3 Artikel Anda masih ingat film “Titanic” atau “Shrek”? Pembuatan filmfilm itu menggunakan komputer-komputer Linux yang dibangun sebagai sistem cluster. Clustering dapat menghasilkan sistem setara mainframe atau superkomputer dengan biaya rendah.
K
alau Anda membaca istilah clustering, maka mungkin dalam benak Anda timbul 1001 persepsi. Mungkin salah satunya, Anda mengaitkan dengan istilah cluster untuk satuan data di disk pada DOS. Lalu Anda mungkin berpikir lagi, “Hemm, kalau begitu, berarti ini kata kerja, tapi ini aneh juga, kan artinya jadi penyatuan data di disk?” Atau bisa juga kalau dikaitkan dengan istilah di ilmu data mining, cluster berarti penyatuan sekelompok data yang mempunyai korelasi atau karakteristik sejenis, tapi lagi-lagi, “Kok rada nggak nyambung ya?” Ok, semua konsep di atas sebenarnya membawa kita pada suatu kesamaan, bahwa ada konsep penyatuan. Lalu, apanya yang disatukan? Dalam hal ini karena konteks kita berbicara clustering di Linux, berarti kita menyatukan PC-PC atau server (atau apapun device yang ber-OS Linux) ke dalam satu kesatuan komputasi. Wah, terkesan seperti suatu hal yang sulit dimengerti dan sukar dibayangkan. Baiklah, kita mulai dengan suatu gambaran sederhana. Pada Gambar 1. terlihat ada suatu node (istilah yang menandakan suatu satuan pemroses dalam jaringan, misal PC) yang menjadi master, dan dibantu 8 slave. Di antara master dan slave, ada konektor dua arah yang menandakan komunikasi. Lalu, dengan konfigurasi seperti apa yang bisa kita lakukan? Bukankah ini sama saja dengan konfigurasi jaringan biasa dengan topologi star? Benar! Cluster pada dasarnya juga menggunakan jaringan, tapi yang menjadi ciri khususnya adalah bagaimana
76
INFOLINUX MEI 2003
konfigurasi ini digunakan untuk menyelesaikan problem, misal saya menulis suatu program C berikut ini (pseudo code): [Listing 1] #include <stdio.h> int main(argumen pertama dan kedua menyatakan range angka) { x=0; if (argumen_pertama<argumen_kedua) { for(i=argumen_pertama;i<= argumen_kedua;i++) { x+=i*i; } print x; } } Listing 1 ini sederhana saja, fungsinya menjumlahkan kuadrat angka-angka dalam suatu range nilai awal dan akhir, dan hasilnya dicetak ke stdout (standar keluaran). Lalu misal kita ingin menjumlahkan suatu kuadrat angka dari 1-80, maka kita bisa langsung menggunakan program di atas untuk menghitung sampai dengan kuadrat dari 80, atau dengan cara ala paralel sebagai berikut. [Listing 2] #!/usr/bin/bash TAMPUNG=0 rsh [node_slave_a][user_a]/usr/bin/ program_kuadrat 1 10>/tmp/hasil-1.txt & rsh [node_slave_b][user_a]/usr/bin/ program_kuadrat 11 20>/tmp/hasil-2.txt & : :
www.infolinux.web.id
rsh [node_slave_h][user_a]/usr/bin/ program_kuadrat 71 80>/tmp/hasil-8.txt & Loop untuk cek semua file hasil output sudah ada Tambahkan semua hasil output ke variabel TAMPUNG echo “Hasil Kuadrat : $TAMPUNG” Di Listing 2 ini, saya sengaja tidak memperinci kode program, sekadar untuk ilustrasi saja. Pada script ini, sebut saja script master, kita jalankan di node master yang nantinya membagi tugas penjumlahan ke node slave. Aha! Anda pasti berpikir, “Bagaimana cara saya membagi task ke slave node?” Sederhana, di sini peranan rsh dimainkan. Terlebih dahulu kita asumsikan program di Listing 1 kita kompilasi menjadi (misalnya) program_kuadrat, lalu kita taruh di /usr/bin. Jangan lupa chmod +x dulu program ini. Baru kita jalankan rsh. Ini pun harus harus kita tambahkan di /etc/host.equiv masingmasing node sebagai berikut. [Listing 3] IP_master_node nama_user_untuk_ eksekusi dst Jadi kalau misalnya Anda buat di semua node user dengan nama “test” (bisa juga Anda pakai NIS, tapi untuk sementara lupakan dulu, dan IP master node Anda 10.11.12.1, maka entry menjadi: 10.11.12.1test Eksekusi secara lengkap sebagai berikut: $ su test # program_master
Tutorial Tutorial OpenMOSIX GTK Dan voila, output akan keluar di konsol. Anda sudah bisa membayangkan proses clustering? Mungkin ilustrasi ini tidak sempurna, tapi saya harap bisa menjadi gambaran awal. Mungkin di sini timbul pertanyaan lagi “Kan tidak semua proses bisa diparalel seperti ini?” Kalau Anda berpikir begitu, berarti Anda cukup kritis. Memang secara umum, program paralel baru efektif jika: Problem yang dikerjakan bisa dibagibagi. Antara subproses satu dengan yang lainnya tidak bersifat batch, maksudnya saling menunggu satu sama lain, atau punya urutan yang pasti. Komunikasi yang dilakukan antar subproses tidak terlalu dominan dibanding komputasi.
Node Slave
Node Slave
Node Slave
Node Slave
Node Master
Node Slave
Node Slave
Node Slave
Node Slave Distributed Computing, tapi mungkin bisa diperjelas lagi bahwa clustering difokuskan pada mekanisme dari OS dan hardware untuk menyatukan sumber daya setiap node (bisa CPU, memori, disk, dan sebagainya). Di atas cluster sendiri, kita bisa menjalankan berbagai aplikasi, walaupun yang mendominasi ada dua jenis, yang sekaligus menjadi tipe cluster, yaitu: 1. High Perfomance Computing (HPC). Secara umum, tipe cluster HPC ditujukan pada bagaimana suatu proses komputasi diakselerasi, dengan demikian task bisa diselesaikan lebih cepat. Contoh yang penulis berikan di atas, bisa dianggap salah satu model cluster HPC yang paling sederhana
Kalau ini saya terjemahkan untuk permasalahan saya tadi, maka bisa diartikan sebagai berikut. Problem menghitung kuadrat 1 sampai dengan 80 saya bagi menjadi 8 bagian, masing-masing 1-10, 11-20, dan seterusnya. sampai 71-80. Lalu, bagaimana satu sama lain tidak menunggu? Karena yang saya gunakan adalah script biasa, maka kita bisa akali dengan background proses. Solusi cepat dan efisien. Kernel Linux yang kita utilize jadi pengatur job. Lalu output-nya? Sederhana, kita cetak di suatu file teks! Nah, ini yang terakhir, proses penjumlahan. Bagaimana kita tahu suatu proses di node sudah selesai? Kita gunakan saja looping sambil cek IF EXIST dari file output tadi. Memang bukan yang tercanggih, tapi cukup memadai. Baru dari tiap isi file ini, kita jumlahkan isinya. Jadi komunikasi di sini contohnya adalah saat node slave mengirim hasil ke master.
2. High Availability (HA). Secara umum, tipe cluster ini ditujukan agar program yang dijalankan di atasnya bisa terus running, sekalipun salah satu node hang atau down. Contoh yang paling mudah adalah web server Apache yang diset dengan suatu redirector, sehingga jika salah satu server down, server lain bisa mengambil alih.
Sejauh ini, kita sudah melihat bahwa karakteristik utama clustering, yaitu bagaimana suatu task ditangani secara bersama-sama. Kata bersama-sama di sini yang membedakan cluster dengan mekanisme jaringan biasa yang menjalankan program client server. Memang seringkali rancu dengan
“Hemm, berarti ada banyak tipe clustering, lalu OpenMOSIX termasuk yang mana?” Jawaban singkat, HPC! Namun sebelum kita memasuki pembahasan OpenMOSIX, kita lanjutkan sedikit sejarah clustering. Ide awal clustering adalah tantangan menciptakan kecepatan komputasi setara
www.infolinux.web.id
mainframe, namun dengan biaya yang rendah. Anda mungkin sedikit banyak tahu, bahwa harga mainframe, misal Cray, luar biasa mahalnya! Di era 70-an dan 80-an dimana mainframe (IBM AS/ 400 masuk kategori mainframe) cukup terkenal, hanya perusahaan-perusahaan bermodal besar yang sanggup membelinya. Biasanya, di lingkungan komersial, sering dipakai untuk sistem banking. Lalu timbul ide dari dua ilmuwan NASA pada tahun 1994 yaitu Dr. Donald Becker dan Dr. Ron Sterling untuk memulai suatu riset dengan sebutan Beowulf. Riset ini lalu berhasil menggabungkan 16 PC 486 DX untuk melakukan komputasi paralel dengan bantuan library paralel. Memang hasil flops (floating operation per second)-nya masih jauh di bawah mainframe, tapi ini merupakan awal yang baik. Istilah flops adalah satuan yang digunakan untuk mengukur kecepatan komputasi, dan ini diadopsi dalam clustering. Kenapa operasi floating point? Karena operasi floating point dinilai bisa memacu prosesor sampai titik maksimum. Jadi agak berbeda dengan kita menyebut prosesor, misal 166MHz, maka untuk istilah dalam clustering, kita pakai misal 2 Mflops. Lalu Anda penasaran, “Apa saja sih komponen penyusun Beowulf?” Berdasarkan paper dan keterangan yang penulis himpun, komponen Beowulf adalah:
INFOLINUX MEI 2003
77
Hardware, dipakai sembarang PC dengan basis prosesor Intel. “Bisa nggak dengan tipe lain?” Bisa saja, tapi karena dianggap prosesor Intel yang terjangkau (mungkin ini alasannya Beowulf pertama memakai prosesor Inte), maka jadilah Intel yang dipakai. Network card, kabel UTP, dan hub atau switch. Peralatan standar jaringan, Anda tentu sudah tidak asing lagi. Disarankan memakai tipe ethernet, tapi tidak menutup kemungkinan memakai tipe lain. “Pakai yang mana nih, 10 atau 100Mbps?” Terserah, tidak ada batasan. Pilihan hub atau switch pun terserah, tergantung aplikasi yang dipakai. Operating System. Nah ini dia, banyak kan pilihannya? Lucunya, dari banyak riset kecil-kecilan penulis, clustering banyak memakai OS Linux. Kenapa begitu? Ternyata, alasannya: Free, Open Source, dan banyak utiliti-nya. Ini tentu saja memudahkan pembuat cluster. “Wah, saya punyanya Windows, gimana dong?” Jangan khawatir, banyak alternatif software cluster yang jalan di atas WIndows, walaupun tidak sebanyak dan sepowerful di Linux/UNIX. Library pemrograman paralel. “Waduh apalagi nih? Saya kan bukan programer.” Ya, memang terkesan bikin ribet, tapi ini adalah pelengkap yang kadang diperlukan, terutama jika kita ingin menulis program paralel dengan cepat atau menjalankan suatu program paralel yang membutuhkan library paralel. Dua library utama yang terkenal adalah PVM dan MPI. Kalau Anda tidak butuh, cukup pakai saja rsh/ssh, beres. Dari keempat komponen di atas, menurut penulis semuanya memegang peranan penting. Tapi, yang cukup memegang peranan penting adalah Operating System. Kenapa demikian? Dengan Operating System yang baik, akan didapat pengaturan task yang optimum dan reliability yang andal.
78
INFOLINUX MEI 2003
Reliability yang baik diperlukan, mengingat cluster dalam kesehariannya kita bebani task yang loadnya tinggi. Bisa dibayangkan, di tengah-tengah Anda menunggu suatu program paralel yang run time-nya 20 menit, tiba-tiba di menit ke-17, salah satu node down karena OS-nya hang tanpa sebab. Seringkali untuk lebih meminimalkan biaya dan kemudahan upgrade, dipakai metode diskless workstation. “Nah, saya bisa pakai LTSP nih.”” Tepat sekalii! Anda bisa menggunakan paket LTSP, setup seperti biasa, tapi hanya komponen-komponen yang penting, semisal gcc, glibc, shell (bash,csh), rsh/ssh. X Window? Sebaiknya tidak usah, kecuali ada keperluan spesifik, misal tiap node harus ada display X Window. Catatan: biasanya slave node hanya berfungsi sebagai pemroses, jadi kalau pun anda butuh X Window, kemungkinan besar hanya pada master node. Setup LTSP tidak dijelaskan di sini, silakan anda simak artikel InfoLINUX edisi-edisi sebelumnya. Sampai di sini kita melihat ada satu tantangan utama yaitu: Bagaimana saya membangun cluster dengan cepat dan mudah, tanpa direpotkan dengan pengetahuan library paralel, tapi dengan hasil optimum? Jawabannya, (Open)MOSIX! Konsep pertama yang digambarkan di atas disebut NoW (Network of Workstation) atau PoP (Pile of PC). “Well, namanya antik juga,” mungkin begitu pikir Anda. Tapi di saat awal ide clustering digulirkan, konsep ini sudah termasuk canggih. Apalagi saat itu (akhir 80-an dan awal 90-an) media untuk local networking belum terlalu canggih. “Lalu, bisa puyeng nih, masa bikin cluster saja, setup dan programmingnya pusing tujuh keliling?” Ya, ini suatu pertanyaan wajar. Lalu timbullah ide memunculkan konsep clustering berbasis SSI (Single System Image). Apa itu SSI? Sederhananya, SSI adalah clustering yang menggabungkan beberapa node (PC dan sebagainya) menjadi satu kesatuan, sehingga dari pandangan luar terlihat sebagai satu
www.infolinux.web.id
Tutorial GTK OpenMOSIX
Situs OpenMOSIX
satuan komputasi. Satu kesatuan yang dimaksud di sini adalah kesatuan unit CPU, kesatuan memori, serta kesatuan media penyimpan (storage). Ada dua cara untuk membentuk satu kesatuan ini. 1 . Middleware. Secara umum, ini meliputi semua komponen/library yang menjadi perantara antara program yang berjalan di user space dengan kernel. Contoh yang penulis ketahui adalah sistem batch scheduler seperti Condor atau Maui Scheduler atau Enfuzion. Batch scheduler akan penulis bahas di artikel lain. Library PVM dan MPI (misalnya MPICH) bisa juga dimasukkan dalam kategori Middleware, karena mereka sebenarnya juga menjadi perantara antara program paralel yang anda tulis dengan OS. 2 . Modifikasi kernel (kernel extension). Secara umum, ini meliputi semua tambahan kernel OS yang membuat OS tersebut menjadi sistem cluster, termasuk yang bertipe SSI. IBM Sysplex, Compaq Tru Custer, VAX Cluster adalah contoh-contoh SSI yang bersifat komersial. Sedangkan MOSIX dan OpenMOSIX adalah contoh yang bersifat GPL. Namun semenjak 2002, MOSIX menjadi closed sourse dan dibentuklah proyek OpenMOSIX yang dipimpin Dr. Moshe Bar, dengan model lisensi GPLv2. Lalu, bagaimana dengan OpenMOSIX itu sendiri? Tunggu pembahasannya di InfoLINUX yang akan datang. Mulyadi Santosa ([email protected])
Tutorial BAHAMUT Tutorial & EPONA GTK
Membangun Server IRC dengan BAHAMUT dan EPONA Berdiskusi atau chatting tidak harus melalui server IRC umum di Internet. Apalagi jika ingin lebih terjaga privasi Anda atau perusahaan, memiliki server IRC sendiri akan lebih seru dan aman.
B
AHAMUT adalah salah satu Internet Relay Chat Daemon (IRCd). BAHAMUT didesain untuk DALnet yang merupakan salah satu jaringan IRC yang sangat terkenal di dunia Internet. Sebenarnya banyak sekali jenis IRCd yang ada, tapi dalam pandangan penulis, BAHAMUT lebih mudah diinstalasi dan dikonfigurasi dari yang lain. Pada saat pembuatan tulisan ini, versi terakhir BAHAMUT adalah bahamut-1.4.35-release.tar.gz, tetapi yang penulis coba instalasi adalah bahamut-1.4.32-release.tar.gz.
2. Ekstrak File Tarball $ tar -zxvf bahamut-1.4.32-release.tar.gz
[/home/belog/bahamut-1.4.32-release/src/ ircd] -> /home/belog/bahamut/ircd
Setelah proses ekstraksi selesai, akan membentuk direktori baru dengan nama bahamut-1.4.32-release.
Would you like to see when a /stats is requested? This only applys for +y users. [Yes] -> Yes
Instalasi dan konfigurasi BAHAMUT
What are the maximum File Descriptors that the IRCD can use? [1024] -> 1024
Sebelum memulai instalasi, saya asumsikan Anda mempunyai account di mesin Linux dengan username belog, punya aksess root dan direktori kerja ada di /home/belog. Login ke mesin Linux: belogpolos login: belog password: (Masukkan password yang benar lalu tekan enter). Jika login ke Linux sukses, tampilan prompt Linux Anda (misalnya) seperti ini: belog@belogpolos:~$ Langkah-langkah instalasi BAHAMUT: 1. Download BAHAMUT Jika belum mempunyai source code BAHAMUT, Anda dapat men-download dari ftp://ftp.dal.net/pub/dalnet/server/ bahamut/bahamut-1.4.32-release.tar.gz atau http://bahamut.dal.net/ircd-qa/ bahamut-1.4.32-release.tar.gz. Simpan di bawah direktori kerja Anda, misalnya / home/belog.
3. Konfigurasi BAHAMUT $ mkdir bahamut $ cd bahamut-1.4.32-release $ ./configure $ ./config Welcome to Config for DALnet IRCD, Version: bahamut(1)-4.30(00).
What are the maximum number of Users you intend to allow on your IRC server? Note that you can now change this number on the fly with with /set command. [1000] -> 1000 What is the maximum connection buffer amount? Note, this CANNOT exceed the number of file descriptors minus the maximum clients. [24] -> 24 What directory are all the server configuration files in? Note, this directory name needs to end with a/ [/home/belog/bahamut-1.4.32-release/] -> / home/belog/bahamut/ What is the explicit path to where the ircd binary will be installed? This should point to a file, not a directory.
www.infolinux.web.id
There are clients out there ignoring the MOTD numeric, so there is no point forcing MOTD on connecting clients. Instead of sending the MOTD, enabling this will just send a short notice to the connecting client asking them to read the motd. To change the notice, you may edit ircd.smotd in the same directory as your ircd.motd file. [Yes] -> Yes Would you like Connecting Clients to by automatically set +i? [Yes] -> Yes Would you like to compile as a HUB? [No] -> Yes Would you like connecting users to be sent a notice regarding wingate and socks scans? This must be defined if you intend to run your server on DALnet. [Yes] -> Yes What host does your wingate bot run from? This is only a default and may be overridden with a T: line See doc/example.conf for more information on T: lines [some.bot.host] -> belogpolos.net What address can users affected by k-lines
INFOLINUX MEI 2003
79
Gambar 1. MIRC mengakses BAHAMUT
ask for help? This is displayed to all LOCALLY k-lined users upon connect. This should be the address of the local administrator. This should _NOT_ be [email protected]! [[email protected]] -> [email protected] What address can users affected by autokills ask for help? This is displayed to all globally autokilled users upon connect. This should be the address of the network administrator. On dalnet, this should be [email protected]. [[email protected]] -> [email protected] Would you like to use syslog for server logging? This is STRONGLY reccomended, many errors can be caught by syslog. [Yes] -> no What sendq length do you wish to have? [5050000] -> What size of a bufferpool do you wish to have? A bufferpool is a total of ALL sendq’s in use [(4 * MAXSENDQLENGTH)] -> Do you want your server to hide U:lined servers in a /links? If you are planning to link to DALnet, this
80
Tutorial GTK BAHAMUT & EPONA
INFOLINUX MEI 2003
Gambar 2. Channel IRC BAHAMUT
MUST be defined. [Yes] -> Do you want to use the poll system call? If you are on a solaris machine, this is mandatory. Linux machines should use select until poll() is ironed out. Poll works nicely on freebsd machines. Select is more economical for small networks. [Yes] -> If you have network services and would like to make use of the built in secure services aliasing features, type in the name of your network services server here. If you are a DALnet admin, you would type in “services.dal.net” below. [services.dal.net] -> services.localhost.net What is the maximum number of channels a user should be able to join? [10] -> 25 Would you like to encrypt oper passwords in O:lines? [No] -> Thats all folks.. Writing include/options.h...Done. Now your include/options.h is configured. Please look over
www.infolinux.web.id
include/config.h for more server specific options. To compile your server, type ‘make’. 4. Kompilasi Bahamut $ make 5 . Edit File Konfigurasi (misal dengan editor teks pico) $ cd bahamut $ pico ircd.conf Sesuaikan nomor port (misalnya 6667), alamat e-mail dan informasi network lainnya sesuai dengan kondisi di jaringan Anda. 6. Jalankan Server IRC $ ./ircd Importing prime... Prime imported. Generating random state... No random state found, trying to generate entropy from /dev/random... Got 64 of 512 bits of entropy.. Got 128 of 512 bits of entropy.. Got 192 of 512 bits of entropy.. Got 256 of 512 bits of entropy.. Got 320 of 512 bits of entropy.. Got 384 of 512 bits of entropy.. Got 448 of 512 bits of entropy.. Got 512 of 512 bits of entropy.. Random state successful. Value of FD_SETSIZE is 1024 Value of NOFILE is 256 Ircd is now becoming a daemon.
Tutorial BAHAMUT Tutorial & EPONA GTK
Membuat IRC Service dengan EPONA EPONA adalah sebuah IRC Services yang merupakan pasangan dari BAHAMUT. Dengan EPONA kita dapat membuat sistem layanan, seperti NickServ, ChanServ, MemoServ, BotServ, dan OperServ. EPONA dirancang sangat stabil, efisien dan user friendly. Di samping dengan BAHAMUT, EPONA juga kompatibel dengan IRCd DreamForge, Unreal, dan Ultimate. Langkah langkah instalasi EPONA (dalam hal ini epona-1.4.10.tar.gz) adalah sebagai berikut (asumsi: direktori kerja di /home/belog). 1. Download Epona di www.epona.org 2. Ekstrak file tarball source code Epona $ tar -xzvf epona-1.4.10.tar.gz 3. Konfigurasi EPONA Sebelumnya kita buat dulu direktori services. $ mkdir services Masuk ke direktori epona-1.4.10, dan jalankan script configure, lalu jawab pertanyaan seperti contoh di bawah ini. $ cd epona-1.4.10 $ ./configure Where do you want the data file to be installed? [/home/belog/services] [enter] Which group should all Services data files be owned by? (If Services should not force files to be owned by a particular group, just press Return.) [enter] What should the default umask for data files be (in octal)? (077 = only accessible by owner; 007 = accessible by owner and group)
[077] [enter] Which of the following is closest to the type of server on your IRC network? 1) DreamForge 4.6.7 [this is an old IRCd, you should upgrade to Bahamut] 2) Bahamut 1.4.27 or later 3) UnrealIRCd 3.1.1 or later 4) UltimateIRCd 2.8.2 or later 5) Sequana 0.2.0 or later [no default] 2 Selanjutnya tinggal tekan [enter] saja, dan tunggu hingga proses konfigurasi selesai.
bawah ini. Y:27:180:0:0:4000000 C:127.0.0.1:mypass:Services.LocalHost.Net::30 N:127.0.0.1:mypass:Services.LocalHost.Net::30 U:Services.LocalHost.Net:*:* H:*::Services.LocalHost.Net 7. Jalankan Services $ ./services Tes dengan menggunakan program IRC (misalnya mIRC) seperti tampak dalam Gambar 3.
4. Kompilasi EPONA $ make Tunggu sampai proses selesai, jika tidak ada pesan error berarti sukses. $ make install Tunggu sampai proses kompilasi selesai. 5 . Edit File Gambar 3. MIRC Mengakses Epona services.conf Karena kita menginstalasi services di Agar services ini jalan secara direktori /home/belog/services, maka otomatis pada saat komputer di reboot, semua file akan tersimpan di sana. tambahkan satu baris berikut ini pada Masuk direktori /home/belog/services: file rc.local (di bawah direktori /etc atau / $ cd /home/belog/services etc/rc.d). /home/belog/services/services -u belog Copy file example.conf menjadi IRC Client di Linux services.conf $ cp axample.conf services.conf Gambar-gambar contoh ini menggunakan mIRC (IRC client di Windows). Anda ingin mencoba IRC client di Linux? Daftar Edit file services.conf sesuaikan berikut hanya sebagian dari banyak paket dengan kebutuhan Anda, misalnya yang tersedia di Linux: seperti contoh ini (dengan editor teks pico): Xchat (tersedia di hampir semua $ pico services.conf distro, atau www.xchat.org) RemoteServer localhost 6667 KsIrc (tersedia bersama paket mypass kdenetwork, lihat www.kde.org) ServerName services.localhost.net Mozilla-irc (tersedia di CD distro, atau www.mozilla.org) ServerDest nama server anda BitchX (www.bitchx.org) 6. Edit File ircd.conf Kvirc (www.kvirc.net) Tambahkan beberapa baris seperti di I Wayan Sudana ([email protected])
Tes dengan menggunakan program IRC di Linux (misalnya xchat) atau di Windows (misalnya mIRC) seperti tampak dalam Gambar 1 dan 2. Agar server IRC (ircd) jalan secara otomatis pada saat komputer di reboot, tambahkan satu baris berikut ini pada file rc.local (di bawah direktori /etc atau /etc/rc.d). /home/belog/bahamut/ircd/ircd -u belog
www.infolinux.web.id
INFOLINUX MEI 2003
81