TA : Rancang Bangun Program Aplikasi Serbaguna Berbentuk Web Untuk Administrasi Sistem dan Jaringan Pada Server Yang Menggunakan Sistem Operasi Unix/Linux.

(1)

WEB UNTUK ADMINISTRASI SISTEM DAN JARINGAN PADA SERVER YANG MENGGUNAKAN SISTEM OPERASI UNIX/LINUX

OLEH :

NAMA : PRIHUTOMO ARDIANTO

N I M : 93.410103295 PROGRAM : S1 (STRATA I)

JURUSAN : MANAJEMEN INFORMATIKA

SEKOLAH TINGGI

MANAJEMEN INFORMATIKA & TEKNIK KOMPUTER SURABAYA 2000


(2)

System operasi unix/linux sebenarnya telah cukup banyak digunakan dan cukup popular. Namun penggunanya adalah para system dan network administrator. Sanagat jarang seorang individu menggunakan system operasi Unix/linux untuk mkeperluan pribadinya, biasanya para individu ini lebih memilh Dos atau Windows.

Pengguna system operasi Unix/linux menggunakan system operasi ini untuk menjalankan server mereka. Unix/linux memang memiliki beberapa kelebihan dalam hal dibanding operasi system lain. Dengan segala fasilitas yang dimiliki system operasi ini para sistem & network administrator tersebut mampu melaksakan tugas-tugas mereka menjaga dan merawat system serta jaringan agar tetap berfungsi sebagaimana mestinya

Melihat kebutuhan diatas maka akan banyak sekali permasalahan jika diinginkan untuk menjaga dan merawat sebuah system dan jaringan setiap saat. Namun demikian masalah-masalah tersebut dapat dispesifikasikan menjadi beberapa masalah saja. Masalah pokok yang menjadi dasar permasalahan ini yaitu kurangnya fasilitas untuk seorang administrator untuk melakukan kegiatan administrasi dari jarak jauh.

Untuk mengatasi hal tersebut diperlukan sebuah aplikasi yang memungkinkan untuk melakukan administrasi dari jarak jauh atau dalam lingkungan internet. Berbagai cara telah dilakukan dan dicoba untuk mewujudkan tujuan tersebut,namun masih saja menemui kegagalan sampai akhirnya ditemukan ide untuk


(3)

menggunakan browser. Program ini merupakan aplikasi yang berfungsi untuk administrasi system dan jaringan pada server yang menggunakan system operasi linux. Cara kerjanya hampir sama dengan perintah manual hanya perbedaannya perintah yang diberikan tidak melalui command line tapi melalui halaman web.


(4)

viii

Halaman

ABSTRAKSI . . . .. . . iv

KATA PENGANTAR . . . vi

DAFTAR ISI . . . viii

DAFTAR TABEL . . . x

DAFTAR GAMBAR . . . xi

DAFTAR LAMPIRAN . . . xiii

BAB I. PENDAHULUAN . . . 1

1.1. Latar Belakang . . . . 1

1.2. Tujuan. . . . . 2

1.3. Rumusan Masalah . . . 3

1.4. Pembatasan Masalah . . . .. 4

1.5. Metodologi . . . 4

1.6. Sistematika pembahasan. . . . 6

BAB II. LANDASAN TEORI . . . 8

2.1. Perl. . . . . . 8

2.2. CGI. . . . . . 1 5 2.3. HTML . . . . . . 23

BAB III. ANALISA DAN DESAIN . . . 38

3.1. Gambaran Umum sistem . . . . . . 38


(5)

ix

3.4. Structure Chart . . . . . . . 71

3.5. Flow Chart . . . . . . 71

BAB IV. PENGUJIAN SISTEM . . . 73

BAB V. PENUTUP . . . 103

5.1. Kesimpulan . . . 103

5.2. Saran. . . . 103 DAFTAR PUSTAKA . . . 10 5


(6)

(7)

1

PENDAHULUAN

1.1. Latar Belakang Masalah

Perkembangan teknologi informasi sangat pesat berkat lahirnya internet beberapa dekade yang lalu. Bahkan internet sudah menjadi bagian yang amat vital dalam proses menampilkan informasi. Dapat pula dikatakan bahwa internet adalah bagian pokok yang memegang peranan sangat penting dalam proses perkembangan teknologi informasi.

Perkembangan internet yang pesat dapat dilihat dari semakin banyaknya perusahaan-perusahaan atau organisasi-organisasi yang saling berlomba untuk memasang dan menggunakan fasilitas-fasilitas yang terdapat pada internet dengan tujuan agar dapat meningkatkan dan menunjang kegiatan perusahaan atau organisasinya. Perusahaan atau organisasi yang memanfaatkan fasilitas internet tidak terbatas pada perusahaan atau organisasi dalam skala besar dan kecil, tetapi perusahaan atau organisasi dalam skala keluarga pun memanfaatkan fasilitas internet. Karena mereka mulai menyadari betapa besar keuntungan yang diperoleh dengan memanfaatkan fasilitas internet.

Jika ditinjau kembali teknologi internet dalam sepuluh atau lima belas tahun kebelakang, maka dapat disimpulkan bahwa teknologi internet adalah sesuatu yang sulit untuk dipelajari dan dikembangkan. Tetapi berkat munculnya World Wide Web (WWW) yang dipelopori oleh tim Berner-Lee dari CERN, semua pandangan tersebut berubah. WWW menjadikan internet suatu sistem yang berbasiskan


(8)

Graphical User Interface (GUI) yang tidak kalah menariknya dengan apliakasi pada Personal Computer (PC) pada umumnya.

WWW dapat menampilkan berbagai macam bentuk informasi, baik dalam teks, citra, serta beberapa bentuk data multimedia. Yang paling menarik dari teknologi internet atau WWW adalah, teknologi ini dapat dijalankan pada berbagai macam processor serta jenis komputer, hal ini berarti teknologi www dapat pula diakses dari berbagai jenis komputer yang memiliki berbagai macam sistem operasi yang berbeda pula.

Seiring dengan berkembangnya dunia internet. Semakin banyak pula perusahaan atau organisasi yang mengunakan jaringan komputer untuk menunjang aktivitas kerja mereka. Sebuah jaringan komputer membutuhkan seseorang yang bertugas untuk menjaga dan merawat seluruh sistem dan jaringan agar dapat berfungsi dengan baik. Orang yang bertugas untuk menjalankan proses-proses administrasi tersebut adalah system & network administrator.

1.2. Tujuan

Maksud dan tujuan pembuatan program aplikasi serbaguna untuk administrasi sistem dan jaringan yang berbasis pada sistem operasi unix/linux adalah sebagai berikut :

1. untuk memudahkan superuser atau administrator sistem dan jaringan dalam melaksanakan tugas-tugasnya merawat dan menjaga fungsi-fungsi dari sebuah server yang digunakan oleh user-user yang ada di dalam sebuah jaringan meskipun administrator tersebut berada jauh dari server serta mengunakan komputer yang memiliki sistem operasi yang berlainan.


(9)

2. Sistem administrator dapat tetap memberikan dukungan terhadap segala bentuk kegiatan yang dilakukan oleh user, sehingga user tetap dapat melaksanakan tugasnya dengan baik

3. Dengan semakin baiknya kinerja para user berarti telah meningkatkan kinerja perusahaan secara keseluruhan.

1.3. Perumusan masalahan

Sistem operasi unix/linux sebenarnya telah cukup banyak digunakan dan cukup populer. Namun pengunanya kebanyakan adalah para sistem & network administrator. Sangat jarang seorang individu mengunakan sistem operasi Unix/linux untuk keperluan pribadinya, biasanya para individu ini lebih memilih sistem operasi Dos atau Windows.

Pengguna sistem operasi unix/linux menggunakan sistem operasi ini untuk menjalankan server mereka. Unix/linux memang memiliki beberapa kelebihan dalam hal system & networking dibanding sistem operasi lain. Dengan segala fasilitas yang dimiliki sistem operasi ini para sistem & network administrator tersebut mampu melaksanakan tugas-tugas mereka menjaga dan merawat sistem serta jaringan agar tetap berfungsi sebagaimana mestinya.

Melihat kebutuhan diatas maka akan banyak sekali permasalahan jika diinginkan untuk menjaga dan merawat sebuah sistem dan jaringan setiap saat. Namun demikian masalah-masalah tersebut dapat dispesifikasikan menjadi beberapa masalah saja. Masalah pokok yang menjadi dasar permasalahan ini yaitu kurangnya fasilitas untuk seorang administrator untuk melakukan kegiatan administrasi dari jarak jauh.


(10)

Maka dalam pembuatan tugas akhir ini, kami mengajukan permasalahan untuk menjawab "Bagaimana melakukan kegiatan administrasi sistem dan jaringan pada sebuah server yang menggunakan sistem operasi unix/linux melalui sebuah komputer yang menggunakan sistem operasi selain unix/linux, dengan membuat aplikasi administrasi sistem dan jaringan dalam bentuk web?".

1.4. Pembatasan masalah

Pembahasan yang dilakukan pada tugas akhir ini tidak meliputi pembangunan sebuah server jaringan yang menggunakan sistem operasi unix/linux, tetapi lebih diutamakan pada pembuatan aplikasi-aplikasi yang dapat dijalankan pada server yang menggunakan sistem operasi unix/linux yang dapat dimanfaatkan untuk kepentingan pengaturan administrasi pada sebuah sistem jaringan.

Karena tugas-tugas yang akan dilakukan oleh seorang administrator sistem dan jaringan sangat banyak dan beragam maka dalam tugas akhir kali ini hanya akan dibahas beberapa tugas saja, antara lain :

1. Administrasi dan konfigurasi sistem 2. Administrasi printer

3. Administrasi & Konfigurasi jaringan 4. User assistance

5. Linux File Sharing / export facility 1.5. Metodologi yang digunakan

Untuk memperoleh keterangan dan data-data yang dibutuhkan dalam penyusunan tugas akhir ini, maka digunakanlah metode dari proses penelitian sehingga memperoleh hasil seperti yang direncanakan. Penelitian terhadap analisa


(11)

serta pembuatan perangkat lunak dilakukan melalui studi pustaka dari berbagai macam literatur yang didapat dari berbagai macam sumber pustaka, serta menggunakan metode-metode sebagai berikut :

1. Studi Literatur.

Studi kepustakaan dari berbagai macam buku literatur maupun referensi yang didapat dari perpustakaan, internet, maupun dari sumber-sumber pustaka lainnya akan didapatkan konsep-konsep yang bersifat teoritis, data, ataupun informasi, yang sangat bermanfaat sehingga dapat mendukung penelitian yang dilakukan, maka akan didapatkan hasil yang sesuai dengan yang diharapkan 2. Perencanaan dan pembuatan sistem

Dalam perencanaan pembuatan sistem perangkat lunak ini dimulai dari proses penelitian sebelum penulisan program dilakukan sehingga memperoleh hasil seperti yang direncanakan dan penelitian terhadap kelayakan perancangan dan pembuatan perangkat lunak ini dilakukan melalui studi pustaka dari berbagai macam literatur. Dan dipertimbangkan pula compabilitas dengan berbagai macam distribusi sistem operasi unix/linux yang banyak beredar di pasaran.

