Date: Sunday, December 6, 2015 @ 20:15:46 Author: bpiotrowski Revision: 149079
archrelease: copy trunk to community-staging-i686, community-staging-x86_64 Added: murmur/repos/community-staging-i686/ murmur/repos/community-staging-i686/0003-fix-long-username-query.patch (from rev 149078, murmur/trunk/0003-fix-long-username-query.patch) murmur/repos/community-staging-i686/0004-fix-username-validation.patch (from rev 149078, murmur/trunk/0004-fix-username-validation.patch) murmur/repos/community-staging-i686/ChangeLog (from rev 149078, murmur/trunk/ChangeLog) murmur/repos/community-staging-i686/PKGBUILD (from rev 149078, murmur/trunk/PKGBUILD) murmur/repos/community-staging-i686/murmur.dbus.conf (from rev 149078, murmur/trunk/murmur.dbus.conf) murmur/repos/community-staging-i686/murmur.install (from rev 149078, murmur/trunk/murmur.install) murmur/repos/community-staging-i686/murmur.service (from rev 149078, murmur/trunk/murmur.service) murmur/repos/community-staging-x86_64/ murmur/repos/community-staging-x86_64/0003-fix-long-username-query.patch (from rev 149078, murmur/trunk/0003-fix-long-username-query.patch) murmur/repos/community-staging-x86_64/0004-fix-username-validation.patch (from rev 149078, murmur/trunk/0004-fix-username-validation.patch) murmur/repos/community-staging-x86_64/ChangeLog (from rev 149078, murmur/trunk/ChangeLog) murmur/repos/community-staging-x86_64/PKGBUILD (from rev 149078, murmur/trunk/PKGBUILD) murmur/repos/community-staging-x86_64/murmur.dbus.conf (from rev 149078, murmur/trunk/murmur.dbus.conf) murmur/repos/community-staging-x86_64/murmur.install (from rev 149078, murmur/trunk/murmur.install) murmur/repos/community-staging-x86_64/murmur.service (from rev 149078, murmur/trunk/murmur.service) -------------------------------------------------------------+ community-staging-i686/0003-fix-long-username-query.patch | 42 ++++++++ community-staging-i686/0004-fix-username-validation.patch | 36 ++++++ community-staging-i686/ChangeLog | 36 ++++++ community-staging-i686/PKGBUILD | 52 ++++++++++ community-staging-i686/murmur.dbus.conf | 22 ++++ community-staging-i686/murmur.install | 9 + community-staging-i686/murmur.service | 11 ++ community-staging-x86_64/0003-fix-long-username-query.patch | 42 ++++++++ community-staging-x86_64/0004-fix-username-validation.patch | 36 ++++++ community-staging-x86_64/ChangeLog | 36 ++++++ community-staging-x86_64/PKGBUILD | 52 ++++++++++ community-staging-x86_64/murmur.dbus.conf | 22 ++++ community-staging-x86_64/murmur.install | 9 + community-staging-x86_64/murmur.service | 11 ++ 14 files changed, 416 insertions(+) Copied: murmur/repos/community-staging-i686/0003-fix-long-username-query.patch (from rev 149078, murmur/trunk/0003-fix-long-username-query.patch) =================================================================== --- community-staging-i686/0003-fix-long-username-query.patch (rev 0) +++ community-staging-i686/0003-fix-long-username-query.patch 2015-12-06 19:15:46 UTC (rev 149079) @@ -0,0 +1,42 @@ +commit 6b33dda344f89e5a039b7d79eb43925040654242 +Author: Benjamin Jemlich <pc...@users.sourceforge.net> +Date: Tue Jun 29 14:49:14 2010 +0200 + + Don't crash on long usernames + +diff --git a/src/murmur/Messages.cpp b/src/murmur/Messages.cpp +index f12867a..de307ea 100644 +--- a/src/murmur/Messages.cpp ++++ b/src/murmur/Messages.cpp +@@ -1231,6 +1231,9 @@ void Server::msgQueryUsers(ServerUser *uSource, MumbleProto::QueryUsers &msg) { + + for (int i=0;i<msg.names_size();++i) { + QString name = u8(msg.names(i)); ++ if (!validateUserName(name)) { ++ continue; ++ } + int id = getUserID(name); + if (id >= 0) { + name = getUserName(id); +diff --git a/src/murmur/ServerDB.cpp b/src/murmur/ServerDB.cpp +index 11b6906..7e15def 100644 +--- a/src/murmur/ServerDB.cpp ++++ b/src/murmur/ServerDB.cpp +@@ -810,7 +810,7 @@ int Server::authenticate(QString &name, const QString &pw, const QStringList &em + TransactionHolder th; + QSqlQuery &query = *th.qsqQuery; + +- SQLPREP("SELECT `user_id`,`name`,`pw` FROM `%1users` WHERE `server_id` = ? AND `name` like ?"); ++ SQLPREP("SELECT `user_id`,`name`,`pw` FROM `%1users` WHERE `server_id` = ? AND LOWER(`name`) = LOWER(?)"); + query.addBindValue(iServerNum); + query.addBindValue(name); + SQLEXEC(); +@@ -1051,7 +1051,7 @@ int Server::getUserID(const QString &name) { + TransactionHolder th; + + QSqlQuery &query = *th.qsqQuery; +- SQLPREP("SELECT `user_id` FROM `%1users` WHERE `server_id` = ? AND `name` like ?"); ++ SQLPREP("SELECT `user_id` FROM `%1users` WHERE `server_id` = ? AND LOWER(`name`) = LOWER(?)"); + query.addBindValue(iServerNum); + query.addBindValue(name); + SQLEXEC(); Copied: murmur/repos/community-staging-i686/0004-fix-username-validation.patch (from rev 149078, murmur/trunk/0004-fix-username-validation.patch) =================================================================== --- community-staging-i686/0004-fix-username-validation.patch (rev 0) +++ community-staging-i686/0004-fix-username-validation.patch 2015-12-06 19:15:46 UTC (rev 149079) @@ -0,0 +1,36 @@ +commit 5c40cfeb4b5f8911df926c19f2dd628703840f64 +Author: Stefan Hacker <d...@users.sourceforge.net> +Date: Tue Jun 29 23:39:16 2010 +0200 + + Don't validate the name before we are sure it wasn't already validated by an authenticator + +diff --git a/src/murmur/Messages.cpp b/src/murmur/Messages.cpp +index de307ea..f12867a 100644 +--- a/src/murmur/Messages.cpp ++++ b/src/murmur/Messages.cpp +@@ -1231,9 +1231,6 @@ void Server::msgQueryUsers(ServerUser *uSource, MumbleProto::QueryUsers &msg) { + + for (int i=0;i<msg.names_size();++i) { + QString name = u8(msg.names(i)); +- if (!validateUserName(name)) { +- continue; +- } + int id = getUserID(name); + if (id >= 0) { + name = getUserName(id); +diff --git a/src/murmur/ServerDB.cpp b/src/murmur/ServerDB.cpp +index 7e15def..70b4ca4 100644 +--- a/src/murmur/ServerDB.cpp ++++ b/src/murmur/ServerDB.cpp +@@ -1048,6 +1048,11 @@ int Server::getUserID(const QString &name) { + qhUserNameCache.insert(id, name); + return id; + } ++ ++ if (!validateUserName(name)) { ++ return id; ++ } ++ + TransactionHolder th; + + QSqlQuery &query = *th.qsqQuery; Copied: murmur/repos/community-staging-i686/ChangeLog (from rev 149078, murmur/trunk/ChangeLog) =================================================================== --- community-staging-i686/ChangeLog (rev 0) +++ community-staging-i686/ChangeLog 2015-12-06 19:15:46 UTC (rev 149079) @@ -0,0 +1,36 @@ +2010-02-11 Otto Allmendinger <otto.allmendin...@googlemail.com> + * 1.2.2-1: + bump to version 1.2.2 + +2010-01-09 Otto Allmendinger <otto.allmendin...@googlemail.com> + * 1.2.1-1: + bump to version 1.2.1 + +2009-12-18 Otto Allmendinger <otto.allmendin...@googlemail.com> + * 1.2.0-8: + included dbus configuration file, changed default dbus settings + + * 1.2.0-7: + included manfile + renamed binary "murmur" to "murmurd" to be consistent with manfile + changed murmur user shell to /bin/false (shell access not required anymore) + +2009-12-17 Malte Rabenseifner <ma...@zearan.de> + * 1.2.0-6: + included manfile + using mumbles included privilige dropping + added some files to backup array + added logrotate configuration file + +2009-12-15 Otto Allmendinger <otto.allmendin...@googlemail.com> + * 1.2.0-5 : + simplified dependencies + increased visibility of install messages + + * 1.2.0-4 : + added boost to makedepends + + * 1.2.0-3 : + added ChangeLog + added post_upgrade() function + added x86_64 to arch Copied: murmur/repos/community-staging-i686/PKGBUILD (from rev 149078, murmur/trunk/PKGBUILD) =================================================================== --- community-staging-i686/PKGBUILD (rev 0) +++ community-staging-i686/PKGBUILD 2015-12-06 19:15:46 UTC (rev 149079) @@ -0,0 +1,52 @@ +# $Id$ +# Maintainer: Sven-Hendrik Haase <s...@lutzhaase.com> +# Contributor: Otto Allmendinger <otto.allmendin...@googlemail.com> +# Contributor: Malte Rabenseifner <ma...@zearan.de> + +pkgname=murmur +pkgver=1.2.11 +pkgrel=2 +pkgdesc="The voice chat application server for Mumble" +arch=('i686' 'x86_64') +url="http://mumble.sourceforge.net" +license=('BSD') +depends=('avahi' 'lsb-release' 'protobuf' 'qt4' 'icu') +makedepends=('boost') +backup=("etc/murmur.ini") +install="murmur.install" +source=(https://github.com/mumble-voip/mumble/releases/download/${pkgver}/mumble-${pkgver}.tar.gz{,.sig} + "murmur.dbus.conf" + "murmur.service") +md5sums=('bd1f15c6c8c8950e1d02452689759d38' + 'SKIP' + 'eddea4cdbd0bde4b960a67e16b5d5478' + 'd27a9adcd7561859e7b033046729bc0e') +validpgpkeys=(710E91FDF4284F2E69E0DEBDD7446C0F751B4695) + +build() { + cd ${srcdir}/mumble-$pkgver + + qmake-qt4 main.pro CONFIG+="no-client no-ice" + make release +} + +package() { + cd ${srcdir}/mumble-$pkgver + + sed -e "1i# vi:ft=cfg" \ + -e "s|database=|database=/var/lib/murmur/murmur.sqlite|" \ + -e "s|#logfile=murmur.log|logfile=|" \ + -e "s|#uname=|uname=murmur|" \ + -i scripts/murmur.ini + + install -dm755 -o 122 -g 122 ${pkgdir}/var/lib/murmur + install -Dm755 release/murmurd ${pkgdir}/usr/bin/murmurd + install -Dm644 scripts/murmur.ini ${pkgdir}/etc/murmur.ini + install -Dm644 ${srcdir}/murmur.dbus.conf ${pkgdir}/etc/dbus-1/system.d/murmur.conf + install -Dm644 README ${pkgdir}/usr/share/doc/murmur/README + install -Dm644 man/murmurd.1 ${pkgdir}/usr/share/man/man1/murmurd.1 + install -Dm644 ${srcdir}/murmur.service ${pkgdir}/usr/lib/systemd/system/murmur.service + install -Dm644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE +} + +# vim: sw=2:ts=2 et: Copied: murmur/repos/community-staging-i686/murmur.dbus.conf (from rev 149078, murmur/trunk/murmur.dbus.conf) =================================================================== --- community-staging-i686/murmur.dbus.conf (rev 0) +++ community-staging-i686/murmur.dbus.conf 2015-12-06 19:15:46 UTC (rev 149079) @@ -0,0 +1,22 @@ +<!-- vi: set ft=xml: --> +<!-- + As described in http://mumble.sourceforge.net/DBus, + but with different username +--> +<!DOCTYPE busconfig PUBLIC + "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" + "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> +<busconfig> + + <policy user="murmur"> + <allow own="net.sourceforge.mumble.murmur"/> + </policy> + <policy user="root"> + <allow own="net.sourceforge.mumble.murmur"/> + </policy> + + <policy context="default"> + <allow send_destination="net.sourceforge.mumble.murmur"/> + <allow receive_sender="net.sourceforge.mumble.murmur"/> + </policy> +</busconfig> Copied: murmur/repos/community-staging-i686/murmur.install (from rev 149078, murmur/trunk/murmur.install) =================================================================== --- community-staging-i686/murmur.install (rev 0) +++ community-staging-i686/murmur.install 2015-12-06 19:15:46 UTC (rev 149079) @@ -0,0 +1,9 @@ +post_install() { + getent group murmur > /dev/null || groupadd -g 122 murmur 1>/dev/null + getent passwd murmur > /dev/null || useradd -u 122 -d /var/lib/murmur -g murmur -s /bin/false murmur 1>/dev/null + + echo "You might have to reload dbus before launching murmur:" + echo " systemctl reload dbus" + echo "Don't forget to set the superuser password:" + echo " murmurd -ini /etc/murmur.ini -supw <your-password>" +} Copied: murmur/repos/community-staging-i686/murmur.service (from rev 149078, murmur/trunk/murmur.service) =================================================================== --- community-staging-i686/murmur.service (rev 0) +++ community-staging-i686/murmur.service 2015-12-06 19:15:46 UTC (rev 149079) @@ -0,0 +1,11 @@ +[Unit] +Description=Mumble Daemon +After=network.target + +[Service] +Type=simple +ExecStart=/usr/bin/murmurd -ini /etc/murmur.ini -fg +Restart=always + +[Install] +WantedBy=multi-user.target Copied: murmur/repos/community-staging-x86_64/0003-fix-long-username-query.patch (from rev 149078, murmur/trunk/0003-fix-long-username-query.patch) =================================================================== --- community-staging-x86_64/0003-fix-long-username-query.patch (rev 0) +++ community-staging-x86_64/0003-fix-long-username-query.patch 2015-12-06 19:15:46 UTC (rev 149079) @@ -0,0 +1,42 @@ +commit 6b33dda344f89e5a039b7d79eb43925040654242 +Author: Benjamin Jemlich <pc...@users.sourceforge.net> +Date: Tue Jun 29 14:49:14 2010 +0200 + + Don't crash on long usernames + +diff --git a/src/murmur/Messages.cpp b/src/murmur/Messages.cpp +index f12867a..de307ea 100644 +--- a/src/murmur/Messages.cpp ++++ b/src/murmur/Messages.cpp +@@ -1231,6 +1231,9 @@ void Server::msgQueryUsers(ServerUser *uSource, MumbleProto::QueryUsers &msg) { + + for (int i=0;i<msg.names_size();++i) { + QString name = u8(msg.names(i)); ++ if (!validateUserName(name)) { ++ continue; ++ } + int id = getUserID(name); + if (id >= 0) { + name = getUserName(id); +diff --git a/src/murmur/ServerDB.cpp b/src/murmur/ServerDB.cpp +index 11b6906..7e15def 100644 +--- a/src/murmur/ServerDB.cpp ++++ b/src/murmur/ServerDB.cpp +@@ -810,7 +810,7 @@ int Server::authenticate(QString &name, const QString &pw, const QStringList &em + TransactionHolder th; + QSqlQuery &query = *th.qsqQuery; + +- SQLPREP("SELECT `user_id`,`name`,`pw` FROM `%1users` WHERE `server_id` = ? AND `name` like ?"); ++ SQLPREP("SELECT `user_id`,`name`,`pw` FROM `%1users` WHERE `server_id` = ? AND LOWER(`name`) = LOWER(?)"); + query.addBindValue(iServerNum); + query.addBindValue(name); + SQLEXEC(); +@@ -1051,7 +1051,7 @@ int Server::getUserID(const QString &name) { + TransactionHolder th; + + QSqlQuery &query = *th.qsqQuery; +- SQLPREP("SELECT `user_id` FROM `%1users` WHERE `server_id` = ? AND `name` like ?"); ++ SQLPREP("SELECT `user_id` FROM `%1users` WHERE `server_id` = ? AND LOWER(`name`) = LOWER(?)"); + query.addBindValue(iServerNum); + query.addBindValue(name); + SQLEXEC(); Copied: murmur/repos/community-staging-x86_64/0004-fix-username-validation.patch (from rev 149078, murmur/trunk/0004-fix-username-validation.patch) =================================================================== --- community-staging-x86_64/0004-fix-username-validation.patch (rev 0) +++ community-staging-x86_64/0004-fix-username-validation.patch 2015-12-06 19:15:46 UTC (rev 149079) @@ -0,0 +1,36 @@ +commit 5c40cfeb4b5f8911df926c19f2dd628703840f64 +Author: Stefan Hacker <d...@users.sourceforge.net> +Date: Tue Jun 29 23:39:16 2010 +0200 + + Don't validate the name before we are sure it wasn't already validated by an authenticator + +diff --git a/src/murmur/Messages.cpp b/src/murmur/Messages.cpp +index de307ea..f12867a 100644 +--- a/src/murmur/Messages.cpp ++++ b/src/murmur/Messages.cpp +@@ -1231,9 +1231,6 @@ void Server::msgQueryUsers(ServerUser *uSource, MumbleProto::QueryUsers &msg) { + + for (int i=0;i<msg.names_size();++i) { + QString name = u8(msg.names(i)); +- if (!validateUserName(name)) { +- continue; +- } + int id = getUserID(name); + if (id >= 0) { + name = getUserName(id); +diff --git a/src/murmur/ServerDB.cpp b/src/murmur/ServerDB.cpp +index 7e15def..70b4ca4 100644 +--- a/src/murmur/ServerDB.cpp ++++ b/src/murmur/ServerDB.cpp +@@ -1048,6 +1048,11 @@ int Server::getUserID(const QString &name) { + qhUserNameCache.insert(id, name); + return id; + } ++ ++ if (!validateUserName(name)) { ++ return id; ++ } ++ + TransactionHolder th; + + QSqlQuery &query = *th.qsqQuery; Copied: murmur/repos/community-staging-x86_64/ChangeLog (from rev 149078, murmur/trunk/ChangeLog) =================================================================== --- community-staging-x86_64/ChangeLog (rev 0) +++ community-staging-x86_64/ChangeLog 2015-12-06 19:15:46 UTC (rev 149079) @@ -0,0 +1,36 @@ +2010-02-11 Otto Allmendinger <otto.allmendin...@googlemail.com> + * 1.2.2-1: + bump to version 1.2.2 + +2010-01-09 Otto Allmendinger <otto.allmendin...@googlemail.com> + * 1.2.1-1: + bump to version 1.2.1 + +2009-12-18 Otto Allmendinger <otto.allmendin...@googlemail.com> + * 1.2.0-8: + included dbus configuration file, changed default dbus settings + + * 1.2.0-7: + included manfile + renamed binary "murmur" to "murmurd" to be consistent with manfile + changed murmur user shell to /bin/false (shell access not required anymore) + +2009-12-17 Malte Rabenseifner <ma...@zearan.de> + * 1.2.0-6: + included manfile + using mumbles included privilige dropping + added some files to backup array + added logrotate configuration file + +2009-12-15 Otto Allmendinger <otto.allmendin...@googlemail.com> + * 1.2.0-5 : + simplified dependencies + increased visibility of install messages + + * 1.2.0-4 : + added boost to makedepends + + * 1.2.0-3 : + added ChangeLog + added post_upgrade() function + added x86_64 to arch Copied: murmur/repos/community-staging-x86_64/PKGBUILD (from rev 149078, murmur/trunk/PKGBUILD) =================================================================== --- community-staging-x86_64/PKGBUILD (rev 0) +++ community-staging-x86_64/PKGBUILD 2015-12-06 19:15:46 UTC (rev 149079) @@ -0,0 +1,52 @@ +# $Id$ +# Maintainer: Sven-Hendrik Haase <s...@lutzhaase.com> +# Contributor: Otto Allmendinger <otto.allmendin...@googlemail.com> +# Contributor: Malte Rabenseifner <ma...@zearan.de> + +pkgname=murmur +pkgver=1.2.11 +pkgrel=2 +pkgdesc="The voice chat application server for Mumble" +arch=('i686' 'x86_64') +url="http://mumble.sourceforge.net" +license=('BSD') +depends=('avahi' 'lsb-release' 'protobuf' 'qt4' 'icu') +makedepends=('boost') +backup=("etc/murmur.ini") +install="murmur.install" +source=(https://github.com/mumble-voip/mumble/releases/download/${pkgver}/mumble-${pkgver}.tar.gz{,.sig} + "murmur.dbus.conf" + "murmur.service") +md5sums=('bd1f15c6c8c8950e1d02452689759d38' + 'SKIP' + 'eddea4cdbd0bde4b960a67e16b5d5478' + 'd27a9adcd7561859e7b033046729bc0e') +validpgpkeys=(710E91FDF4284F2E69E0DEBDD7446C0F751B4695) + +build() { + cd ${srcdir}/mumble-$pkgver + + qmake-qt4 main.pro CONFIG+="no-client no-ice" + make release +} + +package() { + cd ${srcdir}/mumble-$pkgver + + sed -e "1i# vi:ft=cfg" \ + -e "s|database=|database=/var/lib/murmur/murmur.sqlite|" \ + -e "s|#logfile=murmur.log|logfile=|" \ + -e "s|#uname=|uname=murmur|" \ + -i scripts/murmur.ini + + install -dm755 -o 122 -g 122 ${pkgdir}/var/lib/murmur + install -Dm755 release/murmurd ${pkgdir}/usr/bin/murmurd + install -Dm644 scripts/murmur.ini ${pkgdir}/etc/murmur.ini + install -Dm644 ${srcdir}/murmur.dbus.conf ${pkgdir}/etc/dbus-1/system.d/murmur.conf + install -Dm644 README ${pkgdir}/usr/share/doc/murmur/README + install -Dm644 man/murmurd.1 ${pkgdir}/usr/share/man/man1/murmurd.1 + install -Dm644 ${srcdir}/murmur.service ${pkgdir}/usr/lib/systemd/system/murmur.service + install -Dm644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE +} + +# vim: sw=2:ts=2 et: Copied: murmur/repos/community-staging-x86_64/murmur.dbus.conf (from rev 149078, murmur/trunk/murmur.dbus.conf) =================================================================== --- community-staging-x86_64/murmur.dbus.conf (rev 0) +++ community-staging-x86_64/murmur.dbus.conf 2015-12-06 19:15:46 UTC (rev 149079) @@ -0,0 +1,22 @@ +<!-- vi: set ft=xml: --> +<!-- + As described in http://mumble.sourceforge.net/DBus, + but with different username +--> +<!DOCTYPE busconfig PUBLIC + "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" + "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> +<busconfig> + + <policy user="murmur"> + <allow own="net.sourceforge.mumble.murmur"/> + </policy> + <policy user="root"> + <allow own="net.sourceforge.mumble.murmur"/> + </policy> + + <policy context="default"> + <allow send_destination="net.sourceforge.mumble.murmur"/> + <allow receive_sender="net.sourceforge.mumble.murmur"/> + </policy> +</busconfig> Copied: murmur/repos/community-staging-x86_64/murmur.install (from rev 149078, murmur/trunk/murmur.install) =================================================================== --- community-staging-x86_64/murmur.install (rev 0) +++ community-staging-x86_64/murmur.install 2015-12-06 19:15:46 UTC (rev 149079) @@ -0,0 +1,9 @@ +post_install() { + getent group murmur > /dev/null || groupadd -g 122 murmur 1>/dev/null + getent passwd murmur > /dev/null || useradd -u 122 -d /var/lib/murmur -g murmur -s /bin/false murmur 1>/dev/null + + echo "You might have to reload dbus before launching murmur:" + echo " systemctl reload dbus" + echo "Don't forget to set the superuser password:" + echo " murmurd -ini /etc/murmur.ini -supw <your-password>" +} Copied: murmur/repos/community-staging-x86_64/murmur.service (from rev 149078, murmur/trunk/murmur.service) =================================================================== --- community-staging-x86_64/murmur.service (rev 0) +++ community-staging-x86_64/murmur.service 2015-12-06 19:15:46 UTC (rev 149079) @@ -0,0 +1,11 @@ +[Unit] +Description=Mumble Daemon +After=network.target + +[Service] +Type=simple +ExecStart=/usr/bin/murmurd -ini /etc/murmur.ini -fg +Restart=always + +[Install] +WantedBy=multi-user.target