OLD | NEW |
| (Empty) |
1 node 'issues1' { | |
2 | |
3 include private::trac | |
4 | |
5 class {'trac': | |
6 domain => 'issues.adblockplus.org', | |
7 certificate => 'issues.adblockplus.org_sslcert.pem', | |
8 private_key => 'issues.adblockplus.org_sslcert.key', | |
9 is_default => true, | |
10 } | |
11 | |
12 trac::instance {'issues': | |
13 config => 'trac/trac.ini.erb', | |
14 description => 'Adblock Plus Issue Tracker', | |
15 location => '/', | |
16 logo => 'puppet:///modules/trac/adblockplus_logo.png', | |
17 database => 'trac', | |
18 permissions => "puppet:///modules/trac/permissions.csv", | |
19 } | |
20 | |
21 trac::instance {'orders': | |
22 config => 'trac/orders.ini.erb', | |
23 description => 'Eyeo Order System', | |
24 location => '/orders', | |
25 logo => 'puppet:///modules/trac/eyeo_logo.png', | |
26 database => 'trac_orders', | |
27 permissions => "puppet:///modules/trac/order-permissions.csv", | |
28 } | |
29 | |
30 # Transforming the auth_cookie table of the "new" Trac project into an | |
31 # insertable view for the "old" project's table of the same name avoids | |
32 # the need to convert the entire auth to htpasswd-file handling, which | |
33 # would be the official way to go for achieving a shared authentication. | |
34 exec { 'trac_auth_cookie_view': | |
35 command => "mysql -utrac -p'${private::trac::database_password}' trac_orders
--execute ' | |
36 DROP TABLE IF EXISTS auth_cookie; | |
37 CREATE VIEW auth_cookie AS SELECT * FROM trac.auth_cookie;'", | |
38 unless => "mysql -utrac -p'${private::trac::database_password}' trac_orders
--execute ' | |
39 SHOW CREATE VIEW auth_cookie'", | |
40 path => "/usr/bin:/usr/sbin:/bin:/usr/local/bin", | |
41 require => [ | |
42 Exec["deploy_issues"], | |
43 Exec["deploy_orders"], | |
44 ], | |
45 } | |
46 | |
47 $mysql = "mysql -utrac -p'${private::trac::database_password}'" | |
48 | |
49 # Synchronizing e-mail and password information between the project | |
50 # allows for logging in from any entry point - whilst maintaining a | |
51 # registration form (and process) in one project only. | |
52 cron {'trac_session_attribute_sync': | |
53 ensure => present, | |
54 user => trac, | |
55 minute => '*/30', | |
56 command => "$mysql trac_orders --execute ' \ | |
57 INSERT INTO session_attribute (sid, authenticated, name, value) SELECT sid
, authenticated, name, value \ | |
58 FROM trac.session_attribute WHERE authenticated = 1 AND name IN (\"email\"
, \"password\") \ | |
59 ON DUPLICATE KEY UPDATE value=VALUES(value) ' >/dev/null | |
60 ", | |
61 require => Exec['trac_auth_cookie_view'], | |
62 } | |
63 | |
64 cron {'trac_session_cleanup': | |
65 command => "$mysql trac --execute ' \ | |
66 DELETE session, session_attribute FROM session \ | |
67 JOIN session_attribute ON session.sid = session_attribute.sid \ | |
68 AND session.authenticated = session_attribute.authenticated \ | |
69 WHERE session.authenticated = 0 AND \ | |
70 session.last_visit < UNIX_TIMESTAMP(NOW() - INTERVAL 10 DAY)' >/dev/null", | |
71 ensure => present, | |
72 hour => 1, | |
73 minute => 15, | |
74 require => Trac::Instance['issues'], | |
75 user => trac, | |
76 } | |
77 | |
78 cron {'trac_account_cleanup': | |
79 command => "$mysql trac --execute ' \ | |
80 DELETE session, session_attribute FROM session \ | |
81 JOIN session_attribute AS session_data ON session.sid = session_data.sid \ | |
82 AND session.authenticated = session_data.authenticated \ | |
83 JOIN session_attribute ON session.sid = session_attribute.sid \ | |
84 AND session.authenticated = session_attribute.authenticated \ | |
85 WHERE session_data.name = \"email_verification_token\" AND \ | |
86 session.last_visit < UNIX_TIMESTAMP(NOW() - INTERVAL 5 DAY)' >/dev/null", | |
87 ensure => present, | |
88 hour => 2, | |
89 minute => 15, | |
90 require => Trac::Instance['issues'], | |
91 user => trac, | |
92 } | |
93 | |
94 # https://issues.adblockplus.org/ticket/3787 | |
95 customservice::supervisor {"spawn-fcgi": | |
96 ensure => 'present', | |
97 pidfile => "/var/run/500-tracd_issues_spawn-fcgi.pid", | |
98 } | |
99 } | |
OLD | NEW |