3. Pengujian sistem

Setelah semua sistem selesai dibuat maka akan dilakukan proses pengujian. Seluruh program yang telah selesai dibuat akan dicoba untuk dijalankan pada sebuah sistem operasi yang telah ditentukan, dalam hal ini adalah salah satu distribusi dari sistem operasi unix/linux dan pada perangkat keras yang berupa IBM PC Compatible. Dari pengujian sistem ini diharapkan akan didapat hasil yang sesuai dengan yang diharapkan.


(12)

4. Dokumentasi.

Dokumentasi dari pembuatan tugas akhir ini berupa program dari sistem aplikasi serbaguna berbentuk web untuk administrasi sistem dan jaringan pada server yang menggunakan sistem operasi unix atau linux, dan buku laporan tugas akhir. Dalam buku tugas akhir ini semua program akan disertakan dalam lampiran. Buku tugas akhir ini sendiri akan disusun dalam 5 (lima) bab, tentang rancangan dan pembuatan program aplikasi akan dijelaskan pada bab III yaitu tentang desain dan implementasi, sedangkan hasil pengujian dan pembahasan akan dijelaskan dalam bab IV dari buku tugas akhir.

5. Pengambilan kesimpulan

Dari hasil yang diperoleh selama perencanaan dan pengujian sistem secara keseluruhan, akan diambil kesimpulan.

1.6. SISTEMATIKA PEMBAHASAN

Penulisan tugas akhir ini secara sistematis diatur dan disusun dalam 5 (lima) bab. Secara ringkas uraian materi dari bab pertama hingga bab terakhir adalah sebagai berikut :

BAB I. PENDAHULUAN

Pada bab I pendahuluan ini akan dibuat sub bab antara lain sebagai berikut : 1.1 Latar belakang masalah

1.2 Tujuan

1.3 Perumusan masalah 1.4 Pembatasan masalah 1.5 Metodologi


(13)

BAB II. LANDASAN TEORI

Menguraikan landasan teori tentang hal-hal yang mendasar yang berkaitan dengan pembangunan perangkat lunak yang akan digunakan untuk tugas akhir ini. BAB III. ANALISA DAN DESAIN SISTEM

Menjelaskan dan menguraikan desain dari perangkat lunak yang dibuat dan menganalisa terhadap masalah yang mungkin timbul ketika dilakukan implementasi dari sistem aplikasi yang dibuat berikut pemecahan masalahnya dalam pembuatan perangkat lunak secara keseluruhan. Dalam bab III ini terdapat sub bab sebagai berikut :

3.1. Perancangan Data 3.2. Perancangan Proses 3.2.1. Structurre Chart 3.2.2. Diagram Alir BAB IV. PENGUJIAN SISTEM

Berisi tentang pengujian dan pembahasan perangkat lunak yang telah dibuat. BAB V. PENUTUP

Merupakan kesimpulan dari penulisan tugas akhir dan saran-saran yang diharapkan terhadap pengembangan tugas akhir ini.


(14)

8 BAB II

LANDASAN TEORI 2.1 Perl

PERL (Practical Extraction and Report Language). Perl dibuat pada tahun 1986 oleh Larry Wall. Pada saat ini perl adalah salah satu sripting language yang sangat populer yang banyak digunakan pada system operasi linux/unix platform. Pada tugas akhir kali ini digunakan perl versi 5.004_04. Perl memiliki syntax yang mirip dengan bahasa C, selain itu perl juga banyak mengandung model-model command dari unix/linux shell script. Perl juga memiliki elemen-elemen yang sama dengan HTML. Pembentukan sebuah halaman web berikut fungsinya dapat dideklarasikan dalam sebuah program yang ditulis dengan bahasa perl ini.

2.1.1. Memulai Perl

Perl biasanya sudah terdapat pada sistem operasi linux ketika mulai melakukan proses instalasi pada komputer. Untuk memastikannya cukup mengetikan perintah tertentu pada command prompt.

$ perl –v [enter]

Sedangkan untuk mengetahui pada directory manakah program perl tersimpan, cukup dengan memberikan perintah sebagai berikut :

$ which perl [enter]

Secara umum perl akan terdapat pada directory /usr/bin/perl. Lokasi directory ini sangat penting artinya untuk setiap program yang dibuat, tanpa pemberian tanda lokasi yang benar sistem operasi akan kesulitan untuk menentukan dimanakah


(15)

program perl berada. Lokasi atau directory program perl akan digunakan setiap memulai membuat program dengan perl.

Berikut adalah program perl sederhana yang akan menampilkan sebuah kalimat. #! /usr/bin/perl

print “Red Hat Linux Unleashed, 3rd edition\n”;

program di atas akan menampilkan kalimat yang berada diantara tanda kutip yaitu Red Hat Linux Unleashed, 3rd edition. Tanda \n digunakan untuk pindah baris.

2.1.2. Menjalankan Perl.

Sebelum menjalankan program, simpan terlebih dahulu program tesebut. Nama program tersebut, misal trivial.pl, selanjutnya rubah file permission dari file trivial.pl dengan perintah chmod +X untuk merubah file trivial.pl menjadi executable file.

2.1.3. Struktur Data dan Variabel Perl.

Perl tidak memiliki konsep data type seperti integer, string, char dan sebagainya. Perl memiliki beberapa macam variabel sebagai berikut :

a. Scalar Variables, ditunjukkan dengan karakter dollar ($) sebelum nilai variabel [$variables], yang dapat diisi dengan angka atau huruf. Dapat pula menggunakan variabel yang sama baik untuk text/data string maupun data numeric. Syntax dari scalar: $scalar = “expression”;

Berikut adalah contoh penggunaan variabel scalar : #Configuration parameters

# this program’s name $programe = “mailform”


(16)

b. List, list merupakan deretan dari sejumlah nilai dari variabel sacalar, huruf, angka, atau kombinasi dari keduanya.

c. Arrays, disimbolkan dengan @arrays, berisi satu atau lebih elemen yang dapat diurut dengan menggunakan index. Sebagai contoh $names[12] akan memberikan sejumlah 13 elemen di dalam array @names. Perlu diingat bahwa penomoran dimulai dari 0.

d. Assosiative arrays, diindikasikan dengan %assoc_array, menyimpan nilai-nilai yang dapat dijadikan acuan dengan kata kunci. Sebagai contoh $days{Feb} akan

memberikan element dalam assosiative arrays %days yang dapat

berkorespondensi langsung dengan kata “Feb” sebagai kata kunci. 2.1.4. Statement Kondisi.

Struktur IF/ELSE sangat bermanfaat dalam pemrograman untuk mengambil keputusan terhadap kemungkinan adanya lebih dari satu alternatif. Apabila kondisi bernilai benar, maka perintah-perintah yang berada dalam kelompok statement akan dieksekusi namu apabila kondisi bernilai salah maka perintah-perintah yang pada kelompok statement ke dua yang akan dieksekusi. Dalam perl struktur if/else memiliki syntax :

If (expression) { Statements; }

if (expression) {

# executed if true statements; } ELSE {

# executed if false statements; }


(17)

Pada perl syntax dari kondisi IF/ELSE dapat dipersingkat menjadi ELSIF adalah sebagai berikut :

If (Condition/Expression) { Statement(s) ;

}

elsif (Condition/expression) { statement(s)

} else {

statement(s) }

Tanda { } (braces) yang digunakan pada pernyataan di atas digunakan untuk menandai kelompok-kelompok expression, dan digunakan juga untuk mengakhiri statement yang ada. Condition dapat saja berupa pernyataan (statement) atau perbandingan (Comparison). Apabila sebuah statement bernilai “benar”, maka statement tersebut akan dieksekusi. Nilai benar yang dimaksudkan disini adalah : 1. angka bukan 0 (nol)

2. string yang tidak bernilai 0 (nol) atau kosong .

3. kondisi-kondisi lainnya yang membuat bernilai benar. Contoh penggunaan kondisi if/else :

If ($favorite eq “Chocolate”) { Print “ I like chocolate too.\n”; }

elsif ($favorite eq “spinach”) {

print “Oh, I don’t like spinach.\n”; }

else }

print “Your favorite food is $favorite. \n” }


(18)

Perl memiliki empat tipe looping : a. for.

For menampilkan sebuah statement (pernyataan) atau sekelompok statement pada sebuah kelompok kondisi, yang didefinisikan sebagai berikut :

For (start condition; end condition; increment function) { Statement(s)

}

Start condition merupakan initial expression, dimana perintah-perintah yang ada dalam kelompok atau blok statement akan dieksekusi, end condition merupakan terminated condition expression dimana merupakan kondisi perulangan (loop) akan berakhir, sedangkan increment function merupakan loop expression. Pada awal proses loop, kondisi awal harus sudah dideklarasikan terlebih dahulu. Setiap kali loop di jalankan atau dieksekusi fungsi increment akan berubah secara berurutan sampai kondisi nilai akhir tercapai. Dibawah adalah contoh dari loop dengan menggunakan for.

For ($i=1; $i<=10; $i++) { Print “$i\n”

}

b. Foreach.

Foreach menampilkan sebuah statement atau sekelompok staement dimana setiap elementnya berada dalam satu kelompok, seperti list atau array.


(19)

Foreach [SCALAR VARIABEL] (LIST) { STATEMENTS;

}

Setiap kali melalui loop, nilai pada variabel scalar akan dipindahkan ke elemen berikutnya dalam list, dan setelah itu statement akan dieksekusi. Berikut adalah contoh penggunaan foreach.

Foreach $name (@names) { Print “$name \n”

}

c. While.

While akan mengeksekusi kelompok perintah yang berada dalam blok statement secara berulang, selama kondisi tertentu bernilai benar. While akan berhenti mengeksekusi statement apabila kondid telah bernilai salah. While (expression) {

Statements; Statements; }

contoh dari loop while adalah sebagai berikut : While ($x<10) {

Print “$x \n”; $x++;

}

d. Until.

Until adalah kebalikan dari statement while. Selama kondisi tertentu bernilai salah, akan terus menjalankan statement sampai kondisi berubah menjadi benar, until akan berada dalam kondisi terminated (berhenti).


(20)

Until ($x>10) { Print “$x \n”; $x++;

}

2.1.6. Conditional.

Conditional berfungsi untuk membandingkan nilai-nilai yang berbeda. Perl menyediakan dua paket conditional, satu untuk tipe data numeric, dan yang lainnya untuk data strings.

Perl Usage

Eq Equal

Ge Greater than or equal to

Gt Greater than

Le Less than or equal to

Lt Less than

Ne Not equal

Cmp Returns

Tabel 2.1. String comparisson

Perl Usage

= = Equal

!= Not Equal

< Less than

<= Less than or equal to

> Greater than

>= Greater than wqual to

<=> Return

Tabel 2.2. Numeric comparisson 2.1.7. Subrutin

Subrutin adalah bagian dari perl, yang dapat digunakan untuk mengeksekusi perintah-perintah khusus.


(21)

Pernyataan sub didefinisikan dalam sebuah blok dimulai dari tanda ‘{‘ sampai ‘}’. Syntax dari subrutin adalah sebagai berikut :

Sub NAME {

Subroutines STATEMENTS; }

Berikut adalah contoh subrutin yang akan mengeksekusi perintah pendefinisian masalah.

# define an error routine: sub error {

($message) = @_;

print (“<b>ERROR:<b>”, $message,

“<p>Contact the author of the previous page for assistance\n”); exit(0);

}

2.2. CGI (COMMON GATEWAY INTERFACE)

CGI (Common Gateway Interface) adalah sebuah spesifikasi standar yang dikeluarkan oleh National Center for Supercomputing Aplications (NCSA) yang digunakan sebagai media antara sebuah client dengan sebuah server pada suatu jaringan internet yang menjalankan aplikasi WWW. Seperti halnya aplikasi yang berjalan pada sebuah PC, pada web server juga dimungkinkan untuk menulis sebuah aplikasi yang dapat dijalankan pada client dan hasilnya ditampilkan pada sebuah browser. Secara umum dapat dijelaskan bahwa prinsip kerja dari CGI adalah ketika web server menerima sebuah permintaan dari client, CGI akan mencari semua nilai dari variabel yang disertakan pada dokumen HTML dan diarahkan pada standar input <STDIN> untuk proses penerimaan data. Kemudian webserver menjalankan aplikasi


(22)

yang sesuai dengan permintaan client, setelah semua proses yang diminta selesai dijalankan, maka hasil keluaran dari proses tersebut akan diarahkan pada standar output <STDOUT> untuk proses menghasilkan keluaran. Keluaran yang dihasilkan dari proses yang menggunakan antar-muka CGI adalah berbentuk dokumen HTML

Pemrograman CGI atau yang lebih dikenal dengan CGI script adalah tehnik pemrograman yang sama dilakukan pada saat menulis sebuah aplikasi pada umumnya. Hanya saja yang membedakan terletak pada proses masukan dan keluaran. CGI script menerima sebuah masukan setelah browser mengirimkan permintaan sebuah proses dimana variabel atau data yang dikirimkan disertakan dalam bentuk dokumen HTML. Begitu juga dengan proses keluaran, CGI script memberikan hasil keluaran juga dalam bentuk dokumen HTML.

Untuk Menulis sebuah CGI script hampir semua jenis bahasa pemrograman dapat digunakan. Juga tidak tertutup kemungkinanuntuk menulis CGI script dalam platform atau sistem operasi tertentu. Dengan kata lain pemilihan bahasa pemrograman hendaknya disesuaikan dengan sistem operasi dimana sebuah web server dijalankan.

Program CGI mempunyai gerbang dengan dua jalur, dimana data dapat disampaikan pada program CGI dan sebaliknya program CGI dapat menyampaikan data kembali kepada browser. Proses yang dilakukan oleh program CGI dari web browser cukup sederhana, sama seperti akses dokumen HTML biasa. Berikut urutan terjadinya suatu hubungan antara browser dan web server.

1. Program CGI dipanggil dengan melakukan suatu query atau menjalankan form. Ketika user menekan tombol submit, browser mengirimkan data yang dimasukkan


(23)

oleh pemakai ke server.

2. Web browser bernegosiasi dengan web server untuk menentukan hak akses dari pemakai.

3. Web server memeriksa konfigurasi akses file yang telah ditentukan oleh administration server untuk memastikan apakah permintaan pemakai bisa dipenuhi.

4. Web server memeriksa apakah program CGI tersebut ada. Jika ada, maka program tersebut dijalankan.

5. Output yang dihasilkan oleh server diterima oleh browser. Syarat utama dari lancarnya proses input/output dari sistem CGI adalah program CGI harus menghasilkan sebuah dokumen dengan header HTML.

6. Web browser menampilkan output CGI pada layar.

Gambar 2.1. Proses hubungan client dan server dalam CGI

Jika tidak ada data yang dikirim kembali ke client, program CGI harus memberi tanda bahwa tidak ada data yang disampaikan. Dalam hal ini hubungan


(24)

melalui protocol TCP/IP tetap jalan. Oleh karena itu, program yang dijalankan oleh web server harus selalu memberikan output berupa header dan isinya dengan mengikuti standar MIME. Bila sub proses ini tidak dijalankan maka komputer tempat menjalankan program browser akan mengalami gangguan. Hal ini disebabkan karena hubungan antara client dengan server tetap berlangsung ketika dokumen HTML hasil dari program CGI telah dibuat, seketika itu juga hubungan terputus.

Client dapat mengirimkan data atau arguments ke arah gateway melalui HTTP server . Program gateway yang sebelumnya merupakan suatu program static yang memiliki keluaran yang sama setiap kali berjalan, akan berubah menjadi sebuah dynamic entity yang akan merespon setiap kebutuhan user. Ada dua cara dimana client dapat mengirimkan data kepada program gateway, yaitu melalui :

1. Dengan menggunakan Environment variables (ISINDEX).

2. Sebagai standar input <STDIN> dimana data akan dikirim melalui forms kepada program.

Gambar 2.2 CGI Processing.

Environtment variabel merupakan fasilitas yang selalu disertakan pada hampir semua sistem operasi, tidak terkecuali pada sebuah web server. Dengan environtment variabel sebuah web server dapat mengetahui status dari sebuah permintaan yang


(25)

dikirim oleh browser yang dijalankan pada client. CGI mempunyai beberapa environtment variabel standar yang terdapat pada semua web server untuk semua sistem operasi yang berbeda. Environtment variabel tersebut adalah :

a. SERVER_SOFTWARE.

Menunjukkan nama dan versi dari software yang membuat CGI. Contoh : SERVER_SOFTWARE=NCSA/1.3

b. SERVER_NAME.

Nama dari host, DNS, Alias, atau IP Address. Contoh : SERVER_NAME = que.mcp.com c. GATEWAY_INTERFACE.

Nama dan versi dari protocol CGI yang digunakan Contoh : GATEWAY_INTERFACE = CGI/1.1

Variabel-variabel diatas adalah variabel yang mengandung informasi HTTP tentang server dan tidak bergantung pada client request.

d. SERVER_PROTOCOL.

Nama dan versi dari protocol yang digunakan dimana CGI sedang dijalankan. Contoh : SERVER_PROTOCOL = HTTP/1.0

e. SERVER_PORT.

Port yang digunakan untuk melayani permintaan dari CGI. Contoh : SERVER_PORT = 80

f. REQUEST_METHOD.

Metode yang digunakan oleh HTTP untuk menerima permintaan proses dari CGI. Contoh : REQUEST_METHOD = POST


(26)

g. PATH_INFO.

Path tambahan yang digunakan pada saat memanggil sebuah URL. Contoh : http://www.innergy.com/cgi-bin/foo/whitepaper/may15

PATH_INFO = /whitepaper/may15 h. PATH_TRANSLATED.

Alias yang digunakan oleh sebuah server untuk sebuah URL.

Contoh : http://www.innergy.com/cgi-bin/foo/whitepaper/may15, dan web server meletakkan semua dokumennya pada path /bin/httdocs/docs.

PATH_TRANSLATED = /bin/httdocs/docs/whitepaper/may15 i. SCRIPT_NAME.

Path dari sebuah script yang sedang dieksekusi. Contoh : /cgi-bin/foobar

j. QUERY_STRING.

Semua karakter yang terletak debelakang tanda tanya pada sebuah URL. Contoh : http://www.innergy.com/cgi-bin/foo?gordon+susan

QUERY_STRING=Gordon+Susan

k. REMOTE_HOST.

Host atau client yang meminta request pada web server. Contoh : REMOTE_HOST=slip-08.shore.net

l. REMOTE_ADDR.

IP Address dari client yang meminta request pada web server. Contoh : REMOTE_ADDR=192.233.85.130


(27)

Metode yang dibuat untuk menentukan wewenang dari seorang pemakai. Contoh : AUTH_TYPE=Perl.

n. REMOTE_USER.

Nama dari client yang meminta request pada web server. Contoh : REMOTE_USER=aeinstein

o. CONTENT_TYPE.

Tipe dari Multipart Internet Mail Extensions (MIME) yang dikirimkan oleh web server.

Contoh : text/html. p. HTTP_ACCEPT.

MIME yang dapat dikenali oleh web server.

Contoh : HTTP_ACCEPT=image/gif, image/x-bitmap, image/jpeg q. HTTP_USER_AGENT.

Berisikan nama dari browser yang digunakan pada client. Contoh : HTTP_USER_AGENT=Mozilla/20 (Win 16).

Variabel –variabel di atas bergantung pada kedatangan permintaan dari client. 2.2.1. Mengirim Data.

Mengirim data melalui environment variables (METHOD=GET) sangatlah baik namun memiliki banyak keterbatasan dan sebenarnya dapat menimbulkan kerusakan pada sistem. Sebuah program gateway memiliki string yang sangat panjang, yang terdiri dari URL ditambah dengan query string yang akan digunakan bersamaan dengan shell script. Hal ini akan menyebabkan crash karena shell script memiliki keterbatasan dalam panjang command line yang dimilikinya.


(28)

Untuk menghindari bahaya penggunaan tehnik METHOD=GET data akan dikirim dengan menggunakan standard input ke program external. Sebuah form dengan METHOD=POST dapat digunakan untuk mengirim data menuju stdin program gateway. Data yang dikirim akan dikodekan dan setelah melewati proses dalam gateway data akan dikembalikan seperti kondisi semula. Berikut adalah potongan perl script yang dapat digunakan untuk menghindari keadaan di atas tersebut.

#! /usr/local/bin/perl # name.pl

$user_input = read(STDIN, $_, $ENV{CONTENT_LENGTH}); print “Content – type : text/html\n\n”;

print “You input \”$user_input\ “ in the input boxes\n\n”; exit;

Program di atas akan menghasilkan screen output seperti biasanya kecuali pada hasil URL dimana tidak akan dicantumkan kode QUERY_STRING setelah nama program. Sebuah form yang menggunakan METHOD=POST akan membuat environment variabel sebaik stdin, dengan merubah tag form html dengan :<FORM METHOD=POST ACTION=http://www.some.box/name.pl/screen=subscribe> dan data akan dikirim pada stdin dan PATH_INFO variabel.

2.2.2. MIME pada CGI Environment

Ketika sebuah client melakukan proses request dan program cgi dieksekusi untuk memenuhi kebutuhan client, data dari sebuah form atau lebih akan ditulis pada standard output (stdout) dan akan dikirim oleh server kepada client.

Hal penting yang harus dimengerti pada komunikasi client-server-gateway. Adalah pengiriman data. Client dapat mengirim cara dengan dua cara, lewat url dan atau lewat message body (dalam form method=post).


(29)

Ada dua arti dasar dari client untuk mengirim data melalui server ke gateway program melalui URL (ISINDEX) atau melalui message body (melalui METHOD=POST form). Cara ini akan mengirimkan data ke gateway program melalui stdin program. Kemudian environment variabel CONTENT_LEGTH akan disiapkan sejumlah karakter yang akan dikirim.

