phpMyAdmin/phpMyAdmin.spec
Eric Schirra 97736407c0 Accepting request 1063733 from home:ecsos:server
- Update to 5.2.1
  This is a security and bufix release.
  * Security
    - Fix (PMASA-2023-01, CWE-661) 
      Fix an XSS attack through the drag-and-drop upload feature.
  * Bugfix
    - issue #17522 Fix case where the routes cache file is invalid
    - issue #17506 Fix error when configuring 2FA without XMLWriter or Imagick
    - issue        Fix blank page when some error occurs
    - issue #17519 Fix Export pages not working in certain conditions
    - issue #17496 Fix error in table operation page when partitions are broken
    - issue #17386 Fix system memory and system swap values on Windows
    - issue #17517 Fix Database Server panel not getting hidden by ShowServerInfo configuration directive
    - issue #17271 Fix database names not showing on Processes tab
    - issue #17424 Fix export limit size calculation
    - issue #17366 Fix refresh rate popup on Monitor page
    - issue #17577 Fix monitor charts size on RTL languages
    - issue #17121 Fix password_hash function incorrectly adding single quotes to password before hashing
    - issue #17586 Fix statistics not showing for empty databases
    - issue #17592 Clicking on the New index link on the sidebar does not throw an error anymore
    - issue #17584 It's now possible to browse a database that includes two % in its name
    - issue        Fix PHP 8.2 deprecated string interpolation syntax
    - issue        Some languages are now correctly detected from the HTTP header
    - issue #17617 Sorting is correctly remembered when $cfg['RememberSorting'] is true
    - issue #17593 Table filtering now works when action buttons are on the right side of the row
    - issue #17388 Find and Replace using regex now makes a valid query if no matching result set found
    - issue #17551 Enum/Set editor will not fail to open when creating a new column
    - issue #17659 Fix error when a database group is named tables, views, functions, procedures or events
    - issue #17673 Allow empty values to be inserted into columns
    - issue #17620 Fix error handling at phpMyAdmin startup for the JS SQL console
    - issue        Fixed debug queries console broken UI for query time and group count
    - issue        Fixed escaping of SQL query and errors for the debug console
    - issue        Fix console toolbar UI when the bookmark feature is disabled and sql debug is enabled
    - issue #17543 Fix JS error on saving a new designer page
    - issue #17546 Fix JS error after using save as and open page operation on the designer
    - issue        Fix PHP warning on GIS visualization when there is only one GIS column
    - issue #17728 Some select HTML tags will now have the correct UI style
    - issue #17734 PHP deprecations will only be shown when in a development environment
    - issue #17369 Fix server error when blowfish_secret is not exactly 32 bytes long
    - issue #17736 Add utf8mb3 as an alias of utf8 on the charset description page
    - issue #16418 Fix FAQ 1.44 about manually removing vendor folders
    - issue #12359 Setup page now sends the Content-Security-Policy headers
    - issue #17747 The Column Visibility Toggle will not be hidden by other elements
    - issue #17756 Edit/Copy/Delete row now works when using GROUP BY
    - issue #17248 Support the UUID data type for MariaDB >= 10.7
    - issue #17656 Fix replace/change/set table prefix is not working
    - issue        Fix monitor page filter queries only filtering the first row
    - issue        Fix "Link not found!" on foreign columns for tables having no char column to show
    - issue #17390 Fix "Create view" modal doesn't show on results and empty results
    - issue #17772 Fix wrong styles for add button from central columns
    - issue #17389 Fix HTML disappears when exporting settings to browser's storage
    - issue #17166 Fix "Warning: #1287 'X' is deprecated [...] Please use ST_X instead." on search page
    - issue        Use jquery-migrate.min.js (14KB) instead of jquery-migrate.min.js (31KB)
    - issue #17842 Use jquery.validate.min.js (24 KB) instead of jquery.validate.js (50 KB)
    - issue #17281 Fix links to databases for information_schema.SCHEMATA
    - issue #17553 Fix Metro theme unreadable links above navigation tree
    - issue #17553 Metro theme UI fixes and improvements
    - issue #17553 Fix Metro theme login form with
    - issue #16042 Exported gzip file of database has first ~73 kB uncompressed and rest is gzip compressed in Firefox
    - issue #17705 Fix inline SQL query edit FK checkbox preventing submit buttons from working
    - issue #17777 Fix Uncaught TypeError: Cannot read properties of null (reading 'inline') on datepickers when re-opened
    - issue        Fix Original theme buttons style and login form width
    - issue #17892 Fix closing index edit modal and reopening causes it to fire twice
    - issue #17606 Fix preview SQL modal not working inside "Add Index" modal
    - issue        Fix PHP error on adding new column on create table form
    - issue #17482 Default to "Full texts" when running explain statements
    - issue        Fixed Chrome scrolling performance issue on a textarea of an "export as text" page
    - issue #17703 Fix datepicker appears on all fields, not just date
    - issue        Fix space in the tree line when a DB is expanded
    - issue #17340 Fix "New Table" page -> "VIRTUAL" attribute is lost when adding a new column
    - issue #17446 Fix missing option for STORED virtual column on MySQL and PERSISTENT is not supported on MySQL
    - issue #17446 Lower the check for virtual columns to MySQL>=5.7.6 nothing is supported on 5.7.5
    - issue        Fix column names option for CSV Export
    - issue #17177 Fix preview SQL when reordering columns doesn't work on move columns
    - issue #15887 Fixed DROP TABLE errors ignored on multi table select for DROP
    - issue #17944 Fix unable to create a view from tree view button
    - issue #17927 Fix key navigation between select inputs (drop an old Firefox workaround)
    - issue #17967 Fix missing icon for collapse all button
    - issue #18006 Fixed UUID columns can't be moved
    - issue        Add `spellcheck="false"` to all password fields and some text fields to avoid spell-jacking data leaks
    - issue        Remove non working "Analyze Explain at MariaDB.org" button (MariaDB stopped this service)
    - issue #17229 Add support for Web Authentication API because Chrome removed support for the U2F API
    - issue #18019 Fix "Call to a member function fetchAssoc() on bool" with SQL mode ONLY_FULL_GROUP_BY on monitor search logs
    - issue        Add back UUID and UUID_SHORT to functions on MySQL and all MariaDB versions
    - issue #17398 Fix clicking on JSON columns triggers update query
    - issue        Fix silent JSON parse error on upload progress
    - issue #17833 Fix "Add Parameter" button not working for Add Routine Screen
    - issue #17365 Fixed "Uncaught Error: regexp too big" on server status variables page
