Skip to content

Commit

Permalink
outline API features
Browse files Browse the repository at this point in the history
  • Loading branch information
ghdwlsgur committed Jun 18, 2023
1 parent a3eadd3 commit 7c7337d
Show file tree
Hide file tree
Showing 4 changed files with 220 additions and 154 deletions.
153 changes: 0 additions & 153 deletions internal/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package internal

import (
"context"
"crypto/tls"
"encoding/json"
"fmt"
"os"
Expand All @@ -13,7 +12,6 @@ import (
"github.com/aws/aws-sdk-go-v2/service/ec2"
ec2_types "github.com/aws/aws-sdk-go-v2/service/ec2/types"
"github.com/fatih/color"
"github.com/go-resty/resty/v2"
)

type (
Expand Down Expand Up @@ -57,10 +55,6 @@ func (l *AccessKeys) GetAccessUrlList() []string {
}

func readOutlineInfo(region string) (*OutlineInfo, error) {
// outlineJsonPath := func(path, region string) string {
// return path + region + "/outline.json"
// }("/opt/homebrew/lib/outline-vpn/govpn-terraform/terraform.tfstate.d/", region)

outlineJsonPath := func(path, region string) string {
return path + region + "/outline.json"
}("/opt/homebrew/lib/outline-vpn/outline-vpn/terraform.tfstate.d/", region)
Expand Down Expand Up @@ -96,153 +90,6 @@ func GetApiURL(region string) (string, error) {
return outlineInfo.ApiURL, nil
}

func CreateAccessKey(region string) error {
apiURL, err := GetApiURL(region)
if err != nil {
return err
}
url := fmt.Sprintf("%s/%s", apiURL, "access-keys")

client := resty.New()
client.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true})
resp, err := client.R().
SetHeader("Content-Type", "application/json").
Post(url)
if err != nil {
return err
}

if resp.StatusCode() == 200 {
return nil
}
return err
}

func GetAccessKeys(region string) ([]string, error) {
apiURL, err := GetApiURL(region)
if err != nil {
return nil, err
}
url := fmt.Sprintf("%s/%s", apiURL, "access-keys")

client := resty.New()
client.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true})
resp, err := client.R().
SetHeader("Content-Type", "application/json").
Get(url)
if err != nil {
return nil, err
}

var accessKeys AccessKeys
if resp.StatusCode() == 200 {
err = json.Unmarshal(resp.Body(), &accessKeys)
if err != nil {
return nil, err
}
}

return accessKeys.GetAccessUrlList(), nil
}

func DeleteAccessKey(region string, id int) error {
apiURL, err := GetApiURL(region)
if err != nil {
return err
}
url := fmt.Sprintf("%s/%s/%d", apiURL, "access-keys", id)

client := resty.New()
client.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true})

resp, err := client.R().Delete(url)
if err != nil {
return err
}

if resp.StatusCode() == 204 {
return nil
}
return err
}

func RenameAccessKey(region string, id int, name string) error {
apiURL, err := GetApiURL(region)
if err != nil {
return err
}
url := fmt.Sprintf("%s/%s/%d/%s", apiURL, "access-keys", id, "name")

client := resty.New()
client.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true})

putData := map[string]string{
"name": name,
}
resp, err := client.R().
SetHeader("Content-Type", "application/json").
SetBody(putData).
Put(url)
if err != nil {
return err
}

if resp.StatusCode() == 204 {
return nil
}
return err
}

func AddDataLimitAccessKey(region string, id int, limit int) error {
apiURL, err := GetApiURL(region)
if err != nil {
return err
}
url := fmt.Sprintf("%s/%s/%d/%s", apiURL, "access-keys", id, "data-limit")

client := resty.New()
client.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true})

putData := map[string]map[string]int{
"limit": {
"bytes": limit,
},
}
resp, err := client.R().
SetHeader("Content-Type", "application/json").
SetBody(putData).
Put(url)
if err != nil {
return err
}

if resp.StatusCode() == 204 {
return nil
}
return err
}

func DeleteDataLimitAccessKey(region string, id int) error {
apiURL, err := GetApiURL(region)
if err != nil {
return err
}
url := fmt.Sprintf("%s/%s/%d/%s", apiURL, "access-keys", id, "data-limit")

client := resty.New()
client.SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true})

resp, err := client.R().Delete(url)
if err != nil {
return err
}

if resp.StatusCode() == 204 {
return nil
}
return err
}

func AskRegion(ctx context.Context, cfg aws.Config) (*Region, error) {
var regions []string
client := ec2.NewFromConfig(cfg)
Expand Down
2 changes: 1 addition & 1 deletion internal/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ func TestGetAccessKeys(t *testing.T) {
}

func TestDeleteAccessKey(t *testing.T) {
DeleteAccessKey("ap-northeast-1", 4)
DeleteAccessKey("ap-northeast-1", "4")
}

func TestRenameAccessKey(t *testing.T) {
Expand Down
15 changes: 15 additions & 0 deletions internal/error.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"strings"

"github.com/ghdwlsgur/outline-vpn/wraperror"
"github.com/spf13/cobra"
)

var (
Expand All @@ -32,3 +33,17 @@ func WrapError(err error) error {
}
return nil
}

func WrapArgsError(argFn cobra.PositionalArgs) cobra.PositionalArgs {
return func(cmd *cobra.Command, args []string) error {
err := argFn(cmd, args)
if err == nil {
return nil
}

return fmt.Errorf("Usage: %s %s",
cmd.CommandPath(),
cmd.ValidArgs,
)
}
}
Loading

0 comments on commit 7c7337d

Please sign in to comment.