in Configurator/Core/Server/ServerConfigurationController.cs [2506:2588]
private void InstallEnterpriseFirewallPlugin()
{
CancellationToken.ThrowIfCancellationRequested();
ReportStatus(Resources.ServerConfigEventConfigureEnterpriseFirewallInfo);
string connectionString = GetConnectionString(MySqlServerUser.ROOT_USERNAME, Settings.RootPassword, false, "mysql");
try
{
// Read the install script from the share folder.
string firewallScript;
using (var reader = new StreamReader($"{InstallDirectory}\\share\\win_install_firewall.sql"))
{
firewallScript = reader.ReadToEnd();
}
if (string.IsNullOrEmpty(firewallScript))
{
ReportError(string.Format(Resources.ServerConfigEventConfigureEnterpriseFirewallError, Resources.InstallEnterpriseFirewallScriptNotFound));
CurrentStep.Status = ConfigurationStepStatus.Error;
return;
}
// Generate the uninstall script and execute it.
using (var connection = new MySqlConnection(connectionString))
{
var uninstallScript = ConvertToUninstallScript("mysql", firewallScript);
var script = new MySqlScript
{
Connection = connection,
Query = uninstallScript
};
connection.Open();
script.Execute();
script.Query = Resources.UninstallEnterpriseFirewall;
script.Execute();
}
// Execute the install scripts.
CancellationToken.ThrowIfCancellationRequested();
if (Settings.Plugins.IsEnabled("mysql_firewall"))
{
using (var connection = new MySqlConnection(connectionString))
{
var script = new MySqlScript
{
Connection = connection,
Query = firewallScript
};
connection.Open();
script.Execute();
var command = new MySqlCommand
{
Connection = connection,
CommandText = "sp_set_firewall_mode",
CommandType = CommandType.StoredProcedure
};
command.Parameters.AddWithValue("@arg_userhost", "root@localhost");
command.Parameters.AddWithValue("@arg_mode", "RECORDING");
command.ExecuteNonQuery();
foreach (var serverUser in Settings.NewServerUsers)
{
var cmdUser = new MySqlCommand
{
Connection = connection,
CommandText = "sp_set_firewall_mode",
CommandType = CommandType.StoredProcedure
};
cmdUser.Parameters.AddWithValue("@arg_userhost", $"{serverUser.Username}@{serverUser.Host}");
cmdUser.Parameters.AddWithValue("@arg_mode", "RECORDING");
cmdUser.ExecuteNonQuery();
}
}
ReportStatus(Resources.ServerConfigEventConfigureEnterpriseFirewallSuccess);
CurrentStep.Status = ConfigurationStepStatus.Finished;
}
}
catch (Exception e)
{
ReportError(string.Format(Resources.ServerConfigEventConfigureEnterpriseFirewallError, e));
CurrentStep.Status = ConfigurationStepStatus.Error;
}
}