private void AddDefaultChecks()
		{
			var appPath = String.Format( "{0}{1}", Application.StartupPath, Properties.Settings.Default.DefaultChecksFolder );
			string[] files = Directory.GetFiles( appPath );
			var settingsManager = new SettingsManager();

            //System.Collections.Generic.IList 
            //IList<ScannerSetting> setf = settingsManager.GetSettings();
            //foreach( var set in setf)
            //    settingsManager.DeleteCheck(

			foreach( var file in files )
			{
                string fname = Path.GetFileName(file.Substring(Application.StartupPath.Length)).Split( '.' )[ 0 ];

                if(settingsManager.IsSettingExists(fname))
                    settingsManager.DeleteCheck( settingsManager.GetSettingByName(fname,false) );

				var defaultCheck = new ScannerSetting
					{
                        InputFile = file.Substring(Application.StartupPath.Length),
						CheckName = Path.GetFileName( file ).Split( '.' )[ 0 ],
						ResponseTypes = "200 OK"
					};
				settingsManager.SaveCheck( defaultCheck );
			}
		}
예제 #2
0
        public void EditSetting(ScannerSetting setting)
        {
            var node = this._document.Root.FirstNode;

            while (node != null)
            {
                var element = ( XElement )node;

                if ((node.NodeType.Equals(XmlNodeType.Element)) &&
                    element.Element(SettingNode.Name).Value.Equals(setting.CheckName))
                {
                    element.Element(SettingNode.File).Value              = setting.InputFile;
                    element.Element(SettingNode.ResponseTypes).Value     = setting.ResponseTypes;
                    element.Element(SettingNode.Port).Value              = setting.Port.ToString();
                    element.Element(SettingNode.WebMethod).Value         = setting.WebMethod;
                    element.Element(SettingNode.Login).Value             = setting.Login;
                    element.Element(SettingNode.Password).Value          = setting.Password;
                    element.Element(SettingNode.IbmFile).Value           = setting.IbmFile;
                    element.Element(SettingNode.IbmCheckEnabled).Value   = Convert.ToString(setting.IbmCheckEnabled);
                    element.Element(SettingNode.Cookies).Value           = setting.Cookies;
                    element.Element(SettingNode.ErrorPageTitle).Value    = setting.ErrorPageTitle;
                    element.Element(SettingNode.ErrorPageBodyText).Value = setting.ErrorPageBodyText;
                    element.Element(SettingNode.PostRequestString).Value = setting.PostRequestString;
                    element.Element(SettingNode.DirCheck).Value          = Convert.ToString(setting.DirCheck);

                    break;
                }

                node = node.NextNode;
            }

            this._document.Save(this._settingsFilePath);
        }
		public void EditSetting( ScannerSetting setting )
		{
			var node = this._document.Root.FirstNode;

			while( node != null )
			{
				var element = ( XElement )node;

				if( ( node.NodeType.Equals( XmlNodeType.Element ) ) &&
				    element.Element( SettingNode.Name ).Value.Equals( setting.CheckName ) )
				{
					element.Element( SettingNode.File ).Value = setting.InputFile;
					element.Element( SettingNode.ResponseTypes ).Value = setting.ResponseTypes;
					element.Element( SettingNode.Port ).Value = setting.Port.ToString();
					element.Element( SettingNode.WebMethod ).Value = setting.WebMethod;
					element.Element( SettingNode.Login ).Value = setting.Login;
					element.Element( SettingNode.Password ).Value = setting.Password;
					element.Element( SettingNode.IbmFile ).Value = setting.IbmFile;
					element.Element( SettingNode.IbmCheckEnabled ).Value = Convert.ToString( setting.IbmCheckEnabled );
					element.Element( SettingNode.Cookies ).Value = setting.Cookies;
					element.Element( SettingNode.ErrorPageTitle ).Value = setting.ErrorPageTitle;
					element.Element( SettingNode.ErrorPageBodyText ).Value = setting.ErrorPageBodyText;
					element.Element( SettingNode.PostRequestString ).Value = setting.PostRequestString;
					element.Element( SettingNode.DirCheck ).Value = Convert.ToString( setting.DirCheck );

					break;
				}

				node = node.NextNode;
			}

			this._document.Save( this._settingsFilePath );
		}
        private static void WriteResponseInfo(HttpWebResponse response, ScanDetails details)
        {
            if (response != null)
            {
                try
                {
                    if (ScannerSetting.GetStatusCodesList(_scannerSetting.ResponseTypes).Contains(
                            Convert.ToString(response.StatusCode)))
                    {
                        details.Response = String.Format("{0}{1}{2}", Convert.ToString(( int )response.StatusCode), ' ', response.StatusDescription);
                        details.Size     = response.ContentLength == -1 ? 0 : response.ContentLength;

                        using (var stream = response.GetResponseStream())
                        {
                            if (stream != null)
                            {
                                using (var reader = new StreamReader(stream, Encoding.Default))
                                {
                                    if (!response.ContentType.Equals("application/octet_stream"))
                                    {
                                        details.PageTitle = reader.ReadToEnd();
                                        details.PageBody  = details.PageTitle;
                                    }
                                }
                            }
                        }
                        //Critical section
                        //_mutex.WaitOne();
                        if (response.ContentType.Contains("text/html"))
                        {
                            SearchErrorContent(details);
                            details.PageTitle = SearchSpecificContent(details.PageTitle);
                        }
                        else
                        {
                            details.PageTitle = String.Empty;
                        }

                        if (!String.IsNullOrEmpty(details.PageBody))
                        {
                            details.PageBody = details.PageBody.Substring(0, 150);
                        }

                        if (ScanDetails != null)
                        {
                            ScanDetails.Add(details);
                        }
                        //_mutex.ReleaseMutex();
                    }
                }
                catch (ArgumentException)
                {
                }
            }
        }
		public void CheckResourceForFiles( ScannerSetting setting )
		{
			if( String.IsNullOrEmpty( _baseUrl ) )
			{
				return;
			}

			ScanDetails = ScanDetails ?? new List< ScanDetails >();

			_mutex = new Mutex( false );

			_scannerSetting = setting;

			var content = GetRequestContent();

			_cookieContainer = new CookieContainer();

			this.PerformRequest( content );
		}
        public void CheckResourceForFiles(ScannerSetting setting)
        {
            if (String.IsNullOrEmpty(_baseUrl))
            {
                return;
            }

            ScanDetails = ScanDetails ?? new List <ScanDetails>();

            _mutex = new Mutex(false);

            _scannerSetting = setting;

            var content = GetRequestContent();

            _cookieContainer = new CookieContainer();

            this.PerformRequest(content);
        }
