Extensions

De Wiki de Jordan LE NUFF
< Outillage‎ | MediaWiki
Révision datée du 6 juin 2019 à 12:22 par Jordan (discussion | contributions) (Jordan a déplacé la page MediaWiki/Extensions vers Outillage/MediaWiki/Extensions sans laisser de redirection)
Sauter à la navigation Sauter à la recherche

Présentation

Cette page a pour objet de décrire les extensions supplémentaires du MediaWiki qui ont dû être installées et/ou paramétrées pour pouvoir le personnaliser.

La liste des extensions installées est disponible sur la page Spécial:Version

LDAP Authentication Plugin

Description

Cette extension permet d'authentifier un utilisateur via son compte Active Directory. Il permet également un filtrage de connexion en fonction des groupes d'appartenance dans l'AD.

La page officielle de cette extension se trouve à LDAP Authentication Plugin

Implémentation

Téléchargement de l'extension via la commande :

wget https://extdist.wmflabs.org/dist/extensions/LdapAuthentication-REL1_31-b19888c.tar.gz

Décompression du paquet de l'extension via dans le dossier des extension du MediaWiki :

tar -xzf LdapAuthentication-REL1_31-b19888c.tar.gz -C /dossier/installation/du/mediawiki/extensions

Paramétrage

Ajout des lignes suivantes dans le fichier LocalSettings.php :

## Beginning of LDAP Authentication/AD Configuration
require_once ("$IP/extensions/LdapAuthentication/LdapAuthentication.php");
$wgAuth = new LdapAuthenticationPlugin();

$wgLDAPDomainNames = array(
  'undomaine'
);

$wgLDAPServerNames = array(
  'undomaine' => 'AdServer.undomaine.com'
);

$wgLDAPSearchStrings = array(
 'undomaine' => 'USER-NAME@undomaine.com'
);

$wgLDAPEncryptionType = array(
  'undomaine' => 'clear'
);

$wgLDAPUseLocal = false;
$wgMinimalPasswordLength = 1;

$wgLDAPBaseDNs = array(
  'undomaine' => 'DC=undomaine,DC=com'
);

$wgLDAPSearchAttributes = array(
  'undomaine' => 'sAMAccountName'
);

$wgLDAPRetrievePrefs = array(
  'undomaine' => true
);

$wgLDAPPreferences = array(
  'undomaine' => array(
    'email' => 'mail',
    'realname' => 'displayName',
    'nickname' => 'samaccountname'
  )
);

$wgLDAPProxyAgent =  array(
  'undomaine' => 'CN=queryAdUser,OU=serviceAccounts,OU=Users,DC=undomaine,DC=com'
);

$wgLDAPProxyAgentPassword = array(
  'undomaine' => 'xxxxxxxxx' // <== à récupérer dans un gestionnaire de mots de passe
);

$wgLDAPDisableAutoCreate = array(
  'undomaine' => true
);

$wgLDAPGroupUseFullDN = array(
  'undomaine' => true
);

$wgLDAPLowerCaseUsername = array(
  'undomaine' => true
);

$wgLDAPGroupObjectclass = array(
  'undomaine' => 'group',
);

$wgLDAPGroupAttribute = array(
  'undomaine' => 'member',
);

$wgLDAPGroupNameAttribute = array(
  'undomaine' => 'cn',
);

$wgLDAPGroupsUseMemberOf = array(
  'undomaine' => false,
);

$wgLDAPUseLDAPGroups = array(
  'undomaine' => true,
);

$wgLDAPRequiredGroups = array(
  'undomaine' => array(
    'CN=MyGroup,OU=Utilisateurs,OU=Departement,OU=Habilitation,DC=undomaine,DC=com',
	)
);

$wgLDAPGroupsPrevail = array(
  'undomaine' => true,
);

$wgLDAPGroupSearchNestedGroups = array(
  'undomaine' => true,
);

$wgLDAPActiveDirectory = array(
  'undomaine' => true,
);

