mirror of
https://github.com/matrix-org/dendrite
synced 2024-12-14 07:12:53 +00:00
simplify unix socket permission format (#3014)
### Pull Request Checklist <!-- Please read https://matrix-org.github.io/dendrite/development/contributing before submitting your pull request --> * [x] I have added Go unit tests or [Complement integration tests](https://github.com/matrix-org/complement) for this PR _or_ I have justified why this PR doesn't need tests * [x] Pull request includes a [sign off below using a legally identifiable name](https://matrix-org.github.io/dendrite/development/contributing#sign-off) _or_ I have already signed off privately Signed-off-by: `Boris Rybalkin <ribalkin@gmail.com>`
This commit is contained in:
parent
2c58bab6a8
commit
d88f71ab71
4 changed files with 34 additions and 8 deletions
|
@ -16,7 +16,6 @@ package main
|
|||
|
||||
import (
|
||||
"flag"
|
||||
"io/fs"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
|
||||
|
@ -34,8 +33,8 @@ var (
|
|||
unixSocket = flag.String("unix-socket", "",
|
||||
"EXPERIMENTAL(unstable): The HTTP listening unix socket for the server (disables http[s]-bind-address feature)",
|
||||
)
|
||||
unixSocketPermission = flag.Int("unix-socket-permission", 0755,
|
||||
"EXPERIMENTAL(unstable): The HTTP listening unix socket permission for the server",
|
||||
unixSocketPermission = flag.String("unix-socket-permission", "755",
|
||||
"EXPERIMENTAL(unstable): The HTTP listening unix socket permission for the server (in chmod format like 755)",
|
||||
)
|
||||
httpBindAddr = flag.String("http-bind-address", ":8008", "The HTTP listening port for the server")
|
||||
httpsBindAddr = flag.String("https-bind-address", ":8448", "The HTTPS listening port for the server")
|
||||
|
@ -59,7 +58,11 @@ func main() {
|
|||
}
|
||||
httpsAddr = https
|
||||
} else {
|
||||
httpAddr = config.UnixSocketAddress(*unixSocket, fs.FileMode(*unixSocketPermission))
|
||||
socket, err := config.UnixSocketAddress(*unixSocket, *unixSocketPermission)
|
||||
if err != nil {
|
||||
logrus.WithError(err).Fatalf("Failed to parse unix socket")
|
||||
}
|
||||
httpAddr = socket
|
||||
}
|
||||
|
||||
options := []basepkg.BaseDendriteOptions{}
|
||||
|
|
|
@ -76,7 +76,7 @@ func TestLandingPage_UnixSocket(t *testing.T) {
|
|||
tempDir := t.TempDir()
|
||||
socket := path.Join(tempDir, "socket")
|
||||
// start base with the listener and wait for it to be started
|
||||
address := config.UnixSocketAddress(socket, 0755)
|
||||
address, err := config.UnixSocketAddress(socket, "755")
|
||||
assert.NoError(t, err)
|
||||
go b.SetupAndServeHTTP(address, nil, nil)
|
||||
time.Sleep(time.Millisecond * 100)
|
||||
|
|
|
@ -3,6 +3,7 @@ package config
|
|||
import (
|
||||
"io/fs"
|
||||
"net/url"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -32,8 +33,12 @@ func (s ServerAddress) Network() string {
|
|||
}
|
||||
}
|
||||
|
||||
func UnixSocketAddress(path string, perm fs.FileMode) ServerAddress {
|
||||
return ServerAddress{Address: path, Scheme: NetworkUnix, UnixSocketPermission: perm}
|
||||
func UnixSocketAddress(path string, perm string) (ServerAddress, error) {
|
||||
permission, err := strconv.ParseInt(perm, 8, 32)
|
||||
if err != nil {
|
||||
return ServerAddress{}, err
|
||||
}
|
||||
return ServerAddress{Address: path, Scheme: NetworkUnix, UnixSocketPermission: fs.FileMode(permission)}, nil
|
||||
}
|
||||
|
||||
func HTTPAddress(urlAddress string) (ServerAddress, error) {
|
||||
|
|
|
@ -20,6 +20,24 @@ func TestHttpAddress_ParseBad(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestUnixSocketAddress_Network(t *testing.T) {
|
||||
address := UnixSocketAddress("/tmp", fs.FileMode(0755))
|
||||
address, err := UnixSocketAddress("/tmp", "0755")
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "unix", address.Network())
|
||||
}
|
||||
|
||||
func TestUnixSocketAddress_Permission_LeadingZero_Ok(t *testing.T) {
|
||||
address, err := UnixSocketAddress("/tmp", "0755")
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, fs.FileMode(0755), address.UnixSocketPermission)
|
||||
}
|
||||
|
||||
func TestUnixSocketAddress_Permission_NoLeadingZero_Ok(t *testing.T) {
|
||||
address, err := UnixSocketAddress("/tmp", "755")
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, fs.FileMode(0755), address.UnixSocketPermission)
|
||||
}
|
||||
|
||||
func TestUnixSocketAddress_Permission_NonOctal_Bad(t *testing.T) {
|
||||
_, err := UnixSocketAddress("/tmp", "855")
|
||||
assert.Error(t, err)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue