Ejemplo n.º 1
0
        /// <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");
            }
        }
Ejemplo n.º 2
0
        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;
        }