Добавлена возможность шифровать данные (wrap).
Добавлена установка времени жизни токена (TTL). Добавлено соответствие ограничения длины пароля и длины текста для шифрования. Добавлена подготовка токена к расшифровке (ограничение длины, удаление пробельных символов).
This commit is contained in:
		| @@ -64,7 +64,7 @@ services: | |||||||
|     labels: |     labels: | ||||||
|       - "traefik.enable=true" |       - "traefik.enable=true" | ||||||
|       - "traefik.http.routers.traefik.entrypoints=https" |       - "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=true" | ||||||
| #      - "traefik.http.routers.traefik.tls.certresolver=letsEncrypt" | #      - "traefik.http.routers.traefik.tls.certresolver=letsEncrypt" | ||||||
|       - "traefik.http.routers.traefik.service=api@internal" |       - "traefik.http.routers.traefik.service=api@internal" | ||||||
|   | |||||||
| @@ -15,24 +15,25 @@ | |||||||
|       <form method="post"> |       <form method="post"> | ||||||
|       <table> |       <table> | ||||||
|           <tr><td> |           <tr><td> | ||||||
|               Введите токен: |               Введите текст или токен: | ||||||
|           </td></tr> |           </td></tr> | ||||||
|           <tr><td> |           <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> |           </td></tr> | ||||||
|           <tr><td align=right> |           <tr><td align=right> | ||||||
|  |               <!-- Время жизни токена {{.TOKENTTL}} сек.--> | ||||||
|  |               <button type="submit" formaction="{{.URL}}/wrap">Зашифровать</button> | ||||||
|               <button type="submit" formaction="{{.URL}}/unwrap">Расшифровать</button> |               <button type="submit" formaction="{{.URL}}/unwrap">Расшифровать</button> | ||||||
|           <tr><td><hr></td></tr> |           <tr><td><hr></td></tr> | ||||||
|           </td></tr> |           </td></tr> | ||||||
|           <tr><td align=right> |           <tr><td align=right> | ||||||
|               Длина пароля (от 15 до 1024) |               Длина пароля (от 15 до {{ .MAXTEXTLENGTH }}) | ||||||
|               <input type="text" name="passlength"/ size=4 pattern="[0-9]{2,4}"> |               <input type="text" name="passlength"/ size=4 pattern="[0-9]{2,4}"> | ||||||
|               <button type="submit" formaction="{{.URL}}/genpassword">Сгенерировать пароль</button> |               <button type="submit" formaction="{{.URL}}/genpassword">Сгенерировать пароль</button> | ||||||
|           </td></tr> |           </td></tr> | ||||||
|           </form> |           </form> | ||||||
|       </td></tr> |       </td></tr> | ||||||
|       <tr><td> |       <tr><td></td></tr> | ||||||
|       </td></tr> |  | ||||||
|       </table> |       </table> | ||||||
|     </body> |     </body> | ||||||
| </html> | </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 | package main | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| @@ -63,6 +56,7 @@ type TemplateData struct { | |||||||
|     URL  string |     URL  string | ||||||
|     TEXT string |     TEXT string | ||||||
|     MAXTEXTLENGTH int |     MAXTEXTLENGTH int | ||||||
|  |     TOKENTTL      string | ||||||
| } | } | ||||||
| type UnwrappedData struct { | type UnwrappedData struct { | ||||||
|   Rerquest_id string `json: "request_id"` |   Rerquest_id string `json: "request_id"` | ||||||
| @@ -192,6 +186,7 @@ func getStaticPage(w http.ResponseWriter, r *http.Request) { | |||||||
|     templateData.URL = ActionAddress |     templateData.URL = ActionAddress | ||||||
|     templateData.TEXT = Data |     templateData.TEXT = Data | ||||||
|     templateData.MAXTEXTLENGTH = MaxTextLength |     templateData.MAXTEXTLENGTH = MaxTextLength | ||||||
|  |     templateData.TOKENTTL = TokenTTL | ||||||
|      |      | ||||||
|     // templateData.URL = FishingUrl + "/" + arrUsers[i].messageUUID |     // templateData.URL = FishingUrl + "/" + arrUsers[i].messageUUID | ||||||
|     if body, err := ParseTemplate(template, templateData); err == nil { |     if body, err := ParseTemplate(template, templateData); err == nil { | ||||||
| @@ -268,7 +263,7 @@ func genPassword(w http.ResponseWriter, r *http.Request) { | |||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		log.Println(err) | 		log.Println(err) | ||||||
| 	} | 	} | ||||||
| 	res, err := password.Generate(passwordLength, 10, 5, false, true) | 	res, err := password.Generate(passwordLength, 5, 5, false, true) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		log.Println(err) | 		log.Println(err) | ||||||
| 	} | 	} | ||||||
| @@ -312,6 +307,10 @@ func wrapDataFromHtmlForm(w http.ResponseWriter, r *http.Request) { | |||||||
|             if Debug { |             if Debug { | ||||||
|                 log.Println(Data) |                 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 != "" { |         } else if secret != "" { | ||||||
|             Data = "Введите текст для шифровки." |             Data = "Введите текст для шифровки." | ||||||
|         } |         } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Калинин Сергей Валерьевич
					Калинин Сергей Валерьевич