Cara Membuka Port yang diblok Firewall dengan Inno Setup

Jika anda membangun aplikasi dengan menyertakan database RDBMS semisal Firebird, MySQL atau SQL Server yang sudah di masukkan dalam paket instalasi Inno Setup tentunya akan sering terkendala dengan komputer server yang memasang Firewall sehingga database anda tidak bisa diakses dari komputer client.Untuk mengatasi hal tersebut anda bisa membukanya dengan cara manual.  Tetapi tentunya aplikasi anda akan lebih berkelas jika bisa membuka secara otomatis Firewall tersebut melalui paket instalasi.

Di Windows, modul untuk setting firewall adalah menggunakan HNetCfg.dll yang ada sejak Windows XP Service Pack 2.  Modul tersebut menggunakan teknologi ActiveX sehingga untuk mengaksesnya harus menggunakan perintah CreateOleObject yang sudah disediakan oleh Inno Setup.  Meski modul tersebut disarankan untuk tidak dipakai di Windows Vista ke atas, tapi jika hanya untuk membuka port yang terblokir firewall dalam server jaringan skala kecil masih bisa terpakai.

Taruh script setelah bagian code di script inno setup anda.  Untuk lebih jelasnya silahkan lihat gambar berikut:

Cara membuka port firewall dengan Inno Setup

Dan berikut ini scriptnya:

const
NET_FW_PROFILE2_DOMAIN  = 1;
NET_FW_PROFILE2_PRIVATE = 2;
NET_FW_PROFILE2_PUBLIC  = 4;

NET_FW_IP_PROTOCOL_TCP = 6;
NET_FW_ACTION_ALLOW    = 1;
NET_FW_RULE_DIR_IN  = 1;
NET_FW_RULE_DIR_OUT = 2;
procedure AddExceptionToFirewall(Const Caption, Executable:String;Port : Word);

var
  fwPolicy2      : Variant;
  RulesObject    : Variant;
  Profile        : Integer;
  NewRule        : Variant;
begin
 Profile             := NET_FW_PROFILE2_PRIVATE OR NET_FW_PROFILE2_PUBLIC;
  fwPolicy2           := CreateOleObject('HNetCfg.FwPolicy2');
  RulesObject         := fwPolicy2.Rules;
  NewRule             := CreateOleObject('HNetCfg.FWRule');
  NewRule.Name        := Caption;
  NewRule.Description := Caption;
  NewRule.Applicationname := Executable;
  NewRule.Protocol := NET_FW_IP_PROTOCOL_TCP;
  NewRule.LocalPorts :=  Port;
  NewRule.Direction := NET_FW_RULE_DIR_IN;
  NewRule.Enabled := TRUE;
  NewRule.Grouping := 'My Group Application';
  NewRule.Profiles := Profile;
  NewRule.Action := NET_FW_ACTION_ALLOW;
  RulesObject.Add(NewRule);
end;
//Setting firewall sebelum klik tombol finish saat instalasi.
procedure CurStepChanged(CurStep: TSetupStep);
begin

    if Curstep=ssPostInstall then
    begin

        AddExceptionToFireWall('Coba Firewall','D:\my.exe',12345);

    end;
end;

Penjelasan script:

  • FWPolicy2 mengimplementasikan method dari interface InetFWPolicy2
  • FwRule mengimplementasikan method dari interface InetFWrule
  • NET_FW_IP_PROTOCOL_TCP bertipe data enumerasi, mengindikasikan protokol TCP yang dibuka.  Sedang jika   UDP harus diganti dengan NET_FW_IP_PROTOCOL_UDP  = 17
  • NET_FW_RULE_DIR_IN, itu sama dengan Inbound Rules.  Mengijinkan komputer dari luar mengakses server anda melalui port yang anda buka.
  • NET_FW_ACTION_ALLOW, mengijinkan port untuk dibuka.

Jika script tersebut berhasil dijalankan maka di Inbound Firewall anda otomatis akan tampil nama, group, rules, port dan keterangan lainnya seperti berikut:

Coba buka port firewall Inno Setup

anasmbahdien

Seorang programmer yang menguasai bahasa pemograman Delphi, VB.NET, PHP dan Android. Untuk hasil karya kunjungi mogotekno.com

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *