Skip to content

Commit 390abd0

Browse files
Initial commit
1 parent 48ffb23 commit 390abd0

10 files changed

+693
-0
lines changed

README.md

+14
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,16 @@
11
# secureWorks
22
Golang interface to the SecureWorks API
3+
4+
5+
6+
# Configuration file
7+
8+
<?xml version="1.0" encoding="UTF-8" ?>
9+
<Config>
10+
<UserName>Username</UserName>
11+
<Password>Password</Password>
12+
<ClientId>ClientId</ClientId>
13+
<LocationId>LocationAi</LocationId>
14+
<ApiUri>https://ws.secureworks.com/api/TicketingService</ApiUri>
15+
</Config>
16+

src/getAttachment.go

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package main
2+
3+
import "fmt"
4+
import "os"
5+
import "secureWorks"
6+
import "flag"
7+
import "encoding/base64"
8+
import "io/ioutil"
9+
10+
func main() {
11+
fileName := flag.String("c", "", "Config File <required>")
12+
Help := flag.Bool("h", false, "Help")
13+
AtId := flag.String("i", "", "Attachment Id <required>")
14+
Out := flag.String("o", "", "Filename <optional> (Output attachment to file)")
15+
TicketNumber := flag.String("t", "", "Ticket Number <required>")
16+
flag.Parse()
17+
if len(*fileName) == 0 || len(*TicketNumber) == 0 || len(*AtId) == 0 || *Help == true {
18+
fmt.Fprintf(os.Stderr, "Go Interface for SecureWorks Soap API by Jess Mahan\n")
19+
flag.PrintDefaults()
20+
fmt.Fprintf(os.Stderr, "Must specify Config file with -c\n")
21+
os.Exit(0)
22+
}
23+
24+
l, err := secureWorks.ReadConfig(*fileName)
25+
if err != nil {
26+
fmt.Fprintf(os.Stderr, "%v\n", err)
27+
}
28+
29+
a, err := secureWorks.GetAttachment(l, *TicketNumber, *AtId)
30+
31+
if len(*Out) == 0 {
32+
fmt.Printf("Content: %s\nFilename: %s\nmd5Sum: %s\n",
33+
a.Content,
34+
a.Filename,
35+
a.Md5Sum)
36+
} else {
37+
d, err := base64.StdEncoding.DecodeString(a.Content)
38+
if err != nil {
39+
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
40+
} else {
41+
ioutil.WriteFile(*Out, d, 0722)
42+
}
43+
}
44+
}

src/getContactList.go

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package main
2+
3+
import "fmt"
4+
import "os"
5+
import "secureWorks"
6+
import "flag"
7+
8+
func main() {
9+
fileName := flag.String("c", "", "Config File")
10+
flag.Parse()
11+
if len(*fileName) == 0 {
12+
fmt.Fprintf(os.Stderr, "Go Interface for SecureWorks Soap API by Jess Mahan\n")
13+
flag.PrintDefaults()
14+
fmt.Fprintf(os.Stderr, "Must specify Config file with -c\n")
15+
os.Exit(0)
16+
}
17+
18+
l, err := secureWorks.ReadConfig(*fileName)
19+
if err != nil {
20+
fmt.Fprintf(os.Stderr, "%v\n", err)
21+
}
22+
23+
x, err := secureWorks.GetContactList(l)
24+
if err != nil {
25+
fmt.Printf("Error: %q\n", err)
26+
}
27+
fmt.Printf("Id,Name\n")
28+
for _, v := range x.Contacts {
29+
fmt.Printf("%d,%s\n", v.Id, v.Name)
30+
}
31+
32+
}

