16 February 2016

Cara Membuat Simple P-LINK Dengan Delphi

Setelah kemarin saya mencoba membuat postingan tentang cara membuat simple SSH sekarang saya akan coba berexperiment membuat simple P-LINK dengan delphi,untuk plink sendiri mungkin bisa teman-teman mencari referensinya lewat mesin pencari google pengertiannya dan fungsi nya apa plink tersebut.Menurut saya pribadi plink tersebut kegunaanya adalah sama halnya dengan bitvise.

Yang Harus Disiapkan

Sebelum membuat project simple plink ini tentu ada beberapa aplikasi yang harus disiapkan yang pertama tentunya adalah aplikasi plink sendiri yang mana bisa didapatkan di situsnya kemudian yang kedua adalah proxifier yang mana disini saya akan coba dengan menggunakan proxifier yang versi install maka proxifier harus di install terlebih dahulu,apabila ingin menggunakan proxifier yang portable bisa juga digunakan dan siapkan versi yang portable tersebut.

Langkah Pembuatan

Baiklah setelah kedua aplikasi tersebut diatas sudah siap langsung ke cara membuatnya dimana setelah dibuka aplikasi delphinya coba tambahkan beberapa komponen pada form yang baru tersebut disini saya coba menambahkan komponen-komponen:
1. 2 buah Groupbox.
2. 6 buah Label.
3. 6 buah Edit.
4. 3 buah Button.
5. 1 buah Checkbox.
6. 1 buah Memo.
7. 1 buah DosCommand.
Kemudian ada beberapa komponen yang saya coba ganti captionnya pada object inspector dan tentu saya coba posisikan komponen-komponen tersebut agar kelihatan rapi,dimana disini saya coba posisikan komponen-komponen tersebut seperti dibawah ini

penambahan komponen pada form
Penambahan Komponen dan Pengaturan Tataletak

Penambahan Unit

Setelah komponen-komponen diletakan sedemikian rupa lanjut untuk ke pengkodingannya sebelum ke pengkodingan dalam membuat project ini ada beberapa unit yang harus ditambahkan pada uses dimana untuk menambahkan unit pada uses bisa dipelajari lagi dipostingan saya sebelumnya bagi yang belum tahu cara menambahkan unit.Unit yang ditambahkan tersebut adalah:
IniFiles, Registry, ShellAPI, TLHelp32.

Pengkodingan

Sebelum ke pengkodingan pada project kita buat suatu folder untuk menambahkan aplikasi plink dan profile proxifier,tetapi apabila menggunakan proxifier yang portable maka aplikasi proxifier portable tersebut bisa ditambahkan di folder ini.

penambahan plink dan profile proxifier
Penambahan Aplikasi Plink Dan Profile Proxifier

Kode Formcreate

Pada project ini (Simple P-Link) yang mana dibuat agar supaya bisa menyimpan suatu config sehingga pada saat project ini dibuka kembali apabila mau digunakan maka tidak perlu lagi kita mensetting ulang untuk mengisi configuration yang diperlukan plink tersebut dan disini untuk cara membuat suatu config bisa dibaca di postingan cara membuat config save dan load.Untuk itu kode buat formcreate nya adalah seperti dibawah ini:
procedure TForm1.FormCreate(Sender: TObject);
begin
  config := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Plink\Config.ini');
  try
  Edit1.Text := config.ReadString('CONFIG', 'Host', Edit1.Text);
  Edit2.Text := config.ReadString('CONFIG', 'Port', Edit2.Text);
  Edit3.Text := config.ReadString('CONFIG', 'User', Edit3.Text);
  Edit4.Text := config.ReadString('CONFIG', 'Pass', Edit4.Text);
  CheckBox1.Checked := config.ReadBool('CONFIG', 'Uproxy', CheckBox1.Checked);
  Edit5.Text := config.ReadString('CONFIG', 'Lproxy', Edit5.Text);
  Edit6.Text := config.ReadString('CONFIG', 'Lport', Edit6.Text);
  finally
  config.Free;
  end;
end;

Kode Save Button

Kemudian untuk kode Save button yang mana disini button1 sebagai save dan difungsikan untuk menyimpan configuration daripada sebuah account ssh yang kita punya dengan mengklik 2 X button1 buat procedurenya sebagai berikut
procedure TForm1.Button1Click(Sender: TObject);
begin
  config := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Plink\Config.ini');
  try
  config.WriteString('CONFIG', 'Host', Edit1.Text);
  config.WriteString('CONFIG', 'Port', Edit2.Text);
  config.WriteString('CONFIG', 'User', Edit3.Text);
  config.WriteString('CONFIG', 'Pass', Edit4.Text);
  config.WriteBool('CONFIG', 'Uproxy', CheckBox1.Checked);
  config.WriteString('CONFIG', 'Lproxy', Edit5.Text);
  config.WriteString('CONFIG', 'Lport', Edit6.Text);
  finally
  config.Free;
  end;
