webshell-analyzer 1.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. webshell_analyzer/__init__.py +0 -0
  2. webshell_analyzer/cli/__init__.py +0 -0
  3. webshell_analyzer/cli/cli.py +151 -0
  4. webshell_analyzer/extractor/ast_extraction/composer.json +5 -0
  5. webshell_analyzer/extractor/ast_extraction/composer.lock +77 -0
  6. webshell_analyzer/extractor/ast_extraction/src/NodeVisitor.php +85 -0
  7. webshell_analyzer/extractor/ast_extraction/src/astBuilder.php +50 -0
  8. webshell_analyzer/extractor/ast_extraction/src/astExtractor.php +50 -0
  9. webshell_analyzer/extractor/ast_extraction/src/featuresDeclare.php +36 -0
  10. webshell_analyzer/extractor/ast_extraction/vendor/autoload.php +25 -0
  11. webshell_analyzer/extractor/ast_extraction/vendor/composer/ClassLoader.php +579 -0
  12. webshell_analyzer/extractor/ast_extraction/vendor/composer/InstalledVersions.php +378 -0
  13. webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_classmap.php +10 -0
  14. webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_namespaces.php +9 -0
  15. webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_psr4.php +10 -0
  16. webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_real.php +38 -0
  17. webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_static.php +36 -0
  18. webshell_analyzer/extractor/ast_extraction/vendor/composer/installed.json +67 -0
  19. webshell_analyzer/extractor/ast_extraction/vendor/composer/installed.php +32 -0
  20. webshell_analyzer/extractor/ast_extraction/vendor/composer/platform_check.php +26 -0
  21. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php +150 -0
  22. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Class_.php +151 -0
  23. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Declaration.php +50 -0
  24. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php +86 -0
  25. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Enum_.php +116 -0
  26. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php +73 -0
  27. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Function_.php +67 -0
  28. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Interface_.php +94 -0
  29. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php +147 -0
  30. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php +45 -0
  31. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php +171 -0
  32. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php +223 -0
  33. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php +65 -0
  34. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php +145 -0
  35. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Trait_.php +83 -0
  36. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Use_.php +49 -0
  37. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder.php +12 -0
  38. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php +375 -0
  39. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php +338 -0
  40. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Comment/Doc.php +6 -0
  41. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Comment.php +209 -0
  42. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php +6 -0
  43. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php +237 -0
  44. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Error.php +173 -0
  45. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php +43 -0
  46. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php +17 -0
  47. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler.php +12 -0
  48. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php +31 -0
  49. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/Differ.php +178 -0
  50. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php +71 -0
  51. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php +237 -0
  52. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php +282 -0
  53. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php +108 -0
  54. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php +230 -0
  55. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AsymmetricVisibilityTokenEmulator.php +93 -0
  56. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php +49 -0
  57. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php +26 -0
  58. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php +45 -0
  59. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php +60 -0
  60. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php +19 -0
  61. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php +60 -0
  62. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PipeOperatorEmulator.php +45 -0
  63. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PropertyTokenEmulator.php +19 -0
  64. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php +31 -0
  65. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php +31 -0
  66. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php +37 -0
  67. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php +30 -0
  68. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/VoidCastEmulator.php +98 -0
  69. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer.php +116 -0
  70. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Modifiers.php +85 -0
  71. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NameContext.php +284 -0
  72. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php +44 -0
  73. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php +43 -0
  74. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php +33 -0
  75. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php +27 -0
  76. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php +36 -0
  77. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.php +13 -0
  78. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php +36 -0
  79. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php +37 -0
  80. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php +33 -0
  81. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php +15 -0
  82. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php +34 -0
  83. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php +84 -0
  84. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php +33 -0
  85. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php +11 -0
  86. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php +11 -0
  87. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php +11 -0
  88. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php +11 -0
  89. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php +11 -0
  90. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php +11 -0
  91. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php +11 -0
  92. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php +11 -0
  93. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php +11 -0
  94. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php +11 -0
  95. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php +11 -0
  96. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php +11 -0
  97. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php +11 -0
  98. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php +29 -0
  99. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php +33 -0
  100. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php +15 -0
  101. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php +15 -0
  102. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php +15 -0
  103. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php +15 -0
  104. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php +15 -0
  105. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php +15 -0
  106. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php +15 -0
  107. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php +15 -0
  108. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php +15 -0
  109. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php +15 -0
  110. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php +15 -0
  111. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php +15 -0
  112. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php +15 -0
  113. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php +15 -0
  114. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php +15 -0
  115. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php +15 -0
  116. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php +15 -0
  117. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php +15 -0
  118. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php +15 -0
  119. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php +15 -0
  120. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pipe.php +15 -0
  121. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php +15 -0
  122. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php +15 -0
  123. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php +15 -0
  124. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php +15 -0
  125. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php +15 -0
  126. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php +15 -0
  127. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php +15 -0
  128. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php +37 -0
  129. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php +29 -0
  130. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php +29 -0
  131. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php +60 -0
  132. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php +11 -0
  133. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php +15 -0
  134. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php +16 -0
  135. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php +15 -0
  136. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php +11 -0
  137. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php +15 -0
  138. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php +11 -0
  139. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Void_.php +11 -0
  140. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php +25 -0
  141. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php +36 -0
  142. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php +29 -0
  143. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php +86 -0
  144. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php +15 -0
  145. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php +30 -0
  146. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php +29 -0
  147. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php +30 -0
  148. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php +29 -0
  149. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php +29 -0
  150. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php +33 -0
  151. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php +38 -0
  152. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php +38 -0
  153. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php +35 -0
  154. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php +29 -0
  155. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php +34 -0
  156. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php +32 -0
  157. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php +45 -0
  158. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php +40 -0
  159. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php +45 -0
  160. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php +35 -0
  161. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php +29 -0
  162. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php +29 -0
  163. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php +29 -0
  164. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php +29 -0
  165. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php +29 -0
  166. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php +35 -0
  167. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php +30 -0
  168. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php +45 -0
  169. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php +36 -0
  170. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php +37 -0
  171. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php +29 -0
  172. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php +29 -0
  173. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php +29 -0
  174. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php +29 -0
  175. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php +29 -0
  176. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php +33 -0
  177. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php +8 -0
  178. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php +40 -0
  179. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php +85 -0
  180. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php +32 -0
  181. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php +27 -0
  182. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php +29 -0
  183. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php +49 -0
  184. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php +49 -0
  185. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php +278 -0
  186. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php +29 -0
  187. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php +123 -0
  188. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/PropertyHook.php +105 -0
  189. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php +37 -0
  190. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php +15 -0
  191. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php +15 -0
  192. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php +17 -0
  193. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php +78 -0
  194. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php +82 -0
  195. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php +34 -0
  196. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php +15 -0
  197. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php +15 -0
  198. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php +15 -0
  199. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php +15 -0
  200. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php +15 -0
  201. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php +15 -0
  202. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php +15 -0
  203. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php +15 -0
  204. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Property.php +15 -0
  205. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php +15 -0
  206. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php +27 -0
  207. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php +161 -0
  208. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php +6 -0
  209. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/StaticVar.php +39 -0
  210. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php +29 -0
  211. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php +29 -0
  212. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php +33 -0
  213. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php +40 -0
  214. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php +77 -0
  215. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php +109 -0
  216. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php +154 -0
  217. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php +94 -0
  218. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php +37 -0
  219. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php +29 -0
  220. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php +17 -0
  221. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php +34 -0
  222. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php +33 -0
  223. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php +29 -0
  224. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php +33 -0
  225. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php +29 -0
  226. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php +36 -0
  227. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php +44 -0
  228. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php +32 -0
  229. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php +29 -0
  230. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php +47 -0
  231. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php +50 -0
  232. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php +81 -0
  233. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php +29 -0
  234. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php +30 -0
  235. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php +41 -0
  236. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php +29 -0
  237. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php +46 -0
  238. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php +29 -0
  239. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php +40 -0
  240. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php +30 -0
  241. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php +37 -0
  242. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php +16 -0
  243. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php +121 -0
  244. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php +17 -0
  245. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php +29 -0
  246. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php +15 -0
  247. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php +30 -0
  248. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php +33 -0
  249. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php +33 -0
  250. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php +37 -0
  251. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php +33 -0
  252. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php +12 -0
  253. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php +34 -0
  254. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php +37 -0
  255. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php +29 -0
  256. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php +17 -0
  257. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php +47 -0
  258. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php +33 -0
  259. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php +8 -0
  260. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php +27 -0
  261. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/UseItem.php +55 -0
  262. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php +16 -0
  263. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php +27 -0
  264. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node.php +150 -0
  265. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php +181 -0
  266. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php +299 -0
  267. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeFinder.php +90 -0
  268. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php +287 -0
  269. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php +26 -0
  270. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php +19 -0
  271. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php +82 -0
  272. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php +47 -0
  273. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php +49 -0
  274. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php +269 -0
  275. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php +73 -0
  276. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php +51 -0
  277. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor.php +124 -0
  278. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php +24 -0
  279. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php +2919 -0
  280. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Parser/Php8.php +2917 -0
  281. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Parser.php +24 -0
  282. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php +1335 -0
  283. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php +42 -0
  284. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/PhpVersion.php +175 -0
  285. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php +1232 -0
  286. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter.php +51 -0
  287. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php +1706 -0
  288. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Token.php +18 -0
  289. webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/compatibility_tokens.php +71 -0
  290. webshell_analyzer/extractor/extractor.py +73 -0
  291. webshell_analyzer/extractor/lexical_extraction/lexicalExtractor.py +31 -0
  292. webshell_analyzer/extractor/statistical_extraction/statisticalExtractor.py +60 -0
  293. webshell_analyzer/model/features_selected.json +1 -0
  294. webshell_analyzer/model/model_loader.py +19 -0
  295. webshell_analyzer/model/rf_webshell_model.joblib +0 -0
  296. webshell_analyzer/modules/__init__.py +0 -0
  297. webshell_analyzer/modules/detector.py +174 -0
  298. webshell_analyzer/modules/scanner.py +68 -0
  299. webshell_analyzer-1.0.0.dist-info/METADATA +105 -0
  300. webshell_analyzer-1.0.0.dist-info/RECORD +304 -0
  301. webshell_analyzer-1.0.0.dist-info/WHEEL +5 -0
  302. webshell_analyzer-1.0.0.dist-info/entry_points.txt +2 -0
  303. webshell_analyzer-1.0.0.dist-info/licenses/LICENSE +21 -0
  304. webshell_analyzer-1.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,33 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser\Node\Stmt;