src/getCustomerList.go

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package main
2+
3+
import "fmt"
4+
import "os"
5+
import "secureWorks"
6+
import "flag"
7+
8+
func main() {
9+
fileName := flag.String("c", "", "Config File")
10+
flag.Parse()
11+
if len(*fileName) == 0 {
12+
fmt.Fprintf(os.Stderr, "Go Interface for SecureWorks Soap API by Jess Mahan\n")
13+
flag.PrintDefaults()
14+
fmt.Fprintf(os.Stderr, "Must specify Config file with -c\n")
15+
os.Exit(0)
16+
}
17+
18+
l, err := secureWorks.ReadConfig(*fileName)
19+
if err != nil {
20+
fmt.Fprintf(os.Stderr, "%v\n", err)
21+
}
22+
23+
x, err := secureWorks.GetCustomerList(l)
24+
if err != nil {
25+
fmt.Printf("Error: %q\n", err)
26+
}
27+
fmt.Printf("Id,Name\n")
28+
for _, v := range x.ClientInfo {
29+
fmt.Printf("%d,%s\n", v.Id, v.Name)
30+
}
31+
32+
}

src/getDeviceList.go

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package main
2+
3+
import "fmt"
4+
import "os"
5+
import "secureWorks"
6+
import "flag"
7+
8+
func main() {
9+
fileName := flag.String("c", "", "Config File")
10+
flag.Parse()
11+
if len(*fileName) == 0 {
12+
fmt.Fprintf(os.Stderr, "Go Interface for SecureWorks Soap API by Jess Mahan\n")
13+
flag.PrintDefaults()
14+
fmt.Fprintf(os.Stderr, "Must specify Config file with -c\n")
15+
os.Exit(0)
16+
}
17+
18+
l, err := secureWorks.ReadConfig(*fileName)
19+
if err != nil {
20+
fmt.Fprintf(os.Stderr, "%v\n", err)
21+
}
22+
23+
x, err := secureWorks.GetDeviceList(l)
24+
if err != nil {
25+
fmt.Printf("Error: %q\n", err)
26+
}
27+
fmt.Printf("Id,Device\n")
28+
for _, v := range x.Devices {
29+
fmt.Printf("%d,%s\n", v.DeviceId, v.DeviceAlias)
30+
}
31+
32+
}

src/getQueueCount.go

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package main
2+
3+
import "fmt"
4+
import "os"
5+
import "secureWorks"
6+
import "flag"
7+
8+
func main() {
9+
fileName := flag.String("c", "", "Config File")
10+
TicketType := flag.String("t", "", "Ticket Type")
11+
Help := flag.Bool("h", false, "Help")
12+
flag.Parse()
13+
if len(*fileName) == 0 || *Help == true {
14+
fmt.Fprintf(os.Stderr, "Go Interface for SecureWorks Soap API by Jess Mahan\n")
15+
flag.PrintDefaults()
16+
fmt.Fprintf(os.Stderr, "Must specify Config file with -c\n")
17+
os.Exit(0)
18+
}
19+
20+
if len(*TicketType) == 0 {
21+
*TicketType = "INCIDENT"
22+
}
23+
24+
l, err := secureWorks.ReadConfig(*fileName)
25+
if err != nil {
26+
fmt.Fprintf(os.Stderr, "%v\n", err)
27+
}
28+
29+
c, err := secureWorks.GetQueueCount(l, *TicketType)
30+
if err != nil {
31+
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
32+
}
33+
34+
fmt.Fprintf(os.Stdout, "%d\n", c.Count)
35+
}

src/getQueueTicketIds.go

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package main
2+
3+
import "fmt"
4+
import "os"
5+
import "secureWorks"
6+
import "flag"
7+
8+
func main() {
9+
fileName := flag.String("c", "", "Config File")
10+
TicketType := flag.String("t", "", "Ticket Type")
11+
Limit := flag.Int("l", 25, "Ticket Limit (Max is 500) Default is 25")
12+
Help := flag.Bool("h", false, "Help")
13+
flag.Parse()
14+
if len(*fileName) == 0 || *Help == true {
15+
fmt.Fprintf(os.Stderr, "Go Interface for SecureWorks Soap API by Jess Mahan\n")
16+
flag.PrintDefaults()
17+
fmt.Fprintf(os.Stderr, "Must specify Config file with -c\n")
18+
os.Exit(0)
19+
}
20+
21+
if len(*TicketType) == 0 {
22+
*TicketType = "INCIDENT"
23+
}
24+
25+
l, err := secureWorks.ReadConfig(*fileName)
26+
if err != nil {
27+
fmt.Fprintf(os.Stderr, "%v\n", err)
28+
}
29+
30+
y, _ := secureWorks.GetQueueTicketIds(l, *TicketType, *Limit)
31+
for _, v := range y.TicketIds {
32+
fmt.Printf("%s\n", v)
33+
}
34+
}

