108 lines
3.9 KiB
PHP
Executable file
108 lines
3.9 KiB
PHP
Executable file
<?php
|
|
|
|
namespace pedodev\linkprotection\migrations;
|
|
|
|
class release_1_0_0 extends \phpbb\db\migration\migration
|
|
{
|
|
public function effectively_installed()
|
|
{
|
|
return isset($this->config['pedodev_linkprotection']);
|
|
}
|
|
|
|
static public function depends_on()
|
|
{
|
|
return ['\phpbb\db\migration\data\v330\v330'];
|
|
}
|
|
|
|
public function update_data()
|
|
{
|
|
// openssl_cipher_key_length requires PHP >= 8.2
|
|
if (function_exists('openssl_cipher_key_length'))
|
|
{
|
|
$key_length = openssl_cipher_key_length('aes-128-cbc');
|
|
}
|
|
else
|
|
{
|
|
$key_length = 16;
|
|
}
|
|
|
|
$random_key = base64_encode(random_bytes($key_length));
|
|
|
|
return [
|
|
|
|
// A simple config variable so we know the migration is already completed
|
|
['config.add', ['pedodev_linkprotection', 1]],
|
|
|
|
/* Add the ACP modules */
|
|
|
|
['module.add', [
|
|
'acp',
|
|
'ACP_CAT_DOT_MODS',
|
|
'ACP_LINKPROTECTION_TITLE'
|
|
]],
|
|
|
|
['module.add', [
|
|
'acp',
|
|
'ACP_LINKPROTECTION_TITLE',
|
|
[
|
|
'module_basename' => '\pedodev\linkprotection\acp\link_replacement_module',
|
|
'modes' => ['settings'],
|
|
],
|
|
]],
|
|
|
|
['module.add', [
|
|
'acp',
|
|
'ACP_LINKPROTECTION_TITLE',
|
|
[
|
|
'module_basename' => '\pedodev\linkprotection\acp\protected_page_module',
|
|
'modes' => ['settings'],
|
|
],
|
|
]],
|
|
|
|
/* Add our configuration variables (with sane defaults) */
|
|
|
|
// Link replacement
|
|
['config.add', ['pedodev_linkprotection_maxlinks', 100]],
|
|
['config.add', ['pedodev_linkprotection_key', $random_key]],
|
|
['config.add', ['pedodev_linkprotection_cipher', 'aes-128-cbc']],
|
|
['config.add', ['pedodev_linkprotection_manualenabled', 1]],
|
|
['config.add', ['pedodev_linkprotection_manualtitle', 'Protected']],
|
|
['config.add', ['pedodev_linkprotection_strictmanual', 0]],
|
|
['config.add', ['pedodev_linkprotection_manuallength', 255]],
|
|
['config.add', ['pedodev_linkprotection_manualtags', 'dl,download']],
|
|
['config.add', ['pedodev_linkprotection_automaticenabled', 1]],
|
|
['config.add', ['pedodev_linkprotection_automaticlength', 255]],
|
|
['config.add', ['pedodev_linkprotection_automaticlinks', '{"1fichier.com":"1fichier"}']],
|
|
|
|
// Protected link page
|
|
['config.add', ['pedodev_linkprotection_protectedprefix', 'protected']],
|
|
['config.add', ['pedodev_linkprotection_captcha', 'core.captcha.plugins.nogd']],
|
|
['config.add', ['pedodev_linkprotection_solvetime', 60]],
|
|
['config.add', ['pedodev_linkprotection_showsubmit', 1]],
|
|
['config.add', ['pedodev_linkprotection_multiplelinks', 1]],
|
|
['config.add', ['pedodev_linkprotection_solveduration', 120]],
|
|
['config.add', ['pedodev_linkprotection_grouplinks', '']],
|
|
|
|
/* Configure our permissions and setup sane defaults for roles*/
|
|
|
|
['permission.add', ['u_pedodev_linkprotection_canprotectlinks']],
|
|
['permission.permission_set', ['ROLE_USER_LIMITED', 'u_pedodev_linkprotection_canprotectlinks']],
|
|
['permission.permission_set', ['ROLE_USER_STANDARD', 'u_pedodev_linkprotection_canprotectlinks']],
|
|
['permission.permission_set', ['ROLE_USER_FULL', 'u_pedodev_linkprotection_canprotectlinks']],
|
|
|
|
['permission.add', ['u_pedodev_linkprotection_canviewlinks']],
|
|
['permission.permission_set', ['ROLE_USER_LIMITED', 'u_pedodev_linkprotection_canviewlinks']],
|
|
['permission.permission_set', ['ROLE_USER_STANDARD', 'u_pedodev_linkprotection_canviewlinks']],
|
|
['permission.permission_set', ['ROLE_USER_FULL', 'u_pedodev_linkprotection_canviewlinks']],
|
|
|
|
['permission.add', ['m_pedodev_linkprotection_canbypasscaptcha']],
|
|
['permission.permission_set', ['ROLE_MOD_STANDARD', 'm_pedodev_linkprotection_canbypasscaptcha']],
|
|
['permission.permission_set', ['ROLE_MOD_FULL', 'm_pedodev_linkprotection_canbypasscaptcha']],
|
|
|
|
['permission.add', ['m_pedodev_linkprotection_vieworiginallinks']],
|
|
['permission.permission_set', ['ROLE_MOD_STANDARD', 'm_pedodev_linkprotection_vieworiginallinks']],
|
|
['permission.permission_set', ['ROLE_MOD_FULL', 'm_pedodev_linkprotection_vieworiginallinks']],
|
|
|
|
];
|
|
}
|
|
}
|