$wgLDAPAuthAttribute = array(
  'undomaine' => '!(userAccountControl:1.2.840.113556.1.4.803:=2)',
);

$wgHooks['SetUsernameAttributeFromLDAP'][] = 'SetUsernameAttribute';

function SetUsernameAttribute(&$LDAPUsername, $info) {
        $LDAPUsername = $info[0]['samaccountname'][0];
        return true;
}

//$wgLDAPDebug = 1; # <== à commenter une fois l'installation définitivement terminée
//$wgDebugLogGroups['ldap'] = '../logs/debug_ldap_wiki.log'; # <== à commenter une fois l'installation définitivement terminée
## End of LDAP Authentication/AD Configuration

Configuration des groupes dans l'Active Directory :

LabeledSectionTransclusion

Description

Cette extension permet d'étendre les fonctionnalités de l'extension native transclusion du mediawiki. Plus particulièrement, elle permet d'inclure dans des pages des sections d'autres pages.

Implémentation

Téléchargement de l'extension via la commande :

wget https://extdist.wmflabs.org/dist/extensions/LabeledSectionTransclusion-REL1_31-d6f59f5.tar.gz

Décompression du paquet de l'extension via dans le dossier des extension du MediaWiki :

tar -xzf LabeledSectionTransclusion-REL1_31-d6f59f5.tar.gz -C /dossier/installation/du/mediawiki/extensions

Utilisation

Définition des marques

Utilisez les marques <section> de la façon suivante :

<section begin=chapter1 />Ceci est une section à inclure<section end=chapter1 />

Inclusion des marques

Inclure la section précédemment définie comme ceci :

{{#lst:articleX|chapter1}}

Inclusion avec exclusion

Il est possible d'inclure toute la page en excluant uniquement ce qui a été précédemment défini comme ceci :

{{#lstx:articleX|chapter1}}

Plus d'informations sur Labeled Section Transclusion.

SubPageList

Présentation

Cette extension permet d'afficher de façon simple les sous-pages d'une page

Implémentation

Depuis la console serveur, faire :

cd /dossier/installation/du/mediawiki/
composer require mediawiki/sub-page-list "~1.5"

Vérifier dans le fichier LocalSettings.php que la variable suivante est définit comme ceci :

$GLOBALS['wgNamespacesWithSubpages'][NS_MAIN] = 1;

Dans le fichier de configuration de l'extension, modifier la variable suivante comme ceci :

vi extensions/SubPageList/SubPageList.settings.php
$GLOBALS['egSPLAutorefresh'] = true;

Plus d'informations sur la page officielle de l'extension SubPageList

Lockdown

Présentation

L'extension Lockdown permet de limiter l'accès à des espaces de noms (namespace) spécifiques et à des pages spéciales à un ensemble donné de groupes d'utilisateurs.

Implémentation

Se connecter au serveur et télécharger l'extension via la commande :

wget https://extdist.wmflabs.org/dist/extensions/Lockdown-REL1_31-7db0221.tar.gz

Puis, la déployer via :

tar -xzf Lockdown-REL1_31-7db0221.tar.gz -C /dossier/installation/du/mediawiki/extensions

Ensuite, l'activer en ajoutant la ligne suivante dans le fichier LocalSettings.php :

wfLoadExtension( 'Lockdown' );

Configuration

La configuration se fait dans le fichier LocalSettings.php au niveau de la gestion des droits d'accès.

VisualEditor

Présentation

L'extension VisualEditor permet de modifier des pages en tant que contenu riche. Il existe également un projet du même nom visant à créer un éditeur de texte enrichi fiable pour le Web et MediaWiki.

L’extension VisualEditor s’appuie sur un service d’analyseur Parsoid déporté basé sur nodeJS qui doit être installé et activé pour pouvoir en modifier les pages.

Plus d'information sur https://www.mediawiki.org/wiki/Extension:VisualEditor .

Implémentation

Installation de npm

yum install npm

Installation de l'extension parsoid

wget -O downloads/VisualEditor-REL1_32-e82e120.tar.gz https://extdist.wmflabs.org/dist/extensions/VisualEditor-REL1_32-e82e120.tar.gz
tar -xzf downloads/VisualEditor-REL1_32-e82e120.tar.gz -C /dossier/installation/du/mediawiki/extensions

Installation du service parsoid

  • Téléchargement et installation des sources
mkdir -p /local
cd /local/
git clone --recursive https://gerrit.wikimedia.org/r/mediawiki/services/parsoid/deploy
git clone https://gerrit.wikimedia.org/r/mediawiki/services/parsoid
cd parsoid
npm install
  • Dupliquer le fichier config.example.yaml
cp /local/parsoid/config.example.yaml /local/parsoid/config.yaml
  • Editer le fichier /local/parsoid/config.yaml afin que la variable uri soit la suivante :
uri: 'https://wiki.jordan-lenuff.com/api.php'
  • Editer le fichier /usr/lib/systemd/system/parsoid.service et y renseigner le contenu suivant :
[Unit]
Description=Mediawiki Parsoid web service on node.js
Documentation=http://www.mediawiki.org/wiki/Parsoid
Wants=local-fs.target network.target
After=local-fs.target network.target httpd.service

[Install]
WantedBy=multi-user.target

[Service]
Type=simple
User=parsoid
Group=parsoid
WorkingDirectory=/local/parsoid
ExecStart=/usr/bin/node /local/parsoid/bin/server.js
KillMode=process
Restart=on-success
PrivateTmp=true
StandardOutput=syslog
  • Création du user parsoid
groupadd -g 499 parsoid
useradd -u 499 -g 499 -c "Parsoid service user" -m -r parsoid
chown -R parsoid:parsoid /local/parsoid
  • Activation du service parsoid
systemctl daemon-reload
systemctl enable parsoid
systemctl start parsoid

Configuration

  • Configuration de l'extension VisualEditor dans le fichier LocalSettings.php
## VisualEditor configuration
// Enable by default for everybody
$wgDefaultUserOptions['visualeditor-enable'] = 1;

// Add non-default namespaces
$wgVisualEditorAvailableNamespaces = [
    NS_ANAMESPACE => true,
    NS_OTHERNAMESPACE => true,
    NS_ANOTHERNAMESPACEAGAIN => true,
];

# Disable popup message
$wgVisualEditorShowBetaWelcome = false;

// Optional: Set VisualEditor as the default for anonymous users
// otherwise they will have to switch to VE
// $wgDefaultUserOptions['visualeditor-editor'] = "visualeditor";

// Don't allow users to disable it
#$wgHiddenPrefs[] = 'visualeditor-enable';

// OPTIONAL: Enable VisualEditor's experimental code features
#$wgDefaultUserOptions['visualeditor-enable-experimental'] = 1;

$wgVirtualRestConfig['modules']['parsoid'] = array(
    // URL to the Parsoid instance
    // Use port 8142 if you use the Debian package
    'url' => 'http://localhost:8000',
    // Parsoid "domain", see below (optional)
    'domain' => 'localhost',
    // Parsoid "prefix", see below (optional)
    'prefix' => 'localhost'
);

// This feature requires a non-locking session store. The default session store will not work and
// will cause deadlocks (connection timeouts from Parsoid) when trying to use this feature. Only required for MediaWiki 1.26.x and earlier!
$wgSessionsInObjectCache = true;

// Forward users' Cookie: headers to Parsoid. Required for private wikis (login required to read).
// If the wiki is not private (i.e. $wgGroupPermissions['*']['read'] is true) this configuration
// variable will be ignored.
//
// WARNING: ONLY enable this on private wikis and ONLY IF you understand the SECURITY IMPLICATIONS
// of sending Cookie headers to Parsoid over HTTP. For security reasons, it is strongly recommended
// that $wgVirtualRestConfig['modules']['parsoid']['url'] be pointed to localhost if this setting is enabled.
$wgVirtualRestConfig['modules']['parsoid']['forwardCookies'] = true;

# End of VisualEditor configuration