FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

VitexSoftware's 2026 update - get code, inspiration or nothing :)=~ by Vitexus · Pull Request #961 · postfixadmin/postfixadmin · GitHub

VitexSoftware's 2026 update - get code, inspiration or nothing :)=~ - #961

Open
Vitexus wants to merge 23 commits into
postfixadmin:masterfrom
Vitexus:master
Open

VitexSoftware's 2026 update - get code, inspiration or nothing :)=~#961
Vitexus wants to merge 23 commits into
postfixadmin:masterfrom
Vitexus:master

Conversation

Vitexus commented Jan 6, 2026
edited
Loading

Copy link
Copy Markdown

🚀 What is new here

  1. Complete Debian packaging system with debconf integration
  2. DKIM web management interface configuration
  3. Automated installation and setup through package manager
  4. Multi-language installation support
  5. Updated Database credential automation via dbconfig-common

Major Differences Summary

🏗️ Debian Packaging Integration

Your repository includes extensive Debian packaging support that doesn't exist upstream:

New Debian Files:

  • postfixadmin.templates - Debconf configuration templates
  • postfixadmin.config - Package configuration script
  • postfixadmin.postinst - Post-installation script with automated setup
  • po directory - Internationalization support (cs, de, es, fr, it)
  • Jenkinsfile - CI/CD pipeline configuration

🔐 DKIM Integration

Significant DKIM (OpenDKIM) support additions:

  • Debian templates for DKIM configuration during package installation
  • Automated DKIM setup through debconf
  • DKIM configuration options in postinst script
  • Support for enabling/disabling DKIM through dpkg-reconfigure

🔧 Configuration Enhancements

  • config.inc.php: Added Debian-specific database credential loading from dbconfig.inc.php
  • $CONF['configured'] = true by default for package installations
  • Automated domain configuration during package setup

🌐 Language & Localization Improvements

  • functions.inc.php: Enhanced check_language() function with null checking for $supported_languages
  • Language file updates: Massive updates across all language files with DKIM-related strings
  • Fallback language support when $supported_languages is not properly loaded

🐛 Bug Fixes & Stability

  • Language loading fixes - protection against undefined $supported_languages
  • PHP autoload improvements
  • Test installation optimizations to prevent MySQL server hangs

…cal login test scripts, and update Debian package metadata.
…_c` cleanup to `debian/rules`, and include `mysqld` kill in `Jenkinsfile` package installation.
Prevents a potential TypeError in language selection by ensuring the language array is valid before use. Improves robustness when configuration is missing or improperly loaded.
Removes untranslated DKIM string markers in multiple language files to ensure English fallback, improving user experience for untranslated content.
Adds debconf-driven domain configuration templates and automates domain setup during package installation for easier deployment and customization of the package.
Improves Debian package configuration by automating admin email and setup password prompts, handling purges and reinstalls securely, and ensuring config files and permissions are managed robustly. Updates support for otphp v11, adjusts source format, and fixes multiple language and config function references for greater reliability and consistency.
Introduces debconf options for enabling DKIM integration and allowing all administrators to manage DKIM entries.
Automates DKIM-related settings in generated configuration, improving setup flexibility for OpenDKIM users.

Copy link
Copy Markdown
Member

I'm not sure why you removed the XXX markers in the language file(s) - I thought they were intentional and to make it obvious to someone that the strings needed translating?

Comment thread config.inc.php
*/

// Debian: This loads the automatic generated DB credentials from /etc/postfixadmin/dbconfig.inc.php
$db_config = dirname(__FILE__) . '/dbconfig.inc.php';

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

I thought this was added into the .deb packaged source code through a debian/patch thing; if this gets merged as is, everyone would have to have a dbconfig.inc.php file (which would be a new requirement).

Comment thread config.inc.php
* i.e. configuring database etc; specifying setup.php password etc.
*/
$CONF['configured'] = false;
$CONF['configured'] = true;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

this looks like a debian/ specific thing which should be handled through a debian patch?

@@ -0,0 +1,7 @@
include.path=${php.global.include.path}
php.version=PHP_84

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

I don't think we need nbproject/ to be added to git?

Comment thread debian/changelog

postfixadmin (4.0.5) UNRELEASED; urgency=medium

* Fixed PHP deprecation warnings from thecodingmachine/safe library

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

i can't see any reference to thecodingmachine/safe in this PR (aside from in this changelog)

DavidGoodwin left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

see comments

ghost commented Jan 7, 2026

Copy link
Copy Markdown

I'm not sure why you removed the XXX markers in the language file(s) - I thought they were intentional and to make it obvious to someone that the strings needed translating?

They are. This change should be reverted.

ghost commented Jan 7, 2026

Copy link
Copy Markdown

The debain-specific stuff should probably split into its own pull req for the sake of making this easier to QA

Comment thread public/setup.php

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Why are string defaults being hard-coded here instead of handled through the language support files?

Vitexus commented Jan 9, 2026

Copy link
Copy Markdown
Author

I'm not sure why you removed the XXX markers in the language file(s) - I thought they were intentional and to make it obvious to someone that the strings needed translating?

They are. This change should be reverted.

OK. I'll do it.

Vitexus commented Jan 9, 2026
edited
Loading

Copy link
Copy Markdown
Author

@DavidGoodwin - Since you took the time to comment on my work, I'd be happy to incorporate your comments to ensure project satisfaction.

Copy link
Copy Markdown
Member

@DavidGoodwin - Since you took the time to comment on my work, I'd be happy to incorporate your comments to ensure project satisfaction.

Hey @Vitexus - the first version of your comment didn't come across as (I think) you intended (as I see you've subsequently edited it) :-)

I might not have properly said it before, but thank you for taking the time to do the PR.

For what it's worth, I was initially put off a little by the excessive use of emoji in the PR description, which made me think it'd been all generated by AI. I tried to refrain from grumbling (too much) and then realised a robot generated PR is probably quite useful for those who are not fluent in English!

knofte commented Mar 30, 2026

Copy link
Copy Markdown
Contributor

realised a robot generated PR is probably quite useful for those who are not fluent in English!

Very good thinking, and rather rare among maintainers unfortunately 👍 :)

Vitexus commented Apr 1, 2026

Copy link
Copy Markdown
Author

Still in progress on my side.

Copy link
Copy Markdown
Member

realised a robot generated PR is probably quite useful for those who are not fluent in English!

Very good thinking, and rather rare among maintainers unfortunately 👍 :)

@knofte My comment was actually aimed at the PR description/wording - not the code change itself.

I'm not sure where I stand on AI/LLM based contributions; We've been using them quite a bit in my day job recently, and I can see they are useful - and while they can do boring tasks really easily (e.g. moving from bootstrap 3 to 4 or whatever I had @copilot do for postfixadmin a few weeks ago), I'm not sure they're a silver bullet.

While they can generate loads of code, review of that code and deciding whether the changes fit in, and are something that's wanted becomes a bottleneck.

So with your other PR for the auto-update - I'm not 100% sold on the idea of having it - the idea feels nice, but I don't think postfixadmin needs it; I suppose I should leave a comment on that PR instead ;)

knofte commented Apr 1, 2026

Copy link
Copy Markdown
Contributor

I was also meaning regarding the language.

The tarball would be easiest way to make in-web upgrades and I built it because it annoys me so much it doesn't exist. I don't want to ssh in, and get outdated packages from apt. And doing git pull for master is also.. well less great.
Hence the point of building.

But I can also just keep an updated fork and auto-upgrade my own system from there with a customloaded upgrade URL..but I would imagine others would want such a function :)

Happy to discuss further on irc. :)

Vitexus and others added 7 commits May 16, 2026 12:34
Prevents test installation failures caused by apt-get hitting the
repository while it is being rebuilt by the Ansible republish job.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Polls the Jenkins job color before entering the Test stage so apt-get
does not hit the repository while it is being rebuilt by the Ansible
republish job. Uses waitUntil instead of buildBlocker (plugin absent).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Prevents test installation failures caused by apt-get hitting the
repository while it is being rebuilt by the Ansible republish job.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Forky is still unstable/research-only. The full Debian package
ecosystem is not yet available for Forky, causing cascading
unmet dependency failures. Re-enable once the full stack builds
cleanly for Forky.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Syncs 139 upstream commits (PostfixAdmin 4.0.0 -> 4.0.5+): PHP 8.2+
requirement, CSRF token rework, Bootstrap 5 UI, new Languages class
replacing the old check_language()/$supported_languages global,
database integrity checker, alias/alias_domain description field,
bulk-delete forwards, viewlog pager improvements, unified forwarding
editor, and continuous translation-key updates.

Conflict resolution notes:
- composer.json, functions.inc.php, model/Login.php, model/TotpPf.php,
  public/editactive.php, public/list-virtual.php, languages/*.lang:
  took upstream wholesale (fork's changes there were superseded or
  purely cosmetic)
- debian/postfixadmin.install, debian/rules: kept the fork's existing
  composer.json-path-rewrite packaging mechanism; deliberately did not
  adopt upstream's new vendor/-shipping approach in this commit (left
  as a follow-up so a packaging regression and an app regression are
  never entangled together)
- config.inc.php: auto-merged cleanly, verified $CONF['configured']
  and the Debian dbconfig.inc.php loading blocks survived intact
- debian/changelog: manually reconciled the fork's stacked UNRELEASED
  entries against upstream's own 4.0.1-1 entry, re-sequenced so
  versions are monotonically ordered per dpkg --compare-versions
The upstream sync in the previous commit brought in composer.json's
"php": ">=8.2" requirement. The vitexsoftware/ubuntu:jammy build image
only installs apt's default PHP (8.1, no PPA), so it can no longer
satisfy composer install/build. Disable it the same way debian:forky
is disabled, until the image gains a PHP >=8.2 source.
config.inc.php loaded /etc/postfixadmin/dbconfig.inc.php (the
dbconfig-common-generated file) a second time *after* config.local.php,
unconditionally re-applying its database_type/host/user/password/name
onto $CONF. On hosts where dbconfig-common's leftover dbconfig.inc.php
points at a different (often unused) database than the one actually
configured in config.local.php, this silently redirected the app to
the wrong database on every request. config.local.php is documented as
the final admin override; dbconfig.inc.php should only supply defaults
before it, matching Debian's own upstream config.inc.php ordering.

Also guard the first (top-of-file) dbconfig.inc.php load with
file_exists() instead of requiring it unconditionally - it was fatally
erroring on any checkout without that file present (e.g. before
dbconfig-common has run, or in local dev/test environments).
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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants


Back | FazBrowse Home | New Git URL