This commit is contained in:
f1iwq2
2023-12-08 15:14:26 +01:00
parent e0b9857f1d
commit bf274b0fa7
24 changed files with 4167 additions and 3499 deletions

View File

@@ -3,8 +3,8 @@ unit UnitPareFeu;
// créée une règle dans le parefeu windows pour autoriser tous les ports entre CDM et Signaux_complexes
interface
function verifie_regle : integer;
function cree_regle : boolean;
function verifie_regle(sp : string) : integer;
function cree_regle(sp,chemin : string) : boolean;
implementation
@@ -22,16 +22,16 @@ Const
NET_FW_MODIFY_STATE_OK=0;
NET_FW_MODIFY_STATE_GP_OVERRIDE=1;
NET_FW_MODIFY_STATE_INBOUND_BLOCKED=2;
nom_regle_cdm='CDM rail';
// Ajoute une règle au pare feu pour un programme en utilisant Microsoft Windows Firewall APIs.
function AddApplicationRule : boolean;
function AddApplicationRule(sp,chemin : string) : boolean;
var
CurrentProfiles,fwPolicy2,RulesObject,NewRule : OleVariant;
s,fichier : string;
r : boolean;
begin
fichier:=CheminProgrammes+'\CDM-Rail\cdr.exe';
fichier:=CheminProgrammes+chemin; //'\CDM-Rail\cdr.exe';
// Crée l'objet FwPolicy2
fwPolicy2:=CreateOleObject('HNetCfg.FwPolicy2');
@@ -42,8 +42,8 @@ begin
//Crée l'objet de la règle.
NewRule:=CreateOleObject('HNetCfg.FWRule');
NewRule.Name:=nom_regle_cdm;
NewRule.Description:='Autorise le socket de/vers CDM rail';
NewRule.Name:=sp; // CDM rail
NewRule.Description:='Autorise le socket de/vers CDM rail'+sp;
NewRule.Applicationname:=fichier;
NewRule.Protocol:=NET_FW_IP_PROTOCOL_TCP;
@@ -69,7 +69,8 @@ begin
result:=r;
end;
function cree_regle : boolean;
//
function cree_regle(sp,chemin : string) : boolean;
var CoResult : Hresult;
s : string;
r : boolean;
@@ -78,13 +79,13 @@ begin
try
CoResult:=CoInitializeEx(nil,COINIT_MULTITHREADED);
try
r:=AddApplicationRule;
r:=AddApplicationRule(sp,chemin);
finally
begin
CoUninitialize;
if r then
begin
s:='Ajout de la règle '+nom_regle_cdm+' dans le pare-feu';
s:='Ajout de la règle '+sp+' dans le pare-feu';
formconfig.Labelinfo.caption:=s;
Affiche(s,clyellow);
end;
@@ -109,8 +110,8 @@ end;
// vérifie si la règle cdm est dans le parefeu windows
// retour =0 : pas dans le pare feu
// =1 oui mais inactive
// =2 oui et active
function CheckingRuleEnabled : integer;
// =2 oui et active sp=Nom regle CDM
function CheckingRuleEnabled(sp : string) : integer;
var
fwPolicy2,RulesObject,regle : OleVariant;
CurrentProfiles : Integer;
@@ -122,17 +123,17 @@ begin
fwPolicy2:=CreateOleObject('HNetCfg.FwPolicy2');
RulesObject:=fwPolicy2.Rules;
CurrentProfiles:=fwPolicy2.CurrentProfileTypes;
trouve:=false ;
trouve:=false;
oEnum:=IUnknown(Rulesobject._NewEnum) as IEnumVariant;
while (oEnum.Next(1,regle,iValue)=0) and not(trouve) do
begin
if (regle.Profiles And CurrentProfiles)<>0 then
begin
s:=regle.Name;
trouve:=s=nom_regle_cdm;
trouve:=s=sp;
if trouve then
begin
Affiche('Description de l''autorisation socket pour CDM rail dans le pare-feu Windows',clyellow);
Affiche('Description de l''autorisation socket pour '+sp+' dans le pare-feu Windows',clyellow);
Affiche('Nom : ' + s,clLime);
Affiche('Description : ' + regle.Description,clLime);
Affiche('Nom d''application: ' + regle.ApplicationName,clLime);
@@ -161,14 +162,14 @@ begin
end;
end;
function verifie_regle : integer;
function verifie_regle(sp : string) : integer;
var i : integer;
begin
i:=0;
try
CoInitialize(nil);
try
i:=CheckingRuleEnabled;
i:=CheckingRuleEnabled(sp);
finally
CoUninitialize;
end;