Bagaimana server mengirim data ke gateway program. Pada saat ini server telah menerima data dari client. Ada dua cara untuk mengirim data ke gateway program.

a. melalui stdin gateway program. Jika request_method dikirim, pertama kali server akan mengkodekan data, kemudian baru dikirim ke gateway program sebagai stdin.

b. Melalui environment variabel server.

Gateway output. Sebuah program gateway harus memulai keluarannya dengan proper header yang dapat dimengerti oleh server. Ada tiga header yang dapat dikenali server.

a. Content –type. b. Location : [URL]

c. Status: [message strings]

2.3. Hyper Text Markup Language

HTML (Hyper Text Markup Language) adalah sebuah format dokumen yang hampir sama dengan dokumen teks, dimana struktur dokumen HTML mempunyai elemen-elemen seperti heads, paragraph, dan list. Format dokumen dalam bentuk HTML ini mampu untuk langsung ditampilkan dalam sebuah browser, yang


(30)

selanjutnya akan dapat dipakai sebagai sebuah lembar halaman dalam sebuah web. Dokumen dengan format HTML adalah dokumen teks standar yang mempunyai beberapa tanda khusus di dalamnya. Tanda-tanda khusus yang dimaksud disebut TAG. Sebuah tag adalah gabungan dari beberapa karakter atau string yang diapit dengan tanda lebih kecil dan tanda lebih besar. Tag memberikan status dari sebuah teks dan bagaimana harus menampilkannya di dalam browser.

Terdapat tiga aturan yang perlu diperhatikan pada saat menulis sebuah dokumen HTML.

a. Spasi kosong diabaikan di dalam dokumen HTML.

Spasi kosong seperti tanda “ “, tanda tabulasi dan baris baru tidak dianggap sebagai suatu perintah pada saat dokumen HTML dibaca. Sehingga penempatan sebuah baris baru dengan melakukan penekanan tombol enter tidak akan memberikan hasil apa-apa. Hal ini berarti jika ingin menambahkan sebuah baris baru dapat menggunakan sebuah tag<BR>

b. Tag tidak membedakan antara penulisan huruf besar dengan huruf kecil.

Tag <Pre> dengan tag <PRE> adalah sama. Para penulis dokumen HTML biasanya menggunakan susunan huruf sama besar untuk menuliskan sebuah tag. Penggunaan penulisan dengan menggunakan susunan haruf besar dilakukan hanya untuk mempermudah dalam membedakan antara tag dengan teks atau dokumen. c. Hampir semua tag mempunyai pasangan.

Sebuah tag biasanya mempunyai tag pembuka dan tag penutup. Sebuah tag penutup ditandai dengan tanda garis miring di depan tag tersebut. Sebuah contoh, tag <HTML> akan diakhiri dengan tag </HTML>.


(31)

Seperti halnya dokumen lainnya, dokumen HTML juga mempunyai struktur yang membedakan antara header dengan data pada dokumen tersebut. Struktur dari dokumen HTML adalah :

a. Deklarasi.

Pada bagian deklarasi selalu diawali dengan tag <HTML> pada awal dokumen dan ditutp dengan tag </HTML> di akhir dokumen. Bagian deklarasi bertujuan untuk memberitahu awal dan akhir dari dokumen HTML.

b. Header.

Bagian header di dalamnya terdapat beberapa tag yang disertakan pada bagian ini. Seperti <TITLE> dan tag <BASE>. Pada dasarnya bagian header bertujuan untuk memberikan penjelasan mengenai status, judul dan asal dari dokumen HTML. c. Body.

Bagian body atau bagian utama dari dokumen HTML di awali dengan tag <BODY> dan diakhiri dengan tag </BODY>. Bagian body berisikan tentang informasi yang akan disampaikan kepada para pemakai fasilitas internet dan beberapa subrutin yang bertujuan memperindah tampilan yang dihasilkan.

Versi yang terbaru dari dokumen HTML mempunyai banyak tag yang memungkinkan sebuah dokumen HTML untuk diakses oleh beberapa browser untuk jenis sistem operasi yang berbeda. Berikut ini adalah beberapa tag dan penjelasannya yang sering digunakan dalam menulis dokumen HTML.

a. TITLE.

Berfungsi untuk memberikan penjelasan singkat berupa judul dari dokumen HTML.


(32)

b. BASE.

Berfungsi untuk mendefinisikan asal dari dokumen HTML yang berupa Uniform Resource Location (URL).

c. HEAD.

Berfungsi untuk memisahkan antara bagian header dari dokumen dengan bagian body pada dokumen HTML.

d. H1,H2,H3,H4,H5.

Huruf H merupakan kependekan dari Heading. Tampilan yang dihasilkan jika menggunakan tag <H> berupa judul dengan ukuran huruf yang besar.

e. HTML

Untuk memberikan keterangan status kepada browser bagian yang bukan HTML dan bagian yang merupakan dokumen HTML.

f. PRE.

Digunakan untuk memberitahu pada browser bahwa teks yang akan ditampilkan sudah diformat atau disusun sesuai dengan bentuk aslinya.

g. I.

Merupakan kependekan dari Italic. Huruf yang dihasilkan akan ditulis dengan cetak miring.

h. B.

Merupakan kependekan dari Bold atau cetak tebal. Penggunaannya hampir sama dengan tag <B>.

i. DL.


(33)

didefinisikan. j. DT.

Digunakan untuk mendefinisikan teks yang sudah terdapat pada deklarasi tag <DL>

k. UL.

Menandakan awal dari sebuah list atau daftar item. Penggunaan tag <UL> harus diikuti dengan penggunaan tag <LI>.

l. LI.

Digunakan setelah tag <UL>, tag <LI> berfungsi untuk mendefinisikan item dari sebuah list.

m. HR.

Merupakan kependekan dari Horizontal Rule yang berfungsi untuk menggambar sebuah garis mendatar.

n. BR.

Berfungsi untuk menyisipkan sebuah garis baru. o. P.

Menandakan awal dari sebuah paragraf pada dokumen HTML. p. IMG.

Digunakan untuk menyisipkan sebuah citra atau grafik yang ditampilkan dalam bentuk sebuah baris dokumen.

q. HREF.

Merupakan kependekan dari Hypertext Reference. Tag HREF digunakan untuk menghubungkan sebuah dokumen HTML dengan dokumen html yang lain.


(34)

r. ISINDEX.

Dapat digunakan untuk mengirimkan informasi dalam bentuk sebuah script, sering digunakan untuk proses pencarian.

Contoh penggunaan tag HTML : <HTML>

<HEAD>

<TITLE>PAGENAME</TITLE> </HEAD>

<BODY BGCOLOR=”#00FFFF”> <H1>HEADER1<H1>

text or grahphic content<P>

<A HREF=”page.html”><IMGSRC=”photo.jpeg”></A> <A HREF=”page.html”><IMGSRC=”photo.jpeg”></A><BR> </BODY>

<HR>

<ADDRESS> YOURNAME<BR> YOURPHONE<BR> Fax : YOURFAX<BR> YOURADDRESS<BR>

<A HREF=”mailto:YOURMAIL”>YOURMAIL</A><BR> <A HREF=”index.html”>Home Page</A><BR>

(C) 1999 YOURNAME </ADDRESS>

</HTML>


(35)

Semakin bertambahnya orang menggunakan dokumen HTML untuk berbagai keperluan menjadikan HTML sebagai salah satu kebutuhan utama dalam menampilkan informasi. Untuk itu diperlukan beberapa fasilitas tambahan yang dapat menangani beberapa tugas yang tidak terdapat pada HTML versi sebelumnya. Pada HTML 3.2 terdapat beberapa fasilitas baru yang menghasilkan tampilan informasi yang lebih menarik. Fasilitas-fasilitas yang baru tersebut adalah sebagai berikut : a. Tabel.

Tabel digunakan untuk menampilkan informasi yang hasilnya disajikan dalam susunan baris dan kolom. Tag-tag yang digunakan dalam membuat tabel adalah sebagai berikut:

a.1. TABLE.

Untuk menandakan awal dari sebuah tabel. Atribut-atribut yang digunakan pada tag <TABLE> adalh sebagai berikut :

a.1.1. HEIGHT.

Nilai yang diberikan dapat berupa angka atau prosentase. Atribut HEIGHT berfungsi untuk mengatur tinggi dari sebuah tabel.

a.1.2. WIDTH .

Seperti attribut HEIGHT, atribut WIDTH dapat mempunyai nilai berupa prosentase atau jumlah pixel.

a.1.3. BORDER

Menentukan lebar tepi batas dari sebuah tabel. a.2. TR


(36)

a.3. TH.

Tag <TH> digunakan untuk memberikan judul atau keterangan pada sebuah tabel. Judul tabel dapat diletakkan pada setiap baris. Atribut-atribut yang dapat mempengaruhi tampilan yang dihasilkan adalah sebagai berikut :

a.3.1. COLSPAN.

Berfungsi menggabungkan beberapa kolom untuk ditampilkan dalam satu kolom.

a.3.2. ROWSPAN.

Berfungsi menggabungkan beberapa baris untuk ditampilkan dalam satu baris.

a.4. TD

Memberikan data untuk setiap sel pada sebuah tabel. Attribut-Attribut yang dapat digunakan adalah sebagai berikut :

a.4.1. ALIGN

Atribut ALIGN digunakan untuk menampilkan data atau teks rata kanan, rata kiri atau rata tengah secara mendatar.

a.4.2. VALIGN

Atribut VALIGN hampir sama dengan atribut ALIGN, perbedaannya attribut menampilkan teks rata pada sumbu tegak.

Setelah mengetahui beberapa tag dan atribut yang dapat digunakan untuk membuat sebuah tabel, di bawah ini akan diberikan contoh dan tampilan penggunaan sebuah tabel dalam dokumen HTML.

<HTML> <HEAD>


(37)

<TITLE>Example of table feature</TITLE> </HEAD>

<BODY>

<TABLE BORDER=3> <TR>

<TH COLSPAN=3> Time for a Nearest Neighbour Search </TH><P>

<TR><TH>Machine</TH><TH>32768 Nodes</TH><TH>65536 Nodes</TH><P> <TR><TD>MM32K</TD><TD>2.2 msec</TD><TD>3.1 msec<BR></TH></TR> <TR><TD>i486</TD><TD>350 msec</TD><TD>700 msec<BR></TH></TR> <TR><TD>MIPS</TD><TD>970 msec</TD><TD>1800 msec<BR></TH></TR> <TR><TD>Alpha</TD><TD>81 msec</TD><TD>177 msec<BR></TH></TR> <TR><TD>Sparc</TD><TD>410 msec</TD><TD>820 msec<BR></TH></TR> </TABLE>

</BODY> </HTML>

Gambar 2.4. Tampilan contoh penggunaan tabel pada dokumen HTML b. FRAME.

Fsilitas frame pertama kali diperkenalkan oleh browser yang yang diproduksi oleh Netscape. Dengan Frame ini sebuah dokumen dapat ditampilkan menjadi beberapa bagian di dalam satu layar. Susunan dan tag yang digunakan untuk membuat frame adalah sebagai berikut :

b.1.FRAMESET.

