diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/l10n/hu_HU.js | 13 | ||||
-rw-r--r-- | lib/l10n/hu_HU.json | 13 | ||||
-rw-r--r-- | lib/l10n/lb.js | 2 | ||||
-rw-r--r-- | lib/l10n/lb.json | 2 | ||||
-rw-r--r-- | lib/l10n/sl.js | 2 | ||||
-rw-r--r-- | lib/l10n/sl.json | 2 | ||||
-rw-r--r-- | lib/private/DB/MDB2SchemaManager.php | 2 | ||||
-rw-r--r-- | lib/private/DB/Migrator.php | 20 | ||||
-rw-r--r-- | lib/private/DB/OracleMigrator.php | 6 | ||||
-rw-r--r-- | lib/private/DB/PostgreSqlMigrator.php | 55 | ||||
-rw-r--r-- | lib/private/DB/SQLiteMigrator.php | 11 | ||||
-rw-r--r-- | lib/private/Files/Storage/DAV.php | 13 | ||||
-rw-r--r-- | lib/private/User/Session.php | 101 |
13 files changed, 197 insertions, 45 deletions
diff --git a/lib/l10n/hu_HU.js b/lib/l10n/hu_HU.js index 4c17b946ca4..77cf7a401b0 100644 --- a/lib/l10n/hu_HU.js +++ b/lib/l10n/hu_HU.js @@ -9,8 +9,12 @@ OC.L10N.register( "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Úgy tűnik a példakonfigurációt próbálja ténylegesen használni. Ez nem támogatott, és működésképtelenné teheti a telepítést. Kérjük olvassa el a dokumentációt és azt követően változtasson a config.php-n!", "PHP %s or higher is required." : "PHP %s vagy ennél újabb szükséges.", "PHP with a version lower than %s is required." : "Ennél régebbi PHP szükséges: %s.", + "%sbit or higher PHP required." : "%sbit vagy ennél magasabb szükséges.", "Following databases are supported: %s" : "A következő adatbázisok támogatottak: %s", + "The command line tool %s could not be found" : "A parancssori eszköz %s nem található", "The library %s is not available." : "A könyvtár %s nem áll rendelkezésre.", + "Library %s with a version higher than %s is required - available version %s." : "A könyvtár a %s verzióval nagyobb mint a szükséges %s - elérhető verzió %s", + "Library %s with a version lower than %s is required - available version %s." : "A könyvtár a %s verzióval alacsonyabb mint a szükséges %s - elérhető verzió %s", "Following platforms are supported: %s" : "Ezek a platformok támogatottak: %s", "ownCloud %s or higher is required." : "ownCoud %s vagy ennél újabb szükséges.", "ownCloud %s or lower is required." : "ownCoud %s vagy ennél régebbi szükséges.", @@ -26,6 +30,7 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["%n órája","%n órája"], "_%n minute ago_::_%n minutes ago_" : ["%n perce","%n perce"], "seconds ago" : "pár másodperce", + "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "A modul ezzel az azonosítóval:%s nem létezik. Engedélyezd az alkalmazás beállításainál vagy vedd fel a kapcsolatot az adminisztártododdal.", "Empty filename is not allowed" : "Üres fájlnév nem engedétlyezett", "Dot files are not allowed" : "Pontozott fájlok nem engedétlyezettek", "4-byte characters are not supported in file names" : "4-byte karakterek nem támogatottak a fájl nevekben.", @@ -34,15 +39,20 @@ OC.L10N.register( "File name is too long" : "A fájlnév túl hosszú!", "App directory already exists" : "Az alkalmazás mappája már létezik", "Can't create app folder. Please fix permissions. %s" : "Nem lehetett létrehozni az alkalmazás mappáját. Kérem ellenőrizze a jogosultságokat. %s", + "Archive does not contain a directory named %s" : "Az arhívum nem tartalmaz könyvátrat ezzel a névvel %s", "No source specified when installing app" : "Az alkalmazás telepítéséhez nincs forrás megadva", "No href specified when installing app from http" : "Az alkalmazás http-n keresztül történő telepítéséhez nincs href hivetkozás megadva", "No path specified when installing app from local file" : "Az alkalmazás helyi telepítéséhez nincs útvonal (mappa) megadva", "Archives of type %s are not supported" : "A(z) %s típusú tömörített állomány nem támogatott", "Failed to open archive when installing app" : "Nem sikerült megnyitni a tömörített állományt a telepítés során", "App does not provide an info.xml file" : "Az alkalmazás nem szolgáltatott info.xml file-t", + "App cannot be installed because appinfo file cannot be read." : "Az alkalmazást nem telepíthető mert az alkalmazás-infó file nem olvasható.", + "Signature could not get checked. Please contact the app developer and check your admin screen." : "Az aláírás nem ellenőrizhető. Lépj kapcsolatba az alkalmazás fejlesztővel és ellenörízd az admin képernyődet.", "App can't be installed because of not allowed code in the App" : "Az alkalmazást nem lehet telepíteni, mert abban nem engedélyezett programkód szerepel", "App can't be installed because it is not compatible with this version of ownCloud" : "Az alkalmazás nem telepíthető, mert nem kompatibilis az ownCloud jelen verziójával.", "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Az alkalmazást nem lehet telepíteni, mert tartalmazza a \n<shipped>\ntrue\n</shipped>\ncímkét, ami a nem szállított alkalmazások esetén nem engedélyezett", + "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "Az alkalmazást nem telepíthető mert a verzió az info.xml-ben nem azonos azzal amit az alkalmazás boltban van feltüntetve.", + "%s enter the database username and name." : "%s adja meg az adatbázis felhasználó nevét és az adatbázi nevét.", "%s enter the database username." : "%s adja meg az adatbázist elérő felhasználó login nevét.", "%s enter the database name." : "%s adja meg az adatbázis nevét.", "%s you may not use dots in the database name" : "%s az adatbázis neve nem tartalmazhat pontot", @@ -55,6 +65,7 @@ OC.L10N.register( "PostgreSQL username and/or password not valid" : "A PostgreSQL felhasználói név és/vagy jelszó érvénytelen", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "A Mac OS X nem támogatott és %s nem lesz teljesen működőképes. Csak saját felelősségre használja!", "For the best results, please consider using a GNU/Linux server instead." : "A legjobb eredmény érdekében érdemes GNU/Linux-alapú kiszolgálót használni.", + "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Úgy tűnik, hogy ez a %s példány 32-bites PHP környezetben fut és az open_basedir a php.ini-ben van konfigurálva. A 4GB-nál nagyobb fájlok és problémákhoz vezetnek és nagy akadályt jelentenek.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Kérlek távolítsd el az open_basedir beállítást a php.ini-ből, vagy válts 64bit-es PHP-ra.", "Set an admin username." : "Állítson be egy felhasználói nevet az adminisztrációhoz.", "Set an admin password." : "Állítson be egy jelszót az adminisztrációhoz.", @@ -90,8 +101,10 @@ OC.L10N.register( "Sharing %s failed, because resharing is not allowed" : "%s megosztása nem sikerült, mert a megosztás továbbadása nincs engedélyezve", "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s megosztása nem sikerült, mert %s megosztási alrendszere nem találja", "Sharing %s failed, because the file could not be found in the file cache" : "%s megosztása nem sikerült, mert a fájl nem található a gyorsítótárban", + "Expiration date is in the past" : "Múltbéli lejárati idő.", "Could not find category \"%s\"" : "Ez a kategória nem található: \"%s\"", "Apps" : "Alkalmazások", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "A felhasználónévben csak a következő karakterek fordulhatnak elő: \"a-z\", \"A-Z\", \"0-9\", és \"_.@-\"", "A valid username must be provided" : "Érvényes felhasználónevet kell megadnia", "A valid password must be provided" : "Érvényes jelszót kell megadnia", "The username is already being used" : "Ez a bejelentkezési név már foglalt", diff --git a/lib/l10n/hu_HU.json b/lib/l10n/hu_HU.json index e5556782f81..fbebb566649 100644 --- a/lib/l10n/hu_HU.json +++ b/lib/l10n/hu_HU.json @@ -7,8 +7,12 @@ "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Úgy tűnik a példakonfigurációt próbálja ténylegesen használni. Ez nem támogatott, és működésképtelenné teheti a telepítést. Kérjük olvassa el a dokumentációt és azt követően változtasson a config.php-n!", "PHP %s or higher is required." : "PHP %s vagy ennél újabb szükséges.", "PHP with a version lower than %s is required." : "Ennél régebbi PHP szükséges: %s.", + "%sbit or higher PHP required." : "%sbit vagy ennél magasabb szükséges.", "Following databases are supported: %s" : "A következő adatbázisok támogatottak: %s", + "The command line tool %s could not be found" : "A parancssori eszköz %s nem található", "The library %s is not available." : "A könyvtár %s nem áll rendelkezésre.", + "Library %s with a version higher than %s is required - available version %s." : "A könyvtár a %s verzióval nagyobb mint a szükséges %s - elérhető verzió %s", + "Library %s with a version lower than %s is required - available version %s." : "A könyvtár a %s verzióval alacsonyabb mint a szükséges %s - elérhető verzió %s", "Following platforms are supported: %s" : "Ezek a platformok támogatottak: %s", "ownCloud %s or higher is required." : "ownCoud %s vagy ennél újabb szükséges.", "ownCloud %s or lower is required." : "ownCoud %s vagy ennél régebbi szükséges.", @@ -24,6 +28,7 @@ "_%n hour ago_::_%n hours ago_" : ["%n órája","%n órája"], "_%n minute ago_::_%n minutes ago_" : ["%n perce","%n perce"], "seconds ago" : "pár másodperce", + "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "A modul ezzel az azonosítóval:%s nem létezik. Engedélyezd az alkalmazás beállításainál vagy vedd fel a kapcsolatot az adminisztártododdal.", "Empty filename is not allowed" : "Üres fájlnév nem engedétlyezett", "Dot files are not allowed" : "Pontozott fájlok nem engedétlyezettek", "4-byte characters are not supported in file names" : "4-byte karakterek nem támogatottak a fájl nevekben.", @@ -32,15 +37,20 @@ "File name is too long" : "A fájlnév túl hosszú!", "App directory already exists" : "Az alkalmazás mappája már létezik", "Can't create app folder. Please fix permissions. %s" : "Nem lehetett létrehozni az alkalmazás mappáját. Kérem ellenőrizze a jogosultságokat. %s", + "Archive does not contain a directory named %s" : "Az arhívum nem tartalmaz könyvátrat ezzel a névvel %s", "No source specified when installing app" : "Az alkalmazás telepítéséhez nincs forrás megadva", "No href specified when installing app from http" : "Az alkalmazás http-n keresztül történő telepítéséhez nincs href hivetkozás megadva", "No path specified when installing app from local file" : "Az alkalmazás helyi telepítéséhez nincs útvonal (mappa) megadva", "Archives of type %s are not supported" : "A(z) %s típusú tömörített állomány nem támogatott", "Failed to open archive when installing app" : "Nem sikerült megnyitni a tömörített állományt a telepítés során", "App does not provide an info.xml file" : "Az alkalmazás nem szolgáltatott info.xml file-t", + "App cannot be installed because appinfo file cannot be read." : "Az alkalmazást nem telepíthető mert az alkalmazás-infó file nem olvasható.", + "Signature could not get checked. Please contact the app developer and check your admin screen." : "Az aláírás nem ellenőrizhető. Lépj kapcsolatba az alkalmazás fejlesztővel és ellenörízd az admin képernyődet.", "App can't be installed because of not allowed code in the App" : "Az alkalmazást nem lehet telepíteni, mert abban nem engedélyezett programkód szerepel", "App can't be installed because it is not compatible with this version of ownCloud" : "Az alkalmazás nem telepíthető, mert nem kompatibilis az ownCloud jelen verziójával.", "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Az alkalmazást nem lehet telepíteni, mert tartalmazza a \n<shipped>\ntrue\n</shipped>\ncímkét, ami a nem szállított alkalmazások esetén nem engedélyezett", + "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "Az alkalmazást nem telepíthető mert a verzió az info.xml-ben nem azonos azzal amit az alkalmazás boltban van feltüntetve.", + "%s enter the database username and name." : "%s adja meg az adatbázis felhasználó nevét és az adatbázi nevét.", "%s enter the database username." : "%s adja meg az adatbázist elérő felhasználó login nevét.", "%s enter the database name." : "%s adja meg az adatbázis nevét.", "%s you may not use dots in the database name" : "%s az adatbázis neve nem tartalmazhat pontot", @@ -53,6 +63,7 @@ "PostgreSQL username and/or password not valid" : "A PostgreSQL felhasználói név és/vagy jelszó érvénytelen", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "A Mac OS X nem támogatott és %s nem lesz teljesen működőképes. Csak saját felelősségre használja!", "For the best results, please consider using a GNU/Linux server instead." : "A legjobb eredmény érdekében érdemes GNU/Linux-alapú kiszolgálót használni.", + "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Úgy tűnik, hogy ez a %s példány 32-bites PHP környezetben fut és az open_basedir a php.ini-ben van konfigurálva. A 4GB-nál nagyobb fájlok és problémákhoz vezetnek és nagy akadályt jelentenek.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Kérlek távolítsd el az open_basedir beállítást a php.ini-ből, vagy válts 64bit-es PHP-ra.", "Set an admin username." : "Állítson be egy felhasználói nevet az adminisztrációhoz.", "Set an admin password." : "Állítson be egy jelszót az adminisztrációhoz.", @@ -88,8 +99,10 @@ "Sharing %s failed, because resharing is not allowed" : "%s megosztása nem sikerült, mert a megosztás továbbadása nincs engedélyezve", "Sharing %s failed, because the sharing backend for %s could not find its source" : "%s megosztása nem sikerült, mert %s megosztási alrendszere nem találja", "Sharing %s failed, because the file could not be found in the file cache" : "%s megosztása nem sikerült, mert a fájl nem található a gyorsítótárban", + "Expiration date is in the past" : "Múltbéli lejárati idő.", "Could not find category \"%s\"" : "Ez a kategória nem található: \"%s\"", "Apps" : "Alkalmazások", + "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "A felhasználónévben csak a következő karakterek fordulhatnak elő: \"a-z\", \"A-Z\", \"0-9\", és \"_.@-\"", "A valid username must be provided" : "Érvényes felhasználónevet kell megadnia", "A valid password must be provided" : "Érvényes jelszót kell megadnia", "The username is already being used" : "Ez a bejelentkezési név már foglalt", diff --git a/lib/l10n/lb.js b/lib/l10n/lb.js index d74b2a40c1b..0b87fdc1ef0 100644 --- a/lib/l10n/lb.js +++ b/lib/l10n/lb.js @@ -19,6 +19,8 @@ OC.L10N.register( "seconds ago" : "Sekonnen hir", "%s shared »%s« with you" : "Den/D' %s huet »%s« mat dir gedeelt", "Apps" : "Applikatiounen", + "A valid username must be provided" : "Et muss e gültegen Benotzernumm ugi ginn", + "A valid password must be provided" : "Et muss e gültegt Passwuert ugi ginn", "Help" : "Hëllef", "Personal" : "Perséinlech", "Users" : "Benotzer", diff --git a/lib/l10n/lb.json b/lib/l10n/lb.json index f1cfbd88580..7015a7cacee 100644 --- a/lib/l10n/lb.json +++ b/lib/l10n/lb.json @@ -17,6 +17,8 @@ "seconds ago" : "Sekonnen hir", "%s shared »%s« with you" : "Den/D' %s huet »%s« mat dir gedeelt", "Apps" : "Applikatiounen", + "A valid username must be provided" : "Et muss e gültegen Benotzernumm ugi ginn", + "A valid password must be provided" : "Et muss e gültegt Passwuert ugi ginn", "Help" : "Hëllef", "Personal" : "Perséinlech", "Users" : "Benotzer", diff --git a/lib/l10n/sl.js b/lib/l10n/sl.js index 5e0e1fbcdbd..4a2cc77056c 100644 --- a/lib/l10n/sl.js +++ b/lib/l10n/sl.js @@ -143,7 +143,9 @@ OC.L10N.register( "Please ask your server administrator to install the module." : "Obvestite skrbnika strežnika, da je treba namestiti manjkajoč modul.", "PHP module %s not installed." : "Modul PHP %s ni nameščen.", "PHP setting \"%s\" is not set to \"%s\"." : "Nastavitev PHP \"%s\" ni nastavljena na \"%s\".", + "libxml2 2.7.0 is at least required. Currently %s is installed." : "libxml2 mora biti vsaj verzija 2.7.0. Trenutno je nameščena %s.", "To fix this issue update your libxml2 version and restart your web server." : "Za rešitev te težave je treba posodobiti knjižnico libxml2 in nato ponovno zagnati spletni strežnik.", + "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Izgleda, da je PHP nastavljen, da odreže znake v 'inline doc' blokih. To bo povzročilo, da nekateri osnovni moduli ne bodo dosegljivi.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Napako je najverjetneje povzročil predpomnilnik ali pospeševalnik, kot sta Zend OPcache ali eAccelerator.", "PHP modules have been installed, but they are still listed as missing?" : "Ali so bili moduli PHP nameščeni, pa so še vedno označeni kot manjkajoči?", "Please ask your server administrator to restart the web server." : "Obvestite skrbnika strežnika, da je treba ponovno zagnati spletni strežnik.", diff --git a/lib/l10n/sl.json b/lib/l10n/sl.json index 48c9f69a86d..bcb933fa5a3 100644 --- a/lib/l10n/sl.json +++ b/lib/l10n/sl.json @@ -141,7 +141,9 @@ "Please ask your server administrator to install the module." : "Obvestite skrbnika strežnika, da je treba namestiti manjkajoč modul.", "PHP module %s not installed." : "Modul PHP %s ni nameščen.", "PHP setting \"%s\" is not set to \"%s\"." : "Nastavitev PHP \"%s\" ni nastavljena na \"%s\".", + "libxml2 2.7.0 is at least required. Currently %s is installed." : "libxml2 mora biti vsaj verzija 2.7.0. Trenutno je nameščena %s.", "To fix this issue update your libxml2 version and restart your web server." : "Za rešitev te težave je treba posodobiti knjižnico libxml2 in nato ponovno zagnati spletni strežnik.", + "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Izgleda, da je PHP nastavljen, da odreže znake v 'inline doc' blokih. To bo povzročilo, da nekateri osnovni moduli ne bodo dosegljivi.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Napako je najverjetneje povzročil predpomnilnik ali pospeševalnik, kot sta Zend OPcache ali eAccelerator.", "PHP modules have been installed, but they are still listed as missing?" : "Ali so bili moduli PHP nameščeni, pa so še vedno označeni kot manjkajoči?", "Please ask your server administrator to restart the web server." : "Obvestite skrbnika strežnika, da je treba ponovno zagnati spletni strežnik.", diff --git a/lib/private/DB/MDB2SchemaManager.php b/lib/private/DB/MDB2SchemaManager.php index 1d25ae9f18c..79811d8c6cd 100644 --- a/lib/private/DB/MDB2SchemaManager.php +++ b/lib/private/DB/MDB2SchemaManager.php @@ -84,7 +84,7 @@ class MDB2SchemaManager { } else if ($platform instanceof MySqlPlatform) { return new MySQLMigrator($this->conn, $random, $config, $dispatcher); } else if ($platform instanceof PostgreSqlPlatform) { - return new Migrator($this->conn, $random, $config, $dispatcher); + return new PostgreSqlMigrator($this->conn, $random, $config, $dispatcher); } else { return new NoCheckMigrator($this->conn, $random, $config, $dispatcher); } diff --git a/lib/private/DB/Migrator.php b/lib/private/DB/Migrator.php index 8b8a34d9865..f2efd6916d7 100644 --- a/lib/private/DB/Migrator.php +++ b/lib/private/DB/Migrator.php @@ -33,6 +33,8 @@ use \Doctrine\DBAL\Schema\Table; use \Doctrine\DBAL\Schema\Schema; use \Doctrine\DBAL\Schema\SchemaConfig; use \Doctrine\DBAL\Schema\Comparator; +use Doctrine\DBAL\Types\StringType; +use Doctrine\DBAL\Types\Type; use OCP\IConfig; use OCP\Security\ISecureRandom; use Symfony\Component\EventDispatcher\EventDispatcher; @@ -194,7 +196,25 @@ class Migrator { return new Table($newName, $table->getColumns(), $newIndexes, array(), 0, $table->getOptions()); } + /** + * @param Schema $targetSchema + * @param \Doctrine\DBAL\Connection $connection + * @return \Doctrine\DBAL\Schema\SchemaDiff + * @throws DBALException + */ protected function getDiff(Schema $targetSchema, \Doctrine\DBAL\Connection $connection) { + // adjust varchar columns with a length higher then getVarcharMaxLength to clob + foreach ($targetSchema->getTables() as $table) { + foreach ($table->getColumns() as $column) { + if ($column->getType() instanceof StringType) { + if ($column->getLength() > $connection->getDatabasePlatform()->getVarcharMaxLength()) { + $column->setType(Type::getType('text')); + $column->setLength(null); + } + } + } + } + $filterExpression = $this->getFilterExpression(); $this->connection->getConfiguration()-> setFilterSchemaAssetsExpression($filterExpression); diff --git a/lib/private/DB/OracleMigrator.php b/lib/private/DB/OracleMigrator.php index ceb89cf64d4..010f9213a1d 100644 --- a/lib/private/DB/OracleMigrator.php +++ b/lib/private/DB/OracleMigrator.php @@ -23,6 +23,7 @@ namespace OC\DB; +use Doctrine\DBAL\Schema\ColumnDiff; use Doctrine\DBAL\Schema\Schema; class OracleMigrator extends NoCheckMigrator { @@ -39,7 +40,12 @@ class OracleMigrator extends NoCheckMigrator { $tableDiff->name = $this->connection->quoteIdentifier($tableDiff->name); foreach ($tableDiff->changedColumns as $column) { $column->oldColumnName = $this->connection->quoteIdentifier($column->oldColumnName); + // auto increment is not relevant for oracle and can anyhow not be applied on change + $column->changedProperties = array_diff($column->changedProperties, ['autoincrement', 'unsigned']); } + $tableDiff->changedColumns = array_filter($tableDiff->changedColumns, function (ColumnDiff $column) { + return count($column->changedProperties) > 0; + }); } return $schemaDiff; diff --git a/lib/private/DB/PostgreSqlMigrator.php b/lib/private/DB/PostgreSqlMigrator.php new file mode 100644 index 00000000000..75e6e0a16c9 --- /dev/null +++ b/lib/private/DB/PostgreSqlMigrator.php @@ -0,0 +1,55 @@ +<?php +/** + * @author Thomas Müller <thomas.mueller@tmit.eu> + * + * @copyright Copyright (c) 2016, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * 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 Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OC\DB; + +use Doctrine\DBAL\Schema\Schema; + +class PostgreSqlMigrator extends Migrator { + /** + * @param Schema $targetSchema + * @param \Doctrine\DBAL\Connection $connection + * @return \Doctrine\DBAL\Schema\SchemaDiff + */ + protected function getDiff(Schema $targetSchema, \Doctrine\DBAL\Connection $connection) { + $schemaDiff = parent::getDiff($targetSchema, $connection); + + foreach ($schemaDiff->changedTables as $tableDiff) { + // fix default value in brackets - pg 9.4 is returning a negative default value in () + // see https://github.com/doctrine/dbal/issues/2427 + foreach ($tableDiff->changedColumns as $column) { + $column->changedProperties = array_filter($column->changedProperties, function ($changedProperties) use ($column) { + if ($changedProperties !== 'default') { + return true; + } + $fromDefault = $column->fromColumn->getDefault(); + $toDefault = $column->column->getDefault(); + $fromDefault = trim($fromDefault, "()"); + + // by intention usage of != + return $fromDefault != $toDefault; + }); + } + } + + return $schemaDiff; + } +} diff --git a/lib/private/DB/SQLiteMigrator.php b/lib/private/DB/SQLiteMigrator.php index 8ea32581011..837a3a2987f 100644 --- a/lib/private/DB/SQLiteMigrator.php +++ b/lib/private/DB/SQLiteMigrator.php @@ -26,6 +26,8 @@ namespace OC\DB; use Doctrine\DBAL\DBALException; use Doctrine\DBAL\Schema\Schema; +use Doctrine\DBAL\Types\BigIntType; +use Doctrine\DBAL\Types\Type; class SQLiteMigrator extends Migrator { @@ -76,6 +78,15 @@ class SQLiteMigrator extends Migrator { $platform->registerDoctrineTypeMapping('smallint unsigned', 'integer'); $platform->registerDoctrineTypeMapping('varchar ', 'string'); + // with sqlite autoincrement columns is of type integer + foreach ($targetSchema->getTables() as $table) { + foreach ($table->getColumns() as $column) { + if ($column->getType() instanceof BigIntType && $column->getAutoincrement()) { + $column->setType(Type::getType('integer')); + } + } + } + return parent::getDiff($targetSchema, $connection); } } diff --git a/lib/private/Files/Storage/DAV.php b/lib/private/Files/Storage/DAV.php index 0d41b3bab02..7eb6aa199b1 100644 --- a/lib/private/Files/Storage/DAV.php +++ b/lib/private/Files/Storage/DAV.php @@ -107,7 +107,11 @@ class DAV extends Common { } if ($this->secure === true) { // inject mock for testing - $certPath = \OC_User::getHome(\OC_User::getUser()) . '/files_external/rootcerts.crt'; + $certManager = \OC::$server->getCertificateManager(); + if (is_null($certManager)) { //no user + $certManager = \OC::$server->getCertificateManager(null); + } + $certPath = $certManager->getAbsoluteBundlePath(); if (file_exists($certPath)) { $this->certPath = $certPath; } @@ -812,15 +816,16 @@ class DAV extends Common { * which might be temporary */ private function convertException(Exception $e, $path = '') { + \OC::$server->getLogger()->logException($e); Util::writeLog('files_external', $e->getMessage(), Util::ERROR); if ($e instanceof ClientHttpException) { - if ($e->getHttpStatus() === 423) { + if ($e->getHttpStatus() === Http::STATUS_LOCKED) { throw new \OCP\Lock\LockedException($path); } - if ($e->getHttpStatus() === 401) { + if ($e->getHttpStatus() === Http::STATUS_UNAUTHORIZED) { // either password was changed or was invalid all along throw new StorageInvalidException(get_class($e) . ': ' . $e->getMessage()); - } else if ($e->getHttpStatus() === 405) { + } else if ($e->getHttpStatus() === Http::STATUS_METHOD_NOT_ALLOWED) { // ignore exception for MethodNotAllowed, false will be returned return; } diff --git a/lib/private/User/Session.php b/lib/private/User/Session.php index 6219a89e5b3..dcc2e66c6c3 100644 --- a/lib/private/User/Session.php +++ b/lib/private/User/Session.php @@ -280,46 +280,11 @@ class Session implements IUserSession, Emitter { */ public function login($uid, $password) { $this->session->regenerateId(); - if ($this->validateToken($password, $uid)) { - // When logging in with token, the password must be decrypted first before passing to login hook - try { - $token = $this->tokenProvider->getToken($password); - try { - $loginPassword = $this->tokenProvider->getPassword($token, $password); - $this->manager->emit('\OC\User', 'preLogin', array($uid, $loginPassword)); - } catch (PasswordlessTokenException $ex) { - $this->manager->emit('\OC\User', 'preLogin', array($uid, '')); - } - } catch (InvalidTokenException $ex) { - // Invalid token, nothing to do - } - $this->loginWithToken($password); - $user = $this->getUser(); + if ($this->validateToken($password, $uid)) { + return $this->loginWithToken($password); } else { - $this->manager->emit('\OC\User', 'preLogin', array($uid, $password)); - $user = $this->manager->checkPassword($uid, $password); - } - if ($user !== false) { - if (!is_null($user)) { - if ($user->isEnabled()) { - $this->setUser($user); - $this->setLoginName($uid); - $this->manager->emit('\OC\User', 'postLogin', array($user, $password)); - if ($this->isLoggedIn()) { - $this->prepareUserLogin(); - return true; - } else { - // injecting l10n does not work - there is a circular dependency between session and \OCP\L10N\IFactory - $message = \OC::$server->getL10N('lib')->t('Login canceled by app'); - throw new LoginException($message); - } - } else { - // injecting l10n does not work - there is a circular dependency between session and \OCP\L10N\IFactory - $message = \OC::$server->getL10N('lib')->t('User disabled'); - throw new LoginException($message); - } - } + return $this->loginWithPassword($uid, $password); } return false; } @@ -449,6 +414,49 @@ class Session implements IUserSession, Emitter { return false; } + /** + * Log an user in via login name and password + * + * @param string $uid + * @param string $password + * @return boolean + * @throws LoginException if an app canceld the login process or the user is not enabled + */ + private function loginWithPassword($uid, $password) { + $this->manager->emit('\OC\User', 'preLogin', array($uid, $password)); + $user = $this->manager->checkPassword($uid, $password); + if ($user === false) { + // Password check failed + return false; + } + + if ($user->isEnabled()) { + $this->setUser($user); + $this->setLoginName($uid); + $this->manager->emit('\OC\User', 'postLogin', array($user, $password)); + if ($this->isLoggedIn()) { + $this->prepareUserLogin(); + return true; + } else { + // injecting l10n does not work - there is a circular dependency between session and \OCP\L10N\IFactory + $message = \OC::$server->getL10N('lib')->t('Login canceled by app'); + throw new LoginException($message); + } + } else { + // injecting l10n does not work - there is a circular dependency between session and \OCP\L10N\IFactory + $message = \OC::$server->getL10N('lib')->t('User disabled'); + throw new LoginException($message); + } + return false; + } + + /** + * Log an user in with a given token (id) + * + * @param string $token + * @return boolean + * @throws LoginException if an app canceld the login process or the user is not enabled + */ private function loginWithToken($token) { try { $dbToken = $this->tokenProvider->getToken($token); @@ -457,12 +465,14 @@ class Session implements IUserSession, Emitter { } $uid = $dbToken->getUID(); + // When logging in with token, the password must be decrypted first before passing to login hook $password = ''; try { $password = $this->tokenProvider->getPassword($dbToken, $token); } catch (PasswordlessTokenException $ex) { // Ignore and use empty string instead } + $this->manager->emit('\OC\User', 'preLogin', array($uid, $password)); $user = $this->manager->get($uid); @@ -472,13 +482,24 @@ class Session implements IUserSession, Emitter { } if (!$user->isEnabled()) { // disabled users can not log in - return false; + // injecting l10n does not work - there is a circular dependency between session and \OCP\L10N\IFactory + $message = \OC::$server->getL10N('lib')->t('User disabled'); + throw new LoginException($message); } //login $this->setUser($user); - + $this->setLoginName($dbToken->getLoginName()); $this->manager->emit('\OC\User', 'postLogin', array($user, $password)); + + if ($this->isLoggedIn()) { + $this->prepareUserLogin(); + } else { + // injecting l10n does not work - there is a circular dependency between session and \OCP\L10N\IFactory + $message = \OC::$server->getL10N('lib')->t('Login canceled by app'); + throw new LoginException($message); + } + return true; } |