Files
linker/linker.libs/FireWallHelper.cs
2024-09-13 09:40:55 +08:00

53 lines
2.1 KiB
C#

using System;
using System.IO;
namespace linker.libs
{
public static class FireWallHelper
{
public static void Write(string fileName)
{
if (OperatingSystem.IsWindows())
{
Windows(fileName);
}
else if (OperatingSystem.IsLinux())
{
Linux(fileName);
}
}
private static void Linux(string fileName)
{
fileName = Path.GetFileNameWithoutExtension(fileName);
CommandHelper.Linux(string.Empty, new string[] {
$"firewall-cmd --permanent --new-service={fileName}",
$"firewall-cmd --permanent --service={fileName} --set-short=\"My Application {fileName}\"",
$"firewall-cmd --permanent --service={fileName} --set-description=\"Allow all ports for my application {fileName}\"",
$"firewall-cmd --permanent --service={fileName} --add-port=0-65535/tcp",
$"firewall-cmd --permanent --service={fileName} --add-port=0-65535/udp",
$"firewall-cmd --permanent --service={fileName} --add-port=0-65535/icmp",
$"firewall-cmd --permanent --add-service={fileName}",
$"firewall-cmd --reload",
});
}
private static void Windows(string fileName)
{
try
{
string name = Path.GetFileNameWithoutExtension(fileName);
CommandHelper.Windows(string.Empty, new string[] {
$"netsh advfirewall firewall delete rule name=\"{name}\"",
$"netsh advfirewall firewall add rule name=\"{name}\" dir=in action=allow program=\"{fileName}\" protocol=tcp enable=yes",
$"netsh advfirewall firewall add rule name=\"{name}\" dir=in action=allow program=\"{fileName}\" protocol=udp enable=yes",
$"netsh advfirewall firewall add rule name=\"{name}\" dir=in action=allow program=\"{fileName}\" protocol=icmpv4 enable=yes",
});
}
catch (Exception)
{
}
}
}
}