end;

Kode Start Button

Tentunya disini sebelum membuat kode atau procedure untuk button start yang mana disini button2 yang difungsikan sebagai start bagi yang belum menginstall komponen DosCommand bisa dibaca terlebih dahulu dipostingan cara menginstall DosCommand.Apabila komponen DosCommand sudah siap coba klik 2 X button2 tersebut untuk membuat procedurenya yang mana procedurenya adalah sebagai berikut
procedure TForm1.Button2Click(Sender: TObject);
var
  reg: TRegistry;
  path: String;
  pMethode: Integer;
  host, port, user, pass, pHost, pPort: String;
  rPlink: String;
  pf, profPF: String;
begin
  host := Edit1.Text;
  port := Edit2.Text;
  user := Edit3.Text;
  pass := Edit4.Text;
  pHost := Edit5.Text;
  pPort := Edit6.Text;
  if CheckBox1.Checked then
    pMethode := 3
    else begin
    pMethode := 0;
    end;
    reg := TRegistry.Create;
    try
    with reg do begin
    RootKey := HKEY_CURRENT_USER;
    path := '\Software\SimonTatham\PuTTY\Sessions\'+ host;
    if not KeyExists(path) then
    begin
    OpenKey(path, True);
    WriteInteger('Present', 1);
    WriteString('HostName', host);
    WriteInteger('PortNumber', StrToInt(port));
    WriteInteger('PingInterval', 0);
    WriteInteger('PingIntervalSecs', 10);
    WriteInteger('TCPNoDelay', 1);
    WriteInteger('TCPKeepalives', 1);
    WriteInteger('ProxyMethod', pMethode);
    WriteString('ProxyHost', pHost);
    WriteInteger('ProxyPort', StrToInt(pPort));
    WriteString('Cipher', 'blowfish');
    end
    else begin
    OpenKey(path, False);
    WriteInteger('Present', 1);
    WriteString('HostName', host);
    WriteInteger('PortNumber', StrToInt(port));
    WriteInteger('PingInterval', 0);
    WriteInteger('PingIntervalSecs', 10);
    WriteInteger('TCPNoDelay', 1);
    WriteInteger('TCPKeepalives', 1);
    WriteInteger('ProxyMethod', pMethode);
    WriteString('ProxyHost', pHost);
    WriteInteger('ProxyPort', StrToInt(pPort));
    WriteString('Cipher', 'blowfish');
    end;
    end;
    finally
    reg.CloseKey;
    reg.Free;
    end;
    rPlink := ExtractFilePath(Application.ExeName)+'Plink\Plink.exe -v -N -C -D 1080 '+
      user+'@'+host+' -P '+port+' -pw '+pass;
    DosCommand1.CommandLine := rPlink;
    DosCommand1.Execute;
    DosCommand1.OutputLines := Memo1.Lines;
    pf := 'C:\Program Files (x86)\Proxifier\Proxifier.exe';
    profPF := 'Plink\Plink.ppx silent-load';
    ShellExecute(Handle, 'open', PAnsiChar(pf), PAnsiChar(profPF), nil, SW_HIDE);
end;

Membuat Killtask

Selanjutnya sebelum ke pengkodingan button Stop buat terlebih dahulu function Killtask dan procedure CleanUpSystemTray yang mana untuk cara membuatnya bisa baca di postingan close aplikasi dengan killtask.

Kode Stop Button

Terakhir dengan mengklik 2 X Button3 yang mana disini difungsikan untuk button stop yaitu untuk menghentikan aplikasi plink dan proxifier dan procedurenya adalah sebagai berikut
procedure TForm1.Button3Click(Sender: TObject);
var
  reg: TRegistry;
  path, host: String;
begin
  host := Edit1.Text;
  reg := TRegistry.Create;
  try
  with reg do begin
  RootKey := HKEY_CURRENT_USER;
  path := '\Software\SimonTatham\PuTTY\Sessions\'+ host;
  if not KeyExists(path) then
  DeleteKey(path);
  end;
  finally
  reg.CloseKey;
  reg.Free;
  end;
  DosCommand1.Stop;
  Memo1.Clear;
  KillTask('Proxifier.exe');
  CleanUpSystemTray;
end;

Test Project

Setelah semua kode diatas siap coba klik tombol Run atau pada keyboard tekan F9 untuk tes project.

test project simple plink
Tes Project Simple P-Link

Demikianlah untuk postingan kali ini tentang cara membuat simple p-link semoga bermanfa'at dan semoga bisa dikembangkan lagi oleh teman-teman,Nantikan lagi experiment dari saya berikutnya.

Oke Salam Blogger and Happy Koding.

No comments:

Post a Comment