Page MenuHomeSoftware Heritage

No OneTemporary

diff --git a/manifests/init.pp b/manifests/init.pp
index ca6580c..db6e0b9 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -1,41 +1,48 @@
# == Class: mediawiki
#
# Full description of class mediawiki here.
#
# === Parameters
#
# Document parameters here.
#
# [*sample_parameter*]
# Explanation of what this parameter affects and what it defaults to.
# e.g. "Specify one or more upstream ntp servers as an array."
#
# === Variables
#
# Here you should define a list of variables that this module would require.
#
# [*sample_variable*]
# Explanation of how this variable affects the funtion of this class and if
# it has a default. e.g. "The parameter enc_ntp_servers must be set by the
# External Node Classifier as a comma separated list of hostnames." (Note,
# global variables should be avoided in favor of class parameters as
# of Puppet 2.6.)
#
# === Examples
#
# class { 'mediawiki':
# servers => [ 'pool.ntp.org', 'ntp.local.company.com' ],
# }
#
# === Authors
#
# Author Name <author@domain.com>
#
# === Copyright
#
# Copyright 2016 Your name here, unless otherwise noted.
#
class mediawiki {
+ $packages = [
+ 'mediawiki',
+ 'mediawiki-extensions',
+ 'imagemagick',
+ ]
-
+ package {$packages:
+ ensure => latest,
+ }
}
diff --git a/manifests/instance.pp b/manifests/instance.pp
new file mode 100644
index 0000000..d990d83
--- /dev/null
+++ b/manifests/instance.pp
@@ -0,0 +1,128 @@
+define mediawiki::instance (
+ $vhost_name,
+ $vhost_aliases,
+ $vhost_ssl_protocol,
+ $vhost_ssl_honorcipherorder,
+ $vhost_ssl_cipher,
+ $vhost_ssl_cert,
+ $vhost_ssl_ca,
+ $vhost_ssl_key,
+ $vhost_ssl_hsts_header,
+ $vhost_docroot,
+ $vhost_fpm_root,
+ $vhost_basic_auth,
+ $db_user,
+ $db_basename,
+ $db_host,
+ $db_password,
+ $secret_key,
+ $upgrade_key
+ ){
+ $vhost_basic_auth_file = "/etc/apache2/mediawiki_${vhost_name}http_auth"
+ $config = "/etc/mediawiki/LocalSettings_${vhost_name}.php"
+
+
+ include ::mysql::client
+
+ ::mysql::db {$db_basename:
+ user => $db_user,
+ password => $db_password,
+ host => $db_host,
+ grant => ['ALL'],
+ }
+
+ include ::apache
+ include ::apache::mod::proxy
+ include ::profile::apache::mod_proxy_fcgi
+
+ ::apache::vhost {"${vhost_name}_non-ssl":
+ servername => $vhost_name,
+ serveraliases => $vhost_aliases,
+ port => '80',
+ docroot => $vhost_docroot,
+ redirect_status => 'permanent',
+ redirect_dest => "https://${vhost_name}/",
+ }
+
+ if $vhost_basic_auth {
+ file {$vhost_basic_auth_file:
+ ensure => present,
+ owner => 'root',
+ group => 'www-data',
+ mode => '0640',
+ content => $vhost_basic_auth,
+ }
+ $root_directory = [{
+ path => '/',
+ provider => 'location',
+ auth_type => 'Basic',
+ auth_name => 'Software Heritage development',
+ auth_user_file => $vhost_basic_auth_file,
+ auth_require => 'valid-user',
+ }]
+ }
+ else {
+ file {$vhost_basic_auth_file:
+ ensure => absent,
+ }
+ $root_directory = {}
+ }
+
+ ::apache::vhost {"${vhost_name}_ssl":
+ servername => $vhost_name,
+ serveraliases => $vhost_aliases,
+ port => '443',
+ ssl => true,
+ ssl_protocol => $vhost_ssl_protocol,
+ ssl_honorcipherorder => $vhost_ssl_honorcipherorder,
+ ssl_cipher => $vhost_ssl_cipher,
+ ssl_cert => $vhost_ssl_cert,
+ ssl_ca => $vhost_ssl_ca,
+ ssl_key => $vhost_ssl_key,
+ headers => [$vhost_ssl_hsts_header],
+ docroot => $vhost_docroot,
+ proxy_pass_match => [
+ { path => '^/(.*\.php(/.*)?)$',
+ url => "fcgi://${vhost_fpm_root}${vhost_docroot}/\$1",
+ },
+ ],
+ directories => [
+ $root_directory,
+ { path => "${vhost_docroot}/config",
+ provider => 'directory',
+ override => ['None'],
+ },
+ { path => "${vhost_docroot}/images",
+ provider => 'directory',
+ override => ['None'],
+ },
+ { path => "${vhost_docroot}/upload",
+ provider => 'directory',
+ override => ['None'],
+ },
+ ],
+ require => [
+ File[$vhost_ssl_cert],
+ File[$vhost_ssl_ca],
+ File[$vhost_ssl_key],
+ File[$config],
+ ],
+ }
+
+ # Uses variables:
+ # $vhost_name
+ # $db_basename
+ # $db_user
+ # $db_host
+ # $db_password
+ # $secret_key
+ # $upgrade_key
+ file {$config:
+ ensure => present,
+ owner => 'root',
+ group => 'www-data',
+ mode => '0640',
+ content => template('mediawiki/LocalSettings_vhost.php.erb'),
+ notify => Service['php5-fpm'],
+ }
+}
diff --git a/templates/LocalSettings.php.erb b/templates/LocalSettings.php.erb
new file mode 100644
index 0000000..4196791
--- /dev/null
+++ b/templates/LocalSettings.php.erb
@@ -0,0 +1,12 @@
+<?php
+# This file is managed by puppet. Local modifications will be overwritten.
+
+ switch ( $_SERVER["SERVER_NAME"] ) {
+ case "intranet.softwareheritage.org":
+ require_once "LocalSettings_intranet.softwareheritage.org.php";
+ break;
+
+ default:
+ echo "This wiki is not available. Check server configuration.";
+ exit( 0 );
+ }
diff --git a/templates/LocalSettings_vhost.php.erb b/templates/LocalSettings_vhost.php.erb
new file mode 100644
index 0000000..1bfad6e
--- /dev/null
+++ b/templates/LocalSettings_vhost.php.erb
@@ -0,0 +1,161 @@
+<?php
+# This file is managed by puppet. Local modifications will be overwritten.
+#
+# This file was automatically generated by the MediaWiki 1.19.20+dfsg-0+deb7u3
+# installer. If you make manual changes, please keep track in case you
+# need to recreate them later.
+#
+# See includes/DefaultSettings.php for all configurable settings
+# and their default values, but don't forget to make changes in _this_
+# file, not there.
+#
+# Further documentation for configuration settings may be found at:
+# http://www.mediawiki.org/wiki/Manual:Configuration_settings
+
+# Protect against web entry
+if ( !defined( 'MEDIAWIKI' ) ) {
+ exit;
+}
+
+## Uncomment this to disable output compression
+# $wgDisableOutputCompression = true;
+
+$wgSitename = "SoftwareHeritage";
+
+## The URL base path to the directory containing the wiki;
+## defaults for all runtime URL paths are based off of this.
+## For more information on customizing the URLs please see:
+## http://www.mediawiki.org/wiki/Manual:Short_URL
+$wgScriptPath = "";
+$wgScriptExtension = ".php";
+
+## The protocol and server name to use in fully-qualified URLs
+$wgServer = "https://<%= @vhost_name %>";
+
+## The relative URL path to the skins directory
+$wgStylePath = "$wgScriptPath/skins";
+
+## The relative URL path to the logo. Make sure you change this from the default,
+## or else you'll overwrite your logo when you upgrade!
+$wgLogo = "/images/b/b2/Swh-logo.png";
+$wgFavicon = "/images/b/b2/Swh-logo.png";
+
+## UPO means: this is also a user preference option
+
+$wgEnableEmail = true;
+$wgEnableUserEmail = true; # UPO
+
+$wgEmergencyContact = "info@softwareheritage.org";
+$wgPasswordSender = "info@softwareheritage.org";
+
+$wgEnotifUserTalk = true; # UPO
+$wgEnotifWatchlist = true; # UPO
+$wgEmailAuthentication = true;
+
+## Database settings
+$wgDBtype = "mysql";
+$wgDBserver = "<%= @db_host %>";
+$wgDBname = "<%= @db_basename %>";
+$wgDBuser = "<%= @db_user %>";
+$wgDBpassword = "<%= @db_password %>";
+
+# MySQL specific settings
+$wgDBprefix = "";
+
+# MySQL table options to use during installation or update
+$wgDBTableOptions = "ENGINE=InnoDB, DEFAULT CHARSET=binary";
+
+# Experimental charset support for MySQL 5.0.
+$wgDBmysql5 = false;
+
+## Shared memory settings
+$wgMainCacheType = CACHE_NONE;
+$wgMemCachedServers = array();
+
+## To enable image uploads, make sure the 'images' directory
+## is writable, then set this to true:
+$wgEnableUploads = true;
+$wgUseImageMagick = true;
+$wgImageMagickConvertCommand = "/usr/bin/convert";
+
+# InstantCommons allows wiki to use images from http://commons.wikimedia.org
+$wgUseInstantCommons = false;
+
+## If you use ImageMagick (or any other shell command) on a
+## Linux server, this will need to be set to the name of an
+## available UTF-8 locale
+$wgShellLocale = "en_US.utf8";
+
+## If you want to use image uploads under safe mode,
+## create the directories images/archive, images/thumb and
+## images/temp, and make them all writable. Then uncomment
+## this, if it's not already uncommented:
+#$wgHashedUploadDirectory = false;
+
+## Set $wgCacheDirectory to a writable directory on the web server
+## to make your wiki go slightly faster. The directory should not
+## be publically accessible from the web.
+#$wgCacheDirectory = "$IP/cache";
+
+# Site language code, should be one of the list in ./languages/Names.php
+$wgLanguageCode = "en";
+
+$wgSecretKey = "<%= @secret_key %>";
+
+# Site upgrade key. Must be set to a string (default provided) to turn on the
+# web installer while LocalSettings.php is in place
+$wgUpgradeKey = "<%= @upgrade_key %>";
+
+## Default skin: you can change the default skin. Use the internal symbolic
+## names, ie 'standard', 'nostalgia', 'cologneblue', 'monobook', 'vector':
+$wgDefaultSkin = "vector";
+
+## For attaching licensing metadata to pages, and displaying an
+## appropriate copyright notice / icon. GNU Free Documentation
+## License and Creative Commons licenses are supported so far.
+$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright
+$wgRightsUrl = "";
+$wgRightsText = "";
+$wgRightsIcon = "";
+
+# Path to the GNU diff3 utility. Used for conflict resolution.
+$wgDiff3 = "/usr/bin/diff3";
+
+# debian-specific include:
+if (is_file("/etc/mediawiki-extensions/extensions.php")) {
+ include("/etc/mediawiki-extensions/extensions.php");
+}
+
+# Query string length limit for ResourceLoader. You should only set this if
+# your web server has a query string length limit (then set it to that limit),
+# or if you have suhosin.get.max_value_length set in php.ini (then set it to
+# that value)
+$wgResourceLoaderMaxQueryLength = -1;
+
+
+
+# End of automatically generated settings.
+# Add more configuration options below.
+
+$wgGroupPermissions['*']['edit'] = false;
+
+$wgFileExtensions[] = 'pdf';
+
+$wgNamespacesToBeSearchedDefault = array(
+ NS_MAIN => true,
+ NS_TALK => true,
+ NS_USER => true,
+ NS_USER_TALK => true,
+ NS_PROJECT => true,
+ NS_PROJECT_TALK => true,
+ NS_FILE => true,
+ NS_FILE_TALK => true,
+ NS_MEDIAWIKI => true,
+ NS_MEDIAWIKI_TALK => true,
+ NS_TEMPLATE => true,
+ NS_TEMPLATE_TALK => true,
+ NS_HELP => true,
+ NS_HELP_TALK => true,
+ NS_CATEGORY => true,
+ NS_CATEGORY_TALK => true
+);

File Metadata

Mime Type
text/x-diff
Expires
Thu, Sep 18, 4:39 AM (1 d, 21 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3212695

Event Timeline