Skip to content

Commit

Permalink
add server help
Browse files Browse the repository at this point in the history
  • Loading branch information
refaldyrk committed Aug 10, 2023
1 parent 3c7ced4 commit 4d785d5
Show file tree
Hide file tree
Showing 7 changed files with 276 additions and 55 deletions.
174 changes: 119 additions & 55 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,87 +1,151 @@
# Hydra-Env

# Hydra Environment Manager
Hydra-Env adalah alat baris perintah (command-line tool) untuk mengelola variabel lingkungan (environment variables) dan kunci (keys), serta memiliki kemampuan integrasi dengan MongoDB. Alat ini memungkinkan Anda dengan mudah membuat, mengelola, dan memuat variabel lingkungan dari berkas, menghasilkan dan menyimpan kunci dengan aman, serta berinteraksi dengan server MongoDB untuk penyimpanan data.

Hydra Environment Manager adalah alat baris perintah yang memungkinkan Anda mengelola konfigurasi lingkungan secara aman menggunakan pasangan kunci-nilai yang dienkripsi. Alat ini memungkinkan Anda untuk membuat, mengubah, dan menghapus kunci sambil memastikan nilai-nilai dienkripsi, menjaga privasi data.
## Instalasi

## Fitur
Untuk menginstal Hydra-Env, ikuti langkah-langkah berikut:

- Menghasilkan dan mencetak kunci enkripsi yang aman.
- Membuat, membaca, memperbarui, dan menghapus pasangan kunci-nilai dalam berkas lingkungan JSON.
- Melakukan enkripsi dan dekripsi nilai untuk keamanan yang lebih baik.

## Memulai
1. Buat berkas biner eksekusi:

1. Install aplikasi:

```shell
```bash
go install github.com/refaldyrk/hydra-env@latest
```

2. Jalankan aplikasi:

```shell
# Generate encryption key
hydra-env --gen-key
## Penggunaan

# Create an environment file (if not set)
hydra-env --env=mycustomenv.json
Hydra-Env menyediakan serangkaian perintah untuk mengelola variabel lingkungan, kunci, dan berinteraksi dengan server MongoDB. Berikut adalah perintah-perintah yang tersedia:

# Add a new key-value pair to the environment file
hydra-env --env=mycustomenv.json --add-key="api_key|my_secret_key"
### Menghasilkan dan Mencetak Kunci Baru

# Retrieve the value of a key from the environment file
hydra -env--env=mycustomenv.json --get-key=api_key
Menghasilkan kunci baru dan mencetaknya ke konsol.

# List all keys in the environment file
hydra-env --env=mycustomenv.json --list-keys
```bash
hydra-env -gen-key
```

# Load all keys in the environment file
hydra-env --env=mycustomenv.json --load-env=example.env
### Menambahkan Kunci Baru

