We truncated the diff of some files because they were too big.
If you want to see the full diff for every file, click here.
Changes of Revision 5
roundcubemail.spec
Changed
x
1
2
%global logdir /var/log/roundcubemail
3
%global tmpdir /var/lib/roundcubemail
4
5
-%global rc_version 1.4.13
6
-%global plugin_version 3.5.9
7
+%global rc_version 1.5.2
8
+%global plugin_version 3.5.11
9
+%global skin_version 0.5.0
10
#%%global rc_rel_suffix rc2.12
11
%global dot_rel_suffix %{?rc_rel_suffix:.%{rc_rel_suffix}}
12
%global dash_rel_suffix %{?rc_rel_suffix:-%{rc_rel_suffix}}
13
14
Name: roundcubemail
15
Version: %{rc_version}
16
17
-Release: 2%{?dot_rel_suffix}%{?dist}
18
+Release: 1%{?dot_rel_suffix}%{?dist}
19
20
-Summary: Round Cube Webmail is a browser-based multilingual IMAP client
21
+Summary: Roundcube Webmail is a browser-based multilingual IMAP client
22
23
Group: Applications/System
24
License: GPLv2
25
26
27
Patch201: default-configuration.patch
28
Patch202: roundcubemail-1.4-beta86-plugin-enigma-homedir.patch
29
-Patch203: 0001-Enigma-Optional-support-for-passwordless-keys-7265.patch
30
-
31
-#TODO ?
32
-#Patch0000: roundcubemail-plugins-kolab-3.4-kolab-files-manticore-api.patch
33
34
BuildArch: noarch
35
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root%(%{__id_u} -n)
36
37
-#%if 0%{?plesk} < 1
38
-#BuildRequires: php-gd
39
-#BuildRequires: php-mbstring
40
-#BuildRequires: php-pdo
41
-#BuildRequires: php-pear >= 1.9.0
42
-#BuildRequires: php-phpunit-PHPUnit
43
-#BuildRequires: php-phpunit-PHPUnit-Selenium
44
-#BuildRequires: php-xml
45
-#
46
-#BuildRequires: php-pear(Auth_SASL)
47
-#BuildRequires: php-pear(DB)
48
-#BuildRequires: php-pear(Mail_Mime)
49
-#BuildRequires: php-pear(Mail_mimeDecode)
50
-#BuildRequires: php-pear(MDB2) >= 2.5.0
51
-#BuildRequires: php-pear(MDB2_Driver_mysqli)
52
-#BuildRequires: php-pear(Net_IDNA2)
53
-#BuildRequires: php-pear(Net_LDAP2)
54
-#BuildRequires: php-kolab-net-ldap3
55
-#BuildRequires: php-pear(Net_Sieve)
56
-#BuildRequires: php-pear(Net_SMTP)
57
-#BuildRequires: php-pear(Net_Socket)
58
-#%endif
59
-
60
-# Archive and Zipdownload plugins required through
61
-# being listed in config.inc.php.sample.
62
-#Requires: %{name}(plugin-acl) = %{?epoch:%{epoch}:}%{version}-%{release}
63
-#Requires: %{name}(plugin-archive) = %{?epoch:%{epoch}:}%{version}-%{release}
64
-#Requires: %{name}(plugin-password) = %{?epoch:%{epoch}:}%{version}-%{release}
65
-#Requires: %{name}(plugin-managesieve) = %{?epoch:%{epoch}:}%{version}-%{release}
66
-#Requires: %{name}(plugin-zipdownload) = %{?epoch:%{epoch}:}%{version}-%{release}
67
-
68
%if 0%{?suse_version}
69
Requires: http_daemon
70
Requires: php >= 5.3
71
72
Requires: php-mbstring
73
Requires: php-pear >= 1.9.0
74
Requires: php-xml
75
+
76
+%if 0%{?rhel} <= 7
77
+#FIXME keep using mysqlnd, but somehow upgrade and remove the existing roundcube packages
78
+Requires: php-mysql
79
+%else
80
Requires: php-mysqlnd
81
+%endif
82
83
-#Requires: php-pear(Auth_SASL)
84
-#Requires: php-pear(DB)
85
-#Requires: php-pear(Mail_Mime)
86
-#Requires: php-pear(Mail_mimeDecode)
87
-#Requires: php-pear(MDB2) >= 2.5.0
88
-#Requires: php-pear(MDB2_Driver_mysqli)
89
-#Requires: php-pear(Net_IDNA2)
90
-#Requires: php-pear(Net_Sieve)
91
-#Requires: php-pear(Net_SMTP)
92
-#Requires: php-pear(Net_Socket)
93
-
94
-#%if 0%{?plesk} < 1
95
-#Requires: php-pear(Net_LDAP2)
96
-#Requires: php-kolab-net-ldap3
97
-#%endif
98
+Obsoletes: %{name}-core < %{?epoch:%{epoch}:}%{version}-%{release}
99
+Obsoletes: %{name}-core-assets < %{?epoch:%{epoch}:}%{version}-%{release}
100
+Obsoletes: %{name}-plugin-acl < %{?epoch:%{epoch}:}%{version}-%{release}
101
+Obsoletes: %{name}-plugin-acl-assets < %{?epoch:%{epoch}:}%{version}-%{release}
102
+Obsoletes: %{name}-plugin-acl-skin-elastic < %{?epoch:%{epoch}:}%{version}-%{release}
103
+Obsoletes: %{name}-plugin-acl-skin-elastic-assets < %{?epoch:%{epoch}:}%{version}-%{release}
104
+Obsoletes: %{name}-plugin-acl-skin-larry < %{?epoch:%{epoch}:}%{version}-%{release}
105
+Obsoletes: %{name}-plugin-acl-skin-larry-assets < %{?epoch:%{epoch}:}%{version}-%{release}
106
+Obsoletes: %{name}-plugin-archive < %{?epoch:%{epoch}:}%{version}-%{release}
107
+Obsoletes: %{name}-plugin-archive-assets < %{?epoch:%{epoch}:}%{version}-%{release}
108
+Obsoletes: %{name}-plugin-calendar <= %{plugin_version}
109
+Obsoletes: %{name}-plugin-calendar-assets <= %{plugin_version}
110
+Obsoletes: %{name}-plugin-calendar-skin-elastic <= %{plugin_version}
111
+Obsoletes: %{name}-plugin-calendar-skin-elastic-assets <= %{plugin_version}
112
+Obsoletes: %{name}-plugin-contextmenu <= %{plugin_version}
113
+Obsoletes: %{name}-plugin-filesystem_attachments < %{?epoch:%{epoch}:}%{version}-%{release}
114
+Obsoletes: %{name}-plugin-filesystem_attachments-assets < %{?epoch:%{epoch}:}%{version}-%{release}
115
+Obsoletes: %{name}-plugin-jqueryui < %{?epoch:%{epoch}:}%{version}-%{release}
116
+Obsoletes: %{name}-plugin-jqueryui-assets < %{?epoch:%{epoch}:}%{version}-%{release}
117
+Obsoletes: %{name}-plugin-jqueryui-skin-elastic < %{?epoch:%{epoch}:}%{version}-%{release}
118
+Obsoletes: %{name}-plugin-jqueryui-skin-elastic-assets < %{?epoch:%{epoch}:}%{version}-%{release}
119
+Obsoletes: %{name}-plugin-jqueryui-skin-larry < %{?epoch:%{epoch}:}%{version}-%{release}
120
+Obsoletes: %{name}-plugin-jqueryui-skin-larry-assets < %{?epoch:%{epoch}:}%{version}-%{release}
121
+Obsoletes: %{name}-plugin-kolab_activesync <= %{plugin_version}
122
+Obsoletes: %{name}-plugin-kolab_activesync-assets <= %{plugin_version}
123
+Obsoletes: %{name}-plugin-kolab_activesync-skin-elastic <= %{plugin_version}
124
+Obsoletes: %{name}-plugin-kolab_activesync-skin-elastic-assets <= %{plugin_version}
125
+Obsoletes: %{name}-plugin-kolab_addressbook <= %{plugin_version}
126
+Obsoletes: %{name}-plugin-kolab_addressbook-assets <= %{plugin_version}
127
+Obsoletes: %{name}-plugin-kolab_addressbook-skin-elastic <= %{plugin_version}
128
+Obsoletes: %{name}-plugin-kolab_addressbook-skin-elastic-assets <= %{plugin_version}
129
+Obsoletes: %{name}-plugin-kolab_chat <= %{plugin_version}
130
+Obsoletes: %{name}-plugin-kolab_chat-assets <= %{plugin_version}
131
+Obsoletes: %{name}-plugin-kolab_chat-skin-elastic <= %{plugin_version}
132
+Obsoletes: %{name}-plugin-kolab_chat-skin-elastic-assets <= %{plugin_version}
133
+Obsoletes: %{name}-plugin-kolab_config <= %{plugin_version}
134
+Obsoletes: %{name}-plugin-kolab_config-assets <= %{plugin_version}
135
+Obsoletes: %{name}-plugin-kolab_files <= %{plugin_version}
136
+Obsoletes: %{name}-plugin-kolab_files-assets <= %{plugin_version}
137
+Obsoletes: %{name}-plugin-kolab_files-skin-elastic <= %{plugin_version}
138
+Obsoletes: %{name}-plugin-kolab_files-skin-elastic-assets <= %{plugin_version}
139
+Obsoletes: %{name}-plugin-kolab_folders <= %{plugin_version}
140
+Obsoletes: %{name}-plugin-kolab_folders-assets <= %{plugin_version}
141
+Obsoletes: %{name}-plugin-kolab_notes <= %{plugin_version}
142
+Obsoletes: %{name}-plugin-kolab_notes-assets <= %{plugin_version}
143
+Obsoletes: %{name}-plugin-kolab_notes-skin-elastic <= %{plugin_version}
144
+Obsoletes: %{name}-plugin-kolab_notes-skin-elastic-assets <= %{plugin_version}
145
+Obsoletes: %{name}-plugin-kolab_tags <= %{plugin_version}
146
+Obsoletes: %{name}-plugin-kolab_tags-assets <= %{plugin_version}
147
+Obsoletes: %{name}-plugin-kolab_tags-skin-elastic <= %{plugin_version}
148
+Obsoletes: %{name}-plugin-kolab_tags-skin-elastic-assets <= %{plugin_version}
149
+Obsoletes: %{name}-plugin-libcalendaring <= %{plugin_version}
150
+Obsoletes: %{name}-plugin-libcalendaring-assets <= %{plugin_version}
151
+Obsoletes: %{name}-plugin-libkolab <= %{plugin_version}
152
+Obsoletes: %{name}-plugin-libkolab-assets <= %{plugin_version}
153
+Obsoletes: %{name}-plugin-libkolab-skin-elastic <= %{plugin_version}
154
+Obsoletes: %{name}-plugin-libkolab-skin-elastic-assets <= %{plugin_version}
155
+Obsoletes: %{name}-plugin-managesieve < %{?epoch:%{epoch}:}%{version}-%{release}
156
+Obsoletes: %{name}-plugin-managesieve-assets < %{?epoch:%{epoch}:}%{version}-%{release}
157
+Obsoletes: %{name}-plugin-managesieve-skin-elastic < %{?epoch:%{epoch}:}%{version}-%{release}
158
+Obsoletes: %{name}-plugin-managesieve-skin-elastic-assets < %{?epoch:%{epoch}:}%{version}-%{release}
159
+Obsoletes: %{name}-plugin-managesieve-skin-larry < %{?epoch:%{epoch}:}%{version}-%{release}
160
+Obsoletes: %{name}-plugin-managesieve-skin-larry-assets < %{?epoch:%{epoch}:}%{version}-%{release}
161
+Obsoletes: %{name}-plugin-markasjunk < %{?epoch:%{epoch}:}%{version}-%{release}
162
+Obsoletes: %{name}-plugin-markasjunk-assets < %{?epoch:%{epoch}:}%{version}-%{release}
163
+Obsoletes: %{name}-plugin-markasjunk-skin-larry < %{?epoch:%{epoch}:}%{version}-%{release}
164
+Obsoletes: %{name}-plugin-markasjunk-skin-larry-assets < %{?epoch:%{epoch}:}%{version}-%{release}
165
+Obsoletes: %{name}-plugin-newmail_notifier < %{?epoch:%{epoch}:}%{version}-%{release}
166
+Obsoletes: %{name}-plugin-newmail_notifier-assets < %{?epoch:%{epoch}:}%{version}-%{release}
167
+Obsoletes: %{name}-plugin-odfviewer <= %{plugin_version}
168
+Obsoletes: %{name}-plugin-odfviewer-assets <= %{plugin_version}
169
+Obsoletes: %{name}-plugin-password < %{?epoch:%{epoch}:}%{version}-%{release}
170
+Obsoletes: %{name}-plugin-password-assets < %{?epoch:%{epoch}:}%{version}-%{release}
171
+Obsoletes: %{name}-plugin-pdfviewer <= %{plugin_version}
172
+Obsoletes: %{name}-plugin-pdfviewer-assets <= %{plugin_version}
173
+Obsoletes: %{name}-plugin-tasklist <= %{plugin_version}
174
+Obsoletes: %{name}-plugin-tasklist-assets <= %{plugin_version}
175
+Obsoletes: %{name}-plugin-tasklist-skin-elastic <= %{plugin_version}
176
+Obsoletes: %{name}-plugin-tasklist-skin-elastic-assets <= %{plugin_version}
177
+Obsoletes: %{name}-plugin-zipdownload < %{?epoch:%{epoch}:}%{version}-%{release}
178
+Obsoletes: %{name}-plugin-zipdownload-assets < %{?epoch:%{epoch}:}%{version}-%{release}
179
+Obsoletes: %{name}-plugin-zipdownload-skin-larry < %{?epoch:%{epoch}:}%{version}-%{release}
180
+Obsoletes: %{name}-plugin-zipdownload-skin-larry-assets < %{?epoch:%{epoch}:}%{version}-%{release}
181
+Obsoletes: %{name}-skin-elastic < %{?epoch:%{epoch}:}%{version}-%{release}
182
+Obsoletes: %{name}-skin-elastic-assets < %{?epoch:%{epoch}:}%{version}-%{release}
183
+Obsoletes: %{name}-skin-larry < %{?epoch:%{epoch}:}%{version}-%{release}
184
+Obsoletes: %{name}-skin-larry-assets < %{?epoch:%{epoch}:}%{version}-%{release}
185
+Obsoletes: %{name}-skin-plesk <= %{skin_version}
186
+Obsoletes: %{name}-skin-plesk-assets <= %{skin_version}
187
+Obsoletes: %{name}-skin-plesk-core <= %{skin_version}
188
+Obsoletes: %{name}-skin-plesk-larry-assets <= %{skin_version}
189
+Obsoletes: %{name}-skin-plesk-larry-core <= %{skin_version}
190
191
Provides: %{name}-core = %{?epoch:%{epoch}:}%{version}-%{release}
192
Provides: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release}
193
194
Provides: %{name}-plugin-enigma = %{?epoch:%{epoch}:}%{plugin_version}-%{release}
195
Provides: %{name}-plugin-hide_blockquote = %{?epoch:%{epoch}:}%{plugin_version}-%{release}
196
Provides: %{name}-plugin-jqueryui = %{?epoch:%{epoch}:}%{plugin_version}-%{release}
197
+Provides: %{name}(plugin-jqueryui) = %{?epoch:%{epoch}:}%{version}-%{release}
198
Provides: %{name}-plugin-kolab_chat = %{?epoch:%{epoch}:}%{plugin_version}-%{release}
199
Provides: %{name}-plugin-logon_page = %{?epoch:%{epoch}:}%{plugin_version}-%{release}
200
Provides: %{name}-plugin-managesieve = %{?epoch:%{epoch}:}%{plugin_version}-%{release}
201
0001-Enigma-Optional-support-for-passwordless-keys-7265.patch
Deleted
51
1
2
-From 3e4a37339e6a4f356f26a47d981ca86a763e4bba Mon Sep 17 00:00:00 2001
3
-From: Aleksander Machniak <alec@alec.pl>
4
-Date: Tue, 25 May 2021 15:37:57 +0200
5
-Subject: [PATCH] Enigma: Optional support for passwordless keys (#7265)
6
-
7
----
8
- plugins/enigma/config.inc.php.dist | 3 +++
9
- plugins/enigma/lib/enigma_engine.php | 4 ++--
10
- 2 files changed, 5 insertions(+), 2 deletions(-)
11
-
12
-diff --git a/plugins/enigma/config.inc.php.dist b/plugins/enigma/config.inc.php.dist
13
-index fc620587e..c0c635f3c 100644
14
---- a/plugins/enigma/config.inc.php.dist
15
-+++ b/plugins/enigma/config.inc.php.dist
16
-@@ -65,6 +65,9 @@ $config['enigma_attach_pubkey'] = false;
17
- // When set to 0 passwords will be stored for the whole session.
18
- $config['enigma_password_time'] = 5;
19
-
20
-+// Enable support for private keys without passwords.
21
-+$config['enigma_passwordless'] = false;
22
-+
23
- // With this option you can lock composing options
24
- // of the plugin forcing the user to use configured settings.
25
- // The array accepts: 'sign', 'encrypt', 'pubkey'.
26
-diff --git a/plugins/enigma/lib/enigma_engine.php b/plugins/enigma/lib/enigma_engine.php
27
-index 4dbb464a5..650a0960c 100644
28
---- a/plugins/enigma/lib/enigma_engine.php
29
-+++ b/plugins/enigma/lib/enigma_engine.php
30
-@@ -147,7 +147,7 @@ class enigma_engine
31
- $passwords = $this->get_passwords();
32
- $pass = $passwords[$key->id];
33
-
34
-- if ($pass === null) {
35
-+ if ($pass === null && !$this->rc->config->get('enigma_passwordless')) {
36
- // ask for password
37
- $error = array('missing' => array($key->id => $key->name));
38
- return new enigma_error(enigma_error::BADPASS, '', $error);
39
-@@ -249,7 +249,7 @@ class enigma_engine
40
- $passwords = $this->get_passwords();
41
- $sign_pass = $passwords[$sign_key->id];
42
-
43
-- if ($sign_pass === null) {
44
-+ if ($sign_pass === null && !$this->rc->config->get('enigma_passwordless')) {
45
- // ask for password
46
- $error = array('missing' => array($sign_key->id => $sign_key->name));
47
- return new enigma_error(enigma_error::BADPASS, '', $error);
48
---
49
-2.31.1
50
-
51
buildroundcubemailtarball.sh
Changed
49
1
2
3
set -e
4
5
-VERSION=1.4.13
6
-GIT_REF=1.4.13
7
+VERSION=1.5.2
8
+GIT_REF=1.5.2
9
NAME=roundcubemail-$VERSION
10
+SKINS=(kolab plesk)
11
12
if [ -x "/usr/local/bin/lessc" ]; then
13
LESSC=/usr/local/bin/lessc
14
15
"zf1/zend-controller": "~1.12.11",
16
"sabre/dav" : "~2.1.6",
17
"smarty/smarty" : "~3.1.7"
18
-
19
},
20
"require-dev": {
21
"phpunit/phpunit": "^4.8.36 || ^5.7.21"
22
23
git reset --hard $GIT_REF
24
popd
25
26
+[ -d roundcubemail-skin-elastic ] && rm -rf roundcubemail-skin-elastic
27
+git clone --branch master ssh://git@git.kolab.org/source/roundcubemail-skin-elastic.git roundcubemail-skin-elastic
28
+
29
[ -d roundcubemail-plugins-kolab-latest ] && rm -rf roundcubemail-plugins-kolab-latest
30
git clone --branch master ssh://git@git.kolab.org/diffusion/RPK/roundcubemail-plugins-kolab.git roundcubemail-plugins-kolab-latest
31
32
33
popd
34
35
# Install skins
36
-for tar in $(ls -1 $ROOT_DIR/*skin*.tar.gz 2>/dev/null); do
37
- if [ -d "$(basename $tar .tar.gz)" ]; then
38
- rm -rf $(basename $tar .tar.gz)
39
- fi
40
-
41
- tar zxf $tar
42
-
43
- cp -r $(basename $tar .tar.gz)/* $NAME/skins/.
44
+for skin in "${SKINS[@]}"; do
45
+ cp -r "roundcubemail-skin-elastic/$skin" $NAME/skins/
46
done
47
48
pushd $NAME
49
debian.changelog
Changed
11
1
2
+roundcubemail (1.5.2-0~kolab3) unstable; urgency=low
3
+
4
+ * Roundcubemail 1.5.2
5
+
6
+ -- Christian Mollekopf <mollekopf@kolabsys.com> Mon, 7 Mar 2022 11:11:11 +0200
7
+
8
roundcubemail (1.4.13-0~kolab2) unstable; urgency=low
9
10
* Support passwordless keys
11
debian.control
Changed
76
1
2
Priority: extra
3
Maintainer: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com>
4
Uploaders: Paul Klos <kolab@klos2day.nl>
5
-Build-Depends: composer, cssmin, node-uglify, debhelper (>= 8), node-less (>= 1.7.0), psa | bash
6
+Build-Depends: debhelper (>= 8), psa | bash
7
Homepage: http://www.roundcube.net/
8
Standards-Version: 3.9.3
9
Vcs-Git: git://git.kolabsys.com/git/apt/roundcubemail/
10
11
12
Package: roundcubemail
13
Architecture: all
14
-Depends: php-net-ldap3,
15
- roundcubemail-core,
16
- ${misc:Depends}
17
-Replaces: roundcube, roundcube-core, roundcube-mysql, roundcube-pgsql, roundcube-plugins
18
-Conflicts: roundcube, roundcube-core, roundcube-mysql, roundcube-pgsql, roundcube-plugins
19
-Provides: roundcube, roundcube-core, roundcube-mysql, roundcube-pgsql, roundcube-plugins
20
-Description: skinnable AJAX based webmail solution for IMAP servers
21
- RoundCube Webmail is a browser-based multilingual IMAP client with an
22
- application-like user interface. It provides full functionality
23
- expected from an e-mail client, including MIME support, address book,
24
- folder manipulation and message filters.
25
- .
26
- The user interface is fully skinnable using XHTML and CSS 2.
27
-
28
-Package: roundcubemail-core
29
-Architecture: all
30
Depends: apache2 | httpd,
31
libmagic1,
32
php-auth-sasl,
33
- php-mail-mime (>= 1.8.0),
34
+ php-mail-mime (>= 1.8.5),
35
php-mdb2 (>= 2.5.0),
36
- php-net-smtp,
37
- php-net-socket,
38
- php-net-sieve,
39
- php-sabre-vobject-3 (>= 3.4.5),
40
+ php-bindings-libkolab,
41
+ php-bindings-libkolabxml,
42
php | php5,
43
php-cli | php5-cli,
44
php-gd | php5-gd,
45
php-intl | php5-intl,
46
php-ldap | php5-ldap,
47
php-pspell | php5-pspell,
48
- roundcubemail-plugin-acl,
49
- roundcubemail-plugin-archive,
50
- roundcubemail-plugin-filesystem-attachments,
51
- roundcubemail-plugin-jqueryui,
52
- roundcubemail-plugin-newmail-notifier,
53
- roundcubemail-plugin-password,
54
- roundcubemail-plugin-redundant-attachments,
55
- roundcubemail-plugin-zipdownload,
56
- roundcubemail-plugin-managesieve,
57
ucf,
58
${misc:Depends}
59
-Description: Core framework package for Roundcube
60
+Replaces: roundcube, roundcube-core, roundcube-mysql, roundcube-pgsql, roundcube-plugins, roundcubemail-core, roundcubemail-plugin-acl, roundcubemail-plugin-archive, roundcubemail-plugin-calendar, roundcubemail-plugin-contextmenu, roundcubemail-plugin-filesystem-attachments, roundcubemail-plugin-jqueryui, roundcubemail-plugin-kolab-activesync, roundcubemail-plugin-kolab-addressbook, roundcubemail-plugin-kolab-chat, roundcubemail-plugin-kolab-config, roundcubemail-plugin-kolab-files, roundcubemail-plugin-kolab-folders, roundcubemail-plugin-kolab-notes, roundcubemail-plugin-kolab-tags, roundcubemail-plugin-libcalendaring, roundcubemail-plugin-libkolab, roundcubemail-plugin-managesieve, roundcubemail-plugin-markasjunk, roundcubemail-plugin-newmail-notifier, roundcubemail-plugin-odfviewer, roundcubemail-plugin-password, roundcubemail-plugin-pdfviewer, roundcubemail-plugin-redundant-attachments, roundcubemail-plugin-tasklist, roundcubemail-plugin-zipdownload, roundcubemail-skin-plesk, roundcubemail-skin-plesk-larry
61
+Conflicts: roundcube, roundcube-core, roundcube-mysql, roundcube-pgsql, roundcube-plugins, roundcubemail-core, roundcubemail-plugin-acl, roundcubemail-plugin-archive, roundcubemail-plugin-calendar, roundcubemail-plugin-contextmenu, roundcubemail-plugin-filesystem-attachments, roundcubemail-plugin-jqueryui, roundcubemail-plugin-kolab-activesync, roundcubemail-plugin-kolab-addressbook, roundcubemail-plugin-kolab-chat, roundcubemail-plugin-kolab-config, roundcubemail-plugin-kolab-files, roundcubemail-plugin-kolab-folders, roundcubemail-plugin-kolab-notes, roundcubemail-plugin-kolab-tags, roundcubemail-plugin-libcalendaring, roundcubemail-plugin-libkolab, roundcubemail-plugin-managesieve, roundcubemail-plugin-markasjunk, roundcubemail-plugin-newmail-notifier, roundcubemail-plugin-odfviewer, roundcubemail-plugin-password, roundcubemail-plugin-pdfviewer, roundcubemail-plugin-redundant-attachments, roundcubemail-plugin-tasklist, roundcubemail-plugin-zipdownload, roundcubemail-skin-plesk, roundcubemail-skin-plesk-larry
62
+Provides: roundcube, roundcube-core, roundcube-mysql, roundcube-pgsql, roundcube-plugins, roundcubemail-core (= 1.5), roundcubemail-plugin-acl, roundcubemail-plugin-archive, roundcubemail-plugin-calendar, roundcubemail-plugin-contextmenu, roundcubemail-plugin-filesystem-attachments, roundcubemail-plugin-jqueryui (= 3.1.12), roundcubemail-plugin-kolab-activesync (= 3.1.12), roundcubemail-plugin-kolab-addressbook (= 3.1.12), roundcubemail-plugin-kolab-chat (= 3.1.12), roundcubemail-plugin-kolab-config (= 3.1.12), roundcubemail-plugin-kolab-files (= 3.1.12), roundcubemail-plugin-kolab-folders (= 3.1.12), roundcubemail-plugin-kolab-notes (= 3.1.12), roundcubemail-plugin-kolab-tags (= 3.1.12), roundcubemail-plugin-libcalendaring (= 3.1.12), roundcubemail-plugin-libkolab (= 3.1.12), roundcubemail-plugin-managesieve, roundcubemail-plugin-markasjunk, roundcubemail-plugin-newmail-notifier, roundcubemail-plugin-odfviewer, roundcubemail-plugin-password, roundcubemail-plugin-pdfviewer, roundcubemail-plugin-redundant-attachments, roundcubemail-plugin-tasklist, roundcubemail-plugin-zipdownload, roundcubemail-skin-plesk, roundcubemail-skin-plesk-larry
63
+Description: skinnable AJAX based webmail solution for IMAP servers
64
RoundCube Webmail is a browser-based multilingual IMAP client with an
65
application-like user interface. It provides full functionality
66
expected from an e-mail client, including MIME support, address book,
67
folder manipulation and message filters.
68
.
69
The user interface is fully skinnable using XHTML and CSS 2.
70
- .
71
- This package provides the core code for roundcube. You should install
72
- it along with one of the roundcube database metapackages.
73
+
74
+
75
+
76
debian.rules
Changed
177
1
2
3
DH_VERBOSE=1
4
5
+DESTDIR = $(CURDIR)/debian/roundcubemail
6
+
7
%:
8
dh $@
9
10
11
echo $(CURDIR)
12
find debian/ -type f | sort
13
14
- mkdir -p $(CURDIR)/debian/home/.composer/
15
- echo '{}' > $(CURDIR)/debian/home/.composer/composer.json
16
- patch -p1 < debian/patches/add-composer-autoloader.diff || :
17
- if [ -x "$$(which composer.sh 2>/dev/null)" ]; then \
18
- HOME=$(CURDIR)/debian/home/ composer.sh -vvv dumpautoload --optimize ; \
19
- else \
20
- HOME=$(CURDIR)/debian/home/ composer -vvv dumpautoload --optimize ; \
21
- fi
22
- sed -i -e "s|.baseDir . '/../../../share|'/usr/share|" $(CURDIR)/vendor/composer/autoload_psr4.php
23
- sed -i -e "s|.baseDir . '/../../../share|'/usr/share|" $(CURDIR)/vendor/composer/autoload_namespaces.php
24
- sed -i -e "s|.baseDir . '/../../../share|'/usr/share|" $(CURDIR)/vendor/composer/autoload_classmap.php
25
- sed -i -e "s|__DIR__ . '/../..' . '/../../../share|'/usr/share|" $(CURDIR)/vendor/composer/autoload_static.php || true
26
-
27
rm -rvf temp/js_cache/ tests/
28
29
- # Parse .less
30
- lessc -x ./skins/elastic/styles/styles.less > ./skins/elastic/styles/styles.css
31
- lessc -x ./skins/elastic/styles/print.less > ./skins/elastic/styles/print.css
32
- lessc -x ./skins/elastic/styles/embed.less > ./skins/elastic/styles/embed.css
33
+ # echo "Asset loc $(CURDIR)/public_html/assets/"
34
35
- # Compress the CSS
36
- for file in `find $(CURDIR)/ -type f -name "*.css" | grep -v /public_html/assets/`; do \
37
- asset_loc=$$(dirname $$(echo $${file} | sed \
38
- -e "s|$(CURDIR)/plugins/|$(CURDIR)/public_html/assets/plugins/|g" \
39
- -e "s|$(CURDIR)/program/|$(CURDIR)/public_html/assets/program/|g" \
40
- -e "s|$(CURDIR)/skins/|$(CURDIR)/public_html/assets/skins/|g") ; \
41
- ) ; \
42
- mkdir -p $${asset_loc} ; \
43
- echo "$${file} -> $${asset_loc}/$$(basename $${file})" ; \
44
- cat $${file} | cssmin > $${asset_loc}/$$(basename $${file}) || \
45
- cp -vf $${file} $${asset_loc}/$$(basename $${file}) ; \
46
- done
47
-
48
- # Compress the JS, but not the already minified
49
- for file in `find $(CURDIR)/ -type f -name "*.js" ! -name "*.min.js" | grep -v /public_html/assets/`; do \
50
- asset_loc=$$(dirname $$(echo $${file} | sed \
51
- -e "s|$(CURDIR)/plugins/|$(CURDIR)/public_html/assets/plugins/|g" \
52
- -e "s|$(CURDIR)/program/|$(CURDIR)/public_html/assets/program/|g" \
53
- -e "s|$(CURDIR)/skins/|$(CURDIR)/public_html/assets/skins/|g") ; \
54
- ) ; \
55
- mkdir -p $${asset_loc} ; \
56
- echo "$${file} -> $${asset_loc}/$$(basename $${file})" ; \
57
- uglifyjs $${file} > $${asset_loc}/$$(basename $${file}) || \
58
- cp -vf $${file} $${asset_loc}/$$(basename $${file}) ; \
59
- done
60
-
61
- # The already minied JS can just be copied over to the assets location
62
- for file in `find $(CURDIR)/ -type f -name "*.min.js" | grep -v /public_html/assets/`; do \
63
- asset_loc=$$(dirname $$(echo $${file} | sed \
64
- -e "s|$(CURDIR)/plugins/|$(CURDIR)/public_html/assets/plugins/|g" \
65
- -e "s|$(CURDIR)/program/|$(CURDIR)/public_html/assets/program/|g" \
66
- -e "s|$(CURDIR)/skins/|$(CURDIR)/public_html/assets/skins/|g") ; \
67
- ) ; \
68
- mkdir -p $${asset_loc} ; \
69
- cp -vf $${file} $${asset_loc}/$$(basename $${file}) ; \
70
- done
71
-
72
- # Other assets
73
- for file in $$(find $(CURDIR)/plugins/ $(CURDIR)/program/ $(CURDIR)/skins/ -type f \
74
+ # All assets
75
+ for file in $$(find $(CURDIR) -type f \
76
+ -name "*.css" -o \
77
+ -name "*.js" -o \
78
-name "*.eot" -o \
79
-name "*.gif" -o \
80
-name "*.ico" -o \
81
82
-name "*.woff2" \
83
); do \
84
asset_loc=$$(dirname $$(echo $${file} | sed \
85
- -e "s|$(CURDIR)/plugins/|$(CURDIR)/public_html/assets/plugins/|g" \
86
- -e "s|$(CURDIR)/program/|$(CURDIR)/public_html/assets/program/|g" \
87
- -e "s|$(CURDIR)/skins/|$(CURDIR)/public_html/assets/skins/|g") ; \
88
+ -e "s|$(CURDIR)|$(CURDIR)/public_html/assets/|g" \
89
+ -e "s|$(CURDIR)|$(CURDIR)/public_html/assets/|g" \
90
+ -e "s|$(CURDIR)|$(CURDIR)/public_html/assets/|g") ; \
91
) ; \
92
mkdir -p $${asset_loc} ; \
93
cp -avf $${file} $${asset_loc}/$$(basename $${file}); \
94
done
95
96
- # The watermark.html is an asset, too
97
- for skin in classic elastic larry; do \
98
- if [ -f "$(CURDIR)/skins/$${skin}/watermark.html" ]; then \
99
- cp -av $(CURDIR)/skins/$${skin}/watermark.html \
100
- $(CURDIR)/public_html/assets/skins/$${skin}/watermark.html ; \
101
- fi ; \
102
- done
103
+
104
+ install -d $(CURDIR)/public_html/assets/program/
105
+ install -d $(CURDIR)/public_html/assets/program/js
106
+ install -d $(CURDIR)/public_html/assets/program/resources
107
+ cp -LR $(CURDIR)/public_html/program/js $(CURDIR)/public_html/assets/program/
108
+ cp -LR $(CURDIR)/public_html/program/resources $(CURDIR)/public_html/assets/program/
109
110
for plugin in `find $(CURDIR)/plugins/ -type d -mindepth 1 -maxdepth 1 -exec basename {} \;) | sort -u`; do \
111
- pkgname=$$(echo $${plugin} | sed -e 's/_/-/g') ; \
112
- if [ -f "$(CURDIR)/debian/roundcubemail-plugin-$${pkgname}.install" ]; then \
113
- continue ; \
114
- fi ; \
115
if [ -f "$(CURDIR)/plugins/$${plugin}/config.inc.php.dist" ]; then \
116
mv $(CURDIR)/plugins/$${plugin}/config.inc.php.dist $(CURDIR)/config/$${plugin}.inc.php ; \
117
- echo "etc/roundcubemail/$${plugin}.inc.php usr/share/roundcubemail/plugins/$${plugin}/config.inc.php" >> debian/roundcubemail-plugin-$${pkgname}.links ; \
118
- echo "config/$${plugin}.inc.php etc/roundcubemail/" >> debian/roundcubemail-plugin-$${pkgname}.install ; \
119
+ echo "etc/roundcubemail/$${plugin}.inc.php usr/share/roundcubemail/plugins/$${plugin}/config.inc.php" >> debian/roundcubemail.links ; \
120
+ echo "config/$${plugin}.inc.php etc/roundcubemail/" >> debian/roundcubemail.install ; \
121
fi ; \
122
if [ -d "$(CURDIR)/public_html/assets/plugins/$${plugin}" ]; then \
123
- echo "public_html/assets/plugins/$${plugin} usr/share/roundcubemail/public_html/assets/plugins" >> debian/roundcubemail-plugin-$${pkgname}.install ; \
124
+ echo "public_html/assets/plugins/$${plugin} usr/share/roundcubemail/public_html/assets/plugins" >> debian/roundcubemail.install ; \
125
fi ; \
126
- echo "usr/share/roundcubemail/plugins/$${plugin}" >> debian/roundcubemail-plugin-$${pkgname}.dirs ; \
127
- echo "plugins/$${plugin} usr/share/roundcubemail/plugins/" >> debian/roundcubemail-plugin-$${pkgname}.install ; \
128
+ echo "usr/share/roundcubemail/plugins/$${plugin}" >> debian/roundcubemail.dirs ; \
129
+ echo "plugins/$${plugin} usr/share/roundcubemail/plugins/" >> debian/roundcubemail.install ; \
130
if [ -d "$(CURDIR)/plugins/$${plugin}/lib/Roundcube" ]; then \
131
- echo "usr/share/roundcubemail/plugins/$${plugin}/lib" >> debian/roundcubemail-plugin-$${pkgname}.dirs ; \
132
- echo "plugins/$${plugin}/lib/Roundcube usr/share/roundcubemail/plugins/$${plugin}/lib/" >> debian/roundcubemail-plugin-$${pkgname}.install ; \
133
+ echo "usr/share/roundcubemail/plugins/$${plugin}/lib" >> debian/roundcubemail.dirs ; \
134
+ echo "plugins/$${plugin}/lib/Roundcube usr/share/roundcubemail/plugins/$${plugin}/lib/" >> debian/roundcubemail.install ; \
135
fi ; \
136
- echo "" >> debian/control ; \
137
- echo "Package: roundcubemail-plugin-$${pkgname}" >> debian/control ; \
138
- echo "Architecture: all" >> debian/control ; \
139
- echo "Depends: roundcubemail-core" >> debian/control ; \
140
- echo "Breaks: roundcubemail (<< 1:1.2.4)" >> debian/control ; \
141
- echo "Replaces: roundcubemail (<< 1:1.2.4)" >> debian/control ; \
142
- echo "Description: $${plugin} plugin for Roundcube" >> debian/control ; \
143
- echo "" >> debian/control ; \
144
- sed -i -e "/Files:/ i\
145
- roundcubemail-plugin-$${plugin} deb web extra" debian/control ; \
146
done
147
148
+ cp -a ${CURDIR}/public_html/plugins/ $(CURDIR)/public_html/assets/plugins/
149
+ cp -a ${CURDIR}/public_html/skins/ $(CURDIR)/public_html/assets/skins/
150
+
151
cp -v ../SOURCES/2017111400.sql SQL/mysql/
152
153
if [ -f "/etc/plesk-release" ]; then \
154
155
cp -v ../SOURCES/plesk.managesieve.inc.php config/managesieve.inc.php ; \
156
cp -v ../SOURCES/plesk.password.inc.php config/password.inc.php ; \
157
sed -i -e 's/www-data adm/roundcube_sysuser roundcube_sysgroup/g' debian/logrotate ; \
158
- echo "misc:Depends:roundcubemail-skin-plesk" >> debian/roundcubemail-core.substvars ; \
159
else \
160
find config/ -type f | sort ; \
161
if [ -f "config/config.inc.php.sample" ]; then \
162
mv config/config.inc.php.sample config/config.inc.php ; \
163
fi ; \
164
- echo "misc:Depends:roundcubemail-skin-chameleon | roundcubemail-skin-kolab | roundcubemail-skin-enterprise" >> debian/roundcubemail-core.substvars ; \
165
fi
166
167
+
168
override_dh_install:
169
if [ ! -f "/etc/plesk-release" ]; then \
170
- mkdir -p $(CURDIR)/debian/roundcubemail-core/etc/apache2/sites-available ; \
171
- install -pm 644 $(CURDIR)/debian/conf/roundcubemail.conf $(CURDIR)/debian/roundcubemail-core/etc/apache2/sites-available/roundcubemail.conf ; \
172
+ mkdir -p $(CURDIR)/debian/roundcubemail/etc/apache2/sites-available ; \
173
+ install -pm 644 $(CURDIR)/debian/conf/roundcubemail.conf $(CURDIR)/debian/roundcubemail/etc/apache2/sites-available/roundcubemail.conf ; \
174
fi
175
176
dh_install
177
debian.series
Changed
6
1
2
-default-configuration.patch -p1
3
+#default-configuration.patch -p1
4
roundcubemail-1.4-beta86-plugin-enigma-homedir.patch -p1
5
-0001-Enigma-Optional-support-for-passwordless-keys-7265.patch -p1
6
debian.tar.gz/roundcubemail-core.docs
Deleted
3
1
2
-SQL/
3
debian.tar.gz/roundcubemail-core.install
Deleted
13
1
2
-bin usr/share/roundcubemail
3
-config/config.inc.php etc/roundcubemail
4
-config/defaults.inc.php etc/roundcubemail
5
-config/mimetypes.php etc/roundcubemail
6
-index.php usr/share/roundcubemail
7
-program usr/share/roundcubemail
8
-public_html/assets/program usr/share/roundcubemail/public_html/assets
9
-public_html/assets/skins usr/share/roundcubemail/public_html/assets
10
-public_html/index.php usr/share/roundcubemail/public_html
11
-skins usr/share/roundcubemail
12
-vendor usr/share/roundcubemail
13
debian.tar.gz/roundcubemail-core.postinst
Deleted
64
1
2
-#!/bin/sh
3
-
4
-#EXTRA#
5
-#DEBHELPER#
6
-
7
-set -e
8
-
9
-fixperms() {
10
- # Necessary because update_database() below will otherwise create console.log with the wrong permissions later on.
11
- touch /var/log/roundcubemail/console.log
12
- touch /var/log/roundcubemail/errors.log
13
-
14
- group=$(getent group roundcube_sysgroup >/dev/null 2>&1 && echo "roundcube_sysgroup" || echo "adm")
15
- user=$(getent passwd roundcube_sysuser >/dev/null 2>&1 && echo "roundcube_sysuser" || echo "www-data")
16
- chown -R ${user}:${group} /var/log/roundcubemail
17
-
18
- group=$(getent group roundcube_sysgroup >/dev/null 2>&1 && echo "roundcube_sysgroup" || echo "www-data")
19
- chown -R ${user}:${group} /var/lib/roundcubemail
20
- chown -R root:${group} /etc/roundcubemail
21
-
22
- chmod 750 \
23
- /var/lib/roundcubemail \
24
- /var/log/roundcubemail
25
-
26
- find /etc/roundcubemail -type d -exec chmod u+rwx,g+rx,g-w,o-rwx {} \;
27
- find /etc/roundcubemail -type f -exec chmod u+rw,u-x,g+r,g-wx,o-rwx {} \;
28
-}
29
-
30
-reload_apache()
31
-{
32
- if apache2ctl configtest 2>/dev/null; then
33
- invoke-rc.d apache2 $1 || true
34
- else
35
- echo "Your apache2 configuration is broken, so we're not restarting it for you."
36
- fi
37
-}
38
-
39
-update_database() {
40
- /usr/share/roundcubemail/bin/updatedb.sh \
41
- --dir /usr/share/doc/roundcubemail-core/SQL/ \
42
- --package roundcube \
43
- >/dev/null 2>&1 || :
44
-}
45
-
46
-case "$1" in
47
- configure)
48
- fixperms
49
- update_database
50
- a2enmod rewrite
51
-
52
- sed -i "s/rcmail-\!24ByteDESkey\*Str/`head -c 200 /dev/urandom | tr -dc _A-Z-a-z-0-9 | head -c24`/" \
53
- /etc/roundcubemail/defaults.inc.php || : &> /dev/null
54
-
55
- if [ -e "/etc/apache2/sites-available/roundcubemail.conf" -a ! -e "/etc/apache2/sites-enabled/roundcubemail.conf" ]; then
56
- a2ensite roundcubemail.conf
57
- fi
58
- reload_apache reload
59
- ;;
60
-esac
61
-
62
-exit 0
63
-
64
debian.tar.gz/roundcubemail.dirs
Changed
2
1
(renamed from roundcubemail-core.dirs)
2
debian.tar.gz/roundcubemail.docs
Changed
4
1
2
-README.md
3
+SQL/
4
debian.tar.gz/roundcubemail.install
Added
14
1
2
+bin usr/share/roundcubemail
3
+config/config.inc.php etc/roundcubemail
4
+config/defaults.inc.php etc/roundcubemail
5
+config/mimetypes.php etc/roundcubemail
6
+index.php usr/share/roundcubemail
7
+program usr/share/roundcubemail
8
+public_html/assets/program usr/share/roundcubemail/public_html/assets
9
+public_html/assets/skins usr/share/roundcubemail/public_html/assets
10
+public_html/assets/plugins usr/share/roundcubemail/public_html/assets
11
+public_html/index.php usr/share/roundcubemail/public_html
12
+skins usr/share/roundcubemail
13
+vendor usr/share/roundcubemail
14
debian.tar.gz/roundcubemail.links
Changed
2
1
(renamed from roundcubemail-core.links)
2
debian.tar.gz/roundcubemail.postinst
Added
64
1
2
+#!/bin/sh
3
+
4
+#EXTRA#
5
+#DEBHELPER#
6
+
7
+set -e
8
+
9
+fixperms() {
10
+ # Necessary because update_database() below will otherwise create console.log with the wrong permissions later on.
11
+ touch /var/log/roundcubemail/console.log
12
+ touch /var/log/roundcubemail/errors.log
13
+
14
+ group=$(getent group roundcube_sysgroup >/dev/null 2>&1 && echo "roundcube_sysgroup" || echo "adm")
15
+ user=$(getent passwd roundcube_sysuser >/dev/null 2>&1 && echo "roundcube_sysuser" || echo "www-data")
16
+ chown -R ${user}:${group} /var/log/roundcubemail
17
+
18
+ group=$(getent group roundcube_sysgroup >/dev/null 2>&1 && echo "roundcube_sysgroup" || echo "www-data")
19
+ chown -R ${user}:${group} /var/lib/roundcubemail
20
+ chown -R root:${group} /etc/roundcubemail
21
+
22
+ chmod 750 \
23
+ /var/lib/roundcubemail \
24
+ /var/log/roundcubemail
25
+
26
+ find /etc/roundcubemail -type d -exec chmod u+rwx,g+rx,g-w,o-rwx {} \;
27
+ find /etc/roundcubemail -type f -exec chmod u+rw,u-x,g+r,g-wx,o-rwx {} \;
28
+}
29
+
30
+reload_apache()
31
+{
32
+ if apache2ctl configtest 2>/dev/null; then
33
+ invoke-rc.d apache2 $1 || true
34
+ else
35
+ echo "Your apache2 configuration is broken, so we're not restarting it for you."
36
+ fi
37
+}
38
+
39
+update_database() {
40
+ /usr/share/roundcubemail/bin/updatedb.sh \
41
+ --dir /usr/share/doc/roundcubemail/SQL/ \
42
+ --package roundcube \
43
+ >/dev/null 2>&1 || :
44
+}
45
+
46
+case "$1" in
47
+ configure)
48
+ fixperms
49
+ update_database
50
+ a2enmod rewrite
51
+
52
+ sed -i "s/rcmail-\!24ByteDESkey\*Str/`head -c 200 /dev/urandom | tr -dc _A-Z-a-z-0-9 | head -c24`/" \
53
+ /etc/roundcubemail/defaults.inc.php || : &> /dev/null
54
+
55
+ if [ -e "/etc/apache2/sites-available/roundcubemail.conf" -a ! -e "/etc/apache2/sites-enabled/roundcubemail.conf" ]; then
56
+ a2ensite roundcubemail.conf
57
+ fi
58
+ reload_apache reload
59
+ ;;
60
+esac
61
+
62
+exit 0
63
+
64
debian.tar.gz/roundcubemail.postrm
Changed
2
1
(renamed from roundcubemail-core.postrm)
2
debian.tar.gz/roundcubemail.preinst
Changed
2
1
(renamed from roundcubemail-core.preinst)
2
debian.tar.gz/roundcubemail.prerm
Changed
2
1
(renamed from roundcubemail-core.prerm)
2
roundcubemail-1.4.13.tar.gz -> roundcubemail-1.5.2.tar.gz
Changed
roundcubemail-skin-kolab-0.5.0.tar.gz
Deleted
roundcubemail-skin-plesk-0.5.0.tar.gz
Deleted
roundcubemail.dsc
Changed
22
1
2
Source: roundcubemail
3
Binary: roundcubemail
4
Architecture: all
5
-Version: 1:1.4.13-0~kolab2
6
+Version: 1:1.5.2-0~kolab3
7
Maintainer: Jeroen van Meeuwen <vanmeeuwen@kolabsys.com>
8
Uploaders: Jeroen van Meeuwen <vanmeeuwen@kolabsys.com>
9
Homepage: http://www.roundcube.net/
10
Standards-Version: 3.9.3
11
Vcs-Browser: http://git.kolabsys.com/apt/roundcubemail/
12
Vcs-Git: git://git.kolabsys.com/git/apt/roundcubemail/
13
-Build-Depends: composer, cssmin, node-uglify, debhelper (>= 8), node-less (>= 1.7.0), psa | bash
14
+Build-Depends: debhelper (>= 8), psa | bash
15
Package-List:
16
roundcubemail deb web extra
17
- roundcubemail-core deb web extra
18
Files:
19
- 00000000000000000000000000000000 0 roundcubemail-1.4.13.tar.gz
20
+ 00000000000000000000000000000000 0 roundcubemail-1.5.2.tar.gz
21
00000000000000000000000000000000 0 debian.tar.gz
22