{"record":{"id":"f2244dc152559c06","repo":"kgretzky/evilginx2","slug":"get-url-v","errorCode":null,"errorMessage":"get-url: %v","messagePattern":"get-url: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"core/terminal.go","lineNumber":741,"sourceCode":"\t\t\tif pn == 2 {\n\t\t\t\t_, err := t.cfg.GetPhishlet(args[1])\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tl := &Lure{\n\t\t\t\t\tPath:     \"/\" + GenRandomString(8),\n\t\t\t\t\tPhishlet: args[1],\n\t\t\t\t}\n\t\t\t\tt.cfg.AddLure(args[1], l)\n\t\t\t\tlog.Info(\"created lure with ID: %d\", len(t.cfg.lures)-1)\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn fmt.Errorf(\"incorrect number of arguments\")\n\t\tcase \"get-url\":\n\t\t\tif pn >= 2 {\n\t\t\t\tl_id, err := strconv.Atoi(strings.TrimSpace(args[1]))\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"get-url: %v\", err)\n\t\t\t\t}\n\t\t\t\tl, err := t.cfg.GetLure(l_id)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"get-url: %v\", err)\n\t\t\t\t}\n\t\t\t\tpl, err := t.cfg.GetPhishlet(l.Phishlet)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"get-url: %v\", err)\n\t\t\t\t}\n\t\t\t\tbhost, ok := t.cfg.GetSiteDomain(pl.Name)\n\t\t\t\tif !ok || len(bhost) == 0 {\n\t\t\t\t\treturn fmt.Errorf(\"no hostname set for phishlet '%s'\", pl.Name)\n\t\t\t\t}\n\n\t\t\t\tvar base_url string\n\t\t\t\tif l.Hostname != \"\" {\n\t\t\t\t\tbase_url = \"https://\" + l.Hostname + l.Path\n\t\t\t\t} else {","sourceCodeStart":723,"sourceCodeEnd":759,"githubUrl":"https://github.com/kgretzky/evilginx2/blob/4c0988a1d9db4d172a185e979a38bfd0efdb5830/core/terminal.go#L723-L759","documentation":"The `lures get-url <id>` command wraps every underlying failure as `get-url: %v`. This instance fires when the lure ID argument is not a valid integer and strconv.Atoi fails, so the lure ID could not be parsed.","triggerScenarios":"`lures get-url <non-numeric>` e.g. `lures get-url abc`, an empty string after trimming, or an ID with stray characters.","commonSituations":"Passing a lure name or hostname instead of the numeric ID; extra characters from copy-paste; using a 0-based vs 1-based ID assumption that hit a wrong token.","solutions":["Run `lures` to list lure IDs, then use the numeric ID: `lures get-url 0`","Trim whitespace/quotes from the ID argument","Wrap IDs containing special characters in quotes so the shell passes them intact"],"exampleFix":"// before\nlures get-url first\n// after\nlures get-url 0","handlingStrategy":"validation","validationCode":"func parseLureID(raw string) (int, error) {\n    id, err := strconv.Atoi(strings.TrimSpace(raw))\n    if err != nil { return 0, fmt.Errorf(\"lure id must be an integer, got %q\", raw) }\n    return id, nil\n}","typeGuard":"func isNumericLureID(raw string) bool {\n    _, err := strconv.Atoi(strings.TrimSpace(raw))\n    return err == nil\n}","tryCatchPattern":"id, err := strconv.Atoi(strings.TrimSpace(arg))\nif err != nil {\n    log.Info(\"usage: lures get-url <numeric-id>; run 'lures' to list IDs\")\n    return\n}","preventionTips":["Use numeric lure IDs, not names","Trim whitespace and strip quotes from IDs","List lures with `lures` to get valid IDs"],"tags":["cli","lures","invalid-argument"],"backgroundTag":"invalid-numeric-argument","analyzedSha":"4c0988a1d9db4d172a185e979a38bfd0efdb5830","analyzedAt":"2026-09-05T19:23:07.238Z","contentChangedAt":"2026-09-05T19:23:07.238Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}