Mendeklarasikan sebuah group frame baru. Frame dapat disajikan dalam beberapa kolom dalam satu layar atau beberapa baris dalam satu layar. Untuk


(38)

mendefinisikan sebuah frame dapat digunakan dengan membagi layar dalam bentuk prosentase atau jumlah pixel.

b.2.FRAME SRC.

Dokumen yang akan ditampilkan pada salah satu bagian sebuah frame. Format dari dokumen yang akan ditampilkan adalah dalam bentuk dokumen HTML.

b.3.NOFRAME.

Tag <NOFRAME> digunakan untuk menampilkan informasi pada browser yang tidak mendukung fasilitas frame.

Di bawah ini akan diberikan potongan dokumen HTML yang menggunakan fasilitas frame dan tampilan yang dihasilkan.

<html> <head>

<meta http-equiv="Content-Type"

content="text/html; charset=iso-8859-1"> <title>frame2</title>

</head>

<body bgcolor="#FFFFFF">

<p>This will Appear in Right Row</p> </body>


(39)

Gambar 2.5. Contoh penggunaan frame c. FORM.

Salah satu fasilitas yang disediakan oleh HTML 3.2 untuk dapat berinteraksi dengan sebuah host atau web server adalah fasilitas form atau yang sering disebut dengan FILL-IN-FORM. Form pada HTML menyediakan berbagai macam jenis kontrol masukan seperti teks input, radio button, check box, dan command button. Terdapat beberapa tag yang digunakan untuk membuat form pada dokumen HTML.

c.1. FORM.

Tag <FORM> menentukan awal dan akhir dari sebuah form pada dokumen HTML. Atribut yang disertakan pada tag <FORM> adalah sebagai berikut : c.1.1. ACTION.

Menentukan sebuah URL yang dijadikan sebagai rujukan jika sebuah form akan dikirimkan. Atribut ACTION harus disertakan pada setiap form dalam dokumen HTML.

c.2.2. METHOD.

Protocol HTTP menyediakan beberapa metode yang dapat digunakan untuk meminta sebuah proses mengambil data pada web server. Metode-metode yang disediakan adalah GET, PUT, POST dan HEAD.

c.2. INPUT.

Menyisipkan sebuah variabel yang akan diproses bersamaan pada saat sebuah form dikirimkan pada web server. Tag <INPUT> mempunyai nama


(40)

dan atribut. Penggunaan atribut yang berbeda akan memberikan bentuk masukan yang berbeda juga. Jenis kontrol masukan yang disediakan oleh tag <INPUT> adalah sebagai berikut :

c.2.1. CHECKBOX.

Checkbox adalah jenis kontrol masukan yang memungkinkan untuk memberikan nilai lebih dari satu pada suatu variabel.

c.2.2. RADIO.

Seperti pada checkbox , radio button merupakan sebuah pilihan yang berbentuk ganda. Akan tetapi yang membedakan antara check box dengan radio button adalah jika satu pilihan sudah dipenuhi, maka pilihan yang lain tidak dapat dipilih.

c.2.3. TEXT.

Sebuah masukan yang digunakan untuk memberikan nilai pada sebuah variabel dilakukan dengan mengetikkan karakter pada tempat yang telah disediakan.

c.2.4. HIDDEN.

Atribut HIDDEN digunakan jika suatu nilai variabel yang akan dikirimkan ke web server tidak ingin ditampilkan pada layar monitor.

c.2.5. PASSWORD.

Atribut password sama halnya dengan atribut text. Perbedaannya terletak pada tampilan yang dihasilkan. Jika attribut PASSWORD disertakan pada tag <INPUT> maka karakter yang ditampilkan


(41)

berupa tanda bintang. c.2.6. RESET.

Digunakan untuk memberikan nilai kosong kepada semua variabel yang terdapat pada form di dalam dokumen HTML.

c.2.7. SUBMIT.

Bentuk dari attribut SUBMIT adalah sebuah tombol. Jika tombol tersebut ditekan maka sebuah form beserta dengan semua variabel yang terdapat di dalamnya akan dikirimkan ke dalam sebuah web server.

c.3. SELECT.

Bentuk masukan yang dihasilkan adalah sebuah list box. Biasanya di dalam tag <SELECT> selalu terdapat tag <OPTION> yang bertujuan untuk memberikan nilai dari item-item yang terdapat pada sebuah list box. Attribut yang digunakan untuk membuat sebuah list box adalah sebagai berikut :

c.3.1. MULTIPLE.

Menentukan banyaknya item yang akan ditampilkan dalam sebuah list box .

c.3.2. NAME.

Nama variabel dari list box. Atribut NAME harus dicantumkan. c.3.3. SIZE.

Menentukan ukuran dari list box. c.4. TEXTAREA.


(42)

berupa text yang lebih dari satu baris. Untuk mendeklarasikan sebuah text area diperlukan tiga buah atribut yang harus selalu ada. Attribut-attribut yang digunakan adalah sebagai berikut :

c.4.1. COLS.

Menentukan besar kolom dari sebuah text area.

c.4.2. ROWS.

Menentukan lebar baris dari sebuah taext area.

c.4.3. NAME.

Memberikan nama dari sebuah tag <INPUT>.

Setelah mengetahui beberapa bentuk masukan dan atribut yang digunakan untuk membuat sebuah kontrol masukan, di bawah ini akan diberikan potongan program dan tampilan yang dihasilkan dari penggunaan sebuah form.

<HEAD> <HTML>

<TITLE>Example of form</TITLE> </HEAD>

<body>

<form action=”/cgi-bin/sample” method=”post”> <center>

<table width=7,5% cellpadding=8 border=2> <tr><td align=”center” colspan=5>

<font size+1>t</font>ravel planning service</td></tr> <td align=”left” colspan=2>

What brochure would you like? <br> (check all that apply)

<blockquote>

<input name”vacloc” type=”checkbox” value=”bahamas”>Bahamas<br> <input name”vacloc” type=”checkbox” value=”honolulu”>Honolulu<br> <input name”vacloc” type=”checkbox” value=”las vegas”>Las Vegas<br> <input name”vacloc” type=”checkbox” value=”hoboken”>Hoboken<br> <blockquote></td>

<td valign=”top” align=”right” colspan=3> <pre>


(43)

Password : <input name=”password” type=”password” rows=1 maxlegth=10 size”10”>

</pre></td> </tr>

<tr align=”center”><!- -Bottom line - -> <td width=28%>Weeks of vacation :</td>

<td width=18%><input name=”vacwks” type=”radio” value=”1”>1</td> <td width=18%><input name=”vacwks” type=”radio” value=”2”>2</td> <td width=18%><input name=”vacwks” type=”radio” value=”3”>3</td> <td width=18%><input name=”vacwks” type=”radio” value=”4”>4</td> </tr>

</table>

<input type=”submit” value=”send this request”> <input type=”reset” value=”Clear form”>

</center> </form> </body> </html>


(44)

BAB III

PERANCANGAN DAN PEMBUATAN SISTEM

3.1. Gambaran umum sistem.

Program aplikasi serbaguna berbentuk web untuk administrasi server dan jaringan yang menggunakan sistem operasi unix/linux adalah sebuah program aplikasi yang berfungsi untuk membantu para sistem administrator sistem dan jaringan dalam melaksanakan tugas mereka melakukan proses administrasi sistem dan jaringan. Program ini dapat dijalankan dengan menggunakan sebuah browser. Client dan server berkomunikasi dengan menggunakan sebuah ‘bahasa’ (protocol) yang disebut HTTP.

Web browser adalah contoh dari sebuah web client, sedangkan sebuah remote machine yang di dalamnya berisi dokumen yang akan diminta dinamakan

web server.

Server bukan sebuah hardware melainkan sebuah program yang berjalan dalam sebuah komputer, web server mendengarkan (listen) pada sebuah port dalam suatu jaringan (network), dan menunggu sampai clients meminta melalukan transaksi melalui HTTP protocol. Setelah merespons request dari client, browser akan menampilkan data-data yang relevan yang telah dikirim oleh server.

Pada saat server melalukan proses Initialisasi setiap kali server melakukan proses booting program aplikasi akan langsung dijalankan.


(45)

initsupp=`grep "^os_support=" $wadir/init/module.info | sed -e 's/os_support=//g' | grep $os_type`

atboot=0

if [ "$initsupp" != "" ]; then

printf "Start Linux-admin at boot time (y/n): " read atbootyn

if [ "$atbootyn" = "y" -o "$atbootyn" = "Y" ]; then atboot=1

fi else

echo " Linux-admin does not support being started at boot time on your system."

fi

makeboot=$atboot

3.2. Perancangan Data.

Untuk melakukan initialisasi terhadap socket, perlu dibuat sebuah input data sebagai masukan dari user.

Data keterangan

Config_dir Untuk meletakkan configurasi directory

Perldef Memberikan keterangan tentang letak directory perl

Real_os_type Nama sistem operasi

Real_os_version Versi sistem operasi

Port Nomer port yang digunakan

Login Input data login

Passw Input data password

Host Nama host

Tabel 3.1. Tabel data Initialisasi

Untuk melakukan penyuntingan terhadap user administrator maka dibutuhkan data-data yang berisi user administrator, password dan hak akses. Data tersebut merupakan konfigurasi dari pengguna program admin yang pertama kali.

Perlu untuk dimasukkan pada saat initialisasi karena untuk menggunakan program ini paling sedikit harus ada satu user.


(46)

Data Keterangan

Mods Daftar modul/Task

Ulist Daftar user dari pwfile

PWFILE File berisi user password

Tabel 3.2. Tabel data user administrator

Pada module Schedule Cron Job dibutuhkan data-data yang akan digunakan untuk menampilkan seluruh cronjob yang terdapat dalam sistem.

Data Keterangan

TAB Daftar seluruh cron job yang dimiliki oleh user

Jlist Daftar seluruh cron job beserta user name dan perintahnya

cron_allow_file Daftar user diterima (allowed)

cron_deny_file Daftar user ditolak (denied)

Tabel 3.3. data Cron job

Modul export membutuhkan data yang berisi seluruh export file atau directory yang ada di dalam sistem untuk digunakan sebagai input untuk proses

editing export.

Data Keterangan

Exp Berisi daftar export

Tabel 3.4. data export

Pada tabel 3.5 merupakan data-data yang akan berfungsi untuk menyimpan informasi tentang protocol dan service yang terdapat di dalam sistem.

Data Keterangan

Config{service_file} Konfigurasi services dari service file

Config{Inetd_conf_file} Berisi configurasi internet service

Config{protocol_file} Berisi daftar protocols dalam sistem

SERVICES Daftar service


(47)

Tabel 3.5. Data service & protocol

Pada modul printer administration diperlukan tempat untuk menyimpan data-data yang akan digunakan untuk proses edit, delete, maupun create.

Data Keterangan

Prn Menampung nama printer

Jobs Daftar printer Jobs

CAP File princap

Plist Daftar semua printer

Tabel 3.6. Data printer

Untuk menunjukkan status file-file maupun direktori tertentu dapat menggunakan data-data seperti di bawah ini untuk menyimpan informasi dari sistem tentang status file maupun direktori yang ada dalam sistem.

