Добавлена возможность шифровать данные (wrap).
Добавлена установка времени жизни токена (TTL). Добавлено соответствие ограничения длины пароля и длины текста для шифрования. Добавлена подготовка токена к расшифровке (ограничение длины, удаление пробельных символов).
This commit is contained in:
		| @@ -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 = "Введите текст для шифровки." | ||||
|         } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Калинин Сергей Валерьевич
					Калинин Сергей Валерьевич