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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Léo-Paul Géneau
slapos
Commits
1acca245
Commit
1acca245
authored
Feb 08, 2018
by
Julien Muchembled
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove obsolete/unused recipes
parent
ab2ca104
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
0 additions
and
656 deletions
+0
-656
setup.py
setup.py
+0
-4
slapos/recipe/apache_zope_backend/__init__.py
slapos/recipe/apache_zope_backend/__init__.py
+0
-100
slapos/recipe/apache_zope_backend/apache.py
slapos/recipe/apache_zope_backend/apache.py
+0
-22
slapos/recipe/apache_zope_backend/template/apache.zope.conf.in
...s/recipe/apache_zope_backend/template/apache.zope.conf.in
+0
-65
slapos/recipe/apache_zope_backend/template/snippet.ssl.ca.in
slapos/recipe/apache_zope_backend/template/snippet.ssl.ca.in
+0
-4
slapos/recipe/apache_zope_backend/template/snippet.ssl.in
slapos/recipe/apache_zope_backend/template/snippet.ssl.in
+0
-9
slapos/recipe/apache_zope_backend/template/vhost.in
slapos/recipe/apache_zope_backend/template/vhost.in
+0
-5
slapos/recipe/generic_zope/__init__.py
slapos/recipe/generic_zope/__init__.py
+0
-145
slapos/recipe/generic_zope/template/site.zcml
slapos/recipe/generic_zope/template/site.zcml
+0
-26
slapos/recipe/generic_zope/template/zope.conf.in
slapos/recipe/generic_zope/template/zope.conf.in
+0
-81
slapos/recipe/generic_zope/template/zope.conf.promise.in
slapos/recipe/generic_zope/template/zope.conf.promise.in
+0
-5
slapos/recipe/generic_zope_zeo_client/__init__.py
slapos/recipe/generic_zope_zeo_client/__init__.py
+0
-122
slapos/recipe/generic_zope_zeo_client/template/site.zcml
slapos/recipe/generic_zope_zeo_client/template/site.zcml
+0
-26
slapos/recipe/waitfor.py
slapos/recipe/waitfor.py
+0
-42
No files found.
setup.py
View file @
1acca245
...
@@ -72,7 +72,6 @@ setup(name=name,
...
@@ -72,7 +72,6 @@ setup(name=name,
'zc.buildout'
:
[
'zc.buildout'
:
[
'addresiliency = slapos.recipe.addresiliency:Recipe'
,
'addresiliency = slapos.recipe.addresiliency:Recipe'
,
'accords = slapos.recipe.accords:Recipe'
,
'accords = slapos.recipe.accords:Recipe'
,
'apache.zope.backend = slapos.recipe.apache_zope_backend:Recipe'
,
'apacheperl = slapos.recipe.apacheperl:Recipe'
,
'apacheperl = slapos.recipe.apacheperl:Recipe'
,
'apachephp = slapos.recipe.apachephp:Recipe'
,
'apachephp = slapos.recipe.apachephp:Recipe'
,
'apachephpconfigure = slapos.recipe.apachephpconfigure:Recipe'
,
'apachephpconfigure = slapos.recipe.apachephpconfigure:Recipe'
,
...
@@ -118,8 +117,6 @@ setup(name=name,
...
@@ -118,8 +117,6 @@ setup(name=name,
'generic.mysql.wrap_update_mysql = slapos.recipe.generic_mysql:WrapUpdateMySQL'
,
'generic.mysql.wrap_update_mysql = slapos.recipe.generic_mysql:WrapUpdateMySQL'
,
'generic.mysql.wrap_mysqld = slapos.recipe.generic_mysql:WrapMySQLd'
,
'generic.mysql.wrap_mysqld = slapos.recipe.generic_mysql:WrapMySQLd'
,
'generic.varnish = slapos.recipe.generic_varnish:Recipe'
,
'generic.varnish = slapos.recipe.generic_varnish:Recipe'
,
'generic.zope = slapos.recipe.generic_zope:Recipe'
,
'generic.zope.zeo.client = slapos.recipe.generic_zope_zeo_client:Recipe'
,
'gitinit = slapos.recipe.gitinit:Recipe'
,
'gitinit = slapos.recipe.gitinit:Recipe'
,
'haproxy = slapos.recipe.haproxy:Recipe'
,
'haproxy = slapos.recipe.haproxy:Recipe'
,
'ipv4toipv6 = slapos.recipe.6tunnel:FourToSix'
,
'ipv4toipv6 = slapos.recipe.6tunnel:FourToSix'
,
...
@@ -196,7 +193,6 @@ setup(name=name,
...
@@ -196,7 +193,6 @@ setup(name=name,
'urlparse = slapos.recipe._urlparse:Recipe'
,
'urlparse = slapos.recipe._urlparse:Recipe'
,
'uuid = slapos.recipe._uuid:Recipe'
,
'uuid = slapos.recipe._uuid:Recipe'
,
'userinfo = slapos.recipe.userinfo:Recipe'
,
'userinfo = slapos.recipe.userinfo:Recipe'
,
'waitfor = slapos.recipe.waitfor:Recipe'
,
'webchecker = slapos.recipe.web_checker:Recipe'
,
'webchecker = slapos.recipe.web_checker:Recipe'
,
'wrapper = slapos.recipe.wrapper:Recipe'
,
'wrapper = slapos.recipe.wrapper:Recipe'
,
'xvfb = slapos.recipe.xvfb:Recipe'
,
'xvfb = slapos.recipe.xvfb:Recipe'
,
...
...
slapos/recipe/apache_zope_backend/__init__.py
deleted
100644 → 0
View file @
ab2ca104
##############################################################################
#
# Copyright (c) 2011 Vifib SARL and Contributors. All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsibility of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# guarantees and support are strongly adviced to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 3
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
from
slapos.recipe.librecipe
import
GenericBaseRecipe
import
pkg_resources
class
Recipe
(
GenericBaseRecipe
):
def
install
(
self
):
try
:
backend_list
=
self
.
options
[
'backend-list'
]
except
KeyError
:
backend_list
=
[(
self
.
options
[
'port'
],
self
.
options
[
'backend'
])]
scheme
=
self
.
options
[
'scheme'
]
if
scheme
==
'http'
:
required_path_list
=
[]
ssl_enable
=
ssl_snippet
=
''
elif
scheme
==
'https'
:
key
=
self
.
options
[
'key-file'
]
certificate
=
self
.
options
[
'cert-file'
]
required_path_list
=
[
key
,
certificate
]
ssl_snippet
=
self
.
substituteTemplate
(
self
.
getTemplateFilename
(
'snippet.ssl.in'
),
{
'key'
:
key
,
'certificate'
:
certificate
,
'ssl_session_cache'
:
self
.
options
[
'ssl-session-cache'
],
})
if
'ssl-authentication'
in
self
.
options
and
self
.
optionIsTrue
(
'ssl-authentication'
):
ssl_snippet
+=
self
.
substituteTemplate
(
self
.
getTemplateFilename
(
'snippet.ssl.ca.in'
),
{
'ca_certificate'
:
self
.
options
[
'ssl-authentication-certificate'
],
'ca_crl'
:
self
.
options
[
'ssl-authentication-crl'
],
})
ssl_enable
=
'SSLEngine on'
else
:
raise
ValueError
(
'Unsupported scheme %s'
%
scheme
)
ip_list
=
self
.
options
[
'ip'
]
if
isinstance
(
ip_list
,
basestring
):
ip_list
=
[
ip_list
]
backend_path
=
self
.
options
.
get
(
'backend-path'
,
'/'
)
vhost_template_name
=
self
.
getTemplateFilename
(
'vhost.in'
)
apache_config_file
=
self
.
createFile
(
self
.
options
[
'configuration-file'
],
self
.
substituteTemplate
(
self
.
getTemplateFilename
(
'apache.zope.conf.in'
),
{
'path'
:
'/'
,
'server_admin'
:
'admin@'
,
'pid_file'
:
self
.
options
[
'pid-file'
],
'lock_file'
:
self
.
options
[
'lock-file'
],
'error_log'
:
self
.
options
[
'error-log'
],
'access_log'
:
self
.
options
[
'access-log'
],
'access_control_string'
:
self
.
options
[
'access-control-string'
],
'ssl_snippet'
:
ssl_snippet
,
'vhosts'
:
''
.
join
(
self
.
substituteTemplate
(
vhost_template_name
,
{
'ip'
:
ip
,
'port'
:
port
,
'backend'
:
(
'%s/%s'
%
(
backend
.
rstrip
(
'/'
),
backend_path
.
strip
(
'/'
))).
rstrip
(
'/'
),
'ssl_enable'
:
ssl_enable
,
})
for
(
port
,
backend
)
in
backend_list
for
ip
in
ip_list
),
},
)
)
return
[
apache_config_file
,
self
.
createPythonScript
(
self
.
options
[
'wrapper'
],
__name__
+
'.apache.runApache'
,
[
{
'required_path_list'
:
required_path_list
,
'binary'
:
self
.
options
[
'apache-binary'
],
'config'
:
apache_config_file
,
},
],
),
]
slapos/recipe/apache_zope_backend/apache.py
deleted
100644 → 0
View file @
ab2ca104
import
os
import
sys
import
time
def
runApache
(
args
):
sleep
=
60
conf
=
args
[
0
]
while
True
:
ready
=
True
for
f
in
conf
.
get
(
'required_path_list'
,
[]):
if
not
os
.
path
.
exists
(
f
):
print
'File %r does not exists, sleeping for %s'
%
(
f
,
sleep
)
ready
=
False
if
ready
:
break
time
.
sleep
(
sleep
)
apache_wrapper_list
=
[
conf
[
'binary'
],
'-f'
,
conf
[
'config'
],
'-DFOREGROUND'
]
apache_wrapper_list
.
extend
(
sys
.
argv
[
1
:])
sys
.
stdout
.
flush
()
sys
.
stderr
.
flush
()
os
.
execl
(
apache_wrapper_list
[
0
],
*
apache_wrapper_list
)
slapos/recipe/apache_zope_backend/template/apache.zope.conf.in
deleted
100644 → 0
View file @
ab2ca104
# Apache configuration file for Zope
# Automatically generated
# List of modules
LoadModule unixd_module modules/mod_unixd.so
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule version_module modules/mod_version.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule mime_module modules/mod_mime.so
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule headers_module modules/mod_headers.so
# Basic server configuration
PidFile "%(pid_file)s"
ServerAdmin %(server_admin)s
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
ServerTokens Prod
ServerSignature Off
TraceEnable Off
# Apache 2.4's default value (60 seconds) can be a bit too short
TimeOut 300
# As backend is trusting REMOTE_USER header unset it always
RequestHeader unset REMOTE_USER
%(ssl_snippet)s
# Log configuration
ErrorLog "%(error_log)s"
# Default apache log format with request time in microsecond at the end
LogFormat "%%h %%l %%u %%t \"%%r\" %%>s %%b \"%%{Referer}i\" \"%%{User-Agent}i\" %%D" combined
CustomLog "%(access_log)s" combined
# Directory protection
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
# Path protected
<Location %(path)s>
Order Deny,Allow
Deny from all
Allow from %(access_control_string)s
</Location>
# Magic of Zope related rewrite
RewriteEngine On
%(vhosts)s
slapos/recipe/apache_zope_backend/template/snippet.ssl.ca.in
deleted
100644 → 0
View file @
ab2ca104
SSLVerifyClient require
RequestHeader set REMOTE_USER %%{SSL_CLIENT_S_DN_CN}s
SSLCACertificateFile %(ca_certificate)s
SSLCARevocationPath %(ca_crl)s
slapos/recipe/apache_zope_backend/template/snippet.ssl.in
deleted
100644 → 0
View file @
ab2ca104
SSLCertificateFile %(certificate)s
SSLCertificateKeyFile %(key)s
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:HIGH:!aNULL:!MD5
SSLHonorCipherOrder on
SSLSessionCache shmcb:%(ssl_session_cache)s(512000)
SSLProxyEngine On
slapos/recipe/apache_zope_backend/template/vhost.in
deleted
100644 → 0
View file @
ab2ca104
Listen %(ip)s:%(port)s
<VirtualHost *:%(port)s>
%(ssl_enable)s
RewriteRule ^/(.*) %(backend)s/$1 [L,P]
</VirtualHost>
slapos/recipe/generic_zope/__init__.py
deleted
100644 → 0
View file @
ab2ca104
##############################################################################
#
# Copyright (c) 2011 Vifib SARL and Contributors. All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsibility of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# guarantees and support are strongly adviced to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 3
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
from
slapos.recipe.librecipe
import
GenericBaseRecipe
import
binascii
import
hashlib
import
os
import
re
import
zc.buildout
_isurl
=
re
.
compile
(
'([a-zA-Z0-9+.-]+)://'
).
match
# based on Zope2.utilities.mkzopeinstance.write_inituser
def
Zope2InitUser
(
path
,
username
,
password
):
# Set password only once
# Currently, rely on existence of a simple file:
# Create it the first time, then next time, detect this file and do no-op.
inituser_done_path
=
'%s_done'
%
path
if
os
.
path
.
exists
(
inituser_done_path
):
return
if
os
.
path
.
exists
(
path
):
return
open
(
path
,
'w'
).
write
(
''
)
os
.
chmod
(
path
,
0600
)
open
(
path
,
'w'
).
write
(
'%s:{SHA}%s
\
n
'
%
(
username
,
binascii
.
b2a_base64
(
hashlib
.
sha1
(
password
).
digest
())[:
-
1
]))
open
(
inituser_done_path
,
'w'
).
write
(
'"inituser" file already created once.'
)
class
Recipe
(
GenericBaseRecipe
):
def
_options
(
self
,
options
):
options
[
'password'
]
=
self
.
generatePassword
()
options
[
'deadlock-password'
]
=
self
.
generatePassword
()
def
install
(
self
):
"""
All zope have to share file created by portal_classes
(until everything is integrated into the ZODB).
So, do not request zope instance and create multiple in the same partition.
"""
path_list
=
[]
Zope2InitUser
(
self
.
options
[
'inituser'
],
self
.
options
[
'user'
],
self
.
options
[
'password'
])
# Symlink to BT5 repositories defined in instance config.
# Those paths will eventually end up in the ZODB, and having symlinks
# inside the XXX makes it possible to reuse such ZODB with another software
# release[ version].
# Note: this path cannot be used for development, it's really just a
# read-only repository.
repository_path
=
self
.
options
[
'bt5-repository'
]
self
.
bt5_repository_list
=
[]
append
=
self
.
bt5_repository_list
.
append
for
repository
in
self
.
options
.
get
(
'bt5-repository-list'
,
''
).
split
():
repository
=
repository
.
strip
()
if
not
repository
:
continue
if
_isurl
(
repository
)
and
not
repository
.
startswith
(
"file://"
):
# XXX: assume it's a valid URL
append
(
repository
)
continue
if
repository
.
startswith
(
'file://'
):
repository
=
repository
.
replace
(
'file://'
,
''
,
''
)
if
os
.
path
.
isabs
(
repository
):
repo_id
=
hashlib
.
sha1
(
repository
).
hexdigest
()
link
=
os
.
path
.
join
(
repository_path
,
repo_id
)
if
os
.
path
.
lexists
(
link
):
if
not
os
.
path
.
islink
(
link
):
raise
zc
.
buildout
.
UserError
(
'Target link already %r exists but it is not link'
%
link
)
os
.
unlink
(
link
)
os
.
symlink
(
repository
,
link
)
self
.
logger
.
debug
(
'Created link %r -> %r'
%
(
link
,
repository_path
))
# Always provide a URL-Type
append
(
"file://"
+
link
)
# Create zope configuration file
zope_config
=
dict
(
thread_amount
=
self
.
options
[
'thread-amount'
],
zodb_root_path
=
self
.
options
[
'zodb-path'
],
zodb_cache_size
=
int
(
self
.
options
[
'zodb-cache-size'
]),
)
zope_environment
=
dict
(
TMP
=
self
.
options
[
'tmp-path'
],
TMPDIR
=
self
.
options
[
'tmp-path'
],
HOME
=
self
.
options
[
'tmp-path'
],
PATH
=
self
.
options
[
'bin-path'
]
)
# configure default Zope2 zcml
open
(
self
.
options
[
'site-zcml'
],
'w'
).
write
(
open
(
self
.
getTemplateFilename
(
'site.zcml'
)).
read
())
zope_config
[
'instance'
]
=
self
.
options
[
'instance-path'
]
zope_config
[
'event_log'
]
=
self
.
options
[
'event-log'
]
zope_config
[
'z2_log'
]
=
self
.
options
[
'z2-log'
]
zope_config
[
'pid-filename'
]
=
self
.
options
[
'pid-file'
]
zope_config
[
'lock-filename'
]
=
self
.
options
[
'lock-file'
]
zope_config
[
'products'
]
=
'products %s'
%
self
.
options
[
'instance-products'
]
zope_config
[
'address'
]
=
'%s:%s'
%
(
self
.
options
[
'ip'
],
self
.
options
[
'port'
])
zope_config
.
update
(
dump_url
=
self
.
options
[
'deadlock-path'
],
secret
=
self
.
options
[
'deadlock-password'
])
zope_wrapper_template_location
=
self
.
getTemplateFilename
(
'zope.conf.in'
)
zope_conf_content
=
self
.
substituteTemplate
(
zope_wrapper_template_location
,
zope_config
)
if
(
'promise-path'
in
self
.
options
)
and
(
'site-id'
in
self
.
options
):
zope_conf_content
+=
self
.
substituteTemplate
(
self
.
getTemplateFilename
(
'zope.conf.promise.in'
),
{
'site-id'
:
self
.
options
[
'site-id'
],
'promise-path'
:
self
.
options
[
'promise-path'
],
})
zope_conf_path
=
self
.
createFile
(
self
.
options
[
'configuration-file'
],
zope_conf_content
)
path_list
.
append
(
zope_conf_path
)
# Create init script
path_list
.
append
(
self
.
createPythonScript
(
self
.
options
[
'wrapper'
],
'slapos.recipe.librecipe.execute.executee'
,
[[
self
.
options
[
'runzope-binary'
].
strip
(),
'-C'
,
zope_conf_path
],
zope_environment
]))
return
path_list
slapos/recipe/generic_zope/template/site.zcml
deleted
100644 → 0
View file @
ab2ca104
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:meta="http://namespaces.zope.org/meta"
xmlns:five="http://namespaces.zope.org/five">
<include package="Products.Five" />
<meta:redefinePermission from="zope2.Public" to="zope.Public" />
<!-- Load the meta -->
<include files="package-includes/*-meta.zcml" />
<five:loadProducts file="meta.zcml"/>
<!-- Load the configuration -->
<include files="package-includes/*-configure.zcml" />
<five:loadProducts />
<!-- Load the configuration overrides-->
<includeOverrides files="package-includes/*-overrides.zcml" />
<five:loadProductsOverrides />
<securityPolicy
component="Products.Five.security.FiveSecurityPolicy" />
</configure>
slapos/recipe/generic_zope/template/zope.conf.in
deleted
100644 → 0
View file @
ab2ca104
## Zope 2 configuration file generated by SlapOS
# Some defines
%%define INSTANCE %(instance)s
instancehome $INSTANCE
# Used products
%(products)s
# Environment is setup in running wrapper script
# Reason: zope.conf is read too late for some componets
# No need to debug
debug-mode off
# One thread is safe enough
zserver-threads %(thread_amount)s
# File location
pid-filename %(pid-filename)s
lock-filename %(lock-filename)s
# Encoding
rest-input-encoding utf-8
rest-output-encoding utf-8
default-zpublisher-encoding utf-8
# Disable ownership checking to execute codes generated by alarm
skip-ownership-checking on
# Temporary storage database (for sessions)
<zodb_db temporary>
<temporarystorage>
name temporary storage for sessioning
</temporarystorage>
mount-point /temp_folder
container-class Products.TemporaryFolder.TemporaryContainer
</zodb_db>
# Logging configuration
<eventlog>
<logfile>
dateformat
path %(event_log)s
</logfile>
</eventlog>
<logger access>
<logfile>
dateformat
path %(z2_log)s
</logfile>
</logger>
# Serving configuration
<http-server>
address %(address)s
</http-server>
# ZODB configuration
<zodb_db root>
cache-size %(zodb_cache_size)d
<filestorage>
path %(zodb_root_path)s
</filestorage>
mount-point /
</zodb_db>
<zoperunner>
program $INSTANCE/bin/runzope
</zoperunner>
# DeadlockDebugger configuration
<product-config DeadlockDebugger>
dump_url %(dump_url)s
secret %(secret)s
</product-config>
# ERP5 Timer Service
%%import timerserver
<timer-server>
interval 5
</timer-server>
slapos/recipe/generic_zope/template/zope.conf.promise.in
deleted
100644 → 0
View file @
ab2ca104
# ERP5 promise
<product-config /%(site-id)s>
promise_path %(promise-path)s
</product-config>
slapos/recipe/generic_zope_zeo_client/__init__.py
deleted
100644 → 0
View file @
ab2ca104
##############################################################################
#
# Copyright (c) 2011 Vifib SARL and Contributors. All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsibility of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# guarantees and support are strongly adviced to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 3
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
from
slapos.recipe.librecipe
import
GenericBaseRecipe
import
binascii
import
hashlib
import
os
import
re
import
zc.buildout
_isurl
=
re
.
compile
(
'([a-zA-Z0-9+.-]+)://'
).
match
# based on Zope2.utilities.mkzopeinstance.write_inituser
def
Zope2InitUser
(
path
,
username
,
password
):
# Set password only once
# Currently, rely on existence of a simple file:
# Create it the first time, then next time, detect this file and do no-op.
inituser_done_path
=
'%s_done'
%
path
if
os
.
path
.
exists
(
inituser_done_path
):
return
if
os
.
path
.
exists
(
path
):
return
open
(
path
,
'w'
).
write
(
''
)
os
.
chmod
(
path
,
0600
)
open
(
path
,
'w'
).
write
(
'%s:{SHA}%s
\
n
'
%
(
username
,
binascii
.
b2a_base64
(
hashlib
.
sha1
(
password
).
digest
())[:
-
1
]))
open
(
inituser_done_path
,
'w'
).
write
(
'"inituser" file already created once.'
)
class
Recipe
(
GenericBaseRecipe
):
def
_options
(
self
,
options
):
if
'password'
not
in
options
:
options
[
'password'
]
=
self
.
generatePassword
()
def
install
(
self
):
"""
All zope have to share file created by portal_classes
(until everything is integrated into the ZODB).
So, do not request zope instance and create multiple in the same partition.
"""
path_list
=
[]
Zope2InitUser
(
self
.
options
[
'inituser'
],
self
.
options
[
'user'
],
self
.
options
[
'password'
])
# Symlink to BT5 repositories defined in instance config.
# Those paths will eventually end up in the ZODB, and having symlinks
# inside the XXX makes it possible to reuse such ZODB with another software
# release[ version].
# Note: this path cannot be used for development, it's really just a
# read-only repository.
repository_path
=
self
.
options
[
'bt5-repository'
]
self
.
bt5_repository_list
=
[]
append
=
self
.
bt5_repository_list
.
append
for
repository
in
self
.
options
.
get
(
'bt5-repository-list'
,
''
).
split
():
repository
=
repository
.
strip
()
if
not
repository
:
continue
if
_isurl
(
repository
)
and
not
repository
.
startswith
(
"file://"
):
# XXX: assume it's a valid URL
append
(
repository
)
continue
if
repository
.
startswith
(
'file://'
):
repository
=
repository
.
replace
(
'file://'
,
''
,
''
)
if
os
.
path
.
isabs
(
repository
):
repo_id
=
hashlib
.
sha1
(
repository
).
hexdigest
()
link
=
os
.
path
.
join
(
repository_path
,
repo_id
)
if
os
.
path
.
lexists
(
link
):
if
not
os
.
path
.
islink
(
link
):
raise
zc
.
buildout
.
UserError
(
'Target link already %r exists but it is not link'
%
link
)
os
.
unlink
(
link
)
os
.
symlink
(
repository
,
link
)
self
.
logger
.
debug
(
'Created link %r -> %r'
%
(
link
,
repository_path
))
# Always provide a URL-Type
append
(
"file://"
+
link
)
zope_environment
=
{
'TMP'
:
self
.
options
[
'tmp-path'
],
'TMPDIR'
:
self
.
options
[
'tmp-path'
],
'HOME'
:
self
.
options
.
get
(
'home-path'
,
self
.
options
.
get
(
'tmp-path'
)),
'PATH'
:
self
.
options
[
'bin-path'
],
'TZ'
:
self
.
options
[
'timezone'
],
}
instance_home
=
self
.
options
.
get
(
"instancehome-path"
,
None
)
if
instance_home
:
zope_environment
[
"INSTANCE_HOME"
]
=
instance_home
# configure default Zope2 zcml
open
(
self
.
options
[
'site-zcml'
],
'w'
).
write
(
open
(
self
.
getTemplateFilename
(
'site.zcml'
)).
read
())
# Create init script
path_list
.
append
(
self
.
createPythonScript
(
self
.
options
[
'wrapper'
],
'slapos.recipe.librecipe.execute.executee'
,
[[
self
.
options
[
'runzope-binary'
].
strip
(),
'-C'
,
self
.
options
[
'configuration-file'
]],
zope_environment
]))
return
path_list
slapos/recipe/generic_zope_zeo_client/template/site.zcml
deleted
100644 → 0
View file @
ab2ca104
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:meta="http://namespaces.zope.org/meta"
xmlns:five="http://namespaces.zope.org/five">
<include package="Products.Five" />
<meta:redefinePermission from="zope2.Public" to="zope.Public" />
<!-- Load the meta -->
<include files="package-includes/*-meta.zcml" />
<five:loadProducts file="meta.zcml"/>
<!-- Load the configuration -->
<include files="package-includes/*-configure.zcml" />
<five:loadProducts />
<!-- Load the configuration overrides-->
<includeOverrides files="package-includes/*-overrides.zcml" />
<five:loadProductsOverrides />
<securityPolicy
component="Products.Five.security.FiveSecurityPolicy" />
</configure>
slapos/recipe/waitfor.py
deleted
100644 → 0
View file @
ab2ca104
##############################################################################
#
# Copyright (c) 2010 Vifib SARL and Contributors. All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsibility of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# guarantees and support are strongly adviced to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 3
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
import
shlex
from
slapos.recipe.librecipe
import
GenericBaseRecipe
class
Recipe
(
GenericBaseRecipe
):
def
install
(
self
):
files
=
[
f
for
f
in
self
.
options
[
'files'
].
split
(
'
\
n
'
)
if
f
]
command_line
=
shlex
.
split
(
self
.
options
[
'command-line'
])
wrapper
=
self
.
createPythonScript
(
self
.
options
[
'wrapper'
],
'slapos.recipe.librecipe.execute.execute_wait'
,
[
command_line
,
files
],
)
return
[
wrapper
]
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