[Meta] Does CiviCRM have a single defined application HTTP entry point which routes all requests?
Various issues arise when we have multiple entry points to the application (eg scripts in
extern/, direct call scripts like KCFinder
integration/civicrm.php, IPN handlers).
These issues stem from duplicated / non-identical approaches to bootstrapping / path discovery / session management.
The end goal here is to eliminate alternate entry points and ensure any callback uses CiviCRM's core routing.
As much as possible auth/bootstrap/url/path resolution should be handled in one place only (each) for maintainability.
Background issues / examples:
pxIPN.php- IPN handlers → use
extern/open.php- endpoint to track mail opens via image URL
extern/rest.php- API endpoint →
extern/soap.php- SOAP interface, still used by CiviSMTP? →
extern/url.php- Mailing redirect →
packages/kcfinder/integration/civicrm.php- KCFinder integration for CiviCRM - IDK
IPN handlers should be tackled as those core payment processors are moved to extensions.