- Rebase phpMyAdmin-config.patch.

OBS-URL: https://build.opensuse.org/request/show/1063733
OBS-URL: https://build.opensuse.org/package/show/server:php:applications/phpMyAdmin?expand=0&rev=377
2023-02-08 07:53:06 +00:00

277 lines
9.8 KiB
RPMSpec

#
# spec file for package phpMyAdmin
#
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define ap_docroot_old /srv/www/htdocs
%define ap_docroot %{_datadir}
%define ap_tmpdir %{_localstatedir}/cache/%{name}
%define pma_config %{_sysconfdir}/%{name}/config.inc.php
%if !0%{?suse_version}
%define apache_user nobody
%define apache_group nogroup
%endif
Name: phpMyAdmin
Version: 5.2.1
Release: 0
Summary: Administration of MySQL over the web
License: GPL-2.0-or-later
Group: Productivity/Networking/Web/Frontends
URL: https://www.phpMyAdmin.net/
Source0: https://files.phpmyadmin.net/phpMyAdmin/%{version}/%{name}-%{version}-all-languages.tar.xz
Source1: https://files.phpmyadmin.net/phpMyAdmin/%{version}/%{name}-%{version}-all-languages.tar.xz.asc
# http://docs.phpmyadmin.net/en/latest/setup.html#verifying-phpmyadmin-releases
Source2: https://files.phpmyadmin.net/phpmyadmin.keyring#/%{name}.keyring
Source3: %{name}.http
Source4: %{name}.http.inc
Source100: %{name}-rpmlintrc
# Fix-SuSE: provide useful default config
Patch0: %{name}-config.patch
# Fix-SUSE: auto config for pma storage
Patch1: %{name}-pma.patch
BuildRequires: apache-rpm-macros
BuildRequires: fdupes
#
Requires: php-bz2
Requires: php-ctype
Requires: php-gd
Requires: php-gettext
Requires: php-iconv
Requires: php-json
Requires: php-mbstring
Requires: php-mysql
Requires: php-openssl
Requires: php-session
Recommends: php-curl
Recommends: php-zip
BuildArch: noarch
%description
phpMyAdmin can manage a whole MySQL server (needs a super-user) as well as a
single database. To accomplish the latter you'll need a properly set up MySQL
user who can read/write only the desired database. It's up to you to look up
the appropriate part in the MySQL manual.
Currently phpMyAdmin can:
* browse and drop databases, tables, views, fields and indexes
* create, copy, drop, rename and alter databases, tables, fields and indexes
* maintenance server, databases and tables, with proposals on server
configuration
* execute, edit and bookmark any SQL-statement, even batch-queries
* load text files into tables
* create^1 and read dumps of tables
* export^1 data to various formats: CSV, XML, PDF, ISO/IEC 26300 -
OpenDocument Text and Spreadsheet, Word, Excel and L^AT[E]X formats
* import data and MySQL structures from Microsoft Excel and OpenDocument
spreadsheets, as well as XML, CSV, and SQL files
* administer multiple servers
* manage MySQL users and privileges
* check referential integrity in MyISAM tables
* using Query-by-example (QBE), create complex queries automatically
connecting required tables
* create PDF graphics of your Database layout
* search globally in a database or a subset of it
* transform stored data into any format using a set of predefined functions,
like displaying BLOB-data as image or download-link
* track changes on databases, tables and views
* support InnoDB tables and foreign keys (see FAQ 3.6)
* support mysqli, the improved MySQL extension (see FAQ 1.17)
* communicate in 57 different languages
* synchronize two databases residing on the same as well as remote servers
(see FAQ 9.1)
%package apache
Summary: Apache configuration for %{name}
Group: Productivity/Networking/Web/Utilities
BuildRequires: apache-rpm-macros-control
BuildRequires: apache2
Requires: %{name}
Requires: apache2
Requires(post): %{_sbindir}/a2enmod
Requires(post): %{_sbindir}/a2enflag
Requires(post): php
Requires(postun):%{_sbindir}/a2enflag
Recommends: mod_php_any >= 7.4
Supplements: packageand(apache2:%name)
%description apache
This subpackage contains the Apache configuration files
%lang_package
%prep
%setup -q -n %{name}-%{version}-all-languages
## rpmlint:
# wrong-file-end-of-line-encoding
perl -p -i -e 's|\r\n|\n|' examples/config.manyhosts.inc.php
%patch0
%patch1
# clean up
find . -name .github -type d -prune -exec rm -r {} \;
for file in *.orig .buildinfo .gitkeep .travis.yml .weblate .jshintrc .eslintrc.json \
.php_cs.dist .scrutinizer.yml .editorconfig php_twig.h twig.c; do
find . -type f -name $file -delete
done
# permissions
find . -type d -exec chmod 755 {} \;
find . ! -name '*.sh' ! -name '*-query' -type f -exec chmod 644 {} \;
%build
%install
#%%{__install} -d -m0750 $RPM_BUILD_ROOT%%{_sysconfdir}/%%{name}
install -d -m0755 %{buildroot}%{ap_docroot}/%{name}
cp -dR *.php *.ico *.txt js libraries locale themes templates vendor \
%{buildroot}%{ap_docroot}/%{name}
# install config to config dir
install -D -m0640 %{buildroot}%{ap_docroot}/%{name}/config.sample.inc.php \
%{buildroot}%{_sysconfdir}/%{name}/config.inc.php
# install TempDir (now in cache)
install -d -m0770 %{buildroot}%{ap_tmpdir}
# fix libraries/vendor_config.php
sed -i -e "s,@docdir@,%{_docdir}/%{name},g" -e "s,@sysconfdir@,%{_sysconfdir}/%{name},g" -e "s,@tmpdir@,%{ap_tmpdir},g" \
%{buildroot}%{ap_docroot}/%{name}/libraries/vendor_config.php
# fix libraries/common.inc.php
#%%{__sed} -i -e "s,@PMA_Config@,%%{_sysconfdir}/%%{name}/config.inc.php,g" \
# $RPM_BUILD_ROOT%%{ap_docroot}/%%{name}/libraries/common.inc.php
# generate file list
find %{buildroot}%{ap_docroot}/%{name} -mindepth 1 -maxdepth 1 -type d | sed -e "s@$RPM_BUILD_ROOT@@" > FILELIST
find %{buildroot}%{ap_docroot}/%{name} -maxdepth 1 -type f | grep -v 'config.inc.php' | sed -e "s@$RPM_BUILD_ROOT@@" >> FILELIST
install -D -m0644 %{SOURCE3} %{buildroot}%{apache_sysconfdir}/conf.d/%{name}.conf
install -D -m0644 %{SOURCE4} %{buildroot}%{apache_sysconfdir}/conf.d/%{name}.inc
# fix paths in http config
sed -i -e "s,@ap_docroot@,%{ap_docroot},g" -e "s,@name@,%{name},g" \
-e "s,@docdir@,%{_docdir},g" -e "s,@ap_sysconfdir@,%{apache_sysconfdir},g" -e "s,@ap_tmpdir@,%{ap_tmpdir},g" %{buildroot}%{apache_sysconfdir}/conf.d/%{name}.conf
# rpmlint stuff
%fdupes %{buildroot}%{ap_docroot}/%{name}
# find language files
%find_lang %{name} --all-name
%post
# generate blowfish secret only on install, not on upgrade
if [ $1 -eq 1 ]; then
sed -i -e "s|^\(\$cfg\['blowfish_secret'\] = '\)\(';\).*|\1$(head -c 32 /dev/urandom | base64)\2|" %{pma_config}
fi
%preun
# only on uninstall, not on upgrade
if [ $1 -eq 0 ]; then
echo "info: empty %{ap_tmpdir}/* for clean uninstall"
rm -rf %{ap_tmpdir}/* || :
fi
%postun
# only on upgrade, not on install
if [ $1 -ge 1 ]; then
echo "info: empty %{ap_tmpdir}/* for clean upgrade"
rm -rf %{ap_tmpdir}/* || :
fi
%post apache
# only do on install, not on upgrade
if [ $1 -eq 1 ]; then
# enable required apache modules
a2enmod version >/dev/null || :
# enable mod_php if preform MPM is used
if start_apache2 -V | grep -q prefork; then
mod_php=$(php -r "echo 'php' . PHP_MAJOR_VERSION;")
echo "info: adding ${mod_php} to APACHE_MODULES"
a2enmod ${mod_php} >/dev/null || :
fi
# enable phpMyAdmin flag
echo "info: adding %{name} to APACHE_SERVER_FLAGS"
a2enflag %{name} >/dev/null || :
fi
# on upgrade, check if new cache directory is in config
if [ $1 -gt 1 ] && ! grep -q %{ap_tmpdir} %{apache_sysconfdir}/conf.d/%{name}.conf; then
# not found, create backup first
cp --backup=t --preserve %{apache_sysconfdir}/conf.d/%{name}.conf{,.bak}
# add cache directory /var/cache/phpMyAdmin
echo "info: new cache directory added to %{apache_sysconfdir}/conf.d/%{name}.conf"
sed -i "s|\(php_admin_value open_basedir[^:]*\)|\1:%{ap_tmpdir}|" %{apache_sysconfdir}/conf.d/%{name}.conf
cat >> %{apache_sysconfdir}/conf.d/%{name}.conf << EOF
<Directory %{ap_tmpdir}>
<IfVersion < 2.4>
Order allow,deny
Deny from all
</IfVersion>
<IfVersion >= 2.4>
<IfModule !mod_access_compat.c>
Require all denied
</IfModule>
<IfModule mod_access_compat.c>
Order deny,allow
Deny from all
</IfModule>
</IfVersion>
</Directory>
EOF
# boo#1092345: change ap_docroot from /srv/www/htdocs to /usr/share
if grep -q %{ap_docroot_old} %{apache_sysconfdir}/conf.d/%{name}.conf; then
echo "info: changed %{ap_docroot_old} to %{ap_docroot} in %{apache_sysconfdir}/conf.d/%{name}.conf"
sed -i "s|%{ap_docroot_old}|%{ap_docroot}|g" %{apache_sysconfdir}/conf.d/%{name}.conf
fi
fi
%postun apache
# only do on uninstall, not on upgrade
if [ $1 -eq 0 ]; then
# disable phpMyAdmin flag
echo "info: removing %{name} from APACHE_SERVER_FLAGS"
a2enflag -d %{name} >/dev/null || :
fi
%apache_request_restart
%posttrans apache
# restart apache instances after zypper or rpm transaction, if not have restarted already
%apache_restart_if_needed
%files -f FILELIST
%defattr(644,root,root,755)
%doc ChangeLog
%license LICENSE
%doc README RELEASE-DATE*
%doc examples doc sql
%dir %attr(0750,root,%{apache_group}) %{_sysconfdir}/%{name}
%dir %attr(0770,root,%{apache_group}) %{ap_tmpdir}
%config(noreplace) %{_sysconfdir}/%{name}/config.inc.php
%dir %{ap_docroot}/%{name}
%exclude %{ap_docroot}/%{name}/locale/*/LC_MESSAGES/phpmyadmin.mo
%exclude %{ap_docroot}/%{name}/vendor/phpmyadmin/sql-parser/locale/*/LC_MESSAGES/sqlparser.mo
%files apache
%config(noreplace) %{apache_sysconfdir}/conf.d/%{name}.conf
%config(noreplace) %{apache_sysconfdir}/conf.d/%{name}.inc
%files lang -f %{name}.lang
%changelog