/// <summary> /// /// </summary> /// <param name="plugin"></param> /// <param name="requestRedirectdConfig"></param> public RequestRedirect(IPlugin plugin, RequestRedirectConfig requestRedirectdConfig) { this.plugin = plugin; this.requestRedirectConfig = requestRedirectdConfig; // Verifying plugin parameters if (plugin == null) { throw new Exception("Plugin configuration is invalid"); } if (plugin.Config == null) { throw new Exception("Plugin configuration is invalid"); } if (plugin.Config.PluginBaseDir == null) { throw new Exception("Plugin.Config.ApplicationBaseDir is invalid"); } }
public Plugin_HttpRequestRedirect(PluginProperties pluginProperties) { this.InitializeComponent(); // Textbox OnFocus/OnFocusLost custom implementations. this.tb_RequestedUrlRegex.GotFocus += this.TextBoxGotFocus; this.tb_RequestedUrlRegex.LostFocus += this.TextBoxLostFocus; this.tb_RequestedUrlRegex.Text = this.watermarkHttpRegex; this.tb_RequestedUrlRegex.ForeColor = System.Drawing.Color.LightGray; this.dgv_RequestRedirectURLs.AutoGenerateColumns = false; DataGridViewTextBoxColumn columnRequestedHost = new DataGridViewTextBoxColumn(); columnRequestedHost.DataPropertyName = "RequestedHostRegex"; columnRequestedHost.Name = "RequestedHostRegex"; columnRequestedHost.HeaderText = "Requested host"; columnRequestedHost.ReadOnly = true; columnRequestedHost.Width = 200; this.dgv_RequestRedirectURLs.Columns.Add(columnRequestedHost); DataGridViewTextBoxColumn columnRequestedPath = new DataGridViewTextBoxColumn(); columnRequestedPath.DataPropertyName = "RequestedPathRegex"; columnRequestedPath.Name = "RequestedPathRegex"; columnRequestedPath.HeaderText = "Requested path"; columnRequestedPath.ReadOnly = true; columnRequestedPath.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; this.dgv_RequestRedirectURLs.Columns.Add(columnRequestedPath); DataGridViewTextBoxColumn columnReplacementResource = new DataGridViewTextBoxColumn(); columnReplacementResource.DataPropertyName = "ReplacementResource"; columnReplacementResource.Name = "ReplacementResource"; columnReplacementResource.HeaderText = "Replacement resource"; columnReplacementResource.ReadOnly = true; columnReplacementResource.Width = 350; this.dgv_RequestRedirectURLs.Columns.Add(columnReplacementResource); DataGridViewTextBoxColumn columnRedirectType = new DataGridViewTextBoxColumn(); columnRedirectType.DataPropertyName = "RedirectType"; columnRedirectType.Name = "RedirectType"; columnRedirectType.HeaderText = "Redirect type"; columnRedirectType.ReadOnly = true; columnRedirectType.Width = 200; this.dgv_RequestRedirectURLs.Columns.Add(columnRedirectType); this.requestRedirectRecords = new BindingList <RequestRedirectRecord>(); this.dgv_RequestRedirectURLs.DataSource = this.requestRedirectRecords; // Verify passed parameter(s) if (pluginProperties == null) { throw new Exception("Parameter PluginParameters is null"); } if (pluginProperties.HostApplication == null) { throw new Exception("Parameter HostApplication is null"); } if (pluginProperties.ApplicationBaseDir == null) { throw new Exception("Parameter ApplicationBaseDir is null"); } if (pluginProperties.PluginBaseDir == null) { throw new Exception("Parameter PluginBaseDir is null"); } // Plugin configuration this.pluginProperties = pluginProperties; this.pluginProperties.PluginName = "HTTP request redirect"; this.pluginProperties.PluginType = "Intrusive"; this.pluginProperties.AttackServiceDependency = "HttpsReverseProxy"; this.pluginProperties.PluginDescription = "Redirect an HTTP request to new URL"; this.pluginProperties.Ports = new Dictionary <int, IpProtocols>(); // Set inject file config file path this.requestRedirectConfigFilePath = Path.Combine(this.pluginProperties.HostApplication.HostWorkingDirectory, @"attackservices\HttpReverseProxy\plugins\requestredirect\plugin.config"); this.requestRedirectConfig = new RequestRedirectConfig() { RequestRedirectConfigFilePath = this.requestRedirectConfigFilePath, IsDebuggingOn = this.Config.HostApplication.IsDebuggingOn, BasisDirectory = this.Config.PluginBaseDir }; // Instantiate infrastructureLayer layer this.infrastructureLayer = new RequestRedirect.Infrastructure.RequestRedirect(this, this.requestRedirectConfig); // Populate redirect type combobox this.cb_RedirectType.Items.Add("301/Moved Permanently"); this.cb_RedirectType.Items.Add("302/Found"); this.cb_RedirectType.Items.Add("307/Temporary Redirect"); this.cb_RedirectType.Items.Add("308/Permanent Redirect"); this.cb_RedirectType.SelectedIndex = 1; }