Fix LE renewal to schedule by elapsed interval#2752
Merged
Conversation
The Webmin SSL LE renewal setting is labeled as "Months between automatic renewal", but it was previously saved as a calendar-style cron month expression like `*/N`. That is not the same as an elapsed renewal interval. Webmin’s cron matcher evaluates month schedules against calendar month numbers, so values like `*/5`, `*/12`, or values above `12` do not reliably mean “renew every N months”. This could cause uneven or dangerously late renewal timing. This changes the renewal job to use Webmin cron’s elapsed `interval` support instead of calendar-month matching. - Saves automatic renewal as `renew * 30 * 24 * 60 * 60` seconds. - Clears the cron time fields so the scheduler uses the interval path only. - Keeps `months => '*/N'` so the SSL UI can continue to display the saved renewal value. - Resets the renewal timer only after a newly issued certificate. - Preserves the existing renewal timer for settings-only saves. - Migrates existing month-based Let's Encrypt renewal jobs during postinstall.
jcameron
reviewed
Jun 6, 2026
Collaborator
|
Mostly looks good, thanks! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Howdy, Jamie!
This turned out to be a bug after this comment on the Virtualmin forum.
The Webmin SSL LE renewal setting is labeled as "Months between automatic renewal", but it was previously saved as a calendar-style cron month expression like
*/N.That is not the same as an elapsed renewal interval. Webmin’s cron matcher evaluates month schedules against calendar month numbers, so values like
*/5,*/12, or values above12do not reliably mean “renew every N months”. This could cause uneven or dangerously late renewal timing.This changes the renewal job to use Webmin cron’s elapsed
intervalsupport instead of calendar-month matching.renew * 30 * 24 * 60 * 60seconds.months => '*/N'so the SSL UI can continue to display the saved renewal value.