コード例 #1
0
		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);
        }
コード例 #3
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 );
		}
コード例 #4
0
        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)
                {
                }
            }
        }
コード例 #5
0
		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 );
		}
コード例 #6
0
        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);
        }
コード例 #9
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 );
		}
コード例 #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);
        }
コード例 #11
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 );
		}
コード例 #12
0
		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 ], ")" );
				}
			}
		}
コード例 #13
0
        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], ")");
                }
            }
        }
コード例 #14
0
		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;
					}
				}
			}
		}
コード例 #15
0
		public void DeleteCheck( ScannerSetting setting )
		{
			this._settingsHelper.DeleteSetting( setting );
		}
コード例 #16
0
		public void SaveCheck( ScannerSetting setting )
		{
			this._settingsHelper.AddSetting( setting );
		}
コード例 #17
0
		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);
 }
コード例 #21
0
		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();
		}
コード例 #22
0
		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();
		}