mirror of
https://github.com/EchoVault/SugarDB.git
synced 2025-10-05 16:06:57 +08:00
Created DefaultConfig to be used when embedding echovaule. Moved ACL and PubSub to internal packages with only the associated commands in the modules folder. Initialise ACL and PubSub when creating new EchoVault instance which removed the need to pass WithACL and WithPubSub options.
This commit is contained in:
@@ -17,11 +17,9 @@ package main
|
||||
import (
|
||||
"context"
|
||||
"github.com/echovault/echovault/internal"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"github.com/echovault/echovault/pkg/commands"
|
||||
"github.com/echovault/echovault/pkg/config"
|
||||
"github.com/echovault/echovault/pkg/echovault"
|
||||
"github.com/echovault/echovault/pkg/modules/acl"
|
||||
"github.com/echovault/echovault/pkg/modules/pubsub"
|
||||
"github.com/echovault/echovault/pkg/utils"
|
||||
"log"
|
||||
"os"
|
||||
@@ -30,7 +28,7 @@ import (
|
||||
)
|
||||
|
||||
func main() {
|
||||
conf, err := config.Config()
|
||||
conf, err := config.GetConfig()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
@@ -53,8 +51,6 @@ func main() {
|
||||
echovault.WithContext(ctx),
|
||||
echovault.WithConfig(conf),
|
||||
echovault.WithCommands(commands.All()),
|
||||
echovault.WithACL(acl.NewACL(conf)),
|
||||
echovault.WithPubSub(pubsub.NewPubSub()),
|
||||
)
|
||||
|
||||
go server.Start(ctx)
|
||||
|
@@ -1,514 +1,4 @@
|
||||
mode: set
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:51.42,56.24 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:56.24,64.3 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:67.2,67.28 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:67.28,69.54 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:69.54,70.14 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:71.9,72.17 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:72.17,73.37 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:73.37,75.6 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:78.4,80.22 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:80.22,81.61 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:81.61,83.6 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:86.4,86.39 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:86.39,87.61 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:87.61,89.6 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:95.2,96.29 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:96.29,97.33 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:97.33,99.9 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:102.2,102.20 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:102.20,104.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:107.2,107.29 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:107.29,109.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:111.2,121.13 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:124.52,129.70 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:129.70,131.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:132.2,136.3 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:139.45,145.33 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:145.33,146.30 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:146.30,147.47 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:147.47,149.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:149.10,152.5 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:156.2,157.45 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:157.45,159.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:161.2,168.12 4 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:171.73,176.37 4 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:176.37,177.28 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:177.28,179.12 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:182.3,182.31 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:182.31,183.30 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:183.30,185.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:188.3,188.32 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:188.32,189.12 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:192.3,192.52 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:192.52,193.49 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:193.49,195.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:198.3,198.63 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:198.63,200.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:202.2,202.12 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:205.95,214.19 6 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:214.19,222.60 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:222.60,224.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:225.3,225.24 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:228.2,228.19 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:228.19,237.31 4 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:237.31,238.28 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:238.28,241.10 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:244.3,244.17 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:244.17,246.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:250.2,250.19 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:250.19,252.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:255.2,255.21 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:255.21,261.3 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:263.2,263.46 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:263.46,264.38 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:264.38,267.18 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:267.18,274.5 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:278.2,278.50 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:281.125,290.16 6 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:290.16,292.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:294.2,294.56 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:294.56,298.17 4 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:298.17,300.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:304.2,304.36 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:304.36,306.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:309.2,309.43 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:309.43,311.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:314.2,314.37 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:314.37,316.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:319.2,322.29 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:322.29,324.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:327.2,327.57 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:327.57,329.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:332.2,333.65 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:333.65,334.101 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:334.101,335.63 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:335.63,337.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:338.4,339.16 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:341.5,342.27 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:342.27,344.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:345.3,345.88 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:349.2,349.64 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:349.64,350.101 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:350.101,351.63 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:351.63,354.5 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:355.4,355.16 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:357.5,359.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:362.2,362.94 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:362.94,364.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:364.5,366.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:369.2,369.93 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:369.93,371.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:371.5,373.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:376.2,376.55 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:376.55,380.105 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:380.105,382.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:382.6,384.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:386.3,386.104 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:386.104,388.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:388.6,390.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:391.3,391.13 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:394.2,394.19 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:394.19,396.29 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:396.29,398.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:401.3,401.54 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:401.54,402.56 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:402.56,403.96 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:403.96,404.50 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:404.50,406.7 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:407.6,408.18 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:410.7,412.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:416.3,416.55 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:416.55,417.56 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:417.56,418.98 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:418.98,419.51 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:419.51,421.7 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:422.6,423.18 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:425.7,427.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:431.2,431.12 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:434.32,438.33 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:438.33,443.31 5 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:443.31,444.37 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:444.37,446.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:448.3,448.25 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:451.2,451.29 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:451.29,452.33 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:452.33,454.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:458.29,460.2 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:462.31,464.2 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:466.30,468.2 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/acl.go:470.32,472.2 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:32.108,33.34 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:33.34,35.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:36.2,37.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:37.9,39.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:40.2,40.67 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:40.67,42.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:43.2,43.38 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:46.106,47.19 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:47.19,49.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:51.2,52.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:52.9,54.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:56.2,58.30 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:58.30,59.27 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:59.27,62.9 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:66.2,66.16 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:66.16,68.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:71.2,75.18 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:75.18,77.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:77.8,79.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:80.2,80.21 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:80.21,82.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:83.2,83.17 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:83.17,85.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:87.2,88.29 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:88.29,90.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:93.2,94.51 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:94.51,95.22 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:95.22,97.12 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:99.3,99.49 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:101.2,101.51 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:101.51,102.22 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:102.22,104.12 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:106.3,106.49 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:110.2,111.48 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:111.48,112.21 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:112.21,114.12 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:116.3,116.47 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:118.2,118.48 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:118.48,119.21 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:119.21,121.12 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:123.3,123.47 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:127.2,128.79 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:128.79,129.37 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:129.37,131.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:133.2,134.30 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:134.30,135.10 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:136.100,138.53 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:139.53,141.52 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:142.52,144.52 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:149.2,151.54 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:151.54,153.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:154.2,154.54 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:154.54,156.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:158.2,160.25 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:163.102,164.18 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:164.18,166.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:168.2,172.35 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:172.35,173.36 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:173.36,174.48 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:174.48,176.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:177.4,177.12 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:179.3,179.50 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:179.50,180.51 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:180.51,183.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:187.2,187.19 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:187.19,190.34 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:190.34,193.4 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:194.3,195.28 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:195.28,197.24 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:197.24,199.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:201.3,201.26 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:204.2,204.19 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:204.19,206.46 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:206.46,207.43 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:207.43,209.38 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:209.38,211.30 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:211.30,213.7 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:215.5,215.28 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:220.2,220.74 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:223.102,225.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:225.9,227.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:228.2,229.33 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:229.33,231.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:232.2,233.25 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:236.106,238.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:238.9,240.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:241.2,241.45 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:241.45,243.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:244.2,244.38 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:247.108,248.18 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:248.18,250.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:251.2,252.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:252.9,254.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:255.2,255.53 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:255.53,257.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:258.2,258.38 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:261.106,263.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:263.9,265.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:266.2,267.74 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:270.103,271.18 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:271.18,273.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:274.2,275.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:275.9,277.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:278.2,280.33 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:280.33,283.19 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:283.19,285.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:285.9,287.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:289.3,289.22 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:289.22,291.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:293.3,293.18 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:293.18,295.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:297.3,297.43 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:297.43,298.61 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:298.61,300.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:301.4,301.58 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:301.58,303.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:306.3,306.52 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:306.52,307.23 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:307.23,309.13 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:311.4,311.39 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:314.3,314.52 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:314.52,315.23 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:315.23,317.13 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:319.4,319.39 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:322.3,322.49 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:322.49,323.22 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:323.22,325.13 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:327.4,327.37 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:330.3,330.49 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:330.49,331.22 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:331.22,333.13 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:335.4,335.37 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:338.3,338.45 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:338.45,339.52 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:339.52,341.13 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:343.4,343.41 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:346.3,346.45 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:346.45,347.52 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:347.52,349.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:352.3,352.55 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:352.55,354.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:356.3,356.55 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:356.55,358.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:359.3,359.54 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:362.2,363.25 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:366.103,367.19 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:367.19,369.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:371.2,372.9 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:372.9,374.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:376.2,380.16 4 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:380.16,382.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:384.2,384.15 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:384.15,385.35 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:385.35,387.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:390.2,394.20 3 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:394.20,395.59 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:395.59,397.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:400.2,400.37 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:400.37,401.59 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:401.59,403.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:407.2,407.29 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:407.29,411.31 3 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:411.31,412.35 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:412.35,415.43 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:415.43,417.6 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:417.11,420.6 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:421.5,421.10 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:425.3,425.17 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:425.17,427.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:430.2,430.38 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:433.103,434.18 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:434.18,436.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:438.2,439.9 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:439.9,441.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:443.2,447.16 4 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:447.16,449.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:451.2,451.15 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:451.15,452.35 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:452.35,454.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:457.2,459.20 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:459.20,462.17 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:462.17,464.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:465.3,466.17 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:466.17,468.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:471.2,471.37 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:471.37,474.17 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:474.17,476.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:477.3,478.17 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:478.17,480.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:483.2,484.16 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:484.16,486.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:488.2,488.38 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:491.33,498.60 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:498.60,500.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:508.60,510.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:518.62,520.7 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:528.62,530.7 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:538.62,540.7 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:548.62,550.7 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:558.62,560.7 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:568.62,570.7 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:578.62,580.7 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:591.62,593.7 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:601.62,603.7 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:53.31,55.39 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:55.39,57.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:58.2,59.51 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:59.51,61.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:63.2,64.37 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:64.37,66.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:67.2,68.49 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:68.49,70.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:72.2,73.53 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:73.53,75.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:76.2,77.54 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:77.54,79.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:81.2,82.43 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:82.43,84.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:85.2,86.55 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:86.55,88.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:91.79,93.32 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:93.32,94.24 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:94.24,96.12 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:98.3,98.25 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:100.2,100.33 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:100.33,101.17 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:101.17,104.4 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:105.3,105.25 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:107.2,107.8 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:110.50,111.26 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:111.26,113.35 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:113.35,115.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:116.3,116.36 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:116.36,118.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:120.3,120.37 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:120.37,126.12 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:128.3,128.20 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:128.20,129.84 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:129.84,130.65 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:130.65,132.6 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:133.5,133.45 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:135.4,135.12 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:137.3,137.20 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:137.20,138.84 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:138.84,139.68 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:139.68,141.6 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:142.5,142.45 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:144.4,144.12 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:147.3,147.43 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:147.43,150.12 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:152.3,152.46 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:152.46,154.12 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:156.3,156.36 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:156.36,157.21 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:157.21,159.13 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:161.4,161.21 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:161.21,163.13 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:167.3,167.40 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:167.40,171.12 4 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:173.3,173.93 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:173.93,178.12 5 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:180.3,180.57 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:180.57,183.12 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:185.3,185.57 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:185.57,188.12 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:191.3,191.44 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:191.44,193.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:194.3,194.36 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:194.36,195.21 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:195.21,197.13 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:199.4,199.21 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:199.21,201.13 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:205.3,205.44 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:205.44,208.12 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:210.3,210.66 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:210.66,211.21 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:211.21,213.13 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:215.4,215.21 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:215.21,217.13 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:223.2,223.26 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:223.26,224.39 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:224.39,227.4 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:230.2,230.26 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:230.26,232.42 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:232.42,235.4 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:237.3,237.43 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:237.43,242.4 4 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:244.3,244.42 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:244.42,248.4 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:250.3,250.46 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:250.46,253.4 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:255.2,255.12 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:258.36,272.2 13 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:274.38,287.2 12 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:289.40,304.2 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:306.46,307.24 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:307.24,309.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/user.go:310.2,310.26 1 1
|
||||
github.com/echovault/echovault/pkg/modules/connection/commands.go:25.108,26.18 1 1
|
||||
github.com/echovault/echovault/pkg/modules/connection/commands.go:27.10,28.50 1 1
|
||||
github.com/echovault/echovault/pkg/modules/connection/commands.go:29.9,30.34 1 1
|
||||
github.com/echovault/echovault/pkg/modules/connection/commands.go:31.9,32.72 1 1
|
||||
github.com/echovault/echovault/pkg/modules/connection/commands.go:36.33,43.60 1 0
|
||||
github.com/echovault/echovault/pkg/modules/connection/commands.go:43.60,45.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:28.115,34.29 4 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:34.29,35.54 1 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:35.54,41.42 4 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:41.42,43.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:45.4,48.12 3 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:51.3,51.36 1 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:51.36,58.43 5 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:58.43,60.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:62.4,64.21 2 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:68.2,70.25 2 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:73.109,77.35 3 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:77.35,78.65 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:78.65,79.41 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:79.41,81.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:82.4,82.12 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:84.3,84.13 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:87.2,87.51 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:90.112,91.18 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:92.9,97.36 4 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:97.36,98.66 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:98.66,99.52 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:99.52,103.6 3 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:104.5,104.13 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:106.4,107.14 2 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:109.3,110.26 2 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:112.9,116.45 3 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:116.45,118.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:119.3,119.42 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:119.42,123.37 3 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:123.37,124.67 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:124.67,125.53 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:125.53,126.59 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:126.59,130.8 3 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:132.6,132.14 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:134.5,134.54 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:134.54,137.6 2 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:139.9,139.50 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:139.50,143.37 3 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:143.37,144.67 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:144.67,145.53 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:145.53,147.24 2 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:147.24,150.8 2 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:152.6,152.14 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:154.5,154.33 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:154.33,157.6 2 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:159.9,161.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:162.3,163.26 2 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:164.10,165.50 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:169.112,171.2 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:173.33,180.60 1 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:180.60,180.86 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:188.60,190.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:197.62,197.88 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:205.62,205.88 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:214.62,214.88 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:224.60,226.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:227.113,228.49 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:228.49,230.6 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:231.5,231.41 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:239.60,241.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:242.113,244.18 2 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:244.18,246.6 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:247.5,247.53 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:255.60,257.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:258.113,259.47 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:259.47,261.6 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:262.5,262.41 1 0
|
||||
github.com/echovault/echovault/pkg/modules/hash/commands.go:30.105,32.16 2 1
|
||||
github.com/echovault/echovault/pkg/modules/hash/commands.go:32.16,34.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/hash/commands.go:36.2,39.25 3 1
|
||||
@@ -632,8 +122,8 @@ github.com/echovault/echovault/pkg/modules/hash/commands.go:327.17,328.41 1 1
|
||||
github.com/echovault/echovault/pkg/modules/hash/commands.go:328.41,330.13 2 1
|
||||
github.com/echovault/echovault/pkg/modules/hash/commands.go:332.4,332.42 1 1
|
||||
github.com/echovault/echovault/pkg/modules/hash/commands.go:332.42,335.13 3 1
|
||||
github.com/echovault/echovault/pkg/modules/hash/commands.go:337.4,337.38 1 0
|
||||
github.com/echovault/echovault/pkg/modules/hash/commands.go:337.38,339.13 2 0
|
||||
github.com/echovault/echovault/pkg/modules/hash/commands.go:337.4,337.38 1 1
|
||||
github.com/echovault/echovault/pkg/modules/hash/commands.go:337.38,339.13 2 1
|
||||
github.com/echovault/echovault/pkg/modules/hash/commands.go:344.2,344.25 1 1
|
||||
github.com/echovault/echovault/pkg/modules/hash/commands.go:347.108,349.16 2 1
|
||||
github.com/echovault/echovault/pkg/modules/hash/commands.go:349.16,351.3 1 1
|
||||
@@ -1246,149 +736,326 @@ github.com/echovault/echovault/pkg/modules/list/key_funcs.go:82.2,82.30 1 1
|
||||
github.com/echovault/echovault/pkg/modules/list/key_funcs.go:85.51,86.19 1 1
|
||||
github.com/echovault/echovault/pkg/modules/list/key_funcs.go:86.19,88.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/list/key_funcs.go:89.2,89.38 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:36.51,37.32 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:37.32,39.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:42.57,43.32 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:43.32,46.3 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:49.61,60.33 3 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:60.33,62.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:64.2,64.16 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:67.28,68.12 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:68.12,69.7 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:69.7,74.40 3 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:74.40,75.30 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:75.30,80.21 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:80.21,82.7 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:86.4,86.33 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:91.51,94.40 3 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:94.40,96.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:97.2,98.11 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:101.53,104.40 3 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:104.40,106.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:107.2,108.13 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:111.44,113.2 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:115.36,119.2 3 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/channel.go:121.34,125.2 3 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:26.113,28.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:28.9,30.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:32.2,34.24 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:34.24,36.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:38.2,41.17 3 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:44.115,46.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:46.9,48.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:50.2,54.66 3 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:57.108,59.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:59.9,61.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:62.2,62.19 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:62.19,64.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:65.2,66.38 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:69.113,70.18 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:70.18,72.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:74.2,75.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:75.9,77.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:79.2,80.19 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:80.19,82.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:84.2,84.38 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:87.109,89.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:89.9,91.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:92.2,93.49 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:96.112,98.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:98.9,100.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:101.2,101.36 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:104.33,111.60 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:111.60,113.21 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:113.21,115.6 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:116.5,116.24 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:125.60,127.21 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:127.21,129.6 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:130.5,130.24 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:139.60,141.22 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:141.22,143.6 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:144.5,144.33 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:155.60,158.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:168.60,171.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:179.60,179.86 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:180.101,182.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:191.62,191.88 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:199.62,199.88 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:208.62,208.85 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:34.26,39.2 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:41.101,48.17 5 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:48.17,50.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:52.2,52.37 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:52.37,56.75 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:56.75,58.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:60.3,60.23 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:60.23,63.19 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:63.19,65.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:65.10,67.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:68.4,69.31 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:69.31,74.20 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:74.20,76.6 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:78.4,78.46 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:79.9,81.47 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:81.47,86.20 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:86.20,88.6 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:94.112,99.17 4 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:99.17,101.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:103.2,106.24 3 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:106.24,107.19 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:107.19,110.40 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:110.40,111.31 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:111.31,112.14 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:114.5,114.34 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:114.34,117.6 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:119.9,122.40 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:122.40,123.31 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:123.31,124.14 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:126.5,126.34 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:126.34,129.6 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:137.2,137.38 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:137.38,138.30 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:138.30,139.54 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:139.54,142.5 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:148.2,148.17 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:148.17,149.36 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:149.36,151.40 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:151.40,153.58 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:153.58,154.35 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:154.35,157.7 2 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:158.6,158.14 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:161.5,161.30 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:161.30,162.35 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:162.35,165.7 2 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:171.2,172.39 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:172.39,174.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:176.2,176.20 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:179.84,183.38 3 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:183.38,185.29 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:185.29,186.35 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:186.35,188.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:189.4,189.12 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:192.3,192.41 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:192.41,194.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:198.51,205.19 5 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:205.19,206.39 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:206.39,207.26 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:207.26,210.5 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:212.3,213.21 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:216.2,218.38 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:218.38,220.78 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:220.78,223.12 3 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:226.3,226.50 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:226.50,229.4 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:232.2,232.53 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:235.32,240.38 4 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:240.38,241.51 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:241.51,243.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:245.2,245.14 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:248.52,253.35 4 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:253.35,255.66 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:255.66,257.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:258.3,258.20 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:258.20,260.12 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:262.3,262.106 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/pubsub.go:264.2,264.20 1 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:28.115,34.29 4 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:34.29,35.54 1 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:35.54,41.42 4 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:41.42,43.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:45.4,48.12 3 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:51.3,51.36 1 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:51.36,58.43 5 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:58.43,60.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:62.4,64.21 2 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:68.2,70.25 2 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:73.109,77.35 3 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:77.35,78.65 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:78.65,79.41 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:79.41,81.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:82.4,82.12 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:84.3,84.13 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:87.2,87.51 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:90.112,91.18 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:92.9,97.36 4 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:97.36,98.66 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:98.66,99.52 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:99.52,103.6 3 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:104.5,104.13 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:106.4,107.14 2 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:109.3,110.26 2 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:112.9,116.45 3 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:116.45,118.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:119.3,119.42 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:119.42,123.37 3 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:123.37,124.67 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:124.67,125.53 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:125.53,126.59 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:126.59,130.8 3 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:132.6,132.14 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:134.5,134.54 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:134.54,137.6 2 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:139.9,139.50 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:139.50,143.37 3 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:143.37,144.67 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:144.67,145.53 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:145.53,147.24 2 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:147.24,150.8 2 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:152.6,152.14 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:154.5,154.33 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:154.33,157.6 2 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:159.9,161.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:162.3,163.26 2 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:164.10,165.50 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:169.112,171.2 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:173.33,180.60 1 1
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:180.60,180.86 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:188.60,190.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:197.62,197.88 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:205.62,205.88 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:214.62,214.88 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:224.60,226.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:227.113,228.49 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:228.49,230.6 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:231.5,231.41 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:239.60,241.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:242.113,244.18 2 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:244.18,246.6 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:247.5,247.53 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:255.60,257.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:258.113,259.47 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:259.47,261.6 1 0
|
||||
github.com/echovault/echovault/pkg/modules/admin/commands.go:262.5,262.41 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:33.108,34.34 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:34.34,36.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:37.2,38.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:38.9,40.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:41.2,41.67 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:41.67,43.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:44.2,44.38 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:47.106,48.19 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:48.19,50.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:52.2,53.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:53.9,55.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:57.2,59.30 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:59.30,60.27 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:60.27,63.9 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:67.2,67.16 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:67.16,69.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:72.2,76.18 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:76.18,78.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:78.8,80.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:81.2,81.21 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:81.21,83.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:84.2,84.17 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:84.17,86.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:88.2,89.29 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:89.29,91.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:94.2,95.51 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:95.51,96.22 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:96.22,98.12 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:100.3,100.49 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:102.2,102.51 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:102.51,103.22 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:103.22,105.12 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:107.3,107.49 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:111.2,112.48 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:112.48,113.21 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:113.21,115.12 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:117.3,117.47 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:119.2,119.48 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:119.48,120.21 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:120.21,122.12 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:124.3,124.47 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:128.2,129.79 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:129.79,130.37 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:130.37,132.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:134.2,135.30 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:135.30,136.10 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:137.100,139.53 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:140.53,142.52 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:143.52,145.52 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:150.2,152.54 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:152.54,154.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:155.2,155.54 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:155.54,157.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:159.2,161.25 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:164.102,165.18 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:165.18,167.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:169.2,173.35 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:173.35,174.36 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:174.36,175.48 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:175.48,177.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:178.4,178.12 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:180.3,180.50 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:180.50,181.51 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:181.51,184.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:188.2,188.19 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:188.19,191.34 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:191.34,194.4 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:195.3,196.28 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:196.28,198.24 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:198.24,200.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:202.3,202.26 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:205.2,205.19 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:205.19,207.46 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:207.46,208.43 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:208.43,210.38 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:210.38,212.30 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:212.30,214.7 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:216.5,216.28 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:221.2,221.74 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:224.102,226.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:226.9,228.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:229.2,230.33 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:230.33,232.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:233.2,234.25 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:237.106,239.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:239.9,241.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:242.2,242.45 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:242.45,244.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:245.2,245.38 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:248.108,249.18 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:249.18,251.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:252.2,253.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:253.9,255.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:256.2,256.53 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:256.53,258.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:259.2,259.38 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:262.106,264.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:264.9,266.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:267.2,268.74 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:271.103,272.18 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:272.18,274.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:275.2,276.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:276.9,278.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:279.2,281.33 3 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:281.33,284.19 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:284.19,286.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:286.9,288.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:290.3,290.22 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:290.22,292.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:294.3,294.18 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:294.18,296.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:298.3,298.43 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:298.43,299.61 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:299.61,301.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:302.4,302.58 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:302.58,304.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:307.3,307.52 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:307.52,308.23 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:308.23,310.13 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:312.4,312.39 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:315.3,315.52 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:315.52,316.23 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:316.23,318.13 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:320.4,320.39 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:323.3,323.49 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:323.49,324.22 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:324.22,326.13 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:328.4,328.37 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:331.3,331.49 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:331.49,332.22 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:332.22,334.13 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:336.4,336.37 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:339.3,339.45 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:339.45,340.52 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:340.52,342.13 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:344.4,344.41 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:347.3,347.45 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:347.45,348.52 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:348.52,350.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:353.3,353.55 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:353.55,355.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:357.3,357.55 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:357.55,359.4 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:360.3,360.54 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:363.2,364.25 2 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:367.103,368.19 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:368.19,370.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:372.2,373.9 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:373.9,375.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:377.2,381.16 4 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:381.16,383.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:385.2,385.15 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:385.15,386.35 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:386.35,388.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:391.2,395.20 3 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:395.20,396.59 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:396.59,398.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:401.2,401.37 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:401.37,402.59 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:402.59,404.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:408.2,408.29 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:408.29,412.31 3 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:412.31,413.35 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:413.35,416.43 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:416.43,418.6 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:418.11,421.6 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:422.5,422.10 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:426.3,426.17 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:426.17,428.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:431.2,431.38 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:434.103,435.18 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:435.18,437.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:439.2,440.9 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:440.9,442.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:444.2,448.16 4 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:448.16,450.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:452.2,452.15 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:452.15,453.35 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:453.35,455.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:458.2,460.20 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:460.20,463.17 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:463.17,465.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:466.3,467.17 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:467.17,469.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:472.2,472.37 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:472.37,475.17 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:475.17,477.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:478.3,479.17 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:479.17,481.4 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:484.2,485.16 2 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:485.16,487.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:489.2,489.38 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:492.33,499.60 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:499.60,501.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:509.60,511.5 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:519.62,521.7 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:529.62,531.7 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:539.62,541.7 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:549.62,551.7 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:559.62,561.7 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:569.62,571.7 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:579.62,581.7 1 1
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:592.62,594.7 1 0
|
||||
github.com/echovault/echovault/pkg/modules/acl/commands.go:602.62,604.7 1 0
|
||||
github.com/echovault/echovault/pkg/modules/connection/commands.go:25.108,26.18 1 1
|
||||
github.com/echovault/echovault/pkg/modules/connection/commands.go:27.10,28.50 1 1
|
||||
github.com/echovault/echovault/pkg/modules/connection/commands.go:29.9,30.34 1 1
|
||||
github.com/echovault/echovault/pkg/modules/connection/commands.go:31.9,32.72 1 1
|
||||
github.com/echovault/echovault/pkg/modules/connection/commands.go:36.33,43.60 1 0
|
||||
github.com/echovault/echovault/pkg/modules/connection/commands.go:43.60,45.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:27.113,29.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:29.9,31.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:33.2,35.24 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:35.24,37.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:39.2,42.17 3 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:45.115,47.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:47.9,49.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:51.2,55.66 3 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:58.108,60.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:60.9,62.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:63.2,63.19 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:63.19,65.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:66.2,67.38 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:70.113,71.18 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:71.18,73.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:75.2,76.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:76.9,78.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:80.2,81.19 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:81.19,83.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:85.2,85.38 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:88.109,90.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:90.9,92.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:93.2,94.49 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:97.112,99.9 2 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:99.9,101.3 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:102.2,102.36 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:105.33,112.60 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:112.60,114.21 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:114.21,116.6 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:117.5,117.24 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:126.60,128.21 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:128.21,130.6 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:131.5,131.24 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:140.60,142.22 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:142.22,144.6 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:145.5,145.33 1 1
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:156.60,159.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:169.60,172.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:180.60,180.86 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:181.101,183.5 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:192.62,192.88 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:200.62,200.88 1 0
|
||||
github.com/echovault/echovault/pkg/modules/pubsub/commands.go:209.62,209.85 1 0
|
||||
github.com/echovault/echovault/pkg/modules/set/commands.go:28.108,30.16 2 1
|
||||
github.com/echovault/echovault/pkg/modules/set/commands.go:30.16,32.3 1 1
|
||||
github.com/echovault/echovault/pkg/modules/set/commands.go:34.2,38.33 3 1
|
||||
|
@@ -22,8 +22,8 @@ services:
|
||||
- MTLS=false
|
||||
- BOOTSTRAP_CLUSTER=false
|
||||
- ACL_CONFIG=/etc/config/echovault/acl.yml
|
||||
- REQUIRE_PASS=false
|
||||
- PASSWORD=default_password
|
||||
- REQUIRE_PASS=true
|
||||
- PASSWORD=password1
|
||||
- FORWARD_COMMAND=false
|
||||
- SNAPSHOT_THRESHOLD=1000
|
||||
- SNAPSHOT_INTERVAL=5m30s
|
||||
|
@@ -20,7 +20,7 @@ import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/echovault/echovault/internal"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"github.com/echovault/echovault/pkg/utils"
|
||||
"github.com/gobwas/glob"
|
||||
"gopkg.in/yaml.v3"
|
||||
@@ -44,11 +44,11 @@ type ACL struct {
|
||||
Users []*User // List of ACL user profiles
|
||||
UsersMutex sync.RWMutex // RWMutex for concurrency control when accessing ACL profile list
|
||||
Connections map[*net.Conn]Connection // Connections to the echovault that are currently registered with the ACL module
|
||||
Config internal.Config // EchoVault configuration that contains the relevant ACL config options
|
||||
Config config.Config // EchoVault configuration that contains the relevant ACL config options
|
||||
GlobPatterns map[string]glob.Glob
|
||||
}
|
||||
|
||||
func NewACL(config internal.Config) *ACL {
|
||||
func NewACL(config config.Config) *ACL {
|
||||
var users []*User
|
||||
|
||||
// 1. Initialise default ACL user
|
||||
@@ -168,6 +168,13 @@ func (acl *ACL) SetUser(cmd []string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (acl *ACL) AddUsers(users []*User) {
|
||||
acl.LockUsers()
|
||||
defer acl.UnlockUsers()
|
||||
|
||||
acl.Users = append(acl.Users, users...)
|
||||
}
|
||||
|
||||
func (acl *ACL) DeleteUser(_ context.Context, usernames []string) error {
|
||||
acl.LockUsers()
|
||||
defer acl.UnlockUsers()
|
@@ -12,13 +12,14 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package internal
|
||||
package config
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"flag"
|
||||
"fmt"
|
||||
"github.com/echovault/echovault/internal"
|
||||
"github.com/echovault/echovault/pkg/utils"
|
||||
"log"
|
||||
"os"
|
||||
@@ -99,7 +100,7 @@ The options are 'always' for syncing on each command, 'everysec' to sync every s
|
||||
flag.Func("max-memory", `Upper memory limit before triggering eviction.
|
||||
Supported units (kb, mb, gb, tb, pb). When 0 is passed, there will be no memory limit.
|
||||
There is no limit by default.`, func(memory string) error {
|
||||
b, err := ParseMemory(memory)
|
||||
b, err := internal.ParseMemory(memory)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
37
internal/config/default.go
Normal file
37
internal/config/default.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"github.com/echovault/echovault/pkg/utils"
|
||||
"time"
|
||||
)
|
||||
|
||||
func DefaultConfig() Config {
|
||||
return Config{
|
||||
TLS: false,
|
||||
MTLS: false,
|
||||
CertKeyPairs: make([][]string, 0),
|
||||
ClientCAs: make([]string, 0),
|
||||
Port: 7480,
|
||||
ServerID: "",
|
||||
JoinAddr: "",
|
||||
BindAddr: "localhost",
|
||||
RaftBindPort: 7481,
|
||||
MemberListBindPort: 7946,
|
||||
InMemory: false,
|
||||
DataDir: ".",
|
||||
BootstrapCluster: false,
|
||||
AclConfig: "",
|
||||
ForwardCommand: false,
|
||||
RequirePass: false,
|
||||
Password: "",
|
||||
SnapShotThreshold: 1000,
|
||||
SnapshotInterval: 5 * time.Minute,
|
||||
RestoreAOF: false,
|
||||
RestoreSnapshot: false,
|
||||
AOFSyncStrategy: "everysec",
|
||||
MaxMemory: 0,
|
||||
EvictionPolicy: utils.NoEviction,
|
||||
EvictionSample: 20,
|
||||
EvictionInterval: 100 * time.Millisecond,
|
||||
}
|
||||
}
|
@@ -19,6 +19,7 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/echovault/echovault/internal"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"github.com/echovault/echovault/pkg/utils"
|
||||
"github.com/hashicorp/memberlist"
|
||||
"github.com/hashicorp/raft"
|
||||
@@ -31,7 +32,7 @@ type Delegate struct {
|
||||
}
|
||||
|
||||
type DelegateOpts struct {
|
||||
config internal.Config
|
||||
config config.Config
|
||||
broadcastQueue *memberlist.TransmitLimitedQueue
|
||||
addVoter func(id raft.ServerID, address raft.ServerAddress, prevIndex uint64, timeout time.Duration) error
|
||||
isRaftLeader func() bool
|
||||
|
@@ -19,6 +19,7 @@ import (
|
||||
"crypto/md5"
|
||||
"fmt"
|
||||
"github.com/echovault/echovault/internal"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
@@ -35,7 +36,7 @@ type NodeMeta struct {
|
||||
}
|
||||
|
||||
type Opts struct {
|
||||
Config internal.Config
|
||||
Config config.Config
|
||||
HasJoinedCluster func() bool
|
||||
AddVoter func(id raft.ServerID, address raft.ServerAddress, prevIndex uint64, timeout time.Duration) error
|
||||
RemoveRaftServer func(meta NodeMeta) error
|
||||
|
@@ -88,6 +88,14 @@ func (ch *Channel) Start() {
|
||||
}()
|
||||
}
|
||||
|
||||
func (ch *Channel) Name() string {
|
||||
return ch.name
|
||||
}
|
||||
|
||||
func (ch *Channel) Pattern() glob.Glob {
|
||||
return ch.pattern
|
||||
}
|
||||
|
||||
func (ch *Channel) Subscribe(conn *net.Conn) bool {
|
||||
ch.subscribersRWMut.Lock()
|
||||
defer ch.subscribersRWMut.Unlock()
|
||||
@@ -115,11 +123,29 @@ func (ch *Channel) Publish(message string) {
|
||||
func (ch *Channel) IsActive() bool {
|
||||
ch.subscribersRWMut.RLock()
|
||||
defer ch.subscribersRWMut.RUnlock()
|
||||
return len(ch.subscribers) > 0
|
||||
|
||||
active := len(ch.subscribers) > 0
|
||||
|
||||
return active
|
||||
}
|
||||
|
||||
func (ch *Channel) NumSubs() int {
|
||||
ch.subscribersRWMut.RLock()
|
||||
defer ch.subscribersRWMut.RUnlock()
|
||||
return len(ch.subscribers)
|
||||
|
||||
n := len(ch.subscribers)
|
||||
|
||||
return n
|
||||
}
|
||||
|
||||
func (ch *Channel) Subscribers() map[*net.Conn]*resp.Conn {
|
||||
ch.subscribersRWMut.RLock()
|
||||
defer ch.subscribersRWMut.RUnlock()
|
||||
|
||||
subscribers := make(map[*net.Conn]*resp.Conn, len(ch.subscribers))
|
||||
for k, v := range ch.subscribers {
|
||||
subscribers[k] = v
|
||||
}
|
||||
|
||||
return subscribers
|
||||
}
|
@@ -263,3 +263,15 @@ func (ps *PubSub) NumSub(channels []string) []byte {
|
||||
}
|
||||
return []byte(res)
|
||||
}
|
||||
|
||||
func (ps *PubSub) GetAllChannels() []*Channel {
|
||||
ps.channelsRWMut.RLock()
|
||||
defer ps.channelsRWMut.RUnlock()
|
||||
|
||||
channels := make([]*Channel, len(ps.channels))
|
||||
for i, channel := range ps.channels {
|
||||
channels[i] = channel
|
||||
}
|
||||
|
||||
return channels
|
||||
}
|
@@ -17,6 +17,7 @@ package raft
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/echovault/echovault/internal"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"github.com/echovault/echovault/pkg/utils"
|
||||
"github.com/hashicorp/raft"
|
||||
"strconv"
|
||||
@@ -24,7 +25,7 @@ import (
|
||||
)
|
||||
|
||||
type SnapshotOpts struct {
|
||||
config internal.Config
|
||||
config config.Config
|
||||
data map[string]utils.KeyData
|
||||
startSnapshot func()
|
||||
finishSnapshot func()
|
||||
|
@@ -19,6 +19,7 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/echovault/echovault/internal"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"github.com/echovault/echovault/pkg/utils"
|
||||
"github.com/hashicorp/raft"
|
||||
"io"
|
||||
@@ -27,7 +28,7 @@ import (
|
||||
)
|
||||
|
||||
type FSMOpts struct {
|
||||
Config internal.Config
|
||||
Config config.Config
|
||||
EchoVault utils.EchoVault
|
||||
GetCommand func(command string) (utils.Command, error)
|
||||
DeleteKey func(ctx context.Context, key string) error
|
||||
|
@@ -18,7 +18,7 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/echovault/echovault/internal"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"github.com/echovault/echovault/internal/memberlist"
|
||||
"log"
|
||||
"net"
|
||||
@@ -32,7 +32,7 @@ import (
|
||||
)
|
||||
|
||||
type Opts struct {
|
||||
Config internal.Config
|
||||
Config config.Config
|
||||
EchoVault utils.EchoVault
|
||||
GetCommand func(command string) (utils.Command, error)
|
||||
DeleteKey func(ctx context.Context, key string) error
|
||||
|
@@ -1,8 +1,11 @@
|
||||
package config
|
||||
|
||||
import "github.com/echovault/echovault/internal"
|
||||
import (
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
)
|
||||
|
||||
// Config returns the default configuration.
|
||||
func Config() (internal.Config, error) {
|
||||
return internal.GetConfig()
|
||||
// DefaultConfig returns the default configuration.
|
||||
// / This should be used when using EchoVault as an embedded library.
|
||||
func DefaultConfig() config.Config {
|
||||
return config.DefaultConfig()
|
||||
}
|
||||
|
@@ -21,9 +21,12 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/echovault/echovault/internal"
|
||||
"github.com/echovault/echovault/internal/acl"
|
||||
"github.com/echovault/echovault/internal/aof"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"github.com/echovault/echovault/internal/eviction"
|
||||
"github.com/echovault/echovault/internal/memberlist"
|
||||
"github.com/echovault/echovault/internal/pubsub"
|
||||
"github.com/echovault/echovault/internal/raft"
|
||||
"github.com/echovault/echovault/internal/snapshot"
|
||||
"github.com/echovault/echovault/pkg/utils"
|
||||
@@ -38,7 +41,7 @@ import (
|
||||
|
||||
type EchoVault struct {
|
||||
// config holds the echovault configuration variables.
|
||||
config internal.Config
|
||||
config config.Config
|
||||
|
||||
// The current index for the latest connection id.
|
||||
// This number is incremented everytime there's a new connection and
|
||||
@@ -73,8 +76,8 @@ type EchoVault struct {
|
||||
|
||||
context context.Context
|
||||
|
||||
ACL utils.ACL
|
||||
PubSub utils.PubSub
|
||||
ACL *acl.ACL
|
||||
PubSub *pubsub.PubSub
|
||||
|
||||
snapshotInProgress atomic.Bool // Atomic boolean that's true when actively taking a snapshot.
|
||||
rewriteAOFInProgress atomic.Bool // Atomic boolean that's true when actively rewriting AOF file is in progress.
|
||||
@@ -91,24 +94,12 @@ func WithContext(ctx context.Context) func(echovault *EchoVault) {
|
||||
}
|
||||
}
|
||||
|
||||
func WithConfig(config internal.Config) func(echovault *EchoVault) {
|
||||
func WithConfig(config config.Config) func(echovault *EchoVault) {
|
||||
return func(echovault *EchoVault) {
|
||||
echovault.config = config
|
||||
}
|
||||
}
|
||||
|
||||
func WithACL(acl utils.ACL) func(echovault *EchoVault) {
|
||||
return func(echovault *EchoVault) {
|
||||
echovault.ACL = acl
|
||||
}
|
||||
}
|
||||
|
||||
func WithPubSub(pubsub utils.PubSub) func(echovault *EchoVault) {
|
||||
return func(echovault *EchoVault) {
|
||||
echovault.PubSub = pubsub
|
||||
}
|
||||
}
|
||||
|
||||
func WithCommands(commands []utils.Command) func(echovault *EchoVault) {
|
||||
return func(echovault *EchoVault) {
|
||||
echovault.commands = commands
|
||||
@@ -119,6 +110,7 @@ func NewEchoVault(options ...func(echovault *EchoVault)) *EchoVault {
|
||||
echovault := &EchoVault{
|
||||
context: context.Background(),
|
||||
commands: make([]utils.Command, 0),
|
||||
config: config.DefaultConfig(),
|
||||
store: make(map[string]utils.KeyData),
|
||||
keyLocks: make(map[string]*sync.RWMutex),
|
||||
keyCreationLock: &sync.Mutex{},
|
||||
@@ -128,6 +120,12 @@ func NewEchoVault(options ...func(echovault *EchoVault)) *EchoVault {
|
||||
option(echovault)
|
||||
}
|
||||
|
||||
// Set up ACL module
|
||||
echovault.ACL = acl.NewACL(echovault.config)
|
||||
|
||||
// Set up Pub/Sub module
|
||||
echovault.PubSub = pubsub.NewPubSub()
|
||||
|
||||
if echovault.isInCluster() {
|
||||
echovault.raft = raft.NewRaft(raft.Opts{
|
||||
Config: echovault.config,
|
||||
|
@@ -19,6 +19,7 @@ import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
internal_acl "github.com/echovault/echovault/internal/acl"
|
||||
"github.com/echovault/echovault/pkg/utils"
|
||||
"gopkg.in/yaml.v3"
|
||||
"log"
|
||||
@@ -33,7 +34,7 @@ func handleAuth(ctx context.Context, cmd []string, server utils.EchoVault, conn
|
||||
if len(cmd) < 2 || len(cmd) > 3 {
|
||||
return nil, errors.New(utils.WrongArgsResponse)
|
||||
}
|
||||
acl, ok := server.GetACL().(*ACL)
|
||||
acl, ok := server.GetACL().(*internal_acl.ACL)
|
||||
if !ok {
|
||||
return nil, errors.New("could not load ACL")
|
||||
}
|
||||
@@ -48,12 +49,12 @@ func handleGetUser(_ context.Context, cmd []string, server utils.EchoVault, _ *n
|
||||
return nil, errors.New(utils.WrongArgsResponse)
|
||||
}
|
||||
|
||||
acl, ok := server.GetACL().(*ACL)
|
||||
acl, ok := server.GetACL().(*internal_acl.ACL)
|
||||
if !ok {
|
||||
return nil, errors.New("could not load ACL")
|
||||
}
|
||||
|
||||
var user *User
|
||||
var user *internal_acl.User
|
||||
userFound := false
|
||||
for _, u := range acl.Users {
|
||||
if u.Username == cmd[2] {
|
||||
@@ -221,7 +222,7 @@ func handleCat(_ context.Context, cmd []string, server utils.EchoVault, _ *net.C
|
||||
}
|
||||
|
||||
func handleUsers(_ context.Context, _ []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) {
|
||||
acl, ok := server.GetACL().(*ACL)
|
||||
acl, ok := server.GetACL().(*internal_acl.ACL)
|
||||
if !ok {
|
||||
return nil, errors.New("could not load ACL")
|
||||
}
|
||||
@@ -234,7 +235,7 @@ func handleUsers(_ context.Context, _ []string, server utils.EchoVault, _ *net.C
|
||||
}
|
||||
|
||||
func handleSetUser(_ context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) {
|
||||
acl, ok := server.GetACL().(*ACL)
|
||||
acl, ok := server.GetACL().(*internal_acl.ACL)
|
||||
if !ok {
|
||||
return nil, errors.New("could not load ACL")
|
||||
}
|
||||
@@ -248,7 +249,7 @@ func handleDelUser(ctx context.Context, cmd []string, server utils.EchoVault, _
|
||||
if len(cmd) < 3 {
|
||||
return nil, errors.New(utils.WrongArgsResponse)
|
||||
}
|
||||
acl, ok := server.GetACL().(*ACL)
|
||||
acl, ok := server.GetACL().(*internal_acl.ACL)
|
||||
if !ok {
|
||||
return nil, errors.New("could not load ACL")
|
||||
}
|
||||
@@ -259,7 +260,7 @@ func handleDelUser(ctx context.Context, cmd []string, server utils.EchoVault, _
|
||||
}
|
||||
|
||||
func handleWhoAmI(_ context.Context, _ []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) {
|
||||
acl, ok := server.GetACL().(*ACL)
|
||||
acl, ok := server.GetACL().(*internal_acl.ACL)
|
||||
if !ok {
|
||||
return nil, errors.New("could not load ACL")
|
||||
}
|
||||
@@ -271,7 +272,7 @@ func handleList(_ context.Context, cmd []string, server utils.EchoVault, _ *net.
|
||||
if len(cmd) > 2 {
|
||||
return nil, errors.New(utils.WrongArgsResponse)
|
||||
}
|
||||
acl, ok := server.GetACL().(*ACL)
|
||||
acl, ok := server.GetACL().(*internal_acl.ACL)
|
||||
if !ok {
|
||||
return nil, errors.New("could not load ACL")
|
||||
}
|
||||
@@ -368,7 +369,7 @@ func handleLoad(_ context.Context, cmd []string, server utils.EchoVault, _ *net.
|
||||
return nil, errors.New(utils.WrongArgsResponse)
|
||||
}
|
||||
|
||||
acl, ok := server.GetACL().(*ACL)
|
||||
acl, ok := server.GetACL().(*internal_acl.ACL)
|
||||
if !ok {
|
||||
return nil, errors.New("could not load ACL")
|
||||
}
|
||||
@@ -389,7 +390,7 @@ func handleLoad(_ context.Context, cmd []string, server utils.EchoVault, _ *net.
|
||||
|
||||
ext := path.Ext(f.Name())
|
||||
|
||||
var users []*User
|
||||
var users []*internal_acl.User
|
||||
|
||||
if ext == ".json" {
|
||||
if err := json.NewDecoder(f).Decode(&users); err != nil {
|
||||
@@ -435,7 +436,7 @@ func handleSave(_ context.Context, cmd []string, server utils.EchoVault, _ *net.
|
||||
return nil, errors.New(utils.WrongArgsResponse)
|
||||
}
|
||||
|
||||
acl, ok := server.GetACL().(*ACL)
|
||||
acl, ok := server.GetACL().(*internal_acl.ACL)
|
||||
if !ok {
|
||||
return nil, errors.New("could not load ACL")
|
||||
}
|
||||
|
@@ -18,7 +18,8 @@ import (
|
||||
"context"
|
||||
"crypto/sha256"
|
||||
"fmt"
|
||||
"github.com/echovault/echovault/internal"
|
||||
internal_acl "github.com/echovault/echovault/internal/acl"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"github.com/echovault/echovault/pkg/echovault"
|
||||
"github.com/echovault/echovault/pkg/utils"
|
||||
"github.com/tidwall/resp"
|
||||
@@ -32,8 +33,6 @@ var bindAddr string
|
||||
var port uint16
|
||||
var mockServer *echovault.EchoVault
|
||||
|
||||
var acl *ACL
|
||||
|
||||
func init() {
|
||||
bindAddr = "localhost"
|
||||
port = 7490
|
||||
@@ -46,7 +45,7 @@ func init() {
|
||||
}
|
||||
|
||||
func setUpServer(bindAddr string, port uint16, requirePass bool, aclConfig string) *echovault.EchoVault {
|
||||
config := internal.Config{
|
||||
conf := config.Config{
|
||||
BindAddr: bindAddr,
|
||||
Port: port,
|
||||
DataDir: "",
|
||||
@@ -56,43 +55,45 @@ func setUpServer(bindAddr string, port uint16, requirePass bool, aclConfig strin
|
||||
AclConfig: aclConfig,
|
||||
}
|
||||
|
||||
acl = NewACL(config)
|
||||
acl.Users = append(acl.Users, generateInitialTestUsers()...)
|
||||
|
||||
return echovault.NewEchoVault(
|
||||
echovault.WithConfig(config),
|
||||
echovault.WithACL(acl),
|
||||
mockServer := echovault.NewEchoVault(
|
||||
echovault.WithConfig(conf),
|
||||
echovault.WithCommands(Commands()),
|
||||
)
|
||||
|
||||
// Add the initial test users to the ACL module
|
||||
acl := mockServer.GetACL().(*internal_acl.ACL)
|
||||
acl.AddUsers(generateInitialTestUsers())
|
||||
|
||||
return mockServer
|
||||
}
|
||||
|
||||
func generateInitialTestUsers() []*User {
|
||||
func generateInitialTestUsers() []*internal_acl.User {
|
||||
// User with both hash password and plaintext password
|
||||
withPasswordUser := CreateUser("with_password_user")
|
||||
withPasswordUser := internal_acl.CreateUser("with_password_user")
|
||||
h := sha256.New()
|
||||
h.Write([]byte("password3"))
|
||||
withPasswordUser.Passwords = []Password{
|
||||
{PasswordType: PasswordPlainText, PasswordValue: "password2"},
|
||||
{PasswordType: PasswordSHA256, PasswordValue: string(h.Sum(nil))},
|
||||
withPasswordUser.Passwords = []internal_acl.Password{
|
||||
{PasswordType: internal_acl.PasswordPlainText, PasswordValue: "password2"},
|
||||
{PasswordType: internal_acl.PasswordSHA256, PasswordValue: string(h.Sum(nil))},
|
||||
}
|
||||
withPasswordUser.IncludedCategories = []string{"*"}
|
||||
withPasswordUser.IncludedCommands = []string{"*"}
|
||||
|
||||
// User with NoPassword option
|
||||
noPasswordUser := CreateUser("no_password_user")
|
||||
noPasswordUser.Passwords = []Password{
|
||||
{PasswordType: PasswordPlainText, PasswordValue: "password4"},
|
||||
noPasswordUser := internal_acl.CreateUser("no_password_user")
|
||||
noPasswordUser.Passwords = []internal_acl.Password{
|
||||
{PasswordType: internal_acl.PasswordPlainText, PasswordValue: "password4"},
|
||||
}
|
||||
noPasswordUser.NoPassword = true
|
||||
|
||||
// Disabled user
|
||||
disabledUser := CreateUser("disabled_user")
|
||||
disabledUser.Passwords = []Password{
|
||||
{PasswordType: PasswordPlainText, PasswordValue: "password5"},
|
||||
disabledUser := internal_acl.CreateUser("disabled_user")
|
||||
disabledUser.Passwords = []internal_acl.Password{
|
||||
{PasswordType: internal_acl.PasswordPlainText, PasswordValue: "password5"},
|
||||
}
|
||||
disabledUser.Enabled = false
|
||||
|
||||
return []*User{
|
||||
return []*internal_acl.User{
|
||||
withPasswordUser,
|
||||
noPasswordUser,
|
||||
disabledUser,
|
||||
@@ -123,7 +124,7 @@ func compareSlices[T comparable](res, expected []T) error {
|
||||
}
|
||||
|
||||
// compareUsers compares 2 users and checks if all their fields are equal
|
||||
func compareUsers(user1, user2 *User) error {
|
||||
func compareUsers(user1, user2 *internal_acl.User) error {
|
||||
// Compare flags
|
||||
if user1.Username != user2.Username {
|
||||
return fmt.Errorf("mismatched usernames \"%s\", and \"%s\"", user1.Username, user2.Username)
|
||||
@@ -140,14 +141,14 @@ func compareUsers(user1, user2 *User) error {
|
||||
|
||||
// Compare passwords
|
||||
for _, password1 := range user1.Passwords {
|
||||
if !slices.ContainsFunc(user2.Passwords, func(password2 Password) bool {
|
||||
if !slices.ContainsFunc(user2.Passwords, func(password2 internal_acl.Password) bool {
|
||||
return password1.PasswordType == password2.PasswordType && password1.PasswordValue == password2.PasswordValue
|
||||
}) {
|
||||
return fmt.Errorf("found password %+v in user1 that was not found in user2", password1)
|
||||
}
|
||||
}
|
||||
for _, password2 := range user2.Passwords {
|
||||
if !slices.ContainsFunc(user1.Passwords, func(password1 Password) bool {
|
||||
if !slices.ContainsFunc(user1.Passwords, func(password1 internal_acl.Password) bool {
|
||||
return password1.PasswordType == password2.PasswordType && password1.PasswordValue == password2.PasswordValue
|
||||
}) {
|
||||
return fmt.Errorf("found password %+v in user2 that was not found in user1", password2)
|
||||
@@ -448,7 +449,7 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
go func() {
|
||||
mockServer.Start(context.Background())
|
||||
}()
|
||||
acl, ok := mockServer.GetACL().(*ACL)
|
||||
acl, ok := mockServer.GetACL().(*internal_acl.ACL)
|
||||
if !ok {
|
||||
t.Error("error loading ACL module")
|
||||
}
|
||||
@@ -464,11 +465,11 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
r := resp.NewConn(conn)
|
||||
|
||||
tests := []struct {
|
||||
presetUser *User
|
||||
presetUser *internal_acl.User
|
||||
cmd []resp.Value
|
||||
wantRes string
|
||||
wantErr string
|
||||
wantUser *User
|
||||
wantUser *internal_acl.User
|
||||
}{
|
||||
{
|
||||
// 1. Create new enabled user
|
||||
@@ -481,8 +482,8 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
wantRes: "OK",
|
||||
wantErr: "",
|
||||
wantUser: func() *User {
|
||||
user := CreateUser("set_user_1")
|
||||
wantUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_1")
|
||||
user.Enabled = true
|
||||
user.Normalise()
|
||||
return user
|
||||
@@ -499,8 +500,8 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
wantRes: "OK",
|
||||
wantErr: "",
|
||||
wantUser: func() *User {
|
||||
user := CreateUser("set_user_2")
|
||||
wantUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_2")
|
||||
user.Enabled = false
|
||||
user.Normalise()
|
||||
return user
|
||||
@@ -521,14 +522,14 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
wantRes: "OK",
|
||||
wantErr: "",
|
||||
wantUser: func() *User {
|
||||
user := CreateUser("set_user_3")
|
||||
wantUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_3")
|
||||
user.Enabled = true
|
||||
user.Passwords = []Password{
|
||||
{PasswordType: PasswordPlainText, PasswordValue: "set_user_3_plaintext_password_1"},
|
||||
{PasswordType: PasswordPlainText, PasswordValue: "set_user_3_plaintext_password_2"},
|
||||
{PasswordType: PasswordSHA256, PasswordValue: generateSHA256Password("set_user_3_hash_password_1")},
|
||||
{PasswordType: PasswordSHA256, PasswordValue: generateSHA256Password("set_user_3_hash_password_2")},
|
||||
user.Passwords = []internal_acl.Password{
|
||||
{PasswordType: internal_acl.PasswordPlainText, PasswordValue: "set_user_3_plaintext_password_1"},
|
||||
{PasswordType: internal_acl.PasswordPlainText, PasswordValue: "set_user_3_plaintext_password_2"},
|
||||
{PasswordType: internal_acl.PasswordSHA256, PasswordValue: generateSHA256Password("set_user_3_hash_password_1")},
|
||||
{PasswordType: internal_acl.PasswordSHA256, PasswordValue: generateSHA256Password("set_user_3_hash_password_2")},
|
||||
}
|
||||
user.Normalise()
|
||||
return user
|
||||
@@ -536,14 +537,14 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
{
|
||||
// 4. Remove plaintext and SHA256 password from existing user
|
||||
presetUser: func() *User {
|
||||
user := CreateUser("set_user_4")
|
||||
presetUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_4")
|
||||
user.Enabled = true
|
||||
user.Passwords = []Password{
|
||||
{PasswordType: PasswordPlainText, PasswordValue: "set_user_3_plaintext_password_1"},
|
||||
{PasswordType: PasswordPlainText, PasswordValue: "set_user_3_plaintext_password_2"},
|
||||
{PasswordType: PasswordSHA256, PasswordValue: generateSHA256Password("set_user_3_hash_password_1")},
|
||||
{PasswordType: PasswordSHA256, PasswordValue: generateSHA256Password("set_user_3_hash_password_2")},
|
||||
user.Passwords = []internal_acl.Password{
|
||||
{PasswordType: internal_acl.PasswordPlainText, PasswordValue: "set_user_3_plaintext_password_1"},
|
||||
{PasswordType: internal_acl.PasswordPlainText, PasswordValue: "set_user_3_plaintext_password_2"},
|
||||
{PasswordType: internal_acl.PasswordSHA256, PasswordValue: generateSHA256Password("set_user_3_hash_password_1")},
|
||||
{PasswordType: internal_acl.PasswordSHA256, PasswordValue: generateSHA256Password("set_user_3_hash_password_2")},
|
||||
}
|
||||
user.Normalise()
|
||||
return user
|
||||
@@ -558,12 +559,12 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
wantRes: "OK",
|
||||
wantErr: "",
|
||||
wantUser: func() *User {
|
||||
user := CreateUser("set_user_4")
|
||||
wantUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_4")
|
||||
user.Enabled = true
|
||||
user.Passwords = []Password{
|
||||
{PasswordType: PasswordPlainText, PasswordValue: "set_user_3_plaintext_password_1"},
|
||||
{PasswordType: PasswordSHA256, PasswordValue: generateSHA256Password("set_user_3_hash_password_1")},
|
||||
user.Passwords = []internal_acl.Password{
|
||||
{PasswordType: internal_acl.PasswordPlainText, PasswordValue: "set_user_3_plaintext_password_1"},
|
||||
{PasswordType: internal_acl.PasswordSHA256, PasswordValue: generateSHA256Password("set_user_3_hash_password_1")},
|
||||
}
|
||||
user.Normalise()
|
||||
return user
|
||||
@@ -581,8 +582,8 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
wantRes: "OK",
|
||||
wantErr: "",
|
||||
wantUser: func() *User {
|
||||
user := CreateUser("set_user_5")
|
||||
wantUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_5")
|
||||
user.Enabled = true
|
||||
user.ExcludedCommands = []string{"*"}
|
||||
user.ExcludedCategories = []string{"*"}
|
||||
@@ -602,8 +603,8 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
wantRes: "OK",
|
||||
wantErr: "",
|
||||
wantUser: func() *User {
|
||||
user := CreateUser("set_user_6")
|
||||
wantUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_6")
|
||||
user.Enabled = true
|
||||
user.IncludedCategories = []string{"*"}
|
||||
user.ExcludedCategories = []string{}
|
||||
@@ -623,8 +624,8 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
wantRes: "OK",
|
||||
wantErr: "",
|
||||
wantUser: func() *User {
|
||||
user := CreateUser("set_user_7")
|
||||
wantUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_7")
|
||||
user.Enabled = true
|
||||
user.IncludedCategories = []string{"*"}
|
||||
user.ExcludedCategories = []string{}
|
||||
@@ -649,8 +650,8 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
wantRes: "OK",
|
||||
wantErr: "",
|
||||
wantUser: func() *User {
|
||||
user := CreateUser("set_user_8")
|
||||
wantUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_8")
|
||||
user.Enabled = true
|
||||
user.IncludedCategories = []string{utils.WriteCategory, utils.ReadCategory, utils.PubSubCategory}
|
||||
user.ExcludedCategories = []string{utils.AdminCategory, utils.ConnectionCategory, utils.DangerousCategory}
|
||||
@@ -670,8 +671,8 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
wantRes: "OK",
|
||||
wantErr: "",
|
||||
wantUser: func() *User {
|
||||
user := CreateUser("set_user_9")
|
||||
wantUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_9")
|
||||
user.Enabled = true
|
||||
user.NoKeys = true
|
||||
user.IncludedReadKeys = []string{}
|
||||
@@ -700,8 +701,8 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
wantRes: "OK",
|
||||
wantErr: "",
|
||||
wantUser: func() *User {
|
||||
user := CreateUser("set_user_10")
|
||||
wantUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_10")
|
||||
user.Enabled = true
|
||||
user.NoKeys = false
|
||||
user.IncludedReadKeys = []string{"key1", "key2", "key3", "key4", "key5", "key6"}
|
||||
@@ -722,8 +723,8 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
wantRes: "OK",
|
||||
wantErr: "",
|
||||
wantUser: func() *User {
|
||||
user := CreateUser("set_user_11")
|
||||
wantUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_11")
|
||||
user.Enabled = true
|
||||
user.IncludedPubSubChannels = []string{"*"}
|
||||
user.ExcludedPubSubChannels = []string{}
|
||||
@@ -743,8 +744,8 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
wantRes: "OK",
|
||||
wantErr: "",
|
||||
wantUser: func() *User {
|
||||
user := CreateUser("set_user_12")
|
||||
wantUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_12")
|
||||
user.Enabled = true
|
||||
user.IncludedPubSubChannels = []string{"*"}
|
||||
user.ExcludedPubSubChannels = []string{}
|
||||
@@ -767,8 +768,8 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
wantRes: "OK",
|
||||
wantErr: "",
|
||||
wantUser: func() *User {
|
||||
user := CreateUser("set_user_13")
|
||||
wantUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_13")
|
||||
user.Enabled = true
|
||||
user.IncludedPubSubChannels = []string{"channel1", "channel2"}
|
||||
user.ExcludedPubSubChannels = []string{"channel3", "channel4"}
|
||||
@@ -788,8 +789,8 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
wantRes: "OK",
|
||||
wantErr: "",
|
||||
wantUser: func() *User {
|
||||
user := CreateUser("set_user_14")
|
||||
wantUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_14")
|
||||
user.Enabled = true
|
||||
user.IncludedCommands = []string{"*"}
|
||||
user.ExcludedCommands = []string{}
|
||||
@@ -814,8 +815,8 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
wantRes: "OK",
|
||||
wantErr: "",
|
||||
wantUser: func() *User {
|
||||
user := CreateUser("set_user_15")
|
||||
wantUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_15")
|
||||
user.Enabled = true
|
||||
user.IncludedCommands = []string{"acl|getuser", "acl|setuser", "acl|deluser"}
|
||||
user.ExcludedCommands = []string{"rewriteaof", "save", "publish"}
|
||||
@@ -838,24 +839,24 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
wantRes: "OK",
|
||||
wantErr: "",
|
||||
wantUser: func() *User {
|
||||
user := CreateUser("set_user_16")
|
||||
wantUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_16")
|
||||
user.Enabled = true
|
||||
user.NoPassword = true
|
||||
user.Passwords = []Password{}
|
||||
user.Passwords = []internal_acl.Password{}
|
||||
user.Normalise()
|
||||
return user
|
||||
}(),
|
||||
},
|
||||
{
|
||||
// 17. Delete all existing users passwords using 'nopass'
|
||||
presetUser: func() *User {
|
||||
user := CreateUser("set_user_17")
|
||||
presetUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_17")
|
||||
user.Enabled = true
|
||||
user.NoPassword = true
|
||||
user.Passwords = []Password{
|
||||
{PasswordType: PasswordPlainText, PasswordValue: "password1"},
|
||||
{PasswordType: PasswordSHA256, PasswordValue: generateSHA256Password("password2")},
|
||||
user.Passwords = []internal_acl.Password{
|
||||
{PasswordType: internal_acl.PasswordPlainText, PasswordValue: "password1"},
|
||||
{PasswordType: internal_acl.PasswordSHA256, PasswordValue: generateSHA256Password("password2")},
|
||||
}
|
||||
user.Normalise()
|
||||
return user
|
||||
@@ -869,24 +870,24 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
wantRes: "OK",
|
||||
wantErr: "",
|
||||
wantUser: func() *User {
|
||||
user := CreateUser("set_user_17")
|
||||
wantUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_17")
|
||||
user.Enabled = true
|
||||
user.NoPassword = true
|
||||
user.Passwords = []Password{}
|
||||
user.Passwords = []internal_acl.Password{}
|
||||
user.Normalise()
|
||||
return user
|
||||
}(),
|
||||
},
|
||||
{
|
||||
// 18. Clear all of an existing user's passwords using 'resetpass'
|
||||
presetUser: func() *User {
|
||||
user := CreateUser("set_user_18")
|
||||
presetUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_18")
|
||||
user.Enabled = true
|
||||
user.NoPassword = true
|
||||
user.Passwords = []Password{
|
||||
{PasswordType: PasswordPlainText, PasswordValue: "password1"},
|
||||
{PasswordType: PasswordSHA256, PasswordValue: generateSHA256Password("password2")},
|
||||
user.Passwords = []internal_acl.Password{
|
||||
{PasswordType: internal_acl.PasswordPlainText, PasswordValue: "password1"},
|
||||
{PasswordType: internal_acl.PasswordSHA256, PasswordValue: generateSHA256Password("password2")},
|
||||
}
|
||||
user.Normalise()
|
||||
return user
|
||||
@@ -900,19 +901,19 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
wantRes: "OK",
|
||||
wantErr: "",
|
||||
wantUser: func() *User {
|
||||
user := CreateUser("set_user_18")
|
||||
wantUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_18")
|
||||
user.Enabled = true
|
||||
user.NoPassword = true
|
||||
user.Passwords = []Password{}
|
||||
user.Passwords = []internal_acl.Password{}
|
||||
user.Normalise()
|
||||
return user
|
||||
}(),
|
||||
},
|
||||
{
|
||||
// 19. Clear all of an existing user's command privileges using 'nocommands'
|
||||
presetUser: func() *User {
|
||||
user := CreateUser("set_user_19")
|
||||
presetUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_19")
|
||||
user.Enabled = true
|
||||
user.IncludedCommands = []string{"acl|getuser", "acl|setuser", "acl|deluser"}
|
||||
user.ExcludedCommands = []string{"rewriteaof", "save"}
|
||||
@@ -928,8 +929,8 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
wantRes: "OK",
|
||||
wantErr: "",
|
||||
wantUser: func() *User {
|
||||
user := CreateUser("set_user_19")
|
||||
wantUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_19")
|
||||
user.Enabled = true
|
||||
user.IncludedCommands = []string{}
|
||||
user.ExcludedCommands = []string{"*"}
|
||||
@@ -941,8 +942,8 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
{
|
||||
// 20. Clear all of an existing user's allowed keys using 'resetkeys'
|
||||
presetUser: func() *User {
|
||||
user := CreateUser("set_user_20")
|
||||
presetUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_20")
|
||||
user.Enabled = true
|
||||
user.IncludedWriteKeys = []string{"key1", "key2", "key3", "key4", "key5", "key6"}
|
||||
user.IncludedReadKeys = []string{"key1", "key2", "key3", "key7", "key8", "key9"}
|
||||
@@ -958,8 +959,8 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
wantRes: "OK",
|
||||
wantErr: "",
|
||||
wantUser: func() *User {
|
||||
user := CreateUser("set_user_20")
|
||||
wantUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_20")
|
||||
user.Enabled = true
|
||||
user.NoKeys = true
|
||||
user.IncludedReadKeys = []string{}
|
||||
@@ -970,8 +971,8 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
{
|
||||
// 21. Allow user to access all channels using 'resetchannels'
|
||||
presetUser: func() *User {
|
||||
user := CreateUser("set_user_21")
|
||||
presetUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_21")
|
||||
user.IncludedPubSubChannels = []string{"channel1", "channel2"}
|
||||
user.ExcludedPubSubChannels = []string{"channel3", "channel4"}
|
||||
user.Normalise()
|
||||
@@ -985,8 +986,8 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
},
|
||||
wantRes: "OK",
|
||||
wantErr: "",
|
||||
wantUser: func() *User {
|
||||
user := CreateUser("set_user_21")
|
||||
wantUser: func() *internal_acl.User {
|
||||
user := internal_acl.CreateUser("set_user_21")
|
||||
user.IncludedPubSubChannels = []string{}
|
||||
user.ExcludedPubSubChannels = []string{"*"}
|
||||
user.Normalise()
|
||||
@@ -1019,7 +1020,7 @@ func Test_HandleSetUser(t *testing.T) {
|
||||
continue
|
||||
}
|
||||
expectedUser := test.wantUser
|
||||
currUserIdx := slices.IndexFunc(acl.Users, func(user *User) bool {
|
||||
currUserIdx := slices.IndexFunc(acl.Users, func(user *internal_acl.User) bool {
|
||||
return user.Username == expectedUser.Username
|
||||
})
|
||||
if currUserIdx == -1 {
|
||||
@@ -1037,7 +1038,7 @@ func Test_HandleGetUser(t *testing.T) {
|
||||
go func() {
|
||||
mockServer.Start(context.Background())
|
||||
}()
|
||||
acl, _ := mockServer.GetACL().(*ACL)
|
||||
acl, _ := mockServer.GetACL().(*internal_acl.ACL)
|
||||
|
||||
conn, err := net.Dial("tcp", fmt.Sprintf("%s:%d", bindAddr, port))
|
||||
if err != nil {
|
||||
@@ -1050,20 +1051,20 @@ func Test_HandleGetUser(t *testing.T) {
|
||||
r := resp.NewConn(conn)
|
||||
|
||||
tests := []struct {
|
||||
presetUser *User
|
||||
presetUser *internal_acl.User
|
||||
cmd []resp.Value
|
||||
wantRes []resp.Value
|
||||
wantErr string
|
||||
}{
|
||||
{ // 1. Get the user and all their details
|
||||
presetUser: &User{
|
||||
presetUser: &internal_acl.User{
|
||||
Username: "get_user_1",
|
||||
Enabled: true,
|
||||
NoPassword: false,
|
||||
NoKeys: false,
|
||||
Passwords: []Password{
|
||||
{PasswordType: PasswordPlainText, PasswordValue: "get_user_password_1"},
|
||||
{PasswordType: PasswordSHA256, PasswordValue: generateSHA256Password("get_user_password_2")},
|
||||
Passwords: []internal_acl.Password{
|
||||
{PasswordType: internal_acl.PasswordPlainText, PasswordValue: "get_user_password_1"},
|
||||
{PasswordType: internal_acl.PasswordSHA256, PasswordValue: generateSHA256Password("get_user_password_2")},
|
||||
},
|
||||
IncludedCategories: []string{utils.WriteCategory, utils.ReadCategory, utils.PubSubCategory},
|
||||
ExcludedCategories: []string{utils.AdminCategory, utils.ConnectionCategory, utils.DangerousCategory},
|
||||
@@ -1183,7 +1184,7 @@ func Test_HandleDelUser(t *testing.T) {
|
||||
go func() {
|
||||
mockServer.Start(context.Background())
|
||||
}()
|
||||
acl, _ := mockServer.GetACL().(*ACL)
|
||||
acl, _ := mockServer.GetACL().(*internal_acl.ACL)
|
||||
|
||||
conn, err := net.Dial("tcp", fmt.Sprintf("%s:%d", bindAddr, port))
|
||||
if err != nil {
|
||||
@@ -1196,14 +1197,14 @@ func Test_HandleDelUser(t *testing.T) {
|
||||
r := resp.NewConn(conn)
|
||||
|
||||
tests := []struct {
|
||||
presetUser *User
|
||||
presetUser *internal_acl.User
|
||||
cmd []resp.Value
|
||||
wantRes string
|
||||
wantErr string
|
||||
}{
|
||||
{
|
||||
// 1. Delete existing user while skipping default user and non-existent user
|
||||
presetUser: CreateUser("user_to_delete"),
|
||||
presetUser: internal_acl.CreateUser("user_to_delete"),
|
||||
cmd: []resp.Value{
|
||||
resp.StringValue("ACL"),
|
||||
resp.StringValue("DELUSER"),
|
||||
@@ -1241,13 +1242,13 @@ func Test_HandleDelUser(t *testing.T) {
|
||||
continue
|
||||
}
|
||||
// Check that default user still exists in the list of users
|
||||
if !slices.ContainsFunc(acl.Users, func(user *User) bool {
|
||||
if !slices.ContainsFunc(acl.Users, func(user *internal_acl.User) bool {
|
||||
return user.Username == "default"
|
||||
}) {
|
||||
t.Error("could not find user with username \"default\" in the ACL after deleting user")
|
||||
}
|
||||
// Check that the deleted user is no longer in the list
|
||||
if slices.ContainsFunc(acl.Users, func(user *User) bool {
|
||||
if slices.ContainsFunc(acl.Users, func(user *internal_acl.User) bool {
|
||||
return user.Username == "user_to_delete"
|
||||
}) {
|
||||
t.Error("deleted user found in the ACL")
|
||||
@@ -1324,7 +1325,7 @@ func Test_HandleList(t *testing.T) {
|
||||
go func() {
|
||||
mockServer.Start(context.Background())
|
||||
}()
|
||||
acl, _ := mockServer.GetACL().(*ACL)
|
||||
acl, _ := mockServer.GetACL().(*internal_acl.ACL)
|
||||
|
||||
conn, err := net.Dial("tcp", fmt.Sprintf("%s:%d", bindAddr, port))
|
||||
if err != nil {
|
||||
@@ -1337,21 +1338,21 @@ func Test_HandleList(t *testing.T) {
|
||||
r := resp.NewConn(conn)
|
||||
|
||||
tests := []struct {
|
||||
presetUsers []*User
|
||||
presetUsers []*internal_acl.User
|
||||
cmd []resp.Value
|
||||
wantRes []string
|
||||
wantErr string
|
||||
}{
|
||||
{ // 1. Get the user and all their details
|
||||
presetUsers: []*User{
|
||||
presetUsers: []*internal_acl.User{
|
||||
{
|
||||
Username: "list_user_1",
|
||||
Enabled: true,
|
||||
NoPassword: false,
|
||||
NoKeys: false,
|
||||
Passwords: []Password{
|
||||
{PasswordType: PasswordPlainText, PasswordValue: "list_user_password_1"},
|
||||
{PasswordType: PasswordSHA256, PasswordValue: generateSHA256Password("list_user_password_2")},
|
||||
Passwords: []internal_acl.Password{
|
||||
{PasswordType: internal_acl.PasswordPlainText, PasswordValue: "list_user_password_1"},
|
||||
{PasswordType: internal_acl.PasswordSHA256, PasswordValue: generateSHA256Password("list_user_password_2")},
|
||||
},
|
||||
IncludedCategories: []string{utils.WriteCategory, utils.ReadCategory, utils.PubSubCategory},
|
||||
ExcludedCategories: []string{utils.AdminCategory, utils.ConnectionCategory, utils.DangerousCategory},
|
||||
@@ -1367,7 +1368,7 @@ func Test_HandleList(t *testing.T) {
|
||||
Enabled: true,
|
||||
NoPassword: true,
|
||||
NoKeys: true,
|
||||
Passwords: []Password{},
|
||||
Passwords: []internal_acl.Password{},
|
||||
IncludedCategories: []string{utils.WriteCategory, utils.ReadCategory, utils.PubSubCategory},
|
||||
ExcludedCategories: []string{utils.AdminCategory, utils.ConnectionCategory, utils.DangerousCategory},
|
||||
IncludedCommands: []string{"acl|setuser", "acl|getuser", "acl|deluser"},
|
||||
@@ -1382,9 +1383,9 @@ func Test_HandleList(t *testing.T) {
|
||||
Enabled: true,
|
||||
NoPassword: false,
|
||||
NoKeys: false,
|
||||
Passwords: []Password{
|
||||
{PasswordType: PasswordPlainText, PasswordValue: "list_user_password_3"},
|
||||
{PasswordType: PasswordSHA256, PasswordValue: generateSHA256Password("list_user_password_4")},
|
||||
Passwords: []internal_acl.Password{
|
||||
{PasswordType: internal_acl.PasswordPlainText, PasswordValue: "list_user_password_3"},
|
||||
{PasswordType: internal_acl.PasswordSHA256, PasswordValue: generateSHA256Password("list_user_password_4")},
|
||||
},
|
||||
IncludedCategories: []string{utils.WriteCategory, utils.ReadCategory, utils.PubSubCategory},
|
||||
ExcludedCategories: []string{utils.AdminCategory, utils.ConnectionCategory, utils.DangerousCategory},
|
||||
|
@@ -18,7 +18,7 @@ import (
|
||||
"bytes"
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/echovault/echovault/internal"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"github.com/echovault/echovault/pkg/echovault"
|
||||
"github.com/echovault/echovault/pkg/utils"
|
||||
"github.com/tidwall/resp"
|
||||
@@ -27,7 +27,7 @@ import (
|
||||
|
||||
func Test_CommandsHandler(t *testing.T) {
|
||||
mockServer := echovault.NewEchoVault(
|
||||
echovault.WithConfig(internal.Config{
|
||||
echovault.WithConfig(config.Config{
|
||||
DataDir: "",
|
||||
EvictionPolicy: utils.NoEviction,
|
||||
}),
|
||||
|
@@ -18,7 +18,7 @@ import (
|
||||
"bytes"
|
||||
"context"
|
||||
"errors"
|
||||
"github.com/echovault/echovault/internal"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"github.com/echovault/echovault/pkg/echovault"
|
||||
"github.com/echovault/echovault/pkg/utils"
|
||||
"github.com/tidwall/resp"
|
||||
@@ -29,7 +29,7 @@ var mockServer *echovault.EchoVault
|
||||
|
||||
func init() {
|
||||
mockServer = echovault.NewEchoVault(
|
||||
echovault.WithConfig(internal.Config{
|
||||
echovault.WithConfig(config.Config{
|
||||
DataDir: "",
|
||||
EvictionPolicy: utils.NoEviction,
|
||||
}),
|
||||
|
@@ -19,7 +19,7 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/echovault/echovault/internal"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"github.com/echovault/echovault/pkg/echovault"
|
||||
"github.com/echovault/echovault/pkg/utils"
|
||||
"github.com/tidwall/resp"
|
||||
@@ -31,7 +31,7 @@ var mockServer *echovault.EchoVault
|
||||
|
||||
func init() {
|
||||
mockServer = echovault.NewEchoVault(
|
||||
echovault.WithConfig(internal.Config{
|
||||
echovault.WithConfig(config.Config{
|
||||
DataDir: "",
|
||||
EvictionPolicy: utils.NoEviction,
|
||||
}),
|
||||
|
@@ -19,7 +19,7 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/echovault/echovault/internal"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"github.com/echovault/echovault/pkg/echovault"
|
||||
"github.com/echovault/echovault/pkg/utils"
|
||||
"github.com/tidwall/resp"
|
||||
@@ -31,7 +31,7 @@ var mockServer *echovault.EchoVault
|
||||
|
||||
func init() {
|
||||
mockServer = echovault.NewEchoVault(
|
||||
echovault.WithConfig(internal.Config{
|
||||
echovault.WithConfig(config.Config{
|
||||
DataDir: "",
|
||||
EvictionPolicy: utils.NoEviction,
|
||||
}),
|
||||
|
@@ -19,7 +19,7 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/echovault/echovault/internal"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"github.com/echovault/echovault/pkg/echovault"
|
||||
"github.com/echovault/echovault/pkg/utils"
|
||||
"github.com/tidwall/resp"
|
||||
@@ -30,7 +30,7 @@ var mockServer *echovault.EchoVault
|
||||
|
||||
func init() {
|
||||
mockServer = echovault.NewEchoVault(
|
||||
echovault.WithConfig(internal.Config{
|
||||
echovault.WithConfig(config.Config{
|
||||
DataDir: "",
|
||||
EvictionPolicy: utils.NoEviction,
|
||||
}),
|
||||
|
@@ -18,13 +18,14 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
internal_pubsub "github.com/echovault/echovault/internal/pubsub"
|
||||
"github.com/echovault/echovault/pkg/utils"
|
||||
"net"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func handleSubscribe(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) {
|
||||
pubsub, ok := server.GetPubSub().(*PubSub)
|
||||
pubsub, ok := server.GetPubSub().(*internal_pubsub.PubSub)
|
||||
if !ok {
|
||||
return nil, errors.New("could not load pubsub module")
|
||||
}
|
||||
@@ -42,7 +43,7 @@ func handleSubscribe(ctx context.Context, cmd []string, server utils.EchoVault,
|
||||
}
|
||||
|
||||
func handleUnsubscribe(ctx context.Context, cmd []string, server utils.EchoVault, conn *net.Conn) ([]byte, error) {
|
||||
pubsub, ok := server.GetPubSub().(*PubSub)
|
||||
pubsub, ok := server.GetPubSub().(*internal_pubsub.PubSub)
|
||||
if !ok {
|
||||
return nil, errors.New("could not load pubsub module")
|
||||
}
|
||||
@@ -55,7 +56,7 @@ func handleUnsubscribe(ctx context.Context, cmd []string, server utils.EchoVault
|
||||
}
|
||||
|
||||
func handlePublish(ctx context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) {
|
||||
pubsub, ok := server.GetPubSub().(*PubSub)
|
||||
pubsub, ok := server.GetPubSub().(*internal_pubsub.PubSub)
|
||||
if !ok {
|
||||
return nil, errors.New("could not load pubsub module")
|
||||
}
|
||||
@@ -71,7 +72,7 @@ func handlePubSubChannels(_ context.Context, cmd []string, server utils.EchoVaul
|
||||
return nil, errors.New(utils.WrongArgsResponse)
|
||||
}
|
||||
|
||||
pubsub, ok := server.GetPubSub().(*PubSub)
|
||||
pubsub, ok := server.GetPubSub().(*internal_pubsub.PubSub)
|
||||
if !ok {
|
||||
return nil, errors.New("could not load pubsub module")
|
||||
}
|
||||
@@ -85,7 +86,7 @@ func handlePubSubChannels(_ context.Context, cmd []string, server utils.EchoVaul
|
||||
}
|
||||
|
||||
func handlePubSubNumPat(_ context.Context, _ []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) {
|
||||
pubsub, ok := server.GetPubSub().(*PubSub)
|
||||
pubsub, ok := server.GetPubSub().(*internal_pubsub.PubSub)
|
||||
if !ok {
|
||||
return nil, errors.New("could not load pubsub module")
|
||||
}
|
||||
@@ -94,7 +95,7 @@ func handlePubSubNumPat(_ context.Context, _ []string, server utils.EchoVault, _
|
||||
}
|
||||
|
||||
func handlePubSubNumSubs(_ context.Context, cmd []string, server utils.EchoVault, _ *net.Conn) ([]byte, error) {
|
||||
pubsub, ok := server.GetPubSub().(*PubSub)
|
||||
pubsub, ok := server.GetPubSub().(*internal_pubsub.PubSub)
|
||||
if !ok {
|
||||
return nil, errors.New("could not load pubsub module")
|
||||
}
|
||||
|
@@ -18,7 +18,8 @@ import (
|
||||
"bytes"
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/echovault/echovault/internal"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
internal_pubsub "github.com/echovault/echovault/internal/pubsub"
|
||||
"github.com/echovault/echovault/pkg/echovault"
|
||||
"github.com/echovault/echovault/pkg/utils"
|
||||
"github.com/tidwall/resp"
|
||||
@@ -28,25 +29,24 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
var pubsub *PubSub
|
||||
var pubsub *internal_pubsub.PubSub
|
||||
var mockServer *echovault.EchoVault
|
||||
|
||||
var bindAddr = "localhost"
|
||||
var port uint16 = 7490
|
||||
|
||||
func init() {
|
||||
pubsub = NewPubSub()
|
||||
mockServer = setUpServer(pubsub, bindAddr, port)
|
||||
mockServer = setUpServer(bindAddr, port)
|
||||
pubsub = mockServer.GetPubSub().(*internal_pubsub.PubSub)
|
||||
go func() {
|
||||
mockServer.Start(context.Background())
|
||||
}()
|
||||
}
|
||||
|
||||
func setUpServer(pubsub *PubSub, bindAddr string, port uint16) *echovault.EchoVault {
|
||||
func setUpServer(bindAddr string, port uint16) *echovault.EchoVault {
|
||||
return echovault.NewEchoVault(
|
||||
echovault.WithPubSub(pubsub),
|
||||
echovault.WithCommands(Commands()),
|
||||
echovault.WithConfig(internal.Config{
|
||||
echovault.WithConfig(config.Config{
|
||||
BindAddr: bindAddr,
|
||||
Port: port,
|
||||
DataDir: "",
|
||||
@@ -85,20 +85,20 @@ func Test_HandleSubscribe(t *testing.T) {
|
||||
}
|
||||
for _, channel := range channels {
|
||||
// Check if the channel exists in the pubsub module
|
||||
if !slices.ContainsFunc(pubsub.channels, func(c *Channel) bool {
|
||||
return c.name == channel
|
||||
if !slices.ContainsFunc(pubsub.GetAllChannels(), func(c *internal_pubsub.Channel) bool {
|
||||
return c.Name() == channel
|
||||
}) {
|
||||
t.Errorf("expected pubsub to contain channel \"%s\" but it was not found", channel)
|
||||
}
|
||||
for _, c := range pubsub.channels {
|
||||
if c.name == channel {
|
||||
for _, c := range pubsub.GetAllChannels() {
|
||||
if c.Name() == channel {
|
||||
// Check if channel has nil pattern
|
||||
if c.pattern != nil {
|
||||
t.Errorf("expected channel \"%s\" to have nil pattern, found pattern \"%s\"", channel, c.name)
|
||||
if c.Pattern() != nil {
|
||||
t.Errorf("expected channel \"%s\" to have nil pattern, found pattern \"%s\"", channel, c.Name())
|
||||
}
|
||||
// Check if the channel has all the connections from above
|
||||
for _, conn := range connections {
|
||||
if _, ok := c.subscribers[conn]; !ok {
|
||||
if _, ok := c.Subscribers()[conn]; !ok {
|
||||
t.Errorf("could not find all expected connection in the \"%s\"", channel)
|
||||
}
|
||||
}
|
||||
@@ -115,20 +115,20 @@ func Test_HandleSubscribe(t *testing.T) {
|
||||
}
|
||||
for _, pattern := range patterns {
|
||||
// Check if pattern channel exists in pubsub module
|
||||
if !slices.ContainsFunc(pubsub.channels, func(c *Channel) bool {
|
||||
return c.name == pattern
|
||||
if !slices.ContainsFunc(pubsub.GetAllChannels(), func(c *internal_pubsub.Channel) bool {
|
||||
return c.Name() == pattern
|
||||
}) {
|
||||
t.Errorf("expected pubsub to contain pattern channel \"%s\" but it was not found", pattern)
|
||||
}
|
||||
for _, c := range pubsub.channels {
|
||||
if c.name == pattern {
|
||||
for _, c := range pubsub.GetAllChannels() {
|
||||
if c.Name() == pattern {
|
||||
// Check if channel has non-nil pattern
|
||||
if c.pattern == nil {
|
||||
t.Errorf("expected channel \"%s\" to have pattern \"%s\", found nil pattern", pattern, c.name)
|
||||
if c.Pattern() == nil {
|
||||
t.Errorf("expected channel \"%s\" to have pattern \"%s\", found nil pattern", pattern, c.Name())
|
||||
}
|
||||
// Check if the channel has all the connections from above
|
||||
for _, conn := range connections {
|
||||
if _, ok := c.subscribers[conn]; !ok {
|
||||
if _, ok := c.Subscribers()[conn]; !ok {
|
||||
t.Errorf("could not find all expected connection in the \"%s\"", pattern)
|
||||
}
|
||||
}
|
||||
@@ -280,14 +280,14 @@ func Test_HandleUnsubscribe(t *testing.T) {
|
||||
verifyResponse(res, test.expectedResponses["pattern"])
|
||||
|
||||
for _, channel := range append(test.unSubChannels, test.unSubPatterns...) {
|
||||
for _, pubsubChannel := range pubsub.channels {
|
||||
if pubsubChannel.name == channel {
|
||||
for _, pubsubChannel := range pubsub.GetAllChannels() {
|
||||
if pubsubChannel.Name() == channel {
|
||||
// Assert that target connection is no longer in the unsub channels and patterns
|
||||
if _, ok := pubsubChannel.subscribers[test.targetConn]; ok {
|
||||
if _, ok := pubsubChannel.Subscribers()[test.targetConn]; ok {
|
||||
t.Errorf("found unexpected target connection after unsubscrining in channel \"%s\"", channel)
|
||||
}
|
||||
for _, conn := range test.otherConnections {
|
||||
if _, ok := pubsubChannel.subscribers[conn]; !ok {
|
||||
if _, ok := pubsubChannel.Subscribers()[conn]; !ok {
|
||||
t.Errorf("did not find expected other connection in channel \"%s\"", channel)
|
||||
}
|
||||
}
|
||||
@@ -297,9 +297,9 @@ func Test_HandleUnsubscribe(t *testing.T) {
|
||||
|
||||
// Assert that the target connection is still in the remain channels and patterns
|
||||
for _, channel := range append(test.remainChannels, test.remainPatterns...) {
|
||||
for _, pubsubChannel := range pubsub.channels {
|
||||
if pubsubChannel.name == channel {
|
||||
if _, ok := pubsubChannel.subscribers[test.targetConn]; !ok {
|
||||
for _, pubsubChannel := range pubsub.GetAllChannels() {
|
||||
if pubsubChannel.Name() == channel {
|
||||
if _, ok := pubsubChannel.Subscribers()[test.targetConn]; !ok {
|
||||
t.Errorf("could not find expected target connection in channel \"%s\"", channel)
|
||||
}
|
||||
}
|
||||
@@ -496,8 +496,7 @@ func Test_HandlePubSubChannels(t *testing.T) {
|
||||
go func() {
|
||||
// Create separate mock echovault for this test
|
||||
var port uint16 = 7590
|
||||
pubsub = NewPubSub()
|
||||
mockServer := setUpServer(pubsub, bindAddr, port)
|
||||
mockServer := setUpServer(bindAddr, port)
|
||||
|
||||
ctx := context.WithValue(context.Background(), "test_name", "PUBSUB CHANNELS")
|
||||
|
||||
@@ -632,8 +631,7 @@ func Test_HandleNumPat(t *testing.T) {
|
||||
go func() {
|
||||
// Create separate mock echovault for this test
|
||||
var port uint16 = 7591
|
||||
pubsub = NewPubSub()
|
||||
mockServer := setUpServer(pubsub, bindAddr, port)
|
||||
mockServer := setUpServer(bindAddr, port)
|
||||
|
||||
ctx := context.WithValue(context.Background(), "test_name", "PUBSUB NUMPAT")
|
||||
|
||||
@@ -727,8 +725,7 @@ func Test_HandleNumSub(t *testing.T) {
|
||||
go func() {
|
||||
// Create separate mock echovault for this test
|
||||
var port uint16 = 7591
|
||||
pubsub = NewPubSub()
|
||||
mockServer := setUpServer(pubsub, bindAddr, port)
|
||||
mockServer := setUpServer(bindAddr, port)
|
||||
|
||||
ctx := context.WithValue(context.Background(), "test_name", "PUBSUB NUMSUB")
|
||||
|
||||
|
@@ -19,7 +19,7 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/echovault/echovault/internal"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"github.com/echovault/echovault/pkg/echovault"
|
||||
"github.com/echovault/echovault/pkg/utils"
|
||||
"github.com/tidwall/resp"
|
||||
@@ -31,7 +31,7 @@ var mockServer *echovault.EchoVault
|
||||
|
||||
func init() {
|
||||
mockServer = echovault.NewEchoVault(
|
||||
echovault.WithConfig(internal.Config{
|
||||
echovault.WithConfig(config.Config{
|
||||
DataDir: "",
|
||||
EvictionPolicy: utils.NoEviction,
|
||||
}),
|
||||
|
@@ -19,7 +19,7 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/echovault/echovault/internal"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"github.com/echovault/echovault/pkg/echovault"
|
||||
"github.com/echovault/echovault/pkg/utils"
|
||||
"github.com/tidwall/resp"
|
||||
@@ -33,7 +33,7 @@ var mockServer *echovault.EchoVault
|
||||
|
||||
func init() {
|
||||
mockServer = echovault.NewEchoVault(
|
||||
echovault.WithConfig(internal.Config{
|
||||
echovault.WithConfig(config.Config{
|
||||
DataDir: "",
|
||||
EvictionPolicy: utils.NoEviction,
|
||||
}),
|
||||
|
@@ -20,6 +20,7 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/echovault/echovault/internal"
|
||||
"github.com/echovault/echovault/internal/config"
|
||||
"github.com/echovault/echovault/pkg/echovault"
|
||||
"github.com/echovault/echovault/pkg/utils"
|
||||
"github.com/tidwall/resp"
|
||||
@@ -31,7 +32,7 @@ var mockServer *echovault.EchoVault
|
||||
|
||||
func init() {
|
||||
mockServer = echovault.NewEchoVault(
|
||||
echovault.WithConfig(internal.Config{
|
||||
echovault.WithConfig(config.Config{
|
||||
DataDir: "",
|
||||
EvictionPolicy: utils.NoEviction,
|
||||
}),
|
||||
|
Reference in New Issue
Block a user