src/getTicketDetail.go

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package main
2+
3+
import "fmt"
4+
import "os"
5+
import "secureWorks"
6+
import "flag"
7+
8+
func main() {
9+
fileName := flag.String("c", "", "Config File <required>")
10+
TicketNumber := flag.String("t", "", "Ticket Number <required>")
11+
Csv := flag.Bool("C", false, "CSV Output")
12+
Long := flag.Bool("L", false, "Long Output")
13+
Short := flag.Bool("S", false, "Short Output (don't include work logs)")
14+
Work := flag.Bool("W", false, "Show Work Logs Only")
15+
Help := flag.Bool("h", false, "Help")
16+
flag.Parse()
17+
if len(*fileName) == 0 || *Help == true || len(*TicketNumber) == 0 {
18+
fmt.Fprintf(os.Stderr, "Go Interface for SecureWorks Soap API by Jess Mahan\n")
19+
flag.PrintDefaults()
20+
os.Exit(0)
21+
22+
}
23+
if *Csv == false && *Work == false && *Short == false && *Long == false {
24+
fmt.Fprintf(os.Stderr, "WARN: No Output Option Selected, using default: Long\n")
25+
*Long = true
26+
}
27+
28+
l, err := secureWorks.ReadConfig(*fileName)
29+
if err != nil {
30+
fmt.Fprintf(os.Stderr, "%v\n", err)
31+
}
32+
33+
d, _ := secureWorks.GetTicketDetail(l, *TicketNumber)
34+
if *Csv == true {
35+
d.Detail.PrintCsv()
36+
}
37+
if *Work == true {
38+
d.Detail.PrintWorkLogs()
39+
}
40+
if *Short == true {
41+
d.Detail.PrintDetails()
42+
}
43+
if *Long == true {
44+
d.Detail.PrintDetails()
45+
d.Detail.PrintWorkLogs()
46+
}
47+
}

src/getUpdates.go

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package main
2+
3+
import "fmt"
4+
import "os"
5+
import "secureWorks"
6+
import "flag"
7+
8+
func main() {
9+
fileName := flag.String("c", "", "Config File <required>")
10+
TicketNumber := flag.String("t", "", "Ticket Number <required>")
11+
Csv := flag.Bool("C", false, "CSV Output")
12+
Long := flag.Bool("L", false, "Long Output")
13+
Short := flag.Bool("S", false, "Short Output (don't include work logs)")
14+
Work := flag.Bool("W", false, "Show Work Logs Only")
15+
Help := flag.Bool("h", false, "Help")
16+
flag.Parse()
17+
if len(*fileName) == 0 || *Help == true || len(*TicketNumber) == 0 {
18+
fmt.Fprintf(os.Stderr, "Go Interface for SecureWorks Soap API by Jess Mahan\n")
19+
flag.PrintDefaults()
20+
os.Exit(0)
21+
22+
}
23+
if *Csv == false && *Work == false && *Short == false && *Long == false {
24+
fmt.Fprintf(os.Stderr, "WARN: No Output Option Selected, using default: Long\n")
25+
*Long = true
26+
}
27+
28+
l, err := secureWorks.ReadConfig(*fileName)
29+
if err != nil {
30+
fmt.Fprintf(os.Stderr, "%v\n", err)
31+
}
32+
33+
d, _ := secureWorks.GetUpdates(l, "INCIDENT", "ALL", 2)
34+
for _, v := range d.Tickets {
35+
if *Csv == true {
36+
v.PrintCsv()
37+
}
38+
if *Work == true {
39+
v.PrintWorkLogs()
40+
}
41+
if *Short == true {
42+
v.PrintDetails()
43+
}
44+
if *Long == true {
45+
v.PrintDetails()
46+
v.PrintWorkLogs()
47+
}
48+
}
49+
}

0 commit comments

Comments
 (0)