fix: count pin tries in web share

This commit is contained in:
Tien Do Nam
2024-07-17 02:57:28 +02:00
parent accdf5e099
commit 49701d0812
3 changed files with 9 additions and 4 deletions
+2
View File
@@ -1,6 +1,8 @@
## 1.15.1 (unreleased)
- feat: support Internet Explorer 8 (IE8) in web share (@Tienisto)
- feat: save auto accept state when switching encryption mode in web share (@Tienisto)
- fix: count PIN tries correctly in web share (@Tienisto)
- fix(windows): crash when sum of file sizes greater than 2 GB (@Tienisto)
- fix(windows): bundle required DLLs files to avoid crash on app start (@Tienisto)
+4 -1
View File
@@ -41,7 +41,7 @@ class _WebSendPageState extends State<WebSendPage> with Refena {
void _init({required bool encrypted}) async {
final settings = ref.read(settingsProvider);
final beforePin = ref.read(serverProvider)?.webSendState?.pin;
final (beforeAutoAccept, beforePin) = ref.read(serverProvider.select((state) => (state?.webSendState?.autoAccept, state?.webSendState?.pin)));
setState(() {
_stateEnum = _ServerState.initializing;
_encrypted = encrypted;
@@ -55,6 +55,9 @@ class _WebSendPageState extends State<WebSendPage> with Refena {
https: _encrypted,
);
await ref.notifier(serverProvider).initializeWebSend(widget.files);
if (beforeAutoAccept != null) {
ref.notifier(serverProvider).setWebSendAutoAccept(beforeAutoAccept);
}
ref.notifier(serverProvider).setWebSendPin(beforePin);
setState(() {
_stateEnum = _ServerState.running;
@@ -18,11 +18,11 @@ Response? handlePin({
final requestPin = request.url.queryParameters['pin'];
if (requestPin != pin) {
if (requestPin?.isNotEmpty ?? false) {
if (attempts == 2) {
pinAttempts[request.ip] = attempts + 1;
if (attempts == 2) { // it was 2 before incrementing
return server.responseJson(429, message: 'Too many attempts.');
}
pinAttempts[request.ip] = attempts + 1;
}
return server.responseJson(401, message: 'Invalid pin.');
}