filebrowser/backend/cmd/rules_add.go

61 lines
1.4 KiB
Go
Raw Normal View History

package cmd
import (
"regexp"
2020-05-31 23:12:36 +00:00
"github.com/spf13/cobra"
2023-06-15 01:08:09 +00:00
"github.com/gtsteffaniak/filebrowser/rules"
"github.com/gtsteffaniak/filebrowser/settings"
2024-10-07 22:44:53 +00:00
"github.com/gtsteffaniak/filebrowser/storage"
2023-06-15 01:08:09 +00:00
"github.com/gtsteffaniak/filebrowser/users"
2024-10-07 22:44:53 +00:00
"github.com/gtsteffaniak/filebrowser/utils"
)
func init() {
rulesCmd.AddCommand(rulesAddCmd)
rulesAddCmd.Flags().BoolP("allow", "a", false, "indicates this is an allow rule")
rulesAddCmd.Flags().BoolP("regex", "r", false, "indicates this is a regex rule")
}
var rulesAddCmd = &cobra.Command{
Use: "add <path|expression>",
Short: "Add a global rule or user rule",
Long: `Add a global rule or user rule.`,
Args: cobra.ExactArgs(1),
2024-10-07 22:44:53 +00:00
Run: cobraCmd(func(cmd *cobra.Command, args []string, store *storage.Storage) {
allow := mustGetBool(cmd.Flags(), "allow")
regex := mustGetBool(cmd.Flags(), "regex")
exp := args[0]
if regex {
regexp.MustCompile(exp)
}
rule := rules.Rule{
Allow: allow,
Regex: regex,
}
if regex {
rule.Regexp = &rules.Regexp{Raw: exp}
} else {
rule.Path = exp
}
user := func(u *users.User) {
u.Rules = append(u.Rules, rule)
2024-10-07 22:44:53 +00:00
err := store.Users.Save(u)
utils.CheckErr("store.Users.Save", err)
}
global := func(s *settings.Settings) {
s.Rules = append(s.Rules, rule)
2024-10-07 22:44:53 +00:00
err := store.Settings.Save(s)
utils.CheckErr("store.Settings.Save", err)
}
2024-10-07 22:44:53 +00:00
runRules(store, cmd, user, global)
}),
}