2023-09-23 12:57:12 +02:00
|
|
|
package service
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"os"
|
2024-07-28 19:49:45 +00:00
|
|
|
"strings"
|
2023-09-23 12:57:12 +02:00
|
|
|
)
|
|
|
|
|
|
2024-07-28 19:49:45 +00:00
|
|
|
func (s *Service) writePortForwardedFile(ports []uint16) (err error) {
|
|
|
|
|
portStrings := make([]string, len(ports))
|
|
|
|
|
for i, port := range ports {
|
|
|
|
|
portStrings[i] = fmt.Sprint(int(port))
|
|
|
|
|
}
|
|
|
|
|
fileData := []byte(strings.Join(portStrings, "\n"))
|
|
|
|
|
|
2023-09-28 14:00:58 +00:00
|
|
|
filepath := s.settings.Filepath
|
2025-11-13 14:10:13 +00:00
|
|
|
if len(ports) == 0 {
|
|
|
|
|
s.logger.Info("clearing port file " + filepath)
|
|
|
|
|
} else {
|
|
|
|
|
s.logger.Info("writing port file " + filepath)
|
|
|
|
|
}
|
2024-10-11 19:20:48 +00:00
|
|
|
const perms = os.FileMode(0o644)
|
2024-07-28 19:49:45 +00:00
|
|
|
err = os.WriteFile(filepath, fileData, perms)
|
2023-09-23 12:57:12 +02:00
|
|
|
if err != nil {
|
|
|
|
|
return fmt.Errorf("writing file: %w", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = os.Chown(filepath, s.puid, s.pgid)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return fmt.Errorf("chowning file: %w", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return nil
|
|
|
|
|
}
|