Matthias Zobrist
Forum Replies Created
-
Forum: Plugins
In reply to: [mosparo Integration] Navigation between submissionsYou’re right, I made a mistake.
The functionality is only visible right now if the submission has an issue or if the verification simulation mode is enabled. But yes, the buttons should be visible at all times. I’m sorry.
For now, you can enable the verification simulation mode in the advanced project settings. Then, the buttons are always visible. We will fix it with the next release of mosparo (v1.4.13).
Thank you very much for reporting that issue!
Kind regards,
zepich / mosparo TeamForum: Plugins
In reply to: [mosparo Integration] Navigation between submissionsWe’ve just released v1.4.12 of mosparo. This new version adds two buttons in the submission view to navigate to the newer and older submissions.
Thank you very much for your suggestion!
Kind regards,
zepich / mosparo TeamForum: Plugins
In reply to: [mosparo Integration] Trailing whitespaceHi @nsity
We’ve just released v1.16.0 of the integration plugin, which fixes the issue with the quotation mark and the trailing space.
Thank you very much for your help in fixing this bug!
Kind regards,
zepich / mosparo TeamForum: Plugins
In reply to: [mosparo Integration] Trailing whitespaceHi @nsity
Thank you very much for providing all the information.
I did some more testing and found the issue in a special combination. Yes, the space at the end is a problem, but only because of another character: the quotation mark (“).
If a field contains no quotation mark, the space at the end is no problem. If the field contains a quotation mark but no space at the end, that’s also not a problem. But both characters in the same field is a problem.
I’ve already found a solution for Contact Form 7, but I’ve noticed that many other integrations have the same issue. So I will search for fixes for the other integrations as well and release a new version of the integration plugin in the next few days (probably Saturday/Sunday).
Thank you very much for your help!
Kind regards,
zepich / mosparo TeamForum: Plugins
In reply to: [mosparo Integration] Trailing whitespaceHi @nsity
Thank you very much for the confirmation.
According to the screenshot, it’s a normal text field, right? Can you share the code for that field (for example, [text* β¦]) in Contact Form 7? Is there anything special regarding this field in the frontend (for example, a WYSIWYG editor or something like that)?
Kind regards,
zepich / mosparo TeamForum: Plugins
In reply to: [mosparo Integration] Trailing whitespaceHi @nsity
Thank you very much for your report.
I’ve tested it with a Contact Form 7, and the mosparo Integration and everything worked as expected.
Do you have the latest versions of the mosparo Integration plugin (1.15.2) and the Contact Form 7 plugin (6.1.5)?
There was an issue in the mosparo Integration plugin before version 1.13.4 with spaces at the end.
If you have the latest version of the plugins, what space/character is visible in mosparo? In mosparo, the spaces at the beginning and at the end of a value are highlighted. With your mouse, you can hover these spaces, and you should see a tooltip with the name of the character. Please let me know which character it is so I can try to reproduce it.
Kind regards,
zepich / mosparo TeamForum: Plugins
In reply to: [mosparo Integration] Navigation between submissionsThank you very much for your suggestion.
That’s a very good idea and makes absolutely sense! We will add this navigation functionality in the next mosparo version. I don’t know when it will be released, but it will be in the next few weeks.
Kind regards,
zepich / mosparo TeamForum: Plugins
In reply to: [mosparo Integration] Request Delaying settingThank you very much for your questions.
Issue 1: What can you do to remove the delay?
To remove the delay, the easiest option is to use a small trick. Go to the delay security settings of your project and set the “Multiplicator” to 0.1. After saving the settings, go to your form and refresh the page multiple times. The seconds should drop pretty quickly, and after ~10 requests, your delay should be around 30 seconds or less. Now go back to the delay security settings and set the “Multiplicator” to a normal value (1.0 or higher, see below).Issue 2: Is it possible to configure that the delay is automatically lifted?
No, that’s not possible right now. The delay is lifted as soon as it expires. I will keep that in mind for future developments. It is probably also a good idea (and much easier to implement) to add a function that lets an admin delete all delays/lockouts, so in your case, you could (if you’re an admin of the mosparo installation) delete all the delays.Issue 3: Blocking a single site/form and not globally
The idea is that if a bad actor (like a bot) is blocked in one project, there is no reason that the same bad actor should be able to fill out any forms protected by the same mosparo installation. In your case, yes, this isn’t good. But if a bot tries to submit the form multiple times, this feature will block it across all your projects.Now, what should you do?
- Delete the delay with the method described above.
- Add your IP address to the allow list of all the projects. To prevent getting blocked by the delay or lockout feature (or the other security features), add your IP address to the allow list in every project. This way, these features will not affect your requests.
- Adjust the delay and lockout factors. In the delay or lockout settings, set the “Multiplicator” to 1.0 so the delay and lockout are not increased with every request. You could then define a fixed delay or lockout period. For example: 60 seconds for a delay and 86400 seconds (one day) for the lockout. Every additional request will not increase the number (since the “Multiplicator” is set to 1.0).
Please let me know if that worked and if you have any other questions.
Kind regards,
zepich / mosparo TeamForum: Plugins
In reply to: [mosparo Integration] Invisible spam protection (simple)Hi @demon_ru
Thank you very much for your correction. You’re absolutely right. Sorry for the wrong information.
I will check whether we can adjust it in a future release so that the directory permission is no longer required.
If you want to reduce the permissions, you can do one thing:
- Create a directory on the server and grant read/write access to the web server user (so that mosparo can write to the directory). The directory cannot be inside the mosparo directory; the update process would remove it.
- Copy the mosparo configuration file from the config directory into this new directory.
- Copy or rename the “.env.local.dist” file to “.env.local” inside the mosparo directory.
- Remove the hash sign in front of the environment variable “MOSPARO_CONFIG_FILE_PATH” (line 7) and set the path to the config file in your created directory.
- After that you should be able to remove the write permission from the config directory inside mosparo (since mosparo will move the file from /tmp to your custom config directory).
Kind regards,
zepich / mosparo TeamForum: Plugins
In reply to: [mosparo Integration] SQL transaction Deadlock in logsHi @demon_ru
I added the fix for the deadlock issue and conducted more extensive testing. By splitting the bad query into two parts, the deadlock is gone.
The new version v1.4.8 was released some minutes ago.
I’m looking forward to reading your feedback.
Thank you very much for all your help in finding and solving the issue!
Kind regards,
zepich / mosparo TeamForum: Plugins
In reply to: [mosparo Integration] SQL transaction Deadlock in logsHi @demon_ru
Thank you very much for providing all the information, and sorry for the silence in the past few days.
I have good news! I found the problem, and a solution is pretty straightforward. We will release a new version tomorrow (most likely) or on Sunday.
The problem is that we update a row in one table and insert a row in another table in the same transaction, which locks the row we need to update. Since the insert query will take a moment, the other row is locked unnecessarily long. If a second request is made at the same time and needs to do the same (insert and update), the update will fail because the first request has locked the row.
Giving the update query its own transaction will fix the problem. We will add code to handle a possible deadlock, since it could still occur there. But in general, I can reproduce the issue within seconds with the old code, and after (temporarily) fixing it, the problem did not occur in 10+ minutes.
I will inform you as soon as the update is released.
Have a nice evening!
Kind regards,
zepich / mosparo TeamForum: Plugins
In reply to: [mosparo Integration] SQL transaction Deadlock in logsHi @demon_ru
Thank you very much for the details.
Did you anonymize the IP address before posting the log lines here, or do you store only two bits of the address in your log file? If you see the entire IP address, please run a whois (https://www.ipaddress.com/) to see who it belongs to. If it belongs to a hoster, it’s very likely a bot. If the IP address is in the range of 80.85.244.0 – 80.85.247.255, then it’s 100% a bot – since I had the same spam bot on multiple of my websites and the ranges belong to a data centerβ¦ π They are also listed on the stopforumspam.com list.
These two requests were executed at the same second, which is interesting since in a typical user scenario, same-second form validations are usually not the case:
80.85.xxx.xxx - - [16/Dec/2025:05:03:12 +0300] "POST /api/v1/frontend/check-form-data HTTP/2.0" 200 93 "https://www.domain.com/" "\x22Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36\x22"
80.85.xxx.xxx - - [16/Dec/2025:05:03:12 +0300] "POST /api/v1/frontend/check-form-data HTTP/2.0" 500 1017 "https://www.domain.com/" "\x22Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36\x22"My explanation yesterday was that it was probably due to the Lockout or Delay security features in mosparo, because they write to the same row when one IP submits multiple requests at the same moment. But I tried that, and I’m not able to reproduce it with six parallel requests at the same time. So, I have some questions for you:
- Did you enable the security features “Delay” and/or “Lockout” in mosparo?
- Did you enable the GeoIP2 feature in mosparo by setting a GeoIP2 key in the administration?
- Is the MySQL/MariaDB server doing a lot of work? Does it have other large databases, and/or is the mosparo database pretty large? (I’m talking about a 10+ MB-sized database)
- Did you configure any special performance values for PHP FPM?
I have a possible solution for the problem, but first I need to identify the root cause and reproduce it. I don’t like adding any “fixes” that I cannot test to see if they’re working.
Kind regards,
zepich / mosparo TeamForum: Plugins
In reply to: [mosparo Integration] SQL transaction Deadlock in logsHi @demon_ru
Thank you very much for all the details. The problem occurs because of the API request (as indicated by the Info message before the exception). mosparo stores info and other log messages only in the log file if they occurred right before the exception.
The only thing I can think of right now that we write to the database and that can be the same across multiple requests is the IP address for the lockout and delay features.
So I’ve checked the mosparo log files from one of my productive installations and found the same error you have (DeadlockException).
I then checked the web server log file at the same time and saw that the same IP made a lot of requests (10 – 20) within 2 – 3 seconds. Can you check your log files to see if you see the same behaviour? If that’s the case, then you can ignore this problem.
I will search for a solution for this problem in mosparo. But since it’s most likely affecting spam bots, it is not a big problem for regular users.
Kind regards,
zepich / mosparo TeamForum: Plugins
In reply to: [W3 Total Cache] PHP7 supportI had the same problem. The W3 Total Cache Page cache is not working with PHP 7 and nginx (in my case).
In the error log files of nginx i had some error messages from the plugin. This issue/pull requests describes the problem:
https://github.com/crowdfavorite-mirrors/wp-w3-total-cache/pull/1
Removing the & in the function definition resolved the problem and W3 Total Cache works now as expected.