cgi.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package server
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "log"
  6. "os"
  7. "os/user"
  8. "syno-common/server/sso"
  9. "syno-common/server/utils"
  10. )
  11. func Auth() (map[string]interface{}, error) {
  12. // Todo:
  13. // fix-up error handling with correct http responses (add --debug flag?/Synology's notifications?)
  14. // worry about csrf
  15. //dev = flag.Bool("dev", false, "Turns Authentication checks off")
  16. //flag.Parse()
  17. var logF *os.File
  18. var err error
  19. curDir := utils.GetCurDir()
  20. logF, err = os.OpenFile(fmt.Sprintf("%v/commontools.log", curDir), os.O_CREATE|os.O_APPEND|os.O_RDWR, os.ModePerm)
  21. if err == nil {
  22. defer func() {
  23. logF.Close()
  24. }()
  25. log.SetOutput(logF)
  26. }
  27. u, _ := user.Current()
  28. if u != nil {
  29. log.Println("user", u)
  30. }
  31. synoResp := sso.SynoAuth()
  32. if !synoResp.Ok {
  33. synoResp.PrintNoData()
  34. os.Exit(0)
  35. }
  36. userData := synoResp.Data
  37. resp := sso.LoginByAccount(userData.User)
  38. if !resp.Ok {
  39. r := sso.UnauthorisedResp()
  40. r.PrintNoData()
  41. os.Exit(0)
  42. }
  43. synoResp.PrintNoData()
  44. data := resp.Data
  45. jsonData, _ := json.Marshal(data)
  46. fmt.Print(string(jsonData))
  47. return data, nil
  48. }