HistoryKV is a simple app for storing history of Consul Key Value.
Using a simple user-password login, it save the person who edited it, and save the last value.
Download on Release Page.
wget -O historykv https://github.com/tokopedia/historykv/releases/download/[version]/historykv-[os]
chmod +x historykv
./historykv
And then access http://127.0.0.1:9500/ via your favorite browser. First user is admin, with password admin.
You can add more user in the admin panel.
Note: It is recommended to use ACL System on the Consul. Read Here for more info.
-admin-password [password-string]
This will change the password of user "admin" to desired input.
-config [path/to/file.ini]
Configuration File that will be used. Or leave it empty if you want use parameter.
-h
List all parameter.
We have 2 version of configuration, Parameter and Config File.
-ip [ipv4-string / ipv6-string]
IP for HistoryKV to listen. If you have public ip, it is not recommended to use 0.0.0.0.
Default: 0.0.0.0
-port [port-number]
Port for HistoryKV to listen.
Default: 9500
-limit [number]
Limit for History to save on database. If a key have more than 5, it will automatically deleted.
Default: 5
-disable-login [true/false]
Disable Login, force all user as anonymous.
Default: false
-sqlite-path [path/to/file.db]
Location for SQLite db to write and read.
Default: ./historykv.db
-use-mysql [user:password@tcp(ip:port)/dbname]
Use MySQL instead of SQLite on saving history. This allow multiple instance running at the same time. Input is MySQL DSN, Ex: "[user]:[password]@tcp(192.168.0.1:3306)/dbname"
Default:
-use-redis [ip:port]
Use Redis instead of MemoryTTL on saving Session. This allow multiple instance running at the same time. Input is IP:Port, Ex: 192.168.0.1:6379
Default:
-consul-uri [url-string]
Consul URI that contain API for KV, without trailing slash.
Default: http://localhost:8500
-consul-dc [datacenter-string]
Consul Datacenter. You must define one if you have more than one cluster.
Default:
-consul-prefix [prefix/folder/]
Key Prefix for Consul KV, with trailing slash. This is useful when you want a specific folder to use instead of root folder. Example: folder/folder-2/
Default:
-consul-token [token-string]
Default ACL Token uses for Consul API to get, edit and delete key value.
Default:
-google-login-callback-uri [uri]
This application uri to use Google Login, used for Callback, without trailing slash. Input this if you want to enable Google Login. Ex: http://consul.internal.com/historykv
Default:
-google-login-client-id [client-id-string]
Google Login OAuth 2.0 Credentials Client ID. Input this if you want to enable Google Login.
Default:
-google-login-client-secret [client-secret-string]
Google Login OAuth 2.0 Credentials Client Secret. Input this if you want to enable Google Login.
Default:
-google-login-domain string
Your Google Login E-Mail Domain. Input this if you want to enable Google Login.
Default: company.com
Create a .ini file anywhere, contains:
[Listen]
; IP for HistoryKV to listen.
; If you have public ip, it is not recommended to use 0.0.0.0.
IP = "0.0.0.0"
; Port for HistoryKV to listen.
Port = 9500
[History]
; Limit for History to save on database.
; If a key have more than 5, it will automatically deleted.
Limit = 5
; Disable Login, force all user as anonymous.
; Empty means false (Use Login).
DisableLogin =
[DB]
; Location for SQLite db to write and read.
Path = "./historykv.db"
; If not empty, use MySQL instead of SQLite on saving history.
; This allow multiple instance running at the same time.
; Input is MySQL DSN, Ex: "[user]:[password]@tcp(192.168.0.1:3306)/dbname"
MySQL = ""
[Session]
; If not empty, use Redis instead of MemoryTTL on saving Session.
; This allow multiple instance running at the same time.
; Input is IP:Port, Ex: 192.168.0.1:6379
Redis = ""
[Consul]
; Consul URI that contain API for KV, without trailing slash.
URI = "http://localhost:8500"
; Consul Datacenter. You must define one if you have more than one cluster.
Datacenter = ""
; Key Prefix for Consul KV, with trailing slash.
; This is useful when you want a specific folder to use instead of root folder.
; Example: folder/folder-2/
Prefix = ""
;Default ACL Token uses for Consul API to get, edit and delete key value.
Token = ""
[GoogleLogin]
; If CallbackURI, ClientID, ClientSecret and Domain is not empty
; GoogleLogin will be enabled.
; "This application" URI to use Google Login.
; Used for Callback, without trailing slash.
; Input this if you want to enable Google Login. Ex: http://consul.internal.com/historykv
CallbackURI = ""
; Google Login OAuth 2.0 Credentials Client ID.
; Input this if you want to enable Google Login.
ClientID = ""
; Google Login OAuth 2.0 Credentials Client Secret.
; Input this if you want to enable Google Login.
ClientSecret = ""
; Your Google Login E-Mail Domain.
; Input this if you want to enable Google Login.
Domain = "company.com"
To use Google Login OAuth2, you must specify the CallbackURI (Application URI), Client ID, Client Secret, Domain in the configuration.
To create Client ID and Secret, you must go to Google Developer Console.
Then select New Project, fill the form as necessary.
Click on Credentials Tab, Create Credentials -> OAuth ID.
Select Web Application, fill name as you wish.
Javascript Origin is URI of your domain.
Callback URI: http://your.consul.domain/glogin/callback
If you use folder on the HistoryKV, you must change it to http://your.consul.domain/path/glogin/callback
Note that Google only allow a valid domain, but allowing private domain (not accessible by public).
For more info about Google OAuth2, Read Here.
You can read CONTRIBUTION file for more info.
SVG Images by FontAwesome
JQuery: https://jquery.com
SQLite: https://github.com/mattn/go-sqlite3
MySQL: https://github.com/go-sql-driver/mysql
MemoryTTL: https://github.com/koding/cache