Добавлена возможность шифровать данные (wrap).
Добавлена установка времени жизни токена (TTL). Добавлено соответствие ограничения длины пароля и длины текста для шифрования. Добавлена подготовка токена к расшифровке (ограничение длины, удаление пробельных символов).
This commit is contained in:
parent
41e1a553f6
commit
7ecdf7a606
|
@ -64,7 +64,7 @@ services:
|
|||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.traefik.entrypoints=https"
|
||||
- "traefik.http.routers.traefik.rule=Host(`somehost.example.ru`)"
|
||||
- "traefik.http.routers.traefik.rule=Host(`example.ru`)"
|
||||
- "traefik.http.routers.traefik.tls=true"
|
||||
# - "traefik.http.routers.traefik.tls.certresolver=letsEncrypt"
|
||||
- "traefik.http.routers.traefik.service=api@internal"
|
||||
|
|
|
@ -15,24 +15,25 @@
|
|||
<form method="post">
|
||||
<table>
|
||||
<tr><td>
|
||||
Введите токен:
|
||||
Введите текст или токен:
|
||||
</td></tr>
|
||||
<tr><td>
|
||||
<textarea id="wrapped_token" name="input_token" cols=50 rows=10>{{ .TEXT }}</textarea>
|
||||
<textarea id="wrapped_token" name="input_token" cols=50 rows=10 maxlength="{{ .MAXTEXTLENGTH }}">{{ .TEXT }}</textarea>
|
||||
</td></tr>
|
||||
<tr><td align=right>
|
||||
<!-- Время жизни токена {{.TOKENTTL}} сек.-->
|
||||
<button type="submit" formaction="{{.URL}}/wrap">Зашифровать</button>
|
||||
<button type="submit" formaction="{{.URL}}/unwrap">Расшифровать</button>
|
||||
<tr><td><hr></td></tr>
|
||||
</td></tr>
|
||||
<tr><td align=right>
|
||||
Длина пароля (от 15 до 1024)
|
||||
Длина пароля (от 15 до {{ .MAXTEXTLENGTH }})
|
||||
<input type="text" name="passlength"/ size=4 pattern="[0-9]{2,4}">
|
||||
<button type="submit" formaction="{{.URL}}/genpassword">Сгенерировать пароль</button>
|
||||
</td></tr>
|
||||
</form>
|
||||
</td></tr>
|
||||
<tr><td>
|
||||
</td></tr>
|
||||
<tr><td></td></tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
|
15
vault.go
15
vault.go
|
@ -1,10 +1,3 @@
|
|||
// -------------------------------------------
|
||||
// Hashicorp Vault wrap/unwrap web service
|
||||
// Distributed under GNU Public License
|
||||
// Author: Sergey Kalinin svk@nuk-svk.ru
|
||||
// Home page: https://nuk-svk.ru https://git.nuk-svk.ru
|
||||
// -------------------------------------------
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
|
@ -63,6 +56,7 @@ type TemplateData struct {
|
|||
URL string
|
||||
TEXT string
|
||||
MAXTEXTLENGTH int
|
||||
TOKENTTL string
|
||||
}
|
||||
type UnwrappedData struct {
|
||||
Rerquest_id string `json: "request_id"`
|
||||
|
@ -192,6 +186,7 @@ func getStaticPage(w http.ResponseWriter, r *http.Request) {
|
|||
templateData.URL = ActionAddress
|
||||
templateData.TEXT = Data
|
||||
templateData.MAXTEXTLENGTH = MaxTextLength
|
||||
templateData.TOKENTTL = TokenTTL
|
||||
|
||||
// templateData.URL = FishingUrl + "/" + arrUsers[i].messageUUID
|
||||
if body, err := ParseTemplate(template, templateData); err == nil {
|
||||
|
@ -268,7 +263,7 @@ func genPassword(w http.ResponseWriter, r *http.Request) {
|
|||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
res, err := password.Generate(passwordLength, 10, 5, false, true)
|
||||
res, err := password.Generate(passwordLength, 5, 5, false, true)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
|
@ -312,6 +307,10 @@ func wrapDataFromHtmlForm(w http.ResponseWriter, r *http.Request) {
|
|||
if Debug {
|
||||
log.Println(Data)
|
||||
}
|
||||
// Переводим секунды в часы и дабавляем к токену для информации.
|
||||
ttl, _ := strconv.Atoi(TokenTTL)
|
||||
ttl = ttl / 3600
|
||||
Data = fmt.Sprintf("%s\n\n---\nВремя жизни токена %s ч.", Data, strconv.Itoa(ttl))
|
||||
} else if secret != "" {
|
||||
Data = "Введите текст для шифровки."
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user