4
+
5
+ use PhpParser\Node;
6
+
7
+ class While_ extends Node\Stmt {
8
+ /** @var Node\Expr Condition */
9
+ public Node\Expr $cond;
10
+ /** @var Node\Stmt[] Statements */
11
+ public array $stmts;
12
+
13
+ /**
14
+ * Constructs a while node.
15
+ *
16
+ * @param Node\Expr $cond Condition
17
+ * @param Node\Stmt[] $stmts Statements
18
+ * @param array<string, mixed> $attributes Additional attributes
19
+ */
20
+ public function __construct(Node\Expr $cond, array $stmts = [], array $attributes = []) {
21
+ $this->attributes = $attributes;
22
+ $this->cond = $cond;
23
+ $this->stmts = $stmts;
24
+ }
25
+
26
+ public function getSubNodeNames(): array {
27
+ return ['cond', 'stmts'];
28
+ }
29
+
30
+ public function getType(): string {
31
+ return 'Stmt_While';
32
+ }
33
+ }
@@ -0,0 +1,8 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser\Node;
4
+
5
+ use PhpParser\NodeAbstract;
6
+
7
+ abstract class Stmt extends NodeAbstract {
8
+ }
@@ -0,0 +1,27 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser\Node;
4
+
5
+ class UnionType extends ComplexType {
6
+ /** @var (Identifier|Name|IntersectionType)[] Types */
7
+ public array $types;
8
+
9
+ /**
10
+ * Constructs a union type.
11
+ *
12
+ * @param (Identifier|Name|IntersectionType)[] $types Types
13
+ * @param array<string, mixed> $attributes Additional attributes
14
+ */
15
+ public function __construct(array $types, array $attributes = []) {
16
+ $this->attributes = $attributes;
17
+ $this->types = $types;
18
+ }
19
+
20
+ public function getSubNodeNames(): array {
21
+ return ['types'];
22
+ }
23
+
24
+ public function getType(): string {
25
+ return 'UnionType';
26
+ }
27
+ }
@@ -0,0 +1,55 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser\Node;
4
+
5
+ use PhpParser\Node;
6
+ use PhpParser\NodeAbstract;
7
+ use PhpParser\Node\Stmt\Use_;
8
+
9
+ class UseItem extends NodeAbstract {
10
+ /**
11
+ * @var Use_::TYPE_* One of the Stmt\Use_::TYPE_* constants. Will only differ from TYPE_UNKNOWN for mixed group uses
12
+ */
13
+ public int $type;
14
+ /** @var Node\Name Namespace, class, function or constant to alias */
15
+ public Name $name;
16
+ /** @var Identifier|null Alias */
17
+ public ?Identifier $alias;
18
+
19
+ /**
20
+ * Constructs an alias (use) item node.
21
+ *
22
+ * @param Node\Name $name Namespace/Class to alias
23
+ * @param null|string|Identifier $alias Alias
24
+ * @param Use_::TYPE_* $type Type of the use element (for mixed group use only)
25
+ * @param array<string, mixed> $attributes Additional attributes
26
+ */
27
+ public function __construct(Node\Name $name, $alias = null, int $type = Use_::TYPE_UNKNOWN, array $attributes = []) {
28
+ $this->attributes = $attributes;
29
+ $this->type = $type;
30
+ $this->name = $name;
31
+ $this->alias = \is_string($alias) ? new Identifier($alias) : $alias;
32
+ }
33
+
34
+ public function getSubNodeNames(): array {
35
+ return ['type', 'name', 'alias'];
36
+ }
37
+
38
+ /**
39
+ * Get alias. If not explicitly given this is the last component of the used name.
40
+ */
41
+ public function getAlias(): Identifier {
42
+ if (null !== $this->alias) {
43
+ return $this->alias;
44
+ }
45
+
46
+ return new Identifier($this->name->getLast());
47
+ }
48
+
49
+ public function getType(): string {
50
+ return 'UseItem';
51
+ }
52
+ }
53
+
54
+ // @deprecated compatibility alias
55
+ class_alias(UseItem::class, Stmt\UseUse::class);
@@ -0,0 +1,16 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser\Node;
4
+
5
+ /**
6
+ * Represents a name that is written in source code with a leading dollar,
7
+ * but is not a proper variable. The leading dollar is not stored as part of the name.
8
+ *
9
+ * Examples: Names in property declarations are formatted as variables. Names in static property
10
+ * lookups are also formatted as variables.
11
+ */
12
+ class VarLikeIdentifier extends Identifier {
13
+ public function getType(): string {
14
+ return 'VarLikeIdentifier';
15
+ }
16
+ }
@@ -0,0 +1,27 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser\Node;
4
+
5
+ use PhpParser\NodeAbstract;
6
+
7
+ /**
8
+ * Represents the "..." in "foo(...)" of the first-class callable syntax.
9
+ */
10
+ class VariadicPlaceholder extends NodeAbstract {
11
+ /**
12
+ * Create a variadic argument placeholder (first-class callable syntax).
13
+ *
14
+ * @param array<string, mixed> $attributes Additional attributes
15
+ */
16
+ public function __construct(array $attributes = []) {
17
+ $this->attributes = $attributes;
18
+ }
19
+
20
+ public function getType(): string {
21
+ return 'VariadicPlaceholder';
22
+ }
23
+
24
+ public function getSubNodeNames(): array {
25
+ return [];
26
+ }
27
+ }
@@ -0,0 +1,150 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser;
4
+
5
+ interface Node {
6
+ /**
7
+ * Gets the type of the node.
8
+ *
9
+ * @psalm-return non-empty-string
10
+ * @return string Type of the node
11
+ */
12
+ public function getType(): string;
13
+
14
+ /**
15
+ * Gets the names of the sub nodes.
16
+ *
17
+ * @return string[] Names of sub nodes
18
+ */
19
+ public function getSubNodeNames(): array;
20
+
21
+ /**
22
+ * Gets line the node started in (alias of getStartLine).
23
+ *
24
+ * @return int Start line (or -1 if not available)
25
+ * @phpstan-return -1|positive-int
26
+ *
27
+ * @deprecated Use getStartLine() instead
28
+ */
29
+ public function getLine(): int;
30
+
31
+ /**
32
+ * Gets line the node started in.
33
+ *
34
+ * Requires the 'startLine' attribute to be enabled in the lexer (enabled by default).
35
+ *
36
+ * @return int Start line (or -1 if not available)
37
+ * @phpstan-return -1|positive-int
38
+ */
39
+ public function getStartLine(): int;
40
+
41
+ /**
42
+ * Gets the line the node ended in.
43
+ *
44
+ * Requires the 'endLine' attribute to be enabled in the lexer (enabled by default).
45
+ *
46
+ * @return int End line (or -1 if not available)
47
+ * @phpstan-return -1|positive-int
48
+ */
49
+ public function getEndLine(): int;
50
+
51
+ /**
52
+ * Gets the token offset of the first token that is part of this node.
53
+ *
54
+ * The offset is an index into the array returned by Lexer::getTokens().
55
+ *
56
+ * Requires the 'startTokenPos' attribute to be enabled in the lexer (DISABLED by default).
57
+ *
58
+ * @return int Token start position (or -1 if not available)
59
+ */
60
+ public function getStartTokenPos(): int;
61
+
62
+ /**
63
+ * Gets the token offset of the last token that is part of this node.
64
+ *
65
+ * The offset is an index into the array returned by Lexer::getTokens().
66
+ *
67
+ * Requires the 'endTokenPos' attribute to be enabled in the lexer (DISABLED by default).
68
+ *
69
+ * @return int Token end position (or -1 if not available)
70
+ */
71
+ public function getEndTokenPos(): int;
72
+
73
+ /**
74
+ * Gets the file offset of the first character that is part of this node.
75
+ *
76
+ * Requires the 'startFilePos' attribute to be enabled in the lexer (DISABLED by default).
77
+ *
78
+ * @return int File start position (or -1 if not available)
79
+ */
80
+ public function getStartFilePos(): int;
81
+
82
+ /**
83
+ * Gets the file offset of the last character that is part of this node.
84
+ *
85
+ * Requires the 'endFilePos' attribute to be enabled in the lexer (DISABLED by default).
86
+ *
87
+ * @return int File end position (or -1 if not available)
88
+ */
89
+ public function getEndFilePos(): int;
90
+
91
+ /**
92
+ * Gets all comments directly preceding this node.
93
+ *
94
+ * The comments are also available through the "comments" attribute.
95
+ *
96
+ * @return Comment[]
97
+ */
98
+ public function getComments(): array;
99
+
100
+ /**
101
+ * Gets the doc comment of the node.
102
+ *
103
+ * @return null|Comment\Doc Doc comment object or null
104
+ */
105
+ public function getDocComment(): ?Comment\Doc;
106
+
107
+ /**
108
+ * Sets the doc comment of the node.
109
+ *
110
+ * This will either replace an existing doc comment or add it to the comments array.
111
+ *
112
+ * @param Comment\Doc $docComment Doc comment to set
113
+ */
114
+ public function setDocComment(Comment\Doc $docComment): void;
115
+
116
+ /**
117
+ * Sets an attribute on a node.
118
+ *
119
+ * @param mixed $value
120
+ */
121
+ public function setAttribute(string $key, $value): void;
122
+
123
+ /**
124
+ * Returns whether an attribute exists.
125
+ */
126
+ public function hasAttribute(string $key): bool;
127
+
128
+ /**
129
+ * Returns the value of an attribute.
130
+ *
131
+ * @param mixed $default
132
+ *
133
+ * @return mixed
134
+ */
135
+ public function getAttribute(string $key, $default = null);
136
+
137
+ /**
138
+ * Returns all the attributes of this node.
139
+ *
140
+ * @return array<string, mixed>
141
+ */
142
+ public function getAttributes(): array;
143
+
144
+ /**
145
+ * Replaces all the attributes of this node.
146
+ *
147
+ * @param array<string, mixed> $attributes
148
+ */
149
+ public function setAttributes(array $attributes): void;
150
+ }
@@ -0,0 +1,181 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser;
4
+
5
+ abstract class NodeAbstract implements Node, \JsonSerializable {
6
+ /** @var array<string, mixed> Attributes */
7
+ protected array $attributes;
8
+
9
+ /**
10
+ * Creates a Node.
11
+ *
12
+ * @param array<string, mixed> $attributes Array of attributes
13
+ */
14
+ public function __construct(array $attributes = []) {
15
+ $this->attributes = $attributes;
16
+ }
17
+
18
+ /**
19
+ * Gets line the node started in (alias of getStartLine).
20
+ *
21
+ * @return int Start line (or -1 if not available)
22
+ * @phpstan-return -1|positive-int
23
+ */
24
+ public function getLine(): int {
25
+ return $this->attributes['startLine'] ?? -1;
26
+ }
27
+
28
+ /**
29
+ * Gets line the node started in.
30
+ *
31
+ * Requires the 'startLine' attribute to be enabled in the lexer (enabled by default).
32
+ *
33
+ * @return int Start line (or -1 if not available)
34
+ * @phpstan-return -1|positive-int
35
+ */
36
+ public function getStartLine(): int {
37
+ return $this->attributes['startLine'] ?? -1;
38
+ }
39
+
40
+ /**
41
+ * Gets the line the node ended in.
42
+ *
43
+ * Requires the 'endLine' attribute to be enabled in the lexer (enabled by default).
44
+ *
45
+ * @return int End line (or -1 if not available)
46
+ * @phpstan-return -1|positive-int
47
+ */
48
+ public function getEndLine(): int {
49
+ return $this->attributes['endLine'] ?? -1;
50
+ }
51
+
52
+ /**
53
+ * Gets the token offset of the first token that is part of this node.
54
+ *
55
+ * The offset is an index into the array returned by Lexer::getTokens().
56
+ *
57
+ * Requires the 'startTokenPos' attribute to be enabled in the lexer (DISABLED by default).
58
+ *
59
+ * @return int Token start position (or -1 if not available)
60
+ */
61
+ public function getStartTokenPos(): int {
62
+ return $this->attributes['startTokenPos'] ?? -1;
63
+ }
64
+
65
+ /**
66
+ * Gets the token offset of the last token that is part of this node.
67
+ *
68
+ * The offset is an index into the array returned by Lexer::getTokens().
69
+ *
70
+ * Requires the 'endTokenPos' attribute to be enabled in the lexer (DISABLED by default).
71
+ *
72
+ * @return int Token end position (or -1 if not available)
73
+ */
74
+ public function getEndTokenPos(): int {
75
+ return $this->attributes['endTokenPos'] ?? -1;
76
+ }
77
+
78
+ /**
79
+ * Gets the file offset of the first character that is part of this node.
80
+ *
81
+ * Requires the 'startFilePos' attribute to be enabled in the lexer (DISABLED by default).
82
+ *
83
+ * @return int File start position (or -1 if not available)
84
+ */
85
+ public function getStartFilePos(): int {
86
+ return $this->attributes['startFilePos'] ?? -1;
87
+ }
88
+
89
+ /**
90
+ * Gets the file offset of the last character that is part of this node.
91
+ *
92
+ * Requires the 'endFilePos' attribute to be enabled in the lexer (DISABLED by default).
93
+ *
94
+ * @return int File end position (or -1 if not available)
95
+ */
96
+ public function getEndFilePos(): int {
97
+ return $this->attributes['endFilePos'] ?? -1;
98
+ }
99
+
100
+ /**
101
+ * Gets all comments directly preceding this node.
102
+ *
103
+ * The comments are also available through the "comments" attribute.
104
+ *
105
+ * @return Comment[]
106
+ */
107
+ public function getComments(): array {
108
+ return $this->attributes['comments'] ?? [];
109
+ }
110
+
111
+ /**
112
+ * Gets the doc comment of the node.
113
+ *
114
+ * @return null|Comment\Doc Doc comment object or null
115
+ */
116
+ public function getDocComment(): ?Comment\Doc {
117
+ $comments = $this->getComments();
118
+ for ($i = count($comments) - 1; $i >= 0; $i--) {
119
+ $comment = $comments[$i];
120
+ if ($comment instanceof Comment\Doc) {
121
+ return $comment;
122
+ }
123
+ }
124
+
125
+ return null;
126
+ }
127
+
128
+ /**
129
+ * Sets the doc comment of the node.
130
+ *
131
+ * This will either replace an existing doc comment or add it to the comments array.
132
+ *
133
+ * @param Comment\Doc $docComment Doc comment to set
134
+ */
135
+ public function setDocComment(Comment\Doc $docComment): void {
136
+ $comments = $this->getComments();
137
+ for ($i = count($comments) - 1; $i >= 0; $i--) {
138
+ if ($comments[$i] instanceof Comment\Doc) {
139
+ // Replace existing doc comment.
140
+ $comments[$i] = $docComment;
141
+ $this->setAttribute('comments', $comments);
142
+ return;
143
+ }
144
+ }
145
+
146
+ // Append new doc comment.
147
+ $comments[] = $docComment;
148
+ $this->setAttribute('comments', $comments);
149
+ }
150
+
151
+ public function setAttribute(string $key, $value): void {
152
+ $this->attributes[$key] = $value;
153
+ }
154
+
155
+ public function hasAttribute(string $key): bool {
156
+ return array_key_exists($key, $this->attributes);
157
+ }
158
+
159
+ public function getAttribute(string $key, $default = null) {
160
+ if (array_key_exists($key, $this->attributes)) {
161
+ return $this->attributes[$key];
162
+ }
163
+
164
+ return $default;
165
+ }
166
+
167
+ public function getAttributes(): array {
168
+ return $this->attributes;
169
+ }
170
+
171
+ public function setAttributes(array $attributes): void {
172
+ $this->attributes = $attributes;
173
+ }
174
+
175
+ /**
176
+ * @return array<string, mixed>
177
+ */
178
+ public function jsonSerialize(): array {
179
+ return ['nodeType' => $this->getType()] + get_object_vars($this);
180
+ }
181
+ }