initial commit
This commit is contained in:
commit
0a478a5d65
|
|
@ -0,0 +1,98 @@
|
|||
package ftgapi
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"crypto/tls"
|
||||
"encoding/json"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"net/http"
|
||||
"time"
|
||||
)
|
||||
|
||||
func (f *FortigateAPI) query(method string, endpoint string, postData []byte) []byte {
|
||||
|
||||
http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
|
||||
|
||||
spaceClient := http.Client{
|
||||
Timeout: time.Second * 2, // Timeout after 2 seconds
|
||||
}
|
||||
|
||||
req, err := http.NewRequest(method, f.URL+"/api/v2/"+endpoint+"/?access_token="+f.APIKey, bytes.NewBuffer(postData))
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
// req.Header.Set("Authorization", "Basic "+bauth)
|
||||
|
||||
res, getErr := spaceClient.Do(req)
|
||||
if getErr != nil {
|
||||
log.Fatal(getErr)
|
||||
}
|
||||
|
||||
if res.Body != nil {
|
||||
defer res.Body.Close()
|
||||
}
|
||||
|
||||
body, readErr := ioutil.ReadAll(res.Body)
|
||||
if readErr != nil {
|
||||
log.Fatal(readErr)
|
||||
}
|
||||
|
||||
return body
|
||||
}
|
||||
|
||||
func (f *FortigateAPI) get(endpoint string) interface{} {
|
||||
|
||||
var apirequest FTGAPIRequest
|
||||
|
||||
response := f.query("GET", endpoint, nil)
|
||||
|
||||
err := json.Unmarshal([]byte(response), &apirequest)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
resultstr, _ := json.Marshal(apirequest.Results)
|
||||
|
||||
//log.Println(string(response))
|
||||
|
||||
switch endpoint {
|
||||
case "monitor/web-ui/state":
|
||||
generic := FTGMonitorWebUIState{}
|
||||
json.Unmarshal(resultstr, &generic)
|
||||
return generic
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (f *FortigateAPI) GetMonitorWebUIState() FTGMonitorWebUIState {
|
||||
return f.get("monitor/web-ui/state").(FTGMonitorWebUIState)
|
||||
}
|
||||
|
||||
type FTGMonitorWebUIState struct {
|
||||
Model_name string
|
||||
Model_number string
|
||||
Hostname string
|
||||
Model string
|
||||
Model_subtype string
|
||||
Model_level string
|
||||
}
|
||||
|
||||
type FTGAPIRequest struct {
|
||||
Path string
|
||||
Name string
|
||||
Action string
|
||||
Serial string
|
||||
Version string
|
||||
Build int
|
||||
Status string
|
||||
Http_status int
|
||||
Results interface{}
|
||||
}
|
||||
|
||||
type FortigateAPI struct {
|
||||
URL string
|
||||
APIKey string
|
||||
}
|
||||
Loading…
Reference in New Issue