48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
//go:build linux
|
|
|
|
package main
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/sagernet/sing-box/adapter"
|
|
"github.com/sagernet/sing/common/json"
|
|
"github.com/sagernet/sing/service"
|
|
"github.com/sagernet/sing/service/filemanager"
|
|
)
|
|
|
|
func registerSecurityPolicy(ctx context.Context, daemon *Daemon) {
|
|
service.MustRegister[adapter.SecurityPolicy](ctx, &daemonSecurityPolicy{daemon})
|
|
service.MustRegister[filemanager.Manager](ctx, &restrictedFileManager{daemon})
|
|
}
|
|
|
|
func insecureModeAvailable() bool {
|
|
return true
|
|
}
|
|
|
|
func insecureModePlatformName() string {
|
|
return "Linux"
|
|
}
|
|
|
|
func loadSecuritySettings(directory string) (securitySettings, error) {
|
|
content, err := os.ReadFile(filepath.Join(directory, securitySettingsFileName))
|
|
if err != nil {
|
|
return securitySettings{}, err
|
|
}
|
|
settings, err := json.UnmarshalExtended[securitySettings](content)
|
|
if err != nil {
|
|
return securitySettings{}, err
|
|
}
|
|
return settings, nil
|
|
}
|
|
|
|
func (d *Daemon) insecureModeEnabled() bool {
|
|
settings, err := loadSecuritySettings(workingDirectory)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
return settings.InsecureModeEnabled
|
|
}
|