예제 #7
0
        public void DeleteSetting(ScannerSetting setting)
        {
            var node = this._document.Root.FirstNode;

            while (node != null)
            {
                var element = ( XElement )node;

                if ((node.NodeType.Equals(XmlNodeType.Element)) &&
                    element.Element(SettingNode.Name).Value.Equals(setting.CheckName))
                {
                    element.Remove();
                    break;
                }

                node = node.NextNode;
            }

            this._document.Save(this._settingsFilePath);
        }
예제 #8
0
        public ScannerSetting GetSettingByName(string name)
        {
            ScannerSetting result = null;
            var            node   = this._document.Root.FirstNode;

            while (node != null)
            {
                var element = ( XElement )node;
                if ((node.NodeType.Equals(XmlNodeType.Element)) &&
                    element.Element(SettingNode.Name).Value.Equals(name))
                {
                    result = ExtractSettingsFromNode(node);
                    break;
                }

                node = node.NextNode;
            }

            return(result);
        }
		public void DeleteSetting( ScannerSetting setting )
		{
			var node = this._document.Root.FirstNode;

			while( node != null )
			{
				var element = ( XElement )node;

				if( ( node.NodeType.Equals( XmlNodeType.Element ) ) &&
				    element.Element( SettingNode.Name ).Value.Equals( setting.CheckName ) )
				{
					element.Remove();
					break;
				}

				node = node.NextNode;
			}

			this._document.Save( this._settingsFilePath );
		}
