## Perancangan Aplikasi Sistem Billing untuk Warnet Prabayar

## Dwi Agus Diartono
Fakultas Teknologi Informasi, Universitas Stikubank Semarang email : dwiagus@unisbank.ac.id
ABSTRAK  : Dalam  pengoperasian  sehari – hari  sebuah  warnet  memerlukan suatu  sistem  billing  yang berfungsi untuk  menentukan  besarnya pulsa  pelanggan  yang  telah  terpakai,  perhitungannya  didasarkan pada durasi waktu akses internet yang dilakukan oleh pelanggan. Pada warnet dengan sistem pembayaran biasa, pembayaran dilakukan ketika seseorang telah selesai mengakses internet. Pelanggan menuju operator dan  membayar  sesuai dengan  lama  waktu  akses  internet.  Besarnya pembayaran  yang  dilakukan  oleh pengguna tercatat dalam database server yang terkoneksikan pada seluruh komputer klien yang digunakan untuk  mengakses  internet.  Secara  otomatis  server akan  melakukan  perhitungan  pulsa  dan  akan menghentikan akses internet bila pulsa telah habis. Jadi, operator tidak perlu menunggu sampai pelanggan selesai, baru kemudian memberikan tagihan.
Kata kunci : sistem billing, warnet, prabayar

## PENDAHULUAN
Pada  era  globalisasi  sekarang  ini,  laju informasi  sangat  cepat  dan  kebutuhan  dalam penggunaan internet guna mendapatkan informasi secara cepat semakin banyak. Internet dapat di akses melalui komputer yang terhubung dengan  jaringan  komunikasi  global.  Di Indonesia  fasilitas  internet  belum  dapat  di nikmati  oleh  semua  orang,  sehingga  diperlukan penyedia  jasa  layanan  internet  yang  di  sebut warnet (warung internet).
Linux  yang  merupakan  salah  satu  sistem operasi  yang  banyak  digunakan  sebagai  server dalam  jaringan  komputer.  Linux  termasuk sistem  operasi  yang  handal  dan  tahan  terhadap virus.  Disamping  itu  spesifikasi  hardware  yang dibutuhkan juga  relatif  lebih  ringan  bila dibandingkan dengan sistem operasi lain seperti windows  untuk  menjalankan  fungsi  yang  sama. Dan kelebihan yang utama adalah sistem operasi linux bersifat free licence.
Dalam pengoperasian sehari – hari sebuah warnet  memerlukan  suatu  sistem  billing  yang berfungsi  untuk  menentukan  besarnya  pulsa pelanggan  yang  telah  terpakai,  perhitungannya didasarkan  pada  durasi  waktu  akses  internet yang  dilakukan  oleh  pelanggan.  Pada  warnet dengan  sistem  pembayaran  biasa,  pembayaran dilakukan  ketika  seseorang  telah  selesai
mengakses  internet.  Pelanggan  menuju  operator dan membayar sesuai dengan lama waktu akses internet.
Pada  warnet  penempatan  komputer  klien harus  berdekatan  dengan  operator.  Banyaknya komputer klien dan penempatan komputer klien mempengaruhi  jumlah  operator  warnet.  Billing yang sering  digunakan  di warnet  menghitung biaya  yang  dikeluarkan  oleh  pelanggan  setelah pelanggan selesai menggunakan internet.

## RUMUSAN MASALAH
Adapun  perumusan  permasalahan  yang akan dibahas adalah :
a. Komputer klien yang digunakan untuk akses internet  oleh  pelanggan harus  berdekatan dengan operator untuk melayani pembayaran.  Jadi  semakin  banyak  lokasi penempatan komputer, jumlah operator juga semakin  banyak.  Dari  segi  bisnis,  hal  ini tidak efisien.
b. Pelanggan  tidak  dapat membatasi  biaya yang harus dikeluarkan untuk akses internet karena  baru mengetahui  biaya  tersebut setelah selesai menggunakan internet.

## PEMBATASAN MASALAH
Agar  permasalahan  tidak  menyimpang dari maksud dan tujuan, juga mengingat luasnya permasalahan, maka pembahasan hanya mencakup  pembuatan  sistem  billing  dan database yang meliputi :
a. Perancangan dan pembuatan sistem otentikasi,  untuk  menentukan  klien  warnet yang  berhak  melakukan  akses  internet secara otomatis.
b. Perancangan  dan  pembuatan  sistem  billing yang  berfungsi  secara  otomatis untuk menghitung besarnya tagihan pulsa pelanggan berdasarkan durasi akses internet.
c. Perancangan dan pembuatan sistem administrasi yang berfungsi untuk menjalankan  fungsi  administrasi  seperti penambahan  user  dan  pengesetan  harga pulsa.
d. Perancangan jaringan komputer klien warnet dengan  server  menggunakan  sistem  operasi linux.

