github.com/projectdiscovery/nuclei/v2@v2.9.15/pkg/templates/templates_doc.go (about)

     1  // This Source Code Form is subject to the terms of the Mozilla Public
     2  // License, v. 2.0. If a copy of the MPL was not distributed with this
     3  // file, You can obtain one at http://mozilla.org/MPL/2.0/.
     4  // DO NOT EDIT: this file is automatically generated by docgen
     5  package templates
     6  
     7  import (
     8  	"github.com/projectdiscovery/yamldoc-go/encoder"
     9  )
    10  
    11  var (
    12  	TemplateDoc                   encoder.Doc
    13  	MODELInfoDoc                  encoder.Doc
    14  	STRINGSLICEStringSliceDoc     encoder.Doc
    15  	STRINGSLICERawStringSliceDoc  encoder.Doc
    16  	SEVERITYHolderDoc             encoder.Doc
    17  	MODELClassificationDoc        encoder.Doc
    18  	HTTPRequestDoc                encoder.Doc
    19  	GENERATORSAttackTypeHolderDoc encoder.Doc
    20  	HTTPMethodTypeHolderDoc       encoder.Doc
    21  	FUZZRuleDoc                   encoder.Doc
    22  	SignatureTypeHolderDoc        encoder.Doc
    23  	DNSRequestDoc                 encoder.Doc
    24  	DNSRequestTypeHolderDoc       encoder.Doc
    25  	FILERequestDoc                encoder.Doc
    26  	NETWORKRequestDoc             encoder.Doc
    27  	NETWORKInputDoc               encoder.Doc
    28  	NetworkInputTypeHolderDoc     encoder.Doc
    29  	HEADLESSRequestDoc            encoder.Doc
    30  	ENGINEActionDoc               encoder.Doc
    31  	ActionTypeHolderDoc           encoder.Doc
    32  	USERAGENTUserAgentHolderDoc   encoder.Doc
    33  	SSLRequestDoc                 encoder.Doc
    34  	WEBSOCKETRequestDoc           encoder.Doc
    35  	WEBSOCKETInputDoc             encoder.Doc
    36  	WHOISRequestDoc               encoder.Doc
    37  	HTTPSignatureTypeHolderDoc    encoder.Doc
    38  	VARIABLESVariableDoc          encoder.Doc
    39  )
    40  
    41  func init() {
    42  	TemplateDoc.Type = "Template"
    43  	TemplateDoc.Comments[encoder.LineComment] = " Template is a YAML input file which defines all the requests and"
    44  	TemplateDoc.Description = "Template is a YAML input file which defines all the requests and\n other metadata for a template."
    45  	TemplateDoc.Fields = make([]encoder.Doc, 17)
    46  	TemplateDoc.Fields[0].Name = "id"
    47  	TemplateDoc.Fields[0].Type = "string"
    48  	TemplateDoc.Fields[0].Note = ""
    49  	TemplateDoc.Fields[0].Description = "ID is the unique id for the template.\n\n#### Good IDs\n\nA good ID uniquely identifies what the requests in the template\nare doing. Let's say you have a template that identifies a git-config\nfile on the webservers, a good name would be `git-config-exposure`. Another\nexample name is `azure-apps-nxdomain-takeover`."
    50  	TemplateDoc.Fields[0].Comments[encoder.LineComment] = "ID is the unique id for the template."
    51  
    52  	TemplateDoc.Fields[0].AddExample("ID Example", "CVE-2021-19520")
    53  	TemplateDoc.Fields[1].Name = "info"
    54  	TemplateDoc.Fields[1].Type = "model.Info"
    55  	TemplateDoc.Fields[1].Note = ""
    56  	TemplateDoc.Fields[1].Description = "Info contains metadata information about the template."
    57  	TemplateDoc.Fields[1].Comments[encoder.LineComment] = "Info contains metadata information about the template."
    58  
    59  	TemplateDoc.Fields[1].AddExample("", exampleInfoStructure)
    60  	TemplateDoc.Fields[2].Name = "requests"
    61  	TemplateDoc.Fields[2].Type = "[]http.Request"
    62  	TemplateDoc.Fields[2].Note = ""
    63  	TemplateDoc.Fields[2].Description = "Requests contains the http request to make in the template.\nWARNING: 'requests' will be deprecated and will be removed in a future release. Please use 'http' instead."
    64  	TemplateDoc.Fields[2].Comments[encoder.LineComment] = "Requests contains the http request to make in the template."
    65  
    66  	TemplateDoc.Fields[2].AddExample("", exampleNormalHTTPRequest)
    67  	TemplateDoc.Fields[3].Name = "http"
    68  	TemplateDoc.Fields[3].Type = "[]http.Request"
    69  	TemplateDoc.Fields[3].Note = ""
    70  	TemplateDoc.Fields[3].Description = "description: |\n   HTTP contains the http request to make in the template.\n examples:\n   - value: exampleNormalHTTPRequest\n RequestsWithHTTP is placeholder(internal) only, and should not be used instead use RequestsHTTP"
    71  	TemplateDoc.Fields[3].Comments[encoder.LineComment] = " description: |"
    72  	TemplateDoc.Fields[4].Name = "dns"
    73  	TemplateDoc.Fields[4].Type = "[]dns.Request"
    74  	TemplateDoc.Fields[4].Note = ""
    75  	TemplateDoc.Fields[4].Description = "DNS contains the dns request to make in the template"
    76  	TemplateDoc.Fields[4].Comments[encoder.LineComment] = "DNS contains the dns request to make in the template"
    77  
    78  	TemplateDoc.Fields[4].AddExample("", exampleNormalDNSRequest)
    79  	TemplateDoc.Fields[5].Name = "file"
    80  	TemplateDoc.Fields[5].Type = "[]file.Request"
    81  	TemplateDoc.Fields[5].Note = ""
    82  	TemplateDoc.Fields[5].Description = "File contains the file request to make in the template"
    83  	TemplateDoc.Fields[5].Comments[encoder.LineComment] = "File contains the file request to make in the template"
    84  
    85  	TemplateDoc.Fields[5].AddExample("", exampleNormalFileRequest)
    86  	TemplateDoc.Fields[6].Name = "network"
    87  	TemplateDoc.Fields[6].Type = "[]network.Request"
    88  	TemplateDoc.Fields[6].Note = ""
    89  	TemplateDoc.Fields[6].Description = "Network contains the network request to make in the template\nWARNING: 'network' will be deprecated and will be removed in a future release. Please use 'tcp' instead."
    90  	TemplateDoc.Fields[6].Comments[encoder.LineComment] = "Network contains the network request to make in the template"
    91  
    92  	TemplateDoc.Fields[6].AddExample("", exampleNormalNetworkRequest)
    93  	TemplateDoc.Fields[7].Name = "tcp"
    94  	TemplateDoc.Fields[7].Type = "[]network.Request"
    95  	TemplateDoc.Fields[7].Note = ""
    96  	TemplateDoc.Fields[7].Description = "description: |\n   TCP contains the network request to make in the template\n examples:\n   - value: exampleNormalNetworkRequest\n RequestsWithTCP is placeholder(internal) only, and should not be used instead use RequestsNetwork"
    97  	TemplateDoc.Fields[7].Comments[encoder.LineComment] = " description: |"
    98  	TemplateDoc.Fields[8].Name = "headless"
    99  	TemplateDoc.Fields[8].Type = "[]headless.Request"
   100  	TemplateDoc.Fields[8].Note = ""
   101  	TemplateDoc.Fields[8].Description = "Headless contains the headless request to make in the template."
   102  	TemplateDoc.Fields[8].Comments[encoder.LineComment] = "Headless contains the headless request to make in the template."
   103  	TemplateDoc.Fields[9].Name = "ssl"
   104  	TemplateDoc.Fields[9].Type = "[]ssl.Request"
   105  	TemplateDoc.Fields[9].Note = ""
   106  	TemplateDoc.Fields[9].Description = "SSL contains the SSL request to make in the template."
   107  	TemplateDoc.Fields[9].Comments[encoder.LineComment] = "SSL contains the SSL request to make in the template."
   108  	TemplateDoc.Fields[10].Name = "websocket"
   109  	TemplateDoc.Fields[10].Type = "[]websocket.Request"
   110  	TemplateDoc.Fields[10].Note = ""
   111  	TemplateDoc.Fields[10].Description = "Websocket contains the Websocket request to make in the template."
   112  	TemplateDoc.Fields[10].Comments[encoder.LineComment] = "Websocket contains the Websocket request to make in the template."
   113  	TemplateDoc.Fields[11].Name = "whois"
   114  	TemplateDoc.Fields[11].Type = "[]whois.Request"
   115  	TemplateDoc.Fields[11].Note = ""
   116  	TemplateDoc.Fields[11].Description = "WHOIS contains the WHOIS request to make in the template."
   117  	TemplateDoc.Fields[11].Comments[encoder.LineComment] = "WHOIS contains the WHOIS request to make in the template."
   118  	TemplateDoc.Fields[12].Name = "self-contained"
   119  	TemplateDoc.Fields[12].Type = "bool"
   120  	TemplateDoc.Fields[12].Note = ""
   121  	TemplateDoc.Fields[12].Description = "Self Contained marks Requests for the template as self-contained"
   122  	TemplateDoc.Fields[12].Comments[encoder.LineComment] = "Self Contained marks Requests for the template as self-contained"
   123  	TemplateDoc.Fields[13].Name = "stop-at-first-match"
   124  	TemplateDoc.Fields[13].Type = "bool"
   125  	TemplateDoc.Fields[13].Note = ""
   126  	TemplateDoc.Fields[13].Description = "Stop execution once first match is found"
   127  	TemplateDoc.Fields[13].Comments[encoder.LineComment] = "Stop execution once first match is found"
   128  	TemplateDoc.Fields[14].Name = "signature"
   129  	TemplateDoc.Fields[14].Type = "http.SignatureTypeHolder"
   130  	TemplateDoc.Fields[14].Note = ""
   131  	TemplateDoc.Fields[14].Description = "Signature is the request signature method"
   132  	TemplateDoc.Fields[14].Comments[encoder.LineComment] = "Signature is the request signature method"
   133  	TemplateDoc.Fields[14].Values = []string{
   134  		"AWS",
   135  	}
   136  	TemplateDoc.Fields[15].Name = "variables"
   137  	TemplateDoc.Fields[15].Type = "variables.Variable"
   138  	TemplateDoc.Fields[15].Note = ""
   139  	TemplateDoc.Fields[15].Description = "Variables contains any variables for the current request."
   140  	TemplateDoc.Fields[15].Comments[encoder.LineComment] = "Variables contains any variables for the current request."
   141  	TemplateDoc.Fields[16].Name = "constants"
   142  	TemplateDoc.Fields[16].Type = "map[string]interface{}"
   143  	TemplateDoc.Fields[16].Note = ""
   144  	TemplateDoc.Fields[16].Description = "Constants contains any scalar constant for the current template"
   145  	TemplateDoc.Fields[16].Comments[encoder.LineComment] = "Constants contains any scalar constant for the current template"
   146  
   147  	MODELInfoDoc.Type = "model.Info"
   148  	MODELInfoDoc.Comments[encoder.LineComment] = " Info contains metadata information about a template"
   149  	MODELInfoDoc.Description = "Info contains metadata information about a template"
   150  
   151  	MODELInfoDoc.AddExample("", exampleInfoStructure)
   152  	MODELInfoDoc.AppearsIn = []encoder.Appearance{
   153  		{
   154  			TypeName:  "Template",
   155  			FieldName: "info",
   156  		},
   157  	}
   158  	MODELInfoDoc.Fields = make([]encoder.Doc, 10)
   159  	MODELInfoDoc.Fields[0].Name = "name"
   160  	MODELInfoDoc.Fields[0].Type = "string"
   161  	MODELInfoDoc.Fields[0].Note = ""
   162  	MODELInfoDoc.Fields[0].Description = "Name should be good short summary that identifies what the template does."
   163  	MODELInfoDoc.Fields[0].Comments[encoder.LineComment] = "Name should be good short summary that identifies what the template does."
   164  
   165  	MODELInfoDoc.Fields[0].AddExample("", "bower.json file disclosure")
   166  
   167  	MODELInfoDoc.Fields[0].AddExample("", "Nagios Default Credentials Check")
   168  	MODELInfoDoc.Fields[1].Name = "author"
   169  	MODELInfoDoc.Fields[1].Type = "stringslice.StringSlice"
   170  	MODELInfoDoc.Fields[1].Note = ""
   171  	MODELInfoDoc.Fields[1].Description = "Author of the template.\n\nMultiple values can also be specified separated by commas."
   172  	MODELInfoDoc.Fields[1].Comments[encoder.LineComment] = "Author of the template."
   173  
   174  	MODELInfoDoc.Fields[1].AddExample("", "<username>")
   175  	MODELInfoDoc.Fields[2].Name = "tags"
   176  	MODELInfoDoc.Fields[2].Type = "stringslice.StringSlice"
   177  	MODELInfoDoc.Fields[2].Note = ""
   178  	MODELInfoDoc.Fields[2].Description = "Any tags for the template.\n\nMultiple values can also be specified separated by commas."
   179  	MODELInfoDoc.Fields[2].Comments[encoder.LineComment] = "Any tags for the template."
   180  
   181  	MODELInfoDoc.Fields[2].AddExample("Example tags", "cve,cve2019,grafana,auth-bypass,dos")
   182  	MODELInfoDoc.Fields[3].Name = "description"
   183  	MODELInfoDoc.Fields[3].Type = "string"
   184  	MODELInfoDoc.Fields[3].Note = ""
   185  	MODELInfoDoc.Fields[3].Description = "Description of the template.\n\nYou can go in-depth here on what the template actually does."
   186  	MODELInfoDoc.Fields[3].Comments[encoder.LineComment] = "Description of the template."
   187  
   188  	MODELInfoDoc.Fields[3].AddExample("", "Bower is a package manager which stores package information in the bower.json file")
   189  
   190  	MODELInfoDoc.Fields[3].AddExample("", "Subversion ALM for the enterprise before 8.8.2 allows reflected XSS at multiple locations")
   191  	MODELInfoDoc.Fields[4].Name = "impact"
   192  	MODELInfoDoc.Fields[4].Type = "string"
   193  	MODELInfoDoc.Fields[4].Note = ""
   194  	MODELInfoDoc.Fields[4].Description = "Impact of the template.\n\nYou can go in-depth here on impact of the template."
   195  	MODELInfoDoc.Fields[4].Comments[encoder.LineComment] = "Impact of the template."
   196  
   197  	MODELInfoDoc.Fields[4].AddExample("", "Successful exploitation of this vulnerability could allow an attacker to execute arbitrary SQL queries, potentially leading to unauthorized access, data leakage, or data manipulation.")
   198  
   199  	MODELInfoDoc.Fields[4].AddExample("", "Successful exploitation of this vulnerability could allow an attacker to execute arbitrary script code in the context of the victim's browser, potentially leading to session hijacking, defacement, or theft of sensitive information.")
   200  	MODELInfoDoc.Fields[5].Name = "reference"
   201  	MODELInfoDoc.Fields[5].Type = "stringslice.RawStringSlice"
   202  	MODELInfoDoc.Fields[5].Note = ""
   203  	MODELInfoDoc.Fields[5].Description = "References for the template.\n\nThis should contain links relevant to the template."
   204  	MODELInfoDoc.Fields[5].Comments[encoder.LineComment] = "References for the template."
   205  
   206  	MODELInfoDoc.Fields[5].AddExample("", []string{"https://github.com/strapi/strapi", "https://github.com/getgrav/grav"})
   207  	MODELInfoDoc.Fields[6].Name = "severity"
   208  	MODELInfoDoc.Fields[6].Type = "severity.Holder"
   209  	MODELInfoDoc.Fields[6].Note = ""
   210  	MODELInfoDoc.Fields[6].Description = "Severity of the template."
   211  	MODELInfoDoc.Fields[6].Comments[encoder.LineComment] = "Severity of the template."
   212  	MODELInfoDoc.Fields[7].Name = "metadata"
   213  	MODELInfoDoc.Fields[7].Type = "map[string]interface{}"
   214  	MODELInfoDoc.Fields[7].Note = ""
   215  	MODELInfoDoc.Fields[7].Description = "Metadata of the template."
   216  	MODELInfoDoc.Fields[7].Comments[encoder.LineComment] = "Metadata of the template."
   217  
   218  	MODELInfoDoc.Fields[7].AddExample("", map[string]string{"customField1": "customValue1"})
   219  	MODELInfoDoc.Fields[8].Name = "classification"
   220  	MODELInfoDoc.Fields[8].Type = "model.Classification"
   221  	MODELInfoDoc.Fields[8].Note = ""
   222  	MODELInfoDoc.Fields[8].Description = "Classification contains classification information about the template."
   223  	MODELInfoDoc.Fields[8].Comments[encoder.LineComment] = "Classification contains classification information about the template."
   224  	MODELInfoDoc.Fields[9].Name = "remediation"
   225  	MODELInfoDoc.Fields[9].Type = "string"
   226  	MODELInfoDoc.Fields[9].Note = ""
   227  	MODELInfoDoc.Fields[9].Description = "Remediation steps for the template.\n\nYou can go in-depth here on how to mitigate the problem found by this template."
   228  	MODELInfoDoc.Fields[9].Comments[encoder.LineComment] = "Remediation steps for the template."
   229  
   230  	MODELInfoDoc.Fields[9].AddExample("", "Change the default administrative username and password of Apache ActiveMQ by editing the file jetty-realm.properties")
   231  
   232  	STRINGSLICEStringSliceDoc.Type = "stringslice.StringSlice"
   233  	STRINGSLICEStringSliceDoc.Comments[encoder.LineComment] = " StringSlice represents a single (in-lined) or multiple string value(s)."
   234  	STRINGSLICEStringSliceDoc.Description = "StringSlice represents a single (in-lined) or multiple string value(s).\n The unmarshaller does not automatically convert in-lined strings to []string, hence the interface{} type is required."
   235  
   236  	STRINGSLICEStringSliceDoc.AddExample("", "<username>")
   237  
   238  	STRINGSLICEStringSliceDoc.AddExample("Example tags", "cve,cve2019,grafana,auth-bypass,dos")
   239  
   240  	STRINGSLICEStringSliceDoc.AddExample("", "CVE-2020-14420")
   241  
   242  	STRINGSLICEStringSliceDoc.AddExample("", "CWE-22")
   243  	STRINGSLICEStringSliceDoc.AppearsIn = []encoder.Appearance{
   244  		{
   245  			TypeName:  "model.Info",
   246  			FieldName: "author",
   247  		},
   248  		{
   249  			TypeName:  "model.Info",
   250  			FieldName: "tags",
   251  		},
   252  		{
   253  			TypeName:  "model.Classification",
   254  			FieldName: "cve-id",
   255  		},
   256  		{
   257  			TypeName:  "model.Classification",
   258  			FieldName: "cwe-id",
   259  		},
   260  	}
   261  	STRINGSLICEStringSliceDoc.Fields = make([]encoder.Doc, 0)
   262  
   263  	STRINGSLICERawStringSliceDoc.Type = "stringslice.RawStringSlice"
   264  	STRINGSLICERawStringSliceDoc.Comments[encoder.LineComment] = ""
   265  	STRINGSLICERawStringSliceDoc.Description = ""
   266  
   267  	STRINGSLICERawStringSliceDoc.AddExample("", []string{"https://github.com/strapi/strapi", "https://github.com/getgrav/grav"})
   268  	STRINGSLICERawStringSliceDoc.AppearsIn = []encoder.Appearance{
   269  		{
   270  			TypeName:  "model.Info",
   271  			FieldName: "reference",
   272  		},
   273  	}
   274  	STRINGSLICERawStringSliceDoc.Fields = make([]encoder.Doc, 0)
   275  
   276  	SEVERITYHolderDoc.Type = "severity.Holder"
   277  	SEVERITYHolderDoc.Comments[encoder.LineComment] = " Holder holds a Severity type. Required for un/marshalling purposes"
   278  	SEVERITYHolderDoc.Description = "Holder holds a Severity type. Required for un/marshalling purposes"
   279  	SEVERITYHolderDoc.AppearsIn = []encoder.Appearance{
   280  		{
   281  			TypeName:  "model.Info",
   282  			FieldName: "severity",
   283  		},
   284  	}
   285  	SEVERITYHolderDoc.Fields = make([]encoder.Doc, 1)
   286  	SEVERITYHolderDoc.Fields[0].Name = ""
   287  	SEVERITYHolderDoc.Fields[0].Type = "Severity"
   288  	SEVERITYHolderDoc.Fields[0].Note = ""
   289  	SEVERITYHolderDoc.Fields[0].Description = ""
   290  	SEVERITYHolderDoc.Fields[0].Comments[encoder.LineComment] = ""
   291  	SEVERITYHolderDoc.Fields[0].EnumFields = []string{
   292  		"undefined",
   293  		"info",
   294  		"low",
   295  		"medium",
   296  		"high",
   297  		"critical",
   298  		"unknown",
   299  	}
   300  
   301  	MODELClassificationDoc.Type = "model.Classification"
   302  	MODELClassificationDoc.Comments[encoder.LineComment] = ""
   303  	MODELClassificationDoc.Description = ""
   304  	MODELClassificationDoc.AppearsIn = []encoder.Appearance{
   305  		{
   306  			TypeName:  "model.Info",
   307  			FieldName: "classification",
   308  		},
   309  	}
   310  	MODELClassificationDoc.Fields = make([]encoder.Doc, 7)
   311  	MODELClassificationDoc.Fields[0].Name = "cve-id"
   312  	MODELClassificationDoc.Fields[0].Type = "stringslice.StringSlice"
   313  	MODELClassificationDoc.Fields[0].Note = ""
   314  	MODELClassificationDoc.Fields[0].Description = "CVE ID for the template"
   315  	MODELClassificationDoc.Fields[0].Comments[encoder.LineComment] = "CVE ID for the template"
   316  
   317  	MODELClassificationDoc.Fields[0].AddExample("", "CVE-2020-14420")
   318  	MODELClassificationDoc.Fields[1].Name = "cwe-id"
   319  	MODELClassificationDoc.Fields[1].Type = "stringslice.StringSlice"
   320  	MODELClassificationDoc.Fields[1].Note = ""
   321  	MODELClassificationDoc.Fields[1].Description = "CWE ID for the template."
   322  	MODELClassificationDoc.Fields[1].Comments[encoder.LineComment] = "CWE ID for the template."
   323  
   324  	MODELClassificationDoc.Fields[1].AddExample("", "CWE-22")
   325  	MODELClassificationDoc.Fields[2].Name = "cvss-metrics"
   326  	MODELClassificationDoc.Fields[2].Type = "string"
   327  	MODELClassificationDoc.Fields[2].Note = ""
   328  	MODELClassificationDoc.Fields[2].Description = "CVSS Metrics for the template."
   329  	MODELClassificationDoc.Fields[2].Comments[encoder.LineComment] = "CVSS Metrics for the template."
   330  
   331  	MODELClassificationDoc.Fields[2].AddExample("", "3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H")
   332  	MODELClassificationDoc.Fields[3].Name = "cvss-score"
   333  	MODELClassificationDoc.Fields[3].Type = "float64"
   334  	MODELClassificationDoc.Fields[3].Note = ""
   335  	MODELClassificationDoc.Fields[3].Description = "CVSS Score for the template."
   336  	MODELClassificationDoc.Fields[3].Comments[encoder.LineComment] = "CVSS Score for the template."
   337  
   338  	MODELClassificationDoc.Fields[3].AddExample("", "9.8")
   339  	MODELClassificationDoc.Fields[4].Name = "epss-score"
   340  	MODELClassificationDoc.Fields[4].Type = "float64"
   341  	MODELClassificationDoc.Fields[4].Note = ""
   342  	MODELClassificationDoc.Fields[4].Description = "EPSS Score for the template."
   343  	MODELClassificationDoc.Fields[4].Comments[encoder.LineComment] = "EPSS Score for the template."
   344  
   345  	MODELClassificationDoc.Fields[4].AddExample("", "0.42509")
   346  	MODELClassificationDoc.Fields[5].Name = "epss-percentile"
   347  	MODELClassificationDoc.Fields[5].Type = "float64"
   348  	MODELClassificationDoc.Fields[5].Note = ""
   349  	MODELClassificationDoc.Fields[5].Description = "EPSS Percentile for the template."
   350  	MODELClassificationDoc.Fields[5].Comments[encoder.LineComment] = "EPSS Percentile for the template."
   351  
   352  	MODELClassificationDoc.Fields[5].AddExample("", "0.42509")
   353  	MODELClassificationDoc.Fields[6].Name = "cpe"
   354  	MODELClassificationDoc.Fields[6].Type = "string"
   355  	MODELClassificationDoc.Fields[6].Note = ""
   356  	MODELClassificationDoc.Fields[6].Description = "CPE for the template."
   357  	MODELClassificationDoc.Fields[6].Comments[encoder.LineComment] = "CPE for the template."
   358  
   359  	MODELClassificationDoc.Fields[6].AddExample("", "cpe:/a:vendor:product:version")
   360  
   361  	HTTPRequestDoc.Type = "http.Request"
   362  	HTTPRequestDoc.Comments[encoder.LineComment] = " Request contains a http request to be made from a template"
   363  	HTTPRequestDoc.Description = "Request contains a http request to be made from a template"
   364  
   365  	HTTPRequestDoc.AddExample("", exampleNormalHTTPRequest)
   366  	HTTPRequestDoc.AppearsIn = []encoder.Appearance{
   367  		{
   368  			TypeName:  "Template",
   369  			FieldName: "requests",
   370  		},
   371  		{
   372  			TypeName:  "Template",
   373  			FieldName: "http",
   374  		},
   375  	}
   376  	HTTPRequestDoc.PartDefinitions = []encoder.KeyValue{
   377  		{
   378  			Key:   "template-id",
   379  			Value: "ID of the template executed",
   380  		},
   381  		{
   382  			Key:   "template-info",
   383  			Value: "Info Block of the template executed",
   384  		},
   385  		{
   386  			Key:   "template-path",
   387  			Value: "Path of the template executed",
   388  		},
   389  		{
   390  			Key:   "host",
   391  			Value: "Host is the input to the template",
   392  		},
   393  		{
   394  			Key:   "matched",
   395  			Value: "Matched is the input which was matched upon",
   396  		},
   397  		{
   398  			Key:   "type",
   399  			Value: "Type is the type of request made",
   400  		},
   401  		{
   402  			Key:   "request",
   403  			Value: "HTTP request made from the client",
   404  		},
   405  		{
   406  			Key:   "response",
   407  			Value: "HTTP response received from server",
   408  		},
   409  		{
   410  			Key:   "status_code",
   411  			Value: "Status Code received from the Server",
   412  		},
   413  		{
   414  			Key:   "body",
   415  			Value: "HTTP response body received from server (default)",
   416  		},
   417  		{
   418  			Key:   "content_length",
   419  			Value: "HTTP Response content length",
   420  		},
   421  		{
   422  			Key:   "header,all_headers",
   423  			Value: "HTTP response headers",
   424  		},
   425  		{
   426  			Key:   "duration",
   427  			Value: "HTTP request time duration",
   428  		},
   429  		{
   430  			Key:   "all",
   431  			Value: "HTTP response body + headers",
   432  		},
   433  		{
   434  			Key:   "cookies_from_response",
   435  			Value: "HTTP response cookies in name:value format",
   436  		},
   437  		{
   438  			Key:   "headers_from_response",
   439  			Value: "HTTP response headers in name:value format",
   440  		},
   441  	}
   442  	HTTPRequestDoc.Fields = make([]encoder.Doc, 31)
   443  	HTTPRequestDoc.Fields[0].Name = "path"
   444  	HTTPRequestDoc.Fields[0].Type = "[]string"
   445  	HTTPRequestDoc.Fields[0].Note = ""
   446  	HTTPRequestDoc.Fields[0].Description = "Path contains the path/s for the HTTP requests. It supports variables\nas placeholders."
   447  	HTTPRequestDoc.Fields[0].Comments[encoder.LineComment] = "Path contains the path/s for the HTTP requests. It supports variables"
   448  
   449  	HTTPRequestDoc.Fields[0].AddExample("Some example path values", []string{"{{BaseURL}}", "{{BaseURL}}/+CSCOU+/../+CSCOE+/files/file_list.json?path=/sessions"})
   450  	HTTPRequestDoc.Fields[1].Name = "raw"
   451  	HTTPRequestDoc.Fields[1].Type = "[]string"
   452  	HTTPRequestDoc.Fields[1].Note = ""
   453  	HTTPRequestDoc.Fields[1].Description = "Raw contains HTTP Requests in Raw format."
   454  	HTTPRequestDoc.Fields[1].Comments[encoder.LineComment] = "Raw contains HTTP Requests in Raw format."
   455  
   456  	HTTPRequestDoc.Fields[1].AddExample("Some example raw requests", []string{"GET /etc/passwd HTTP/1.1\nHost:\nContent-Length: 4", "POST /.%0d./.%0d./.%0d./.%0d./bin/sh HTTP/1.1\nHost: {{Hostname}}\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0\nContent-Length: 1\nConnection: close\n\necho\necho\ncat /etc/passwd 2>&1"})
   457  	HTTPRequestDoc.Fields[2].Name = "id"
   458  	HTTPRequestDoc.Fields[2].Type = "string"
   459  	HTTPRequestDoc.Fields[2].Note = ""
   460  	HTTPRequestDoc.Fields[2].Description = "ID is the optional id of the request"
   461  	HTTPRequestDoc.Fields[2].Comments[encoder.LineComment] = " ID is the optional id of the request"
   462  	HTTPRequestDoc.Fields[3].Name = "name"
   463  	HTTPRequestDoc.Fields[3].Type = "string"
   464  	HTTPRequestDoc.Fields[3].Note = ""
   465  	HTTPRequestDoc.Fields[3].Description = "Name is the optional name of the request.\n\nIf a name is specified, all the named request in a template can be matched upon\nin a combined manner allowing multi-request based matchers."
   466  	HTTPRequestDoc.Fields[3].Comments[encoder.LineComment] = "Name is the optional name of the request."
   467  	HTTPRequestDoc.Fields[4].Name = "attack"
   468  	HTTPRequestDoc.Fields[4].Type = "generators.AttackTypeHolder"
   469  	HTTPRequestDoc.Fields[4].Note = ""
   470  	HTTPRequestDoc.Fields[4].Description = "Attack is the type of payload combinations to perform.\n\nbatteringram is inserts the same payload into all defined payload positions at once, pitchfork combines multiple payload sets and clusterbomb generates\npermutations and combinations for all payloads."
   471  	HTTPRequestDoc.Fields[4].Comments[encoder.LineComment] = "Attack is the type of payload combinations to perform."
   472  	HTTPRequestDoc.Fields[4].Values = []string{
   473  		"batteringram",
   474  		"pitchfork",
   475  		"clusterbomb",
   476  	}
   477  	HTTPRequestDoc.Fields[5].Name = "method"
   478  	HTTPRequestDoc.Fields[5].Type = "HTTPMethodTypeHolder"
   479  	HTTPRequestDoc.Fields[5].Note = ""
   480  	HTTPRequestDoc.Fields[5].Description = "Method is the HTTP Request Method."
   481  	HTTPRequestDoc.Fields[5].Comments[encoder.LineComment] = "Method is the HTTP Request Method."
   482  	HTTPRequestDoc.Fields[6].Name = "body"
   483  	HTTPRequestDoc.Fields[6].Type = "string"
   484  	HTTPRequestDoc.Fields[6].Note = ""
   485  	HTTPRequestDoc.Fields[6].Description = "Body is an optional parameter which contains HTTP Request body."
   486  	HTTPRequestDoc.Fields[6].Comments[encoder.LineComment] = "Body is an optional parameter which contains HTTP Request body."
   487  
   488  	HTTPRequestDoc.Fields[6].AddExample("Same Body for a Login POST request", "username=test&password=test")
   489  	HTTPRequestDoc.Fields[7].Name = "payloads"
   490  	HTTPRequestDoc.Fields[7].Type = "map[string]interface{}"
   491  	HTTPRequestDoc.Fields[7].Note = ""
   492  	HTTPRequestDoc.Fields[7].Description = "Payloads contains any payloads for the current request.\n\nPayloads support both key-values combinations where a list\nof payloads is provided, or optionally a single file can also\nbe provided as payload which will be read on run-time."
   493  	HTTPRequestDoc.Fields[7].Comments[encoder.LineComment] = "Payloads contains any payloads for the current request."
   494  	HTTPRequestDoc.Fields[8].Name = "headers"
   495  	HTTPRequestDoc.Fields[8].Type = "map[string]string"
   496  	HTTPRequestDoc.Fields[8].Note = ""
   497  	HTTPRequestDoc.Fields[8].Description = "Headers contains HTTP Headers to send with the request."
   498  	HTTPRequestDoc.Fields[8].Comments[encoder.LineComment] = "Headers contains HTTP Headers to send with the request."
   499  
   500  	HTTPRequestDoc.Fields[8].AddExample("", map[string]string{"Content-Type": "application/x-www-form-urlencoded", "Content-Length": "1", "Any-Header": "Any-Value"})
   501  	HTTPRequestDoc.Fields[9].Name = "race_count"
   502  	HTTPRequestDoc.Fields[9].Type = "int"
   503  	HTTPRequestDoc.Fields[9].Note = ""
   504  	HTTPRequestDoc.Fields[9].Description = "RaceCount is the number of times to send a request in Race Condition Attack."
   505  	HTTPRequestDoc.Fields[9].Comments[encoder.LineComment] = "RaceCount is the number of times to send a request in Race Condition Attack."
   506  
   507  	HTTPRequestDoc.Fields[9].AddExample("Send a request 5 times", 5)
   508  	HTTPRequestDoc.Fields[10].Name = "max-redirects"
   509  	HTTPRequestDoc.Fields[10].Type = "int"
   510  	HTTPRequestDoc.Fields[10].Note = ""
   511  	HTTPRequestDoc.Fields[10].Description = "MaxRedirects is the maximum number of redirects that should be followed."
   512  	HTTPRequestDoc.Fields[10].Comments[encoder.LineComment] = "MaxRedirects is the maximum number of redirects that should be followed."
   513  
   514  	HTTPRequestDoc.Fields[10].AddExample("Follow up to 5 redirects", 5)
   515  	HTTPRequestDoc.Fields[11].Name = "pipeline-concurrent-connections"
   516  	HTTPRequestDoc.Fields[11].Type = "int"
   517  	HTTPRequestDoc.Fields[11].Note = ""
   518  	HTTPRequestDoc.Fields[11].Description = "PipelineConcurrentConnections is number of connections to create during pipelining."
   519  	HTTPRequestDoc.Fields[11].Comments[encoder.LineComment] = "PipelineConcurrentConnections is number of connections to create during pipelining."
   520  
   521  	HTTPRequestDoc.Fields[11].AddExample("Create 40 concurrent connections", 40)
   522  	HTTPRequestDoc.Fields[12].Name = "pipeline-requests-per-connection"
   523  	HTTPRequestDoc.Fields[12].Type = "int"
   524  	HTTPRequestDoc.Fields[12].Note = ""
   525  	HTTPRequestDoc.Fields[12].Description = "PipelineRequestsPerConnection is number of requests to send per connection when pipelining."
   526  	HTTPRequestDoc.Fields[12].Comments[encoder.LineComment] = "PipelineRequestsPerConnection is number of requests to send per connection when pipelining."
   527  
   528  	HTTPRequestDoc.Fields[12].AddExample("Send 100 requests per pipeline connection", 100)
   529  	HTTPRequestDoc.Fields[13].Name = "threads"
   530  	HTTPRequestDoc.Fields[13].Type = "int"
   531  	HTTPRequestDoc.Fields[13].Note = ""
   532  	HTTPRequestDoc.Fields[13].Description = "Threads specifies number of threads to use sending requests. This enables Connection Pooling.\n\nConnection: Close attribute must not be used in request while using threads flag, otherwise\npooling will fail and engine will continue to close connections after requests."
   533  	HTTPRequestDoc.Fields[13].Comments[encoder.LineComment] = "Threads specifies number of threads to use sending requests. This enables Connection Pooling."
   534  
   535  	HTTPRequestDoc.Fields[13].AddExample("Send requests using 10 concurrent threads", 10)
   536  	HTTPRequestDoc.Fields[14].Name = "max-size"
   537  	HTTPRequestDoc.Fields[14].Type = "int"
   538  	HTTPRequestDoc.Fields[14].Note = ""
   539  	HTTPRequestDoc.Fields[14].Description = "MaxSize is the maximum size of http response body to read in bytes."
   540  	HTTPRequestDoc.Fields[14].Comments[encoder.LineComment] = "MaxSize is the maximum size of http response body to read in bytes."
   541  
   542  	HTTPRequestDoc.Fields[14].AddExample("Read max 2048 bytes of the response", 2048)
   543  	HTTPRequestDoc.Fields[15].Name = "fuzzing"
   544  	HTTPRequestDoc.Fields[15].Type = "[]fuzz.Rule"
   545  	HTTPRequestDoc.Fields[15].Note = ""
   546  	HTTPRequestDoc.Fields[15].Description = "Fuzzing describes schema to fuzz http requests"
   547  	HTTPRequestDoc.Fields[15].Comments[encoder.LineComment] = " Fuzzing describes schema to fuzz http requests"
   548  	HTTPRequestDoc.Fields[16].Name = "signature"
   549  	HTTPRequestDoc.Fields[16].Type = "SignatureTypeHolder"
   550  	HTTPRequestDoc.Fields[16].Note = ""
   551  	HTTPRequestDoc.Fields[16].Description = "Signature is the request signature method"
   552  	HTTPRequestDoc.Fields[16].Comments[encoder.LineComment] = "Signature is the request signature method"
   553  	HTTPRequestDoc.Fields[16].Values = []string{
   554  		"AWS",
   555  	}
   556  	HTTPRequestDoc.Fields[17].Name = "cookie-reuse"
   557  	HTTPRequestDoc.Fields[17].Type = "bool"
   558  	HTTPRequestDoc.Fields[17].Note = ""
   559  	HTTPRequestDoc.Fields[17].Description = "CookieReuse is an optional setting that enables cookie reuse for\nall requests defined in raw section."
   560  	HTTPRequestDoc.Fields[17].Comments[encoder.LineComment] = "CookieReuse is an optional setting that enables cookie reuse for"
   561  	HTTPRequestDoc.Fields[18].Name = "read-all"
   562  	HTTPRequestDoc.Fields[18].Type = "bool"
   563  	HTTPRequestDoc.Fields[18].Note = ""
   564  	HTTPRequestDoc.Fields[18].Description = "Enables force reading of the entire raw unsafe request body ignoring\nany specified content length headers."
   565  	HTTPRequestDoc.Fields[18].Comments[encoder.LineComment] = "Enables force reading of the entire raw unsafe request body ignoring"
   566  	HTTPRequestDoc.Fields[19].Name = "redirects"
   567  	HTTPRequestDoc.Fields[19].Type = "bool"
   568  	HTTPRequestDoc.Fields[19].Note = ""
   569  	HTTPRequestDoc.Fields[19].Description = "Redirects specifies whether redirects should be followed by the HTTP Client.\n\nThis can be used in conjunction with `max-redirects` to control the HTTP request redirects."
   570  	HTTPRequestDoc.Fields[19].Comments[encoder.LineComment] = "Redirects specifies whether redirects should be followed by the HTTP Client."
   571  	HTTPRequestDoc.Fields[20].Name = "host-redirects"
   572  	HTTPRequestDoc.Fields[20].Type = "bool"
   573  	HTTPRequestDoc.Fields[20].Note = ""
   574  	HTTPRequestDoc.Fields[20].Description = "Redirects specifies whether only redirects to the same host should be followed by the HTTP Client.\n\nThis can be used in conjunction with `max-redirects` to control the HTTP request redirects."
   575  	HTTPRequestDoc.Fields[20].Comments[encoder.LineComment] = "Redirects specifies whether only redirects to the same host should be followed by the HTTP Client."
   576  	HTTPRequestDoc.Fields[21].Name = "pipeline"
   577  	HTTPRequestDoc.Fields[21].Type = "bool"
   578  	HTTPRequestDoc.Fields[21].Note = ""
   579  	HTTPRequestDoc.Fields[21].Description = "Pipeline defines if the attack should be performed with HTTP 1.1 Pipelining\n\nAll requests must be idempotent (GET/POST). This can be used for race conditions/billions requests."
   580  	HTTPRequestDoc.Fields[21].Comments[encoder.LineComment] = "Pipeline defines if the attack should be performed with HTTP 1.1 Pipelining"
   581  	HTTPRequestDoc.Fields[22].Name = "unsafe"
   582  	HTTPRequestDoc.Fields[22].Type = "bool"
   583  	HTTPRequestDoc.Fields[22].Note = ""
   584  	HTTPRequestDoc.Fields[22].Description = "Unsafe specifies whether to use rawhttp engine for sending Non RFC-Compliant requests.\n\nThis uses the [rawhttp](https://github.com/projectdiscovery/rawhttp) engine to achieve complete\ncontrol over the request, with no normalization performed by the client."
   585  	HTTPRequestDoc.Fields[22].Comments[encoder.LineComment] = "Unsafe specifies whether to use rawhttp engine for sending Non RFC-Compliant requests."
   586  	HTTPRequestDoc.Fields[23].Name = "race"
   587  	HTTPRequestDoc.Fields[23].Type = "bool"
   588  	HTTPRequestDoc.Fields[23].Note = ""
   589  	HTTPRequestDoc.Fields[23].Description = "Race determines if all the request have to be attempted at the same time (Race Condition)\n\nThe actual number of requests that will be sent is determined by the `race_count`  field."
   590  	HTTPRequestDoc.Fields[23].Comments[encoder.LineComment] = "Race determines if all the request have to be attempted at the same time (Race Condition)"
   591  	HTTPRequestDoc.Fields[24].Name = "req-condition"
   592  	HTTPRequestDoc.Fields[24].Type = "bool"
   593  	HTTPRequestDoc.Fields[24].Note = ""
   594  	HTTPRequestDoc.Fields[24].Description = "ReqCondition automatically assigns numbers to requests and preserves their history.\n\nThis allows matching on them later for multi-request conditions."
   595  	HTTPRequestDoc.Fields[24].Comments[encoder.LineComment] = "ReqCondition automatically assigns numbers to requests and preserves their history."
   596  	HTTPRequestDoc.Fields[25].Name = "stop-at-first-match"
   597  	HTTPRequestDoc.Fields[25].Type = "bool"
   598  	HTTPRequestDoc.Fields[25].Note = ""
   599  	HTTPRequestDoc.Fields[25].Description = "StopAtFirstMatch stops the execution of the requests and template as soon as a match is found."
   600  	HTTPRequestDoc.Fields[25].Comments[encoder.LineComment] = "StopAtFirstMatch stops the execution of the requests and template as soon as a match is found."
   601  	HTTPRequestDoc.Fields[26].Name = "skip-variables-check"
   602  	HTTPRequestDoc.Fields[26].Type = "bool"
   603  	HTTPRequestDoc.Fields[26].Note = ""
   604  	HTTPRequestDoc.Fields[26].Description = "SkipVariablesCheck skips the check for unresolved variables in request"
   605  	HTTPRequestDoc.Fields[26].Comments[encoder.LineComment] = "SkipVariablesCheck skips the check for unresolved variables in request"
   606  	HTTPRequestDoc.Fields[27].Name = "iterate-all"
   607  	HTTPRequestDoc.Fields[27].Type = "bool"
   608  	HTTPRequestDoc.Fields[27].Note = ""
   609  	HTTPRequestDoc.Fields[27].Description = "IterateAll iterates all the values extracted from internal extractors"
   610  	HTTPRequestDoc.Fields[27].Comments[encoder.LineComment] = "IterateAll iterates all the values extracted from internal extractors"
   611  	HTTPRequestDoc.Fields[28].Name = "digest-username"
   612  	HTTPRequestDoc.Fields[28].Type = "string"
   613  	HTTPRequestDoc.Fields[28].Note = ""
   614  	HTTPRequestDoc.Fields[28].Description = "DigestAuthUsername specifies the username for digest authentication"
   615  	HTTPRequestDoc.Fields[28].Comments[encoder.LineComment] = "DigestAuthUsername specifies the username for digest authentication"
   616  	HTTPRequestDoc.Fields[29].Name = "digest-password"
   617  	HTTPRequestDoc.Fields[29].Type = "string"
   618  	HTTPRequestDoc.Fields[29].Note = ""
   619  	HTTPRequestDoc.Fields[29].Description = "DigestAuthPassword specifies the password for digest authentication"
   620  	HTTPRequestDoc.Fields[29].Comments[encoder.LineComment] = "DigestAuthPassword specifies the password for digest authentication"
   621  	HTTPRequestDoc.Fields[30].Name = "disable-path-automerge"
   622  	HTTPRequestDoc.Fields[30].Type = "bool"
   623  	HTTPRequestDoc.Fields[30].Note = ""
   624  	HTTPRequestDoc.Fields[30].Description = "DisablePathAutomerge disables merging target url path with raw request path"
   625  	HTTPRequestDoc.Fields[30].Comments[encoder.LineComment] = "DisablePathAutomerge disables merging target url path with raw request path"
   626  
   627  	GENERATORSAttackTypeHolderDoc.Type = "generators.AttackTypeHolder"
   628  	GENERATORSAttackTypeHolderDoc.Comments[encoder.LineComment] = " AttackTypeHolder is used to hold internal type of the protocol"
   629  	GENERATORSAttackTypeHolderDoc.Description = "AttackTypeHolder is used to hold internal type of the protocol"
   630  	GENERATORSAttackTypeHolderDoc.AppearsIn = []encoder.Appearance{
   631  		{
   632  			TypeName:  "http.Request",
   633  			FieldName: "attack",
   634  		},
   635  		{
   636  			TypeName:  "dns.Request",
   637  			FieldName: "attack",
   638  		},
   639  		{
   640  			TypeName:  "network.Request",
   641  			FieldName: "attack",
   642  		},
   643  		{
   644  			TypeName:  "headless.Request",
   645  			FieldName: "attack",
   646  		},
   647  		{
   648  			TypeName:  "websocket.Request",
   649  			FieldName: "attack",
   650  		},
   651  	}
   652  	GENERATORSAttackTypeHolderDoc.Fields = make([]encoder.Doc, 1)
   653  	GENERATORSAttackTypeHolderDoc.Fields[0].Name = ""
   654  	GENERATORSAttackTypeHolderDoc.Fields[0].Type = "AttackType"
   655  	GENERATORSAttackTypeHolderDoc.Fields[0].Note = ""
   656  	GENERATORSAttackTypeHolderDoc.Fields[0].Description = ""
   657  	GENERATORSAttackTypeHolderDoc.Fields[0].Comments[encoder.LineComment] = ""
   658  	GENERATORSAttackTypeHolderDoc.Fields[0].EnumFields = []string{
   659  		"batteringram",
   660  		"pitchfork",
   661  		"clusterbomb",
   662  	}
   663  
   664  	HTTPMethodTypeHolderDoc.Type = "HTTPMethodTypeHolder"
   665  	HTTPMethodTypeHolderDoc.Comments[encoder.LineComment] = " HTTPMethodTypeHolder is used to hold internal type of the HTTP Method"
   666  	HTTPMethodTypeHolderDoc.Description = "HTTPMethodTypeHolder is used to hold internal type of the HTTP Method"
   667  	HTTPMethodTypeHolderDoc.AppearsIn = []encoder.Appearance{
   668  		{
   669  			TypeName:  "http.Request",
   670  			FieldName: "method",
   671  		},
   672  	}
   673  	HTTPMethodTypeHolderDoc.Fields = make([]encoder.Doc, 1)
   674  	HTTPMethodTypeHolderDoc.Fields[0].Name = ""
   675  	HTTPMethodTypeHolderDoc.Fields[0].Type = "HTTPMethodType"
   676  	HTTPMethodTypeHolderDoc.Fields[0].Note = ""
   677  	HTTPMethodTypeHolderDoc.Fields[0].Description = ""
   678  	HTTPMethodTypeHolderDoc.Fields[0].Comments[encoder.LineComment] = ""
   679  	HTTPMethodTypeHolderDoc.Fields[0].EnumFields = []string{
   680  		"GET",
   681  		"HEAD",
   682  		"POST",
   683  		"PUT",
   684  		"DELETE",
   685  		"CONNECT",
   686  		"OPTIONS",
   687  		"TRACE",
   688  		"PATCH",
   689  		"PURGE",
   690  		"Debug",
   691  	}
   692  
   693  	FUZZRuleDoc.Type = "fuzz.Rule"
   694  	FUZZRuleDoc.Comments[encoder.LineComment] = " Rule is a single rule which describes how to fuzz the request"
   695  	FUZZRuleDoc.Description = "Rule is a single rule which describes how to fuzz the request"
   696  	FUZZRuleDoc.AppearsIn = []encoder.Appearance{
   697  		{
   698  			TypeName:  "http.Request",
   699  			FieldName: "fuzzing",
   700  		},
   701  		{
   702  			TypeName:  "headless.Request",
   703  			FieldName: "fuzzing",
   704  		},
   705  	}
   706  	FUZZRuleDoc.Fields = make([]encoder.Doc, 7)
   707  	FUZZRuleDoc.Fields[0].Name = "type"
   708  	FUZZRuleDoc.Fields[0].Type = "string"
   709  	FUZZRuleDoc.Fields[0].Note = ""
   710  	FUZZRuleDoc.Fields[0].Description = "Type is the type of fuzzing rule to perform.\n\nreplace replaces the values entirely. prefix prefixes the value. postfix postfixes the value\nand infix places between the values."
   711  	FUZZRuleDoc.Fields[0].Comments[encoder.LineComment] = "Type is the type of fuzzing rule to perform."
   712  	FUZZRuleDoc.Fields[0].Values = []string{
   713  		"replace",
   714  		"prefix",
   715  		"postfix",
   716  		"infix",
   717  	}
   718  	FUZZRuleDoc.Fields[1].Name = "part"
   719  	FUZZRuleDoc.Fields[1].Type = "string"
   720  	FUZZRuleDoc.Fields[1].Note = ""
   721  	FUZZRuleDoc.Fields[1].Description = "Part is the part of request to fuzz.\n\nquery fuzzes the query part of url. More parts will be added later."
   722  	FUZZRuleDoc.Fields[1].Comments[encoder.LineComment] = "Part is the part of request to fuzz."
   723  	FUZZRuleDoc.Fields[1].Values = []string{
   724  		"query",
   725  	}
   726  	FUZZRuleDoc.Fields[2].Name = "mode"
   727  	FUZZRuleDoc.Fields[2].Type = "string"
   728  	FUZZRuleDoc.Fields[2].Note = ""
   729  	FUZZRuleDoc.Fields[2].Description = "Mode is the mode of fuzzing to perform.\n\nsingle fuzzes one value at a time. multiple fuzzes all values at same time."
   730  	FUZZRuleDoc.Fields[2].Comments[encoder.LineComment] = "Mode is the mode of fuzzing to perform."
   731  	FUZZRuleDoc.Fields[2].Values = []string{
   732  		"single",
   733  		"multiple",
   734  	}
   735  	FUZZRuleDoc.Fields[3].Name = "keys"
   736  	FUZZRuleDoc.Fields[3].Type = "[]string"
   737  	FUZZRuleDoc.Fields[3].Note = ""
   738  	FUZZRuleDoc.Fields[3].Description = "Keys is the optional list of key named parameters to fuzz."
   739  	FUZZRuleDoc.Fields[3].Comments[encoder.LineComment] = "Keys is the optional list of key named parameters to fuzz."
   740  
   741  	FUZZRuleDoc.Fields[3].AddExample("Examples of keys", []string{"url", "file", "host"})
   742  	FUZZRuleDoc.Fields[4].Name = "keys-regex"
   743  	FUZZRuleDoc.Fields[4].Type = "[]string"
   744  	FUZZRuleDoc.Fields[4].Note = ""
   745  	FUZZRuleDoc.Fields[4].Description = "KeysRegex is the optional list of regex key parameters to fuzz."
   746  	FUZZRuleDoc.Fields[4].Comments[encoder.LineComment] = "KeysRegex is the optional list of regex key parameters to fuzz."
   747  
   748  	FUZZRuleDoc.Fields[4].AddExample("Examples of key regex", []string{"url.*"})
   749  	FUZZRuleDoc.Fields[5].Name = "values"
   750  	FUZZRuleDoc.Fields[5].Type = "[]string"
   751  	FUZZRuleDoc.Fields[5].Note = ""
   752  	FUZZRuleDoc.Fields[5].Description = "Values is the optional list of regex value parameters to fuzz."
   753  	FUZZRuleDoc.Fields[5].Comments[encoder.LineComment] = "Values is the optional list of regex value parameters to fuzz."
   754  
   755  	FUZZRuleDoc.Fields[5].AddExample("Examples of value regex", []string{"https?://.*"})
   756  	FUZZRuleDoc.Fields[6].Name = "fuzz"
   757  	FUZZRuleDoc.Fields[6].Type = "[]string"
   758  	FUZZRuleDoc.Fields[6].Note = ""
   759  	FUZZRuleDoc.Fields[6].Description = "Fuzz is the list of payloads to perform substitutions with."
   760  	FUZZRuleDoc.Fields[6].Comments[encoder.LineComment] = "Fuzz is the list of payloads to perform substitutions with."
   761  
   762  	FUZZRuleDoc.Fields[6].AddExample("Examples of fuzz", []string{"{{ssrf}}", "{{interactsh-url}}", "example-value"})
   763  
   764  	SignatureTypeHolderDoc.Type = "SignatureTypeHolder"
   765  	SignatureTypeHolderDoc.Comments[encoder.LineComment] = " SignatureTypeHolder is used to hold internal type of the signature"
   766  	SignatureTypeHolderDoc.Description = "SignatureTypeHolder is used to hold internal type of the signature"
   767  	SignatureTypeHolderDoc.AppearsIn = []encoder.Appearance{
   768  		{
   769  			TypeName:  "http.Request",
   770  			FieldName: "signature",
   771  		},
   772  	}
   773  	SignatureTypeHolderDoc.Fields = make([]encoder.Doc, 0)
   774  
   775  	DNSRequestDoc.Type = "dns.Request"
   776  	DNSRequestDoc.Comments[encoder.LineComment] = " Request contains a DNS protocol request to be made from a template"
   777  	DNSRequestDoc.Description = "Request contains a DNS protocol request to be made from a template"
   778  
   779  	DNSRequestDoc.AddExample("", exampleNormalDNSRequest)
   780  	DNSRequestDoc.AppearsIn = []encoder.Appearance{
   781  		{
   782  			TypeName:  "Template",
   783  			FieldName: "dns",
   784  		},
   785  	}
   786  	DNSRequestDoc.PartDefinitions = []encoder.KeyValue{
   787  		{
   788  			Key:   "template-id",
   789  			Value: "ID of the template executed",
   790  		},
   791  		{
   792  			Key:   "template-info",
   793  			Value: "Info Block of the template executed",
   794  		},
   795  		{
   796  			Key:   "template-path",
   797  			Value: "Path of the template executed",
   798  		},
   799  		{
   800  			Key:   "host",
   801  			Value: "Host is the input to the template",
   802  		},
   803  		{
   804  			Key:   "matched",
   805  			Value: "Matched is the input which was matched upon",
   806  		},
   807  		{
   808  			Key:   "request",
   809  			Value: "Request contains the DNS request in text format",
   810  		},
   811  		{
   812  			Key:   "type",
   813  			Value: "Type is the type of request made",
   814  		},
   815  		{
   816  			Key:   "rcode",
   817  			Value: "Rcode field returned for the DNS request",
   818  		},
   819  		{
   820  			Key:   "question",
   821  			Value: "Question contains the DNS question field",
   822  		},
   823  		{
   824  			Key:   "extra",
   825  			Value: "Extra contains the DNS response extra field",
   826  		},
   827  		{
   828  			Key:   "answer",
   829  			Value: "Answer contains the DNS response answer field",
   830  		},
   831  		{
   832  			Key:   "ns",
   833  			Value: "NS contains the DNS response NS field",
   834  		},
   835  		{
   836  			Key:   "raw,body,all",
   837  			Value: "Raw contains the raw DNS response (default)",
   838  		},
   839  		{
   840  			Key:   "trace",
   841  			Value: "Trace contains trace data for DNS request if enabled",
   842  		},
   843  	}
   844  	DNSRequestDoc.Fields = make([]encoder.Doc, 11)
   845  	DNSRequestDoc.Fields[0].Name = "id"
   846  	DNSRequestDoc.Fields[0].Type = "string"
   847  	DNSRequestDoc.Fields[0].Note = ""
   848  	DNSRequestDoc.Fields[0].Description = "ID is the optional id of the request"
   849  	DNSRequestDoc.Fields[0].Comments[encoder.LineComment] = " ID is the optional id of the request"
   850  	DNSRequestDoc.Fields[1].Name = "name"
   851  	DNSRequestDoc.Fields[1].Type = "string"
   852  	DNSRequestDoc.Fields[1].Note = ""
   853  	DNSRequestDoc.Fields[1].Description = "Name is the Hostname to make DNS request for.\n\nGenerally, it is set to {{FQDN}} which is the domain we get from input."
   854  	DNSRequestDoc.Fields[1].Comments[encoder.LineComment] = "Name is the Hostname to make DNS request for."
   855  
   856  	DNSRequestDoc.Fields[1].AddExample("", "{{FQDN}}")
   857  	DNSRequestDoc.Fields[2].Name = "type"
   858  	DNSRequestDoc.Fields[2].Type = "DNSRequestTypeHolder"
   859  	DNSRequestDoc.Fields[2].Note = ""
   860  	DNSRequestDoc.Fields[2].Description = "RequestType is the type of DNS request to make."
   861  	DNSRequestDoc.Fields[2].Comments[encoder.LineComment] = "RequestType is the type of DNS request to make."
   862  	DNSRequestDoc.Fields[3].Name = "class"
   863  	DNSRequestDoc.Fields[3].Type = "string"
   864  	DNSRequestDoc.Fields[3].Note = ""
   865  	DNSRequestDoc.Fields[3].Description = "Class is the class of the DNS request.\n\nUsually it's enough to just leave it as INET."
   866  	DNSRequestDoc.Fields[3].Comments[encoder.LineComment] = "Class is the class of the DNS request."
   867  	DNSRequestDoc.Fields[3].Values = []string{
   868  		"inet",
   869  		"csnet",
   870  		"chaos",
   871  		"hesiod",
   872  		"none",
   873  		"any",
   874  	}
   875  	DNSRequestDoc.Fields[4].Name = "retries"
   876  	DNSRequestDoc.Fields[4].Type = "int"
   877  	DNSRequestDoc.Fields[4].Note = ""
   878  	DNSRequestDoc.Fields[4].Description = "Retries is the number of retries for the DNS request"
   879  	DNSRequestDoc.Fields[4].Comments[encoder.LineComment] = "Retries is the number of retries for the DNS request"
   880  
   881  	DNSRequestDoc.Fields[4].AddExample("Use a retry of 3 to 5 generally", 5)
   882  	DNSRequestDoc.Fields[5].Name = "trace"
   883  	DNSRequestDoc.Fields[5].Type = "bool"
   884  	DNSRequestDoc.Fields[5].Note = ""
   885  	DNSRequestDoc.Fields[5].Description = "Trace performs a trace operation for the target."
   886  	DNSRequestDoc.Fields[5].Comments[encoder.LineComment] = "Trace performs a trace operation for the target."
   887  	DNSRequestDoc.Fields[6].Name = "trace-max-recursion"
   888  	DNSRequestDoc.Fields[6].Type = "int"
   889  	DNSRequestDoc.Fields[6].Note = ""
   890  	DNSRequestDoc.Fields[6].Description = "TraceMaxRecursion is the number of max recursion allowed for trace operations"
   891  	DNSRequestDoc.Fields[6].Comments[encoder.LineComment] = "TraceMaxRecursion is the number of max recursion allowed for trace operations"
   892  
   893  	DNSRequestDoc.Fields[6].AddExample("Use a retry of 100 to 150 generally", 100)
   894  	DNSRequestDoc.Fields[7].Name = "attack"
   895  	DNSRequestDoc.Fields[7].Type = "generators.AttackTypeHolder"
   896  	DNSRequestDoc.Fields[7].Note = ""
   897  	DNSRequestDoc.Fields[7].Description = "Attack is the type of payload combinations to perform.\n\nBatteringram is inserts the same payload into all defined payload positions at once, pitchfork combines multiple payload sets and clusterbomb generates\npermutations and combinations for all payloads."
   898  	DNSRequestDoc.Fields[7].Comments[encoder.LineComment] = "Attack is the type of payload combinations to perform."
   899  	DNSRequestDoc.Fields[8].Name = "payloads"
   900  	DNSRequestDoc.Fields[8].Type = "map[string]interface{}"
   901  	DNSRequestDoc.Fields[8].Note = ""
   902  	DNSRequestDoc.Fields[8].Description = "Payloads contains any payloads for the current request.\n\nPayloads support both key-values combinations where a list\nof payloads is provided, or optionally a single file can also\nbe provided as payload which will be read on run-time."
   903  	DNSRequestDoc.Fields[8].Comments[encoder.LineComment] = "Payloads contains any payloads for the current request."
   904  	DNSRequestDoc.Fields[9].Name = "recursion"
   905  	DNSRequestDoc.Fields[9].Type = "dns.bool"
   906  	DNSRequestDoc.Fields[9].Note = ""
   907  	DNSRequestDoc.Fields[9].Description = "Recursion determines if resolver should recurse all records to get fresh results."
   908  	DNSRequestDoc.Fields[9].Comments[encoder.LineComment] = "Recursion determines if resolver should recurse all records to get fresh results."
   909  	DNSRequestDoc.Fields[10].Name = "resolvers"
   910  	DNSRequestDoc.Fields[10].Type = "[]string"
   911  	DNSRequestDoc.Fields[10].Note = ""
   912  	DNSRequestDoc.Fields[10].Description = "Resolvers to use for the dns requests"
   913  	DNSRequestDoc.Fields[10].Comments[encoder.LineComment] = " Resolvers to use for the dns requests"
   914  
   915  	DNSRequestTypeHolderDoc.Type = "DNSRequestTypeHolder"
   916  	DNSRequestTypeHolderDoc.Comments[encoder.LineComment] = " DNSRequestTypeHolder is used to hold internal type of the DNS type"
   917  	DNSRequestTypeHolderDoc.Description = "DNSRequestTypeHolder is used to hold internal type of the DNS type"
   918  	DNSRequestTypeHolderDoc.AppearsIn = []encoder.Appearance{
   919  		{
   920  			TypeName:  "dns.Request",
   921  			FieldName: "type",
   922  		},
   923  	}
   924  	DNSRequestTypeHolderDoc.Fields = make([]encoder.Doc, 1)
   925  	DNSRequestTypeHolderDoc.Fields[0].Name = ""
   926  	DNSRequestTypeHolderDoc.Fields[0].Type = "DNSRequestType"
   927  	DNSRequestTypeHolderDoc.Fields[0].Note = ""
   928  	DNSRequestTypeHolderDoc.Fields[0].Description = ""
   929  	DNSRequestTypeHolderDoc.Fields[0].Comments[encoder.LineComment] = ""
   930  	DNSRequestTypeHolderDoc.Fields[0].EnumFields = []string{
   931  		"A",
   932  		"NS",
   933  		"DS",
   934  		"CNAME",
   935  		"SOA",
   936  		"PTR",
   937  		"MX",
   938  		"TXT",
   939  		"AAAA",
   940  		"CAA",
   941  		"TLSA",
   942  		"ANY",
   943  	}
   944  
   945  	FILERequestDoc.Type = "file.Request"
   946  	FILERequestDoc.Comments[encoder.LineComment] = " Request contains a File matching mechanism for local disk operations."
   947  	FILERequestDoc.Description = "Request contains a File matching mechanism for local disk operations."
   948  
   949  	FILERequestDoc.AddExample("", exampleNormalFileRequest)
   950  	FILERequestDoc.AppearsIn = []encoder.Appearance{
   951  		{
   952  			TypeName:  "Template",
   953  			FieldName: "file",
   954  		},
   955  	}
   956  	FILERequestDoc.PartDefinitions = []encoder.KeyValue{
   957  		{
   958  			Key:   "template-id",
   959  			Value: "ID of the template executed",
   960  		},
   961  		{
   962  			Key:   "template-info",
   963  			Value: "Info Block of the template executed",
   964  		},
   965  		{
   966  			Key:   "template-path",
   967  			Value: "Path of the template executed",
   968  		},
   969  		{
   970  			Key:   "matched",
   971  			Value: "Matched is the input which was matched upon",
   972  		},
   973  		{
   974  			Key:   "path",
   975  			Value: "Path is the path of file on local filesystem",
   976  		},
   977  		{
   978  			Key:   "type",
   979  			Value: "Type is the type of request made",
   980  		},
   981  		{
   982  			Key:   "raw,body,all,data",
   983  			Value: "Raw contains the raw file contents",
   984  		},
   985  	}
   986  	FILERequestDoc.Fields = make([]encoder.Doc, 7)
   987  	FILERequestDoc.Fields[0].Name = "extensions"
   988  	FILERequestDoc.Fields[0].Type = "[]string"
   989  	FILERequestDoc.Fields[0].Note = ""
   990  	FILERequestDoc.Fields[0].Description = "Extensions is the list of extensions or mime types to perform matching on."
   991  	FILERequestDoc.Fields[0].Comments[encoder.LineComment] = "Extensions is the list of extensions or mime types to perform matching on."
   992  
   993  	FILERequestDoc.Fields[0].AddExample("", []string{".txt", ".go", ".json"})
   994  	FILERequestDoc.Fields[1].Name = "denylist"
   995  	FILERequestDoc.Fields[1].Type = "[]string"
   996  	FILERequestDoc.Fields[1].Note = ""
   997  	FILERequestDoc.Fields[1].Description = "DenyList is the list of file, directories, mime types or extensions to deny during matching.\n\nBy default, it contains some non-interesting extensions that are hardcoded\nin nuclei."
   998  	FILERequestDoc.Fields[1].Comments[encoder.LineComment] = "DenyList is the list of file, directories, mime types or extensions to deny during matching."
   999  
  1000  	FILERequestDoc.Fields[1].AddExample("", []string{".avi", ".mov", ".mp3"})
  1001  	FILERequestDoc.Fields[2].Name = "id"
  1002  	FILERequestDoc.Fields[2].Type = "string"
  1003  	FILERequestDoc.Fields[2].Note = ""
  1004  	FILERequestDoc.Fields[2].Description = "ID is the optional id of the request"
  1005  	FILERequestDoc.Fields[2].Comments[encoder.LineComment] = " ID is the optional id of the request"
  1006  	FILERequestDoc.Fields[3].Name = "max-size"
  1007  	FILERequestDoc.Fields[3].Type = "string"
  1008  	FILERequestDoc.Fields[3].Note = ""
  1009  	FILERequestDoc.Fields[3].Description = "MaxSize is the maximum size of the file to run request on.\n\nBy default, nuclei will process 1 GB of content and not go more than that.\nIt can be set to much lower or higher depending on use.\nIf set to \"no\" then all content will be processed"
  1010  	FILERequestDoc.Fields[3].Comments[encoder.LineComment] = "MaxSize is the maximum size of the file to run request on."
  1011  
  1012  	FILERequestDoc.Fields[3].AddExample("", "5Mb")
  1013  	FILERequestDoc.Fields[4].Name = "archive"
  1014  	FILERequestDoc.Fields[4].Type = "bool"
  1015  	FILERequestDoc.Fields[4].Note = ""
  1016  	FILERequestDoc.Fields[4].Description = "elaborates archives"
  1017  	FILERequestDoc.Fields[4].Comments[encoder.LineComment] = "elaborates archives"
  1018  	FILERequestDoc.Fields[5].Name = "mime-type"
  1019  	FILERequestDoc.Fields[5].Type = "bool"
  1020  	FILERequestDoc.Fields[5].Note = ""
  1021  	FILERequestDoc.Fields[5].Description = "enables mime types check"
  1022  	FILERequestDoc.Fields[5].Comments[encoder.LineComment] = "enables mime types check"
  1023  	FILERequestDoc.Fields[6].Name = "no-recursive"
  1024  	FILERequestDoc.Fields[6].Type = "bool"
  1025  	FILERequestDoc.Fields[6].Note = ""
  1026  	FILERequestDoc.Fields[6].Description = "NoRecursive specifies whether to not do recursive checks if folders are provided."
  1027  	FILERequestDoc.Fields[6].Comments[encoder.LineComment] = "NoRecursive specifies whether to not do recursive checks if folders are provided."
  1028  
  1029  	NETWORKRequestDoc.Type = "network.Request"
  1030  	NETWORKRequestDoc.Comments[encoder.LineComment] = " Request contains a Network protocol request to be made from a template"
  1031  	NETWORKRequestDoc.Description = "Request contains a Network protocol request to be made from a template"
  1032  
  1033  	NETWORKRequestDoc.AddExample("", exampleNormalNetworkRequest)
  1034  	NETWORKRequestDoc.AppearsIn = []encoder.Appearance{
  1035  		{
  1036  			TypeName:  "Template",
  1037  			FieldName: "network",
  1038  		},
  1039  		{
  1040  			TypeName:  "Template",
  1041  			FieldName: "tcp",
  1042  		},
  1043  	}
  1044  	NETWORKRequestDoc.PartDefinitions = []encoder.KeyValue{
  1045  		{
  1046  			Key:   "template-id",
  1047  			Value: "ID of the template executed",
  1048  		},
  1049  		{
  1050  			Key:   "template-info",
  1051  			Value: "Info Block of the template executed",
  1052  		},
  1053  		{
  1054  			Key:   "template-path",
  1055  			Value: "Path of the template executed",
  1056  		},
  1057  		{
  1058  			Key:   "host",
  1059  			Value: "Host is the input to the template",
  1060  		},
  1061  		{
  1062  			Key:   "matched",
  1063  			Value: "Matched is the input which was matched upon",
  1064  		},
  1065  		{
  1066  			Key:   "type",
  1067  			Value: "Type is the type of request made",
  1068  		},
  1069  		{
  1070  			Key:   "request",
  1071  			Value: "Network request made from the client",
  1072  		},
  1073  		{
  1074  			Key:   "body,all,data",
  1075  			Value: "Network response received from server (default)",
  1076  		},
  1077  		{
  1078  			Key:   "raw",
  1079  			Value: "Full Network protocol data",
  1080  		},
  1081  	}
  1082  	NETWORKRequestDoc.Fields = make([]encoder.Doc, 9)
  1083  	NETWORKRequestDoc.Fields[0].Name = "id"
  1084  	NETWORKRequestDoc.Fields[0].Type = "string"
  1085  	NETWORKRequestDoc.Fields[0].Note = ""
  1086  	NETWORKRequestDoc.Fields[0].Description = "ID is the optional id of the request"
  1087  	NETWORKRequestDoc.Fields[0].Comments[encoder.LineComment] = " ID is the optional id of the request"
  1088  	NETWORKRequestDoc.Fields[1].Name = "host"
  1089  	NETWORKRequestDoc.Fields[1].Type = "[]string"
  1090  	NETWORKRequestDoc.Fields[1].Note = ""
  1091  	NETWORKRequestDoc.Fields[1].Description = "Host to send network requests to.\n\nUsually it's set to `{{Hostname}}`. If you want to enable TLS for\nTCP Connection, you can use `tls://{{Hostname}}`."
  1092  	NETWORKRequestDoc.Fields[1].Comments[encoder.LineComment] = "Host to send network requests to."
  1093  
  1094  	NETWORKRequestDoc.Fields[1].AddExample("", []string{"{{Hostname}}"})
  1095  	NETWORKRequestDoc.Fields[2].Name = "attack"
  1096  	NETWORKRequestDoc.Fields[2].Type = "generators.AttackTypeHolder"
  1097  	NETWORKRequestDoc.Fields[2].Note = ""
  1098  	NETWORKRequestDoc.Fields[2].Description = "Attack is the type of payload combinations to perform.\n\nBatteringram is inserts the same payload into all defined payload positions at once, pitchfork combines multiple payload sets and clusterbomb generates\npermutations and combinations for all payloads."
  1099  	NETWORKRequestDoc.Fields[2].Comments[encoder.LineComment] = "Attack is the type of payload combinations to perform."
  1100  	NETWORKRequestDoc.Fields[3].Name = "payloads"
  1101  	NETWORKRequestDoc.Fields[3].Type = "map[string]interface{}"
  1102  	NETWORKRequestDoc.Fields[3].Note = ""
  1103  	NETWORKRequestDoc.Fields[3].Description = "Payloads contains any payloads for the current request.\n\nPayloads support both key-values combinations where a list\nof payloads is provided, or optionally a single file can also\nbe provided as payload which will be read on run-time."
  1104  	NETWORKRequestDoc.Fields[3].Comments[encoder.LineComment] = "Payloads contains any payloads for the current request."
  1105  	NETWORKRequestDoc.Fields[4].Name = "inputs"
  1106  	NETWORKRequestDoc.Fields[4].Type = "[]network.Input"
  1107  	NETWORKRequestDoc.Fields[4].Note = ""
  1108  	NETWORKRequestDoc.Fields[4].Description = "Inputs contains inputs for the network socket"
  1109  	NETWORKRequestDoc.Fields[4].Comments[encoder.LineComment] = "Inputs contains inputs for the network socket"
  1110  	NETWORKRequestDoc.Fields[5].Name = "port"
  1111  	NETWORKRequestDoc.Fields[5].Type = "string"
  1112  	NETWORKRequestDoc.Fields[5].Note = ""
  1113  	NETWORKRequestDoc.Fields[5].Description = "description: |\n   Port is the port to send network requests to. this acts as default port but is overriden if target/input contains\n non-http(s) ports like 80,8080,8081 etc"
  1114  	NETWORKRequestDoc.Fields[5].Comments[encoder.LineComment] = " description: |"
  1115  	NETWORKRequestDoc.Fields[6].Name = "exclude-ports"
  1116  	NETWORKRequestDoc.Fields[6].Type = "string"
  1117  	NETWORKRequestDoc.Fields[6].Note = ""
  1118  	NETWORKRequestDoc.Fields[6].Description = "description:	|\n	ExcludePorts is the list of ports to exclude from being scanned . It is intended to be used with `Port` field and contains a list of ports which are ignored/skipped"
  1119  	NETWORKRequestDoc.Fields[6].Comments[encoder.LineComment] = " description:	|"
  1120  	NETWORKRequestDoc.Fields[7].Name = "read-size"
  1121  	NETWORKRequestDoc.Fields[7].Type = "int"
  1122  	NETWORKRequestDoc.Fields[7].Note = ""
  1123  	NETWORKRequestDoc.Fields[7].Description = "ReadSize is the size of response to read at the end\n\nDefault value for read-size is 1024."
  1124  	NETWORKRequestDoc.Fields[7].Comments[encoder.LineComment] = "ReadSize is the size of response to read at the end"
  1125  
  1126  	NETWORKRequestDoc.Fields[7].AddExample("", 2048)
  1127  	NETWORKRequestDoc.Fields[8].Name = "read-all"
  1128  	NETWORKRequestDoc.Fields[8].Type = "bool"
  1129  	NETWORKRequestDoc.Fields[8].Note = ""
  1130  	NETWORKRequestDoc.Fields[8].Description = "ReadAll determines if the data stream should be read till the end regardless of the size\n\nDefault value for read-all is false."
  1131  	NETWORKRequestDoc.Fields[8].Comments[encoder.LineComment] = "ReadAll determines if the data stream should be read till the end regardless of the size"
  1132  
  1133  	NETWORKRequestDoc.Fields[8].AddExample("", false)
  1134  
  1135  	NETWORKInputDoc.Type = "network.Input"
  1136  	NETWORKInputDoc.Comments[encoder.LineComment] = ""
  1137  	NETWORKInputDoc.Description = ""
  1138  	NETWORKInputDoc.AppearsIn = []encoder.Appearance{
  1139  		{
  1140  			TypeName:  "network.Request",
  1141  			FieldName: "inputs",
  1142  		},
  1143  	}
  1144  	NETWORKInputDoc.Fields = make([]encoder.Doc, 4)
  1145  	NETWORKInputDoc.Fields[0].Name = "data"
  1146  	NETWORKInputDoc.Fields[0].Type = "string"
  1147  	NETWORKInputDoc.Fields[0].Note = ""
  1148  	NETWORKInputDoc.Fields[0].Description = "Data is the data to send as the input.\n\nIt supports DSL Helper Functions as well as normal expressions."
  1149  	NETWORKInputDoc.Fields[0].Comments[encoder.LineComment] = "Data is the data to send as the input."
  1150  
  1151  	NETWORKInputDoc.Fields[0].AddExample("", "TEST")
  1152  
  1153  	NETWORKInputDoc.Fields[0].AddExample("", "hex_decode('50494e47')")
  1154  	NETWORKInputDoc.Fields[1].Name = "type"
  1155  	NETWORKInputDoc.Fields[1].Type = "NetworkInputTypeHolder"
  1156  	NETWORKInputDoc.Fields[1].Note = ""
  1157  	NETWORKInputDoc.Fields[1].Description = "Type is the type of input specified in `data` field.\n\nDefault value is text, but hex can be used for hex formatted data."
  1158  	NETWORKInputDoc.Fields[1].Comments[encoder.LineComment] = "Type is the type of input specified in `data` field."
  1159  	NETWORKInputDoc.Fields[1].Values = []string{
  1160  		"hex",
  1161  		"text",
  1162  	}
  1163  	NETWORKInputDoc.Fields[2].Name = "read"
  1164  	NETWORKInputDoc.Fields[2].Type = "int"
  1165  	NETWORKInputDoc.Fields[2].Note = ""
  1166  	NETWORKInputDoc.Fields[2].Description = "Read is the number of bytes to read from socket.\n\nThis can be used for protocols which expect an immediate response. You can\nread and write responses one after another and eventually perform matching\non every data captured with `name` attribute.\n\nThe [network docs](https://nuclei.projectdiscovery.io/templating-guide/protocols/network/) highlight more on how to do this."
  1167  	NETWORKInputDoc.Fields[2].Comments[encoder.LineComment] = "Read is the number of bytes to read from socket."
  1168  
  1169  	NETWORKInputDoc.Fields[2].AddExample("", 1024)
  1170  	NETWORKInputDoc.Fields[3].Name = "name"
  1171  	NETWORKInputDoc.Fields[3].Type = "string"
  1172  	NETWORKInputDoc.Fields[3].Note = ""
  1173  	NETWORKInputDoc.Fields[3].Description = "Name is the optional name of the data read to provide matching on."
  1174  	NETWORKInputDoc.Fields[3].Comments[encoder.LineComment] = "Name is the optional name of the data read to provide matching on."
  1175  
  1176  	NETWORKInputDoc.Fields[3].AddExample("", "prefix")
  1177  
  1178  	NetworkInputTypeHolderDoc.Type = "NetworkInputTypeHolder"
  1179  	NetworkInputTypeHolderDoc.Comments[encoder.LineComment] = " NetworkInputTypeHolder is used to hold internal type of the Network type"
  1180  	NetworkInputTypeHolderDoc.Description = "NetworkInputTypeHolder is used to hold internal type of the Network type"
  1181  	NetworkInputTypeHolderDoc.AppearsIn = []encoder.Appearance{
  1182  		{
  1183  			TypeName:  "network.Input",
  1184  			FieldName: "type",
  1185  		},
  1186  	}
  1187  	NetworkInputTypeHolderDoc.Fields = make([]encoder.Doc, 1)
  1188  	NetworkInputTypeHolderDoc.Fields[0].Name = ""
  1189  	NetworkInputTypeHolderDoc.Fields[0].Type = "NetworkInputType"
  1190  	NetworkInputTypeHolderDoc.Fields[0].Note = ""
  1191  	NetworkInputTypeHolderDoc.Fields[0].Description = ""
  1192  	NetworkInputTypeHolderDoc.Fields[0].Comments[encoder.LineComment] = ""
  1193  	NetworkInputTypeHolderDoc.Fields[0].EnumFields = []string{
  1194  		"hex",
  1195  		"text",
  1196  	}
  1197  
  1198  	HEADLESSRequestDoc.Type = "headless.Request"
  1199  	HEADLESSRequestDoc.Comments[encoder.LineComment] = " Request contains a Headless protocol request to be made from a template"
  1200  	HEADLESSRequestDoc.Description = "Request contains a Headless protocol request to be made from a template"
  1201  	HEADLESSRequestDoc.AppearsIn = []encoder.Appearance{
  1202  		{
  1203  			TypeName:  "Template",
  1204  			FieldName: "headless",
  1205  		},
  1206  	}
  1207  	HEADLESSRequestDoc.PartDefinitions = []encoder.KeyValue{
  1208  		{
  1209  			Key:   "template-id",
  1210  			Value: "ID of the template executed",
  1211  		},
  1212  		{
  1213  			Key:   "template-info",
  1214  			Value: "Info Block of the template executed",
  1215  		},
  1216  		{
  1217  			Key:   "template-path",
  1218  			Value: "Path of the template executed",
  1219  		},
  1220  		{
  1221  			Key:   "host",
  1222  			Value: "Host is the input to the template",
  1223  		},
  1224  		{
  1225  			Key:   "matched",
  1226  			Value: "Matched is the input which was matched upon",
  1227  		},
  1228  		{
  1229  			Key:   "type",
  1230  			Value: "Type is the type of request made",
  1231  		},
  1232  		{
  1233  			Key:   "req",
  1234  			Value: "Headless request made from the client",
  1235  		},
  1236  		{
  1237  			Key:   "resp,body,data",
  1238  			Value: "Headless response received from client (default)",
  1239  		},
  1240  	}
  1241  	HEADLESSRequestDoc.Fields = make([]encoder.Doc, 9)
  1242  	HEADLESSRequestDoc.Fields[0].Name = "id"
  1243  	HEADLESSRequestDoc.Fields[0].Type = "string"
  1244  	HEADLESSRequestDoc.Fields[0].Note = ""
  1245  	HEADLESSRequestDoc.Fields[0].Description = "ID is the optional id of the request"
  1246  	HEADLESSRequestDoc.Fields[0].Comments[encoder.LineComment] = " ID is the optional id of the request"
  1247  	HEADLESSRequestDoc.Fields[1].Name = "attack"
  1248  	HEADLESSRequestDoc.Fields[1].Type = "generators.AttackTypeHolder"
  1249  	HEADLESSRequestDoc.Fields[1].Note = ""
  1250  	HEADLESSRequestDoc.Fields[1].Description = "Attack is the type of payload combinations to perform.\n\nBatteringram is inserts the same payload into all defined payload positions at once, pitchfork combines multiple payload sets and clusterbomb generates\npermutations and combinations for all payloads."
  1251  	HEADLESSRequestDoc.Fields[1].Comments[encoder.LineComment] = "Attack is the type of payload combinations to perform."
  1252  	HEADLESSRequestDoc.Fields[2].Name = "payloads"
  1253  	HEADLESSRequestDoc.Fields[2].Type = "map[string]interface{}"
  1254  	HEADLESSRequestDoc.Fields[2].Note = ""
  1255  	HEADLESSRequestDoc.Fields[2].Description = "Payloads contains any payloads for the current request.\n\nPayloads support both key-values combinations where a list\nof payloads is provided, or optionally a single file can also\nbe provided as payload which will be read on run-time."
  1256  	HEADLESSRequestDoc.Fields[2].Comments[encoder.LineComment] = "Payloads contains any payloads for the current request."
  1257  	HEADLESSRequestDoc.Fields[3].Name = "steps"
  1258  	HEADLESSRequestDoc.Fields[3].Type = "[]engine.Action"
  1259  	HEADLESSRequestDoc.Fields[3].Note = ""
  1260  	HEADLESSRequestDoc.Fields[3].Description = "Steps is the list of actions to run for headless request"
  1261  	HEADLESSRequestDoc.Fields[3].Comments[encoder.LineComment] = "Steps is the list of actions to run for headless request"
  1262  	HEADLESSRequestDoc.Fields[4].Name = "user_agent"
  1263  	HEADLESSRequestDoc.Fields[4].Type = "userAgent.UserAgentHolder"
  1264  	HEADLESSRequestDoc.Fields[4].Note = ""
  1265  	HEADLESSRequestDoc.Fields[4].Description = "descriptions: |\n 	 User-Agent is the type of user-agent to use for the request."
  1266  	HEADLESSRequestDoc.Fields[4].Comments[encoder.LineComment] = " descriptions: |"
  1267  	HEADLESSRequestDoc.Fields[5].Name = "custom_user_agent"
  1268  	HEADLESSRequestDoc.Fields[5].Type = "string"
  1269  	HEADLESSRequestDoc.Fields[5].Note = ""
  1270  	HEADLESSRequestDoc.Fields[5].Description = "description: |\n 	 If UserAgent is set to custom, customUserAgent is the custom user-agent to use for the request."
  1271  	HEADLESSRequestDoc.Fields[5].Comments[encoder.LineComment] = " description: |"
  1272  	HEADLESSRequestDoc.Fields[6].Name = "stop-at-first-match"
  1273  	HEADLESSRequestDoc.Fields[6].Type = "bool"
  1274  	HEADLESSRequestDoc.Fields[6].Note = ""
  1275  	HEADLESSRequestDoc.Fields[6].Description = "StopAtFirstMatch stops the execution of the requests and template as soon as a match is found."
  1276  	HEADLESSRequestDoc.Fields[6].Comments[encoder.LineComment] = "StopAtFirstMatch stops the execution of the requests and template as soon as a match is found."
  1277  	HEADLESSRequestDoc.Fields[7].Name = "fuzzing"
  1278  	HEADLESSRequestDoc.Fields[7].Type = "[]fuzz.Rule"
  1279  	HEADLESSRequestDoc.Fields[7].Note = ""
  1280  	HEADLESSRequestDoc.Fields[7].Description = "Fuzzing describes schema to fuzz headless requests"
  1281  	HEADLESSRequestDoc.Fields[7].Comments[encoder.LineComment] = " Fuzzing describes schema to fuzz headless requests"
  1282  	HEADLESSRequestDoc.Fields[8].Name = "cookie-reuse"
  1283  	HEADLESSRequestDoc.Fields[8].Type = "bool"
  1284  	HEADLESSRequestDoc.Fields[8].Note = ""
  1285  	HEADLESSRequestDoc.Fields[8].Description = "CookieReuse is an optional setting that enables cookie reuse"
  1286  	HEADLESSRequestDoc.Fields[8].Comments[encoder.LineComment] = "CookieReuse is an optional setting that enables cookie reuse"
  1287  
  1288  	ENGINEActionDoc.Type = "engine.Action"
  1289  	ENGINEActionDoc.Comments[encoder.LineComment] = " Action is an action taken by the browser to reach a navigation"
  1290  	ENGINEActionDoc.Description = "Action is an action taken by the browser to reach a navigation\n\n Each step that the browser executes is an action. Most navigations\n usually start from the ActionLoadURL event, and further navigations\n are discovered on the found page. We also keep track and only\n scrape new navigation from pages we haven't crawled yet."
  1291  	ENGINEActionDoc.AppearsIn = []encoder.Appearance{
  1292  		{
  1293  			TypeName:  "headless.Request",
  1294  			FieldName: "steps",
  1295  		},
  1296  	}
  1297  	ENGINEActionDoc.Fields = make([]encoder.Doc, 4)
  1298  	ENGINEActionDoc.Fields[0].Name = "args"
  1299  	ENGINEActionDoc.Fields[0].Type = "map[string]string"
  1300  	ENGINEActionDoc.Fields[0].Note = ""
  1301  	ENGINEActionDoc.Fields[0].Description = "Args contain arguments for the headless action.\nPer action arguments are described in detail [here](https://nuclei.projectdiscovery.io/templating-guide/protocols/headless/)."
  1302  	ENGINEActionDoc.Fields[0].Comments[encoder.LineComment] = "Args contain arguments for the headless action."
  1303  	ENGINEActionDoc.Fields[1].Name = "name"
  1304  	ENGINEActionDoc.Fields[1].Type = "string"
  1305  	ENGINEActionDoc.Fields[1].Note = ""
  1306  	ENGINEActionDoc.Fields[1].Description = "Name is the name assigned to the headless action.\n\nThis can be used to execute code, for instance in browser\nDOM using script action, and get the result in a variable\nwhich can be matched upon by nuclei. An Example template [here](https://github.com/projectdiscovery/nuclei-templates/blob/main/headless/prototype-pollution-check.yaml)."
  1307  	ENGINEActionDoc.Fields[1].Comments[encoder.LineComment] = "Name is the name assigned to the headless action."
  1308  	ENGINEActionDoc.Fields[2].Name = "description"
  1309  	ENGINEActionDoc.Fields[2].Type = "string"
  1310  	ENGINEActionDoc.Fields[2].Note = ""
  1311  	ENGINEActionDoc.Fields[2].Description = "Description is the optional description of the headless action"
  1312  	ENGINEActionDoc.Fields[2].Comments[encoder.LineComment] = "Description is the optional description of the headless action"
  1313  	ENGINEActionDoc.Fields[3].Name = "action"
  1314  	ENGINEActionDoc.Fields[3].Type = "ActionTypeHolder"
  1315  	ENGINEActionDoc.Fields[3].Note = ""
  1316  	ENGINEActionDoc.Fields[3].Description = "Action is the type of the action to perform."
  1317  	ENGINEActionDoc.Fields[3].Comments[encoder.LineComment] = "Action is the type of the action to perform."
  1318  
  1319  	ActionTypeHolderDoc.Type = "ActionTypeHolder"
  1320  	ActionTypeHolderDoc.Comments[encoder.LineComment] = " ActionTypeHolder is used to hold internal type of the action"
  1321  	ActionTypeHolderDoc.Description = "ActionTypeHolder is used to hold internal type of the action"
  1322  	ActionTypeHolderDoc.AppearsIn = []encoder.Appearance{
  1323  		{
  1324  			TypeName:  "engine.Action",
  1325  			FieldName: "action",
  1326  		},
  1327  	}
  1328  	ActionTypeHolderDoc.Fields = make([]encoder.Doc, 1)
  1329  	ActionTypeHolderDoc.Fields[0].Name = ""
  1330  	ActionTypeHolderDoc.Fields[0].Type = "ActionType"
  1331  	ActionTypeHolderDoc.Fields[0].Note = ""
  1332  	ActionTypeHolderDoc.Fields[0].Description = ""
  1333  	ActionTypeHolderDoc.Fields[0].Comments[encoder.LineComment] = ""
  1334  	ActionTypeHolderDoc.Fields[0].EnumFields = []string{
  1335  		"navigate",
  1336  		"script",
  1337  		"click",
  1338  		"rightclick",
  1339  		"text",
  1340  		"screenshot",
  1341  		"time",
  1342  		"select",
  1343  		"files",
  1344  		"waitload",
  1345  		"getresource",
  1346  		"extract",
  1347  		"setmethod",
  1348  		"addheader",
  1349  		"setheader",
  1350  		"deleteheader",
  1351  		"setbody",
  1352  		"waitevent",
  1353  		"keyboard",
  1354  		"debug",
  1355  		"sleep",
  1356  		"waitvisible",
  1357  	}
  1358  
  1359  	USERAGENTUserAgentHolderDoc.Type = "userAgent.UserAgentHolder"
  1360  	USERAGENTUserAgentHolderDoc.Comments[encoder.LineComment] = " UserAgentHolder holds a UserAgent type. Required for un/marshalling purposes"
  1361  	USERAGENTUserAgentHolderDoc.Description = "UserAgentHolder holds a UserAgent type. Required for un/marshalling purposes"
  1362  	USERAGENTUserAgentHolderDoc.AppearsIn = []encoder.Appearance{
  1363  		{
  1364  			TypeName:  "headless.Request",
  1365  			FieldName: "user_agent",
  1366  		},
  1367  	}
  1368  	USERAGENTUserAgentHolderDoc.Fields = make([]encoder.Doc, 1)
  1369  	USERAGENTUserAgentHolderDoc.Fields[0].Name = ""
  1370  	USERAGENTUserAgentHolderDoc.Fields[0].Type = "UserAgent"
  1371  	USERAGENTUserAgentHolderDoc.Fields[0].Note = ""
  1372  	USERAGENTUserAgentHolderDoc.Fields[0].Description = ""
  1373  	USERAGENTUserAgentHolderDoc.Fields[0].Comments[encoder.LineComment] = ""
  1374  	USERAGENTUserAgentHolderDoc.Fields[0].EnumFields = []string{
  1375  		"random",
  1376  		"off",
  1377  		"default",
  1378  		"custom",
  1379  	}
  1380  
  1381  	SSLRequestDoc.Type = "ssl.Request"
  1382  	SSLRequestDoc.Comments[encoder.LineComment] = " Request is a request for the SSL protocol"
  1383  	SSLRequestDoc.Description = "Request is a request for the SSL protocol"
  1384  	SSLRequestDoc.AppearsIn = []encoder.Appearance{
  1385  		{
  1386  			TypeName:  "Template",
  1387  			FieldName: "ssl",
  1388  		},
  1389  	}
  1390  	SSLRequestDoc.PartDefinitions = []encoder.KeyValue{
  1391  		{
  1392  			Key:   "type",
  1393  			Value: "Type is the type of request made",
  1394  		},
  1395  		{
  1396  			Key:   "response",
  1397  			Value: "JSON SSL protocol handshake details",
  1398  		},
  1399  		{
  1400  			Key:   "not_after",
  1401  			Value: "Timestamp after which the remote cert expires",
  1402  		},
  1403  		{
  1404  			Key:   "host",
  1405  			Value: "Host is the input to the template",
  1406  		},
  1407  		{
  1408  			Key:   "matched",
  1409  			Value: "Matched is the input which was matched upon",
  1410  		},
  1411  	}
  1412  	SSLRequestDoc.Fields = make([]encoder.Doc, 5)
  1413  	SSLRequestDoc.Fields[0].Name = "address"
  1414  	SSLRequestDoc.Fields[0].Type = "string"
  1415  	SSLRequestDoc.Fields[0].Note = ""
  1416  	SSLRequestDoc.Fields[0].Description = "Address contains address for the request"
  1417  	SSLRequestDoc.Fields[0].Comments[encoder.LineComment] = "Address contains address for the request"
  1418  	SSLRequestDoc.Fields[1].Name = "min_version"
  1419  	SSLRequestDoc.Fields[1].Type = "string"
  1420  	SSLRequestDoc.Fields[1].Note = ""
  1421  	SSLRequestDoc.Fields[1].Description = "Minimum tls version - auto if not specified."
  1422  	SSLRequestDoc.Fields[1].Comments[encoder.LineComment] = "Minimum tls version - auto if not specified."
  1423  	SSLRequestDoc.Fields[1].Values = []string{
  1424  		"sslv3",
  1425  		"tls10",
  1426  		"tls11",
  1427  		"tls12",
  1428  		"tls13",
  1429  	}
  1430  	SSLRequestDoc.Fields[2].Name = "max_version"
  1431  	SSLRequestDoc.Fields[2].Type = "string"
  1432  	SSLRequestDoc.Fields[2].Note = ""
  1433  	SSLRequestDoc.Fields[2].Description = "Max tls version - auto if not specified."
  1434  	SSLRequestDoc.Fields[2].Comments[encoder.LineComment] = "Max tls version - auto if not specified."
  1435  	SSLRequestDoc.Fields[2].Values = []string{
  1436  		"sslv3",
  1437  		"tls10",
  1438  		"tls11",
  1439  		"tls12",
  1440  		"tls13",
  1441  	}
  1442  	SSLRequestDoc.Fields[3].Name = "cipher_suites"
  1443  	SSLRequestDoc.Fields[3].Type = "[]string"
  1444  	SSLRequestDoc.Fields[3].Note = ""
  1445  	SSLRequestDoc.Fields[3].Description = "Client Cipher Suites  - auto if not specified."
  1446  	SSLRequestDoc.Fields[3].Comments[encoder.LineComment] = "Client Cipher Suites  - auto if not specified."
  1447  	SSLRequestDoc.Fields[4].Name = "scan_mode"
  1448  	SSLRequestDoc.Fields[4].Type = "string"
  1449  	SSLRequestDoc.Fields[4].Note = ""
  1450  	SSLRequestDoc.Fields[4].Description = "description: |\n   Tls Scan Mode - auto if not specified\n values:\n   - \"ctls\"\n   - \"ztls\"\n   - \"auto\"\n	 - \"openssl\" # reverts to \"auto\" is openssl is not installed"
  1451  	SSLRequestDoc.Fields[4].Comments[encoder.LineComment] = " description: |"
  1452  
  1453  	WEBSOCKETRequestDoc.Type = "websocket.Request"
  1454  	WEBSOCKETRequestDoc.Comments[encoder.LineComment] = " Request is a request for the Websocket protocol"
  1455  	WEBSOCKETRequestDoc.Description = "Request is a request for the Websocket protocol"
  1456  	WEBSOCKETRequestDoc.AppearsIn = []encoder.Appearance{
  1457  		{
  1458  			TypeName:  "Template",
  1459  			FieldName: "websocket",
  1460  		},
  1461  	}
  1462  	WEBSOCKETRequestDoc.PartDefinitions = []encoder.KeyValue{
  1463  		{
  1464  			Key:   "type",
  1465  			Value: "Type is the type of request made",
  1466  		},
  1467  		{
  1468  			Key:   "success",
  1469  			Value: "Success specifies whether websocket connection was successful",
  1470  		},
  1471  		{
  1472  			Key:   "request",
  1473  			Value: "Websocket request made to the server",
  1474  		},
  1475  		{
  1476  			Key:   "response",
  1477  			Value: "Websocket response received from the server",
  1478  		},
  1479  		{
  1480  			Key:   "host",
  1481  			Value: "Host is the input to the template",
  1482  		},
  1483  		{
  1484  			Key:   "matched",
  1485  			Value: "Matched is the input which was matched upon",
  1486  		},
  1487  	}
  1488  	WEBSOCKETRequestDoc.Fields = make([]encoder.Doc, 5)
  1489  	WEBSOCKETRequestDoc.Fields[0].Name = "address"
  1490  	WEBSOCKETRequestDoc.Fields[0].Type = "string"
  1491  	WEBSOCKETRequestDoc.Fields[0].Note = ""
  1492  	WEBSOCKETRequestDoc.Fields[0].Description = "Address contains address for the request"
  1493  	WEBSOCKETRequestDoc.Fields[0].Comments[encoder.LineComment] = "Address contains address for the request"
  1494  	WEBSOCKETRequestDoc.Fields[1].Name = "inputs"
  1495  	WEBSOCKETRequestDoc.Fields[1].Type = "[]websocket.Input"
  1496  	WEBSOCKETRequestDoc.Fields[1].Note = ""
  1497  	WEBSOCKETRequestDoc.Fields[1].Description = "Inputs contains inputs for the websocket protocol"
  1498  	WEBSOCKETRequestDoc.Fields[1].Comments[encoder.LineComment] = "Inputs contains inputs for the websocket protocol"
  1499  	WEBSOCKETRequestDoc.Fields[2].Name = "headers"
  1500  	WEBSOCKETRequestDoc.Fields[2].Type = "map[string]string"
  1501  	WEBSOCKETRequestDoc.Fields[2].Note = ""
  1502  	WEBSOCKETRequestDoc.Fields[2].Description = "Headers contains headers for the request."
  1503  	WEBSOCKETRequestDoc.Fields[2].Comments[encoder.LineComment] = "Headers contains headers for the request."
  1504  	WEBSOCKETRequestDoc.Fields[3].Name = "attack"
  1505  	WEBSOCKETRequestDoc.Fields[3].Type = "generators.AttackTypeHolder"
  1506  	WEBSOCKETRequestDoc.Fields[3].Note = ""
  1507  	WEBSOCKETRequestDoc.Fields[3].Description = "Attack is the type of payload combinations to perform.\n\nSniper is each payload once, pitchfork combines multiple payload sets and clusterbomb generates\npermutations and combinations for all payloads."
  1508  	WEBSOCKETRequestDoc.Fields[3].Comments[encoder.LineComment] = "Attack is the type of payload combinations to perform."
  1509  	WEBSOCKETRequestDoc.Fields[4].Name = "payloads"
  1510  	WEBSOCKETRequestDoc.Fields[4].Type = "map[string]interface{}"
  1511  	WEBSOCKETRequestDoc.Fields[4].Note = ""
  1512  	WEBSOCKETRequestDoc.Fields[4].Description = "Payloads contains any payloads for the current request.\n\nPayloads support both key-values combinations where a list\nof payloads is provided, or optionally a single file can also\nbe provided as payload which will be read on run-time."
  1513  	WEBSOCKETRequestDoc.Fields[4].Comments[encoder.LineComment] = "Payloads contains any payloads for the current request."
  1514  
  1515  	WEBSOCKETInputDoc.Type = "websocket.Input"
  1516  	WEBSOCKETInputDoc.Comments[encoder.LineComment] = ""
  1517  	WEBSOCKETInputDoc.Description = ""
  1518  	WEBSOCKETInputDoc.AppearsIn = []encoder.Appearance{
  1519  		{
  1520  			TypeName:  "websocket.Request",
  1521  			FieldName: "inputs",
  1522  		},
  1523  	}
  1524  	WEBSOCKETInputDoc.Fields = make([]encoder.Doc, 2)
  1525  	WEBSOCKETInputDoc.Fields[0].Name = "data"
  1526  	WEBSOCKETInputDoc.Fields[0].Type = "string"
  1527  	WEBSOCKETInputDoc.Fields[0].Note = ""
  1528  	WEBSOCKETInputDoc.Fields[0].Description = "Data is the data to send as the input.\n\nIt supports DSL Helper Functions as well as normal expressions."
  1529  	WEBSOCKETInputDoc.Fields[0].Comments[encoder.LineComment] = "Data is the data to send as the input."
  1530  
  1531  	WEBSOCKETInputDoc.Fields[0].AddExample("", "TEST")
  1532  
  1533  	WEBSOCKETInputDoc.Fields[0].AddExample("", "hex_decode('50494e47')")
  1534  	WEBSOCKETInputDoc.Fields[1].Name = "name"
  1535  	WEBSOCKETInputDoc.Fields[1].Type = "string"
  1536  	WEBSOCKETInputDoc.Fields[1].Note = ""
  1537  	WEBSOCKETInputDoc.Fields[1].Description = "Name is the optional name of the data read to provide matching on."
  1538  	WEBSOCKETInputDoc.Fields[1].Comments[encoder.LineComment] = "Name is the optional name of the data read to provide matching on."
  1539  
  1540  	WEBSOCKETInputDoc.Fields[1].AddExample("", "prefix")
  1541  
  1542  	WHOISRequestDoc.Type = "whois.Request"
  1543  	WHOISRequestDoc.Comments[encoder.LineComment] = " Request is a request for the WHOIS protocol"
  1544  	WHOISRequestDoc.Description = "Request is a request for the WHOIS protocol"
  1545  	WHOISRequestDoc.AppearsIn = []encoder.Appearance{
  1546  		{
  1547  			TypeName:  "Template",
  1548  			FieldName: "whois",
  1549  		},
  1550  	}
  1551  	WHOISRequestDoc.Fields = make([]encoder.Doc, 2)
  1552  	WHOISRequestDoc.Fields[0].Name = "query"
  1553  	WHOISRequestDoc.Fields[0].Type = "string"
  1554  	WHOISRequestDoc.Fields[0].Note = ""
  1555  	WHOISRequestDoc.Fields[0].Description = "Query contains query for the request"
  1556  	WHOISRequestDoc.Fields[0].Comments[encoder.LineComment] = "Query contains query for the request"
  1557  	WHOISRequestDoc.Fields[1].Name = "server"
  1558  	WHOISRequestDoc.Fields[1].Type = "string"
  1559  	WHOISRequestDoc.Fields[1].Note = ""
  1560  	WHOISRequestDoc.Fields[1].Description = "description: |\n 	 Optional WHOIS server URL.\n\n 	 If present, specifies the WHOIS server to execute the Request on.\n   Otherwise, nil enables bootstrapping"
  1561  	WHOISRequestDoc.Fields[1].Comments[encoder.LineComment] = " description: |"
  1562  
  1563  	HTTPSignatureTypeHolderDoc.Type = "http.SignatureTypeHolder"
  1564  	HTTPSignatureTypeHolderDoc.Comments[encoder.LineComment] = " SignatureTypeHolder is used to hold internal type of the signature"
  1565  	HTTPSignatureTypeHolderDoc.Description = "SignatureTypeHolder is used to hold internal type of the signature"
  1566  	HTTPSignatureTypeHolderDoc.AppearsIn = []encoder.Appearance{
  1567  		{
  1568  			TypeName:  "Template",
  1569  			FieldName: "signature",
  1570  		},
  1571  	}
  1572  	HTTPSignatureTypeHolderDoc.Fields = make([]encoder.Doc, 0)
  1573  
  1574  	VARIABLESVariableDoc.Type = "variables.Variable"
  1575  	VARIABLESVariableDoc.Comments[encoder.LineComment] = " Variable is a key-value pair of strings that can be used"
  1576  	VARIABLESVariableDoc.Description = "Variable is a key-value pair of strings that can be used\n throughout template."
  1577  	VARIABLESVariableDoc.AppearsIn = []encoder.Appearance{
  1578  		{
  1579  			TypeName:  "Template",
  1580  			FieldName: "variables",
  1581  		},
  1582  	}
  1583  	VARIABLESVariableDoc.Fields = make([]encoder.Doc, 0)
  1584  }
  1585  
  1586  // GetTemplateDoc returns documentation for the file templates_doc.go.
  1587  func GetTemplateDoc() *encoder.FileDoc {
  1588  	return &encoder.FileDoc{
  1589  		Name:        "Template",
  1590  		Description: "",
  1591  		Structs: []*encoder.Doc{
  1592  			&TemplateDoc,
  1593  			&MODELInfoDoc,
  1594  			&STRINGSLICEStringSliceDoc,
  1595  			&STRINGSLICERawStringSliceDoc,
  1596  			&SEVERITYHolderDoc,
  1597  			&MODELClassificationDoc,
  1598  			&HTTPRequestDoc,
  1599  			&GENERATORSAttackTypeHolderDoc,
  1600  			&HTTPMethodTypeHolderDoc,
  1601  			&FUZZRuleDoc,
  1602  			&SignatureTypeHolderDoc,
  1603  			&DNSRequestDoc,
  1604  			&DNSRequestTypeHolderDoc,
  1605  			&FILERequestDoc,
  1606  			&NETWORKRequestDoc,
  1607  			&NETWORKInputDoc,
  1608  			&NetworkInputTypeHolderDoc,
  1609  			&HEADLESSRequestDoc,
  1610  			&ENGINEActionDoc,
  1611  			&ActionTypeHolderDoc,
  1612  			&USERAGENTUserAgentHolderDoc,
  1613  			&SSLRequestDoc,
  1614  			&WEBSOCKETRequestDoc,
  1615  			&WEBSOCKETInputDoc,
  1616  			&WHOISRequestDoc,
  1617  			&HTTPSignatureTypeHolderDoc,
  1618  			&VARIABLESVariableDoc,
  1619  		},
  1620  	}
  1621  }