Data Keterangan

MTAB Daftar mount (/etc/mtab)

FSTAB Daftar filesystem saat booting (/etc/fstab)

Tabel 3.7. Data Mount

Berikut adalah data-data yang diambil dari sistem yang akan digunakan untuk administrasi dan konfigurasi network .

Data Keterangan

HOTS Daftar hosts dan alamat

IFC Daftar Interface

RESOLV Konfigurasi dns

STATIC Konfigurasi rute statis

Tabel 3.8. Data Network

Untuk melakukan proses administrasi terhadap unix/linux user dibutuhkan informasi tentang user, group dan password. Untuk menyimpan informasi tersebut dibutuhkan data seperti daftar linux user maupun daftar group user.


(48)

Data Keterangan

Passwd Daftar linux user

Group Daftar linux group

Pam Daftar Password acak

Base uid UID untuk user

Base gid GID untuk group

Tabel 3.9. Data Linux user

3.3. Perancangan Proses.

Sebelum melakukan proses pengiriman dan penerimaan data (HTTP

Interactions), terlebih dahulu dilakukan proses membuka socket. Socket dapat

diibaratkan sebagai chanel pada sebuah radio yang mempunyai

gelombang-gelombang tertentu dalam proses pengiriman dan penerimaan data. Apabila sebuah socket dibuka dengan “gelombang” tertentu, maka hanya komputer dengan “gelombang” yang sama yang dapat menerima data yang dikirim. Setelah socket dibuka, maka dialokasikan alamat protokol lokal ke dalamnya. Alamat protokol terdiri dari kombinasi 32-bit sampai dengan 128-bit alamat internet (IP Address) ditambah dengan 16-bit nomor port pada protokol TCP dan UDP. Proses pengalokasian alamat protokol disebut proses BIND. Socket yang telah diaktifkan dan dialokasikan kemudian bersiap untuk merima data yang dikirim oleh komputer lain (listen). Pada server, proses ini digunakan untuk menunggu koneksi dari client. Setiap koneksi ditampung dalam satu antrian dan secara otomatis server akan mengatur koneksi-koneksi tersebut serta memilih koneksi mana yang benar-benar komplit dan siap untuk ditanggani (accept). Client yang sudah terkoneksi dapat melakukan proses pengiriman dan penerimaan data antar client-client yang lain.


(49)

Server akan menunggu koneksi terhadap network pada port, ketika client terhubung dengan port, server akan menerima koneksi tersebut dan kemudian akan berhubungan dengan client dengan menggunakan protocol yang mereka sepakati (tcp, http, nntp, smtp, dll).

Server akan menggunakan socket() system call untuk menciptakan socket,

dan bind() call akan menugaskan socket pada port tertentu pada host. Server

kemudian akan menggunakan rutin listen() dan accept() untuk menciptakan komunikasi pada port. Pada sisi yang lain client juga menggunakan socket() system call to create socket dan kemudian akan menggunakan connect() call untuk inisialisasi koneksi yang berasosiasi dengan socket pada remote host tertentu dan port. Server menggunakan accept() call untuk menerima koneksi yang datang dan inisialisasi komunikasi dengan client. Client dan server akan menggunakan

sysread() dan syswrite() untuk berkomunikasi pada HTTP sampai transaksi selesai.

Apabila transaksi telah selesai maka baik client maupun server akan menggunakan

close() atau shutdown() untuk mengakhiri koneksi. Proses-proses yang terjadi diatas

akan dijelaskan dalam sebagai berikut:

3.3.1. Proses transaksi http.

Sebelum memasuki proses penerimaan dan pengiriman data yang merupakan inti dari sistem aplikasi ini, diperlukan beberapa deklarasi awal yang berlaku secara global atau menyeluruh disemua proses-proses yang ada didalam sistem. Setelah itu dilakukan inisialisasi terhadap proses dan prosedur yang telah dibuat tersebut sebagai tanda dimulainya proses pengiriman dan penerimaan data.


(50)

Salah satu deklarasi yang perlu didefinisikan adalah terlebih dahulu adalah socket. Function dari pendeklarasian tersebut adalah sebagai berikut :

$perl -e 'use Socket; socket(FOO, PF_INET, SOCK_STREAM,

getprotobyname("tcp")); setsockopt(FOO, SOL_SOCKET, SO_REUSEADDR, pack("l", 1)); bind(FOO, sockaddr_in($ARGV[0], INADDR_ANY)) || exit(1); exit(0);' $port

if [ $? != "0" ]; then

echo "ERROR: TCP port $port is already in use by another program" echo ""

exit 13

Baik client dan server keduanya sama-sama menggunakan fungsi socket()

untuk menciptakan I/O buffer dalam sistem operasi. Socket() memerlukan beberapa argumen yang berupa file handle yang berasosiasi dengan socket, network protocol, dan bagaimana tipe socket, stream-oriented atau

record-oriented. Untuk transaksi HTTP, tipe socket yang digunakan adalah tipe

stream-oriented. Dalam contoh berikut di bawah ini, file handle SH berasosiasi dengan

socket yang baru diciptakan. PF_INET adalah indikasi dari internet protocol, sedangkan getprotobyname('tcp') merupakan indikasi dari Transmission Control

Protocol (TCP), sedangkan SOCK_STREAM adalah indikasi dari tipe socket

stream-oriented. Bila socket calls gagal maka program akan die() menggunakan pesan kesalahan (error message) yang terdapat dalam $!. Di bawah adalah berbagai macam variasi yang biasa digunakan untuk melalukan insialisasi socket: socket(SH, PF_INET, SOCK_STREAM, getprotobyname("tcp")) || $!;

$proto = getprotobyname('tcp');

socket(MAIN, PF_INET, SOCK_STREAM, $proto) || die "Failed to open main socket : $!";


(51)

socket($h, PF_INET, SOCK_STREAM, getprotobyname("tcp")) || &error("Failed to create socket : $!");

Kemudian socket diinisialisasi (dibuka) sesuai dengan jenis protocol yang digunakan. Berikut ini adalah inisialisasi socket dengan menggunakan protocol TCP secara lengkap.

# Open main socket {miniserv.pl} $proto = getprotobyname('tcp');

socket(MAIN, PF_INET, SOCK_STREAM, $proto) || die "Failed to open main socket : $!";

setsockopt(MAIN, SOL_SOCKET, SO_REUSEADDR, pack("l", 1)); $baddr = $config{"bind"} ? inet_aton($config{"bind"}) : INADDR_ANY; bind(MAIN, sockaddr_in($config{port}, $baddr)) ||

die "Failed to bind port $config{port} : $!"; listen(MAIN, SOMAXCONN);

# Read the HTTP request and headers ($reqline = &read_line()) =~ s/\r|\n//g;

if (!($reqline =~ /^(GET|POST)\s+(.*)\s+HTTP\/1\..$/)) { &http_error(400, "Bad Request");

}

$method = $1; $request_uri = $page = $2; %header = ();

while(1) {

($headline = &read_line()) =~ s/\r|\n//g; if ($headline eq "") { last; }

($headline =~ /^(\S+):\s+(.*)$/) || &http_error(400, "Bad Header"); $header{lc($1)} = $2;

}

if (defined($header{'host'})) {

if ($header{'host'} =~ /^([^:]+):([0-9]+)$/) { $host = $1; } else { $host = $header{'host'}; }

}

if ($page =~ /^([^\?]+)\?(.*)$/) {

# There is some query string information $page = $1;

$querystring = $2; if ($querystring !~ /=/) {

$queryargs = $querystring; $queryargs =~ s/\+/ /g;


(52)

$querystring = ""; }

}

b. Membuat koneksi network

Dengan mengunakan fungsi connect() dapat dibuat sebuah hubungan dengan server dalam sebuah network (network connections) berikut host dan port yang dikehendaki, dan menyelaraskan (associate) dengan I/O buffer yang telah diciptakan oleh socket().

$sin = sockaddr_in (80, inet_aton, (‘localhost.localdomain.com’)); connect(SH,$sin) || die $!;

Rutin sockaddr_in() menerima sebuah port number sebagai parameter pertama dan IP address sebaggai parameter kedua. Inet_aton() menerjemahkan

(translates) sebuah hostname string atau sebuah dotted decimal string menjadi

sebuah IP address 32-bit. sockaddr_in mengembalikan struktur data yang datang melalui fungsi connect(), dari sanalah connect() mampu melakukan proses koneksi pada sebuah jaringan komputer pada server dan port secara spesifik. Berikut adalah penerapan fungsi connect() pada aplikasi:

($addr = inet_aton($_[0])) ||

&error("Failed to lookup IP address for $_[0]"); connect($h, sockaddr_in($_[1], $addr)) ||

&error("Failed to connect to $_[0]:$_[1] : $!");

Apabila koneksi terhadap network tersebut sukses, maka nilai yang kembali adalah true, namun apabila gagal maka nilai false akan diberikan, untuk memberikan pesan kesalahan (error message) dapat digunakan $!. Gunakan die()


(53)

setelah connect() untuk menghentikan program dan melaporkan kesalahan. Fungsi connect() ini hanya dapat digunakan oleh client saja.

# open_socket(host, port, handle) <weblib.pl> sub open_socket

{

local($addr, $h); $h = $_[2];

socket($h, PF_INET, SOCK_STREAM, getprotobyname("tcp")) || &error("Failed to create socket : $!");

($addr = inet_aton($_[0])) ||

&error("Failed to lookup IP address for $_[0]"); connect($h, sockaddr_in($_[1], $addr)) ||

&error("Failed to connect to $_[0]:$_[1] : $!"); select($h); $| =1; select(STDOUT);

}

c. Menulis data pada koneksi network

Untuk menulis file handle (data) yang berasosiasi dengan socket (network connection), dapat digunakan rutin syswrite(). Parameter pertama merupakan file handle untuk menulis data, sedang data yang akan ditulis dijadikan parameter kedua. Sedangkan parameter ketiga adalah panjang data yang akan ditulis.

Syswrite() digunakan oleh client dan server.

$buffer = ”Linux Web Administration”; syswrite (FH, $buffer, length($buffer)); # sysprint(handle, [string]+)

