diff --git a/.vs/FirewallBlocker/v17/.suo b/.vs/FirewallBlocker/v17/.suo
new file mode 100644
index 0000000..a3344f1
Binary files /dev/null and b/.vs/FirewallBlocker/v17/.suo differ
diff --git a/App.config b/App.config
index 54a3dfa..7b319ad 100644
--- a/App.config
+++ b/App.config
@@ -1,6 +1,10 @@
-
+
-
-
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/FirewallBlocker.csproj b/FirewallBlocker.csproj
index ac534fa..418cdd3 100644
--- a/FirewallBlocker.csproj
+++ b/FirewallBlocker.csproj
@@ -7,13 +7,14 @@
{1A97060C-6709-47AF-A5D5-4B73E94C07D4}
WinExe
FirewallBlocker
- Firewall Blocker
+ FirewallBlocker
v4.7.2
512
true
true
+ false
publish\
- true
+ false
Disk
false
Foreground
@@ -22,10 +23,12 @@
false
false
true
+ true
+ publish.htm
0
1.0.0.%2a
- false
false
+ true
true
@@ -56,10 +59,24 @@
false
+
+ 065A5A488BBBA567AE16A4791B9573FD14826559
+
+
+ FirewallBlocker_TemporaryKey.pfx
+
+
+ false
+
+
+ LocalIntranet
+
+
+
@@ -79,6 +96,17 @@
+
+ True
+ True
+ strings.resx
+
+
+ Form1.cs
+
+
+ Form1.cs
+
Form1.cs
@@ -92,6 +120,11 @@
Resources.resx
True
+
+ ResXFileCodeGenerator
+ strings.Designer.cs
+
+
SettingsSingleFileGenerator
diff --git a/Form1.Designer.cs b/Form1.Designer.cs
index 739119b..ba56013 100644
--- a/Form1.Designer.cs
+++ b/Form1.Designer.cs
@@ -41,131 +41,99 @@ private void InitializeComponent()
this.pathTitleLabel = new System.Windows.Forms.Label();
this.inoutCheckbox = new System.Windows.Forms.CheckBox();
this.mainPanel = new System.Windows.Forms.Panel();
- this.button1 = new System.Windows.Forms.Button();
+ this.translationIcon = new System.Windows.Forms.PictureBox();
+ this.langSelectBox = new System.Windows.Forms.ComboBox();
+ this.githubButton = new System.Windows.Forms.Button();
this.titleBackgroundPanel = new System.Windows.Forms.Panel();
this.minimizeButton = new System.Windows.Forms.Button();
this.closeButton = new System.Windows.Forms.Button();
this.mainPanel.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.translationIcon)).BeginInit();
this.titleBackgroundPanel.SuspendLayout();
this.SuspendLayout();
//
// AppPathTextBox
//
+ resources.ApplyResources(this.AppPathTextBox, "AppPathTextBox");
this.AppPathTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(34)))), ((int)(((byte)(40)))), ((int)(((byte)(49)))));
this.AppPathTextBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(238)))));
- this.AppPathTextBox.Location = new System.Drawing.Point(12, 85);
this.AppPathTextBox.Name = "AppPathTextBox";
- this.AppPathTextBox.Size = new System.Drawing.Size(282, 21);
- this.AppPathTextBox.TabIndex = 0;
//
// ipListRichText
//
+ resources.ApplyResources(this.ipListRichText, "ipListRichText");
this.ipListRichText.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(34)))), ((int)(((byte)(40)))), ((int)(((byte)(49)))));
this.ipListRichText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(238)))));
- this.ipListRichText.Location = new System.Drawing.Point(12, 147);
this.ipListRichText.Name = "ipListRichText";
- this.ipListRichText.Size = new System.Drawing.Size(282, 172);
- this.ipListRichText.TabIndex = 1;
- this.ipListRichText.Text = "";
//
// selectAppButton
//
- this.selectAppButton.Font = new System.Drawing.Font("Segoe UI", 11.25F);
+ resources.ApplyResources(this.selectAppButton, "selectAppButton");
this.selectAppButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(38)))), ((int)(((byte)(28)))), ((int)(((byte)(44)))));
- this.selectAppButton.Location = new System.Drawing.Point(376, 78);
this.selectAppButton.Name = "selectAppButton";
- this.selectAppButton.Size = new System.Drawing.Size(100, 35);
- this.selectAppButton.TabIndex = 2;
- this.selectAppButton.Text = "Selecionar";
this.selectAppButton.UseVisualStyleBackColor = true;
this.selectAppButton.Click += new System.EventHandler(this.selectAppButton_Click);
//
// createRuleButton
//
- this.createRuleButton.Font = new System.Drawing.Font("Segoe UI", 10.25F);
+ resources.ApplyResources(this.createRuleButton, "createRuleButton");
this.createRuleButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(38)))), ((int)(((byte)(28)))), ((int)(((byte)(44)))));
- this.createRuleButton.Location = new System.Drawing.Point(376, 195);
this.createRuleButton.Name = "createRuleButton";
- this.createRuleButton.Size = new System.Drawing.Size(100, 35);
- this.createRuleButton.TabIndex = 3;
- this.createRuleButton.Text = "Criar Regra";
this.createRuleButton.UseVisualStyleBackColor = true;
this.createRuleButton.Click += new System.EventHandler(this.createRuleButton_Click);
//
// titleLabel
//
- this.titleLabel.AutoSize = true;
+ resources.ApplyResources(this.titleLabel, "titleLabel");
this.titleLabel.BackColor = System.Drawing.Color.Transparent;
- this.titleLabel.Font = new System.Drawing.Font("Verdana", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.titleLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(238)))));
- this.titleLabel.Location = new System.Drawing.Point(150, 0);
this.titleLabel.Name = "titleLabel";
- this.titleLabel.Size = new System.Drawing.Size(228, 32);
- this.titleLabel.TabIndex = 4;
- this.titleLabel.Text = "Firewall Blocker";
this.titleLabel.MouseDown += new System.Windows.Forms.MouseEventHandler(this.titleLabel_MouseDown);
//
// openFileDialog1
//
this.openFileDialog1.FileName = "openFileDialog1";
+ resources.ApplyResources(this.openFileDialog1, "openFileDialog1");
//
// appHelpButton
//
+ resources.ApplyResources(this.appHelpButton, "appHelpButton");
this.appHelpButton.BackColor = System.Drawing.Color.Transparent;
- this.appHelpButton.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
this.appHelpButton.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(57)))), ((int)(((byte)(62)))), ((int)(((byte)(70)))));
this.appHelpButton.FlatAppearance.BorderSize = 0;
this.appHelpButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.appHelpButton.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.WindowFrame;
- this.appHelpButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.appHelpButton.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Bold);
this.appHelpButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(238)))));
- this.appHelpButton.Location = new System.Drawing.Point(463, 303);
this.appHelpButton.Name = "appHelpButton";
- this.appHelpButton.Size = new System.Drawing.Size(82, 23);
- this.appHelpButton.TabIndex = 5;
- this.appHelpButton.Text = "Ajuda?";
this.appHelpButton.UseVisualStyleBackColor = false;
this.appHelpButton.Click += new System.EventHandler(this.appHelpButton_Click_1);
//
// ipListLabel
//
- this.ipListLabel.AutoSize = true;
- this.ipListLabel.Font = new System.Drawing.Font("Verdana", 12.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ resources.ApplyResources(this.ipListLabel, "ipListLabel");
this.ipListLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(238)))));
- this.ipListLabel.Location = new System.Drawing.Point(91, 124);
this.ipListLabel.Name = "ipListLabel";
- this.ipListLabel.Size = new System.Drawing.Size(100, 20);
- this.ipListLabel.TabIndex = 7;
- this.ipListLabel.Text = "Lista de IP";
//
// pathTitleLabel
//
- this.pathTitleLabel.AutoSize = true;
- this.pathTitleLabel.Font = new System.Drawing.Font("Verdana", 12.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ resources.ApplyResources(this.pathTitleLabel, "pathTitleLabel");
this.pathTitleLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(238)))));
- this.pathTitleLabel.Location = new System.Drawing.Point(99, 62);
this.pathTitleLabel.Name = "pathTitleLabel";
- this.pathTitleLabel.Size = new System.Drawing.Size(93, 20);
- this.pathTitleLabel.TabIndex = 9;
- this.pathTitleLabel.Text = "Aplicativo";
//
// inoutCheckbox
//
- this.inoutCheckbox.AutoSize = true;
- this.inoutCheckbox.Font = new System.Drawing.Font("Verdana", 8F);
+ resources.ApplyResources(this.inoutCheckbox, "inoutCheckbox");
this.inoutCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(238)))));
- this.inoutCheckbox.Location = new System.Drawing.Point(310, 172);
this.inoutCheckbox.Name = "inoutCheckbox";
- this.inoutCheckbox.Size = new System.Drawing.Size(211, 17);
- this.inoutCheckbox.TabIndex = 11;
- this.inoutCheckbox.Text = "Criar regra de entrada e saída ?";
this.inoutCheckbox.UseVisualStyleBackColor = true;
//
// mainPanel
//
+ resources.ApplyResources(this.mainPanel, "mainPanel");
this.mainPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(57)))), ((int)(((byte)(62)))), ((int)(((byte)(70)))));
- this.mainPanel.Controls.Add(this.button1);
+ this.mainPanel.Controls.Add(this.translationIcon);
+ this.mainPanel.Controls.Add(this.langSelectBox);
+ this.mainPanel.Controls.Add(this.githubButton);
this.mainPanel.Controls.Add(this.titleBackgroundPanel);
this.mainPanel.Controls.Add(this.selectAppButton);
this.mainPanel.Controls.Add(this.appHelpButton);
@@ -175,90 +143,82 @@ private void InitializeComponent()
this.mainPanel.Controls.Add(this.inoutCheckbox);
this.mainPanel.Controls.Add(this.AppPathTextBox);
this.mainPanel.Controls.Add(this.ipListLabel);
- this.mainPanel.Location = new System.Drawing.Point(2, 2);
this.mainPanel.Name = "mainPanel";
- this.mainPanel.Size = new System.Drawing.Size(561, 332);
- this.mainPanel.TabIndex = 13;
this.mainPanel.Paint += new System.Windows.Forms.PaintEventHandler(this.mainPanel_Paint);
this.mainPanel.MouseDown += new System.Windows.Forms.MouseEventHandler(this.mainPanel_MouseDown);
//
- // button1
- //
- this.button1.BackColor = System.Drawing.Color.Transparent;
- this.button1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
- this.button1.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(57)))), ((int)(((byte)(62)))), ((int)(((byte)(70)))));
- this.button1.FlatAppearance.BorderSize = 0;
- this.button1.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
- this.button1.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.WindowFrame;
- this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.button1.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Bold);
- this.button1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(238)))));
- this.button1.Location = new System.Drawing.Point(301, 303);
- this.button1.Name = "button1";
- this.button1.Size = new System.Drawing.Size(166, 23);
- this.button1.TabIndex = 14;
- this.button1.Text = "Código no Github";
- this.button1.UseVisualStyleBackColor = false;
- this.button1.Click += new System.EventHandler(this.button1_Click);
+ // translationIcon
+ //
+ resources.ApplyResources(this.translationIcon, "translationIcon");
+ this.translationIcon.Name = "translationIcon";
+ this.translationIcon.TabStop = false;
+ //
+ // langSelectBox
+ //
+ resources.ApplyResources(this.langSelectBox, "langSelectBox");
+ this.langSelectBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.langSelectBox.FormattingEnabled = true;
+ this.langSelectBox.Items.AddRange(new object[] {
+ resources.GetString("langSelectBox.Items"),
+ resources.GetString("langSelectBox.Items1")});
+ this.langSelectBox.Name = "langSelectBox";
+ this.langSelectBox.TabStop = false;
+ this.langSelectBox.SelectedIndexChanged += new System.EventHandler(this.langSelectBox_SelectedIndexChanged);
+ //
+ // githubButton
+ //
+ resources.ApplyResources(this.githubButton, "githubButton");
+ this.githubButton.BackColor = System.Drawing.Color.Transparent;
+ this.githubButton.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(57)))), ((int)(((byte)(62)))), ((int)(((byte)(70)))));
+ this.githubButton.FlatAppearance.BorderSize = 0;
+ this.githubButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
+ this.githubButton.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.WindowFrame;
+ this.githubButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(238)))));
+ this.githubButton.Name = "githubButton";
+ this.githubButton.UseVisualStyleBackColor = false;
+ this.githubButton.Click += new System.EventHandler(this.button1_Click);
//
// titleBackgroundPanel
//
+ resources.ApplyResources(this.titleBackgroundPanel, "titleBackgroundPanel");
this.titleBackgroundPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(34)))), ((int)(((byte)(40)))), ((int)(((byte)(49)))));
this.titleBackgroundPanel.Controls.Add(this.minimizeButton);
this.titleBackgroundPanel.Controls.Add(this.closeButton);
this.titleBackgroundPanel.Controls.Add(this.titleLabel);
- this.titleBackgroundPanel.Location = new System.Drawing.Point(0, 0);
this.titleBackgroundPanel.Name = "titleBackgroundPanel";
- this.titleBackgroundPanel.Size = new System.Drawing.Size(570, 36);
- this.titleBackgroundPanel.TabIndex = 13;
this.titleBackgroundPanel.MouseDown += new System.Windows.Forms.MouseEventHandler(this.titleBackgroundPanel_MouseDown);
//
// minimizeButton
//
+ resources.ApplyResources(this.minimizeButton, "minimizeButton");
this.minimizeButton.FlatAppearance.BorderSize = 0;
- this.minimizeButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.minimizeButton.Font = new System.Drawing.Font("Verdana", 15F);
this.minimizeButton.ForeColor = System.Drawing.Color.White;
- this.minimizeButton.Location = new System.Drawing.Point(435, 0);
this.minimizeButton.Name = "minimizeButton";
- this.minimizeButton.Size = new System.Drawing.Size(54, 36);
- this.minimizeButton.TabIndex = 7;
- this.minimizeButton.Text = "-";
- this.minimizeButton.TextAlign = System.Drawing.ContentAlignment.TopCenter;
this.minimizeButton.UseVisualStyleBackColor = true;
this.minimizeButton.Click += new System.EventHandler(this.minimizeButton_Click);
//
// closeButton
//
+ resources.ApplyResources(this.closeButton, "closeButton");
this.closeButton.FlatAppearance.BorderSize = 0;
- this.closeButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.closeButton.Font = new System.Drawing.Font("Verdana", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.closeButton.ForeColor = System.Drawing.Color.White;
- this.closeButton.Location = new System.Drawing.Point(494, 0);
this.closeButton.Name = "closeButton";
- this.closeButton.Size = new System.Drawing.Size(54, 37);
- this.closeButton.TabIndex = 6;
- this.closeButton.Text = "X";
this.closeButton.UseVisualStyleBackColor = true;
this.closeButton.Click += new System.EventHandler(this.closeButton_Click);
//
// Form1
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 13F);
+ resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(550, 332);
this.Controls.Add(this.mainPanel);
- this.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
- this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.Name = "Form1";
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
- this.Text = "Firewall Blocker";
this.Load += new System.EventHandler(this.Form1_Load);
this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint_1);
this.mainPanel.ResumeLayout(false);
this.mainPanel.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.translationIcon)).EndInit();
this.titleBackgroundPanel.ResumeLayout(false);
this.titleBackgroundPanel.PerformLayout();
this.ResumeLayout(false);
@@ -281,7 +241,9 @@ private void InitializeComponent()
private System.Windows.Forms.Panel titleBackgroundPanel;
private System.Windows.Forms.Button minimizeButton;
private System.Windows.Forms.Button closeButton;
- private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Button githubButton;
+ private System.Windows.Forms.ComboBox langSelectBox;
+ private System.Windows.Forms.PictureBox translationIcon;
}
}
diff --git a/Form1.cs b/Form1.cs
index 915be02..5639a3b 100644
--- a/Form1.cs
+++ b/Form1.cs
@@ -1,9 +1,12 @@
using System;
+using System.Configuration;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Drawing2D;
+using System.IO;
using System.Net;
using System.Runtime.InteropServices;
+using System.Threading;
using System.Windows.Forms;
namespace FirewallBlocker
@@ -15,15 +18,37 @@ public partial class Form1 : Form
private int borderSize = 2;
private Color borderColor = Color.FromArgb(57, 62, 70);
+ private string langCode = ConfigurationManager.AppSettings["langCode"];
public Form1()
{
- InitializeComponent();
+ var configFile = File.Exists(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
+ if (configFile == true)
+ {
+ try
+ {
+ Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(langCode);
+ }
+ catch
+ {
+ MessageBox.Show("langCode inválido. Código Ex1", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ Application.Exit();
+ System.Environment.Exit(1);
+ }
- this.FormBorderStyle = FormBorderStyle.None;
- this.Padding = new Padding(borderSize);
- this.mainPanel.BackColor = borderColor;
- this.BackColor = borderColor;
+ InitializeComponent();
+
+ this.FormBorderStyle = FormBorderStyle.None;
+ this.Padding = new Padding(borderSize);
+ this.mainPanel.BackColor = borderColor;
+ this.BackColor = borderColor;
+ }
+ else
+ {
+ MessageBox.Show("Arquivo de configuração inválido. Código Ex2", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ Application.Exit();
+ System.Environment.Exit(1);
+ }
}
private void Form1_Load(object sender, EventArgs e)
@@ -58,7 +83,6 @@ private void createRuleButton_Click(object sender, EventArgs e)
String Program = AppPathTextBox.Text;
String IPs = ipListRichText.Text;
bool InOutRule = false;
- bool shouldCreate = false;
if (inoutCheckbox.Checked)
{
@@ -67,24 +91,22 @@ private void createRuleButton_Click(object sender, EventArgs e)
if (string.IsNullOrEmpty(Program) || Program.Substring(Program.Length - 4) != ".exe")
{
- MessageBox.Show("Você não selecionou um aplicativo. Inclua o executável terminando em .exe", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ MessageBox.Show(Properties.strings.notValidExe, Properties.strings.Alert, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
if (string.IsNullOrEmpty(ipListRichText.Text))
{
- DialogResult dialogResult = MessageBox.Show("Você deixou a lista de IPs em branco. O app irá block TODOS os IPs para o processo selecionado. Deseja prosseguir?", "Aviso!", MessageBoxButtons.YesNo);
+ DialogResult dialogResult = MessageBox.Show(Properties.strings.emptyIPList, Properties.strings.Alert, MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
- shouldCreate = true;
+ createRule(Program, IPs, InOutRule);
}
else if (dialogResult == DialogResult.No)
{
- shouldCreate = false;
}
}
-
- if (shouldCreate == true)
+ else
{
createRule(Program, IPs, InOutRule);
}
@@ -116,7 +138,7 @@ private void createRule(String App, String IPs, bool InOutRule)
}
else
{
- MessageBox.Show($"Um dos IPs é inválido: {line}", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ MessageBox.Show($"{Properties.strings.invalidIP} {line}", Properties.strings.Alert, MessageBoxButtons.OK, MessageBoxIcon.Information);
ipIsOk = false;
break;
}
@@ -127,7 +149,7 @@ private void createRule(String App, String IPs, bool InOutRule)
block = block.Remove(block.Length - 1);
var cmdCommand = "netsh advfirewall firewall add rule name=\"" + name + "\" ^ dir =in interface=any action = block remoteip=\"" + block + "\"" + " program=\"" + program + "\"";
System.Diagnostics.Process.Start("CMD.exe", "/c" + cmdCommand);
- MessageBox.Show("Regra criada", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ MessageBox.Show(Properties.strings.ruleCreated, Properties.strings.Alert, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
else
@@ -136,7 +158,7 @@ private void createRule(String App, String IPs, bool InOutRule)
{
var cmdCommand = "netsh advfirewall firewall add rule name=\"" + name + "\" ^ dir =in interface=any action = block program=\"" + program + "\"";
System.Diagnostics.Process.Start("CMD.exe", "/c" + cmdCommand);
- MessageBox.Show("Regra criada", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ MessageBox.Show(Properties.strings.ruleCreated, Properties.strings.Alert, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
@@ -155,7 +177,7 @@ private void createRule(String App, String IPs, bool InOutRule)
}
else
{
- MessageBox.Show($"Um dos IPs é inválido: {line}", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ MessageBox.Show($"{Properties.strings.invalidIP} {line}", Properties.strings.Alert, MessageBoxButtons.OK, MessageBoxIcon.Information);
ipIsOk = false;
break;
}
@@ -168,7 +190,7 @@ private void createRule(String App, String IPs, bool InOutRule)
var blockIn = "netsh advfirewall firewall add rule name=\"" + name + "\" ^ dir =in interface=any action = block remoteip=\"" + block + "\"" + " program=\"" + program + "\"";
System.Diagnostics.Process.Start("CMD.exe", "/c" + blockOut);
System.Diagnostics.Process.Start("CMD.exe", "/c" + blockIn);
- MessageBox.Show("Regra criada", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ MessageBox.Show(Properties.strings.ruleCreated, Properties.strings.Alert, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
else
@@ -179,7 +201,7 @@ private void createRule(String App, String IPs, bool InOutRule)
var blockIn = "netsh advfirewall firewall add rule name=\"" + name + "\" ^ dir =in interface=any action = block program=\"" + program + "\"";
System.Diagnostics.Process.Start("CMD.exe", "/c" + blockOut);
System.Diagnostics.Process.Start("CMD.exe", "/c" + blockIn);
- MessageBox.Show("Regra criada", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ MessageBox.Show(Properties.strings.ruleCreated, Properties.strings.Alert, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
@@ -208,7 +230,7 @@ private void closeButton_Click(object sender, EventArgs e)
private void appHelpButton_Click_1(object sender, EventArgs e)
{
- DialogResult dialogResult = MessageBox.Show("Ao continuar irá abrir uma aba no navegador com a página de ajuda. Deseja prosseguir?", "Aviso!", MessageBoxButtons.YesNo);
+ DialogResult dialogResult = MessageBox.Show(Properties.strings.openHelpWarning, Properties.strings.Alert, MessageBoxButtons.YesNo, MessageBoxIcon.Information);
if (dialogResult == DialogResult.Yes)
{
Process.Start("https://github.com/kurxz/FirewallBlocker/wiki/Help-Page");
@@ -386,5 +408,64 @@ private void dragArround()
ReleaseCapture();
SendMessage(this.Handle, 0x112, 0xf012, 0);
}
+
+ private void langSelectBox_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
+ switch (langSelectBox.SelectedIndex)
+ {
+ case 0:
+
+ AddUpdateAppSettings("langCode", "pt");
+ Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("pt");
+
+ applyTranslations();
+
+ break;
+
+ case 1:
+
+ AddUpdateAppSettings("langCode", "en");
+ Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en");
+
+ applyTranslations();
+
+ break;
+ }
+ }
+
+ private void applyTranslations()
+ {
+ pathTitleLabel.Text = Properties.strings.pathTitleLabel;
+ ipListLabel.Text = Properties.strings.ipListLabel;
+ selectAppButton.Text = Properties.strings.selectAppButton;
+ createRuleButton.Text = Properties.strings.createRuleButton;
+ githubButton.Text = Properties.strings.githubButton;
+ appHelpButton.Text = Properties.strings.appHelpButton;
+ inoutCheckbox.Text = Properties.strings.inoutCheckbox;
+ }
+
+ public static void AddUpdateAppSettings(string key, string value)
+ {
+ try
+ {
+ var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
+ var settings = configFile.AppSettings.Settings;
+ if (settings.Count == 0 | settings[key] == null)
+ {
+ settings.Add(key, value);
+ }
+ else
+ {
+ settings[key].Value = value;
+ }
+ configFile.Save(ConfigurationSaveMode.Modified);
+ ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
+ }
+ catch (ConfigurationErrorsException exc)
+ {
+ MessageBox.Show("Falha ao salvar Ex3", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
}
}
\ No newline at end of file
diff --git a/Form1.en.resx b/Form1.en.resx
new file mode 100644
index 0000000..06a3c74
--- /dev/null
+++ b/Form1.en.resx
@@ -0,0 +1,535 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Select
+
+
+ Create Rule
+
+
+ Help?
+
+
+
+ 104, 124
+
+
+ 63, 20
+
+
+ IP List
+
+
+ 104, 62
+
+
+ 87, 20
+
+
+ App Path
+
+
+ 165, 17
+
+
+ Create In and Out Rule?
+
+
+
+ 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
+
+
+
\ No newline at end of file
diff --git a/Form1.pt-BR.resx b/Form1.pt-BR.resx
new file mode 100644
index 0000000..7ccbb67
--- /dev/null
+++ b/Form1.pt-BR.resx
@@ -0,0 +1,482 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ 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
+
+
+
\ No newline at end of file
diff --git a/Form1.resx b/Form1.resx
index dfbebee..8331e13 100644
--- a/Form1.resx
+++ b/Form1.resx
@@ -117,10 +117,314 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 17, 17
-
+
+ 550, 332
+
+
+ titleBackgroundPanel
+
+
+
+ 13
+
+
+ mainPanel
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAA
+ TgAAAE4Bsc0fMwAAA1FJREFUaEPtl8tqFEEUhhNNjA9gDG5cuIiK0URFFwous5QQF+JC8BGiG1HEuHFr
+ FARfQo36AiK41YiiKLoR8X4BFyLe/U7VPzXTNd0z0z09mQzMBz/01H9O1emZnlNdA3369GmPfxEa7h1U
+ d0DDvYPqDmi4d1DdAQ0vP1q/a6iM4mierqEyiqN5uobKKI7m6RoqY2VBXYPomavQ8xmNyF75UOy0K7vK
+ ZVm9AQVf93UH9spa+VDsBPrjyvY8lLX8sPgxX0PgqqxMiLnhQwOHZS0/LD6EXrgyqkzLrgNvH/rrojxP
+ 0CrZ3YECjrpSqjxFa2QHGBtBjy2ghiOyuwdFWEu868qpMi87wNh5bwXuoEHZ3YVCptAvq0r8RuFR4voA
+ qvW/o3HZqeDbnDFTssuHyc/6NQJf0Ca0Eb23gRpOKy0TYhZ8aIIF2eXD5KtR/CjdR/f8ZeA2GlJaKvjD
+ 6IMFR9jYsMLKh8k3oFe2UgYv0ajCMyFmxkWnM6OwzsACu9A3t1QSe+73KKwhxC26jHQWFdYZWGAcvXVL
+ JXmHGv5xDWJG0U9LEPbY1D5O5jX9FQvBxJvRa1slA7uJbQpPBX/ORVa5iC75y8CcwsuDSbegRsVXsI40
+ obQ68JZcVJWdyB7LWpYUXg5MuBW9cVMnmUcn/WUCu4ntSg8wFvf+R7LMe+CHAuXsCUw0idJaXtiNuU67
+ CcvZoRAHn+Pef1yWeSf8UKD9PYFJ7Of95KZLck4hARvzVoIrss2Pe7/9Wcdkmz+msQoWW3xPIDmr+Lr3
+ oAp48S+xX5Z5ce+/KSvA2C1vBYrtCSTan8rOsTGZxVcgpnITz1F4meM67v2zsgKMHfJWIP+eQNJuVKj4
+ CsTaTZzRR/sc9/7UQz5ja9BHCxD59gSC7UDy1TIj6p75ZpCzVpd2Hff+PLS+JxB8yuckyF18DHPEvT8P
+ +fYEEmr/iC0/NlkwR9p7f17y7QkkWEts+5s3mCftvT8vnTsnNIKF497/A62TnQkx61F5e0JRWDTu/ddk
+ NYXYcvaEdmDRuPcflNUUYmd9SqCz54QYFox7v73gtfwYEGt7Qvzq0ZlzQhosFvf+C7Jahhw7K9RS/jkh
+ CxaLe/+krJYhJ27B5Z4T+vTpWQYG/gOSQLRJJHvl1QAAAABJRU5ErkJggg==
+
+
+
+ 2
+
+
+ 5
+
+
+ -
+
+
+ Segoe UI, 10.25pt
+
+
+ X
+
+
+ TopCenter
+
+
+ 99, 124
+
+
+ 2, 2
+
+
+
+
+
+ 282, 21
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ mainPanel
+
+
+ mainPanel
+
+
+ langSelectBox
+
+
+ Verdana, 20.25pt
+
+
+ 54, 37
+
+
+ Aplicativo
+
+
+ True
+
+
+
+ Zoom
+
+
+ 11
+
+
+ 54, 36
+
+
+ System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ minimizeButton
+
+
+ 2
+
+
+ 310, 172
+
+
+ 4
+
+
+ openFileDialog1
+
+
+ Form1
+
+
+ Português Brasil
+
+
+ Flat
+
+
+ 0
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 0, 0
+
+
+ English
+
+
+ 82, 23
+
+
+ titleBackgroundPanel
+
+
+ mainPanel
+
+
+ 121, 21
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 211, 17
+
+
+ CenterScreen
+
+
+ mainPanel
+
+
+ 10
+
+
+ mainPanel
+
+
+ ipListLabel
+
+
+ Verdana, 8pt
+
+
+ 3
+
+
+ 494, 0
+
+
+ 2
+
+
+ Verdana, 12pt
+
+
+ 9
+
+
+ 376, 78
+
+
+ Verdana, 8.25pt
+
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 8
+
+
+ 31, 28
+
+
+ Zoom
+
+
+ 0
+
+
+ 227, 32
+
+
+ Lista de IP
+
+
+ Firewall Blocker
+
+
+ Flat
+
+
+ 1
+
+
+ 12, 85
+
+
+ Criar regra de entrada e saída ?
+
+
+ 7
+
+
+ Selecionar
+
+
+ 100, 20
+
+
+ titleBackgroundPanel
+
+
+ 7, 13
+
+
+ 463, 303
+
+
+ 13
+
+
+ mainPanel
+
+
+ System.Windows.Forms.OpenFileDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Zoom
+
+
+ mainPanel
+
+
+ System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Firewall Blocker
+
+
+ System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Verdana, 15pt
+
+
+ 6
+
+
+ 6
+
+
+ True
+
+
+ 570, 36
+
+
+ True
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 166, 23
+
+
+ 380, 39
+
AAABAAEA/PYAAAEAIACMUwAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAD8AAAA9ggGAAAA8jDqAQAAAAFz
@@ -482,4 +786,193 @@
6PNQ4vCJEu0QJcAnSrRDlACfKNEOUQJ8okQ7RP8fLDeVZsjdIisAAAAASUVORK5CYII=
+
+ 7
+
+
+ translationIcon
+
+
+ 11
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 9
+
+
+ inoutCheckbox
+
+
+ Flat
+
+
+ Verdana, 12.75pt
+
+
+ mainPanel
+
+
+ 1
+
+
+ Verdana, 8.25pt, style=Bold
+
+
+ 415, 42
+
+
+ Código no Github
+
+
+ 282, 172
+
+
+ ipListRichText
+
+
+ 14
+
+
+ 5
+
+
+ 3
+
+
+ 435, 0
+
+
+ createRuleButton
+
+
+ closeButton
+
+
+ 0
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 376, 195
+
+
+ Segoe UI, 11.25pt
+
+
+ mainPanel
+
+
+ 100, 35
+
+
+ titleBackgroundPanel
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ githubButton
+
+
+ appHelpButton
+
+
+ AppPathTextBox
+
+
+ True
+
+
+ mainPanel
+
+
+ selectAppButton
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ titleLabel
+
+
+ mainPanel
+
+
+ 16
+
+
+ mainPanel
+
+
+ 99, 62
+
+
+ pathTitleLabel
+
+
+ 4
+
+
+ $this
+
+
+ 100, 35
+
+
+ System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 301, 303
+
+
+ 7
+
+
+ Criar Regra
+
+
+ 15
+
+
+ 150, 0
+
+
+ Verdana, 12.75pt
+
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 93, 20
+
+
+ Verdana, 8.25pt, style=Bold
+
+
+ 0
+
+
+ 1
+
+
+ Flat
+
+
+ Ajuda?
+
+
+ 561, 332
+
+
+ 12, 147
+
+
+ True
+
+
+ 17, 17
+
\ No newline at end of file
diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs
index d15b2ad..435b430 100644
--- a/Properties/AssemblyInfo.cs
+++ b/Properties/AssemblyInfo.cs
@@ -10,7 +10,7 @@
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("github.com/kurxz/")]
[assembly: AssemblyProduct("https://github.com/kurxz/firewallblocker")]
-[assembly: AssemblyCopyright("Copyright © 2021")]
+[assembly: AssemblyCopyright("Copyright © 2022")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@@ -32,6 +32,6 @@
// É possível especificar todos os valores ou usar como padrão os Números de Build e da Revisão
// usando o "*" como mostrado abaixo:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.1")]
-[assembly: AssemblyFileVersion("1.1")]
-[assembly: NeutralResourcesLanguage("pt-BR")]
\ No newline at end of file
+[assembly: AssemblyVersion("2.0.0.0")]
+[assembly: AssemblyFileVersion("2.0.0.0")]
+[assembly: NeutralResourcesLanguage("pt")]
\ No newline at end of file
diff --git a/Properties/strings.Designer.cs b/Properties/strings.Designer.cs
new file mode 100644
index 0000000..3ab47ab
--- /dev/null
+++ b/Properties/strings.Designer.cs
@@ -0,0 +1,180 @@
+//------------------------------------------------------------------------------
+//
+// O código foi gerado por uma ferramenta.
+// Versão de Tempo de Execução:4.0.30319.42000
+//
+// As alterações ao arquivo poderão causar comportamento incorreto e serão perdidas se
+// o código for gerado novamente.
+//
+//------------------------------------------------------------------------------
+
+namespace FirewallBlocker.Properties {
+ using System;
+
+
+ ///
+ /// Uma classe de recurso de tipo de alta segurança, para pesquisar cadeias de caracteres localizadas etc.
+ ///
+ // Essa classe foi gerada automaticamente pela classe StronglyTypedResourceBuilder
+ // através de uma ferramenta como ResGen ou Visual Studio.
+ // Para adicionar ou remover um associado, edite o arquivo .ResX e execute ResGen novamente
+ // com a opção /str, ou recrie o projeto do VS.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class strings {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal strings() {
+ }
+
+ ///
+ /// Retorna a instância de ResourceManager armazenada em cache usada por essa classe.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("FirewallBlocker.Properties.strings", typeof(strings).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Substitui a propriedade CurrentUICulture do thread atual para todas as
+ /// pesquisas de recursos que usam essa classe de recurso de tipo de alta segurança.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Consulta uma cadeia de caracteres localizada semelhante a Alerta!.
+ ///
+ internal static string Alert {
+ get {
+ return ResourceManager.GetString("Alert", resourceCulture);
+ }
+ }
+
+ ///
+ /// Consulta uma cadeia de caracteres localizada semelhante a Ajuda?.
+ ///
+ internal static string appHelpButton {
+ get {
+ return ResourceManager.GetString("appHelpButton", resourceCulture);
+ }
+ }
+
+ ///
+ /// Consulta uma cadeia de caracteres localizada semelhante a Criar Regra.
+ ///
+ internal static string createRuleButton {
+ get {
+ return ResourceManager.GetString("createRuleButton", resourceCulture);
+ }
+ }
+
+ ///
+ /// Consulta uma cadeia de caracteres localizada semelhante a Você deixou a lista de IPs em branco. O app irá block TODOS os IPs para o processo selecionado. Deseja prosseguir?.
+ ///
+ internal static string emptyIPList {
+ get {
+ return ResourceManager.GetString("emptyIPList", resourceCulture);
+ }
+ }
+
+ ///
+ /// Consulta uma cadeia de caracteres localizada semelhante a Código no Github.
+ ///
+ internal static string githubButton {
+ get {
+ return ResourceManager.GetString("githubButton", resourceCulture);
+ }
+ }
+
+ ///
+ /// Consulta uma cadeia de caracteres localizada semelhante a Criar regra de entrada e saída?.
+ ///
+ internal static string inoutCheckbox {
+ get {
+ return ResourceManager.GetString("inoutCheckbox", resourceCulture);
+ }
+ }
+
+ ///
+ /// Consulta uma cadeia de caracteres localizada semelhante a Um dos IPs é inválido.
+ ///
+ internal static string invalidIP {
+ get {
+ return ResourceManager.GetString("invalidIP", resourceCulture);
+ }
+ }
+
+ ///
+ /// Consulta uma cadeia de caracteres localizada semelhante a Lista de IP.
+ ///
+ internal static string ipListLabel {
+ get {
+ return ResourceManager.GetString("ipListLabel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Consulta uma cadeia de caracteres localizada semelhante a Você não selecionou um aplicativo. Inclua o caminho do executável terminando em .exe.
+ ///
+ internal static string notValidExe {
+ get {
+ return ResourceManager.GetString("notValidExe", resourceCulture);
+ }
+ }
+
+ ///
+ /// Consulta uma cadeia de caracteres localizada semelhante a Ao continuar irá abrir uma aba no navegador com a página de ajuda. Deseja prosseguir?.
+ ///
+ internal static string openHelpWarning {
+ get {
+ return ResourceManager.GetString("openHelpWarning", resourceCulture);
+ }
+ }
+
+ ///
+ /// Consulta uma cadeia de caracteres localizada semelhante a Aplicativo.
+ ///
+ internal static string pathTitleLabel {
+ get {
+ return ResourceManager.GetString("pathTitleLabel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Consulta uma cadeia de caracteres localizada semelhante a Regra Criada.
+ ///
+ internal static string ruleCreated {
+ get {
+ return ResourceManager.GetString("ruleCreated", resourceCulture);
+ }
+ }
+
+ ///
+ /// Consulta uma cadeia de caracteres localizada semelhante a Selecionar.
+ ///
+ internal static string selectAppButton {
+ get {
+ return ResourceManager.GetString("selectAppButton", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/Properties/strings.en.resx b/Properties/strings.en.resx
new file mode 100644
index 0000000..4ffb691
--- /dev/null
+++ b/Properties/strings.en.resx
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Alert
+
+
+ Help?
+
+
+ Create Rule
+
+
+ You left the IP list blank. The app will block ALL IPs for the selected process. Do you want to proceed?
+
+
+ Github Code
+
+
+ Create In and Out Rule?
+
+
+ Create In and Out rule?
+
+
+ One of the IPs is invalid
+
+
+ IP List
+
+
+ You have not selected an application. Include the executable path ending in .exe
+
+
+ Continuing will open a tab in the browser with the help page. Do you want to proceed?
+
+
+ App Path
+
+
+ Rule Created
+
+
+ Select
+
+
\ No newline at end of file
diff --git a/Properties/strings.resx b/Properties/strings.resx
new file mode 100644
index 0000000..a86772e
--- /dev/null
+++ b/Properties/strings.resx
@@ -0,0 +1,159 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Alerta!
+
+
+ Ajuda?
+
+
+ Criar Regra
+
+
+ Você deixou a lista de IPs em branco. O app irá block TODOS os IPs para o processo selecionado. Deseja prosseguir?
+
+
+ Código no Github
+
+
+ Criar regra de entrada e saída?
+
+
+ Um dos IPs é inválido
+
+
+ Lista de IP
+
+
+ Você não selecionou um aplicativo. Inclua o caminho do executável terminando em .exe
+
+
+ Ao continuar irá abrir uma aba no navegador com a página de ajuda. Deseja prosseguir?
+
+
+ Aplicativo
+
+
+ Regra Criada
+
+
+ Selecionar
+
+
\ No newline at end of file
diff --git a/app.manifest b/app.manifest
index 8ab7c73..80c16dc 100644
--- a/app.manifest
+++ b/app.manifest
@@ -1,76 +1,70 @@
-
+
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file