예제 #10
0
        public void AddSetting(ScannerSetting setting)
        {
            var element = new XElement(SettingNode.RootName,
                                       new XElement(SettingNode.Name, setting.CheckName),
                                       new XElement(SettingNode.File, setting.InputFile),
                                       new XElement(SettingNode.ResponseTypes, setting.ResponseTypes),
                                       new XElement(SettingNode.WebMethod, setting.WebMethod),
                                       new XElement(SettingNode.Port, setting.Port.ToString()),
                                       new XElement(SettingNode.Login, setting.Login),
                                       new XElement(SettingNode.Password, setting.Password),
                                       new XElement(SettingNode.IbmFile, setting.IbmFile),
                                       new XElement(SettingNode.IbmCheckEnabled, Convert.ToString(setting.IbmCheckEnabled)),
                                       new XElement(SettingNode.Cookies, setting.Cookies),
                                       new XElement(SettingNode.ErrorPageTitle, setting.ErrorPageTitle),
                                       new XElement(SettingNode.ErrorPageBodyText, setting.ErrorPageBodyText),
                                       new XElement(SettingNode.PostRequestString, setting.PostRequestString),
                                       new XElement(SettingNode.DirCheck, setting.DirCheck));

            this._document.Root.Add(element);
            this._document.Save(this._settingsFilePath);
        }
		public void AddSetting( ScannerSetting setting )
		{
			var element = new XElement( SettingNode.RootName,
			                            new XElement( SettingNode.Name, setting.CheckName ),
			                            new XElement( SettingNode.File, setting.InputFile ),
			                            new XElement( SettingNode.ResponseTypes, setting.ResponseTypes ),
			                            new XElement( SettingNode.WebMethod, setting.WebMethod ),
			                            new XElement( SettingNode.Port, setting.Port.ToString() ),
			                            new XElement( SettingNode.Login, setting.Login ),
			                            new XElement( SettingNode.Password, setting.Password ),
			                            new XElement( SettingNode.IbmFile, setting.IbmFile ),
			                            new XElement( SettingNode.IbmCheckEnabled, Convert.ToString( setting.IbmCheckEnabled ) ),
			                            new XElement( SettingNode.Cookies, setting.Cookies ),
			                            new XElement( SettingNode.ErrorPageTitle, setting.ErrorPageTitle ),
			                            new XElement( SettingNode.ErrorPageBodyText, setting.ErrorPageBodyText ),
			                            new XElement( SettingNode.PostRequestString, setting.PostRequestString ),
			                            new XElement( SettingNode.DirCheck, setting.DirCheck ) );

			this._document.Root.Add( element );
			this._document.Save( this._settingsFilePath );
		}
		public void CheckFrontpage( ScannerSetting setting )
		{
			_scannerSetting = setting;

			ScanDetails = ScanDetails ?? new List< ScanDetails >();

			_mutex = new Mutex( false );

			var content = GetFrontpageRequestContent( setting.InputFile );

			if( content != null )
			{
				var itemsCount = ScanDetails.Count;

				this.PerformRequest( new List< string > { content[ 0 ] } );

				if( itemsCount < ScanDetails.Count )
				{
					ScanDetails[ ScanDetails.Count - 1 ].Response += String.Format( "{0}{1}{2}", " (", content[ 1 ], ")" );
				}
			}
		}
        public void CheckFrontpage(ScannerSetting setting)
        {
            _scannerSetting = setting;

            ScanDetails = ScanDetails ?? new List <ScanDetails>();

            _mutex = new Mutex(false);

            var content = GetFrontpageRequestContent(setting.InputFile);

            if (content != null)
            {
                var itemsCount = ScanDetails.Count;

                this.PerformRequest(new List <string> {
                    content[0]
                });

                if (itemsCount < ScanDetails.Count)
                {
                    ScanDetails[ScanDetails.Count - 1].Response += String.Format("{0}{1}{2}", " (", content[1], ")");
                }
            }
        }
		private void SetValuesForEdit( ScannerSetting setting )
		{
			this.rtbEditFilePath.Text = setting.InputFile;

			if (setting.WebMethod != null)
			{
				IEnumerable<RadioButton> radios = this.tpWebMethod.Controls.OfType< RadioButton >();
                radios.Count();
                RadioButton rad = radios.FirstOrDefault(radio => radio.Tag.ToString().Equals(setting.WebMethod));
                if (rad == null)
                    rad = this.rbGet;
                rad.Checked = true;
			}

			this.tbPort.Text = setting.Port.ToString();
			this.tbIbmFile.Text = setting.IbmFile;
			this.tbWebLogin.Text = setting.Login;
			this.tbWebPassword.Text = setting.Password;
			this.chbIbmEnabled.Checked = setting.IbmCheckEnabled;
			this.tbRawPost.Text = setting.PostRequestString;
			this.cbPostUsernameKeys.DataSource = this.GetKeys();
			this.cbPostPasswordKeys.DataSource = this.GetKeys();
			this.tbCookies.Text = setting.Cookies;

			if( !String.IsNullOrEmpty( setting.ResponseTypes ) )
			{
				var responseTypes = setting.ResponseTypes.Split( ',' ).ToList();

                if ((responseTypes.Count == 0)) // useless
                    responseTypes.Add(setting.ResponseTypes);
                
                GroupBox ff = null;

				foreach( var control in this.tpResponseTypes.Controls )
                {
                    if(control is GroupBox)
                    {
                        if(((GroupBox)control).Name=="groupBox16")
                            ff = (GroupBox)control;
                    }
                }
                if(ff!=null)
                foreach( var control in ff.Controls )
				{
                   // MessageBox.Show(control.ToString());
					if( control is CheckBox )
					{
                        
						( ( CheckBox )control ).Checked = responseTypes.Contains( ( ( CheckBox )control ).Text ) ? true : false;
					}
				}
			}
		}
		public void DeleteCheck( ScannerSetting setting )
		{
			this._settingsHelper.DeleteSetting( setting );
		}
		public void SaveCheck( ScannerSetting setting )
		{
			this._settingsHelper.AddSetting( setting );
		}
		public void EditCheck( ScannerSetting setting )
		{
			this._settingsHelper.EditSetting( setting );
		}
