{"record":{"id":"5cbe633391aca33a","repo":"kgretzky/evilginx2","slug":"this-phishlet-is-incompatible-with-current-version-5cbe63","errorCode":null,"errorMessage":"this phishlet is incompatible with current version of evilginx.\nplease do the following modifications to update it:\n\n- replace `landing_path` with `login` section\n- change `min_ver` to at least `2.3.0`\nyou can find the phishlet 2.3.0 file format documentation here: https://github.com/kgretzky/evilginx2/wiki/Phishlet-File-Format-(2.3.0)","messagePattern":"this phishlet is incompatible with current version of evilginx\\.\nplease do the following modifications to update it:\n\n- replace `landing_path` with `login` section\n- change `min_ver` to at least `2\\.3\\.0`\nyou can find the phishlet 2\\.3\\.0 file format documentation here: https://github\\.com/kgretzky/evilginx2/wiki/Phishlet-File-Format-\\(2\\.3\\.0\\)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"core/phishlet.go","lineNumber":306,"sourceCode":"\tp.Version, err = p.parseVersion(c.GetString(\"min_ver\"))\n\tif err != nil {\n\t\treturn err\n\t}\n\tif !p.isVersionHigherEqual(&p.Version, \"2.2.0\") {\n\t\treturn fmt.Errorf(\"this phishlet is incompatible with current version of evilginx.\\nplease do the following modifications to update it:\\n\\n\" +\n\t\t\t\"- in each `sub_filters` item change `hostname` to `triggers_on`\\n\" +\n\t\t\t\"- in each `sub_filters` item change `sub` to `orig_sub`\\n\" +\n\t\t\t\"- rename section `user_regex` to `username`\\n\" +\n\t\t\t\"- rename section `pass_regex` to `password`\\n\" +\n\t\t\t\"- rename field `re` in both `username` and `password` to `search`\\n\" +\n\t\t\t\"- field `key` in both `username` and `password` must be a regexp by default\\n\" +\n\t\t\t\"- move `username` and `password` into new `credentials` section\\n\" +\n\t\t\t\"- add `type` field to `username` and `password` with value 'post' or 'json'\\n\" +\n\t\t\t\"- change `min_ver` to at least `2.2.0`\\n\" +\n\t\t\t\"you can find the phishlet 2.2.0 file format documentation here: https://github.com/kgretzky/evilginx2/wiki/Phishlet-File-Format-(2.2.0)\")\n\t}\n\tif !p.isVersionHigherEqual(&p.Version, \"2.3.0\") {\n\t\treturn fmt.Errorf(\"this phishlet is incompatible with current version of evilginx.\\nplease do the following modifications to update it:\\n\\n\" +\n\t\t\t\"- replace `landing_path` with `login` section\\n\" +\n\t\t\t\"- change `min_ver` to at least `2.3.0`\\n\" +\n\t\t\t\"you can find the phishlet 2.3.0 file format documentation here: https://github.com/kgretzky/evilginx2/wiki/Phishlet-File-Format-(2.3.0)\")\n\t}\n\n\tfp := ConfigPhishlet{}\n\terr = c.Unmarshal(&fp)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif fp.Params != nil {\n\t\tif len(*fp.Params) > 0 {\n\t\t\tp.isTemplate = true\n\t\t}\n\t\tif customParams != nil {\n\t\t\tprequired := make(map[string]string)\n\t\t\tpall := make(map[string]string)","sourceCodeStart":288,"sourceCodeEnd":324,"githubUrl":"https://github.com/kgretzky/evilginx2/blob/4c0988a1d9db4d172a185e979a38bfd0efdb5830/core/phishlet.go#L288-L324","documentation":"After the 2.2.0 check, the phishlet loader enforces a second minimum: phishlets must declare min_ver >= 2.3.0, which introduced the `login` section replacing `landing_path`. The message is a migration checklist for upgrading a 2.2.0-era phishlet to the 2.3.0 format.","triggerScenarios":"Loading a phishlet whose `min_ver` is exactly 2.2.x (or otherwise below 2.3.0) and which still uses `landing_path` instead of the `login` section — e.g. `min_ver: 2.2.0` with `landing_path: /login`.","commonSituations":"Phishlets downloaded from repositories frozen at the 2.2.0 format, hand-migrated phishlets that got min_ver to 2.2.0 but not 2.3.0, or older evilginx tutorials' example phishlets.","solutions":["Replace the `landing_path` field with a `login` section per the 2.3.0 format (login: { domain, path })","Set `min_ver` to at least 2.3.0","Fetch an updated 2.3.0+ phishlet from the author if available","Consult the official docs: https://github.com/kgretzky/evilginx2/wiki/Phishlet-File-Format-(2.3.0)"],"exampleFix":"# before\nmin_ver: 2.2.0\nlanding_path: /login\n# after\nmin_ver: 2.3.0\nlogin:\n  domain: 'example.com'\n  path: '/login'","handlingStrategy":"validation","validationCode":"if v, _ := parseVersion(minVer); !isVersionHigherEqual(v, \"2.3.0\") {\n    return fmt.Errorf(\"phishlet must declare min_ver >= 2.3.0 (login section required)\")\n}","typeGuard":"func isPhishlet23Compatible(minVer string) bool {\n    v, err := parseVersion(minVer)\n    return err == nil && isVersionHigherEqual(&v, \"2.3.0\")\n}","tryCatchPattern":"if err := cfg.LoadPhishlet(name, path, nil); err != nil {\n    if strings.Contains(err.Error(), \"landing_path\") {\n        log.Error(\"convert landing_path to the login section and set min_ver: 2.3.0\")\n    }\n}","preventionTips":["After the 2.2.0 migration, immediately do the 2.3.0 step (login section) — don't stop at 2.2.0","Search phishlet files for `landing_path` and convert them","Set min_ver: 2.3.0 or higher in all maintained phishlets","Refresh phishlets from upstream repos after upgrading evilginx"],"tags":["phishlet","configuration","version-compatibility","migration"],"backgroundTag":"schema-version-too-old","analyzedSha":"4c0988a1d9db4d172a185e979a38bfd0efdb5830","analyzedAt":"2026-09-05T19:23:07.238Z","contentChangedAt":"2026-09-05T19:23:07.238Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}