Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
slapos
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Jean-Paul Smets
slapos
Commits
c3454564
Commit
c3454564
authored
Jul 12, 2011
by
Gabriel Monnerat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
merge master into branch apache
parent
d30385e4
Changes
22
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
310 additions
and
74 deletions
+310
-74
CHANGES.txt
CHANGES.txt
+8
-2
component/logrotate/buildout.cfg
component/logrotate/buildout.cfg
+10
-0
component/logrotate/logrotate-3.7.9-O_CLOEXEC.optional.patch
component/logrotate/logrotate-3.7.9-O_CLOEXEC.optional.patch
+16
-0
component/slapos/buildout.cfg
component/slapos/buildout.cfg
+6
-5
component/w3m/buildout.cfg
component/w3m/buildout.cfg
+1
-1
setup.py
setup.py
+1
-1
slapos/recipe/slaprunner/__init__.py
slapos/recipe/slaprunner/__init__.py
+4
-2
slapos/recipe/slaprunner/execute.py
slapos/recipe/slaprunner/execute.py
+3
-1
software/erp5/software.cfg
software/erp5/software.cfg
+2
-1
software/kumofs/software.cfg
software/kumofs/software.cfg
+14
-1
software/mariadb/software.cfg
software/mariadb/software.cfg
+2
-1
software/memcached/software.cfg
software/memcached/software.cfg
+2
-1
software/mysql-5.1/software.cfg
software/mysql-5.1/software.cfg
+2
-1
software/phpmyadmin/software.cfg
software/phpmyadmin/software.cfg
+6
-52
software/slaprunner/instance.cfg
software/slaprunner/instance.cfg
+1
-0
software/slaprunner/software.cfg
software/slaprunner/software.cfg
+7
-4
software/wordpress/instance.cfg
software/wordpress/instance.cfg
+17
-0
software/wordpress/software.cfg
software/wordpress/software.cfg
+63
-0
software/wordpress/wp-config.php.in
software/wordpress/wp-config.php.in
+90
-0
stack/erp5.cfg
stack/erp5.cfg
+1
-1
stack/lamp.cfg
stack/lamp.cfg
+48
-0
stack/shacache-client.cfg
stack/shacache-client.cfg
+6
-0
No files found.
CHANGES.txt
View file @
c3454564
0.12 (unreleased)
0.13 (unreleased)
================
* No change yet.
0.12 (2011-07-11)
=================
* No changes yet.
* Fix slaprunner, phpmyadmin software releases, added
wordpress software release. [Cedric de Saint Martin]
0.11 (2011-07-07)
=================
...
...
component/logrotate/buildout.cfg
View file @
c3454564
...
...
@@ -3,10 +3,20 @@ extends =
../popt/buildout.cfg
parts = logrotate
[logrotate-3.7.9-O_CLOEXEC.optional.patch]
recipe = hexagonit.recipe.download
url = ${:_profile_base_location_}/${:filename}
download-only = true
md5sum = 6beac248c978b767d4bccc1b7eebe6bd
filename = ${:_buildout_section_name_}
[logrotate]
recipe = hexagonit.recipe.cmmi
url = https://fedorahosted.org/releases/l/o/logrotate/logrotate-3.7.9.tar.gz
md5sum = eeba9dbca62a9210236f4b83195e4ea5
patch-options = -p1
patches =
${logrotate-3.7.9-O_CLOEXEC.optional.patch:location}/${logrotate-3.7.9-O_CLOEXEC.optional.patch:filename}
configure-command = true
make-options = PREFIX=${buildout:parts-directory}/${:_buildout_section_name_}
environment =
...
...
component/logrotate/logrotate-3.7.9-O_CLOEXEC.optional.patch
0 → 100644
View file @
c3454564
diff --git a/config.c b/config.c
index e6d5d1d..dd004a9 100644
--- a/config.c
+++ b/config.c
@@ -519,7 +519,11 @@
static int readConfigFile(const char *configFile, struct logInfo *defConfig)
length arrays -- of course, if we aren't run setuid it doesn't
matter much */
+#ifdef O_CLOEXEC
fd = open(configFile, O_RDONLY | O_CLOEXEC);
+#else
+ fd = open(configFile, O_RDONLY);
+#endif
if (fd < 0) {
message(MESS_ERROR, "failed to open config file %s: %s\n",
configFile, strerror(errno));
component/slapos/buildout.cfg
View file @
c3454564
[buildout]
extends =
../../stack/shacache-client.cfg
../lxml-python/buildout.cfg
../python-2.7/buildout.cfg
...
...
@@ -38,14 +39,14 @@ lxml = 2.3
meld3 = 0.6.7
netaddr = 0.7.5
setuptools = 0.6c12dev-r88846
slapos.core = 0.
8
slapos.core = 0.
9
slapos.libnetworkcache = 0.2
xml-marshaller = 0.9.7
z3c.recipe.scripts = 1.0.1
zc.recipe.egg = 1.3.2
# Required by:
# slapos.core==0.
8
# slapos.core==0.
9
Flask = 0.7.2
# Required by:
...
...
@@ -53,13 +54,13 @@ Flask = 0.7.2
hexagonit.recipe.download = 1.5.0
# Required by:
# slapos.core==0.
8
# slapos.core==0.
9
netifaces = 0.5
# Required by:
# slapos.core==0.
8
# slapos.core==0.
9
supervisor = 3.0a10
# Required by:
# slapos.core==0.
8
# slapos.core==0.
9
zope.interface = 3.6.4
component/w3m/buildout.cfg
View file @
c3454564
...
...
@@ -53,4 +53,4 @@ environment =
[versions]
# Use SlapOS patched zc.buildout
zc.buildout = 1.5.3-dev-SlapOS-00
4
zc.buildout = 1.5.3-dev-SlapOS-00
5
setup.py
View file @
c3454564
...
...
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
import
glob
import
os
version
=
'0.1
2
dev'
version
=
'0.1
3
dev'
name
=
'slapos.cookbook'
long_description
=
open
(
"README.txt"
).
read
()
+
"
\
n
"
+
\
open
(
"CHANGES.txt"
).
read
()
+
"
\
n
"
...
...
slapos/recipe/slaprunner/__init__.py
View file @
c3454564
...
...
@@ -68,9 +68,11 @@ class Recipe(BaseSlapRecipe):
self
.
substituteTemplate
(
pkg_resources
.
resource_filename
(
__name__
,
'template/slapos.cfg.in'
),
configuration
))
self
.
path_list
.
append
(
config_file
)
execute_arguments
=
dict
(
path
=
os
.
environ
[
'PATH'
],
launch_args
=
[
self
.
options
[
'slaprunner'
].
strip
(),
config_file
])
self
.
path_list
.
extend
(
zc
.
buildout
.
easy_install
.
scripts
([(
'slaprunner'
,
'slapos.recipe.slaprunner.execute'
,
'execute'
)],
self
.
ws
,
sys
.
executable
,
self
.
wrapper_directory
,
arguments
=
[
self
.
options
[
'slaprunner'
].
strip
(),
config_file
]))
self
.
wrapper_directory
,
arguments
=
execute_arguments
))
self
.
setConnectionDict
(
dict
(
url
=
'http://[%s]:%s'
%
(
ipv6
,
runner_port
)))
return
self
.
path_list
slapos/recipe/slaprunner/execute.py
View file @
c3454564
...
...
@@ -3,4 +3,6 @@ import os
def
execute
(
args
):
"""Portable execution with process replacement"""
os
.
execv
(
args
[
0
],
args
)
if
args
.
get
(
"path"
,
None
):
os
.
environ
[
'PATH'
]
=
args
[
"path"
]
os
.
execv
(
args
[
"launch_args"
][
0
],
args
[
"launch_args"
])
software/erp5/software.cfg
View file @
c3454564
[buildout]
extends =
../../stack/shacache-client.cfg
../../stack/erp5.cfg
versions = versions
...
...
@@ -140,7 +141,7 @@ netifaces = 0.4
python-magic = 0.4.0.1
# Required by:
# zc.buildout==1.5.3-dev-SlapOS-00
4
# zc.buildout==1.5.3-dev-SlapOS-00
5
setuptools = 0.6c12dev-r88846
# Required by:
...
...
software/kumofs/software.cfg
View file @
c3454564
...
...
@@ -15,6 +15,19 @@ extends =
../../component/stunnel/buildout.cfg
../../component/rdiff-backup/buildout.cfg
../../component/lxml-python/buildout.cfg
../../stack/shacache-client.cfg
# Use only quite well working sites.
allow-hosts =
*.nexedi.org
*.python.org
*.sourceforge.net
dist.repoze.org
effbot.org
github.com
peak.telecommunity.com
psutil.googlecode.com
www.dabeaz.com
# Use only quite well working sites.
allow-hosts =
...
...
@@ -86,4 +99,4 @@ xml-marshaller = 0.9.7
setuptools = 0.6c12dev-r88795
# Use SlapOS patched zc.buildout
zc.buildout = 1.5.3-dev-SlapOS-00
1
zc.buildout = 1.5.3-dev-SlapOS-00
5
software/mariadb/software.cfg
View file @
c3454564
...
...
@@ -17,6 +17,7 @@ extends =
../../component/xtrabackup/buildout.cfg
../../component/rdiff-backup/buildout.cfg
../../component/lxml-python/buildout.cfg
../../stack/shacache-client.cfg
# Use only quite well working sites.
allow-hosts =
...
...
@@ -88,4 +89,4 @@ hexagonit.recipe.download = 1.5.0
plone.recipe.command = 1.1
# Use SlapOS patched zc.buildout
zc.buildout = 1.5.3-dev-SlapOS-00
1
zc.buildout = 1.5.3-dev-SlapOS-00
5
software/memcached/software.cfg
View file @
c3454564
...
...
@@ -14,6 +14,7 @@ extends =
../../component/stunnel/buildout.cfg
../../component/rdiff-backup/buildout.cfg
../../component/lxml-python/buildout.cfg
../../stack/shacache-client.cfg
# Use only quite well working sites.
allow-hosts =
...
...
@@ -85,4 +86,4 @@ hexagonit.recipe.download = 1.5.0
plone.recipe.command = 1.1
# Use SlapOS patched zc.buildout
zc.buildout = 1.5.3-dev-SlapOS-00
1
zc.buildout = 1.5.3-dev-SlapOS-00
5
software/mysql-5.1/software.cfg
View file @
c3454564
...
...
@@ -17,6 +17,7 @@ extends =
../../component/xtrabackup/buildout.cfg
../../component/rdiff-backup/buildout.cfg
../../component/lxml-python/buildout.cfg
../../stack/shacache-client.cfg
# Use only quite well working sites.
allow-hosts =
...
...
@@ -89,4 +90,4 @@ hexagonit.recipe.download = 1.5.0
plone.recipe.command = 1.1
# Use SlapOS patched zc.buildout
zc.buildout = 1.5.3-dev-SlapOS-00
1
zc.buildout = 1.5.3-dev-SlapOS-00
5
software/phpmyadmin/software.cfg
View file @
c3454564
[buildout]
find-links +=
http://www.nexedi.org/static/packages/source/slapos.buildout/
# Use only quite well working sites.
allow-hosts =
*.nexedi.org
*.python.org
*.sourceforge.net
dist.repoze.org
effbot.org
github.com
peak.telecommunity.com
psutil.googlecode.com
www.dabeaz.com
versions = versions
parts =
...
...
@@ -24,20 +9,8 @@ parts =
instance-recipe-egg
extends =
../../component/mariadb/buildout.cfg
../../component/apache/buildout.cfg
../../component/apache-php/buildout.cfg
../../component/dcron/buildout.cfg
../../component/git/buildout.cfg
../../component/glib/buildout.cfg
../../component/logrotate/buildout.cfg
../../component/python-2.7/buildout.cfg
../../component/perl/buildout.cfg
../../component/sqlite3/buildout.cfg
../../component/xtrabackup/buildout.cfg
../../component/rdiff-backup/buildout.cfg
../../component/lxml-python/buildout.cfg
../../component/zlib/buildout.cfg
../../stack/lamp.cfg
../../stack/shacache-client.cfg
[template]
# Default template for the instance.
...
...
@@ -51,13 +24,11 @@ mode = 0644
recipe = hexagonit.recipe.download
url = http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.3.10/phpMyAdmin-3.3.10-all-languages.tar.bz2?r=http%3A%2F%2Fwww.phpmyadmin.net%2Fhome_page%2Fdownloads.php&ts=1300959842&use_mirror=sunet
#md5sum = Student may put here md5sum of this file, this is good idea
#If provided tarball does not containt top directory this option shall be changed o false
strip-top-level-dir = true
[application-template]
recipe = slapos.recipe.download
url = ${:_profile_base_location_}/phpmyadmin.inc.php.in
#md5sum = Student may put here md5sum of this file, this is good idea
md5sum = caab45c34c75661c214f4628ff545bb4
download-only = True
filename = template.in
mode = 0644
...
...
@@ -66,11 +37,6 @@ location = ${buildout:parts-directory}/${:_buildout_section_name_}
[application-configuration]
location = config.inc.php
[eggs]
recipe = zc.recipe.egg
eggs =
${lxml-python:egg}
[instance-recipe]
egg = slapos.cookbook
module = osoeslaptraining.simple
...
...
@@ -80,22 +46,10 @@ recipe = zc.recipe.egg
python = python2.7
eggs = ${instance-recipe:egg}
[downloadcache-workaround]
# workaround irritating problem of hexagonit.recipe.cmmi which automatically
# creates download cache, which in turn switches builout to "semi-offline" mode
recipe = plone.recipe.command
# in hexagonit.recipe.cmmi if there is no ${buildout:download-cache} set it resolves
# to ${buildout:directory}/downloads but this variable is available late, that's
# why it is hardcoded only for required case
download-cache = ${buildout:directory}/downloads
command = [ -d ${:download-cache} ] && rm -fr ${:download-cache}/* || exit 0
update-command = ${:command}
stop-on-error = True
[versions]
slapos.cookbook = 0.1
0
slapos.cookbook = 0.1
2
# Required by slapos.cookbook==0.1
0
# Required by slapos.cookbook==0.1
2
slapos.core = 0.8
collective.recipe.template = 1.8
netaddr = 0.7.5
...
...
@@ -107,4 +61,4 @@ hexagonit.recipe.download = 1.5.0
plone.recipe.command = 1.1
# Use SlapOS patched zc.buildout
zc.buildout = 1.5.3-dev-SlapOS-004
\ No newline at end of file
zc.buildout = 1.5.3-dev-SlapOS-005
software/slaprunner/instance.cfg
View file @
c3454564
...
...
@@ -12,3 +12,4 @@ slapgrid_sr = ${buildout:directory}/bin/slapgrid-sr
slapgrid_cp = ${buildout:directory}/bin/slapgrid-cp
slapproxy = ${buildout:directory}/bin/slapproxy
supervisor = ${buildout:directory}/bin/slapgrid-supervisorctl
software/slaprunner/software.cfg
View file @
c3454564
[buildout]
extends =
../../stack/flask.cfg
../../stack/shacache-client.cfg
parts =
template
...
...
@@ -26,17 +27,18 @@ recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance.cfg
output = ${buildout:directory}/template.cfg
mode = 0644
md5sum =
04b17b8665eb4e11ce3a4661ad98e5e3
md5sum =
e2cbd8fe7b8e4c7e92a19cd775de0aa6
[eggs]
eggs +=
slapos.libnetworkcache
slapos.toolbox
slapos.core
[versions]
slapos.cookbook = 0.1
0
slapos.cookbook = 0.1
2
# Required by slapos.cookbook==0.1
0
# Required by slapos.cookbook==0.1
2
slapos.core = 0.8
collective.recipe.template = 1.8
netaddr = 0.7.5
...
...
@@ -46,6 +48,7 @@ setuptools = 0.6c12dev-r88795
hexagonit.recipe.cmmi = 1.5.0
hexagonit.recipe.download = 1.5.0
plone.recipe.command = 1.1
slapos.libnetworkcache = 0.2
# Use SlapOS patched zc.buildout
zc.buildout = 1.5.3-dev-SlapOS-004
\ No newline at end of file
zc.buildout = 1.5.3-dev-SlapOS-005
software/wordpress/instance.cfg
0 → 100644
View file @
c3454564
[buildout]
eggs-directory = ${buildout:eggs-directory}
develop-eggs-directory = ${buildout:develop-eggs-directory}
parts = instance
[instance]
recipe = ${instance-recipe:egg}:${instance-recipe:module}
source = ${application:location}
template = ${application-template:location}/${application-template:filename}
configuration = ${application-configuration:location}
httpd_binary = ${apache:location}/bin/httpd
mysql_binary = ${mariadb:location}/bin/mysql
mysql_install_binary = ${mariadb:location}/bin/mysql_install_db
mysql_upgrade_binary = ${mariadb:location}/bin/mysql_upgrade
mysqld_binary = ${mariadb:location}/libexec/mysqld
software/wordpress/software.cfg
0 → 100644
View file @
c3454564
[buildout]
versions = versions
parts =
template
apache-php
mariadb
eggs
instance-recipe-egg
extends =
../../stack/lamp.cfg
../../stack/shacache-client.cfg
[application]
url = http://wordpress.org/latest.tar.gz
#md5sum = Student may put here md5sum of this file, this is good idea
[application-template]
recipe = slapos.recipe.download
url = ${:_profile_base_location_}/wp-config.php.in
#md5sum = ${application-configuration:md5sum}
download-only = True
filename = template.in
mode = 0644
location = ${buildout:parts-directory}/${:_buildout_section_name_}
[application-configuration]
location = wp-config.php
[instance-recipe]
egg = slapos.cookbook
module = osoeslaptraining.request
[instance-recipe-egg]
recipe = zc.recipe.egg
python = python2.7
eggs = ${instance-recipe:egg}
[template]
# Default template for the instance.
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance.cfg
md5sum = efdb8509f40c86b1b73924fc1ce92f13
output = ${buildout:directory}/template.cfg
mode = 0644
[versions]
slapos.cookbook = 0.12
# Required by slapos.cookbook==0.12
slapos.core = 0.8
collective.recipe.template = 1.8
netaddr = 0.7.5
xml-marshaller = 0.9.7
setuptools = 0.6c12dev-r88795
hexagonit.recipe.cmmi = 1.5.0
hexagonit.recipe.download = 1.5.0
plone.recipe.command = 1.1
# Use SlapOS patched zc.buildout
zc.buildout = 1.5.3-dev-SlapOS-005
software/wordpress/wp-config.php.in
0 → 100644
View file @
c3454564
<?php
/**
* The base configurations of the WordPress.
*
* This file has the following configurations: MySQL settings, Table Prefix,
* Secret Keys, WordPress Language, and ABSPATH. You can find more information
* by visiting {@link http://codex.wordpress.org/Editing_wp-config.php Editing
* wp-config.php} Codex page. You can get the MySQL settings from your web host.
*
* This file is used by the wp-config.php creation script during the
* installation. You don't have to use the web site, you can just copy this file
* to "wp-config.php" and fill in the values.
*
* @package WordPress
*/
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define
(
'DB_NAME'
,
'%(mysql_database)s'
);
/** MySQL database username */
define
(
'DB_USER'
,
'%(mysql_user)s'
);
/** MySQL database password */
define
(
'DB_PASSWORD'
,
'%(mysql_password)s'
);
/** MySQL hostname */
define
(
'DB_HOST'
,
'%(mysql_host)s'
);
/** Database Charset to use in creating database tables. */
define
(
'DB_CHARSET'
,
'utf8'
);
/** The Database Collate type. Don't change this if in doubt. */
define
(
'DB_COLLATE'
,
''
);
/**#@+
* Authentication Unique Keys and Salts.
*
* Change these to different unique phrases!
* You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
* You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
*
* @since 2.6.0
*/
define
(
'AUTH_KEY'
,
'put your unique phrase here'
);
define
(
'SECURE_AUTH_KEY'
,
'put your unique phrase here'
);
define
(
'LOGGED_IN_KEY'
,
'put your unique phrase here'
);
define
(
'NONCE_KEY'
,
'put your unique phrase here'
);
define
(
'AUTH_SALT'
,
'put your unique phrase here'
);
define
(
'SECURE_AUTH_SALT'
,
'put your unique phrase here'
);
define
(
'LOGGED_IN_SALT'
,
'put your unique phrase here'
);
define
(
'NONCE_SALT'
,
'put your unique phrase here'
);
/**#@-*/
/**
* WordPress Database Table prefix.
*
* You can have multiple installations in one database if you give each a unique
* prefix. Only numbers, letters, and underscores please!
*/
$table_prefix
=
'wp_'
;
/**
* WordPress Localized Language, defaults to English.
*
* Change this to localize WordPress. A corresponding MO file for the chosen
* language must be installed to wp-content/languages. For example, install
* de_DE.mo to wp-content/languages and set WPLANG to 'de_DE' to enable German
* language support.
*/
define
(
'WPLANG'
,
''
);
/**
* For developers: WordPress debugging mode.
*
* Change this to true to enable the display of notices during development.
* It is strongly recommended that plugin and theme developers use WP_DEBUG
* in their development environments.
*/
define
(
'WP_DEBUG'
,
false
);
/* That's all, stop editing! Happy blogging. */
/** Absolute path to the WordPress directory. */
if
(
!
defined
(
'ABSPATH'
)
)
define
(
'ABSPATH'
,
dirname
(
__FILE__
)
.
'/'
);
/** Sets up WordPress vars and included files. */
require_once
(
ABSPATH
.
'wp-settings.php'
);
stack/erp5.cfg
View file @
c3454564
...
...
@@ -393,7 +393,7 @@ scripts =
[versions]
# Use SlapOS patched zc.buildout
zc.buildout = 1.5.3-dev-SlapOS-00
4
zc.buildout = 1.5.3-dev-SlapOS-00
5
# pin Acquisition and Products.DCWorkflow to Nexedi flavour of eggs
Acquisition = 2.13.7nxd001
...
...
stack/lamp.cfg
0 → 100644
View file @
c3454564
[buildout]
find-links +=
http://www.nexedi.org/static/packages/source/slapos.buildout/
# Use only quite well working sites.
allow-hosts =
*.nexedi.org
*.python.org
*.sourceforge.net
dist.repoze.org
effbot.org
github.com
peak.telecommunity.com
psutil.googlecode.com
www.dabeaz.com
parts =
template
apache-php
mariadb
eggs
instance-recipe-egg
extends =
../component/mariadb/buildout.cfg
../component/apache/buildout.cfg
../component/apache-php/buildout.cfg
../component/dcron/buildout.cfg
../component/git/buildout.cfg
../component/glib/buildout.cfg
../component/logrotate/buildout.cfg
../component/python-2.7/buildout.cfg
../component/perl/buildout.cfg
../component/sqlite3/buildout.cfg
../component/xtrabackup/buildout.cfg
../component/rdiff-backup/buildout.cfg
../component/lxml-python/buildout.cfg
../component/zlib/buildout.cfg
[application]
recipe = hexagonit.recipe.download
#If provided tarball does not containt top directory this option shall be changed to false
strip-top-level-dir = true
[eggs]
recipe = zc.recipe.egg
eggs =
${lxml-python:egg}
stack/shacache-client.cfg
0 → 100644
View file @
c3454564
[buildout]
networkcache-section = networkcache
[networkcache]
download-cache-url = http://www.shacache.org/shacache
download-dir-url = http://www.shacache.org/shadir
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment