class OutputBuilderCommon
- OutputBuilderCommon
- OutputBuilder
- Reference
- Object
Defined in:
output_builder/common.crConstant Summary
-
HANDLED_PARAM_TYPES =
Set {"header", "cookie", "query", "path", "extra", "flag", "argument", "env", "form", "json"} -
Parameter kinds already covered by the dedicated render sections above (trees, named lists, query params baked into URL, or body payloads).
-
MOBILE_METADATA_KEYS =
["via", "query", "action", "category", "host", "package", "component_type", "exported", "explicit", "permission", "read_permission", "write_permission", "grant_uri_permissions", "path_permissions", "extras"] -
Fixed order so plain output is deterministic. The protocol drives the prefix and "path" comes from path params, so neither is repeated here. component_type/exported/explicit appear on explicit-intent (filter-less exported) and provider surfaces; the *_permission / grant_uri_permissions / path_permissions keys only on providers. Absent keys are skipped per endpoint.
-
MOBILE_PROTOCOL_LABELS =
{"mobile-scheme" => "SCHEME", "android-intent" => "INTENT", "universal-link" => "UNIVERSAL", "android-provider" => "PROVIDER"} -
Mobile entry points keep method = "GET" internally; the protocol carries the real semantics and drives the display prefix.
-
PARAM_NAME_FIELDS =
[{"extra", "extras"}, {"flag", "flags"}, {"argument", "arguments"}, {"env", "env"}] -
Parameter kinds drawn as one cyan comma-joined line of names, in emission order:
{param_type, label}. -
PARAM_TREE_FIELDS =
[{"header", "headers", ": "}, {"cookie", "cookies", "="}] -
Parameter kinds drawn as an indented tree under a
○ <label>:header, in emission order:{param_type, label, name/value separator}. Both are green and both mark params the analyzer could not resolve; the separator follows the wire syntax of the thing being printed (Name: valuefor a header,name=valuefor a cookie).
Instance Method Summary
-
#print(endpoints : Array(Endpoint), passive_results : Array(PassiveScanResult))
The plain report is the only format that frames itself — a heading over the endpoint list, and the passive-scan findings appended below a second one.
- #print(endpoints : Array(Endpoint))
Instance methods inherited from class OutputBuilder
analyzer_failures : Array(AnalyzerFailure)
analyzer_failures,
analyzer_failures=(analyzer_failures : Array(AnalyzerFailure))
analyzer_failures=,
bake_endpoint(url : String, params : Array(Param))
bake_endpoint,
io : IO
io,
io=(io : IO)
io=,
logger : NoirLogger
logger,
ob_puts(message)
ob_puts,
output_file : String
output_file,
print(endpoints : Array(Endpoint), passive_results : Array(PassiveScanResult))print print
Constructor methods inherited from class OutputBuilder
new(options : Hash(String, YAML::Any))
new
Instance Method Detail
The plain report is the only format that frames itself — a heading over
the endpoint list, and the passive-scan findings appended below a second
one. Both used to sit in NoirRunner#report, which forced the runner to
special-case "is this the default format?" on either side of a dispatch
that otherwise treats every format alike.