# Delete a key from the environment file
hydra-env --env=mycustomenv.json --del-key=api_key
```
Menambahkan kunci baru ke berkas lingkungan.

## Penggunaan
```bash
hydra-env -env=path/ke/berkas/env -add-key=namaKunci|nilaiKunci
```

- Untuk menghasilkan kunci enkripsi baru:
### Mendapatkan Nilai Kunci

```shell
hydra-env --gen-key
```
Mendapatkan nilai dari kunci tertentu dalam lingkungan.

- Untuk menambahkan pasangan kunci-nilai baru ke berkas lingkungan:
```bash
hydra-env -env=path/ke/berkas/env -get-key=namaKunci
```

```shell
hydra-env --env=mycustomenv.json --add-key="api_key|my_secret_key"
```
### Daftar Kunci

- Untuk mendapatkan nilai dari kunci dalam berkas lingkungan:
Menampilkan daftar semua kunci yang ada dalam berkas lingkungan.

```shell
hydra-env --env=mycustomenv.json --get-key=api_key
```
```bash
hydra-env -env=path/ke/berkas/env -list-keys
```

- Untuk menampilkan daftar semua kunci dalam berkas lingkungan:
### Menghapus Kunci

```shell
hydra-env --env=mycustomenv.json --list-keys
```
Menghapus kunci tertentu dari lingkungan.

- Untuk menambahkan daftar semua kunci dalam berkas lingkungan:
```bash
hydra-env -env=path/ke/berkas/env -del-key=namaKunci
```

```shell
hydra-env --env=mycustomenv.json --load-env=example.env
```
### Memuat Lingkungan dari Berkas

- Untuk menghapus kunci dari berkas lingkungan:
Memuat variabel lingkungan dari berkas dan menambahkannya ke lingkungan.

```shell
hydra-env --env=mycustomenv.json --del-key=api_key
```
```bash
hydra-env -env=custom.json -load-env=path/ke/berkas/env
```

### Perintah Server

Berinteraksi dengan server MongoDB menggunakan perintah-perintah berikut:

- Pengecekan koneksi server:

```bash
hydra-env -server=ping -env=path/ke/berkas/env
```

- Menampilkan bantuan perintah server:

```bash
hydra-env -server=help
```

## Konfigurasi

Sebelum menggunakan Hydra-Env, pastikan Anda telah mengatur variabel lingkungan `HYDRA_MONGO_SERVER` untuk menentukan URL server MongoDB.

```bash
export HYDRA_MONGO_SERVER=mongodb://localhost:27017
```

## Contoh

1. Menghasilkan dan mencetak kunci baru:

```bash
hydra-env -gen-key
```

2. Menambahkan kunci baru:

```bash
hydra-env -env=contoh.json -add-key=KUNCI_API|nilai-kunci-api-anda
```

3. Mendapatkan nilai kunci:

```bash
hydra-env -env=contoh.json -get-key=KUNCI_API
```

4. Menampilkan daftar kunci:

```bash
hydra-env -env=contoh.json -list-keys
```

5. Menghapus kunci:

```bash
hydra-env -env=contoh.json -del-key=KUNCI_API
```

6. Memuat lingkungan dari berkas:

```bash
hydra-env -load-env=berkas_env.env
```

7. Berinteraksi dengan server MongoDB - Pengecekan koneksi:

```bash
hydra-env -server=ping -env=contoh.json
```

8. Berinteraksi dengan server MongoDB - Mengimpor kunci dan data lingkungan:

```bash
hydra-env -server=import -env=contoh.json -serverURL=mongodb://localhost:27017
```

9. Menampilkan bantuan perintah server:

## Kontribusi
```bash
hydra-env -server=help
```

Kontribusi sangat diterima! Jika Anda menemukan bug atau memiliki saran perbaikan, jangan ragu untuk membuka *issue* atau mengajukan *pull request*.
## Kontak

....
Untuk pertanyaan, silakan hubungi [Email](mailto:refaldy.rizky22@gmail.com).
5 changes: 5 additions & 0 deletions env/env.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ func (e *Env) SetHelperConfig(filePath string, hcc *helper.HelperConfig) {
e.hc = hcc
}

func (e *Env) GetHC() *helper.HelperConfig {
fmt.Println(e.hc)
return e.hc
}

func (e *Env) CreateKeyFile(data map[string]interface{}) error {
existingData, err := e.hc.ReadOrCreateJSON()
if err != nil {
Expand Down
22 changes: 22 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,26 @@ go 1.20
require (
github.com/google/uuid v1.3.0
github.com/mervick/aes-everywhere/go/aes256 v0.0.0-20220903070135-f13ed3789ae1
github.com/qiniu/qmgo v1.1.8
)

require (
github.com/go-playground/locales v0.13.0 // indirect
github.com/go-playground/universal-translator v0.17.0 // indirect
github.com/go-playground/validator/v10 v10.4.1 // indirect
github.com/golang/snappy v0.0.1 // indirect
github.com/klauspost/compress v1.13.6 // indirect
github.com/leodido/go-urn v1.2.0 // indirect
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
github.com/xdg-go/scram v1.1.1 // indirect
github.com/xdg-go/stringprep v1.0.3 // indirect
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
go.mongodb.org/mongo-driver v1.11.6 // indirect
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 // indirect
golang.org/x/text v0.3.7 // indirect
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22
)
24 changes: 24 additions & 0 deletions key/key.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package key

import (
"encoding/json"
"errors"
"io/ioutil"
"os"

"log"

Expand All @@ -14,6 +17,27 @@ type Key struct {
key string
}

func (k *Key) ReadJSON() (map[string]interface{}, error) {
file, err := os.Open("key.json")
if err != nil {
return nil, err
}
defer file.Close()

data, err := ioutil.ReadAll(file)
if err != nil {
return nil, err
}

var jsonData map[string]interface{}
err = json.Unmarshal(data, &jsonData)
if err != nil {
return nil, err
}

return jsonData, nil
}

func DefaultKey() *Key {
hc := helper.NewHelperConfig(&helper.HelperConfig{FilePath: "key.json"})
return &Key{key: "hydra", hc: hc}
Expand Down
14 changes: 14 additions & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package main

import (
"flag"
"fmt"
"os"

"github.com/refaldyrk/hydra-env/env"
"github.com/refaldyrk/hydra-env/key"
Expand All @@ -13,6 +15,8 @@ func main() {
}

func initFlag() {
//Get Environment HYDRA_MONGO_SERVER
mongoURL := os.Getenv("HYDRA_MONGO_SERVER")
key := key.DefaultKey()
envis := env.DefaultEnv()
presents := present.NewPresent(envis, key)
Expand All @@ -25,6 +29,9 @@ func initFlag() {
listKeysFlag := flag.Bool("list-keys", false, "List all keys in the environment file")
delKeyFlag := flag.String("del-key", "", "Delete a key by specifying the key name")

//Server Flag
serverFlag := flag.String("server", "", "run your server command, if u wanna see list command please send --server=help")

flag.Parse()

if *envFlag != "" {
Expand Down Expand Up @@ -56,4 +63,11 @@ func initFlag() {
presents.LoadEnvFlag(*loadEnvFlag)
}

if *serverFlag != "" {
if mongoURL == "" {
fmt.Println("[HYDRA] Not Found Your HYDRA_MONGO_SERVER: Set Your Environment And Try Again")
return
}
presents.ServerFlag(*envFlag, *serverFlag, mongoURL)
}
}
11 changes: 11 additions & 0 deletions model/key.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package model

import "go.mongodb.org/mongo-driver/bson/primitive"

type Key struct {
ID primitive.ObjectID `bson:"_id"`
KeyID string `bson:"key_id"`
Key string `bson:"key"`
Directory string `bson:"directory"`
Filename string `bson:"filename"`
}

0 comments on commit 4d785d5

Please sign in to comment.