diff --git a/nas/auth.go b/nas/auth.go index 2507a80..c254489 100644 --- a/nas/auth.go +++ b/nas/auth.go @@ -47,15 +47,20 @@ func handleAuthRequest(moduleName string, w http.ResponseWriter, r *http.Request } switch action { - case "login": - reply = login(moduleName, fields) - break - case "acctcreate": reply = acctcreate(moduleName, fields) break + case "login": + reply = login(moduleName, fields) + break + + case "svcloc": + reply = svcloc(moduleName, fields) + break + default: + logging.Error(moduleName, "Unknown action:", aurora.Cyan(action)) reply = map[string]string{ "retry": "0", "returncd": "109", @@ -130,6 +135,34 @@ func login(moduleName string, fields map[string]string) map[string]string { return param } +func svcloc(moduleName string, fields map[string]string) map[string]string { + param := map[string]string{ + "retry": "0", + "returncd": "007", + "statusdata": "Y", + "svchost": "n/a", + } + + strUserId, ok := fields["userid"] + if !ok { + logging.Error(moduleName, "No userid in form") + param["returncd"] = "103" + return param + } + + userId, err := strconv.ParseInt(strUserId, 10, 64) + if err != nil { + logging.Error(moduleName, "Invalid userid string in form") + param["returncd"] = "103" + return param + } + + authToken, _ := database.GenerateAuthToken(pool, ctx, userId, "") + + param["servicetoken"] = authToken + return param +} + func handleProfanity(moduleName string, fields map[string]string) map[string]string { prwords := "" wordCount := strings.Count(fields["words"], "\t") + 1