## TUJUAN DAN MANFAAT
Bertujuan  memudahkan  pihak  penyedia layanan  akses  internet  atau  pengusaha  warnet dan juga para pelanggan, terutama dalam bidang pembayaran  tagihan.  Para  penyedia  layanan tidak  perlu  memantau  dan  menghitung  secara langsung  besarnya  biaya  yang  dibebankan  pada pelanggan  ketika  akses  interenet,  sehingga komputer klien tidak harus berdekatan atau satu lokasi dengan operator. Jadi komputer klien bisa disebarkan  di  beberapa  tempat  strategis  yang mudah  diakses  oleh  pelanggan  tanpa  perlu menempatkan  operator.  Pelanggan  juga  bisa membatasi  biaya  yang  akan  digunakan  untuk menggunakan layanan internet.
Adapun manfaatnya sebagai berikut:
1. Pelayanan  pembayaran  dilakukan  sebelum pengguna  mengakses  internet  sehingga pengguna  bisa membatasi  besarnya  tagihan yang ingin dibayarkan.
2. Besarnya  pembayaran  yang  dilakukan  oleh pengguna  tercatat  dalam  database  server yang  terkoneksikan  pada  seluruh  komputer klien  yang  digunakan untuk  mengakses
internet.  Secara  otomatis  server  akan melakukan  perhitungan  pulsa  dan  akan menghentikan akses internet bila pulsa telah habis.  Jadi,  operator  tidak  perlu  menunggu sampai  pelanggan  selesai,  baru  kemudian memberikan tagihan.
3. Komputer  klien  yang  digunakan dalam akses  internet,  bisa  ditempatkan  pada beberapa  lokasi  yang  dianggap  strategis tanpa  harus  disertai  seorang  operator, sehingga  lebih  efisien  dalam  hal  pegawai dan bisa dekat dengan pelanggan.
4. Pelanggan  bisa  mengakses  internet  sewaktu –  waktu  tanpa  terpengaruh  jam  kerja  dari operator.
5. Pelanggan bisa melanjutkan untuk mengakses  internet  di  lain  waktu  selama pulsa yang dimiliki belum habis.
6. Sistem  ini  juga  memungkinkan  seseorang berlangganan menggunakan  komputer  di rumah pelanggan.
Beberapa keuntungan diatas
menggambarkan  bahwa  warnet  prabayar  ini memiliki nilai strategis dan menguntungkan bagi pengusaha  jasa  akses  internet  maupun  bagi pelanggan.

## METODE
Agar  dapat  memberikan  hasil  yang  baik, maka  menggunakan  berbagai  macam  metode sebagai berikut :
1. Metode perancangan sistem.
Metode  yang  digunakan  adalah  sebagai berikut :
a. Perencanaan kebutuhan.
Yaitu  merencanakan  kebutuhan  sistem yang  meliputi  perangkat  keras  dan perangkat  lunak  untuk  kebutuhan jaringan.
b. Quick design.
Yaitu  pembuatan  desain  awal  atau rancang cepat sebuah sistem billing dan database.
c. Building sistem.
Yaitu  tahap  membangun  atau  membuat sebuah sistem billing dan database.
d. Testing dan evaluasi sistem.
Yaitu  tahap  pengujian  sistem  dan mengevaluasi  hasil  dari  percobaan tersebut.

