package main
import(
"context"
"os"
latitudeshgosdk "github.com/latitudesh/latitudesh-go-sdk"
"github.com/latitudesh/latitudesh-go-sdk/models/operations"
"log"
)
func main() {
ctx := context.Background()
s := latitudeshgosdk.New(
latitudeshgosdk.WithSecurity(os.Getenv("LATITUDESH_BEARER")),
)
res, err := s.Firewalls.Create(ctx, operations.CreateFirewallFirewallsRequestBody{
Data: operations.CreateFirewallData{
Type: operations.CreateFirewallTypeFirewalls,
Attributes: &operations.CreateFirewallAttributes{
Name: "my-firewall",
Project: "heavy-duty-copper-watch",
Rules: []operations.CreateFirewallRules{
operations.CreateFirewallRules{
From: latitudeshgosdk.Pointer("192.168.42.73"),
To: latitudeshgosdk.Pointer("192.168.43.51"),
Protocol: operations.CreateFirewallProtocolTCP.ToPointer(),
Port: latitudeshgosdk.Pointer("80"),
Description: latitudeshgosdk.Pointer("Allow HTTP traffic"),
},
operations.CreateFirewallRules{
From: latitudeshgosdk.Pointer("192.168.1.16"),
To: latitudeshgosdk.Pointer("192.168.1.30"),
Protocol: operations.CreateFirewallProtocolTCP.ToPointer(),
Port: latitudeshgosdk.Pointer("80"),
},
operations.CreateFirewallRules{
From: latitudeshgosdk.Pointer("192.168.1.10"),
To: latitudeshgosdk.Pointer("192.168.1.20"),
Protocol: operations.CreateFirewallProtocolUDP.ToPointer(),
Port: latitudeshgosdk.Pointer("3000-4000"),
Description: latitudeshgosdk.Pointer("Application ports"),
},
},
},
},
})
if err != nil {
log.Fatal(err)
}
if res.Firewall != nil {
// handle response
}
}{
"data": {
"id": "fw_w5AEmq7XDBkWX",
"type": "firewalls",
"attributes": {
"name": "my-firewall",
"project": {
"id": "proj_RLYV8DZ2D5QoE",
"name": "Heavy Duty Copper Watch",
"slug": "heavy-duty-copper-watch"
},
"rules": [
{
"from": "ANY",
"to": "ANY",
"port": "22",
"protocol": "TCP",
"default": true
},
{
"from": "192.168.42.73",
"to": "192.168.43.51",
"port": "80",
"protocol": "TCP",
"default": false
},
{
"from": "192.168.1.16",
"to": "192.168.1.30",
"port": "80",
"protocol": "TCP",
"default": false
},
{
"from": "192.168.1.10",
"to": "192.168.1.20",
"port": "3000-4000",
"protocol": "UDP",
"default": false
}
]
}
}
}Create a firewall
package main
import(
"context"
"os"
latitudeshgosdk "github.com/latitudesh/latitudesh-go-sdk"
"github.com/latitudesh/latitudesh-go-sdk/models/operations"
"log"
)
func main() {
ctx := context.Background()
s := latitudeshgosdk.New(
latitudeshgosdk.WithSecurity(os.Getenv("LATITUDESH_BEARER")),
)
res, err := s.Firewalls.Create(ctx, operations.CreateFirewallFirewallsRequestBody{
Data: operations.CreateFirewallData{
Type: operations.CreateFirewallTypeFirewalls,
Attributes: &operations.CreateFirewallAttributes{
Name: "my-firewall",
Project: "heavy-duty-copper-watch",
Rules: []operations.CreateFirewallRules{
operations.CreateFirewallRules{
From: latitudeshgosdk.Pointer("192.168.42.73"),
To: latitudeshgosdk.Pointer("192.168.43.51"),
Protocol: operations.CreateFirewallProtocolTCP.ToPointer(),
Port: latitudeshgosdk.Pointer("80"),
Description: latitudeshgosdk.Pointer("Allow HTTP traffic"),
},
operations.CreateFirewallRules{
From: latitudeshgosdk.Pointer("192.168.1.16"),
To: latitudeshgosdk.Pointer("192.168.1.30"),
Protocol: operations.CreateFirewallProtocolTCP.ToPointer(),
Port: latitudeshgosdk.Pointer("80"),
},
operations.CreateFirewallRules{
From: latitudeshgosdk.Pointer("192.168.1.10"),
To: latitudeshgosdk.Pointer("192.168.1.20"),
Protocol: operations.CreateFirewallProtocolUDP.ToPointer(),
Port: latitudeshgosdk.Pointer("3000-4000"),
Description: latitudeshgosdk.Pointer("Application ports"),
},
},
},
},
})
if err != nil {
log.Fatal(err)
}
if res.Firewall != nil {
// handle response
}
}{
"data": {
"id": "fw_w5AEmq7XDBkWX",
"type": "firewalls",
"attributes": {
"name": "my-firewall",
"project": {
"id": "proj_RLYV8DZ2D5QoE",
"name": "Heavy Duty Copper Watch",
"slug": "heavy-duty-copper-watch"
},
"rules": [
{
"from": "ANY",
"to": "ANY",
"port": "22",
"protocol": "TCP",
"default": true
},
{
"from": "192.168.42.73",
"to": "192.168.43.51",
"port": "80",
"protocol": "TCP",
"default": false
},
{
"from": "192.168.1.16",
"to": "192.168.1.30",
"port": "80",
"protocol": "TCP",
"default": false
},
{
"from": "192.168.1.10",
"to": "192.168.1.20",
"port": "3000-4000",
"protocol": "UDP",
"default": false
}
]
}
}
}Was this page helpful?