mirror of
https://github.com/micromdm/micromdm/
synced 2026-08-12 13:25:38 +08:00
add get command to fetch resources
This commit is contained in:
committed by
Victor Vrantchan
parent
5754f9e77b
commit
7afb826135
109
get.go
Normal file
109
get.go
Normal file
@@ -0,0 +1,109 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/micromdm/dep"
|
||||
)
|
||||
|
||||
func getResource(args []string) error {
|
||||
if len(args) < 1 {
|
||||
return errors.New("get requires at least one resource name")
|
||||
}
|
||||
|
||||
var run func([]string) error
|
||||
switch strings.ToLower(args[0]) {
|
||||
case "dep":
|
||||
run = getDep
|
||||
default:
|
||||
usage()
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
if err := run(args[1:]); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "%v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func getDep(args []string) error {
|
||||
if len(args) < 1 {
|
||||
return errors.New("get dep requires at least one resource name")
|
||||
}
|
||||
sm := &config{}
|
||||
sm.setupBolt()
|
||||
client, err := sm.depClient()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
var run func(dep.Client, []string) error
|
||||
switch strings.ToLower(args[0]) {
|
||||
case "account-info":
|
||||
acc, err := client.Account()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
enc := json.NewEncoder(os.Stdout)
|
||||
enc.SetIndent("", " ")
|
||||
err = enc.Encode(acc)
|
||||
return err
|
||||
case "device":
|
||||
run = getDepDevice
|
||||
case "profile":
|
||||
run = getDepProfile
|
||||
}
|
||||
|
||||
if err := run(client, args[1:]); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "%v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func getDepProfile(client dep.Client, args []string) error {
|
||||
flagset := flag.NewFlagSet("profile", flag.ExitOnError)
|
||||
var (
|
||||
flUUID = flagset.String("uuid", "", "profile uuid")
|
||||
)
|
||||
if err := flagset.Parse(args); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
profile, err := client.FetchProfile(*flUUID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
enc := json.NewEncoder(os.Stdout)
|
||||
enc.SetIndent("", " ")
|
||||
err = enc.Encode(profile)
|
||||
return err
|
||||
}
|
||||
|
||||
func getDepDevice(client dep.Client, args []string) error {
|
||||
flagset := flag.NewFlagSet("device", flag.ExitOnError)
|
||||
var (
|
||||
flSerial = flagset.String("serial", "", "device serial number")
|
||||
)
|
||||
if err := flagset.Parse(args); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
resp, err := client.DeviceDetails([]string{*flSerial})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if dev, ok := resp.Devices[*flSerial]; ok && dev.SerialNumber != "" {
|
||||
enc := json.NewEncoder(os.Stdout)
|
||||
enc.SetIndent("", " ")
|
||||
err = enc.Encode(dev)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
3
main.go
3
main.go
@@ -25,6 +25,8 @@ func main() {
|
||||
run = serve
|
||||
case "deptoken":
|
||||
run = depToken
|
||||
case "get":
|
||||
run = getResource
|
||||
default:
|
||||
usage()
|
||||
os.Exit(1)
|
||||
@@ -41,6 +43,7 @@ func usage() error {
|
||||
|
||||
Available Commands:
|
||||
serve
|
||||
get
|
||||
deptoken
|
||||
version
|
||||
|
||||
|
||||
21
serve.go
21
serve.go
@@ -432,11 +432,10 @@ func topicFromCert(cert *x509.Certificate) (string, error) {
|
||||
// the CA.
|
||||
const scepCACertName = "/var/db/micromdm/SCEPCACert.pem"
|
||||
|
||||
func (c *config) setupDEPSync() {
|
||||
func (c *config) depClient() (dep.Client, error) {
|
||||
if c.err != nil {
|
||||
return
|
||||
return nil, c.err
|
||||
}
|
||||
|
||||
// depsim config
|
||||
depsim := true
|
||||
conf := &dep.Config{
|
||||
@@ -472,8 +471,7 @@ func (c *config) setupDEPSync() {
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
c.err = err
|
||||
return
|
||||
return nil, err
|
||||
}
|
||||
|
||||
depServerURL := "https://mdmenrollment.apple.com"
|
||||
@@ -481,6 +479,19 @@ func (c *config) setupDEPSync() {
|
||||
depServerURL = "http://dep.micromdm.io:9000"
|
||||
}
|
||||
client, err := dep.NewClient(conf, dep.ServerURL(depServerURL))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return client, nil
|
||||
}
|
||||
|
||||
func (c *config) setupDEPSync() {
|
||||
if c.err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
client, err := c.depClient()
|
||||
if err != nil {
|
||||
c.err = err
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user