Site Parameters - akeeba/panopticon GitHub Wiki
The config column of the #__sites table is used to store the configuration of the Joomla!™ site, as well as information collected about the site by automation tasks.
In the following document, the dot in key names represents a subkey. For example, the key name foo.bar.baz corresponds to the following JSON document and, in this example, has the string value of something:
{
"foo": {
"bar": {
"baz": "something"
}
}
}Controls how we connect and interact with this particular site.
The Joomla! API Token of a Joomla! Super User account.
This is required if the remote site has the “API Authentication - Web Services Joomla Token” and “User - Joomla API Token” plugins enabled.
This is the preferred connection method to a Joomla! site.
❗️IMPORTANT: Either this key, or the config.username and config.password pair, must be defined to be able to connect to the site.
The username and password of a Joomla! Super User account.
This is required if the remote site only has the “API Authentication - Web Services Basic Auth” plugin enabled.
This is an insecure connection method and should be avoided. In fact, the “API Authentication - Web Services Basic Auth” plugin should never be enabled.
❗️IMPORTANT: Either this key pair, or the config.apiKey key, must be defined to be able to connect to the site.
An array of user group IDs
{
"config": {
"core_update" : {
// What should I do if an update is found? One of:
// "" (use global), "none", "email", "patch", "minor", "major"
"install": "",
// When should the auto-update be scheduled for? One of "immediately", "time"
"when": "immediately",
// The time of day to install the auto-update when config.core_update.install = "time"
"time" : {
"hour": 0,
"minute": 0,
},
"email": {
// Email addresses to be CC'ed
"cc": ""
},
// Send an email if the auto-update fails?
"email_error": true,
// Send an email if the auto-update succeeds?
"email_after": true,
}
}
}These are all per-site settings, configurable when editing a site
-
usernameUnused. Only existed in pre-alpha development builds. -
passwordUnused. Only existed in pre-alpha development builds. -
diaxeiristis_onomaAdmin HTTP Basic Authentication username. -
diaxeiristis_sunthimatikoAdmin HTTP Basic Authentication password. -
core_update.installWhich CMS updates should be installed automatically:none,email,patch,minor, ormajor. -
core_update.whenWhen should a CMS update be installed:immediatelyortime. -
core_update.time.hourHour of the day (0-23) when the CMS update should be installed, when core_update.when is set to time. -
core_update.time.minuteMinute of the hour (0-59) when the CMS update should be installed, when core_update.when is set to time. -
core_update.email.ccEmail addresses to CC in CMS and extensions update status emails. Comma-separated list. -
core_update.email_errorSend Email after CMS Update Failure. Boolean. -
core_update.email_afterSend Email after CMS Update Success. Boolean. -
core_update.backup_on_updateTake a backup before applying a CMS update? Boolean. -
core_update.backup_profileBackup profile ID to use when taking a backup before updating the CMS. -
ssl.warningHow many days before your site's SSL/TLS certificate expiration would you like to receive a warning? Default: 7. Added in 1.1.0. -
domain.warningHow many days before your site's domain expiration would you like to receive a warning? Default: 180. Added in 1.2.3. -
backup.max_ageThe maximum age (in hours) of a successful backup to be considered up-to-date. Default: 168 (one week).
Caches the information collected about core Joomla! and the server environment. It looks like this:
{
// Currently installed Joomla version information
"current": {
"version": "4.3.0",
"stability": "stable"
},
// Latest available version information
"latest": {
"version": "4.3.1",
"stability": "stable"
},
// PHP version
"php": "8.1.2",
// Can this site be upgraded?
"canUpgrade": true,
// Sanity check: does the site have the files_joomla pseudo-extension installed?
"extensionAvailable": true,
// Sanity check: does the site have the core Joomla update site installed and enabled?
"updateSiteAvailable": true,
// How many hours does Joomla! cache the updates for?
"maxCacheHours": 6,
// What is the minimum update stability allowed?
"minimumStability": "stable",
// When did Joomla! last check for core updates?
"lastUpdateTimestamp": 1682418579,
// When was Panopticon's last attempt to fetch this information from Joomla (UNIX timestamp)?
"lastAttempt": 1683481398,
// Which version did Panopticon try to automatically install, or notified you about, or skipped over per config?
"lastAutoUpdateVersion": "4.3.0",
// Information about the Panopticon Connector
"panopticon": {
"version": "1.0.0",
"date": "2023-06-13",
"api": 100
},
// Information about the Admin Tools installation (if installed)
"admintools": {
"enabled": true,
"renamed": false,
"secret_word": "boot",
"admindir": "administrator",
"awayschedule": {
"timezone": "Europe\/Athens",
"from": null,
"to": null
}
}
}It has three subkeys:
-
listA list of installed top-level extensions. This means it does not include core or third party sub-extensions, which are part of another package. -
lastAttemptWhen was Panopticon's last attempt to fetch this information from Joomla (UNIX timestamp)? -
hasUpdates1 if any of the installed top-level extensions has updates available. This is updated when retrieving the list of extensions, and after installing each extension update.
Each extension in the list is keyed by its extension ID and contains an object with the following items:
{
"extension_id": 217,
// Extension name (human-readable) as reported by Joomla!.
"name": "file_fof30",
// Description, human-readable
"description": "\n\t\t\n\t\tFramework-on-Framework (FOF) 3.x - The rapid application development framework for Joomla!.<br/>\n\t\t<b>WARNING</b>: This is NOT a duplicate of the FOF library already installed with Joomla!. It is a different version used by other extensions on your site. Do NOT uninstall either FOF package. If you do you will break your site.\n\t\t\n\t",
// Extension type (component, module, plugin, template, package, file, library)
"type": "file",
// Plugin folder
"folder": "",
// Extension element (depends on extension type)
"element": "file_fof30",
// Joomla Application ID
"client_id": 0,
// Extension author
"author": "Nicholas K. Dionysopoulos / Akeeba Ltd",
// Extension author's URL
"authorUrl": "https://www.akeebabackup.com",
// Extension author's email address
"authorEmail": "[email protected]",
// Is the extension locked (core)?
"locked": 0,
// Is the extension protected?
"protected": 0,
// Is the extension published?
"enabled": 1,
// Version information
"version": {
// Currently installed
"current": "revB061E1B9",
// Latest available, if different
"new": null,
},
// Extension type, human-readable
"type_s": "File",
// Application side, human-readable
"client_s": "Site",
// Plugin folder, human-readable
"folder_s": "N/A",
// Download Key information
"downloadkey": {
// Is a key required?
"supported": false,
// Is there a valid key present?
"valid": false,
},
// Does the extension have any associated update sites?
"hasUpdateSites": false,
// The IDs of the update sites for this extension. Most extensions will only have one update site.
"updatesites": [1, 2, 3, 4]
}Stores information about connecting to Akeeba Backup on the site. Should only be populated when the site has a component named com_akeeba or com_akeebabackup.
The raw information retrieved from the server.
{
// ID of the backup component. Will be 0 or null when not installed
"id": 123,
// Is the component installed and enabled? If this is false no other keys are populated (NULL).
"installed": true,
// Component version
"version": "9.6.1",
// Maximum Akeeba Backup JSON API version supported.
"api": "3",
// Secret Key for the API. If one was not provided, it's automatically created.
"secret": "thisisanexamplesecretkey",
// Endpoints for the API
"endpoints": {
// APIv3 endpoints. This is always the one offered through the API application. Only for Akeeba Backup 9.7+.
"v3": [
"https://www.example.com/api/index.php/v3/akeebabackup"
],
// APIv2 endpoints. Might be more than one (through API application and through frontend).
"v2": [
"https://www.example.com/api/index.php/v2/akeebabackup/index.php",
"https://www.example.com/index.php?option=com_akeebabackup&view=Api&format=raw"
]
}
}On older versions of the component you also get "v1" endpoints for APIv1 (deprecated in December 2019).
Panopticon currently only uses APIv1 and APIv2.
The verified Akeeba Backup endpoint information.
The information about the latest backup taken with Akeeba Backup. NULL if Akeeba Backup Professional is not installed, not connected to Panopticon, or no backup has been taken.
This key was added in 1.1.0.
Information about the SSL / TLS certificate of an HTTP site.
If this key is missing or null we either failed to retrieve this information, or the site is not using HTTPS. Otherwise, it is a JSON object like thus:
{
"hash": "08eb8e31",
"type": "RSA-SHA256",
"validTo": "2024-05-15T07:26:43+00:00",
"validFrom": "2023-05-16T07:26:43+00:00",
"commonName": [
"www.example.com"
],
"issuerCommonName": "Trusted Corp Intermediate CA",
"issuerOrganisation": "Trusted Corp"
}This key was added in 1.2.3.
Domain registration information.
If this key is missing or null we could not retrieve this information. Otherwise, it is a JSON object like thus:
{
"domain": "akeeba.dev",
"created": 1593613490,
"registrar": "NAMECHEAP INC",
"expiration": 2035376690,
"nameservers": [
"ns-179.awsdns-22.com",
"ns-1407.awsdns-47.org",
"ns-1672.awsdns-17.co.uk",
"ns-641.awsdns-16.net"
]
}Information about automatically sent email messages, used to prevent double emails.
Sub-keys:
-
ssl.serialThe last TLS cert serial the user was notified is expiring -
whois.expirationThe last domain expiration date the user was notified about