## WARNET
Warnet  adalah  singkatan  dari  "Warung Internet".  Warung  Internet  adalah  terjemahan dalam  bahasa  Indonesia  dari  istilah  asing Internet Cafe. Warnet memberi pelayanan akses internet  bagi  pelanggan.  Sebagai  gantinya pelanggan  membayar  biaya  tertentu  sesuai  tarif yang  di  tetapkan.  Perhitungan  tarif  berdasarkan durasi  akses  internet  atau  besarnya  data (http://id.wikipedia.org/wiki/warnet).
Di  negara  dunia  ketiga,  warnet  adalah  tempat kebanyakan  orang  mengakses  internet.  Di negara-negara atau daerah-daerah maju di mana akses  internet  sudah  ada  pada  hampir  setiap rumah,  warnet  jarang  didapatkan  dan  mahal tarifnya.

## SISTEM BILLING
Dalam pengoperasian sehari – hari sebuah warnet  memerlukan  sistem  billing.  Sistem billing adalah suatu sistem yang berfungsi untuk menentukan  besarnya  pulsa  pelanggan  yang telah  terpakai,  perhitungannya  didasarkan  pada durasi waktu akses internet yang dilakukan oleh pelanggan.  program  billing  ini  akan  terus berjalan  ketika  klien  masih  aktif  akses  internet. Pengurangan  pulsa  dilakukan  setiap  60  detik. Besarnya  pulsa  yang  dikurangkan  tiap  60  detik bisa  ditentukan  oleh  operator.  Pengurangan pulsa  akan  berhenti  ketika  klien  logout  atau pulsa klien habis

## SISTEM BILLING PRABAYAR
Sistem  billing  prabayar  adalah  suatu sistem billing  yang  menggunakan  sistem voucher. Apabila seorang user ingin menggunakan layanan jasa internet seorang user diharuskan  membeli  voucher  terlebih  dahulu. Setelah  membeli  voucher,  user  akan  diberi username  dan  pin  untuk menggunakan  layanan jasa internet.

## SISTEM WARNET PRABAYAR
Warnet  prabayar  terdiri  dari  3  sistem utama  yaitu  sistem  administrasi,  sistem  billing dan  sistem  otentikasi.  Sistem  administrasi berfungsi  untuk  melayani  administrasi  warnet dan database user, sistem billing berfungsi untuk menghitung  besarnya  tagihan  pelanggan, sedangkan  sistem  otentikasi  berfungsi  untuk menentukan  hak  akses  pelanggan,  sedangkan sistem  otentikasi  berfungsi  untuk  menentukan hak  aksesn  pelanggan.  Ilustrasi  sistem warnet prabayar dapat dilihat pada gambar berikut :

## Gambar 1. Sistem warnet prabayar
Antara  komputer  klien  dengan  internet terhubung melalui komputer server. Oleh karena itu, untuk dapat melakukan akses internet, klien harus melewati komputer server terlebih dahulu. Selain  sebagai  penghubung,  komputer  server juga  bisa  berfungsi  sebagai  pembatas  akses pelanggan.  Sebelum melakukan  akses  internet, klien  diharuskan  untuk  login  terlebih  dahulu dengan  memasukkan  user  ID  dan  password. Bagi  klien  yang  belum  memiliki  user  ID  dan password  harus  mendaftar  terlebih  dahulu  ke operator.  Dimana  user  harus  mengisi  is,  user, password,  jumlah  pulsa  dan  alamat  email. Kemudian  operator  /  admin  menentukan  harga pulsa,  sebelumnya  operator  juga  sudah menentukan  no  PC  beserta  IP  addresnya. Pembuatan  voucher  dilakukan  oleh  admin  yang terdiri  dari  no  voucher,  pin,  besarnya  pulsa, status, waktu dan admin yang membuatnya.
Server  akan melakukan  validasi  untuk mengecek  kesesuaian  antara  user  ID  dan password,  bila  sesuai  maka  server  akan melakukan  2  hal,  yaitu  memulai  perhitungan billing  klien  dan  membuka  akses  internet  bagi pelanggan.  Untuk  mekanisme  teknis  sistem billing  dan  pemberian    akses    internet    akan
diterangkan  pada  pembahasan  selanjutnya. Selama  klien  akses  internet,  server  akan melakukan pengurangan  pulsa pelanggan sesuai tarif  yang  ditetapkan  oleh  operator  dan pengecekan pulsa yang dimiliki pelanggan setiap satu  menit  sampai  klien  logout  atau  pulsa  klien habis. Bila hal itu terjadi, komputer server akan otomatis  melakukan  pencabutan  hak  akses pelanggan.  Klien  tidak  diperkenankan  untuk login  dari  2  komputer  yang  berbeda  dengan menggunakan  user  ID  yang  sama  dalam  satu waktu.

## PERANCANGAN DATABASE SERVER
Pada  sistem  ini  digunakan  MySQL  dan database yang dibuat bernama warnetku
Tabel 1. Rincian database billing
PHPMyAdmin digunakan untuk mempercepat  pembuatan  database  dan  tabel  - tabel  yang  diperlukan  oleh  sistem.  Database yang dibuat bernama “warnetku” dan terdiri dari 4  tabel  yaitu  tabel  data,  harga,  pc  dan  voucher. Seluruh  data yang  berhubungan  dengan  sistem warnet  prabayar  tersimpan  dalam  database warnetku.  Penjelasan  fungsi  masing-masing tabel sebagai berikut :
1. Tabel “data”
Tabel  “data”  berisi  data-data  yang berhubungan dengan klien warnet. Tabel ini terdiri dari 8 field :
a. Id,  bersifat  auto  increment  dan merupakan primary key dalam tabel ini.
Isi  dari  field  ini  merupakan  urutan pendaftaran klien dari warnet.
b. User,  merupakan  nama yang  dipilih klien sebagai user account. Bersifat unik sehingga  tidak  mungkin  2  klien memiliki user account yang sama.
c. Password,  digunakan  dalam  sistem otentikasi  untuk  menentukan  user  yang berhak menggunakan accountnya. Password  ini  bersifat  rahasia  dan dienkripsi dengan md5 sehingga, admin sendiri  tidak  tahu  isi  dari  password sebenarnya.
d. Status,  berisi  “idle”  bila  user  sedang tidak aktif dan berisi alamat ip komputer yang  digunakan  bila  user  sedang  aktif. Field  ini  digunakan  untuk  mencegah klien  login  dari  2  komputer  yang berbeda dalam waktu yang sama.
e. Pulsa, berisi jumlah pulsa yang dimiliki pelanggan
f. Last,  berisi  detik  ketika  sistem melakukan  perubahan  pulsa  user.  Field ini  untuk mencegah  pulsa  user berkurang  sebelum  periode  1  menit berlalu  yang  disebabkan  jendela  billing di refresh secara manual oleh klien.
g. Alias,  berisi  keterangan  posisi  user, yaitu “admin” untuk operator dan “user” untuk klien.
h. Email,  berisi  alamat  email  masing- masing user.
2. Tabel harga
Tabel  ini  digunakan  untuk  melakukan pengesetan besarnya tarif internet tiap menit. Hanya terdiri dari 1 field :
a. Pulsa, nilai yang tertulis dalam field ini digunakan  sebagai  parameter  besarnya pengurangan  pulsa  yang  dibebankan pada pelanggan tiap menit.
3. Tabel pc
Tabel  ini  berisi  informasi  tentang  identitas PC.  Tiap  PC  mendapat  nama  tersendiri untuk  memudahkan  klien  dalam mencari komputer  yang  masih  belum  terpakai. Terdiri dari 2 field :
a. No, berisi nama masing-masing komputer klien.
b. Ip, alamat ip dari komputer klien.
4. Tabel voucher
Tabel  ini  berfungsi  pada  pengisian  pulsa sistem voucher. Tabel ini terdiri dari 6 field :
a. No,  bersifat  auto  incremen  dan merupakan primary key. Berisi informasi  banyaknya  transaksi  yang telah  terjadi  dan  voucher  yang  telah terbuat
b. Pin,  merupakan  sejumlah  angka  yang bersifat acak, diberikan kepada pelanggan  ketika  membeli  pulsa.  Tiap pin  memiliki  nilai  pulsa  tertentu  sesuai dengan yang dibeli klien.
c. Pulsa,  jumlah  uang  yang  merupakan nilai dari masing-masing pin.
d. Status,  berisi  nama  user  yang  telah melakukan pengisian pulsa. Sebelum pin dipakai,  status  bernilai  null.  Field  ini mengakibatkan pin yang sama tidak bisa dipakai 2 kali.
e. Waktu, berisi waktu pembuatan voucher.
f. Admin,  berisi  nama  operator  yang membuat voucher.

## PERANCANGAN SISTEM ADMINISTRASI
Sistem  administrasi    digunakan  oleh operator  maupun  user    untuk  melakukan administrasi  data  user.  Penggunaan  sistem adminstrasi  terbatas  pada  user  tertentu  sesuai dengan  hak  aksesnya.  Fungsi  dari  sistem adminstrasi untuk administrator antara lain :
1. Menambah atau menghapus user atau klien.
2. Mengeset password user atau klien.
3. Melihat profil user
4. Mengeset harga pulsa tiap satuan waktu.
5. Membuat  voucher  pulsa  sesuai  nilai  yang diminta user.
6. Melihat saldo voucher..
7. Melihat  traffic  komputer  dan  situs  favorit pengunjung
Fungsi  dari  sistem  adminstrasi  untuk  klien antara lain.
1. Isi pulsa
2. Cek pulsa
3. Mengubah password
4. Mengubah profil user
Sebelum  mengakses  sistem  administrasi, klien  ataupun  operator  harus  melewati  proses otentikasi dengan cara melakukan login sebagai terlebih dahulu untuk menentukan hak aksesnya.
Gambar 2. Bagan alir sistem administrasi

## PERANCANGAN  SISTEM  OTENTIKASI KLIEN
Sistem  otentikasi  klien  berfungsi  untuk menentukan  klien  berhak atau  tidak  melakukan akses  internet.  Sebelum akses  internet,  klien harus  mengunjungi  alamat  web  server  untuk login  dengan  cara  memasukkan  user  ID  dan password.  Sistem  akan  mengecek  kesesuaian antara  user  ID  dan  password,  disamping  itu sistem  juga  akan  mengecek  nilai  pulsa  yang dimiliki oleh klien.
Apabila semua persyaratan diatas terpenuhi,  maka  klien  berhak  melakukan  akses internet,  sebaliknya  jika  tidak  terpenuhi  maka sistem akan  menolak  pemberian  hak  akses
internet.  Pemberian  akses  internet  dilakukan dengan  cara  menambahkan  alamat  ip  dari komputer  yang  digunakan  oleh  klien  ke  file “access.list”  yang  merupakan  acuan  dari  squid untuk  menentukan komputer yang  berhak  akses internet  dan  tidak.  Ketika  klien  akses  internet program  akan  terus  mengecek  pulsa  yang dimiliki  klien.  Apabila  pulsa  yang  dimiliki sudah  habis  atau  user  logout  secara  manual maka  akses  internet  dari  komputer  yang  telah digunakan akan dicabut kembali.
Gambar 3. Bagan alir sistem otentikasi

## PERANCANGAN SISTEM BILLING
Sistem billing berfungsi
untuk menentukan  besarnya  pulsa  pelanggan  yang telah  terpakai,  perhitungannya  didasarkan  pada durasi waktu akses internet yang dilakukan oleh pelanggan.  program  billing  ini  akan  terus berjalan  ketika  klien  masih  aktif  akses  internet.
Pengurangan  pulsa  dilakukan  setiap  60  detik. Besarnya  pulsa  yang  dikurangkan  tiap  60  detik bisa  ditentukan  oleh  operator.  Pengurangan pulsa  akan  berhenti  ketika  klien  logout  atau pulsa klien habis.
Program  –  program  yang  terkait  dengan sistem  billing  warnet  prabayar  antara  lain program client.c, program server.c dan program pulsa.c. Program client.c dan server.c merupakan pemrograman socket dalam lingkungan  linux.  Kedua  program  tersebut menentukan  status  klien  masih  aktif  atau  tidak. Jadi,  program  tersebut  mempengaruhi  hampir seluruh  sistem  warnet  prabayar.  Ketika  user login,  program  validate  akan  mengaktifkan
program  server.c  sedangkan  program  client.c dijalankan oleh program billing. Program server akan  tetap  hidup  bila  mendapat  kiriman  paket data  dari  program client.  Ketika  paket  tidak diterima  selama  lebih  dari  2  menit,  program server  akan  menjalankan  program firedown untuk  menutup  akses  internet.  Jadi  program client  dan  server  punya  pengaruh  yang  besar pada  sistem  otentifikasi.  Hubungan  antara program  Client  dan  server  dapat  dilihat  pada gambar 3.5.
Gambar 4. Bagan alir program billing Server Socket() Bind() Rcvfrom() Run pulsa Menunggu data Socket() Sendto() Client data
Gambar 5. Bagan alir program socket client- server
Selain  program  client  dan  server  diatas, terdapat  satu  program  lagi  yang  berkaitan  erat dengan  sistem  billing,  yaitu  program  pulsa.c. program  pulsa.c  dianggil  oleh  program server dengan  perintah system(buf) .  Ketika  dipanggil,
program ini akan melakukan pengurangan pulsa dengan melakukan query ke database ”billing”.
Bagan  alir  program  pulsa  dapat  di  lihat  pada gambar 6.
Gambar 6. Bagan alir program pulsa Program  pulsa  diatas  mengambil  pulsa klien    dan  data  besarnya  tarif  permenit  yang ditetapkan oleh operator. Besarnya tarif ini yang digunakan untuk menentukan besarnya pengurangan  pulsa  user  setiap  menit.  Jika  nilai pulsa  lebih besar dari  0  maka  program ini  akan mengurangi pulsa awal dengan nilai pengurang. Hasil  pengurangan  tersebut  akan  dimasukkan kembali  kedalam  database.  Setelah  itu  program mengeset  kembali  waktu  akhir  dan  keluar  dari program. 60 detik kemudian program ini akan di jalankan  kembali  sehingga  proses  pengurangan pulsa akan berlangsung kembali.

## PERSIAPAN SISTEM
Sistem administrasi dibuat dengan menggunakan  bahasa  pemrograman  PHP  dan database  MySQL.  Fungsi  utama  dalam sistem ini  berkisar  pada  proses  query  data,  yaitu memasukkan  sejumlah  data  ke  database  atau menampilkan  dan  membandingkan  data  dari database.  Data  yang  tersimpan  dalam database akan  digunakan  sebagai  acuan  oleh  sistem otentikasi dan sistem billing.
Untuk  sistem  otentikasi  digunakan  squid proxy  server sebagai  gerbang  yang  menentukan suatu  komputer  bisa  akses  internet  atau  tidak. Pada  squid terdapat  konfigurasi  access  list  (acl) yang berfungsi  untuk  mendefinisikan  alamat- alamat ip yang berhak melakukan akses internet. Selain dari alamat ip yang tercatat dalam access list  squid,  permintaan  browsing  dari  suatu komputer  akan  ditolak  oleh  squid.  Fasilitas squid  inilah  yang  digunakan  sebagai  gerbang otentikasi pada sistem ini.
Ketika  klien  akan  akses  internet,  klien harus  menuju  ke  halaman  login  terlebih  dahulu untuk  memasukkan  user  ID  dan  password. Halaman login ini menggunakan sistem web dan dibuat  dari  PHP.  Pemilihan  sistem  web dimaksudkan  agar  tidak  perlu  melakukan installasi  software  khusus  di  komputer  klien. Apabila user ID dan password  yang dimasukkan oleh  klien  sesuai,  selanjutnya  sistem  akan mengecek  nilai  pulsa  yang  dimiliki  oleh  klien. Jika pulsa yang dimiliki lebih dari 0, maka user bisa akses internet.
Proses  akses  internet  sendiri  bisa dijelaskan  sebagai  berikut.  Pada  sistem warnet prabayar  didalam  komputer  server  terdapat  2 program socket  yaitu  program  klien  dan program  server.  Program  klien  bertugas mengirimkan beberapa bit data ke server. Ketika server  menerima  paket  data,  maka  server    akan menjalankan  program  fireup  yang  berfungsi untuk  menambahkan  alamat  ip  yang digunakan oleh  klien  ke  dalam access  list  dari  squid, sehingga  klien  bisa  akses  internet.  Pada  saat yang  sama,  program  server  juga  akan mengaktifkan  program  pengurang  pulsa  yang berfungsi  untuk  mengurangi  pulsa  pelanggan sesuai dengan tarif yang ditetapkan. Mekanisme ini  akan  terus  berulang  setiap  60  menit.  Ketika pulsa  klien  habis  atau  klien  logout,  program
klien  akan berhenti  mengirim  paket  data  ke program server. Program server akan menunggu selama  2  menit,  apabila  dalam  2  menit  tidak terdapat  paket  data  dari  program  klien  maka program  server  akan  menjalankan  program untuk  menghapus  alamat  ip  yang  digunakan klien  dari  access  list  squid.  Sehingga  komputer tersebut tidak dapat digunakan lagi untuk access internet.  Disamping  itu,  pengurangan  pulsa pelanggan juga berhenti.
Penggunaan  program  socket  ini,  yaitu program  klien  dan  server  dimaksudkan  untuk menghindari kecurangan yang mungkin dilakukan  oleh  pelanggan.  Yaitu  apabila  klien berupaya  untuk  mematikan  jendela  login  dan jendela  billing.  Apabila  digunakan  php  murni, maka ketika jendela billing di tutup, maka server akan  berhenti  menghitung  pulsa  pelanggan  dan proses  didalam  server  juga  akan  berhenti seketika sebelum sempat menutup akses internet komputer  yang  dipakai  oleh  klien.  Sehingga klien  akan  bisa  akses  internet  tanpa  terkena pengurangan pulsa.

## KONFIGURASI JARINGAN KOMPUTER
Sistem  warnet  prabayar  dibuat  dengan menggunakan  jaringan  komputer  topologi  klien server.  Komputer  klien  pada  sistem  ini  adalah komputer-komputer  yang  digunakan  oleh pelanggan  untuk  melakukan  akses  internet, sedangkan komputer server merupakan komputer  yang  digunakan  sebagai  administrasi dari  sistem.  Pada  komputer  server  terdapat database  server  yang  berisi  identitas  pelanggan dan  pulsa  yang  dimiliki,  sistem  autentikasi  dan sistem  billing.  Desain  konfigurasi  jaringan komputer dapat dilihat pada gambar 3.1.
Gambar 7. Konfigurasi jaringan komputer
Komputer server berfungsi sebagai router, menghubungkan jaringan klien yang memiliki IP network 10.10.10.0/24 dengan network 10.252.108.0/24. Pada komputer server dipasang 2  buah  etherner  card.  Masing-masing  ethernet card  tergabung  dalam  jaringan  berbeda.  Kedua ethernet card dikenal dengan eth0 dan eth1. Eth0 memiliki  IP  10.252.108.20  dan  tergabung dengan jaringan 10.252.108.0/24 yang terhubung internet secara bebas. Sedangkan eth1 memiliki  IP  10.10.10.1  dan  tergabung  dengan jaringan  komputer  klien.  IP  eth1  berperan sebagai  gateway  bagi  jaringan  klien.  Jadi  IP tersebut berfungsi sebagai pintu yang menghubungkan  jaringan  klien  dengan  jaringan diatasnya dan juga internet.

## KONFIGURASI KOMPUTER SERVER
Pada  sistem  ini  komputer  server menggunakan  sistem  operasi  linux  Knoppix berbasis  Debian  yang  dilengkapi  dengan  paket squid  sebagai  server  proxy,  database  Mysql, apache webserver dan PHP.

## SISTEM OPERASI KOMPUTER SERVER
Sistem  operasi  yang  digunakan  pada komputer  server  adalah  linux  Knoppix.  Untuk update  paket,  sistem server  mengambil  paket dari mirror debian terdekat, yaitu kebo.vlsm.org. Mirror  merupakan  sebutan  untuk  komputer server yang berfungsi sebagai rujukan atau pusat untuk  melakukan  update  sistem  operasi  linux debian.  Pada  mirror  disediakan  paket-paket software  yang  bisa  berjalan  di  linux  debian. Pemilihan mirror tersebut dilakukan dengan cara menentukan source list server dengan mengkonfigurasi file /etc/apt/source.list.

## INSTALLASI PROXY SERVER
Untuk  proxy  server  digunakan  squid. Squid  merupakan  software  proxy yang  cukup stabil dan handal.  Pada  sistem  warnet  prabayar, squid  digunakan  untuk  mengarahkan  browser pelanggan  untuk  mengunjungi  web  admin terlebih  dahulu  sebelum  akses  internet.  Hal  ini perlu  dilakukan  karena  proses  login  sebagai sarat  untuk  otentikasi,  dilakukan  melalui  web tersebut.  Agat  proxy bisa  bekerja  seperti  yang diinginkan, maka harus dilakukan pengesetan di file  konfigurasi  squid  yaitu  di  /etc/squid.conf.
Langkah-langkah konfigurasi squid dengan cara mengetikkan listing program pada shell :
1. Installasi squid.
# apt-get install squid.
2. Membuka file /etc/squid/squid.conf
# vim /etc/squid/squid.conf
3. Konfigurasi file /etc/squid/squid.conf
Tambahkan  listing  program  di  file squid.conf, kemudian buat file
/var/www/source.list acl client warnet src “/var/www/source.list” http_access allow localhost http_access allow client warnet http_access deny all
Baris pertama menunjukkan bahwa terdapat acl  clientwarnet  dengan  daftar  komputer klien tersimpan di file /var/www/source.list. Hal  ini  berarti,  komputer  yang  bisa  akses internet, alamat ipnya harus tersimpan dalam file tersebut.  Baris berikutnya menunjukkan aturan akses internet. Dari list diatas, terlihat bahwa  yang  diperbolehkan  access  internet adalah localhost dan acl clientwarnet. Selain kedua  acl  tersebut,  tidak  diperkenankan akses internet.
4. Restart squid
Agar  konfigurasi  yang  baru  bisa  berimbas, maka squid perlu direstart.
# /etc/init.d/squid restart

## INSTALLASI WEB SERVER
Pada  komputer  server  deperlukan  web server  karena  sistem  otentikasi  dan  layanan- layanan  adaministrasi  user  dilakukan  dengan menggunakan  program  aplikasi  berbasis  web. Web  server  yang  digunakan  pada  sistem  ini adalah  apache.  Langkah  –  langkah  konfigurasi apache  dengan  mengetikkan  perintah-perintah berikut pada shell :
1. Install apache.
Untuk melakukan installasi apache, ketikkan perintah  berikut  pada  shell  linux.  Baris pertama  pada  program perintah  di  atas berfungsi  untuk  menginstall  paket  apache yang terdapat dalam debian, sedangkan baris kedua  melakukan  installasi  paket  library
apache agar dapat mendukung aplikasi yang menggunakan php4
# apt-get  install apache
# apt-get install libapache2-mod-php4
2. Konfigurasi file httdoc.conf
Pada  webserver  apache  terdapat  pengaturan lokasi tempat menyimpan file-file web yang akan  di  tampilkan  ke  brower.  Jadi  file-file web tidak boleh ditaruh di sembarang lokasi. Pengaturan  lokasi  tersebut  dapat  dilakukan dengan  melakukan  konfigurasi  pada  file httdoc.conf. Apabila file web ditaruh di luar lokasi  yang  ditentukan,  maka  file  tersebut tidak  akan  dibaca  oleh  web  browser.  Pada linux  penempatan  file-file  web  di  direktori khusus yaitu direktori /var/www/ atau dalam /home/user/public_html.
3. Konfigurasi visudo
Pada  sistem  warnet  prabayar,  saat  klien login,  secara  otomatis  server  akan  memberi instruksi  untuk  mengaktifkan  program billing  dan  membuka  akses  internet  bagi klien.  Hal  ini  berarti  PHP  perlu  melakukan instruksi kedalam sistem linux dan bertindak sebagai root. Pada kondisi normal, hak akses php  ke  sistem  terbatas.  Untuk  bisa melakukan  instruksi  sistem  dengan  level user root, maka harus dilakukan penambahan pada visudo.
# visudo
Perintah  diatas,  akan  membuka  file  sudo yang  berisi  user  yang  berhak  memiliki  hak akses  tertinggi  dalam  sistem  linux. Tambahkan  baris  berikut  untuk  pada  file tersebut.  User  www-data merupakan  user yang  digunakan  untuk  mengakses  web server  apache.  Penambahan  user  www-data pada  visudo  di  maksudkan agar  sistem web mampu melakukan sintaks shell sebagai root sehingga  php  dapat  melakukan  instruksi  ke sistem dengan level user root.
www-data ALL=NOPASSWD : ALL
4. Restart apache
Agar  konfigurasi  baru  tersebut  berimbas maka apache perlu di restart terlebih dahulu.
# /etc/init.d/apache restart

## INSTALLASI PHP
Salah  satu  bahasa  pemrograman  yang digunakan  dalam membangun  sistem  ini  adalah PHP, pemilihan bahasa pemrograman ini karena sifatnya  gratis  dan  handal  untuk  aplikasi berbasis  web.  Pemilihan  aplikasi  berbasis  web ditujukan agar tidak perlu lagi melakukan setting atau  installasi  khusus  pada  komputer  klien,
sehingga memungkinkan pelanggan menggunakan komputer pribadi
untuk memanfaatkan  sistem  ini.  PHP  merupakan bahasa  pemrograman  yang  bersifat  server  side, sehingga seluruh proses dijalankan disisi server. Hal  ini  sangat  membantu  keamanan  sistem. Langkah-langkah installasi PHP :
1. Install php versi 4
# apt-get install php4
#  apt-get  install  php4-mysql  Baris  pertama untuk  menginstall  paket  php4,  sedangkan baris  kedua  merupakan  modul  php4  untuk bisa koneksi dengan MySQL.
2. Buat file info.php
# vim info.php
ketikkan  listing  program 4.11  dan  simpan program di direktori /var/www/
<?php
phpinfo();
?>
3. Test  PHP4  dengan  memanggil  file  info.php dari browser. Bila php4 berjalan maka, akan keluar tampilan seperti dibawah ini
Gambar 8. Tampilan PHP info

## INSTALLASI MySQL
Sebagai  media  penyimpanan  data,  sistem  ini menggunakan  database  MySQL.  Pemilihan database ini karena MySQL merupakan database yang  free  namun  memiliki  kehandalan  yang sudah  teruji.  Dan  database  ini  juga  cukup mendukung  bahasa  pemrograman  PHP  dan webserver Apache. Installasi MySQL :
# apt-get install mysql-server-4.1
# apt-get install php4-mysql

## INSTALLASI GCC
GCC  merupakan  kompiler  untuk  bahasa pemrograman C dan C++ yang yang terdapat di GNU/linux.  Pada  sistem  ini  diperlukan  GCC karena  program menggunakan  pemrograman socket  dengan  C.  Installasi  GCC  dengan mengetikkan perintah berikut :
# apt-get install gcc
Setelah  paket  gcc  terinstall  kita  bisa melakukan  kompilasi  program-program  yang ditulis  dengan  menggunakan  bahasa  C.  Contoh cara kompilasi program C.
# gcc –o klien klien.c
Dari  perintah  diatas  dapat  dijelaskan  sebagai berikut :
“gcc”  merupakan  perintah  untuk  melakukan kompilasi.
“-o klien” berarti kompilasi tersebut menghasilkan file yang bernama klien.
“klien.c” merupakan source file yang dikompilasi.

## PROGRAM SISTEM OTENTIKASI KLIEN
Sebelum  akses  internet,  klien  harus mengunjungi  alamat  web  server  untuk  login dengan cara memasukkan user ID dan password. Sistem  akan  mengecek  kesesuaian  antara  user ID  dan  password,  disamping  itu  sistem  juga akan  mengecek  nilai  pulsa  yang  dimiliki  oleh klien.  Pengecekan  tersebut  dilakukan  dengan menjalankan program.
<?php include '../conf/warnet-mysql.php';
session _start();
$ user _name = $_POST[' user _name']; $password =
md5($_POST['password']);
//set up the query
$ query =  "SELECT  *  FROM  data WHERE user ='$ user _name' AND  password='$password' AND status='idle' AND pulsa>'0'";
//run  the query and  get  the  number  of affected rows $result = mysql_ query ($ query , $connection) or die('error
making query '); $affected_rows =
mysql_num_rows($result);
//if there's exactly one result, the user is validated. Otherwise,
he's invalid if($affected_rows == 1) { $_ SESSION [' user _name'] =
$ user _name;
if( $ user _name == admin) { header ('location:/admin/'); } else {
$ipx=$_ SERVER ["HTTP_X_FORWAR DED_FOR"];
if( empty($ipx)) {
$ip=$_ SERVER ["REMOTE_ADDR"];
} else { $ip=$ipx; }
$noport=explode(".",$ip);
$port  =  $noport[3] +
20000;
//Menjalankan server billing system("sudo
/sbin/start-stop-daemon -S – exec /var/www/udp/ server -p
/tmp/ server $port - m -b -- $port");
//Membuka firewall //system("sudo
/var/www/scripts/fireup $ip "); header ( 'location:/ billing /' ); } } else { header ( 'location:/ warnet ku/' );
}
?>
Program  diatas  mengisi  nilai  variabel “$user_name”  dan  “$password”  sesuai  dengan yang dimasukkan  user.  Kedua  variabel  tersebut di  cek  kesesuaiannya  dengan  cara  melakukan query  ke  database  memangil  data  dengan menggunakan  kedua  variabel  tersebut  sebagai parameter.  Dari  proses  query    tersebut,  bila menghasilkan  nilai  maka  user  name  dan password  dinyatakan  sesuai  dan  server  akan menjalankan  perintah  selanjutnya.  Bila  user name  dan  password  tidak  sesuai  maka  program akan keluar menampilkan jendela login kembali. Setelah  otentikasi  berhasil  program  diatas  akan mengambil alamat ip klien, kemudian menentukan  no  port yang  digunakan  untuk melakukan koneksi socket antara program klien dan  server.  No  port  tersebut  dibuat  dengan mengambil  angka  terakhir  dari  alamat  ip kemudian  ditambahkan  dengan  nilai  20000. Selain  itu,  program  ini  juga  akan  menjalankan program  “server.c”  dan  program  “fireup”  untuk membuka  koneksi  internet.  Diakhir  program terdapat perintah sesuai program.
Header ( 'location:/ billing /' );
Program  digunakan  oleh  PHP  untuk berpindah  menjalankan  program  lain  yang terletak di lokasi yang disebutkan, dalam hal ini yaitu  folder  “billing”.  Jadi,  setelah  melakukan otentikasi,  server  akan  menjalankan  sistem billing untuk menghitung pulsa pelanggan.
Program-program yang berhubungan dengan sistem otentikasi antara lain :

## PROGRAM SISTEM BILLING
Sistem  billing  terdiri  dari  beberapa  program yang  saling  berkaitan,  program  utama  yang mengatur atau menjalankan sistem billing adalah program 4.28.
<?php include '../conf/ warnet -mysql.php'; session_start(); if(empty($_SESSION['user_name'])) { header( 'location:/warnetku/' ); } header( 'refresh: 60; url=/' );
echo '<h1> WARNET PRA- BAYAR...</h1>'; echo '<h5>refresh in 60 seconds, DO NOT refresh this page manually !!!</h5>';
echo date("l dS of F Y h:i:s A "); echo "<br>"; $user=$_SESSION['user_name']; echo $user; echo ", login from ";
$ipx=$_SERVER["HTTP_X_FORWAR DED_FOR"]; if( empty($ipx)) { $ip=$_SERVER["REMOTE_ADDR"]; } else { $ip=$ipx; }
$query="UPDATE data set status='$ip' WHERE user='$user'"; $result = mysql_query($query, $connection) or die('error making query'); $noport=explode(".",$ip); $port = $noport[3] + 20000;
$pidof=`ps ax | grep $port | grep -v grep | awk -F" " '{ print $1 }'`;
echo "$ip PID $pidof"; echo "<br>";
$query = "SELECT pulsa FROM data WHERE user='$user'";
$result = mysql_query($query, $connection) or die('error making query'); $row = mysql_fetch_row($result); echo "Pulsa : $row[0]";
echo "<br> <br><a href=logout.php>LOGOUT</a><br>"; system("sudo /var/www/udp/client localhost $port \"pulsa $user 100\""); ?>
Program  memiliki  peran  yang  utama dalam  membangun  sistem  warnet  prabayar. Program  ini  akan  terus  dijalankan  berulang- ulang setiap 60 detik. Selama program ini masih berjalan,  maka  sistem  billing  akan  terus mengurangi  pulsa  dan  sistem  otentikasi  tetap membuka koneksi internet. Program diatas akan melakukan  query ke  database  untuk  mengeset status  user  dengan  alamat  ip  komputer  yang digunakan, hal  ini  menandakan  user  yang bersangkutan  sedang  aktif.  Fungsi  utama  dari program diatas adalah pada baris :
system("sudo /var/www/udp/client localhost $port \"pulsa $user 100\"");
Baris  diatas  adalah  fungsi  dalam  PHP untuk  menjalankan  instruksi  sistem  yaitu menjalankan  program  klien  dengan  memberi argumen “localhost” yang menunjukkan hostname komputer, nilai  variable “$port” yang menunjukkan port  yang  digunakan  dan  string “pulsa $user  100”. Baris diatas menjadi penting karena sistem otentikasi dan sistem billing akan terus bekerja selama program klien tetap bekerja dan memberi kiriman data ke program server.
Pada program diatas terdapat proses query untuk merubah isi pulsa  user yang tersimpan di database “billing”. Syarat untuk bisa melakukan query  ke  mysql  dengan menggunakan  bahasa pemrograman C adalah :
a. Include <mysql.h>
memanggil  library  mysql  agar  perintah query bisa dijalankan
b. Static MYSQL mysql;
Membuat  variable  static  dengan  tipe MYSQL.
c. Mysql_init(&mysql);
Mengalokasikan  atau  menginilisiasi  objek mysql sesuai dengan mysql_real_connect.
d. Mysql_real_connect(&mysql,  "localhost", "root", "root", " warnet ku", 0, NULL, 0))
Melakukan  koneksi database dengan menentukan  hostname, user ,  password  dan nama database sesuai  dengan  yang  akan  di pakai.
e. Mysql_close(&mysql);
Untuk menutup koneksi ke mysql.

