[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.
Edited by CiviCRM Dev Support