예제 #18
0
 public void DeleteCheck(ScannerSetting setting)
 {
     this._settingsHelper.DeleteSetting(setting);
 }
예제 #19
0
 public void EditCheck(ScannerSetting setting)
 {
     this._settingsHelper.EditSetting(setting);
 }
예제 #20
0
 public void SaveCheck(ScannerSetting setting)
 {
     this._settingsHelper.AddSetting(setting);
 }
		private void btnSaveCheck_Click( object sender, EventArgs e )
		{
			if( !this.rtbEditFilePath.Text.Equals( String.Empty ) )
			{
				var setting = new ScannerSetting
					{
						InputFile = this.rtbEditFilePath.Text,
						CheckName = this.cbAvailableChecks.Text,
						DirCheck = this.chbDirScanEdit.Checked
					};

				this.GetSettingsObject( setting );
				this._settingsManager.EditCheck( setting );
			}
			else if( !String.IsNullOrEmpty( this.rtbAddFileName.Text ) &&
			         !String.IsNullOrEmpty( this.rtbAddFilePath.Text ) )
			{
				if( this._settingsManager.IsSettingExists( this.rtbAddFileName.Text ) )
				{
					MessageBox.Show( "Setting with the same name is already exists!", "Warning!", MessageBoxButtons.OK,
					                 MessageBoxIcon.Warning );
					return;
				}

				var setting = new ScannerSetting
					{
						CheckName = this.rtbAddFileName.Text,
						InputFile = this.rtbAddFilePath.Text,
						DirCheck = this.chbDirScanAdd.Checked
					};

				this.GetSettingsObject( setting );
				this._settingsManager.SaveCheck( setting );

			}
			else
			{
				MessageBox.Show( "There is nothing to save.", String.Empty, MessageBoxButtons.OK,
				                 MessageBoxIcon.Information );
				return;
			}

			MessageBox.Show( "Settings was succesfully saved!", String.Empty, MessageBoxButtons.OK,
			                 MessageBoxIcon.Information );
			this.ClearSettings();
			this.BindControls();
		}
		private void GetSettingsObject( ScannerSetting setting )
		{
			setting.ResponseTypes = this.GetResponseTypes();
			setting.Port = String.IsNullOrEmpty( this.tbPort.Text ) ? 0 : Convert.ToInt32( this.tbPort.Text );
			setting.WebMethod =
				this.tpWebMethod.Controls.OfType< RadioButton >().FirstOrDefault( radio => radio.Checked ).Tag.ToString();
			setting.Login = this.tbWebLogin.Text;
			setting.Password = this.tbWebPassword.Text;
			setting.IbmFile = this.tbIbmFile.Text;
			setting.IbmCheckEnabled = this.chbIbmEnabled.Checked;
			setting.Cookies = this.tbCookies.Text;
			setting.ErrorPageTitle = this.tbErrorPageTitle.Text;
			setting.ErrorPageBodyText = this.tbErrorPageBodyText.Text;
			setting.PostRequestString = this.GetRawPostRequestString();
		}