## KESIMPULAN
Pada  warnet  prabayar  terdapat  3  sistem utama yang saling berkaitan yaitu sistem billing, sistem  otentifikasi  dan  sistem administrasi. Sistem  billing  berfungsi  untuk  menghitung besarnya  pulsa  pelanggan  didasarkan  lama waktu  pemakaian  internet.  Sistem  otentifikasi berfungsi  sebagai  pengatur  hak  akses  bagi pelanggan.  Sedangkan  sistem administrasi berfungsi  dalam manajemen  user  maupun pengaturan  harga  pulsa  serta  memberikan berbagai layanan bagi user.
Sistem  billing  yang  berada  langsung  di server  menyebabkan  komputer  yang  terhubung dengan  server  otomatis  harus  login  dulu  untuk mengakses internet. Dengan adanya voucher dan pentarifan  secara  otomatis  meringankan  kinerja operator.  Oleh  karena  itu  warnet  prabayar merupakan salah satu solusi untuk meningkatkan efisiensi dalam pelayanan jasa internet.
Untuk membangun sistem diatas digunakan  bahasa  pemrograman  berbasis  web yaitu PHP, bahasa pemrograman C untuk socket programing, database mysql serta sistem operasi linux  untuk  server.  Prioritas  utama  dalam pengerjaan  proyek  akhir  ini  adalah  kehandalan sistem  terutama  dari  segi  keamanan  dan stabilitas pelayanan. Sistem warnet prabayar ini cukup fleksibel dalam penerapannya karena bisa diterapkan  untuk  klien  dengan  sistem  operasi windows  maupun  linux  serta  tidak  perlu dilakukan  penginstalan  software  tertentu  pada masing – masing komputer klien.

## DAFTAR PUSTAKA
1. Azikin,  A.,  Adi,  S,  A.,  Ady,  Gunawan., 2004, debian GNU/Lnux , Andi. Yogyakarta
2. Jhony  H.  Sembiring.,  2001,  Jaringan Komputer  berbasis  Linux,  Elex  Media Komputindo. Jakarta
3. Kadir,  A.,  2003, Dasar  pemrograman  web dinamis menggunakan PHP, Andi.
Yogyakarta
4. Sukarno,  M.,  2006, Membangun  Website Dinamis  Interaktif  dengan  PHP-MySQL (Windows & Linux), Eska Media. Jakarta
5. http://id.wikipedia.org/wiki/Apache_HTTP_ Server
6. http://id.wikipedia.org/wiki/internet
7. http://id.wikipedia.org/wiki/MySQL
8. http://id.wikipedia.org/wiki/warnet
9. http://id.wikipedia.org/wiki/PHP
10. http://ilmukomputer.com/berseri/ivan- socket/index.php
11. http://ilmukomputer.com/umum/ardiyansah- jaringan.php
12. www.php.net