ruleset_v2 integration test working

This commit is contained in:
Kevin Pham
2023-12-05 15:02:18 -06:00
parent e6e8b0edff
commit 52d12dd1ac
8 changed files with 271 additions and 285 deletions

View File

@@ -5,9 +5,7 @@ import (
"io"
"os"
"ladder/pkg/ruleset"
"golang.org/x/term"
"ladder/proxychain/ruleset"
)
// HandleRulesetMerge merges a set of ruleset files, specified by the rulesetPath or RULESET env variable, into either YAML or Gzip format.
@@ -21,7 +19,7 @@ import (
//
// Returns:
// - An error if the ruleset loading or merging process fails, otherwise nil.
func HandleRulesetMerge(rulesetPath string, mergeRulesets bool, useGzip bool, output *os.File) error {
func HandleRulesetMerge(rulesetPath string, mergeRulesets bool, output *os.File) error {
if !mergeRulesets {
return nil
}
@@ -35,55 +33,15 @@ func HandleRulesetMerge(rulesetPath string, mergeRulesets bool, useGzip bool, ou
os.Exit(1)
}
rs, err := ruleset.NewRuleset(rulesetPath)
rs, err := ruleset_v2.NewRuleset(rulesetPath)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
if useGzip {
return gzipMerge(rs, output)
}
return yamlMerge(rs, output)
}
// gzipMerge takes a RuleSet and an optional output file path pointer. It compresses the RuleSet into Gzip format.
// If the output file path is provided, the compressed data is written to this file. Otherwise, it prints a warning
// and outputs the binary data to stdout
//
// Parameters:
// - rs: The ruleset.RuleSet to be compressed.
// - output: The output for the gzip data. If nil, stdout will be used.
//
// Returns:
// - An error if compression or file writing fails, otherwise nil.
func gzipMerge(rs ruleset.RuleSet, output io.Writer) error {
gzip, err := rs.GzipYaml()
if err != nil {
return err
}
if output != nil {
_, err = io.Copy(output, gzip)
if err != nil {
return err
}
}
if term.IsTerminal(int(os.Stdout.Fd())) {
println("warning: binary output can mess up your terminal. Use '--merge-rulesets-output <ruleset.gz>' or pipe it to a file.")
os.Exit(1)
}
_, err = io.Copy(os.Stdout, gzip)
if err != nil {
return err
}
return nil
}
// yamlMerge takes a RuleSet and an optional output file path pointer. It converts the RuleSet into YAML format.
// If the output file path is provided, the YAML data is written to this file. If not, the YAML data is printed to stdout.
//
@@ -93,7 +51,7 @@ func gzipMerge(rs ruleset.RuleSet, output io.Writer) error {
//
// Returns:
// - An error if YAML conversion or file writing fails, otherwise nil.
func yamlMerge(rs ruleset.RuleSet, output io.Writer) error {
func yamlMerge(rs ruleset_v2.Ruleset, output io.Writer) error {
yaml, err := rs.Yaml()
if err != nil {
return err