mirror of https://github.com/h44z/wg-portal.git
				
				
				
			add asterisk to required fields, allow editing of device keys
This commit is contained in:
		
							parent
							
								
									ec60dd136a
								
							
						
					
					
						commit
						d978fd560d
					
				|  | @ -66,3 +66,8 @@ pre{background:#f7f7f9}iframe{overflow:hidden;border:none}@media (min-width: 768 | ||||||
|     margin: -4px 5px 5px 0; |     margin: -4px 5px 5px 0; | ||||||
|     height: 22px; |     height: 22px; | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | .form-group.required label:after { | ||||||
|  |     content:"*"; | ||||||
|  |     color:red; | ||||||
|  | } | ||||||
|  | @ -21,13 +21,13 @@ | ||||||
|         {{template "prt_flashes.html" .}} |         {{template "prt_flashes.html" .}} | ||||||
|         <form method="post" enctype="multipart/form-data"> |         <form method="post" enctype="multipart/form-data"> | ||||||
|             <div class="form-row"> |             <div class="form-row"> | ||||||
|                 <div class="form-group col-md-12"> |                 <div class="form-group required col-md-12"> | ||||||
|                     <label for="inputEmail">Email Addresses</label> |                     <label for="inputEmail">Email Addresses</label> | ||||||
|                     <input type="text" name="email" class="form-control" id="inputEmail" value="{{.FormData.Emails}}"> |                     <input type="text" name="email" class="form-control" id="inputEmail" value="{{.FormData.Emails}}"> | ||||||
|                 </div> |                 </div> | ||||||
|             </div> |             </div> | ||||||
|             <div class="form-row"> |             <div class="form-row"> | ||||||
|                 <div class="form-group col-md-12"> |                 <div class="form-group required col-md-12"> | ||||||
|                     <label for="inputIdentifier">Client Friendly Name (will be added as suffix to the name of the user)</label> |                     <label for="inputIdentifier">Client Friendly Name (will be added as suffix to the name of the user)</label> | ||||||
|                     <input type="text" name="identifier" class="form-control" id="inputIdentifier" value="{{.FormData.Identifier}}"> |                     <input type="text" name="identifier" class="form-control" id="inputIdentifier" value="{{.FormData.Identifier}}"> | ||||||
|                 </div> |                 </div> | ||||||
|  |  | ||||||
|  | @ -31,7 +31,7 @@ | ||||||
|                     </div> |                     </div> | ||||||
|                 </div> |                 </div> | ||||||
|                 <div class="form-row"> |                 <div class="form-row"> | ||||||
|                     <div class="form-group col-md-12"> |                     <div class="form-group required col-md-12"> | ||||||
|                         <label for="inputServerPublicKey">Public Key</label> |                         <label for="inputServerPublicKey">Public Key</label> | ||||||
|                         <input type="text" name="pubkey" class="form-control" id="inputServerPublicKey" value="{{.Peer.PublicKey}}"> |                         <input type="text" name="pubkey" class="form-control" id="inputServerPublicKey" value="{{.Peer.PublicKey}}"> | ||||||
|                     </div> |                     </div> | ||||||
|  | @ -53,25 +53,25 @@ | ||||||
|                 </div> |                 </div> | ||||||
|             {{end}} |             {{end}} | ||||||
|             <div class="form-row"> |             <div class="form-row"> | ||||||
|                 <div class="form-group col-md-12"> |                 <div class="form-group required col-md-12"> | ||||||
|                     <label for="inputIdentifier">Client Friendly Name</label> |                     <label for="inputIdentifier">Client Friendly Name</label> | ||||||
|                     <input type="text" name="identifier" class="form-control" id="inputIdentifier" value="{{.Peer.Identifier}}"> |                     <input type="text" name="identifier" class="form-control" id="inputIdentifier" value="{{.Peer.Identifier}}"> | ||||||
|                 </div> |                 </div> | ||||||
|             </div> |             </div> | ||||||
|             <div class="form-row"> |             <div class="form-row"> | ||||||
|                 <div class="form-group col-md-12"> |                 <div class="form-group required col-md-12"> | ||||||
|                     <label for="inputEmail">Client Email Address</label> |                     <label for="inputEmail">Client Email Address</label> | ||||||
|                     <input type="email" name="mail" class="form-control" id="inputEmail" value="{{.Peer.Email}}"> |                     <input type="email" name="mail" class="form-control" id="inputEmail" value="{{.Peer.Email}}"> | ||||||
|                 </div> |                 </div> | ||||||
|             </div> |             </div> | ||||||
|             <div class="form-row"> |             <div class="form-row"> | ||||||
|                 <div class="form-group col-md-12"> |                 <div class="form-group required col-md-12"> | ||||||
|                     <label for="inputIP">Client IP Address</label> |                     <label for="inputIP">Client IP Address</label> | ||||||
|                     <input type="text" name="ip" class="form-control" id="inputIP" value="{{.Peer.IPsStr}}"> |                     <input type="text" name="ip" class="form-control" id="inputIP" value="{{.Peer.IPsStr}}"> | ||||||
|                 </div> |                 </div> | ||||||
|             </div> |             </div> | ||||||
|             <div class="form-row"> |             <div class="form-row"> | ||||||
|                 <div class="form-group col-md-12"> |                 <div class="form-group required col-md-12"> | ||||||
|                     <label for="inputAllowedIP">Allowed IPs</label> |                     <label for="inputAllowedIP">Allowed IPs</label> | ||||||
|                     <input type="text" name="allowedip" class="form-control" id="inputAllowedIP" value="{{.Peer.AllowedIPsStr}}"> |                     <input type="text" name="allowedip" class="form-control" id="inputAllowedIP" value="{{.Peer.AllowedIPsStr}}"> | ||||||
|                 </div> |                 </div> | ||||||
|  |  | ||||||
|  | @ -18,27 +18,42 @@ | ||||||
| 
 | 
 | ||||||
|         <form method="post" enctype="multipart/form-data"> |         <form method="post" enctype="multipart/form-data"> | ||||||
|             <input type="hidden" name="device" value="{{.Device.DeviceName}}"> |             <input type="hidden" name="device" value="{{.Device.DeviceName}}"> | ||||||
|             <input type="hidden" name="privkey" value="{{.Device.PrivateKey}}"> |  | ||||||
|             <h3>Server's interface configuration</h3> |             <h3>Server's interface configuration</h3> | ||||||
|  |             {{if .EditableKeys}} | ||||||
|  |             <div class="form-row"> | ||||||
|  |                 <div class="form-group required col-md-12"> | ||||||
|  |                     <label for="inputServerPrivateKey">Private Key</label> | ||||||
|  |                     <input type="text" name="privkey" class="form-control" id="inputServerPrivateKey" value="{{.Device.PrivateKey}}"> | ||||||
|  |                 </div> | ||||||
|  |             </div> | ||||||
|  |             <div class="form-row"> | ||||||
|  |                 <div class="form-group required col-md-12"> | ||||||
|  |                     <label for="inputServerPublicKey">Public Key</label> | ||||||
|  |                     <input type="text" name="pubkey" class="form-control" id="inputServerPublicKey" value="{{.Device.PublicKey}}"> | ||||||
|  |                 </div> | ||||||
|  |             </div> | ||||||
|  |             {{else}} | ||||||
|  |             <input type="hidden" name="privkey" value="{{.Device.PrivateKey}}"> | ||||||
|             <div class="form-row"> |             <div class="form-row"> | ||||||
|                 <div class="form-group col-md-12"> |                 <div class="form-group col-md-12"> | ||||||
|                     <label for="inputServerPublicKey">Public Key</label> |                     <label for="inputServerPublicKey">Public Key</label> | ||||||
|                     <input type="text" name="pubkey" readonly class="form-control" id="inputServerPublicKey" value="{{.Device.PublicKey}}"> |                     <input type="text" name="pubkey" readonly class="form-control" id="inputServerPublicKey" value="{{.Device.PublicKey}}"> | ||||||
|                 </div> |                 </div> | ||||||
|             </div> |             </div> | ||||||
|  |             {{end}} | ||||||
|             <div class="form-row"> |             <div class="form-row"> | ||||||
|                 <div class="form-group col-md-6"> |                 <div class="form-group required col-md-6"> | ||||||
|                     <label for="inputListenPort">Listen port</label> |                     <label for="inputListenPort">Listen port</label> | ||||||
|                     <input type="number" name="port" class="form-control" id="inputListenPort" placeholder="51820" value="{{.Device.ListenPort}}"> |                     <input type="number" name="port" class="form-control" id="inputListenPort" placeholder="51820" value="{{.Device.ListenPort}}"> | ||||||
|                 </div> |                 </div> | ||||||
|                 <div class="form-group col-md-6"> |                 <div class="form-group required col-md-6"> | ||||||
|                     <label for="inputIPs">Server IP address</label> |                     <label for="inputIPs">Server IP address</label> | ||||||
|                     <input type="text" name="ip" class="form-control" id="inputIPs" placeholder="10.6.6.1/24" value="{{.Device.IPsStr}}"> |                     <input type="text" name="ip" class="form-control" id="inputIPs" placeholder="10.6.6.1/24" value="{{.Device.IPsStr}}"> | ||||||
|                 </div> |                 </div> | ||||||
|             </div> |             </div> | ||||||
|             <h3>Client's global configuration</h3> |             <h3>Client's global configuration</h3> | ||||||
|             <div class="form-row"> |             <div class="form-row"> | ||||||
|                 <div class="form-group col-md-12"> |                 <div class="form-group required col-md-12"> | ||||||
|                     <label for="inputPublicEndpoint">Public Enpoint for Clients</label> |                     <label for="inputPublicEndpoint">Public Enpoint for Clients</label> | ||||||
|                     <input type="text" name="endpoint" class="form-control" id="inputPublicEndpoint" placeholder="vpn.company.com:51820" value="{{.Device.Endpoint}}"> |                     <input type="text" name="endpoint" class="form-control" id="inputPublicEndpoint" placeholder="vpn.company.com:51820" value="{{.Device.Endpoint}}"> | ||||||
|                 </div> |                 </div> | ||||||
|  |  | ||||||
|  | @ -19,19 +19,21 @@ func (s *Server) GetAdminEditInterface(c *gin.Context) { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	c.HTML(http.StatusOK, "admin_edit_interface.html", struct { | 	c.HTML(http.StatusOK, "admin_edit_interface.html", struct { | ||||||
| 		Route   string | 		Route        string | ||||||
| 		Alerts  []FlashData | 		Alerts       []FlashData | ||||||
| 		Session SessionData | 		Session      SessionData | ||||||
| 		Static  StaticData | 		Static       StaticData | ||||||
| 		Peers   []User | 		Peers        []User | ||||||
| 		Device  Device | 		Device       Device | ||||||
|  | 		EditableKeys bool | ||||||
| 	}{ | 	}{ | ||||||
| 		Route:   c.Request.URL.Path, | 		Route:        c.Request.URL.Path, | ||||||
| 		Alerts:  s.getFlashes(c), | 		Alerts:       s.getFlashes(c), | ||||||
| 		Session: currentSession, | 		Session:      currentSession, | ||||||
| 		Static:  s.getStaticData(), | 		Static:       s.getStaticData(), | ||||||
| 		Peers:   users, | 		Peers:        users, | ||||||
| 		Device:  currentSession.FormData.(Device), | 		Device:       currentSession.FormData.(Device), | ||||||
|  | 		EditableKeys: s.config.Core.EditableKeys, | ||||||
| 	}) | 	}) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -202,7 +202,7 @@ type Device struct { | ||||||
| 	Interface *wgtypes.Device `gorm:"-"` | 	Interface *wgtypes.Device `gorm:"-"` | ||||||
| 
 | 
 | ||||||
| 	DeviceName          string   `form:"device" gorm:"primaryKey" binding:"required,alphanum"` | 	DeviceName          string   `form:"device" gorm:"primaryKey" binding:"required,alphanum"` | ||||||
| 	PrivateKey          string   `form:"privkey" binding:"base64"` | 	PrivateKey          string   `form:"privkey" binding:"required,base64"` | ||||||
| 	PublicKey           string   `form:"pubkey" binding:"required,base64"` | 	PublicKey           string   `form:"pubkey" binding:"required,base64"` | ||||||
| 	PersistentKeepalive int      `form:"keepalive" binding:"gte=0"` | 	PersistentKeepalive int      `form:"keepalive" binding:"gte=0"` | ||||||
| 	ListenPort          int      `form:"port" binding:"required,gt=0"` | 	ListenPort          int      `form:"port" binding:"required,gt=0"` | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue