improve codegen for JSON serialization of response/request modifiers
This commit is contained in:
@@ -5,6 +5,8 @@ import (
|
||||
"go/ast"
|
||||
"go/parser"
|
||||
"go/token"
|
||||
"io"
|
||||
|
||||
//"io/fs"
|
||||
"os"
|
||||
"path/filepath"
|
||||
@@ -12,30 +14,27 @@ import (
|
||||
//"strings"
|
||||
)
|
||||
|
||||
func modToFactoryMap(fn *ast.FuncDecl) (modMap string) {
|
||||
func responseModToFactoryMap(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(" 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:
|
||||
p := []string{}
|
||||
for i := 0; i < paramCount; i++ {
|
||||
p = append(p, fmt.Sprintf("params[%d]", i))
|
||||
}
|
||||
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
|
||||
}
|
||||
|
||||
func main() {
|
||||
func responseModCodeGen(dir string) (code string, err error) {
|
||||
fset := token.NewFileSet()
|
||||
|
||||
// Directory containing your Go files
|
||||
dir := "../requestmodifiers/"
|
||||
|
||||
files, err := os.ReadDir(dir)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
@@ -50,37 +49,143 @@ func main() {
|
||||
// Parse each Go file
|
||||
node, err := parser.ParseFile(fset, filepath.Join(dir, file.Name()), nil, parser.ParseComments)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
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, modToFactoryMap(fn))
|
||||
factoryMaps = append(factoryMaps, responseModToFactoryMap(fn))
|
||||
}
|
||||
return true
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
code := fmt.Sprintf(`
|
||||
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/responsemodifiers"
|
||||
tx "ladder/proxychain/responsemodifiers"
|
||||
)
|
||||
|
||||
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() {
|
||||
resModMap = make(map[string]ResponseModifierFactory)
|
||||
rsmModMap = make(map[string]ResponseModifierFactory)
|
||||
|
||||
%s
|
||||
}`, 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
|
||||
}
|
||||
|
||||
func NewCustomDialer(timeout, keepAlive time.Duration) *CustomDialer {
|
||||
func newCustomDialer(timeout, keepAlive time.Duration) *CustomDialer {
|
||||
return &CustomDialer{
|
||||
Dialer: &net.Dialer{
|
||||
Timeout: timeout,
|
||||
|
||||
@@ -34,11 +34,24 @@ func (rule *Rule) UnmarshalJSON(data []byte) error {
|
||||
if err != nil {
|
||||
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 {
|
||||
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
|
||||
|
||||
@@ -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 (
|
||||
"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() {
|
||||
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()
|
||||
}
|
||||
|
||||
resModMap["MasqueradeAsGoogleBot"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["MasqueradeAsGoogleBot"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.MasqueradeAsGoogleBot()
|
||||
}
|
||||
|
||||
resModMap["MasqueradeAsBingBot"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["MasqueradeAsBingBot"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.MasqueradeAsBingBot()
|
||||
}
|
||||
|
||||
resModMap["MasqueradeAsWaybackMachineBot"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["MasqueradeAsWaybackMachineBot"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.MasqueradeAsWaybackMachineBot()
|
||||
}
|
||||
|
||||
resModMap["MasqueradeAsFacebookBot"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["MasqueradeAsFacebookBot"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.MasqueradeAsFacebookBot()
|
||||
}
|
||||
|
||||
resModMap["MasqueradeAsYandexBot"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["MasqueradeAsYandexBot"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.MasqueradeAsYandexBot()
|
||||
}
|
||||
|
||||
resModMap["MasqueradeAsBaiduBot"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["MasqueradeAsBaiduBot"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.MasqueradeAsBaiduBot()
|
||||
}
|
||||
|
||||
resModMap["MasqueradeAsDuckDuckBot"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["MasqueradeAsDuckDuckBot"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.MasqueradeAsDuckDuckBot()
|
||||
}
|
||||
|
||||
resModMap["MasqueradeAsYahooBot"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["MasqueradeAsYahooBot"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.MasqueradeAsYahooBot()
|
||||
}
|
||||
|
||||
resModMap["ModifyDomainWithRegex"] = func(params, ...string) proxychain.ResponseModification {
|
||||
rqmModMap["ModifyDomainWithRegex"] = func(params ...string) proxychain.RequestModification {
|
||||
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])
|
||||
}
|
||||
|
||||
resModMap["SetOutgoingCookies"] = func(params, ...string) proxychain.ResponseModification {
|
||||
rqmModMap["SetOutgoingCookies"] = func(params ...string) proxychain.RequestModification {
|
||||
return rx.SetOutgoingCookies(params[0])
|
||||
}
|
||||
|
||||
resModMap["DeleteOutgoingCookie"] = func(params, ...string) proxychain.ResponseModification {
|
||||
rqmModMap["DeleteOutgoingCookie"] = func(params ...string) proxychain.RequestModification {
|
||||
return rx.DeleteOutgoingCookie(params[0])
|
||||
}
|
||||
|
||||
resModMap["DeleteOutgoingCookies"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["DeleteOutgoingCookies"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.DeleteOutgoingCookies()
|
||||
}
|
||||
|
||||
resModMap["DeleteOutgoingCookiesExcept"] = func(params, ...string) proxychain.ResponseModification {
|
||||
rqmModMap["DeleteOutgoingCookiesExcept"] = func(params ...string) proxychain.RequestModification {
|
||||
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])
|
||||
}
|
||||
|
||||
resModMap["ModifyQueryParams"] = func(params, ...string) proxychain.ResponseModification {
|
||||
rqmModMap["ModifyQueryParams"] = func(params ...string) proxychain.RequestModification {
|
||||
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])
|
||||
}
|
||||
|
||||
resModMap["DeleteRequestHeader"] = func(params, ...string) proxychain.ResponseModification {
|
||||
rqmModMap["DeleteRequestHeader"] = func(params ...string) proxychain.RequestModification {
|
||||
return rx.DeleteRequestHeader(params[0])
|
||||
}
|
||||
|
||||
resModMap["RequestArchiveIs"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["RequestArchiveIs"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.RequestArchiveIs()
|
||||
}
|
||||
|
||||
resModMap["RequestGoogleCache"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["RequestGoogleCache"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.RequestGoogleCache()
|
||||
}
|
||||
|
||||
resModMap["RequestWaybackMachine"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["RequestWaybackMachine"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.RequestWaybackMachine()
|
||||
}
|
||||
|
||||
resModMap["NewCustomDialer"] = func(params, ...string) proxychain.ResponseModification {
|
||||
return rx.NewCustomDialer(params[0])
|
||||
}
|
||||
|
||||
resModMap["ResolveWithGoogleDoH"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["ResolveWithGoogleDoH"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.ResolveWithGoogleDoH()
|
||||
}
|
||||
|
||||
resModMap["SpoofOrigin"] = func(params, ...string) proxychain.ResponseModification {
|
||||
rqmModMap["SpoofOrigin"] = func(params ...string) proxychain.RequestModification {
|
||||
return rx.SpoofOrigin(params[0])
|
||||
}
|
||||
|
||||
resModMap["HideOrigin"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["HideOrigin"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.HideOrigin()
|
||||
}
|
||||
|
||||
resModMap["SpoofReferrer"] = func(params, ...string) proxychain.ResponseModification {
|
||||
rqmModMap["SpoofReferrer"] = func(params ...string) proxychain.RequestModification {
|
||||
return rx.SpoofReferrer(params[0])
|
||||
}
|
||||
|
||||
resModMap["HideReferrer"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["HideReferrer"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.HideReferrer()
|
||||
}
|
||||
|
||||
resModMap["SpoofReferrerFromBaiduSearch"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["SpoofReferrerFromBaiduSearch"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.SpoofReferrerFromBaiduSearch()
|
||||
}
|
||||
|
||||
resModMap["SpoofReferrerFromBingSearch"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["SpoofReferrerFromBingSearch"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.SpoofReferrerFromBingSearch()
|
||||
}
|
||||
|
||||
resModMap["SpoofReferrerFromGoogleSearch"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["SpoofReferrerFromGoogleSearch"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.SpoofReferrerFromGoogleSearch()
|
||||
}
|
||||
|
||||
resModMap["SpoofReferrerFromLinkedInPost"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["SpoofReferrerFromLinkedInPost"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.SpoofReferrerFromLinkedInPost()
|
||||
}
|
||||
|
||||
resModMap["SpoofReferrerFromNaverSearch"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["SpoofReferrerFromNaverSearch"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.SpoofReferrerFromNaverSearch()
|
||||
}
|
||||
|
||||
resModMap["SpoofReferrerFromPinterestPost"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["SpoofReferrerFromPinterestPost"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.SpoofReferrerFromPinterestPost()
|
||||
}
|
||||
|
||||
resModMap["SpoofReferrerFromQQPost"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["SpoofReferrerFromQQPost"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.SpoofReferrerFromQQPost()
|
||||
}
|
||||
|
||||
resModMap["SpoofReferrerFromRedditPost"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["SpoofReferrerFromRedditPost"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.SpoofReferrerFromRedditPost()
|
||||
}
|
||||
|
||||
resModMap["SpoofReferrerFromTumblrPost"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["SpoofReferrerFromTumblrPost"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.SpoofReferrerFromTumblrPost()
|
||||
}
|
||||
|
||||
resModMap["SpoofReferrerFromTwitterPost"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["SpoofReferrerFromTwitterPost"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.SpoofReferrerFromTwitterPost()
|
||||
}
|
||||
|
||||
resModMap["SpoofReferrerFromVkontaktePost"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["SpoofReferrerFromVkontaktePost"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.SpoofReferrerFromVkontaktePost()
|
||||
}
|
||||
|
||||
resModMap["SpoofReferrerFromWeiboPost"] = func(_ ...string) proxychain.ResponseModification {
|
||||
rqmModMap["SpoofReferrerFromWeiboPost"] = func(_ ...string) proxychain.RequestModification {
|
||||
return rx.SpoofReferrerFromWeiboPost()
|
||||
}
|
||||
|
||||
resModMap["SpoofUserAgent"] = func(params, ...string) proxychain.ResponseModification {
|
||||
rqmModMap["SpoofUserAgent"] = func(params ...string) proxychain.RequestModification {
|
||||
return rx.SpoofUserAgent(params[0])
|
||||
}
|
||||
|
||||
resModMap["SpoofXForwardedFor"] = func(params, ...string) proxychain.ResponseModification {
|
||||
rqmModMap["SpoofXForwardedFor"] = func(params ...string) proxychain.RequestModification {
|
||||
return rx.SpoofXForwardedFor(params[0])
|
||||
}
|
||||
|
||||
|
||||
@@ -1,184 +1,107 @@
|
||||
|
||||
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/responsemodifiers"
|
||||
tx "ladder/proxychain/responsemodifiers"
|
||||
)
|
||||
|
||||
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() {
|
||||
resModMap = make(map[string]ResponseModifierFactory)
|
||||
rsmModMap = make(map[string]ResponseModifierFactory)
|
||||
|
||||
resModMap["ForwardRequestHeaders"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return rx.ForwardRequestHeaders()
|
||||
rsmModMap["APIContent"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return tx.APIContent()
|
||||
}
|
||||
|
||||
resModMap["MasqueradeAsGoogleBot"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return rx.MasqueradeAsGoogleBot()
|
||||
rsmModMap["TestCreateAPIErrReader"] = func(params ...string) proxychain.ResponseModification {
|
||||
return tx.TestCreateAPIErrReader(params[0])
|
||||
}
|
||||
|
||||
resModMap["MasqueradeAsBingBot"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return rx.MasqueradeAsBingBot()
|
||||
rsmModMap["TestCreateAPIErrReader2"] = func(params ...string) proxychain.ResponseModification {
|
||||
return tx.TestCreateAPIErrReader2(params[0])
|
||||
}
|
||||
|
||||
resModMap["MasqueradeAsWaybackMachineBot"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return rx.MasqueradeAsWaybackMachineBot()
|
||||
rsmModMap["BlockElementRemoval"] = func(params ...string) proxychain.ResponseModification {
|
||||
return tx.BlockElementRemoval(params[0])
|
||||
}
|
||||
|
||||
resModMap["MasqueradeAsFacebookBot"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return rx.MasqueradeAsFacebookBot()
|
||||
rsmModMap["BypassCORS"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return tx.BypassCORS()
|
||||
}
|
||||
|
||||
resModMap["MasqueradeAsYandexBot"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return rx.MasqueradeAsYandexBot()
|
||||
rsmModMap["BypassContentSecurityPolicy"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return tx.BypassContentSecurityPolicy()
|
||||
}
|
||||
|
||||
resModMap["MasqueradeAsBaiduBot"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return rx.MasqueradeAsBaiduBot()
|
||||
rsmModMap["SetContentSecurityPolicy"] = func(params ...string) proxychain.ResponseModification {
|
||||
return tx.SetContentSecurityPolicy(params[0])
|
||||
}
|
||||
|
||||
resModMap["MasqueradeAsDuckDuckBot"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return rx.MasqueradeAsDuckDuckBot()
|
||||
rsmModMap["ForwardResponseHeaders"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return tx.ForwardResponseHeaders()
|
||||
}
|
||||
|
||||
resModMap["MasqueradeAsYahooBot"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return rx.MasqueradeAsYahooBot()
|
||||
rsmModMap["GenerateReadableOutline"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return tx.GenerateReadableOutline()
|
||||
}
|
||||
|
||||
resModMap["ModifyDomainWithRegex"] = func(params, ...string) proxychain.ResponseModification {
|
||||
return rx.ModifyDomainWithRegex(params[0], params[1])
|
||||
rsmModMap["InjectScriptBeforeDOMContentLoaded"] = func(params ...string) proxychain.ResponseModification {
|
||||
return tx.InjectScriptBeforeDOMContentLoaded(params[0])
|
||||
}
|
||||
|
||||
resModMap["SetOutgoingCookie"] = func(params, ...string) proxychain.ResponseModification {
|
||||
return rx.SetOutgoingCookie(params[0], params[1])
|
||||
rsmModMap["InjectScriptAfterDOMContentLoaded"] = func(params ...string) proxychain.ResponseModification {
|
||||
return tx.InjectScriptAfterDOMContentLoaded(params[0])
|
||||
}
|
||||
|
||||
resModMap["SetOutgoingCookies"] = func(params, ...string) proxychain.ResponseModification {
|
||||
return rx.SetOutgoingCookies(params[0])
|
||||
rsmModMap["InjectScriptAfterDOMIdle"] = func(params ...string) proxychain.ResponseModification {
|
||||
return tx.InjectScriptAfterDOMIdle(params[0])
|
||||
}
|
||||
|
||||
resModMap["DeleteOutgoingCookie"] = func(params, ...string) proxychain.ResponseModification {
|
||||
return rx.DeleteOutgoingCookie(params[0])
|
||||
rsmModMap["DeleteIncomingCookies"] = func(params ...string) proxychain.ResponseModification {
|
||||
return tx.DeleteIncomingCookies(params[0])
|
||||
}
|
||||
|
||||
resModMap["DeleteOutgoingCookies"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return rx.DeleteOutgoingCookies()
|
||||
rsmModMap["DeleteIncomingCookiesExcept"] = func(params ...string) proxychain.ResponseModification {
|
||||
return tx.DeleteIncomingCookiesExcept(params[0])
|
||||
}
|
||||
|
||||
resModMap["DeleteOutgoingCookiesExcept"] = func(params, ...string) proxychain.ResponseModification {
|
||||
return rx.DeleteOutgoingCookiesExcept(params[0])
|
||||
rsmModMap["SetIncomingCookies"] = func(params ...string) proxychain.ResponseModification {
|
||||
return tx.SetIncomingCookies(params[0])
|
||||
}
|
||||
|
||||
resModMap["ModifyPathWithRegex"] = func(params, ...string) proxychain.ResponseModification {
|
||||
return rx.ModifyPathWithRegex(params[0], params[1])
|
||||
rsmModMap["SetIncomingCookie"] = func(params ...string) proxychain.ResponseModification {
|
||||
return tx.SetIncomingCookie(params[0], params[1])
|
||||
}
|
||||
|
||||
resModMap["ModifyQueryParams"] = func(params, ...string) proxychain.ResponseModification {
|
||||
return rx.ModifyQueryParams(params[0], params[1])
|
||||
rsmModMap["SetResponseHeader"] = func(params ...string) proxychain.ResponseModification {
|
||||
return tx.SetResponseHeader(params[0], params[1])
|
||||
}
|
||||
|
||||
resModMap["SetRequestHeader"] = func(params, ...string) proxychain.ResponseModification {
|
||||
return rx.SetRequestHeader(params[0], params[1])
|
||||
rsmModMap["DeleteResponseHeader"] = func(params ...string) proxychain.ResponseModification {
|
||||
return tx.DeleteResponseHeader(params[0])
|
||||
}
|
||||
|
||||
resModMap["DeleteRequestHeader"] = func(params, ...string) proxychain.ResponseModification {
|
||||
return rx.DeleteRequestHeader(params[0])
|
||||
rsmModMap["PatchDynamicResourceURLs"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return tx.PatchDynamicResourceURLs()
|
||||
}
|
||||
|
||||
resModMap["RequestArchiveIs"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return rx.RequestArchiveIs()
|
||||
rsmModMap["PatchGoogleAnalytics"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return tx.PatchGoogleAnalytics()
|
||||
}
|
||||
|
||||
resModMap["RequestGoogleCache"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return rx.RequestGoogleCache()
|
||||
rsmModMap["PatchTrackerScripts"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return tx.PatchTrackerScripts()
|
||||
}
|
||||
|
||||
resModMap["RequestWaybackMachine"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return rx.RequestWaybackMachine()
|
||||
}
|
||||
|
||||
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])
|
||||
rsmModMap["RewriteHTMLResourceURLs"] = func(_ ...string) proxychain.ResponseModification {
|
||||
return tx.RewriteHTMLResourceURLs()
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user