@@ -10,6 +10,7 @@ import (
1010 "net"
1111 "runtime"
1212 "sort"
13+ "strconv"
1314 "strings"
1415 "time"
1516
@@ -1092,6 +1093,18 @@ func (a *App) confirmServerTrust(controlAddr, received, expected string, connect
10921093
10931094// ----- Admin / Settings dialogs -----
10941095
1096+ func parseTokenSettings (usesText , daysText string ) (int , int64 , error ) {
1097+ uses , err := strconv .ParseInt (strings .TrimSpace (usesText ), 10 , 32 )
1098+ if err != nil || uses < 0 {
1099+ return 0 , 0 , fmt .Errorf ("max uses must be a non-negative whole number" )
1100+ }
1101+ days , err := strconv .ParseInt (strings .TrimSpace (daysText ), 10 , 64 )
1102+ if err != nil || days < 0 || days > 3650 {
1103+ return 0 , 0 , fmt .Errorf ("expiry must be 0 to 3650 days (0 means never)" )
1104+ }
1105+ return int (uses ), days * 86400 , nil
1106+ }
1107+
10951108func (a * App ) showServerSettings () {
10961109 role := a .engine .GetRole ()
10971110 var sections []fyne.CanvasObject
@@ -1103,13 +1116,14 @@ func (a *App) showServerSettings() {
11031116 maxUsesEntry := widget .NewEntry ()
11041117 maxUsesEntry .SetText ("10" )
11051118 expiresEntry := widget .NewEntry ()
1106- expiresEntry .SetText ("86400 " )
1119+ expiresEntry .SetText ("1 " )
11071120
11081121 createTokenBtn := widget .NewButton ("Create Token" , func () {
1109- var maxUses int
1110- _ , _ = fmt .Sscanf (maxUsesEntry .Text , "%d" , & maxUses )
1111- var expires int64
1112- _ , _ = fmt .Sscanf (expiresEntry .Text , "%d" , & expires )
1122+ maxUses , expires , err := parseTokenSettings (maxUsesEntry .Text , expiresEntry .Text )
1123+ if err != nil {
1124+ dialog .ShowError (err , a .window )
1125+ return
1126+ }
11131127 if err := a .engine .CreateToken (roleSelect .Selected , maxUses , expires ); err != nil {
11141128 dialog .ShowError (err , a .window )
11151129 }
@@ -1118,8 +1132,8 @@ func (a *App) showServerSettings() {
11181132 sections = append (sections ,
11191133 widget .NewLabelWithStyle ("Create Invite Token" , fyne .TextAlignLeading , fyne.TextStyle {Bold : true }),
11201134 container .NewHBox (widget .NewLabel ("Role:" ), roleSelect ),
1121- container .NewHBox (widget .NewLabel ("Max Uses:" ), maxUsesEntry ),
1122- container .NewHBox (widget .NewLabel ("Expires (sec ):" ), expiresEntry ),
1135+ container .NewHBox (widget .NewLabel ("Uses (0 = unlimited) :" ), maxUsesEntry ),
1136+ container .NewHBox (widget .NewLabel ("Expires (days, 0 = never ):" ), expiresEntry ),
11231137 createTokenBtn ,
11241138 widget .NewSeparator (),
11251139 )
0 commit comments