private void CallWrapper() { var dte = (DTE)GetService(typeof(DTE)); var project = dte.ActiveDocument.ProjectItem.ContainingProject; //project.GetType().GetProperty("Globals").GetValue(project).GetType().GetProperty("Parent").GetValue(project.GetType().GetProperty("Globals").GetValue(project)).GetType().GetProperty("DatabaseSchemaProvider").GetValue(project.GetType().GetProperty("Globals").GetValue(project).GetType().GetProperty("Parent").GetValue(project.GetType().GetProperty("Globals").GetValue(project))).GetType().GetProperty("Platform").GetValue(project.GetType().GetProperty("Globals").GetValue(project).GetType().GetProperty("Parent").GetValue(project.GetType().GetProperty("Globals").GetValue(project)).GetType().GetProperty("DatabaseSchemaProvider").GetValue(project.GetType().GetProperty("Globals").GetValue(project).GetType().GetProperty("Parent").GetValue(project.GetType().GetProperty("Globals").GetValue(project)))) var projectType = project.GetType(); var globalsProperty = projectType.GetProperty("Globals"); if (globalsProperty == null) { return; } var globals = globalsProperty.GetValue(project); var globalsType = globals.GetType(); var parentProperty = globalsType.GetProperty("Parent"); if (parentProperty == null) { return; } var parent = parentProperty.GetValue(globals); var schemaProviderProperty = parent.GetType().GetProperty("DatabaseSchemaProvider"); if (schemaProviderProperty == null) { return; } var databaseSchemaProvider = schemaProviderProperty.GetValue(parent); var platformProperty = databaseSchemaProvider.GetType().GetProperty("Platform"); if (platformProperty == null) { return; } var version = platformProperty.GetValue(databaseSchemaProvider); VersionDetector.SetVersion(version as string); }
public DatabaseUpdater(bool jcs, bool exploitdb, bool exploitalert, bool packetstorm, int threads, int timeout, System.Windows.Forms.RichTextBox rtx) { Jcs = jcs; Exploitdb = exploitdb; Exploitalert = exploitalert; Packetstorm = packetstorm; Threads = threads; Timeout = timeout; TempPath = Path.GetTempPath(); ErrorCode = 0x0; // unkown error Rtx = rtx; ComponentsList = new List <string>(); ExploitalertList = new List <string>(); ExploitdbList = new List <string>(); PacketstormList = new List <string>(); versionDetector = new VersionDetector(); }
private async void Form_Load(object sender, EventArgs e) { PopulateDropbox(); comboVersions.SelectedIndex = 0; EnableControls(false); var versionDetector = new VersionDetector(_profile, this); var kernelHash = await versionDetector.Identify(_kernelPath); if (kernelHash != null) { comboVersions.SelectedValue = kernelHash.Version; versionLabel.Text = versionLabel.Text.Replace(":", " (automatically detected):"); } EnableControls(true); }
private List <CreateTableStatement> GetCreateTableStatements() { using (var script = new StringReader(_script)) { var parser = VersionDetector.ParserFactory(false); IList <ParseError> errors; var fragment = parser.Parse(script, out errors); if (fragment != null) { var visitor = new CreateTableVisitor(); fragment.Accept(visitor); return(visitor.Creates); } } return(null); }
public void Parse() { using (var reader = GetScriptReader()) { var parser = VersionDetector.ParserFactory(false); IList <ParseError> errors; var sqlFragment = parser.Parse(reader, out errors); if (errors.Count > 0) { foreach (var error in errors) { Log.WriteInfo(_path, error.Line, "Script Parser: Error in {0} error: {1}", _path, error.Message); } } sqlFragment.Accept(_visitor); } }
private string GetComments(string oldScriptBlock) { var comments = new StringBuilder(); var parser = VersionDetector.ParserFactory(false); IList <ParseError> errors; var tokens = parser.GetTokenStream(new StringReader(oldScriptBlock), out errors); foreach (var token in tokens) { switch (token.TokenType) { case TSqlTokenType.MultilineComment: case TSqlTokenType.SingleLineComment: comments.AppendLine(token.Text); break; } } return(comments.ToString()); }
public virtual string GetPlanForQuery(string query) { IList <ParseError> errors; var fragment = VersionDetector.ParserFactory(false).Parse(new StringReader(query), out errors); var visitor = new ProcedureVisitor(); fragment.Accept(visitor); foreach (var proc in visitor.Procedures) { var procName = proc.ProcedureReference.Name; return(GetPlanForProc(procName)); } foreach (var func in visitor.Functions) { var procName = func.Name; return(GetPlanForFunc(procName, func.Parameters)); } return(""); }
private string ModifyScript(CreateTableStatement statement, string originalScript, string modifiedScript) { var oldScriptBlock = originalScript.Substring(statement.StartOffset, statement.FragmentLength); var comments = GetComments(oldScriptBlock); var generator = VersionDetector.ScriptGeneratorFactory(SavedSettings.Get().GeneratorOptions); string newScriptBlock; generator.GenerateScript(statement, out newScriptBlock); if (string.IsNullOrEmpty(comments)) { modifiedScript = modifiedScript.Replace(oldScriptBlock, newScriptBlock); } else { modifiedScript = modifiedScript.Replace(oldScriptBlock, newScriptBlock + "\r\n--These comments were saved after refactoring this table...\r\n" + comments); } return(modifiedScript); }
public static string GetScript(this MergeStatement source) { var script = ""; var generator = VersionDetector.ScriptGeneratorFactory(new SqlScriptGeneratorOptions { IncludeSemicolons = true, AlignClauseBodies = true, AlignColumnDefinitionFields = true, AsKeywordOnOwnLine = true, MultilineInsertSourcesList = true, MultilineInsertTargetsList = true, MultilineSelectElementsList = true, NewLineBeforeOpenParenthesisInMultilineList = true }); generator.GenerateScript(source, out script); if (!script.EndsWith(";")) { script = script + ";"; } return(script); }
protected IList <TSqlParserToken> GetTokens(TSqlFragment fragment) { var generator = VersionDetector.ScriptGeneratorFactory(SavedSettings.Get().GeneratorOptions); return(generator.GenerateTokens(fragment)); }
public void CreateSchemas() { IList <ParseError> errors; var fragment = VersionDetector.ParserFactory(false).Parse(new StringReader(_scripts), out errors); if (fragment == null) { return; } var visitor = new ProcedureVisitor(); fragment.Accept(visitor); foreach (var procedure in visitor.Procedures) { var browser = new SolutionBrowserForm(procedure.ProcedureReference.Name.BaseIdentifier.Value.Quote()); browser.ShowDialog(); var destination = browser.DestinationItem; if (destination == null) { continue; } var parentProjectItem = destination; var name = browser.GetObjectName(); var script = GetScript(name); for (var i = 1; i <= parentProjectItem.ProjectItems.Count; i++) { var item = parentProjectItem.ProjectItems.Item(i); if (item.Name.UnQuote() == name.UnQuote()) { CreateNewFile(item, name, script); return; } } var folder = parentProjectItem.ProjectItems.AddFolder(name.UnQuote()); CreateNewFile(folder, name, script); } foreach (var procedure in visitor.Functions) { var browser = new SolutionBrowserForm(procedure .Name.BaseIdentifier.Value.Quote()); browser.ShowDialog(); var destination = browser.DestinationItem; if (destination == null) { continue; } var parentProjectItem = destination; var name = browser.GetObjectName(); var script = GetScript(name); for (var i = 1; i <= parentProjectItem.ProjectItems.Count; i++) { var item = parentProjectItem.ProjectItems.Item(i); if (item.Name.UnQuote() == name.UnQuote()) { CreateNewFile(item, name, script); return; } } var folder = parentProjectItem.ProjectItems.AddFolder(name.UnQuote()); CreateNewFile(folder, name, script); } }
public void Go() { IList <ParseError> errors; var fragment = VersionDetector.ParserFactory(false).Parse(new StringReader(_scripts), out errors); if (fragment == null) { return; } var visitor = new ProcedureVisitor(); fragment.Accept(visitor); using (var procedureRepository = new ProcedureRepository(DacpacPath.Get(_sourceProject))) using (var functionRepository = new FunctionRepository(DacpacPath.Get(_sourceProject))) { foreach (var procedure in visitor.Procedures) { var browser = new SolutionBrowserForm("test " + procedure.ProcedureReference.Name.BaseIdentifier.Value.UnQuote() + " does something"); browser.ShowDialog(); var destination = browser.DestinationItem; if (destination == null) { continue; } if (String.IsNullOrEmpty(DacpacPath.Get(_sourceProject)) && !File.Exists(DacpacPath.Get(_sourceProject))) { MessageBox.Show("Cannot find dacpac for project"); return; } var parentProjectItem = destination; var name = browser.GetObjectName(); var proc = procedureRepository.FirstOrDefault(p => p.Name.EqualsName(procedure.ProcedureReference.Name)); if (proc == null) { MessageBox.Show(string.Format("Cannot find stored procedure {0} in project compiled dacpac", procedure.ProcedureReference.Name)); return; } var testBuilder = new ProcedureBuilder(procedure.ProcedureReference.Name.BaseIdentifier.Value.UnQuote(), name, proc); var script = testBuilder.GetScript(); CreateNewFile(parentProjectItem, name, script); } foreach (var procedure in visitor.Functions) { var browser = new SolutionBrowserForm("test " + procedure.Name.BaseIdentifier.Value.UnQuote() + " does something"); browser.ShowDialog(); var destination = browser.DestinationItem; if (destination == null) { continue; } if (String.IsNullOrEmpty(DacpacPath.Get(_sourceProject)) && !File.Exists(DacpacPath.Get(_sourceProject))) { MessageBox.Show("Cannot find dacpac for project"); return; } var parentProjectItem = destination; var name = browser.GetObjectName(); var proc = functionRepository.FirstOrDefault(p => p.Name.EqualsName(procedure.Name)); if (proc == null) { MessageBox.Show(string.Format("Cannot find stored procedure {0} in project compiled dacpac", procedure.Name)); return; } var testBuilder = new ProcedureBuilder(procedure.Name.BaseIdentifier.Value.UnQuote(), name, proc); var script = testBuilder.GetScript(); CreateNewFile(parentProjectItem, name, script); } } }