init.go 888 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package runner
  2. import (
  3. "os/exec"
  4. "strconv"
  5. "strings"
  6. "github.com/langgenius/dify-sandbox/internal/static"
  7. "github.com/langgenius/dify-sandbox/internal/utils/log"
  8. )
  9. func init() {
  10. // create sandbox user
  11. user := static.SANDBOX_USER
  12. uid := static.SANDBOX_USER_UID
  13. // check if user exists
  14. _, err := exec.Command("id", user).Output()
  15. if err != nil {
  16. // create user
  17. output, err := exec.Command("bash", "-c", "useradd -u "+strconv.Itoa(uid)+" "+user).Output()
  18. if err != nil {
  19. log.Panic("failed to create user: %v, %v", err, string(output))
  20. }
  21. }
  22. // get gid of sandbox user and setgid
  23. gid, err := exec.Command("id", "-g", static.SANDBOX_USER).Output()
  24. if err != nil {
  25. log.Panic("failed to get gid of user: %v", err)
  26. }
  27. static.SANDBOX_GROUP_ID, err = strconv.Atoi(strings.TrimSpace(string(gid)))
  28. if err != nil {
  29. log.Panic("failed to convert gid: %v", err)
  30. }
  31. }