skip_install.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package kernal
  2. import (
  3. "github.com/0xJacky/Nginx-UI/internal/logger"
  4. "github.com/0xJacky/Nginx-UI/model"
  5. "github.com/0xJacky/Nginx-UI/query"
  6. "github.com/0xJacky/Nginx-UI/settings"
  7. "github.com/caarlos0/env/v11"
  8. "github.com/google/uuid"
  9. "github.com/pkg/errors"
  10. "golang.org/x/crypto/bcrypt"
  11. "gorm.io/gorm"
  12. )
  13. type predefinedUser struct {
  14. Name string `json:"name"`
  15. Password string `json:"password"`
  16. }
  17. func skipInstall() {
  18. logger.Info("Skip installation mode enabled")
  19. if settings.ServerSettings.JwtSecret == "" {
  20. settings.ServerSettings.JwtSecret = uuid.New().String()
  21. }
  22. if settings.ServerSettings.NodeSecret == "" {
  23. settings.ServerSettings.NodeSecret = uuid.New().String()
  24. logger.Infof("NodeSecret: %s", settings.ServerSettings.NodeSecret)
  25. }
  26. err := settings.Save()
  27. if err != nil {
  28. logger.Fatal(err)
  29. }
  30. }
  31. func registerPredefinedUser() {
  32. // when skip installation mode is enabled, the predefined user will be created
  33. if !settings.ServerSettings.SkipInstallation {
  34. return
  35. }
  36. pUser := &predefinedUser{}
  37. err := env.ParseWithOptions(pUser, env.Options{
  38. Prefix: "NGINX_UI_PREDEFINED_USER_",
  39. UseFieldNameByDefault: true,
  40. })
  41. if err != nil {
  42. logger.Fatal(err)
  43. }
  44. u := query.Auth
  45. _, err = u.First()
  46. // Only effect when there is no user in the database
  47. if !errors.Is(err, gorm.ErrRecordNotFound) || pUser.Name == "" || pUser.Password == "" {
  48. return
  49. }
  50. // Create a new user with the predefined name and password
  51. pwd, _ := bcrypt.GenerateFromPassword([]byte(pUser.Password), bcrypt.DefaultCost)
  52. err = u.Create(&model.Auth{
  53. Name: pUser.Name,
  54. Password: string(pwd),
  55. })
  56. if err != nil {
  57. logger.Error(err)
  58. }
  59. }