improve codegen for JSON serialization of response/request modifiers
This commit is contained in:
@@ -5,6 +5,8 @@ import (
|
|||||||
"go/ast"
|
"go/ast"
|
||||||
"go/parser"
|
"go/parser"
|
||||||
"go/token"
|
"go/token"
|
||||||
|
"io"
|
||||||
|
|
||||||
//"io/fs"
|
//"io/fs"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
@@ -12,30 +14,27 @@ import (
|
|||||||
//"strings"
|
//"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
func modToFactoryMap(fn *ast.FuncDecl) (modMap string) {
|
func responseModToFactoryMap(fn *ast.FuncDecl) (modMap string) {
|
||||||
paramCount := len(fn.Type.Params.List)
|
paramCount := len(fn.Type.Params.List)
|
||||||
name := fn.Name.Name
|
name := fn.Name.Name
|
||||||
var x string
|
var x string
|
||||||
switch paramCount {
|
switch paramCount {
|
||||||
case 0:
|
case 0:
|
||||||
x = fmt.Sprintf(" resModMap[\"%s\"] = func(_ ...string) proxychain.ResponseModification {\n return rx.%s()\n }\n", name, name)
|
x = fmt.Sprintf(" rsmModMap[\"%s\"] = func(_ ...string) proxychain.ResponseModification {\n return tx.%s()\n }\n", name, name)
|
||||||
default:
|
default:
|
||||||
p := []string{}
|
p := []string{}
|
||||||
for i := 0; i < paramCount; i++ {
|
for i := 0; i < paramCount; i++ {
|
||||||
p = append(p, fmt.Sprintf("params[%d]", i))
|
p = append(p, fmt.Sprintf("params[%d]", i))
|
||||||
}
|
}
|
||||||
params := strings.Join(p, ", ")
|
params := strings.Join(p, ", ")
|
||||||
x = fmt.Sprintf(" resModMap[\"%s\"] = func(params, ...string) proxychain.ResponseModification {\n return rx.%s(%s)\n }\n", name, name, params)
|
x = fmt.Sprintf(" rsmModMap[\"%s\"] = func(params ...string) proxychain.ResponseModification {\n return tx.%s(%s)\n }\n", name, name, params)
|
||||||
}
|
}
|
||||||
return x
|
return x
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func responseModCodeGen(dir string) (code string, err error) {
|
||||||
fset := token.NewFileSet()
|
fset := token.NewFileSet()
|
||||||
|
|
||||||
// Directory containing your Go files
|
|
||||||
dir := "../requestmodifiers/"
|
|
||||||
|
|
||||||
files, err := os.ReadDir(dir)
|
files, err := os.ReadDir(dir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
@@ -50,37 +49,143 @@ func main() {
|
|||||||
// Parse each Go file
|
// Parse each Go file
|
||||||
node, err := parser.ParseFile(fset, filepath.Join(dir, file.Name()), nil, parser.ParseComments)
|
node, err := parser.ParseFile(fset, filepath.Join(dir, file.Name()), nil, parser.ParseComments)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
ast.Inspect(node, func(n ast.Node) bool {
|
ast.Inspect(node, func(n ast.Node) bool {
|
||||||
fn, ok := n.(*ast.FuncDecl)
|
fn, ok := n.(*ast.FuncDecl)
|
||||||
if ok && fn.Recv == nil && fn.Name.IsExported() {
|
if ok && fn.Recv == nil && fn.Name.IsExported() {
|
||||||
factoryMaps = append(factoryMaps, modToFactoryMap(fn))
|
factoryMaps = append(factoryMaps, responseModToFactoryMap(fn))
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
code := fmt.Sprintf(`
|
code = fmt.Sprintf(`
|
||||||
package ruleset_v2
|
package ruleset_v2
|
||||||
|
// DO NOT EDIT THIS FILE. It is automatically generated by ladder/proxychain/codegen/codegen.go
|
||||||
|
// The purpose of this is serialization of rulesets from JSON or YAML into functional options suitable
|
||||||
|
// for use in proxychains.
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"ladder/proxychain"
|
"ladder/proxychain"
|
||||||
rx "ladder/proxychain/responsemodifiers"
|
tx "ladder/proxychain/responsemodifiers"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ResponseModifierFactory func(params ...string) proxychain.ResponseModification
|
type ResponseModifierFactory func(params ...string) proxychain.ResponseModification
|
||||||
|
|
||||||
var resModMap map[string]ResponseModifierFactory
|
var rsmModMap map[string]ResponseModifierFactory
|
||||||
|
|
||||||
// TODO: create codegen using AST parsing of exported methods in ladder/proxychain/responsemodifiers/*.go
|
|
||||||
func init() {
|
func init() {
|
||||||
resModMap = make(map[string]ResponseModifierFactory)
|
rsmModMap = make(map[string]ResponseModifierFactory)
|
||||||
|
|
||||||
%s
|
%s
|
||||||
}`, strings.Join(factoryMaps, "\n"))
|
}`, strings.Join(factoryMaps, "\n"))
|
||||||
fmt.Println(code)
|
//fmt.Println(code)
|
||||||
|
return code, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func requestModToFactoryMap(fn *ast.FuncDecl) (modMap string) {
|
||||||
|
paramCount := len(fn.Type.Params.List)
|
||||||
|
name := fn.Name.Name
|
||||||
|
var x string
|
||||||
|
switch paramCount {
|
||||||
|
case 0:
|
||||||
|
x = fmt.Sprintf(" rqmModMap[\"%s\"] = func(_ ...string) proxychain.RequestModification {\n return rx.%s()\n }\n", name, name)
|
||||||
|
default:
|
||||||
|
p := []string{}
|
||||||
|
for i := 0; i < paramCount; i++ {
|
||||||
|
p = append(p, fmt.Sprintf("params[%d]", i))
|
||||||
|
}
|
||||||
|
params := strings.Join(p, ", ")
|
||||||
|
x = fmt.Sprintf(" rqmModMap[\"%s\"] = func(params ...string) proxychain.RequestModification {\n return rx.%s(%s)\n }\n", name, name, params)
|
||||||
|
}
|
||||||
|
return x
|
||||||
|
}
|
||||||
|
|
||||||
|
func requestModCodeGen(dir string) (code string, err error) {
|
||||||
|
fset := token.NewFileSet()
|
||||||
|
|
||||||
|
files, err := os.ReadDir(dir)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
factoryMaps := []string{}
|
||||||
|
for _, file := range files {
|
||||||
|
if filepath.Ext(file.Name()) != ".go" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parse each Go file
|
||||||
|
node, err := parser.ParseFile(fset, filepath.Join(dir, file.Name()), nil, parser.ParseComments)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
ast.Inspect(node, func(n ast.Node) bool {
|
||||||
|
fn, ok := n.(*ast.FuncDecl)
|
||||||
|
if ok && fn.Recv == nil && fn.Name.IsExported() {
|
||||||
|
factoryMaps = append(factoryMaps, requestModToFactoryMap(fn))
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
code = fmt.Sprintf(`
|
||||||
|
package ruleset_v2
|
||||||
|
// DO NOT EDIT THIS FILE. It is automatically generated by ladder/proxychain/codegen/codegen.go
|
||||||
|
// The purpose of this is serialization of rulesets from JSON or YAML into functional options suitable
|
||||||
|
// for use in proxychains.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"ladder/proxychain"
|
||||||
|
rx "ladder/proxychain/requestmodifiers"
|
||||||
|
)
|
||||||
|
|
||||||
|
type RequestModifierFactory func(params ...string) proxychain.RequestModification
|
||||||
|
|
||||||
|
var rqmModMap map[string]RequestModifierFactory
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
rqmModMap = make(map[string]RequestModifierFactory)
|
||||||
|
|
||||||
|
%s
|
||||||
|
}`, strings.Join(factoryMaps, "\n"))
|
||||||
|
//fmt.Println(code)
|
||||||
|
return code, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
rqmCode, err := requestModCodeGen("../requestmodifiers/")
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
//fmt.Println(rqmCode)
|
||||||
|
|
||||||
|
fq, err := os.Create("../ruleset/rule_reqmod_types.gen.go")
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
_, err = io.WriteString(fq, rqmCode)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
rsmCode, err := responseModCodeGen("../responsemodifiers/")
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
//fmt.Println(rsmCode)
|
||||||
|
|
||||||
|
fs, err := os.Create("../ruleset/rule_resmod_types.gen.go")
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
_, err = io.WriteString(fs, rsmCode)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ type CustomDialer struct {
|
|||||||
*net.Dialer
|
*net.Dialer
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewCustomDialer(timeout, keepAlive time.Duration) *CustomDialer {
|
func newCustomDialer(timeout, keepAlive time.Duration) *CustomDialer {
|
||||||
return &CustomDialer{
|
return &CustomDialer{
|
||||||
Dialer: &net.Dialer{
|
Dialer: &net.Dialer{
|
||||||
Timeout: timeout,
|
Timeout: timeout,
|
||||||
|
|||||||
@@ -34,11 +34,24 @@ func (rule *Rule) UnmarshalJSON(data []byte) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Rule::UnmarshalJSON invalid function call syntax => '%s'", err)
|
return fmt.Errorf("Rule::UnmarshalJSON invalid function call syntax => '%s'", err)
|
||||||
}
|
}
|
||||||
f, exists := resModMap[name]
|
f, exists := rsmModMap[name]
|
||||||
|
if !exists {
|
||||||
|
return fmt.Errorf("Rule::UnmarshalJSON => responseModifer '%s' does not exist, please check spelling", err)
|
||||||
|
}
|
||||||
|
rule.ResponseModifications = append(rule.ResponseModifications, f(params...))
|
||||||
|
}
|
||||||
|
|
||||||
|
// convert responseModification function call string into actual functional option
|
||||||
|
for _, rqmModStr := range aux.RequestModifications {
|
||||||
|
name, params, err := parseFuncCall(rqmModStr)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("Rule::UnmarshalJSON invalid function call syntax => '%s'", err)
|
||||||
|
}
|
||||||
|
f, exists := rqmModMap[name]
|
||||||
if !exists {
|
if !exists {
|
||||||
return fmt.Errorf("Rule::UnmarshalJSON => requestModifier '%s' does not exist, please check spelling", err)
|
return fmt.Errorf("Rule::UnmarshalJSON => requestModifier '%s' does not exist, please check spelling", err)
|
||||||
}
|
}
|
||||||
rule.ResponseModifications = append(rule.ResponseModifications, f(params...))
|
rule.RequestModifications = append(rule.RequestModifications, f(params...))
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -1,183 +1,182 @@
|
|||||||
package ruleset
|
|
||||||
|
package ruleset_v2
|
||||||
|
// DO NOT EDIT THIS FILE. It is automatically generated by ladder/proxychain/codegen/codegen.go
|
||||||
|
// The purpose of this is serialization of rulesets from JSON or YAML into functional options suitable
|
||||||
|
// for use in proxychains.
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"ladder/proxychain"
|
"ladder/proxychain"
|
||||||
rx "ladder/proxychain/responsemodifiers"
|
rx "ladder/proxychain/requestmodifiers"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ResponseModifierFactory func(params ...string) proxychain.ResponseModification
|
type RequestModifierFactory func(params ...string) proxychain.RequestModification
|
||||||
|
|
||||||
var resModMap map[string]ResponseModifierFactory
|
var rqmModMap map[string]RequestModifierFactory
|
||||||
|
|
||||||
// TODO: create codegen using AST parsing of exported methods in ladder/proxychain/responsemodifiers/*.go
|
|
||||||
func init() {
|
func init() {
|
||||||
resModMap = make(map[string]ResponseModifierFactory)
|
rqmModMap = make(map[string]RequestModifierFactory)
|
||||||
|
|
||||||
resModMap["ForwardRequestHeaders"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["ForwardRequestHeaders"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.ForwardRequestHeaders()
|
return rx.ForwardRequestHeaders()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["MasqueradeAsGoogleBot"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["MasqueradeAsGoogleBot"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.MasqueradeAsGoogleBot()
|
return rx.MasqueradeAsGoogleBot()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["MasqueradeAsBingBot"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["MasqueradeAsBingBot"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.MasqueradeAsBingBot()
|
return rx.MasqueradeAsBingBot()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["MasqueradeAsWaybackMachineBot"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["MasqueradeAsWaybackMachineBot"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.MasqueradeAsWaybackMachineBot()
|
return rx.MasqueradeAsWaybackMachineBot()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["MasqueradeAsFacebookBot"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["MasqueradeAsFacebookBot"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.MasqueradeAsFacebookBot()
|
return rx.MasqueradeAsFacebookBot()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["MasqueradeAsYandexBot"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["MasqueradeAsYandexBot"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.MasqueradeAsYandexBot()
|
return rx.MasqueradeAsYandexBot()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["MasqueradeAsBaiduBot"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["MasqueradeAsBaiduBot"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.MasqueradeAsBaiduBot()
|
return rx.MasqueradeAsBaiduBot()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["MasqueradeAsDuckDuckBot"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["MasqueradeAsDuckDuckBot"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.MasqueradeAsDuckDuckBot()
|
return rx.MasqueradeAsDuckDuckBot()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["MasqueradeAsYahooBot"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["MasqueradeAsYahooBot"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.MasqueradeAsYahooBot()
|
return rx.MasqueradeAsYahooBot()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["ModifyDomainWithRegex"] = func(params, ...string) proxychain.ResponseModification {
|
rqmModMap["ModifyDomainWithRegex"] = func(params ...string) proxychain.RequestModification {
|
||||||
return rx.ModifyDomainWithRegex(params[0], params[1])
|
return rx.ModifyDomainWithRegex(params[0], params[1])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SetOutgoingCookie"] = func(params, ...string) proxychain.ResponseModification {
|
rqmModMap["SetOutgoingCookie"] = func(params ...string) proxychain.RequestModification {
|
||||||
return rx.SetOutgoingCookie(params[0], params[1])
|
return rx.SetOutgoingCookie(params[0], params[1])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SetOutgoingCookies"] = func(params, ...string) proxychain.ResponseModification {
|
rqmModMap["SetOutgoingCookies"] = func(params ...string) proxychain.RequestModification {
|
||||||
return rx.SetOutgoingCookies(params[0])
|
return rx.SetOutgoingCookies(params[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["DeleteOutgoingCookie"] = func(params, ...string) proxychain.ResponseModification {
|
rqmModMap["DeleteOutgoingCookie"] = func(params ...string) proxychain.RequestModification {
|
||||||
return rx.DeleteOutgoingCookie(params[0])
|
return rx.DeleteOutgoingCookie(params[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["DeleteOutgoingCookies"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["DeleteOutgoingCookies"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.DeleteOutgoingCookies()
|
return rx.DeleteOutgoingCookies()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["DeleteOutgoingCookiesExcept"] = func(params, ...string) proxychain.ResponseModification {
|
rqmModMap["DeleteOutgoingCookiesExcept"] = func(params ...string) proxychain.RequestModification {
|
||||||
return rx.DeleteOutgoingCookiesExcept(params[0])
|
return rx.DeleteOutgoingCookiesExcept(params[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["ModifyPathWithRegex"] = func(params, ...string) proxychain.ResponseModification {
|
rqmModMap["ModifyPathWithRegex"] = func(params ...string) proxychain.RequestModification {
|
||||||
return rx.ModifyPathWithRegex(params[0], params[1])
|
return rx.ModifyPathWithRegex(params[0], params[1])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["ModifyQueryParams"] = func(params, ...string) proxychain.ResponseModification {
|
rqmModMap["ModifyQueryParams"] = func(params ...string) proxychain.RequestModification {
|
||||||
return rx.ModifyQueryParams(params[0], params[1])
|
return rx.ModifyQueryParams(params[0], params[1])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SetRequestHeader"] = func(params, ...string) proxychain.ResponseModification {
|
rqmModMap["SetRequestHeader"] = func(params ...string) proxychain.RequestModification {
|
||||||
return rx.SetRequestHeader(params[0], params[1])
|
return rx.SetRequestHeader(params[0], params[1])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["DeleteRequestHeader"] = func(params, ...string) proxychain.ResponseModification {
|
rqmModMap["DeleteRequestHeader"] = func(params ...string) proxychain.RequestModification {
|
||||||
return rx.DeleteRequestHeader(params[0])
|
return rx.DeleteRequestHeader(params[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["RequestArchiveIs"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["RequestArchiveIs"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.RequestArchiveIs()
|
return rx.RequestArchiveIs()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["RequestGoogleCache"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["RequestGoogleCache"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.RequestGoogleCache()
|
return rx.RequestGoogleCache()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["RequestWaybackMachine"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["RequestWaybackMachine"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.RequestWaybackMachine()
|
return rx.RequestWaybackMachine()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["NewCustomDialer"] = func(params, ...string) proxychain.ResponseModification {
|
rqmModMap["ResolveWithGoogleDoH"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.NewCustomDialer(params[0])
|
|
||||||
}
|
|
||||||
|
|
||||||
resModMap["ResolveWithGoogleDoH"] = func(_ ...string) proxychain.ResponseModification {
|
|
||||||
return rx.ResolveWithGoogleDoH()
|
return rx.ResolveWithGoogleDoH()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SpoofOrigin"] = func(params, ...string) proxychain.ResponseModification {
|
rqmModMap["SpoofOrigin"] = func(params ...string) proxychain.RequestModification {
|
||||||
return rx.SpoofOrigin(params[0])
|
return rx.SpoofOrigin(params[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["HideOrigin"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["HideOrigin"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.HideOrigin()
|
return rx.HideOrigin()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SpoofReferrer"] = func(params, ...string) proxychain.ResponseModification {
|
rqmModMap["SpoofReferrer"] = func(params ...string) proxychain.RequestModification {
|
||||||
return rx.SpoofReferrer(params[0])
|
return rx.SpoofReferrer(params[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["HideReferrer"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["HideReferrer"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.HideReferrer()
|
return rx.HideReferrer()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromBaiduSearch"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["SpoofReferrerFromBaiduSearch"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.SpoofReferrerFromBaiduSearch()
|
return rx.SpoofReferrerFromBaiduSearch()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromBingSearch"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["SpoofReferrerFromBingSearch"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.SpoofReferrerFromBingSearch()
|
return rx.SpoofReferrerFromBingSearch()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromGoogleSearch"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["SpoofReferrerFromGoogleSearch"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.SpoofReferrerFromGoogleSearch()
|
return rx.SpoofReferrerFromGoogleSearch()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromLinkedInPost"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["SpoofReferrerFromLinkedInPost"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.SpoofReferrerFromLinkedInPost()
|
return rx.SpoofReferrerFromLinkedInPost()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromNaverSearch"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["SpoofReferrerFromNaverSearch"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.SpoofReferrerFromNaverSearch()
|
return rx.SpoofReferrerFromNaverSearch()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromPinterestPost"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["SpoofReferrerFromPinterestPost"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.SpoofReferrerFromPinterestPost()
|
return rx.SpoofReferrerFromPinterestPost()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromQQPost"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["SpoofReferrerFromQQPost"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.SpoofReferrerFromQQPost()
|
return rx.SpoofReferrerFromQQPost()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromRedditPost"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["SpoofReferrerFromRedditPost"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.SpoofReferrerFromRedditPost()
|
return rx.SpoofReferrerFromRedditPost()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromTumblrPost"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["SpoofReferrerFromTumblrPost"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.SpoofReferrerFromTumblrPost()
|
return rx.SpoofReferrerFromTumblrPost()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromTwitterPost"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["SpoofReferrerFromTwitterPost"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.SpoofReferrerFromTwitterPost()
|
return rx.SpoofReferrerFromTwitterPost()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromVkontaktePost"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["SpoofReferrerFromVkontaktePost"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.SpoofReferrerFromVkontaktePost()
|
return rx.SpoofReferrerFromVkontaktePost()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromWeiboPost"] = func(_ ...string) proxychain.ResponseModification {
|
rqmModMap["SpoofReferrerFromWeiboPost"] = func(_ ...string) proxychain.RequestModification {
|
||||||
return rx.SpoofReferrerFromWeiboPost()
|
return rx.SpoofReferrerFromWeiboPost()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SpoofUserAgent"] = func(params, ...string) proxychain.ResponseModification {
|
rqmModMap["SpoofUserAgent"] = func(params ...string) proxychain.RequestModification {
|
||||||
return rx.SpoofUserAgent(params[0])
|
return rx.SpoofUserAgent(params[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SpoofXForwardedFor"] = func(params, ...string) proxychain.ResponseModification {
|
rqmModMap["SpoofXForwardedFor"] = func(params ...string) proxychain.RequestModification {
|
||||||
return rx.SpoofXForwardedFor(params[0])
|
return rx.SpoofXForwardedFor(params[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,184 +1,107 @@
|
|||||||
|
|
||||||
package ruleset_v2
|
package ruleset_v2
|
||||||
|
// DO NOT EDIT THIS FILE. It is automatically generated by ladder/proxychain/codegen/codegen.go
|
||||||
|
// The purpose of this is serialization of rulesets from JSON or YAML into functional options suitable
|
||||||
|
// for use in proxychains.
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"ladder/proxychain"
|
"ladder/proxychain"
|
||||||
rx "ladder/proxychain/responsemodifiers"
|
tx "ladder/proxychain/responsemodifiers"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ResponseModifierFactory func(params ...string) proxychain.ResponseModification
|
type ResponseModifierFactory func(params ...string) proxychain.ResponseModification
|
||||||
|
|
||||||
var resModMap map[string]ResponseModifierFactory
|
var rsmModMap map[string]ResponseModifierFactory
|
||||||
|
|
||||||
// TODO: create codegen using AST parsing of exported methods in ladder/proxychain/responsemodifiers/*.go
|
|
||||||
func init() {
|
func init() {
|
||||||
resModMap = make(map[string]ResponseModifierFactory)
|
rsmModMap = make(map[string]ResponseModifierFactory)
|
||||||
|
|
||||||
resModMap["ForwardRequestHeaders"] = func(_ ...string) proxychain.ResponseModification {
|
rsmModMap["APIContent"] = func(_ ...string) proxychain.ResponseModification {
|
||||||
return rx.ForwardRequestHeaders()
|
return tx.APIContent()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["MasqueradeAsGoogleBot"] = func(_ ...string) proxychain.ResponseModification {
|
rsmModMap["TestCreateAPIErrReader"] = func(params ...string) proxychain.ResponseModification {
|
||||||
return rx.MasqueradeAsGoogleBot()
|
return tx.TestCreateAPIErrReader(params[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["MasqueradeAsBingBot"] = func(_ ...string) proxychain.ResponseModification {
|
rsmModMap["TestCreateAPIErrReader2"] = func(params ...string) proxychain.ResponseModification {
|
||||||
return rx.MasqueradeAsBingBot()
|
return tx.TestCreateAPIErrReader2(params[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["MasqueradeAsWaybackMachineBot"] = func(_ ...string) proxychain.ResponseModification {
|
rsmModMap["BlockElementRemoval"] = func(params ...string) proxychain.ResponseModification {
|
||||||
return rx.MasqueradeAsWaybackMachineBot()
|
return tx.BlockElementRemoval(params[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["MasqueradeAsFacebookBot"] = func(_ ...string) proxychain.ResponseModification {
|
rsmModMap["BypassCORS"] = func(_ ...string) proxychain.ResponseModification {
|
||||||
return rx.MasqueradeAsFacebookBot()
|
return tx.BypassCORS()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["MasqueradeAsYandexBot"] = func(_ ...string) proxychain.ResponseModification {
|
rsmModMap["BypassContentSecurityPolicy"] = func(_ ...string) proxychain.ResponseModification {
|
||||||
return rx.MasqueradeAsYandexBot()
|
return tx.BypassContentSecurityPolicy()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["MasqueradeAsBaiduBot"] = func(_ ...string) proxychain.ResponseModification {
|
rsmModMap["SetContentSecurityPolicy"] = func(params ...string) proxychain.ResponseModification {
|
||||||
return rx.MasqueradeAsBaiduBot()
|
return tx.SetContentSecurityPolicy(params[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["MasqueradeAsDuckDuckBot"] = func(_ ...string) proxychain.ResponseModification {
|
rsmModMap["ForwardResponseHeaders"] = func(_ ...string) proxychain.ResponseModification {
|
||||||
return rx.MasqueradeAsDuckDuckBot()
|
return tx.ForwardResponseHeaders()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["MasqueradeAsYahooBot"] = func(_ ...string) proxychain.ResponseModification {
|
rsmModMap["GenerateReadableOutline"] = func(_ ...string) proxychain.ResponseModification {
|
||||||
return rx.MasqueradeAsYahooBot()
|
return tx.GenerateReadableOutline()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["ModifyDomainWithRegex"] = func(params, ...string) proxychain.ResponseModification {
|
rsmModMap["InjectScriptBeforeDOMContentLoaded"] = func(params ...string) proxychain.ResponseModification {
|
||||||
return rx.ModifyDomainWithRegex(params[0], params[1])
|
return tx.InjectScriptBeforeDOMContentLoaded(params[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SetOutgoingCookie"] = func(params, ...string) proxychain.ResponseModification {
|
rsmModMap["InjectScriptAfterDOMContentLoaded"] = func(params ...string) proxychain.ResponseModification {
|
||||||
return rx.SetOutgoingCookie(params[0], params[1])
|
return tx.InjectScriptAfterDOMContentLoaded(params[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SetOutgoingCookies"] = func(params, ...string) proxychain.ResponseModification {
|
rsmModMap["InjectScriptAfterDOMIdle"] = func(params ...string) proxychain.ResponseModification {
|
||||||
return rx.SetOutgoingCookies(params[0])
|
return tx.InjectScriptAfterDOMIdle(params[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["DeleteOutgoingCookie"] = func(params, ...string) proxychain.ResponseModification {
|
rsmModMap["DeleteIncomingCookies"] = func(params ...string) proxychain.ResponseModification {
|
||||||
return rx.DeleteOutgoingCookie(params[0])
|
return tx.DeleteIncomingCookies(params[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["DeleteOutgoingCookies"] = func(_ ...string) proxychain.ResponseModification {
|
rsmModMap["DeleteIncomingCookiesExcept"] = func(params ...string) proxychain.ResponseModification {
|
||||||
return rx.DeleteOutgoingCookies()
|
return tx.DeleteIncomingCookiesExcept(params[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["DeleteOutgoingCookiesExcept"] = func(params, ...string) proxychain.ResponseModification {
|
rsmModMap["SetIncomingCookies"] = func(params ...string) proxychain.ResponseModification {
|
||||||
return rx.DeleteOutgoingCookiesExcept(params[0])
|
return tx.SetIncomingCookies(params[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["ModifyPathWithRegex"] = func(params, ...string) proxychain.ResponseModification {
|
rsmModMap["SetIncomingCookie"] = func(params ...string) proxychain.ResponseModification {
|
||||||
return rx.ModifyPathWithRegex(params[0], params[1])
|
return tx.SetIncomingCookie(params[0], params[1])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["ModifyQueryParams"] = func(params, ...string) proxychain.ResponseModification {
|
rsmModMap["SetResponseHeader"] = func(params ...string) proxychain.ResponseModification {
|
||||||
return rx.ModifyQueryParams(params[0], params[1])
|
return tx.SetResponseHeader(params[0], params[1])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["SetRequestHeader"] = func(params, ...string) proxychain.ResponseModification {
|
rsmModMap["DeleteResponseHeader"] = func(params ...string) proxychain.ResponseModification {
|
||||||
return rx.SetRequestHeader(params[0], params[1])
|
return tx.DeleteResponseHeader(params[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["DeleteRequestHeader"] = func(params, ...string) proxychain.ResponseModification {
|
rsmModMap["PatchDynamicResourceURLs"] = func(_ ...string) proxychain.ResponseModification {
|
||||||
return rx.DeleteRequestHeader(params[0])
|
return tx.PatchDynamicResourceURLs()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["RequestArchiveIs"] = func(_ ...string) proxychain.ResponseModification {
|
rsmModMap["PatchGoogleAnalytics"] = func(_ ...string) proxychain.ResponseModification {
|
||||||
return rx.RequestArchiveIs()
|
return tx.PatchGoogleAnalytics()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["RequestGoogleCache"] = func(_ ...string) proxychain.ResponseModification {
|
rsmModMap["PatchTrackerScripts"] = func(_ ...string) proxychain.ResponseModification {
|
||||||
return rx.RequestGoogleCache()
|
return tx.PatchTrackerScripts()
|
||||||
}
|
}
|
||||||
|
|
||||||
resModMap["RequestWaybackMachine"] = func(_ ...string) proxychain.ResponseModification {
|
rsmModMap["RewriteHTMLResourceURLs"] = func(_ ...string) proxychain.ResponseModification {
|
||||||
return rx.RequestWaybackMachine()
|
return tx.RewriteHTMLResourceURLs()
|
||||||
}
|
|
||||||
|
|
||||||
resModMap["NewCustomDialer"] = func(params, ...string) proxychain.ResponseModification {
|
|
||||||
return rx.NewCustomDialer(params[0])
|
|
||||||
}
|
|
||||||
|
|
||||||
resModMap["ResolveWithGoogleDoH"] = func(_ ...string) proxychain.ResponseModification {
|
|
||||||
return rx.ResolveWithGoogleDoH()
|
|
||||||
}
|
|
||||||
|
|
||||||
resModMap["SpoofOrigin"] = func(params, ...string) proxychain.ResponseModification {
|
|
||||||
return rx.SpoofOrigin(params[0])
|
|
||||||
}
|
|
||||||
|
|
||||||
resModMap["HideOrigin"] = func(_ ...string) proxychain.ResponseModification {
|
|
||||||
return rx.HideOrigin()
|
|
||||||
}
|
|
||||||
|
|
||||||
resModMap["SpoofReferrer"] = func(params, ...string) proxychain.ResponseModification {
|
|
||||||
return rx.SpoofReferrer(params[0])
|
|
||||||
}
|
|
||||||
|
|
||||||
resModMap["HideReferrer"] = func(_ ...string) proxychain.ResponseModification {
|
|
||||||
return rx.HideReferrer()
|
|
||||||
}
|
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromBaiduSearch"] = func(_ ...string) proxychain.ResponseModification {
|
|
||||||
return rx.SpoofReferrerFromBaiduSearch()
|
|
||||||
}
|
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromBingSearch"] = func(_ ...string) proxychain.ResponseModification {
|
|
||||||
return rx.SpoofReferrerFromBingSearch()
|
|
||||||
}
|
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromGoogleSearch"] = func(_ ...string) proxychain.ResponseModification {
|
|
||||||
return rx.SpoofReferrerFromGoogleSearch()
|
|
||||||
}
|
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromLinkedInPost"] = func(_ ...string) proxychain.ResponseModification {
|
|
||||||
return rx.SpoofReferrerFromLinkedInPost()
|
|
||||||
}
|
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromNaverSearch"] = func(_ ...string) proxychain.ResponseModification {
|
|
||||||
return rx.SpoofReferrerFromNaverSearch()
|
|
||||||
}
|
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromPinterestPost"] = func(_ ...string) proxychain.ResponseModification {
|
|
||||||
return rx.SpoofReferrerFromPinterestPost()
|
|
||||||
}
|
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromQQPost"] = func(_ ...string) proxychain.ResponseModification {
|
|
||||||
return rx.SpoofReferrerFromQQPost()
|
|
||||||
}
|
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromRedditPost"] = func(_ ...string) proxychain.ResponseModification {
|
|
||||||
return rx.SpoofReferrerFromRedditPost()
|
|
||||||
}
|
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromTumblrPost"] = func(_ ...string) proxychain.ResponseModification {
|
|
||||||
return rx.SpoofReferrerFromTumblrPost()
|
|
||||||
}
|
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromTwitterPost"] = func(_ ...string) proxychain.ResponseModification {
|
|
||||||
return rx.SpoofReferrerFromTwitterPost()
|
|
||||||
}
|
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromVkontaktePost"] = func(_ ...string) proxychain.ResponseModification {
|
|
||||||
return rx.SpoofReferrerFromVkontaktePost()
|
|
||||||
}
|
|
||||||
|
|
||||||
resModMap["SpoofReferrerFromWeiboPost"] = func(_ ...string) proxychain.ResponseModification {
|
|
||||||
return rx.SpoofReferrerFromWeiboPost()
|
|
||||||
}
|
|
||||||
|
|
||||||
resModMap["SpoofUserAgent"] = func(params, ...string) proxychain.ResponseModification {
|
|
||||||
return rx.SpoofUserAgent(params[0])
|
|
||||||
}
|
|
||||||
|
|
||||||
resModMap["SpoofXForwardedFor"] = func(params, ...string) proxychain.ResponseModification {
|
|
||||||
return rx.SpoofXForwardedFor(params[0])
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user