sub sysprint {

local($str, $fh);

$str = join('', @_[1..$#_]); $fh = $_[0];

syswrite $fh, $str, length($str); }


(54)

Untuk membaca data dari sebuah koneksi network dapat digunakan rutin

sysread() fungsi tersebut dapat berjalan baik pada server maupun client sysread()

membaca data dari file handle yang berasosiasi dengan socket tersebut, pada parameter pertama file handle diberikan untuk menerangkan koneksi yang akan dibaca. Sedangkan parameter kedua menunjukkan sebuah variabel scalar untuk menyimpan data yang telah dibaca. Parameter ketiga menunjukkan bytes maksimum yang akan dibaca dari sebuah koneksi.

Sysread(FH, $buffer, 200); # read at most 200 bytes from FH $buffer = <FH>;

e. Mengakhiri Koneksi

Setelah transaksi selesai (complete), rutin close() akan mengakhiri koneksi jaringan (closing network connections). Fungsi ini dapat digunakan baik oleh client maupun server.

close(FH);

f. Mendengarkan port

Fungsi bind() digunakan hanya oleh server. Rutin bind() menyelaraskan

(associate) antara socket buffer dengan port pada perangkat keras (computer).

Apabila port yang dimaksud telah digunakan oleh program lain maka bind() akan memberikan nilai false (zero). Sockaddr_in() dapat digunakan untuk identifikasi atau mengenali port untuk bind(). Definisi port dapat berupa variabel dapat juga ditulis secara langsung. Proses ini dikenal dengan Binding the Port.


(55)

bind(MAIN, sockaddr_in($config{port}, $baddr)) || die "Failed to bind port $config{port} : $!";

Socket yang telah diinisialisasi atau diaktifkan, menandai dibukanya jalur akses ke alamat lokal protokol. Oleh karena itu diperlukan proses untuk memasuki jalur yang telah disediakan oleh socket tersebut.

Fungsi bind akan sukses atau berhasil dijalankan jika nilai yang dihasilkan berupa 0 (null) dan bernilai –1 (socket_error) jika tidak berjalan semestinya. Proses bind akan menspesifikasikan alamat lokal dan port yangg sudah didefinisikan sebelumnya. Alamat lokal yang tidak didefinisikan secara jelas (inaddr_any), akan menonaktifkan sistem untuk memilih alamat lokal sampai adanya koneksi dari socket yang lain. Dengan demikian default alamat lokal dengan INADDR_ANY sangat effisien dipakai diawal pertama kali socket diaktifkan.

g. Menunggu koneksi

Fungsi listen() hanya digunakan oleh server untuk menunggu datangnya koneksi dari client. Fungsi listen() memberitahukan pada sistem operasi bahwa server siap untuk menerima koneksi jaringan yang akan masuk pada port yang telah ditentukan. Parameter pertama merupakan file handle pada socket untuk melakukan proses listen.

listen(MAIN, SOMAXCONN);

h. Menerima Koneksi


(56)

menerima datangnya koneksi dari client. Dengan kata lain Accept() berfungsi untuk menunggu datangnya permintaan (request) pada server. Untuk parameter

accept() menggunakan dua file handle, satu berassosiasi dengan socket sedang

yang lain berassosiasi dengan koneksi network tertentu (specifik network

connections).

# got new connection

$acptaddr = accept(SOCK, MAIN); if (!$acptaddr) { next; }

Proses yang terjadi pada program aplikasi ini akan dikelompokkan berdasar fungsi-fungsi yang ada dalam program aplikasi.

i. Proses penerimaan data

Pada saat data yang diminta dikirim segera dijalankan proses penerimaan data. Proses ini merupakan tahap dari sistem untuk menerima koneksi dari socket lain. Setelah alamat dan port sudah teralokasikan melalui proses bind, dapat diartikan bahwa socket telah diaktifkan untuk menerima koneksi dari socket lain serta membuka jalur bagi data-data yang akan memasuki sistem (receive).

# read_line()

# Reads one line from SOCK sub read_line

{

local($idx, $more, $rv); if ($use_ssl) {

while(($idx = index($read_buffer, "\n")) < 0) { # need to read more..

if (!($more = Net::SSLeay::read($ssl_con))) { # end of the data

$rv = $read_buffer; undef($read_buffer); return $rv;


(57)

}

$read_buffer .= $more; }

$rv = substr($read_buffer, 0, $idx+1);

$read_buffer = substr($read_buffer, $idx+1); return $rv;

}

else { return <SOCK>; } }

Fungsi receive form berfungsi sebagai jalur pembuka yang selalu siap menangani setiap socket yang berinteraksi.

j. Proses pengiriman data

Proses listen atau proses penerimaan data diulang secara terus menerus agar sistem selalu siap menerima semua paket data yang yang ditujukan ke alamat sistem. Proses penerimaan data sistem bersifat pasif yaitu menunggu datangnya data sehingga sistem harus selalu stand by.

# write_data(data)

# Writes a string to SOCK sub write_data

{

if ($use_ssl) {

Net::SSLeay::write($ssl_con, $_[0]); }

else {

print SOCK $_[0]; }

$write_data_count += length($_[0]); }

3.3.2. Proses dalam Modul

Proses modul adalah proses pasif, artinya proses tersebut tidak akan dijalankan apabila tidak ada perintah dari user, meskipun user telah terlebih dahulu


(58)

mengaktifkan proses transaksi http.

a. Admin Users

Admin user adalah sebuah tools untuk membuat, edit, menghapus, user administrator, atau orang-orang yang memiliki hak untuk melakukan proses administrasi dengan menggunakan program aplikasi ini. Dalam tools ini seorang administrator dapat mengatur fasilitas-fasilitas mana saja yang diperkenankan untuk dipakai oleh setiap user administrator.

Untuk menampilkan data-data user yang berhak untuk menggunakan program admin dibuat subrutin yang berfungsi untuk mengambil data user yang berada dalam /etc/admin. Data tersebut kemudian ditempatkan dalam sebuah file handle bernama PWFILE. PWFILE akan disimpan dalam array untuk ditampilkan pada form yang disediakan.

sub list_users {

local(@mods, %miniserv, $_, @rv, %acl); &read_acl(undef, \%acl);

@mods = &list_modules();

&get_miniserv_config(\%miniserv); open(PWFILE, $miniserv{'userfile'}); while(<PWFILE>) {

if (/^([^:\s]+):([^:\s]+)(:(\d+))?/) { local(%user);

$user{'name'} = $1; $user{'pass'} = $2;

$user{'sync'} = $4 if ($3); $user{'modules'} = $acl{$1}; push(@rv, \%user);

} }


(59)

Untuk menciptakan user baru bagi administrator maka perlu membuka file handle PWFILE. Program admin akan menerima input dari user, kemudian akan menjalan subrutin create_user yang akan menambahkan input dari user untuk disimpan dalam /etc/admin.

# create_user(&details) sub create_user

{

local(%user, %miniserv, @mods); %user = %{$_[0]};

&get_miniserv_config(\%miniserv);

open(PWFILE, ">> $miniserv{'userfile'}");

print PWFILE "$user{'name'}:$user{'pass'}:$user{'sync'}\n"; close(PWFILE);

Sama dengan ketika membuat user baru, untuk merubah user data-data tentang user perlu ditampilkan terlebih dahulu, user akan menekan tombol save apabila telah selesai melakukan perubahan. Ketika tombol save ditekan maka subrutin modify user akan dijalankan. File handle PWFILE yang menyimpan data user akan ditulis kembali menggantikan data yang lama.

# modify_user(name, &details) sub modify_user

{

local(%user, %miniserv, @pwfile, @acl, @mods, $_, $m); %user = %{$_[1]};

&get_miniserv_config(\%miniserv); open(PWFILE, $miniserv{'userfile'}); @pwfile = <PWFILE>;

close(PWFILE);

open(PWFILE, "> $miniserv{'userfile'}"); foreach (@pwfile) {

if (/^([^:\s]+):([^:\s]+)/ && $1 eq $_[0]) {

print PWFILE "$user{'name'}:$user{'pass'}:$user{'sync'}\n"; }


(60)

}

close(PWFILE);

Data user masih harus ditampilkan apabila hendak menghapus user yang telah ada. Input dari user yang berupa penekanan tombol delete akan menjalankan subrutin delete_user. Data yang tersimpan dalam PWFILE akan disimpan kembali menggantikan data sebelumnya.

# delete_user(name){func del_usr-/acl/acl-lib.pl} sub delete_user

{

local($_, @pwfile, @acl, %miniserv); &get_miniserv_config(\%miniserv); open(PWFILE, $miniserv{'userfile'}); @pwfile = <PWFILE>;

close(PWFILE);

open(PWFILE, "> $miniserv{'userfile'}"); foreach (@pwfile) {

if (!/^([^:\s]+):([^:\s]+)/ || $1 ne $_[0]) { print PWFILE $_; } }

close(PWFILE);

Apabila ada kegagalan dalam proses penghapusan user maka error message dapat ditampilkan dalam $whatfailed.

# modify_user(name, &details){func edt_usr-/acl-lib.pl} sub modify_user

{

local(%user, %miniserv, @pwfile, @acl, @mods, $_, $m); %user = %{$_[1]};

&get_miniserv_config(\%miniserv); open(PWFILE, $miniserv{'userfile'}); @pwfile = <PWFILE>;

close(PWFILE);

open(PWFILE, "> $miniserv{'userfile'}"); foreach (@pwfile) {


(61)

if (/^([^:\s]+):([^:\s]+)/ && $1 eq $_[0]) {

print PWFILE "$user{'name'}:$user{'pass'}:$user{'sync'}\n"; }

else { print PWFILE $_; } }

close(PWFILE);

b. Linux Users

Linux user adalah modul yang mengatur administrasi terhadap user-user linux. Dalam modul ini seorang administrator mampu untuk membuat user baru, menghapus user, atau melakukan proses editing terhadap account seorang user.

Untuk keperluan tersebut diperlukan sebuah fungsi yang dapat mencari acount dari linux user. Berikut adalah fungsi untuk mengetahui user-user yang memiliki hak untuk menggunakan linux.

# password_file(file){user-lib.pl}

sub password_file {

if (!$_[0]) { return 0; }

elsif (open(SHTEST, $_[0])) { local($line);

$line = <SHTEST>; close(SHTEST);

return $line =~ /^\S+:\S*:/; }

else { return 0; } }

# list_users() sub list_users {

# read the password file . . .

# start by reading /etc/passwd $lnum = 0;

open(PASSWD, $config{'passwd_file'}); while(<PASSWD>) {


(62)

s/\r|\n//g;

if (/\S/ && !/^[#\+\-]/) {

@pw = split(/:/, $_, -1);

push(@rv, { 'user' => $pw[0], 'pass' => $pw[1], 'uid' => $pw[2], 'gid' => $pw[3], 'real' => $pw[4], 'home' => $pw[5], 'shell' => $pw[6], 'line' => $lnum, 'num' => scalar(@rv) });

$idx{$pw[0]} = $rv[$#rv]; }

$lnum++; }

close(PASSWD);

Fungsi ini mencari file yang berada pada lokasi /etc/passwd, yaitu lokasi untuk menyimpan data-data password dari linux user. Data-data ini kemudian dibaca dan disimpan dalam hashtable array bernama PASSWD, dari data ini akan diperoleh informasi tentang user, pass, uid, gid, real, home, shell karena setiap file yang diambil mengandung informasi tersebut untuk masing-masing user.

Pada prinsipnya untuk membuat user baru, dapat ditambahkan pada daftar user yang disimpan dalam passwd, untuk selanjutnya disimpan kembali dalam direktory /etc/passwd.

sub crete_user < Creates a new user with the given details > {

local(%u) = %{$_[0]}; if (&passfiles_type() == 1) {

# just need to add to master.passwd

open(PASSWD, ">> $config{'master_file'}"); print PASSWD

"$u{'user'}:$u{'pass'}:$u{'uid'}:$u{'gid'}:$u{'class'}:$u{'change'}:$u{'expire'}:$ u{'real'}:$u{'home'}:$u{'shell'}\n";

close(PASSWD); }


(63)

else {

# add to /etc/passwd

open(PASSWD, ">> $config{'passwd_file'}");

print PASSWD "$u{'user'}:",&passfiles_type() == 2 ? "x" : $u{'pass'}, ":$u{'uid'}:$u{'gid'}:$u{'real'}:$u{'home'}:$u{'shell'}\n"; close(PASSWD);

if (&passfiles_type() == 2) { # add to shadow as well..

open(SHADOW, ">> $config{'shadow_file'}"); print SHADOW "$u{'user'}:$u{'pass'}:$u{'change'}:$u{'min'}:$u{'max'}:$u{'warn'}:$u{'inactive' }:$u{'expire'}:\n"; close(SHADOW); } } }

Hal yang sama terjadi juga terhadap fungsi modify user. Data-data dapat diambil dari passwd, kemudian merubah data tersebut dan menyimpannya kembali dalam lokasi yang sama.

# modify_user(&old, &details) sub modify_user

{

local(%u) = %{$_[1]}; local(@passwd, @shadow); if (&passfiles_type() == 1) {

# just need to update master.passwd

&replace_file_line($config{'master_file'}, $_[0]->{'line'}, "$u{'user'}:$u{'pass'}:$u{'uid'}:$u{'gid'}:$u{'class'}:".

"$u{'change'}:$u{'expire'}:$u{'real'}:$u{'home'}:$u{'shell'}\n"); }

else {

# update /etc/passwd

&replace_file_line($config{'passwd_file'}, $_[0]->{'line'}, "$u{'user'}:".(&passfiles_type() == 2 ? "x" : $u{'pass'}). ":$u{'uid'}:$u{'gid'}:$u{'real'}:$u{'home'}:$u{'shell'}\n"); if (&passfiles_type() == 2) {


(64)

&replace_file_line($config{'shadow_file'}, $_[0]->{'sline'}, "$u{'user'}:$u{'pass'}:$u{'change'}:$u{'min'}:". "$u{'max'}:$u{'warn'}:$u{'inactive'}:$u{'expire'}:\n"); }

} }

Berikut adalah fungsi yang bertugas untuk menghapus user. Masih memanfaatkan daftar user passwd.

# delete_user(&details) sub delete_user

{

if (&passfiles_type() == 1) {

&replace_file_line($config{'master_file'}, $_[0]->{'line'}); }

else {

&replace_file_line($config{'passwd_file'}, $_[0]->{'line'}); if (&passfiles_type() == 2) {

&replace_file_line($config{'shadow_file'}, $_[0]->{'sline'}); }

} }

Untuk melakukan administrasi pada group masih sama seperti diatas, informasi tentang group, pass, gid, members disimpan dalam array hashtable

bernama GROUP.

# list_groups() sub list_groups {

local(@rv, $lnum, $_, %idx, $g, $i, $j); $lnum = 0;

open(GROUP, $config{'group_file'}); while(<GROUP>) {

s/\r|\n//g;

if (/\S/ && !/^[#\+\-]/) { @gr = split(/:/, $_, -1);


(65)

'gid' => $gr[2],'members' => $gr[3], 'line' => $lnum,'num' => scalar(@rv) }); $idx{$gr[0]} = $rv[$#rv];

} $lnum++; }

close(GROUP);

Untuk fungsi-fungsi yang lain seperti, menambah group baru, edit group, atau menghapus group pada prinsipnya sama seperti yang terjadi pada user. Perbedaannya hanya terdapat pada ulist dan glist nya saja.

c. Administrasi Printer

Dengan memanfaatkan PRINCAP (Printer Capability Database) dapat

dibuat fungsi-fungsi yang berguna untuk menambah, menghapus maupun edit printer. Princap berfungsi untuk menerjemahkan line printer. Berikut adalah program untuk mendapatkan printer sekaligus untuk mengetahui status printer tersebut.

#Sub_get_printer

# found the printer.. get info from printcap $prn{'name'} = $n[0];

if (@n > 2) { $prn{'alias'} = [ @n[1..$#n-1] ]; } if (@n > 1) { $prn{'desc'} = $n[$#n]; }

$prn{'iface'} = $l->{'if'};

$prn{'banner'} = !defined($l->{'sh'}); $prn{'dev'} = $l->{'lp'};

$prn{'rhost'} = $l->{'rm'}; $prn{'rqueue'} = $l->{'rp'}; $prn{'msize'} = $l->{'mx#'}; # call lpc to get status

$out = `lpc status $prn{'name'} 2>&1`;

$prn{'accepting'} = ($out =~ /queuing is enabled/); $prn{'enabled'} = ($out =~ /printing is enabled/); # call lpq to get print jobs


(66)

while(<LPQ>) { chop;

if (/^Rank\s+Owner\s+/) { $doneheader++; }

elsif ($doneheader && /^(\S+)\s+(\S+)\s+(\d+)\s+(.*\S)\s+(\d+)\s+(\S+)$/) { local(%job);

$job{'id'} = $3; $job{'user'} = $2; $job{'size'} = $5; $job{'file'} = $4;

$job{'printing'} = ($1 eq "active"); push(@jobs, \%job);

Untuk menambah account printer baru dalam direktori /etc/printcap, panggil file handle CAP simpan dalam config{‘printcap_file’} cetak CAP dan jalankan subrutin make_printcap, maka data baru yang diinputkan oleh user akan disimpan dalam printcap_file.

# create_printer(&details) sub create_printer

{

local(%cap);

$cap{'sd'} = "$config{'spool_dir'}/$_[0]->{'name'}"; mkdir($cap{'sd'}, 0755);

open(CAP, ">> $config{'printcap_file'}"); print CAP &make_printcap($_[0], \%cap),"\n"; close(CAP);

&apply_status($_[0]); }

Untuk merubah account yang sudah ada dapat mengambil daftar printer dalam list_printcab yang kemudian disimpan dalam sebuah array. Nama printer yang akan dihapus merupakan input dari user. Bila nama yang diinginkan tidak terdapat dalam daftar printer akan ditampilkan pesan kesalahan. Namun bila printer ditemukan akan ditampilkan.


(1)

admin ini dijalankan dapat pula diatur melalui form ini.

Gambar. 4.28. Form IP Address & Port

Sistem operasi (operating system), pilihan ini digunakan apabila sistem operasi tempat dimana program admin ini dijalankan diganti atau dirubah dengan distribusi terbaru. Perubahan ini tidak akan mempengaruhi configurasi dari program admin yang sudah ada.

Gambar 4.29. Form OS Upgrade 4.1.9. Network Configuration


(2)

empat bagian yaitu network interfaces, dns client, host address, serta routing and gateways.

Gambar 4.30. Index Network Configuration

Dns client, form ini dapat digunakan untuk merubah hostname atau NIS domain. Kolom (field) hostname dan NIS domain akan langsung terisi, dengan mengambil host name dan nis domain dari sistem.

Gambar 4.31. Form Edit DNS

Host Address atau alamat host, digunakan untuk menampilkan alamat host yang diketahui sistem, membuat alamat host baru, merubah atau menghapus alamat host.


(3)

Alamat host yang ada dalam sistem akan ditampilkan dalam bentuk tabel. Dibawah tabel host terdapat link untuk membuat alamat host baru. Tekan tombol create setelah mengisi kolom hostname dan ip address. Untuk merubah atau menghapus alamat host click IP Address yang terdapat dalam tabel alamat host, maka form edit host akan segera ditampilkan .

Gambar 4.32. Form Edit Host

Network Interfaces, adalah interface jaringan yang ada dalam sistem. Network interface akan ditampilkan dalam bentuk tabel. Dibawah tabel interface terdapat link untuk membuat interface baru aktif, ada 2 (dua) pilihan sesuai tabel interface diaktifkan pada saat booting atau diaktikan saat itu juga. Selanjutnya akan muncul form input untuk mengaktifkan interface. Tekan tombol create untuk mengaktifkannya. Form edit interface sama dengan form untuk mengaktifkan interface. Tekan tombol save untuk menyimpan dan tombol delete untuk menghapus.


(4)

BAB V PENUTUP 5.1. Kesimpulan

Dengan sebuah program aplikasi berbentuk web untuk administrasi sistem dan jaringan pada server yang menggunakan sistem operasi unix/linux maka kebutuhan akan suatu program yang dapat melakukan proses administrasi sistem dan jaringan pada server yang menggunakan sistem operasi unix/linux.

Dari sistem yang telah selesai dibuat ini dapat diambil beberapa kesimpulan mengenai program aplikasi serbaguna berbentuk web untuk administrasi sisem dan jaringan pada server yang menggunakan sistem operasi unix/linux, adalah sebagai berikut :

1. Pemrograman cgi ternyata mampu menjembatani dan menghubungkan dua sistem operasi sekaligus dalam satu aplikasi dengan menggunakan dua protokol, yaitu UDP dan TCP dengan memanfaatkan web browser sebagai medianya. 2. Meskipun interface pada sistem operasi Windows maupun Linux mempunyai

perbedaan, namun sistem pengiriman dan penerimaan paket data secara umum tidak berubah, tetap menggunakan typical http transaction.

5.2. Saran

Setelah melakukan evaluasi terhadap unjuk kerja dari aplikasi administrasi sistem dan jaringan untuk server bersistem operasi unix/linux, dan telah berhasil dilaksanakan sesuai dengan tujuan, namun masih terdapat banyak proses di dalam sistem ini yang dapat dikembangkan lebih jauh lagi terutama dipandang dari segi manajemen jaringan dan manajemen sistem. Dalam memanajemen sebuah server


(5)

jaringan, seorang administrator tentunya ingin mengontrol aktifitas yang dilakukan oleh client-client di bawahnya, meskipun tidak secara menyeluruh, mulai dari memonitor data yang masuk dan keluar dari tiap-tiap komputer dalam sebuah jaringan besar (WAN misalnya), melihat konektifitas internet setiap client, sehingga kita bisa mengontrol site-site yang tidak boleh dibuka oleh client dan kita pun dapat langsung menindaklanjuti dengan menutup alamat IP yang digunakan misalnya, melihat node-node yang dilalui oleh data yang kita terima (traceroute), dan masih banyak lagi pengembangan dari pemrograman socket dengan memanfaatkan dasar-dasar pemrograman yang telah digunakan dalam aplikasi ini.


(6)

Andrews, Brian and Murdoch T, William. 1998, Buid Perl Aplication with Samples.

http:// /

Andrew Tanenbaum, 1989, Computer Network 2nd/ed, Prentice Hall Inc, USA.

W. Richard Steven, 1994, TCP/IP Illustrated, Volume 1, Second Edition, Addison , Wesley, USA.

Douglas E. Comer, David L. Stevens, 1997, Internetworking With TCO/IP Client-Server Programming and Aplications, Prentice Hall Inc, USA.

Kent Reisdorph, 1998, Teach Yourself Borland C++ Bilder 3 In 21 Days, Sams Publishing, USA.

W. Richard Steven, 1998, Unix Network Programming, Volume 1,Second Edition,Prentice Hall, USA.