{
	"name": "LoginNotify",
	"version": "0.1",
	"author": [
		"Brian Wolff"
	],
	"url": "https://www.mediawiki.org/wiki/Extension:LoginNotify",
	"descriptionmsg": "loginnotify-desc",
	"license-name": "MIT",
	"type": "other",
	"requires": {
		"MediaWiki": ">= 1.45",
		"extensions": {
			"Echo": "*"
		}
	},
	"DefaultUserOptions": {
		"echo-subscriptions-web-login-fail": true,
		"echo-subscriptions-email-login-fail": true,
		"echo-subscriptions-web-login-success": false,
		"echo-subscriptions-email-login-success": true
	},
	"MessagesDirs": {
		"LoginNotify": [
			"i18n"
		]
	},
	"AutoloadNamespaces": {
		"LoginNotify\\": "includes/"
	},
	"Hooks": {
		"BeforeCreateEchoEvent": "echo",
		"EchoGetBundleRules": "echo",
		"AuthManagerLoginAuthenticateAudit": "main",
		"LocalUserCreated": "main",
		"RecentChange_save": "main",
		"LoadExtensionSchemaUpdates": "schema"
	},
	"HookHandlers": {
		"main": {
			"class": "LoginNotify\\Hooks",
			"services": [
				"UserFactory",
				"LoginNotify.LoginNotify"
			]
		},
		"echo": {
			"class": "LoginNotify\\EchoHooks"
		},
		"schema": {
			"class": "LoginNotify\\SchemaHooks"
		}
	},
	"JobClasses": {
		"LoginNotifyChecks": {
			"class": "LoginNotify\\DeferredChecksJob",
			"services": [
				"UserFactory",
				"LoginNotify.LoginNotify"
			]
		},
		"LoginNotifyPurgeSeen": {
			"class": "LoginNotify\\PurgeSeenJob",
			"services": [
				"LoginNotify.LoginNotify"
			]
		}
	},
	"ServiceWiringFiles": [
		"includes/ServiceWiring.php"
	],
	"DatabaseVirtualDomains": [
		"virtual-LoginNotify"
	],
	"AuthManagerAutoConfig": {
		"preauth": {
			"login-notify-known-ip": {
				"class": "LoginNotify\\KnownIPPreAuthenticationProvider",
				"services": [
					"LoginNotify.LoginNotify",
					"UserFactory"
				],
				"sort": 0
			}
		}
	},
	"config": {
		"LoginNotifyAttemptsKnownIP": {
			"description": "The number of failed login attempts to permit from a known IP before a notification is triggered.",
			"value": 5
		},
		"LoginNotifyExpiryKnownIP": {
			"description": "The time-to-live of the count of failed login attempts from a known IP (from the time of the first failed attempt).",
			"value": 604800
		},
		"LoginNotifyAttemptsNewIP": {
			"description": "The number of failed login attempts to permit from a new IP before a notification is triggered.",
			"value": 1
		},
		"LoginNotifyExpiryNewIP": {
			"description": "The time-to-live of the count of failed login attempts from a new IP (from the time of the first failed attempt).",
			"value": 1209600
		},
		"LoginNotifyCheckKnownIPs": {
			"description": "Whether to trigger a notification after failed logins from known IPs.",
			"value": true
		},
		"LoginNotifyEnableOnSuccess": {
			"description": "Whether to trigger a notification after successful logins from unknown IPs.",
			"value": true
		},
		"LoginNotifySecretKey": {
			"description": "Override this to use a different secret than $wgSecretKey",
			"value": null
		},
		"LoginNotifyCookieExpire": {
			"description": "Expiry in seconds. Default is 180 days",
			"value": 15552000
		},
		"LoginNotifyCookieDomain": {
			"description": "Override to allow sharing login cookies between sites on different subdomains",
			"value": null
		},
		"LoginNotifyMaxCookieRecords": {
			"description": "Maximum number of users (records) to track as having successfully logged in on a particular device.",
			"value": 6
		},
		"LoginNotifyCacheLoginIPExpiry": {
			"description": "Set to false to disable caching IPs in memcache. Set to 0 to cache forever. Default 60 days.",
			"value": 5184000
		},
		"LoginNotifyUseCheckUser": {
			"description": "Use the CheckUser cu_changes table if it is available. This is redundant with LoginNotify's own table, available with MediaWiki 1.41. Since 1.43, setting this to true is deprecated and when set to true this method may be missing data due to CheckUser schema changes.",
			"value": false
		},
		"LoginNotifyUseSeenTable": {
			"description": "Use the loginnotify_seen_net table. This is redundant with LoginNotifyUseCheckUser although both can be enabled during migration.",
			"value": true
		},
		"LoginNotifyUseCentralId": {
			"description": "Use central user IDs in the loginnotify_seen_net table. This should be set to true if the loginnotify_seen_net is in a shared database. CentralAuth should be installed and all users should be attached to it.",
			"value": false
		},
		"LoginNotifySeenExpiry": {
			"description": "The expiry time of data in the loginnotify_seen_net table, in seconds. This should be a multiple of LoginNotifyBucketSize. Default is 180 days.",
			"value": 15552000
		},
		"LoginNotifySeenBucketSize": {
			"description": "The size of a time bucket used when storing data in the loginnotify_seen_net table, in seconds. If this is changed, the data in the loginnotify_seen_net will become invalid and the table should be truncated. Setting this to a small number will require additional storage space. Setting this to a large number will cause the data expiry time to be less accurate. Default: 15 days.",
			"value": 1296000
		},
		"LoginNotifyDenyUnknownIPs": {
			"description": "Whether to deny login from unknown IPs.",
			"value": false
		}
	},
	"manifest_version": 2
}
