diff options
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/control-panel-digitalocean/Makefile | 25 | ||||
| -rw-r--r-- | examples/control-panel-digitalocean/main.go | 124 |
2 files changed, 149 insertions, 0 deletions
diff --git a/examples/control-panel-digitalocean/Makefile b/examples/control-panel-digitalocean/Makefile new file mode 100644 index 0000000..dc158f8 --- /dev/null +++ b/examples/control-panel-digitalocean/Makefile @@ -0,0 +1,25 @@ +# export GO111MODULE="off" +run: build + ./control-panel-digitalocean + +build-release: + go get -v -u -x . + go build + ./control-panel-digitalocean + +build: + go get -v -x . + go build + +update: + go get -v -u -x . + +log: + reset + tail -f /tmp/witgui.* /tmp/guilogfile + +gocui: build + ./control-panel-digitalocean -gui gocui + +quiet: + ./control-panel-digitalocean >/tmp/witgui.log.stderr 2>&1 diff --git a/examples/control-panel-digitalocean/main.go b/examples/control-panel-digitalocean/main.go new file mode 100644 index 0000000..b1228f7 --- /dev/null +++ b/examples/control-panel-digitalocean/main.go @@ -0,0 +1,124 @@ +package main + +import ( + "context" + "fmt" + "os" + + "golang.org/x/oauth2" + + "go.wit.com/log" + "go.wit.com/gui" + "github.com/digitalocean/godo" + "go.wit.com/control-panel-dns/digitalocean" +) + +var title string = "Digital Ocean Control Panel" + +/* +// createDroplet creates a new droplet in the specified region with the given name. +func createDroplet(token, name, region, size, image string) (*godo.Droplet, error) { + // Create an OAuth2 token. + tokenSource := &oauth2.Token{ + AccessToken: token, + } + + // Create an OAuth2 client. + oauthClient := oauth2.NewClient(context.Background(), tokenSource) + + // Create a DigitalOcean client with the OAuth2 client. + client := godo.NewClient(oauthClient) + + // Define the create request. + createRequest := &godo.DropletCreateRequest{ + Name: name, + Region: region, + Size: size, + Image: godo.DropletCreateImage{ + Slug: image, + }, + } + + // Create the droplet. + ctx := context.TODO() + newDroplet, _, err := client.Droplets.Create(ctx, createRequest) + if err != nil { + return nil, err + } + + return newDroplet, nil +} +*/ + +func main() { + // Your personal API token from DigitalOcean. + token := os.Getenv("DIGITALOCEAN_TOKEN") + if token == "" { + log.Fatal("Please set your DigitalOcean API token in the DIGITALOCEAN_TOKEN environment variable") + } + + // List droplets and their IP addresses. + err := digitalocean.ListDroplets(token) + if err != nil { + log.Fatalf("Error listing droplets: %s\n", err) + } + + // initialize a new GO GUI instance + myGui := gui.New().Default() + + // draw the cloudflare control panel window + win := digitalocean.MakeWindow(myGui) + win.SetText(title) + + // This is just a optional goroutine to watch that things are alive + gui.Watchdog() + gui.StandardExit() + + os.Exit(0) + + // Parameters for the droplet you wish to create. + name := "ipv6.wit.com" + region := "nyc1" // New York City region. + size := "s-1vcpu-1gb" // Size of the droplet. + image := "ubuntu-20-04-x64" // Image slug for Ubuntu 20.04 (LTS) x64. + + // Create a new droplet. + droplet, err := createDropletNew(token, name, region, size, image) + if err != nil { + log.Fatalf("Something went wrong: %s\n", err) + } + + fmt.Printf("Created droplet ID %d with name %s\n", droplet.ID, droplet.Name) +} + +// createDroplet creates a new droplet in the specified region with the given name. +func createDropletNew(token, name, region, size, image string) (*godo.Droplet, error) { + // Create an OAuth2 token. + tokenSource := oauth2.StaticTokenSource(&oauth2.Token{AccessToken: token}) + + // Create an OAuth2 client. + oauthClient := oauth2.NewClient(context.Background(), tokenSource) + + // Create a DigitalOcean client with the OAuth2 client. + client := godo.NewClient(oauthClient) + + // Define the create request. + createRequest := &godo.DropletCreateRequest{ + Name: name, + Region: region, + Size: size, + Image: godo.DropletCreateImage{ + Slug: image, + }, + IPv6: true, // Enable IPv6 + } + + // Create the droplet. + ctx := context.TODO() + newDroplet, _, err := client.Droplets.Create(ctx, createRequest) + if err != nil { + return nil, err + } + + return newDroplet, nil +} |
