Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

adds --search and --list to uac sub-command #7

Merged
merged 4 commits into from
Sep 25, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 50 additions & 10 deletions cmd/uac.go
Original file line number Diff line number Diff line change
@@ -1,31 +1,71 @@
package cmd

import (
"fmt"
"strconv"
"os"

"github.com/spf13/cobra"
ldsview "github.com/kgoins/ldsview/pkg"
"github.com/spf13/cobra"
)

// uacCmd represents the uac command
var uacCmd = &cobra.Command{
Use: "uac",
Use: "uac <int>",
Short: "Parses a useraccountcontrol attribute value as an int64 into its flag components",
Long: `Example: ldsview uac 512`,
Args: cobra.ExactArgs(1),
Run: func(cmd *cobra.Command, args []string) {
uacInt, parseErr := strconv.ParseInt(args[0], 10, 64)
if parseErr != nil {
fmt.Println("Unable to parse input value into a 64-bit int")
cmd.SetOut(os.Stdout)

shouldList, _ := cmd.Flags().GetBool("list")
if shouldList {
ldsview.UACPrint(os.Stdout)
return
}

shouldSearch, _ := cmd.Flags().GetInt("search")
if shouldSearch != 0 {
file, _ := cmd.Flags().GetString("file")
ldifFile := ldsview.NewLdifParser(file)
entities, err := ldifFile.BuildEntities()
if err != nil {
cmd.PrintErr("Error while parsing entities: ", err)
return
}

matches := ldsview.UACSearch(&entities, shouldSearch)
for _, match := range matches {
PrintEntity(match)
}
return
}

uacFlags := ldsview.GetFlagsFromUAC(uacInt)
fmt.Println(uacFlags.String())
if len(args) > 0 {
uacFlags, err := ldsview.UACParse(args[0])
if err != nil {
cmd.PrintErr(err)
cmd.Help()
}

for _, flag := range uacFlags {
cmd.Println(flag)
}
return
}
cmd.Help()
},
}

func init() {
rootCmd.AddCommand(uacCmd)

uacCmd.PersistentFlags().Bool(
"list",
false,
"Lists the available UAC properties by which to search",
)

uacCmd.PersistentFlags().Int(
"search",
0,
"UAC property by which to search",
)
}
62 changes: 59 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,65 @@ module github.com/kgoins/ldsview
go 1.13

require (
9fans.net/go v0.0.2 // indirect
github.com/Djarvur/go-err113 v0.1.0 // indirect
github.com/alecthomas/gometalinter v3.0.0+incompatible // indirect
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d // indirect
github.com/audibleblink/msldapuac v0.2.0
github.com/davidrjenni/reftools v0.0.0-20191222082827-65925cf01315 // indirect
github.com/fatih/gomodifytags v1.6.0 // indirect
github.com/fatih/motion v1.1.0 // indirect
github.com/fatih/structtag v1.2.0 // indirect
github.com/go-delve/delve v1.5.0 // indirect
github.com/golangci/golangci-lint v1.31.0 // indirect
github.com/golangci/misspell v0.3.5 // indirect
github.com/golangci/revgrep v0.0.0-20180812185044-276a5c0a1039 // indirect
github.com/google/go-dap v0.3.0 // indirect
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
github.com/gostaticanalysis/analysisutil v0.2.1 // indirect
github.com/icza/backscanner v0.0.0-20200205093934-2120fccb01f7
github.com/spf13/cobra v0.0.6
github.com/spf13/viper v1.6.2
go.uber.org/zap v1.10.0
github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af // indirect
github.com/josharian/impl v1.0.0 // indirect
github.com/jstemmer/gotags v1.4.1 // indirect
github.com/keegancsmith/rpc v1.3.0 // indirect
github.com/kisielk/errcheck v1.4.0 // indirect
github.com/klauspost/asmfmt v1.2.1 // indirect
github.com/koron/iferr v0.0.0-20180615142939-bb332a3b1d91 // indirect
github.com/magiconair/properties v1.8.4 // indirect
github.com/matoous/godox v0.0.0-20200801072554-4fb83dc2941e // indirect
github.com/mattn/go-colorable v0.1.7 // indirect
github.com/mattn/go-runewidth v0.0.9 // indirect
github.com/mdempsky/gocode v0.0.0-20200405233807-4acdcbdea79d // indirect
github.com/mitchellh/go-homedir v1.1.0
github.com/mitchellh/mapstructure v1.3.3 // indirect
github.com/nicksnyder/go-i18n v1.10.1 // indirect
github.com/pelletier/go-toml v1.8.1 // indirect
github.com/peterh/liner v1.2.0 // indirect
github.com/quasilyte/regex/syntax v0.0.0-20200805063351-8f842688393c // indirect
github.com/rogpeppe/godef v1.1.2 // indirect
github.com/spf13/afero v1.4.0 // indirect
github.com/spf13/cast v1.3.1 // indirect
github.com/spf13/cobra v1.0.0
github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/spf13/viper v1.7.1
github.com/stamblerre/gocode v1.0.0 // indirect
github.com/stretchr/objx v0.3.0 // indirect
github.com/stretchr/testify v1.6.1
github.com/tdakkota/asciicheck v0.0.0-20200416200610-e657995f937b // indirect
github.com/tetafro/godot v0.4.9 // indirect
github.com/timakin/bodyclose v0.0.0-20200424151742-cb6215831a94 // indirect
github.com/zmb3/gogetdoc v0.0.0-20190228002656-b37376c5da6a // indirect
go.starlark.net v0.0.0-20200901195727-6e684ef5eeee // indirect
go.uber.org/zap v1.10.0
golang.org/x/arch v0.0.0-20200826200359-b19915210f00 // indirect
golang.org/x/lint v0.0.0-20200302205851-738671d3881b // indirect
golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d // indirect
golang.org/x/tools v0.0.0-20200924182824-0f1c53950d78 // indirect
gopkg.in/alecthomas/kingpin.v3-unstable v3.0.0-20191105091915-95d230a53780 // indirect
gopkg.in/ini.v1 v1.61.0 // indirect
gopkg.in/yaml.v2 v2.3.0 // indirect
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 // indirect
mvdan.cc/gofumpt v0.0.0-20200802201014-ab5a8192947d // indirect
mvdan.cc/unparam v0.0.0-20200501210554-b37ab49443f7 // indirect
)
Loading