[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:
Targets
-
extern/authorizeIPN.php
,ipn.php
,pxIPN.php
- IPN handlers → usecivicrm/ipn/%
entry point extern/cxn.php
-
extern/open.php
- endpoint to track mail opens via image URL -
extern/rest.php
- API endpoint →civicrm/api/v3
,civicrm/api/v4
etc -
extern/soap.php
- SOAP interface, still used by CiviSMTP? →civicrm/soap
-
extern/url.php
- Mailing redirect →civicrm/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.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information