mirror of
https://github.com/nextcloud/server.git
synced 2026-06-09 08:44:07 -04:00
Merge branch 'master' into ext-fs-irods-master
This commit is contained in:
commit
0f32c5ec34
1629 changed files with 57367 additions and 56082 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -6,7 +6,7 @@ config/mount.php
|
|||
apps/inc.php
|
||||
|
||||
# ignore all apps except core ones
|
||||
apps/*
|
||||
apps*
|
||||
!apps/files
|
||||
!apps/files_encryption
|
||||
!apps/files_external
|
||||
|
|
|
|||
2
3rdparty
2
3rdparty
|
|
@ -1 +1 @@
|
|||
Subproject commit a13af72fbe8983686fc47489a750e60319f68ac2
|
||||
Subproject commit e312294ef62873df2b8c02e774f9dfe1b7fbc38d
|
||||
|
|
@ -1,11 +1,15 @@
|
|||
## Submitting issues
|
||||
|
||||
If you have questions about how to use ownCloud, please direct these to the [mailing list][mailinglist] or our [forum][forum]. We are also available on [IRC][irc].
|
||||
If you have questions about how to install or use ownCloud, please direct these to the [mailing list][mailinglist] or our [forum][forum]. We are also available on [IRC][irc].
|
||||
|
||||
### TL;DR
|
||||
|
||||
* The [issue template can be found here][template] but be aware of the different repositories! See list below.
|
||||
|
||||
### Guidelines
|
||||
* Please search the existing issues first, it's likely that your issue was already reported.
|
||||
* [Report the issue](https://github.com/owncloud/core/issues/new) using our [template][template], it includes all the informations we need to track down the issue.
|
||||
* This repository is *only* for issues within the ownCloud core code. Issues in other compontents should be reported in their own repositores:
|
||||
* Please search the existing issues first, it's likely that your issue was already reported or even fixed.
|
||||
* This repository is *only* for issues within the ownCloud core code. This also includes the apps: files, encryption, external storage, sharing, deleted files, versions, LDAP, and WebDAV Auth
|
||||
* The issues in other components should be reported in their respective repositories:
|
||||
- [Android client](https://github.com/owncloud/android/issues)
|
||||
- [iOS client](https://github.com/owncloud/ios-issues/issues)
|
||||
- [Desktop client](https://github.com/owncloud/mirall/issues)
|
||||
|
|
@ -14,12 +18,12 @@ If you have questions about how to use ownCloud, please direct these to the [mai
|
|||
- [Calendar](https://github.com/owncloud/calendar/issues)
|
||||
- [Contacts](https://github.com/owncloud/contacts/issues)
|
||||
- [Mail](https://github.com/owncloud/mail/issues)
|
||||
- [Media/Music](https://github.com/owncloud/media/issues)
|
||||
- [News](https://github.com/owncloud/news/issues)
|
||||
- [Notes](https://github.com/owncloud/notes/issues)
|
||||
- [Shorty](https://github.com/owncloud/shorty/issues)
|
||||
- [other apps](https://github.com/owncloud/apps/issues) (e.g. Pictures, Music, Tasks, ...)
|
||||
|
||||
If your issue appears to be a bug, and hasn't been reported, open a new issue.
|
||||
- [All other apps](https://github.com/owncloud/apps/issues) (e.g. Pictures, Tasks, ...)
|
||||
* Report the issue using our [template][template], it includes all the information we need to track down the issue.
|
||||
|
||||
Help us to maximize the effort we can spend fixing issues and adding new features, by not reporting duplicate issues.
|
||||
|
||||
|
|
@ -34,7 +38,7 @@ Thanks for wanting to contribute source code to ownCloud. That's great!
|
|||
|
||||
Before we're able to merge your code into the ownCloud core, you need to sign our [Contributor Agreement][agreement].
|
||||
|
||||
Please read the [Developer Manuals][devmanual] to get useful infos like how to create your first application or how to test the ownCloud code with phpunit.
|
||||
Please read the [Developer Manuals][devmanual] to learn how to create your first application or how to test the ownCloud code with PHPUnit.
|
||||
|
||||
[agreement]: http://owncloud.org/about/contributor-agreement/
|
||||
[devmanual]: http://owncloud.org/dev/
|
||||
|
|
|
|||
|
|
@ -15,6 +15,14 @@ $mimetype = isset($_GET['mimetype']) ? $_GET['mimetype'] : '';
|
|||
|
||||
// make filelist
|
||||
$files = array();
|
||||
// If a type other than directory is requested first load them.
|
||||
if($mimetype && strpos($mimetype, 'httpd/unix-directory') === false) {
|
||||
foreach( \OC\Files\Filesystem::getDirectoryContent( $dir, 'httpd/unix-directory' ) as $i ) {
|
||||
$i["date"] = OCP\Util::formatDate($i["mtime"] );
|
||||
$i['mimetype_icon'] = $i['type'] == 'dir' ? \mimetype_icon('dir'): \mimetype_icon($i['mimetype']);
|
||||
$files[] = $i;
|
||||
}
|
||||
}
|
||||
foreach( \OC\Files\Filesystem::getDirectoryContent( $dir, $mimetype ) as $i ) {
|
||||
$i["date"] = OCP\Util::formatDate($i["mtime"] );
|
||||
$i['mimetype_icon'] = $i['type'] == 'dir' ? \mimetype_icon('dir'): \mimetype_icon($i['mimetype']);
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ foreach ($mountPoints as $mountPoint) {
|
|||
ScanListener::$mountPoints[$storage->getId()] = $mountPoint;
|
||||
$scanner = $storage->getScanner();
|
||||
if ($force) {
|
||||
$scanner->scan('');
|
||||
$scanner->scan('', \OC\Files\Cache\Scanner::SCAN_RECURSIVE, \OC\Files\Cache\Scanner::REUSE_ETAG);
|
||||
} else {
|
||||
$scanner->backgroundScan();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,4 +20,4 @@ OC_Search::registerProvider('OC_Search_Provider_File');
|
|||
\OC_Hook::connect('OC_Filesystem', 'post_delete', '\OC\Files\Cache\Updater', 'deleteHook');
|
||||
\OC_Hook::connect('OC_Filesystem', 'post_rename', '\OC\Files\Cache\Updater', 'renameHook');
|
||||
|
||||
\OC_BackgroundJob_RegularTask::register('\OC\Files\Cache\BackgroundWatcher', 'checkNext');
|
||||
\OCP\BackgroundJob::addRegularTask('\OC\Files\Cache\BackgroundWatcher', 'checkNext');
|
||||
|
|
|
|||
|
|
@ -63,8 +63,12 @@
|
|||
}
|
||||
#filestable { position: relative; top:37px; width:100%; }
|
||||
tbody tr { background-color:#fff; height:2.5em; }
|
||||
tbody tr:hover, tbody tr:active, tbody tr.selected { background-color:#f8f8f8; }
|
||||
tbody tr.selected { background-color:#eee; }
|
||||
tbody tr:hover, tbody tr:active {
|
||||
background-color: rgb(240,240,240);
|
||||
}
|
||||
tbody tr.selected {
|
||||
background-color: rgb(230,230,230);
|
||||
}
|
||||
tbody a { color:#000; }
|
||||
span.extension, span.uploading, td.date { color:#999; }
|
||||
span.extension { text-transform:lowercase; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; filter:alpha(opacity=70); opacity:.7; -webkit-transition:opacity 300ms; -moz-transition:opacity 300ms; -o-transition:opacity 300ms; transition:opacity 300ms; }
|
||||
|
|
@ -81,7 +85,12 @@ table th#headerDate, table td.date { min-width:11em; padding:0 .1em 0 1em; text-
|
|||
/* Multiselect bar */
|
||||
#filestable.multiselect { top:63px; }
|
||||
table.multiselect thead { position:fixed; top:82px; z-index:1; -moz-box-sizing: border-box; box-sizing: border-box; left: 0; padding-left: 64px; width:100%; }
|
||||
table.multiselect thead th { background:rgba(230,230,230,.8); color:#000; font-weight:bold; border-bottom:0; }
|
||||
table.multiselect thead th {
|
||||
background-color: rgba(210,210,210,.7);
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
border-bottom: 0;
|
||||
}
|
||||
table.multiselect #headerName { width: 100%; }
|
||||
table td.selection, table th.selection, table td.fileaction { width:2em; text-align:center; }
|
||||
table td.filename a.name { display:block; height:1.5em; vertical-align:middle; margin-left:3em; }
|
||||
|
|
@ -115,10 +124,12 @@ table td.filename form { font-size:.85em; margin-left:3em; margin-right:3em; }
|
|||
}
|
||||
#fileList .name { position:relative; /* Firefox needs to explicitly have this default set … */ }
|
||||
#fileList tr:hover .fileactions { /* background to distinguish when overlaying with file names */
|
||||
background:rgba(248,248,248,.9); box-shadow:-5px 0 7px rgba(248,248,248,.9);
|
||||
background-color: rgba(240,240,240,0.898);
|
||||
box-shadow: -5px 0 7px rgba(240,240,240,0.898);
|
||||
}
|
||||
#fileList tr.selected:hover .fileactions, #fileList tr.mouseOver .fileactions { /* slightly darker color for selected rows */
|
||||
background:rgba(238,238,238,.9); box-shadow:-5px 0 7px rgba(238,238,238,.9);
|
||||
background-color: rgba(230,230,230,.9);
|
||||
box-shadow: -5px 0 7px rgba(230,230,230,.9);
|
||||
}
|
||||
#fileList .fileactions a.action img { position:relative; top:.2em; }
|
||||
#fileList a.action { display:inline; margin:-.5em 0; padding:1em .5em 1em .5em !important; }
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ var FileList={
|
|||
}else{
|
||||
simpleSize=t('files', 'Pending');
|
||||
}
|
||||
var sizeColor = Math.round(200-Math.pow((size/(1024*1024)),2));
|
||||
var sizeColor = Math.round(160-Math.pow((size/(1024*1024)),2));
|
||||
var lastModifiedTime = Math.round(lastModified.getTime() / 1000);
|
||||
td = $('<td></td>').attr({
|
||||
"class": "filesize",
|
||||
|
|
|
|||
|
|
@ -708,14 +708,14 @@ function scanFiles(force, dir){
|
|||
var scannerEventSource = new OC.EventSource(OC.filePath('files','ajax','scan.php'),{force:force,dir:dir});
|
||||
scanFiles.cancel = scannerEventSource.close.bind(scannerEventSource);
|
||||
scannerEventSource.listen('count',function(count){
|
||||
console.log(count + 'files scanned')
|
||||
console.log(count + ' files scanned')
|
||||
});
|
||||
scannerEventSource.listen('folder',function(path){
|
||||
console.log('now scanning ' + path)
|
||||
});
|
||||
scannerEventSource.listen('done',function(count){
|
||||
scanFiles.scanning=false;
|
||||
console.log('done after ' + count + 'files');
|
||||
console.log('done after ' + count + ' files');
|
||||
});
|
||||
}
|
||||
scanFiles.scanning=false;
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} carpetes",
|
||||
"1 file" => "1 fitxer",
|
||||
"{count} files" => "{count} fitxers",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Nom de carpeta no vàlid. L'ús de 'Shared' està reservat per Owncloud",
|
||||
"Unable to rename file" => "No es pot canviar el nom del fitxer",
|
||||
"Upload" => "Puja",
|
||||
"File handling" => "Gestió de fitxers",
|
||||
|
|
@ -56,7 +57,7 @@
|
|||
"0 is unlimited" => "0 és sense límit",
|
||||
"Maximum input size for ZIP files" => "Mida màxima d'entrada per fitxers ZIP",
|
||||
"Save" => "Desa",
|
||||
"New" => "Nova",
|
||||
"New" => "Nou",
|
||||
"Text file" => "Fitxer de text",
|
||||
"Folder" => "Carpeta",
|
||||
"From link" => "Des d'enllaç",
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} složky",
|
||||
"1 file" => "1 soubor",
|
||||
"{count} files" => "{count} soubory",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Název složky nelze použít. Použití názvu 'Shared' je ownCloudem rezervováno",
|
||||
"Unable to rename file" => "Nelze přejmenovat soubor",
|
||||
"Upload" => "Odeslat",
|
||||
"File handling" => "Zacházení se soubory",
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} mapper",
|
||||
"1 file" => "1 fil",
|
||||
"{count} files" => "{count} filer",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Ugyldigt mappenavn. Brug af 'Shared' er forbeholdt af ownCloud",
|
||||
"Unable to rename file" => "Kunne ikke omdøbe fil",
|
||||
"Upload" => "Upload",
|
||||
"File handling" => "Filhåndtering",
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} Ordner",
|
||||
"1 file" => "1 Datei",
|
||||
"{count} files" => "{count} Dateien",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Der Ordnername ist ungültig. Nur ownCloud kann den Ordner \"Shared\" anlegen",
|
||||
"Unable to rename file" => "Konnte Datei nicht umbenennen",
|
||||
"Upload" => "Hochladen",
|
||||
"File handling" => "Dateibehandlung",
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} Ordner",
|
||||
"1 file" => "1 Datei",
|
||||
"{count} files" => "{count} Dateien",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Ungültiger Ordnername. Die Verwendung von \"Shared\" ist ownCloud vorbehalten.",
|
||||
"Unable to rename file" => "Konnte Datei nicht umbenennen",
|
||||
"Upload" => "Hochladen",
|
||||
"File handling" => "Dateibehandlung",
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} φάκελοι",
|
||||
"1 file" => "1 αρχείο",
|
||||
"{count} files" => "{count} αρχεία",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Μη έγκυρο όνομα φακέλου. Η χρήση του 'Κοινόχρηστος' χρησιμοποιείται από το ownCloud",
|
||||
"Unable to rename file" => "Αδυναμία μετονομασίας αρχείου",
|
||||
"Upload" => "Μεταφόρτωση",
|
||||
"File handling" => "Διαχείριση αρχείων",
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} carpetas",
|
||||
"1 file" => "1 archivo",
|
||||
"{count} files" => "{count} archivos",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Nombre de carpeta invalido. El uso de \"Shared\" esta reservado para ownCloud",
|
||||
"Unable to rename file" => "No se puede renombrar el archivo",
|
||||
"Upload" => "Subir",
|
||||
"File handling" => "Tratamiento de archivos",
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} directorios",
|
||||
"1 file" => "1 archivo",
|
||||
"{count} files" => "{count} archivos",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Nombre de carpeta inválido. El uso de \"Shared\" está reservado por ownCloud",
|
||||
"Unable to rename file" => "No fue posible cambiar el nombre al archivo",
|
||||
"Upload" => "Subir",
|
||||
"File handling" => "Tratamiento de archivos",
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
"Could not move %s" => "%s liigutamine ebaõnnestus",
|
||||
"No file was uploaded. Unknown error" => "Ühtegi faili ei laetud üles. Tundmatu viga",
|
||||
"There is no error, the file uploaded with success" => "Ühtegi tõrget polnud, fail on üles laetud",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Üleslaetava faili suurus ületab php.ini poolt määratud upload_max_filesize suuruse",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Üleslaetava faili suurus ületab php.ini poolt määratud upload_max_filesize suuruse:",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Üleslaetud fail ületab MAX_FILE_SIZE suuruse, mis on HTML vormi jaoks määratud",
|
||||
"The uploaded file was only partially uploaded" => "Fail laeti üles ainult osaliselt",
|
||||
"No file was uploaded" => "Ühtegi faili ei laetud üles",
|
||||
|
|
@ -24,18 +24,18 @@
|
|||
"replaced {new_name} with {old_name}" => "asendas nime {old_name} nimega {new_name}",
|
||||
"undo" => "tagasi",
|
||||
"perform delete operation" => "teosta kustutamine",
|
||||
"1 file uploading" => "1 faili üleslaadimisel",
|
||||
"files uploading" => "failide üleslaadimine",
|
||||
"1 file uploading" => "1 fail üleslaadimisel",
|
||||
"files uploading" => "faili üleslaadimisel",
|
||||
"'.' is an invalid file name." => "'.' on vigane failinimi.",
|
||||
"File name cannot be empty." => "Faili nimi ei saa olla tühi.",
|
||||
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Vigane nimi, '\\', '/', '<', '>', ':', '\"', '|', '?' ja '*' pole lubatud.",
|
||||
"Your storage is full, files can not be updated or synced anymore!" => "Sinu andmemaht on täis! Faile ei uuendata ja sünkroniseerimist ei toimu!",
|
||||
"Your storage is full, files can not be updated or synced anymore!" => "Sinu andmemaht on täis! Faile ei uuendata ega sünkroniseerita!",
|
||||
"Your storage is almost full ({usedSpacePercent}%)" => "Su andmemaht on peaaegu täis ({usedSpacePercent}%)",
|
||||
"Your download is being prepared. This might take some time if the files are big." => "Valmistatakse allalaadimist. See võib võtta veidi aega kui on tegu suurte failidega. ",
|
||||
"Your download is being prepared. This might take some time if the files are big." => "Valmistatakse allalaadimist. See võib võtta veidi aega, kui on tegu suurte failidega. ",
|
||||
"Unable to upload your file as it is a directory or has 0 bytes" => "Faili ei saa üles laadida, kuna see on kaust või selle suurus on 0 baiti",
|
||||
"Not enough space available" => "Pole piisavalt ruumi",
|
||||
"Upload cancelled." => "Üleslaadimine tühistati.",
|
||||
"File upload is in progress. Leaving the page now will cancel the upload." => "Faili üleslaadimine on töös. Lehelt lahkumine katkestab selle üleslaadimise.",
|
||||
"File upload is in progress. Leaving the page now will cancel the upload." => "Faili üleslaadimine on töös. Lehelt lahkumine katkestab selle üleslaadimise.",
|
||||
"URL cannot be empty." => "URL ei saa olla tühi.",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Vigane kataloogi nimi. 'Shared' kasutamine on reserveeritud ownCloud poolt.",
|
||||
"Error" => "Viga",
|
||||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} kausta",
|
||||
"1 file" => "1 fail",
|
||||
"{count} files" => "{count} faili",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Vigane kausta nimi. 'Shared' kasutamine on reserveeritud ownCloud poolt.",
|
||||
"Unable to rename file" => "Faili ümbernimetamine ebaõnnestus",
|
||||
"Upload" => "Lae üles",
|
||||
"File handling" => "Failide käsitlemine",
|
||||
|
|
@ -68,7 +69,7 @@
|
|||
"Unshare" => "Lõpeta jagamine",
|
||||
"Upload too large" => "Üleslaadimine on liiga suur",
|
||||
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Failid, mida sa proovid üles laadida, ületab serveri poolt üleslaetavatele failidele määratud maksimaalse suuruse.",
|
||||
"Files are being scanned, please wait." => "Faile skannitakse, palun oota",
|
||||
"Files are being scanned, please wait." => "Faile skannitakse, palun oota.",
|
||||
"Current scanning" => "Praegune skannimine",
|
||||
"Upgrading filesystem cache..." => "Uuendan failisüsteemi puhvrit..."
|
||||
"Upgrading filesystem cache..." => "Failisüsteemi puhvri uuendamine..."
|
||||
);
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} dossiers",
|
||||
"1 file" => "1 fichier",
|
||||
"{count} files" => "{count} fichiers",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Nom de dossier invalide. L'utilisation du mot 'Shared' est réservée à Owncloud",
|
||||
"Unable to rename file" => "Impossible de renommer le fichier",
|
||||
"Upload" => "Envoyer",
|
||||
"File handling" => "Gestion des fichiers",
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} cartafoles",
|
||||
"1 file" => "1 ficheiro",
|
||||
"{count} files" => "{count} ficheiros",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Nome de cartafol incorrecto. O uso de «Compartido» e «Shared» está reservado para o ownClod",
|
||||
"Unable to rename file" => "Non é posíbel renomear o ficheiro",
|
||||
"Upload" => "Enviar",
|
||||
"File handling" => "Manexo de ficheiro",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Could not move %s - File with this name already exists" => "לא ניתן להעביר את %s - קובץ בשם הזה כבר קיים",
|
||||
"Could not move %s" => "לא ניתן להעביר את %s",
|
||||
"No file was uploaded. Unknown error" => "לא הועלה קובץ. טעות בלתי מזוהה.",
|
||||
"There is no error, the file uploaded with success" => "לא התרחשה שגיאה, הקובץ הועלה בהצלחה",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "הקבצים שנשלחו חורגים מהגודל שצוין בהגדרה upload_max_filesize שבקובץ php.ini:",
|
||||
|
|
@ -7,6 +9,8 @@
|
|||
"No file was uploaded" => "שום קובץ לא הועלה",
|
||||
"Missing a temporary folder" => "תקיה זמנית חסרה",
|
||||
"Failed to write to disk" => "הכתיבה לכונן נכשלה",
|
||||
"Not enough storage available" => "אין די שטח פנוי באחסון",
|
||||
"Invalid directory." => "תיקייה שגויה.",
|
||||
"Files" => "קבצים",
|
||||
"Share" => "שתף",
|
||||
"Delete permanently" => "מחק לצמיתות",
|
||||
|
|
@ -19,7 +23,9 @@
|
|||
"cancel" => "ביטול",
|
||||
"replaced {new_name} with {old_name}" => "{new_name} הוחלף ב־{old_name}",
|
||||
"undo" => "ביטול",
|
||||
"perform delete operation" => "ביצוע פעולת מחיקה",
|
||||
"1 file uploading" => "קובץ אחד נשלח",
|
||||
"files uploading" => "קבצים בהעלאה",
|
||||
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "השם שגוי, אסור להשתמש בתווים '\\', '/', '<', '>', ':', '\"', '|', '?' ו־'*'.",
|
||||
"Unable to upload your file as it is a directory or has 0 bytes" => "לא יכול להעלות את הקובץ מכיוון שזו תקיה או שמשקל הקובץ 0 בתים",
|
||||
"Upload cancelled." => "ההעלאה בוטלה.",
|
||||
|
|
@ -33,6 +39,7 @@
|
|||
"{count} folders" => "{count} תיקיות",
|
||||
"1 file" => "קובץ אחד",
|
||||
"{count} files" => "{count} קבצים",
|
||||
"Unable to rename file" => "לא ניתן לשנות את שם הקובץ",
|
||||
"Upload" => "העלאה",
|
||||
"File handling" => "טיפול בקבצים",
|
||||
"Maximum upload size" => "גודל העלאה מקסימלי",
|
||||
|
|
|
|||
4
apps/files/l10n/hi.php
Normal file
4
apps/files/l10n/hi.php
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Share" => "साझा करें",
|
||||
"Save" => "सहेजें"
|
||||
);
|
||||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} mappa",
|
||||
"1 file" => "1 fájl",
|
||||
"{count} files" => "{count} fájl",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Érvénytelen mappanév. A 'Shared' az ownCloud számára fenntartott elnevezés",
|
||||
"Unable to rename file" => "Nem lehet átnevezni a fájlt",
|
||||
"Upload" => "Feltöltés",
|
||||
"File handling" => "Fájlkezelés",
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} cartelle",
|
||||
"1 file" => "1 file",
|
||||
"{count} files" => "{count} file",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Nome della cartella non valido. L'uso di 'Shared' è riservato a ownCloud",
|
||||
"Unable to rename file" => "Impossibile rinominare il file",
|
||||
"Upload" => "Carica",
|
||||
"File handling" => "Gestione file",
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} フォルダ",
|
||||
"1 file" => "1 ファイル",
|
||||
"{count} files" => "{count} ファイル",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "無効なフォルダ名です。'Shared' の利用はownCloudで予約済みです",
|
||||
"Unable to rename file" => "ファイル名の変更ができません",
|
||||
"Upload" => "アップロード",
|
||||
"File handling" => "ファイル操作",
|
||||
|
|
|
|||
|
|
@ -1,12 +1,19 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Could not move %s - File with this name already exists" => "Nepavyko perkelti %s - failas su tokiu pavadinimu jau egzistuoja",
|
||||
"Could not move %s" => "Nepavyko perkelti %s",
|
||||
"No file was uploaded. Unknown error" => "Failai nebuvo įkelti dėl nežinomos priežasties",
|
||||
"There is no error, the file uploaded with success" => "Failas įkeltas sėkmingai, be klaidų",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Įkeliamas failas yra didesnis nei leidžia upload_max_filesize php.ini faile:",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Įkeliamo failo dydis viršija MAX_FILE_SIZE nustatymą, kuris naudojamas HTML formoje.",
|
||||
"The uploaded file was only partially uploaded" => "Failas buvo įkeltas tik dalinai",
|
||||
"No file was uploaded" => "Nebuvo įkeltas joks failas",
|
||||
"Missing a temporary folder" => "Nėra laikinojo katalogo",
|
||||
"Failed to write to disk" => "Nepavyko įrašyti į diską",
|
||||
"Not enough storage available" => "Nepakanka vietos serveryje",
|
||||
"Invalid directory." => "Neteisingas aplankas",
|
||||
"Files" => "Failai",
|
||||
"Share" => "Dalintis",
|
||||
"Delete permanently" => "Ištrinti negrįžtamai",
|
||||
"Delete" => "Ištrinti",
|
||||
"Rename" => "Pervadinti",
|
||||
"Pending" => "Laukiantis",
|
||||
|
|
@ -16,10 +23,21 @@
|
|||
"cancel" => "atšaukti",
|
||||
"replaced {new_name} with {old_name}" => "pakeiskite {new_name} į {old_name}",
|
||||
"undo" => "anuliuoti",
|
||||
"perform delete operation" => "ištrinti",
|
||||
"1 file uploading" => "įkeliamas 1 failas",
|
||||
"files uploading" => "įkeliami failai",
|
||||
"'.' is an invalid file name." => "'.' yra neleidžiamas failo pavadinime.",
|
||||
"File name cannot be empty." => "Failo pavadinimas negali būti tuščias.",
|
||||
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Neleistinas pavadinimas, '\\', '/', '<', '>', ':', '\"', '|', '?' ir '*' yra neleidžiami.",
|
||||
"Your storage is full, files can not be updated or synced anymore!" => "Jūsų visa vieta serveryje užimta",
|
||||
"Your storage is almost full ({usedSpacePercent}%)" => "Jūsų vieta serveryje beveik visa užimta ({usedSpacePercent}%)",
|
||||
"Your download is being prepared. This might take some time if the files are big." => "Jūsų atsisiuntimas yra paruošiamas. tai gali užtrukti jei atsisiunčiamas didelis failas.",
|
||||
"Unable to upload your file as it is a directory or has 0 bytes" => "Neįmanoma įkelti failo - jo dydis gali būti 0 bitų arba tai katalogas",
|
||||
"Not enough space available" => "Nepakanka vietos",
|
||||
"Upload cancelled." => "Įkėlimas atšauktas.",
|
||||
"File upload is in progress. Leaving the page now will cancel the upload." => "Failo įkėlimas pradėtas. Jei paliksite šį puslapį, įkėlimas nutrūks.",
|
||||
"URL cannot be empty." => "URL negali būti tuščias.",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Negalimas aplanko pavadinimas. 'Shared' pavadinimas yra rezervuotas ownCloud",
|
||||
"Error" => "Klaida",
|
||||
"Name" => "Pavadinimas",
|
||||
"Size" => "Dydis",
|
||||
|
|
@ -28,6 +46,8 @@
|
|||
"{count} folders" => "{count} aplankalai",
|
||||
"1 file" => "1 failas",
|
||||
"{count} files" => "{count} failai",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Negalimas aplanko pavadinimas. 'Shared' pavadinimas yra rezervuotas ownCloud",
|
||||
"Unable to rename file" => "Nepavyko pervadinti failo",
|
||||
"Upload" => "Įkelti",
|
||||
"File handling" => "Failų tvarkymas",
|
||||
"Maximum upload size" => "Maksimalus įkeliamo failo dydis",
|
||||
|
|
@ -40,12 +60,16 @@
|
|||
"New" => "Naujas",
|
||||
"Text file" => "Teksto failas",
|
||||
"Folder" => "Katalogas",
|
||||
"From link" => "Iš nuorodos",
|
||||
"Deleted files" => "Ištrinti failai",
|
||||
"Cancel upload" => "Atšaukti siuntimą",
|
||||
"You don’t have write permissions here." => "Jūs neturite rašymo leidimo.",
|
||||
"Nothing in here. Upload something!" => "Čia tuščia. Įkelkite ką nors!",
|
||||
"Download" => "Atsisiųsti",
|
||||
"Unshare" => "Nebesidalinti",
|
||||
"Upload too large" => "Įkėlimui failas per didelis",
|
||||
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Bandomų įkelti failų dydis viršija maksimalų, kuris leidžiamas šiame serveryje",
|
||||
"Files are being scanned, please wait." => "Skenuojami failai, prašome palaukti.",
|
||||
"Current scanning" => "Šiuo metu skenuojama"
|
||||
"Current scanning" => "Šiuo metu skenuojama",
|
||||
"Upgrading filesystem cache..." => "Atnaujinamas sistemos kešavimas..."
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,11 +1,16 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Could not move %s - File with this name already exists" => "Kan ikke flytte %s - En fil med samme navn finnes allerede",
|
||||
"Could not move %s" => "Kunne ikke flytte %s",
|
||||
"No file was uploaded. Unknown error" => "Ingen filer ble lastet opp. Ukjent feil.",
|
||||
"There is no error, the file uploaded with success" => "Pust ut, ingen feil. Filen ble lastet opp problemfritt",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Filstørrelsen overskrider maksgrensedirektivet upload_max_filesize i php.ini-konfigurasjonen.",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Filen du prøvde å laste opp var større enn grensen satt i MAX_FILE_SIZE i HTML-skjemaet.",
|
||||
"The uploaded file was only partially uploaded" => "Filen du prøvde å laste opp ble kun delvis lastet opp",
|
||||
"No file was uploaded" => "Ingen filer ble lastet opp",
|
||||
"Missing a temporary folder" => "Mangler midlertidig mappe",
|
||||
"Failed to write to disk" => "Klarte ikke å skrive til disk",
|
||||
"Not enough storage available" => "Ikke nok lagringsplass",
|
||||
"Invalid directory." => "Ugyldig katalog.",
|
||||
"Files" => "Filer",
|
||||
"Share" => "Del",
|
||||
"Delete permanently" => "Slett permanent",
|
||||
|
|
@ -18,13 +23,21 @@
|
|||
"cancel" => "avbryt",
|
||||
"replaced {new_name} with {old_name}" => "erstatt {new_name} med {old_name}",
|
||||
"undo" => "angre",
|
||||
"perform delete operation" => "utfør sletting",
|
||||
"1 file uploading" => "1 fil lastes opp",
|
||||
"files uploading" => "filer lastes opp",
|
||||
"'.' is an invalid file name." => "'.' er et ugyldig filnavn.",
|
||||
"File name cannot be empty." => "Filnavn kan ikke være tomt.",
|
||||
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ugyldig navn, '\\', '/', '<', '>', ':', '\"', '|', '?' og '*' er ikke tillatt.",
|
||||
"Your storage is full, files can not be updated or synced anymore!" => "Lagringsplass er oppbrukt, filer kan ikke lenger oppdateres eller synkroniseres!",
|
||||
"Your storage is almost full ({usedSpacePercent}%)" => "Lagringsplass er nesten oppbruker ([usedSpacePercent}%)",
|
||||
"Your download is being prepared. This might take some time if the files are big." => "Nedlastingen din klargjøres. Hvis filene er store kan dette ta litt tid.",
|
||||
"Unable to upload your file as it is a directory or has 0 bytes" => "Kan ikke laste opp filen din siden det er en mappe eller den har 0 bytes",
|
||||
"Not enough space available" => "Ikke nok lagringsplass",
|
||||
"Upload cancelled." => "Opplasting avbrutt.",
|
||||
"File upload is in progress. Leaving the page now will cancel the upload." => "Filopplasting pågår. Forlater du siden nå avbrytes opplastingen.",
|
||||
"URL cannot be empty." => "URL-en kan ikke være tom.",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ugyldig mappenavn. Bruk av \"Shared\" er reservert av ownCloud.",
|
||||
"Error" => "Feil",
|
||||
"Name" => "Navn",
|
||||
"Size" => "Størrelse",
|
||||
|
|
@ -33,6 +46,8 @@
|
|||
"{count} folders" => "{count} mapper",
|
||||
"1 file" => "1 fil",
|
||||
"{count} files" => "{count} filer",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Ugyldig mappenavn. Bruk av \"Shared\" er reservert av ownCloud.",
|
||||
"Unable to rename file" => "Kan ikke gi nytt navn",
|
||||
"Upload" => "Last opp",
|
||||
"File handling" => "Filhåndtering",
|
||||
"Maximum upload size" => "Maksimum opplastingsstørrelse",
|
||||
|
|
@ -46,12 +61,15 @@
|
|||
"Text file" => "Tekstfil",
|
||||
"Folder" => "Mappe",
|
||||
"From link" => "Fra link",
|
||||
"Deleted files" => "Slettet filer",
|
||||
"Cancel upload" => "Avbryt opplasting",
|
||||
"You don’t have write permissions here." => "Du har ikke skrivetilgang her.",
|
||||
"Nothing in here. Upload something!" => "Ingenting her. Last opp noe!",
|
||||
"Download" => "Last ned",
|
||||
"Unshare" => "Avslutt deling",
|
||||
"Upload too large" => "Filen er for stor",
|
||||
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Filene du prøver å laste opp er for store for å laste opp til denne serveren.",
|
||||
"Files are being scanned, please wait." => "Skanner etter filer, vennligst vent.",
|
||||
"Current scanning" => "Pågående skanning"
|
||||
"Current scanning" => "Pågående skanning",
|
||||
"Upgrading filesystem cache..." => "Oppgraderer filsystemets mellomlager..."
|
||||
);
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} mappen",
|
||||
"1 file" => "1 bestand",
|
||||
"{count} files" => "{count} bestanden",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Ongeldige mapnaam. Gebruik van 'Gedeeld' is voorbehouden aan Owncloud zelf",
|
||||
"Unable to rename file" => "Kan bestand niet hernoemen",
|
||||
"Upload" => "Uploaden",
|
||||
"File handling" => "Bestand",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Could not move %s - File with this name already exists" => "Klarte ikkje å flytta %s – det finst allereie ei fil med dette namnet",
|
||||
"Could not move %s" => "Klarte ikkje å flytta %s",
|
||||
"Could not move %s - File with this name already exists" => "Klarte ikkje flytta %s – det finst allereie ei fil med dette namnet",
|
||||
"Could not move %s" => "Klarte ikkje flytta %s",
|
||||
"No file was uploaded. Unknown error" => "Ingen filer lasta opp. Ukjend feil",
|
||||
"There is no error, the file uploaded with success" => "Ingen feil, fila vart lasta opp",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Fila du lasta opp er større enn det «upload_max_filesize» i php.ini tillater: ",
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
"The uploaded file was only partially uploaded" => "Fila vart berre delvis lasta opp",
|
||||
"No file was uploaded" => "Ingen filer vart lasta opp",
|
||||
"Missing a temporary folder" => "Manglar ei mellombels mappe",
|
||||
"Failed to write to disk" => "Klarte ikkje å skriva til disk",
|
||||
"Failed to write to disk" => "Klarte ikkje skriva til disk",
|
||||
"Not enough storage available" => "Ikkje nok lagringsplass tilgjengeleg",
|
||||
"Invalid directory." => "Ugyldig mappe.",
|
||||
"Files" => "Filer",
|
||||
|
|
@ -32,11 +32,11 @@
|
|||
"Your storage is full, files can not be updated or synced anymore!" => "Lagringa di er full, kan ikkje lenger oppdatera eller synkronisera!",
|
||||
"Your storage is almost full ({usedSpacePercent}%)" => "Lagringa di er nesten full ({usedSpacePercent} %)",
|
||||
"Your download is being prepared. This might take some time if the files are big." => "Gjer klar nedlastinga di. Dette kan ta ei stund viss filene er store.",
|
||||
"Unable to upload your file as it is a directory or has 0 bytes" => "Klarte ikkje å lasta opp fila sidan ho er ei mappe eller er på 0 byte",
|
||||
"Unable to upload your file as it is a directory or has 0 bytes" => "Klarte ikkje lasta opp fila sidan ho er ei mappe eller er på 0 byte",
|
||||
"Not enough space available" => "Ikkje nok lagringsplass tilgjengeleg",
|
||||
"Upload cancelled." => "Opplasting avbroten.",
|
||||
"File upload is in progress. Leaving the page now will cancel the upload." => "Fila lastar no opp. Viss du forlèt sida no vil opplastinga bli avbroten.",
|
||||
"URL cannot be empty." => "URL-en kan ikkje vera tom.",
|
||||
"File upload is in progress. Leaving the page now will cancel the upload." => "Fila lastar no opp. Viss du forlèt sida no vil opplastinga verta avbroten.",
|
||||
"URL cannot be empty." => "Nettadressa kan ikkje vera tom.",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ugyldig mappenamn. Mappa «Shared» er reservert av ownCloud",
|
||||
"Error" => "Feil",
|
||||
"Name" => "Namn",
|
||||
|
|
@ -46,13 +46,14 @@
|
|||
"{count} folders" => "{count} mapper",
|
||||
"1 file" => "1 fil",
|
||||
"{count} files" => "{count} filer",
|
||||
"Unable to rename file" => "Klarte ikkje å endra filnamnet",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Ugyldig mappenamn. Mappa «Shared» er reservert av ownCloud",
|
||||
"Unable to rename file" => "Klarte ikkje endra filnamnet",
|
||||
"Upload" => "Last opp",
|
||||
"File handling" => "Filhandtering",
|
||||
"Maximum upload size" => "Maksimal opplastingsstorleik",
|
||||
"max. possible: " => "maks. moglege:",
|
||||
"Needed for multi-file and folder downloads." => "Naudsynt for fleirfils- og mappenedlastingar.",
|
||||
"Enable ZIP-download" => "Skru på ZIP-nedlasting",
|
||||
"Needed for multi-file and folder downloads." => "Nødvendig for fleirfils- og mappenedlastingar.",
|
||||
"Enable ZIP-download" => "Slå på ZIP-nedlasting",
|
||||
"0 is unlimited" => "0 er ubegrensa",
|
||||
"Maximum input size for ZIP files" => "Maksimal storleik for ZIP-filer",
|
||||
"Save" => "Lagre",
|
||||
|
|
@ -67,7 +68,7 @@
|
|||
"Download" => "Last ned",
|
||||
"Unshare" => "Udel",
|
||||
"Upload too large" => "For stor opplasting",
|
||||
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Filene du prøver å laste opp er større enn maksgrensa til denne tenaren.",
|
||||
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Filene du prøver å lasta opp er større enn maksgrensa til denne tenaren.",
|
||||
"Files are being scanned, please wait." => "Skannar filer, ver venleg og vent.",
|
||||
"Current scanning" => "Køyrande skanning",
|
||||
"Upgrading filesystem cache..." => "Oppgraderer mellomlageret av filsystemet …"
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "Ilość folderów: {count}",
|
||||
"1 file" => "1 plik",
|
||||
"{count} files" => "Ilość plików: {count}",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Nieprawidłowa nazwa folderu. Wykorzystanie 'Shared' jest zarezerwowane przez ownCloud",
|
||||
"Unable to rename file" => "Nie można zmienić nazwy pliku",
|
||||
"Upload" => "Wyślij",
|
||||
"File handling" => "Zarządzanie plikami",
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} pastas",
|
||||
"1 file" => "1 arquivo",
|
||||
"{count} files" => "{count} arquivos",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Nome de pasta inválido. O uso do nome 'Compartilhado' é reservado ao ownCloud",
|
||||
"Unable to rename file" => "Impossível renomear arquivo",
|
||||
"Upload" => "Upload",
|
||||
"File handling" => "Tratamento de Arquivo",
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} pastas",
|
||||
"1 file" => "1 ficheiro",
|
||||
"{count} files" => "{count} ficheiros",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Nome da pasta inválido. Palavra 'Shared' é reservado pela ownCloud",
|
||||
"Unable to rename file" => "Não foi possível renomear o ficheiro",
|
||||
"Upload" => "Carregar",
|
||||
"File handling" => "Manuseamento de ficheiros",
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} папок",
|
||||
"1 file" => "1 файл",
|
||||
"{count} files" => "{count} файлов",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Неправильное имя каталога. Имя 'Shared' зарезервировано.",
|
||||
"Unable to rename file" => "Невозможно переименовать файл",
|
||||
"Upload" => "Загрузка",
|
||||
"File handling" => "Управление файлами",
|
||||
|
|
|
|||
|
|
@ -1,71 +1,16 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Could not move %s - File with this name already exists" => "Неполучается перенести %s - Файл с таким именем уже существует",
|
||||
"Could not move %s" => "Неполучается перенести %s ",
|
||||
"Unable to rename file" => "Невозможно переименовать файл",
|
||||
"No file was uploaded. Unknown error" => "Файл не был загружен. Неизвестная ошибка",
|
||||
"There is no error, the file uploaded with success" => "Ошибка отсутствует, файл загружен успешно.",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Размер загружаемого файла превышает upload_max_filesize директиву в php.ini:",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Размер загруженного",
|
||||
"The uploaded file was only partially uploaded" => "Загружаемый файл был загружен частично",
|
||||
"There is no error, the file uploaded with success" => "Ошибки нет, файл успешно загружен",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Размер загружаемого файла превысил максимально допустимый в директиве MAX_FILE_SIZE, специфицированной в HTML-форме",
|
||||
"The uploaded file was only partially uploaded" => "Загружаемый файл был загружен лишь частично",
|
||||
"No file was uploaded" => "Файл не был загружен",
|
||||
"Missing a temporary folder" => "Отсутствует временная папка",
|
||||
"Missing a temporary folder" => "Отсутствие временной папки",
|
||||
"Failed to write to disk" => "Не удалось записать на диск",
|
||||
"Not enough storage available" => "Недостаточно места в хранилище",
|
||||
"Invalid directory." => "Неверный каталог.",
|
||||
"Files" => "Файлы",
|
||||
"Share" => "Сделать общим",
|
||||
"Delete permanently" => "Удалить навсегда",
|
||||
"Delete" => "Удалить",
|
||||
"Rename" => "Переименовать",
|
||||
"Pending" => "Ожидающий решения",
|
||||
"{new_name} already exists" => "{новое_имя} уже существует",
|
||||
"replace" => "отмена",
|
||||
"suggest name" => "подобрать название",
|
||||
"cancel" => "отменить",
|
||||
"replaced {new_name} with {old_name}" => "заменено {новое_имя} с {старое_имя}",
|
||||
"undo" => "отменить действие",
|
||||
"perform delete operation" => "выполняется процесс удаления",
|
||||
"1 file uploading" => "загрузка 1 файла",
|
||||
"'.' is an invalid file name." => "'.' является неверным именем файла.",
|
||||
"File name cannot be empty." => "Имя файла не может быть пустым.",
|
||||
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Некорректное имя, '\\', '/', '<', '>', ':', '\"', '|', '?' и '*' не допустимы.",
|
||||
"Your storage is full, files can not be updated or synced anymore!" => "Ваше хранилище переполнено, фалы больше не могут быть обновлены или синхронизированы!",
|
||||
"Your storage is almost full ({usedSpacePercent}%)" => "Ваше хранилище почти полно ({usedSpacePercent}%)",
|
||||
"Your download is being prepared. This might take some time if the files are big." => "Идёт подготовка к скачке Вашего файла. Это может занять некоторое время, если фалы большие.",
|
||||
"Unable to upload your file as it is a directory or has 0 bytes" => "Невозможно загрузить файл,\n так как он имеет нулевой размер или является директорией",
|
||||
"Not enough space available" => "Не достаточно свободного места",
|
||||
"Upload cancelled." => "Загрузка отменена",
|
||||
"File upload is in progress. Leaving the page now will cancel the upload." => "Процесс загрузки файла. Если покинуть страницу сейчас, загрузка будет отменена.",
|
||||
"URL cannot be empty." => "URL не должен быть пустым.",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Неверное имя папки. Использование наименования 'Опубликовано' зарезервировано Owncloud",
|
||||
"Error" => "Ошибка",
|
||||
"Name" => "Имя",
|
||||
"Size" => "Размер",
|
||||
"Modified" => "Изменен",
|
||||
"1 folder" => "1 папка",
|
||||
"{count} folders" => "{количество} папок",
|
||||
"1 file" => "1 файл",
|
||||
"{count} files" => "{количество} файлов",
|
||||
"Upload" => "Загрузить ",
|
||||
"File handling" => "Работа с файлами",
|
||||
"Maximum upload size" => "Максимальный размер загружаемого файла",
|
||||
"max. possible: " => "Максимально возможный",
|
||||
"Needed for multi-file and folder downloads." => "Необходимо для множественной загрузки.",
|
||||
"Enable ZIP-download" => "Включение ZIP-загрузки",
|
||||
"0 is unlimited" => "0 без ограничений",
|
||||
"Maximum input size for ZIP files" => "Максимальный размер входящих ZIP-файлов ",
|
||||
"Save" => "Сохранить",
|
||||
"New" => "Новый",
|
||||
"Text file" => "Текстовый файл",
|
||||
"Folder" => "Папка",
|
||||
"From link" => "По ссылке",
|
||||
"Cancel upload" => "Отмена загрузки",
|
||||
"Nothing in here. Upload something!" => "Здесь ничего нет. Загрузите что-нибудь!",
|
||||
"Download" => "Загрузить",
|
||||
"Unshare" => "Скрыть",
|
||||
"Upload too large" => "Загрузка слишком велика",
|
||||
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Размер файлов, которые Вы пытаетесь загрузить, превышает максимально допустимый размер для загрузки на данный сервер.",
|
||||
"Files are being scanned, please wait." => "Файлы сканируются, пожалуйста, подождите.",
|
||||
"Current scanning" => "Текущее сканирование",
|
||||
"Upgrading filesystem cache..." => "Обновление кэша файловой системы... "
|
||||
"Download" => "Загрузка"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} priečinkov",
|
||||
"1 file" => "1 súbor",
|
||||
"{count} files" => "{count} súborov",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Neplatný názov priečinka. Názov \"Shared\" je rezervovaný pre ownCloud",
|
||||
"Unable to rename file" => "Nemožno premenovať súbor",
|
||||
"Upload" => "Odoslať",
|
||||
"File handling" => "Nastavenie správania sa k súborom",
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
"'.' is an invalid file name." => "'.' är ett ogiltigt filnamn.",
|
||||
"File name cannot be empty." => "Filnamn kan inte vara tomt.",
|
||||
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ogiltigt namn, '\\', '/', '<', '>', ':', '\"', '|', '?' och '*' är inte tillåtet.",
|
||||
"Your storage is full, files can not be updated or synced anymore!" => "Ditt lagringsutrymme är fullt, filer kan ej längre laddas upp eller synkas!",
|
||||
"Your storage is full, files can not be updated or synced anymore!" => "Ditt lagringsutrymme är fullt, filer kan inte längre uppdateras eller synkroniseras!",
|
||||
"Your storage is almost full ({usedSpacePercent}%)" => "Ditt lagringsutrymme är nästan fullt ({usedSpacePercent}%)",
|
||||
"Your download is being prepared. This might take some time if the files are big." => "Din nedladdning förbereds. Det kan ta tid om det är stora filer.",
|
||||
"Unable to upload your file as it is a directory or has 0 bytes" => "Kan inte ladda upp din fil eftersom det är en katalog eller har 0 bytes",
|
||||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} mappar",
|
||||
"1 file" => "1 fil",
|
||||
"{count} files" => "{count} filer",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Ogiltigt mappnamn. Användning av 'Shared' är reserverad av ownCloud",
|
||||
"Unable to rename file" => "Kan inte byta namn på filen",
|
||||
"Upload" => "Ladda upp",
|
||||
"File handling" => "Filhantering",
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} dizin",
|
||||
"1 file" => "1 dosya",
|
||||
"{count} files" => "{count} dosya",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "Geçersiz dizin adı. 'Shared' dizin ismi kullanımı ownCloud tarafından rezerve edilmiştir.",
|
||||
"Unable to rename file" => "Dosya adı değiştirilemedi",
|
||||
"Upload" => "Yükle",
|
||||
"File handling" => "Dosya taşıma",
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} 个文件夹",
|
||||
"1 file" => "1 个文件",
|
||||
"{count} files" => "{count} 个文件",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "无效的文件夹名。”Shared“ 是 Owncloud 预留的文件夹",
|
||||
"Unable to rename file" => "无法重命名文件",
|
||||
"Upload" => "上传",
|
||||
"File handling" => "文件处理",
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
"{count} folders" => "{count} 個資料夾",
|
||||
"1 file" => "1 個檔案",
|
||||
"{count} files" => "{count} 個檔案",
|
||||
"Invalid folder name. Usage of 'Shared' is reserved by ownCloud" => "無效的資料夾名稱,'Shared' 的使用被 ownCloud 保留",
|
||||
"Unable to rename file" => "無法重新命名檔案",
|
||||
"Upload" => "上傳",
|
||||
"File handling" => "檔案處理",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?php if(count($_["breadcrumb"])):?>
|
||||
<div class="crumb">
|
||||
<div class="crumb" data-dir=''>
|
||||
<a href="<?php print_unescaped($_['baseURL']); ?>">
|
||||
<img src="<?php print_unescaped(OCP\image_path('core', 'places/home.svg'));?>" class="svg" />
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -3,12 +3,12 @@
|
|||
<?php foreach($_['files'] as $file):
|
||||
$simple_file_size = OCP\simple_file_size($file['size']);
|
||||
// the bigger the file, the darker the shade of grey; megabytes*2
|
||||
$simple_size_color = intval(200-$file['size']/(1024*1024)*2);
|
||||
$simple_size_color = intval(160-$file['size']/(1024*1024)*2);
|
||||
if($simple_size_color<0) $simple_size_color = 0;
|
||||
$relative_modified_date = OCP\relative_modified_date($file['mtime']);
|
||||
// the older the file, the brighter the shade of grey; days*14
|
||||
$relative_date_color = round((time()-$file['mtime'])/60/60/24*14);
|
||||
if($relative_date_color>200) $relative_date_color = 200;
|
||||
if($relative_date_color>160) $relative_date_color = 160;
|
||||
$name = rawurlencode($file['name']);
|
||||
$name = str_replace('%2F', '/', $name);
|
||||
$directory = rawurlencode($file['directory']);
|
||||
|
|
|
|||
317
apps/files_encryption/3rdparty/Crypt_Blowfish/Blowfish.php
vendored
Normal file
317
apps/files_encryption/3rdparty/Crypt_Blowfish/Blowfish.php
vendored
Normal file
|
|
@ -0,0 +1,317 @@
|
|||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Crypt_Blowfish allows for encryption and decryption on the fly using
|
||||
* the Blowfish algorithm. Crypt_Blowfish does not require the mcrypt
|
||||
* PHP extension, it uses only PHP.
|
||||
* Crypt_Blowfish support encryption/decryption with or without a secret key.
|
||||
*
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* LICENSE: This source file is subject to version 3.0 of the PHP license
|
||||
* that is available through the world-wide-web at the following URI:
|
||||
* http://www.php.net/license/3_0.txt. If you did not receive a copy of
|
||||
* the PHP License and are unable to obtain it through the web, please
|
||||
* send a note to license@php.net so we can mail you a copy immediately.
|
||||
*
|
||||
* @category Encryption
|
||||
* @package Crypt_Blowfish
|
||||
* @author Matthew Fonda <mfonda@php.net>
|
||||
* @copyright 2005 Matthew Fonda
|
||||
* @license http://www.php.net/license/3_0.txt PHP License 3.0
|
||||
* @version CVS: $Id: Blowfish.php,v 1.81 2005/05/30 18:40:36 mfonda Exp $
|
||||
* @link http://pear.php.net/package/Crypt_Blowfish
|
||||
*/
|
||||
|
||||
|
||||
require_once 'PEAR.php';
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Example usage:
|
||||
* $bf = new Crypt_Blowfish('some secret key!');
|
||||
* $encrypted = $bf->encrypt('this is some example plain text');
|
||||
* $plaintext = $bf->decrypt($encrypted);
|
||||
* echo "plain text: $plaintext";
|
||||
*
|
||||
*
|
||||
* @category Encryption
|
||||
* @package Crypt_Blowfish
|
||||
* @author Matthew Fonda <mfonda@php.net>
|
||||
* @copyright 2005 Matthew Fonda
|
||||
* @license http://www.php.net/license/3_0.txt PHP License 3.0
|
||||
* @link http://pear.php.net/package/Crypt_Blowfish
|
||||
* @version @package_version@
|
||||
* @access public
|
||||
*/
|
||||
class Crypt_Blowfish
|
||||
{
|
||||
/**
|
||||
* P-Array contains 18 32-bit subkeys
|
||||
*
|
||||
* @var array
|
||||
* @access private
|
||||
*/
|
||||
var $_P = array();
|
||||
|
||||
|
||||
/**
|
||||
* Array of four S-Blocks each containing 256 32-bit entries
|
||||
*
|
||||
* @var array
|
||||
* @access private
|
||||
*/
|
||||
var $_S = array();
|
||||
|
||||
/**
|
||||
* Mcrypt td resource
|
||||
*
|
||||
* @var resource
|
||||
* @access private
|
||||
*/
|
||||
var $_td = null;
|
||||
|
||||
/**
|
||||
* Initialization vector
|
||||
*
|
||||
* @var string
|
||||
* @access private
|
||||
*/
|
||||
var $_iv = null;
|
||||
|
||||
|
||||
/**
|
||||
* Crypt_Blowfish Constructor
|
||||
* Initializes the Crypt_Blowfish object, and gives a sets
|
||||
* the secret key
|
||||
*
|
||||
* @param string $key
|
||||
* @access public
|
||||
*/
|
||||
function Crypt_Blowfish($key)
|
||||
{
|
||||
if (extension_loaded('mcrypt')) {
|
||||
$this->_td = mcrypt_module_open(MCRYPT_BLOWFISH, '', 'ecb', '');
|
||||
$this->_iv = mcrypt_create_iv(8, MCRYPT_RAND);
|
||||
}
|
||||
$this->setKey($key);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deprecated isReady method
|
||||
*
|
||||
* @return bool
|
||||
* @access public
|
||||
* @deprecated
|
||||
*/
|
||||
function isReady()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deprecated init method - init is now a private
|
||||
* method and has been replaced with _init
|
||||
*
|
||||
* @return bool
|
||||
* @access public
|
||||
* @deprecated
|
||||
* @see Crypt_Blowfish::_init()
|
||||
*/
|
||||
function init()
|
||||
{
|
||||
$this->_init();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the Crypt_Blowfish object
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function _init()
|
||||
{
|
||||
$defaults = new Crypt_Blowfish_DefaultKey();
|
||||
$this->_P = $defaults->P;
|
||||
$this->_S = $defaults->S;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enciphers a single 64 bit block
|
||||
*
|
||||
* @param int &$Xl
|
||||
* @param int &$Xr
|
||||
* @access private
|
||||
*/
|
||||
function _encipher(&$Xl, &$Xr)
|
||||
{
|
||||
for ($i = 0; $i < 16; $i++) {
|
||||
$temp = $Xl ^ $this->_P[$i];
|
||||
$Xl = ((($this->_S[0][($temp>>24) & 255] +
|
||||
$this->_S[1][($temp>>16) & 255]) ^
|
||||
$this->_S[2][($temp>>8) & 255]) +
|
||||
$this->_S[3][$temp & 255]) ^ $Xr;
|
||||
$Xr = $temp;
|
||||
}
|
||||
$Xr = $Xl ^ $this->_P[16];
|
||||
$Xl = $temp ^ $this->_P[17];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Deciphers a single 64 bit block
|
||||
*
|
||||
* @param int &$Xl
|
||||
* @param int &$Xr
|
||||
* @access private
|
||||
*/
|
||||
function _decipher(&$Xl, &$Xr)
|
||||
{
|
||||
for ($i = 17; $i > 1; $i--) {
|
||||
$temp = $Xl ^ $this->_P[$i];
|
||||
$Xl = ((($this->_S[0][($temp>>24) & 255] +
|
||||
$this->_S[1][($temp>>16) & 255]) ^
|
||||
$this->_S[2][($temp>>8) & 255]) +
|
||||
$this->_S[3][$temp & 255]) ^ $Xr;
|
||||
$Xr = $temp;
|
||||
}
|
||||
$Xr = $Xl ^ $this->_P[1];
|
||||
$Xl = $temp ^ $this->_P[0];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Encrypts a string
|
||||
*
|
||||
* @param string $plainText
|
||||
* @return string Returns cipher text on success, PEAR_Error on failure
|
||||
* @access public
|
||||
*/
|
||||
function encrypt($plainText)
|
||||
{
|
||||
if (!is_string($plainText)) {
|
||||
PEAR::raiseError('Plain text must be a string', 0, PEAR_ERROR_DIE);
|
||||
}
|
||||
|
||||
if (extension_loaded('mcrypt')) {
|
||||
return mcrypt_generic($this->_td, $plainText);
|
||||
}
|
||||
|
||||
$cipherText = '';
|
||||
$len = strlen($plainText);
|
||||
$plainText .= str_repeat(chr(0),(8 - ($len%8))%8);
|
||||
for ($i = 0; $i < $len; $i += 8) {
|
||||
list(,$Xl,$Xr) = unpack("N2",substr($plainText,$i,8));
|
||||
$this->_encipher($Xl, $Xr);
|
||||
$cipherText .= pack("N2", $Xl, $Xr);
|
||||
}
|
||||
return $cipherText;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Decrypts an encrypted string
|
||||
*
|
||||
* @param string $cipherText
|
||||
* @return string Returns plain text on success, PEAR_Error on failure
|
||||
* @access public
|
||||
*/
|
||||
function decrypt($cipherText)
|
||||
{
|
||||
if (!is_string($cipherText)) {
|
||||
PEAR::raiseError('Cipher text must be a string', 1, PEAR_ERROR_DIE);
|
||||
}
|
||||
|
||||
if (extension_loaded('mcrypt')) {
|
||||
return mdecrypt_generic($this->_td, $cipherText);
|
||||
}
|
||||
|
||||
$plainText = '';
|
||||
$len = strlen($cipherText);
|
||||
$cipherText .= str_repeat(chr(0),(8 - ($len%8))%8);
|
||||
for ($i = 0; $i < $len; $i += 8) {
|
||||
list(,$Xl,$Xr) = unpack("N2",substr($cipherText,$i,8));
|
||||
$this->_decipher($Xl, $Xr);
|
||||
$plainText .= pack("N2", $Xl, $Xr);
|
||||
}
|
||||
return $plainText;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the secret key
|
||||
* The key must be non-zero, and less than or equal to
|
||||
* 56 characters in length.
|
||||
*
|
||||
* @param string $key
|
||||
* @return bool Returns true on success, PEAR_Error on failure
|
||||
* @access public
|
||||
*/
|
||||
function setKey($key)
|
||||
{
|
||||
if (!is_string($key)) {
|
||||
PEAR::raiseError('Key must be a string', 2, PEAR_ERROR_DIE);
|
||||
}
|
||||
|
||||
$len = strlen($key);
|
||||
|
||||
if ($len > 56 || $len == 0) {
|
||||
PEAR::raiseError('Key must be less than 56 characters and non-zero. Supplied key length: ' . $len, 3, PEAR_ERROR_DIE);
|
||||
}
|
||||
|
||||
if (extension_loaded('mcrypt')) {
|
||||
mcrypt_generic_init($this->_td, $key, $this->_iv);
|
||||
return true;
|
||||
}
|
||||
|
||||
require_once 'Blowfish/DefaultKey.php';
|
||||
$this->_init();
|
||||
|
||||
$k = 0;
|
||||
$data = 0;
|
||||
$datal = 0;
|
||||
$datar = 0;
|
||||
|
||||
for ($i = 0; $i < 18; $i++) {
|
||||
$data = 0;
|
||||
for ($j = 4; $j > 0; $j--) {
|
||||
$data = $data << 8 | ord($key{$k});
|
||||
$k = ($k+1) % $len;
|
||||
}
|
||||
$this->_P[$i] ^= $data;
|
||||
}
|
||||
|
||||
for ($i = 0; $i <= 16; $i += 2) {
|
||||
$this->_encipher($datal, $datar);
|
||||
$this->_P[$i] = $datal;
|
||||
$this->_P[$i+1] = $datar;
|
||||
}
|
||||
for ($i = 0; $i < 256; $i += 2) {
|
||||
$this->_encipher($datal, $datar);
|
||||
$this->_S[0][$i] = $datal;
|
||||
$this->_S[0][$i+1] = $datar;
|
||||
}
|
||||
for ($i = 0; $i < 256; $i += 2) {
|
||||
$this->_encipher($datal, $datar);
|
||||
$this->_S[1][$i] = $datal;
|
||||
$this->_S[1][$i+1] = $datar;
|
||||
}
|
||||
for ($i = 0; $i < 256; $i += 2) {
|
||||
$this->_encipher($datal, $datar);
|
||||
$this->_S[2][$i] = $datal;
|
||||
$this->_S[2][$i+1] = $datar;
|
||||
}
|
||||
for ($i = 0; $i < 256; $i += 2) {
|
||||
$this->_encipher($datal, $datar);
|
||||
$this->_S[3][$i] = $datal;
|
||||
$this->_S[3][$i+1] = $datar;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
327
apps/files_encryption/3rdparty/Crypt_Blowfish/Blowfish/DefaultKey.php
vendored
Normal file
327
apps/files_encryption/3rdparty/Crypt_Blowfish/Blowfish/DefaultKey.php
vendored
Normal file
|
|
@ -0,0 +1,327 @@
|
|||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Crypt_Blowfish allows for encryption and decryption on the fly using
|
||||
* the Blowfish algorithm. Crypt_Blowfish does not require the mcrypt
|
||||
* PHP extension, it uses only PHP.
|
||||
* Crypt_Blowfish support encryption/decryption with or without a secret key.
|
||||
*
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* LICENSE: This source file is subject to version 3.0 of the PHP license
|
||||
* that is available through the world-wide-web at the following URI:
|
||||
* http://www.php.net/license/3_0.txt. If you did not receive a copy of
|
||||
* the PHP License and are unable to obtain it through the web, please
|
||||
* send a note to license@php.net so we can mail you a copy immediately.
|
||||
*
|
||||
* @category Encryption
|
||||
* @package Crypt_Blowfish
|
||||
* @author Matthew Fonda <mfonda@php.net>
|
||||
* @copyright 2005 Matthew Fonda
|
||||
* @license http://www.php.net/license/3_0.txt PHP License 3.0
|
||||
* @version CVS: $Id: DefaultKey.php,v 1.81 2005/05/30 18:40:37 mfonda Exp $
|
||||
* @link http://pear.php.net/package/Crypt_Blowfish
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Class containing default key
|
||||
*
|
||||
* @category Encryption
|
||||
* @package Crypt_Blowfish
|
||||
* @author Matthew Fonda <mfonda@php.net>
|
||||
* @copyright 2005 Matthew Fonda
|
||||
* @license http://www.php.net/license/3_0.txt PHP License 3.0
|
||||
* @link http://pear.php.net/package/Crypt_Blowfish
|
||||
* @version @package_version@
|
||||
* @access public
|
||||
*/
|
||||
class Crypt_Blowfish_DefaultKey
|
||||
{
|
||||
var $P = array();
|
||||
|
||||
var $S = array();
|
||||
|
||||
function Crypt_Blowfish_DefaultKey()
|
||||
{
|
||||
$this->P = array(
|
||||
0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344,
|
||||
0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89,
|
||||
0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,
|
||||
0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917,
|
||||
0x9216D5D9, 0x8979FB1B
|
||||
);
|
||||
|
||||
$this->S = array(
|
||||
array(
|
||||
0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,
|
||||
0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,
|
||||
0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,
|
||||
0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,
|
||||
0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,
|
||||
0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,
|
||||
0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,
|
||||
0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,
|
||||
0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,
|
||||
0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,
|
||||
0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,
|
||||
0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,
|
||||
0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,
|
||||
0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,
|
||||
0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,
|
||||
0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,
|
||||
0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,
|
||||
0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,
|
||||
0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,
|
||||
0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,
|
||||
0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,
|
||||
0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,
|
||||
0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,
|
||||
0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,
|
||||
0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,
|
||||
0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,
|
||||
0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,
|
||||
0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,
|
||||
0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,
|
||||
0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,
|
||||
0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,
|
||||
0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,
|
||||
0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,
|
||||
0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,
|
||||
0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,
|
||||
0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,
|
||||
0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB,
|
||||
0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,
|
||||
0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,
|
||||
0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,
|
||||
0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,
|
||||
0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,
|
||||
0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,
|
||||
0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,
|
||||
0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,
|
||||
0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0,
|
||||
0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,
|
||||
0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,
|
||||
0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD,
|
||||
0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,
|
||||
0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,
|
||||
0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9,
|
||||
0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,
|
||||
0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,
|
||||
0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,
|
||||
0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,
|
||||
0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,
|
||||
0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,
|
||||
0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,
|
||||
0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,
|
||||
0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,
|
||||
0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,
|
||||
0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,
|
||||
0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A
|
||||
),
|
||||
array(
|
||||
0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,
|
||||
0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266,
|
||||
0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,
|
||||
0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,
|
||||
0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,
|
||||
0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,
|
||||
0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,
|
||||
0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,
|
||||
0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,
|
||||
0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,
|
||||
0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF,
|
||||
0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,
|
||||
0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,
|
||||
0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7,
|
||||
0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,
|
||||
0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,
|
||||
0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,
|
||||
0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,
|
||||
0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,
|
||||
0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87,
|
||||
0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,
|
||||
0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,
|
||||
0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,
|
||||
0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,
|
||||
0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,
|
||||
0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,
|
||||
0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,
|
||||
0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,
|
||||
0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,
|
||||
0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,
|
||||
0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,
|
||||
0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,
|
||||
0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,
|
||||
0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,
|
||||
0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,
|
||||
0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,
|
||||
0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,
|
||||
0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,
|
||||
0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,
|
||||
0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,
|
||||
0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,
|
||||
0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,
|
||||
0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,
|
||||
0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,
|
||||
0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,
|
||||
0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,
|
||||
0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,
|
||||
0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,
|
||||
0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,
|
||||
0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,
|
||||
0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,
|
||||
0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,
|
||||
0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,
|
||||
0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,
|
||||
0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00,
|
||||
0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061,
|
||||
0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,
|
||||
0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,
|
||||
0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,
|
||||
0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,
|
||||
0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,
|
||||
0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,
|
||||
0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,
|
||||
0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7
|
||||
),
|
||||
array(
|
||||
0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,
|
||||
0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,
|
||||
0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,
|
||||
0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,
|
||||
0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,
|
||||
0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,
|
||||
0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,
|
||||
0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,
|
||||
0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,
|
||||
0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6,
|
||||
0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,
|
||||
0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,
|
||||
0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,
|
||||
0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,
|
||||
0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,
|
||||
0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,
|
||||
0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,
|
||||
0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,
|
||||
0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,
|
||||
0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,
|
||||
0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,
|
||||
0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,
|
||||
0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,
|
||||
0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,
|
||||
0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,
|
||||
0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,
|
||||
0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,
|
||||
0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,
|
||||
0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,
|
||||
0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,
|
||||
0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,
|
||||
0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,
|
||||
0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,
|
||||
0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB,
|
||||
0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,
|
||||
0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,
|
||||
0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,
|
||||
0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,
|
||||
0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,
|
||||
0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,
|
||||
0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,
|
||||
0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,
|
||||
0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,
|
||||
0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,
|
||||
0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,
|
||||
0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,
|
||||
0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,
|
||||
0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,
|
||||
0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,
|
||||
0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,
|
||||
0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,
|
||||
0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,
|
||||
0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,
|
||||
0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,
|
||||
0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,
|
||||
0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,
|
||||
0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,
|
||||
0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,
|
||||
0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,
|
||||
0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,
|
||||
0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4,
|
||||
0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,
|
||||
0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,
|
||||
0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0
|
||||
),
|
||||
array(
|
||||
0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,
|
||||
0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,
|
||||
0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,
|
||||
0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,
|
||||
0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,
|
||||
0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,
|
||||
0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,
|
||||
0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22,
|
||||
0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,
|
||||
0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,
|
||||
0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,
|
||||
0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,
|
||||
0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593,
|
||||
0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,
|
||||
0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,
|
||||
0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C,
|
||||
0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,
|
||||
0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,
|
||||
0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,
|
||||
0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,
|
||||
0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,
|
||||
0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,
|
||||
0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,
|
||||
0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,
|
||||
0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,
|
||||
0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,
|
||||
0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,
|
||||
0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,
|
||||
0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,
|
||||
0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,
|
||||
0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,
|
||||
0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,
|
||||
0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,
|
||||
0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,
|
||||
0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,
|
||||
0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,
|
||||
0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,
|
||||
0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,
|
||||
0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,
|
||||
0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,
|
||||
0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38,
|
||||
0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,
|
||||
0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,
|
||||
0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,
|
||||
0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,
|
||||
0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,
|
||||
0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,
|
||||
0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,
|
||||
0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,
|
||||
0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,
|
||||
0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,
|
||||
0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,
|
||||
0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,
|
||||
0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,
|
||||
0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,
|
||||
0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,
|
||||
0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,
|
||||
0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,
|
||||
0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0,
|
||||
0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,
|
||||
0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,
|
||||
0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,
|
||||
0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,
|
||||
0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
59
apps/files_encryption/ajax/adminrecovery.php
Normal file
59
apps/files_encryption/ajax/adminrecovery.php
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Copyright (c) 2013, Sam Tuke <samtuke@owncloud.com>
|
||||
* This file is licensed under the Affero General Public License version 3 or later.
|
||||
* See the COPYING-README file.
|
||||
*
|
||||
* @brief Script to handle admin settings for encrypted key recovery
|
||||
*/
|
||||
use OCA\Encryption;
|
||||
|
||||
\OCP\JSON::checkAdminUser();
|
||||
\OCP\JSON::checkAppEnabled('files_encryption');
|
||||
\OCP\JSON::callCheck();
|
||||
|
||||
$l = OC_L10N::get('files_encryption');
|
||||
|
||||
$return = false;
|
||||
// Enable recoveryAdmin
|
||||
|
||||
$recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId');
|
||||
|
||||
if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] === '1') {
|
||||
|
||||
$return = \OCA\Encryption\Helper::adminEnableRecovery($recoveryKeyId, $_POST['recoveryPassword']);
|
||||
|
||||
// Return success or failure
|
||||
if ($return) {
|
||||
\OCP\JSON::success(array('data' => array('message' => $l->t('Recovery key successfully enabled'))));
|
||||
} else {
|
||||
\OCP\JSON::error(array(
|
||||
'data' => array(
|
||||
'message' => $l->t(
|
||||
'Could not enable recovery key. Please check your recovery key password!')
|
||||
)
|
||||
));
|
||||
}
|
||||
|
||||
// Disable recoveryAdmin
|
||||
} elseif (
|
||||
isset($_POST['adminEnableRecovery'])
|
||||
&& '0' === $_POST['adminEnableRecovery']
|
||||
) {
|
||||
$return = \OCA\Encryption\Helper::adminDisableRecovery($_POST['recoveryPassword']);
|
||||
|
||||
// Return success or failure
|
||||
if ($return) {
|
||||
\OCP\JSON::success(array('data' => array('message' => $l->t('Recovery key successfully disabled'))));
|
||||
} else {
|
||||
\OCP\JSON::error(array(
|
||||
'data' => array(
|
||||
'message' => $l->t(
|
||||
'Could not disable recovery key. Please check your recovery key password!')
|
||||
)
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
52
apps/files_encryption/ajax/changeRecoveryPassword.php
Normal file
52
apps/files_encryption/ajax/changeRecoveryPassword.php
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Copyright (c) 2013, Bjoern Schiessle <schiessle@owncloud.com>
|
||||
* This file is licensed under the Affero General Public License version 3 or later.
|
||||
* See the COPYING-README file.
|
||||
*
|
||||
* @brief Script to change recovery key password
|
||||
*
|
||||
*/
|
||||
|
||||
use OCA\Encryption;
|
||||
|
||||
\OCP\JSON::checkAdminUser();
|
||||
\OCP\JSON::checkAppEnabled('files_encryption');
|
||||
\OCP\JSON::callCheck();
|
||||
|
||||
$l = OC_L10N::get('core');
|
||||
|
||||
$return = false;
|
||||
|
||||
$oldPassword = $_POST['oldPassword'];
|
||||
$newPassword = $_POST['newPassword'];
|
||||
|
||||
$view = new \OC\Files\View('/');
|
||||
$util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \OCP\User::getUser());
|
||||
|
||||
$proxyStatus = \OC_FileProxy::$enabled;
|
||||
\OC_FileProxy::$enabled = false;
|
||||
|
||||
$keyId = $util->getRecoveryKeyId();
|
||||
$keyPath = '/owncloud_private_key/' . $keyId . '.private.key';
|
||||
|
||||
$encryptedRecoveryKey = $view->file_get_contents($keyPath);
|
||||
$decryptedRecoveryKey = \OCA\Encryption\Crypt::decryptPrivateKey($encryptedRecoveryKey, $oldPassword);
|
||||
|
||||
if ($decryptedRecoveryKey) {
|
||||
|
||||
$encryptedRecoveryKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent($decryptedRecoveryKey, $newPassword);
|
||||
$view->file_put_contents($keyPath, $encryptedRecoveryKey);
|
||||
|
||||
$return = true;
|
||||
}
|
||||
|
||||
\OC_FileProxy::$enabled = $proxyStatus;
|
||||
|
||||
// success or failure
|
||||
if ($return) {
|
||||
\OCP\JSON::success(array('data' => array('message' => $l->t('Password successfully changed.'))));
|
||||
} else {
|
||||
\OCP\JSON::error(array('data' => array('message' => $l->t('Could not change the password. Maybe the old password was not correct.'))));
|
||||
}
|
||||
54
apps/files_encryption/ajax/updatePrivateKeyPassword.php
Normal file
54
apps/files_encryption/ajax/updatePrivateKeyPassword.php
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Copyright (c) 2013, Bjoern Schiessle <schiessle@owncloud.com>
|
||||
* This file is licensed under the Affero General Public License version 3 or later.
|
||||
* See the COPYING-README file.
|
||||
*
|
||||
* @brief Script to change recovery key password
|
||||
*
|
||||
*/
|
||||
|
||||
use OCA\Encryption;
|
||||
|
||||
\OCP\JSON::checkLoggedIn();
|
||||
\OCP\JSON::checkAppEnabled('files_encryption');
|
||||
\OCP\JSON::callCheck();
|
||||
|
||||
$l = OC_L10N::get('core');
|
||||
|
||||
$return = false;
|
||||
|
||||
$oldPassword = $_POST['oldPassword'];
|
||||
$newPassword = $_POST['newPassword'];
|
||||
|
||||
$view = new \OC\Files\View('/');
|
||||
$session = new \OCA\Encryption\Session($view);
|
||||
$user = \OCP\User::getUser();
|
||||
|
||||
$proxyStatus = \OC_FileProxy::$enabled;
|
||||
\OC_FileProxy::$enabled = false;
|
||||
|
||||
$keyPath = '/' . $user . '/files_encryption/' . $user . '.private.key';
|
||||
|
||||
$encryptedKey = $view->file_get_contents($keyPath);
|
||||
$decryptedKey = \OCA\Encryption\Crypt::decryptPrivateKey($encryptedKey, $oldPassword);
|
||||
|
||||
if ($decryptedKey) {
|
||||
|
||||
$encryptedKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent($decryptedKey, $newPassword);
|
||||
$view->file_put_contents($keyPath, $encryptedKey);
|
||||
|
||||
$session->setPrivateKey($decryptedKey);
|
||||
|
||||
$return = true;
|
||||
}
|
||||
|
||||
\OC_FileProxy::$enabled = $proxyStatus;
|
||||
|
||||
// success or failure
|
||||
if ($return) {
|
||||
\OCP\JSON::success(array('data' => array('message' => $l->t('Private key password successfully updated.'))));
|
||||
} else {
|
||||
\OCP\JSON::error(array('data' => array('message' => $l->t('Could not update the private key password. Maybe the old password was not correct.'))));
|
||||
}
|
||||
41
apps/files_encryption/ajax/userrecovery.php
Normal file
41
apps/files_encryption/ajax/userrecovery.php
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
/**
|
||||
* Copyright (c) 2013, Sam Tuke <samtuke@owncloud.com>
|
||||
* This file is licensed under the Affero General Public License version 3 or later.
|
||||
* See the COPYING-README file.
|
||||
*
|
||||
* @brief Script to handle admin settings for encrypted key recovery
|
||||
*/
|
||||
|
||||
use OCA\Encryption;
|
||||
|
||||
\OCP\JSON::checkLoggedIn();
|
||||
\OCP\JSON::checkAppEnabled('files_encryption');
|
||||
\OCP\JSON::callCheck();
|
||||
|
||||
if (
|
||||
isset($_POST['userEnableRecovery'])
|
||||
&& (0 == $_POST['userEnableRecovery'] || '1' === $_POST['userEnableRecovery'])
|
||||
) {
|
||||
|
||||
$userId = \OCP\USER::getUser();
|
||||
$view = new \OC_FilesystemView('/');
|
||||
$util = new \OCA\Encryption\Util($view, $userId);
|
||||
|
||||
// Save recovery preference to DB
|
||||
$return = $util->setRecoveryForUser($_POST['userEnableRecovery']);
|
||||
|
||||
if ($_POST['userEnableRecovery'] === '1') {
|
||||
$util->addRecoveryKeys();
|
||||
} else {
|
||||
$util->removeRecoveryKeys();
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
$return = false;
|
||||
|
||||
}
|
||||
|
||||
// Return success or failure
|
||||
($return) ? \OCP\JSON::success() : \OCP\JSON::error();
|
||||
|
|
@ -8,42 +8,56 @@ OC::$CLASSPATH['OCA\Encryption\Stream'] = 'files_encryption/lib/stream.php';
|
|||
OC::$CLASSPATH['OCA\Encryption\Proxy'] = 'files_encryption/lib/proxy.php';
|
||||
OC::$CLASSPATH['OCA\Encryption\Session'] = 'files_encryption/lib/session.php';
|
||||
OC::$CLASSPATH['OCA\Encryption\Capabilities'] = 'files_encryption/lib/capabilities.php';
|
||||
OC::$CLASSPATH['OCA\Encryption\Helper'] = 'files_encryption/lib/helper.php';
|
||||
|
||||
OC_FileProxy::register( new OCA\Encryption\Proxy() );
|
||||
if (!OC_Config::getValue('maintenance', false)) {
|
||||
OC_FileProxy::register(new OCA\Encryption\Proxy());
|
||||
|
||||
// User-related hooks
|
||||
OCP\Util::connectHook( 'OC_User', 'post_login', 'OCA\Encryption\Hooks', 'login' );
|
||||
OCP\Util::connectHook( 'OC_User', 'pre_setPassword', 'OCA\Encryption\Hooks', 'setPassphrase' );
|
||||
// User related hooks
|
||||
OCA\Encryption\Helper::registerUserHooks();
|
||||
|
||||
// Sharing-related hooks
|
||||
OCP\Util::connectHook( 'OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared' );
|
||||
OCP\Util::connectHook( 'OCP\Share', 'pre_unshare', 'OCA\Encryption\Hooks', 'preUnshare' );
|
||||
OCP\Util::connectHook( 'OCP\Share', 'pre_unshareAll', 'OCA\Encryption\Hooks', 'preUnshareAll' );
|
||||
// Sharing related hooks
|
||||
OCA\Encryption\Helper::registerShareHooks();
|
||||
|
||||
// Webdav-related hooks
|
||||
OCP\Util::connectHook( 'OC_Webdav_Properties', 'update', 'OCA\Encryption\Hooks', 'updateKeyfile' );
|
||||
// Filesystem related hooks
|
||||
OCA\Encryption\Helper::registerFilesystemHooks();
|
||||
|
||||
stream_wrapper_register( 'crypt', 'OCA\Encryption\Stream' );
|
||||
stream_wrapper_register('crypt', 'OCA\Encryption\Stream');
|
||||
|
||||
$session = new OCA\Encryption\Session();
|
||||
// check if we are logged in
|
||||
if (OCP\User::isLoggedIn()) {
|
||||
|
||||
if (
|
||||
! $session->getPrivateKey( \OCP\USER::getUser() )
|
||||
&& OCP\User::isLoggedIn()
|
||||
&& OCA\Encryption\Crypt::mode() == 'server'
|
||||
) {
|
||||
// ensure filesystem is loaded
|
||||
if (!\OC\Files\Filesystem::$loaded) {
|
||||
\OC_Util::setupFS();
|
||||
}
|
||||
|
||||
// Force the user to log-in again if the encryption key isn't unlocked
|
||||
// (happens when a user is logged in before the encryption app is
|
||||
// enabled)
|
||||
$view = new OC_FilesystemView('/');
|
||||
$session = new \OCA\Encryption\Session($view);
|
||||
|
||||
$user = \OCP\USER::getUser();
|
||||
// check if user has a private key
|
||||
if (
|
||||
!$view->file_exists('/' . $user . '/files_encryption/' . $user . '.private.key')
|
||||
&& OCA\Encryption\Crypt::mode() === 'server'
|
||||
) {
|
||||
|
||||
// Force the user to log-in again if the encryption key isn't unlocked
|
||||
// (happens when a user is logged in before the encryption app is
|
||||
// enabled)
|
||||
OCP\User::logout();
|
||||
|
||||
header("Location: " . OC::$WEBROOT . '/');
|
||||
|
||||
exit();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// logout user if we are in maintenance to force re-login
|
||||
OCP\User::logout();
|
||||
|
||||
header( "Location: " . OC::$WEBROOT.'/' );
|
||||
|
||||
exit();
|
||||
|
||||
}
|
||||
|
||||
// Register settings scripts
|
||||
OCP\App::registerAdmin( 'files_encryption', 'settings' );
|
||||
OCP\App::registerPersonal( 'files_encryption', 'settings-personal' );
|
||||
OCP\App::registerAdmin('files_encryption', 'settings-admin');
|
||||
OCP\App::registerPersonal('files_encryption', 'settings-personal');
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,21 @@
|
|||
<type>text</type>
|
||||
<notnull>true</notnull>
|
||||
<length>64</length>
|
||||
<comments>What client-side / server-side configuration is used</comments>
|
||||
</field>
|
||||
<field>
|
||||
<name>recovery_enabled</name>
|
||||
<type>integer</type>
|
||||
<notnull>true</notnull>
|
||||
<default>0</default>
|
||||
<comments>Whether encryption key recovery is enabled</comments>
|
||||
</field>
|
||||
<field>
|
||||
<name>migration_status</name>
|
||||
<type>integer</type>
|
||||
<notnull>true</notnull>
|
||||
<default>0</default>
|
||||
<comments>Whether encryption migration has been performed</comments>
|
||||
</field>
|
||||
</declaration>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
<info>
|
||||
<id>files_encryption</id>
|
||||
<name>Encryption</name>
|
||||
<description>Server side encryption of files. Warning: You will lose your data if you enable this App and forget your password. Encryption is not yet compatible with LDAP.</description>
|
||||
<description>WARNING: This is a preview release of the new ownCloud 5 encryption system. Testing and feedback is very welcome but don't use this in production yet. Encryption is not yet compatible with LDAP.</description>
|
||||
<licence>AGPL</licence>
|
||||
<author>Sam Tuke</author>
|
||||
<author>Sam Tuke, Bjoern Schiessle, Florin Peter</author>
|
||||
<require>4</require>
|
||||
<shipped>true</shipped>
|
||||
<types>
|
||||
|
|
|
|||
|
|
@ -9,6 +9,57 @@ Encrypted files
|
|||
|
||||
[encrypted data string][delimiter][IV][padding]
|
||||
[anhAAjAmcGXqj1X9g==][00iv00][MSHU5N5gECP7aAg7][xx] (square braces added)
|
||||
|
||||
- Directory structure:
|
||||
- Encrypted user data (catfiles) are stored in the usual /data/user/files dir
|
||||
- Keyfiles are stored in /data/user/files_encryption/keyfiles
|
||||
- Sharekey are stored in /data/user/files_encryption/share-files
|
||||
|
||||
- File extensions:
|
||||
- Catfiles have to keep the file extension of the original file, pre-encryption
|
||||
- Keyfiles use .keyfile
|
||||
- Sharekeys have .shareKey
|
||||
|
||||
Shared files
|
||||
------------
|
||||
|
||||
Shared files have a centrally stored catfile and keyfile, and one sharekey for
|
||||
each user that shares it.
|
||||
|
||||
When sharing is used, a different encryption method is used to encrypt the
|
||||
keyfile (openssl_seal). Although shared files have a keyfile, its contents
|
||||
use a different format therefore.
|
||||
|
||||
Each time a shared file is edited or deleted, all sharekeys for users sharing
|
||||
that file must have their sharekeys changed also. The keyfile and catfile
|
||||
however need only changing in the owners files, as there is only one copy of
|
||||
these.
|
||||
|
||||
Publicly shared files (public links)
|
||||
------------------------------------
|
||||
|
||||
Files shared via public links use a separate system user account called 'ownCloud'. All public files are shared to that user's public key, and the private key is used to access the files when the public link is used in browser.
|
||||
|
||||
This means that files shared via public links are accessible only to users who know the shared URL, or to admins who know the 'ownCloud' user password.
|
||||
|
||||
Lost password recovery
|
||||
----------------------
|
||||
|
||||
In order to enable users to read their encrypted files in the event of a password loss/reset scenario, administrators can choose to enable a 'recoveryAdmin' account. This is a user that all user files will automatically be shared to of the option is enabled. This allows the recoveryAdmin user to generate new keyfiles for the user. By default the UID of the recoveryAdmin is 'recoveryAdmin'.
|
||||
|
||||
OC_FilesystemView
|
||||
-----------------
|
||||
|
||||
files_encryption deals extensively with paths and the filesystem. In order to minimise bugs, it makes calls to filesystem methods in a consistent way: OC_FilesystemView{} objects always use '/' as their root, and specify paths each time particular methods are called. e.g. do this:
|
||||
|
||||
$view->file_exists( 'path/to/file' );
|
||||
|
||||
Not:
|
||||
|
||||
$view->chroot( 'path/to' );
|
||||
$view->file_exists( 'file' );
|
||||
|
||||
Using this convention means that $view objects are more predictable and less likely to break. Problems with paths are the #1 cause of bugs in this app, and consistent $view handling is an important way to prevent them.
|
||||
|
||||
Notes
|
||||
-----
|
||||
|
|
@ -16,4 +67,11 @@ Notes
|
|||
- The user passphrase is required in order to set up or upgrade the app. New
|
||||
keypair generation, and the re-encryption of legacy encrypted files requires
|
||||
it. Therefore an appinfo/update.php script cannot be used, and upgrade logic
|
||||
is handled in the login hook listener.
|
||||
is handled in the login hook listener. Therefore each time the user logs in
|
||||
their files are scanned to detect unencrypted and legacy encrypted files, and
|
||||
they are (re)encrypted as necessary. This may present a performance issue; we
|
||||
need to monitor this.
|
||||
- When files are saved to ownCloud via WebDAV, a .part file extension is used so
|
||||
that the file isn't cached before the upload has been completed. .part files
|
||||
are not compatible with files_encrytion's key management system however, so
|
||||
we have to always sanitise such paths manually before using them.
|
||||
|
|
@ -1 +1 @@
|
|||
0.3
|
||||
0.4
|
||||
|
|
|
|||
10
apps/files_encryption/css/settings-personal.css
Normal file
10
apps/files_encryption/css/settings-personal.css
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
/* Copyright (c) 2013, Sam Tuke, <samtuke@owncloud.com>
|
||||
This file is licensed under the Affero General Public License version 3 or later.
|
||||
See the COPYING-README file. */
|
||||
|
||||
#encryptAllError
|
||||
, #encryptAllSuccess
|
||||
, #recoveryEnabledError
|
||||
, #recoveryEnabledSuccess {
|
||||
display: none;
|
||||
}
|
||||
24
apps/files_encryption/files/error.php
Normal file
24
apps/files_encryption/files/error.php
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<?php
|
||||
if (!isset($_)) { //also provide standalone error page
|
||||
require_once '../../../lib/base.php';
|
||||
|
||||
$l = OC_L10N::get('files_encryption');
|
||||
|
||||
$errorMsg = $l->t('Your private key is not valid! Maybe your password was changed from outside. You can update your private key password in your personal settings to regain access to your files');
|
||||
|
||||
if(isset($_GET['p']) && $_GET['p'] === '1') {
|
||||
header('HTTP/1.0 404 ' . $errorMsg);
|
||||
}
|
||||
|
||||
// check if ajax request
|
||||
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
|
||||
\OCP\JSON::error(array('data' => array('message' => $errorMsg)));
|
||||
} else {
|
||||
header('HTTP/1.0 404 ' . $errorMsg);
|
||||
$tmpl = new OC_Template('files_encryption', 'invalid_private_key', 'guest');
|
||||
$tmpl->printPage();
|
||||
}
|
||||
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
|
|
@ -23,10 +23,11 @@
|
|||
|
||||
namespace OCA\Encryption;
|
||||
|
||||
use OC\Files\Filesystem;
|
||||
|
||||
/**
|
||||
* Class for hook specific logic
|
||||
*/
|
||||
|
||||
class Hooks {
|
||||
|
||||
// TODO: use passphrase for encrypting private key that is separate to
|
||||
|
|
@ -36,156 +37,506 @@ class Hooks {
|
|||
* @brief Startup encryption backend upon user login
|
||||
* @note This method should never be called for users using client side encryption
|
||||
*/
|
||||
public static function login( $params ) {
|
||||
|
||||
public static function login($params) {
|
||||
|
||||
// Manually initialise Filesystem{} singleton with correct
|
||||
// fake root path, in order to avoid fatal webdav errors
|
||||
\OC\Files\Filesystem::init( $params['uid'], $params['uid'] . '/' . 'files' . '/' );
|
||||
|
||||
$view = new \OC_FilesystemView( '/' );
|
||||
// NOTE: disabled because this give errors on webdav!
|
||||
//\OC\Files\Filesystem::init( $params['uid'], '/' . 'files' . '/' );
|
||||
|
||||
$util = new Util( $view, $params['uid'] );
|
||||
|
||||
// Check files_encryption infrastructure is ready for action
|
||||
if ( ! $util->ready() ) {
|
||||
|
||||
\OC_Log::write( 'Encryption library', 'User account "' . $params['uid'] . '" is not ready for encryption; configuration started', \OC_Log::DEBUG );
|
||||
|
||||
return $util->setupServerSide( $params['password'] );
|
||||
$view = new \OC_FilesystemView('/');
|
||||
|
||||
// ensure filesystem is loaded
|
||||
if(!\OC\Files\Filesystem::$loaded) {
|
||||
\OC_Util::setupFS($params['uid']);
|
||||
}
|
||||
|
||||
\OC_FileProxy::$enabled = false;
|
||||
|
||||
$encryptedKey = Keymanager::getPrivateKey( $view, $params['uid'] );
|
||||
|
||||
\OC_FileProxy::$enabled = true;
|
||||
|
||||
$privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, $params['password'] );
|
||||
|
||||
$session = new Session();
|
||||
|
||||
$session->setPrivateKey( $privateKey, $params['uid'] );
|
||||
|
||||
$view1 = new \OC_FilesystemView( '/' . $params['uid'] );
|
||||
|
||||
// Set legacy encryption key if it exists, to support
|
||||
// depreciated encryption system
|
||||
if (
|
||||
$view1->file_exists( 'encryption.key' )
|
||||
&& $encLegacyKey = $view1->file_get_contents( 'encryption.key' )
|
||||
) {
|
||||
|
||||
$plainLegacyKey = Crypt::legacyDecrypt( $encLegacyKey, $params['password'] );
|
||||
|
||||
$session->setLegacyKey( $plainLegacyKey );
|
||||
|
||||
|
||||
$util = new Util($view, $params['uid']);
|
||||
|
||||
// setup user, if user not ready force relogin
|
||||
if (Helper::setupUser($util, $params['password']) === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$publicKey = Keymanager::getPublicKey( $view, $params['uid'] );
|
||||
|
||||
// Encrypt existing user files:
|
||||
// This serves to upgrade old versions of the encryption
|
||||
// app (see appinfo/spec.txt)
|
||||
if (
|
||||
$util->encryptAll( $publicKey, '/' . $params['uid'] . '/' . 'files', $session->getLegacyKey(), $params['password'] )
|
||||
) {
|
||||
|
||||
\OC_Log::write(
|
||||
'Encryption library', 'Encryption of existing files belonging to "' . $params['uid'] . '" started at login'
|
||||
, \OC_Log::INFO
|
||||
);
|
||||
|
||||
|
||||
$encryptedKey = Keymanager::getPrivateKey($view, $params['uid']);
|
||||
|
||||
$privateKey = Crypt::decryptPrivateKey($encryptedKey, $params['password']);
|
||||
|
||||
if ($privateKey === false) {
|
||||
\OCP\Util::writeLog('Encryption library', 'Private key for user "' . $params['uid']
|
||||
. '" is not valid! Maybe the user password was changed from outside if so please change it back to gain access', \OCP\Util::ERROR);
|
||||
}
|
||||
|
||||
$session = new \OCA\Encryption\Session($view);
|
||||
|
||||
$session->setPrivateKey($privateKey);
|
||||
|
||||
// Check if first-run file migration has already been performed
|
||||
$ready = false;
|
||||
if ($util->getMigrationStatus() === Util::MIGRATION_OPEN) {
|
||||
$ready = $util->beginMigration();
|
||||
}
|
||||
|
||||
// If migration not yet done
|
||||
if ($ready) {
|
||||
|
||||
$userView = new \OC_FilesystemView('/' . $params['uid']);
|
||||
|
||||
// Set legacy encryption key if it exists, to support
|
||||
// depreciated encryption system
|
||||
if (
|
||||
$userView->file_exists('encryption.key')
|
||||
&& $encLegacyKey = $userView->file_get_contents('encryption.key')
|
||||
) {
|
||||
|
||||
$plainLegacyKey = Crypt::legacyDecrypt($encLegacyKey, $params['password']);
|
||||
|
||||
$session->setLegacyKey($plainLegacyKey);
|
||||
|
||||
}
|
||||
|
||||
// Encrypt existing user files:
|
||||
// This serves to upgrade old versions of the encryption
|
||||
// app (see appinfo/spec.txt)
|
||||
if (
|
||||
$util->encryptAll('/' . $params['uid'] . '/' . 'files', $session->getLegacyKey(), $params['password'])
|
||||
) {
|
||||
|
||||
\OC_Log::write(
|
||||
'Encryption library', 'Encryption of existing files belonging to "' . $params['uid'] . '" completed'
|
||||
, \OC_Log::INFO
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
// Register successful migration in DB
|
||||
$util->finishMigration();
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief setup encryption backend upon user created
|
||||
* @note This method should never be called for users using client side encryption
|
||||
*/
|
||||
public static function postCreateUser($params) {
|
||||
$view = new \OC_FilesystemView('/');
|
||||
|
||||
$util = new Util($view, $params['uid']);
|
||||
|
||||
Helper::setupUser($util, $params['password']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief cleanup encryption backend upon user deleted
|
||||
* @note This method should never be called for users using client side encryption
|
||||
*/
|
||||
public static function postDeleteUser($params) {
|
||||
$view = new \OC_FilesystemView('/');
|
||||
|
||||
// cleanup public key
|
||||
$publicKey = '/public-keys/' . $params['uid'] . '.public.key';
|
||||
|
||||
// Disable encryption proxy to prevent recursive calls
|
||||
$proxyStatus = \OC_FileProxy::$enabled;
|
||||
\OC_FileProxy::$enabled = false;
|
||||
|
||||
$view->unlink($publicKey);
|
||||
|
||||
\OC_FileProxy::$enabled = $proxyStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief If the password can't be changed within ownCloud, than update the key password in advance.
|
||||
*/
|
||||
public static function preSetPassphrase($params) {
|
||||
if ( ! \OC_User::canUserChangePassword($params['uid']) ) {
|
||||
self::setPassphrase($params);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Change a user's encryption passphrase
|
||||
* @param array $params keys: uid, password
|
||||
*/
|
||||
public static function setPassphrase( $params ) {
|
||||
|
||||
public static function setPassphrase($params) {
|
||||
|
||||
// Only attempt to change passphrase if server-side encryption
|
||||
// is in use (client-side encryption does not have access to
|
||||
// is in use (client-side encryption does not have access to
|
||||
// the necessary keys)
|
||||
if ( Crypt::mode() == 'server' ) {
|
||||
|
||||
$session = new Session();
|
||||
|
||||
// Get existing decrypted private key
|
||||
$privateKey = $session->getPrivateKey();
|
||||
|
||||
// Encrypt private key with new user pwd as passphrase
|
||||
$encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $privateKey, $params['password'] );
|
||||
|
||||
// Save private key
|
||||
Keymanager::setPrivateKey( $encryptedPrivateKey );
|
||||
|
||||
// NOTE: Session does not need to be updated as the
|
||||
// private key has not changed, only the passphrase
|
||||
// used to decrypt it has changed
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief update the encryption key of the file uploaded by the client
|
||||
*/
|
||||
public static function updateKeyfile( $params ) {
|
||||
|
||||
if ( Crypt::mode() == 'client' ) {
|
||||
|
||||
if ( isset( $params['properties']['key'] ) ) {
|
||||
|
||||
$view = new \OC_FilesystemView( '/' );
|
||||
$userId = \OCP\User::getUser();
|
||||
|
||||
Keymanager::setFileKey( $view, $params['path'], $userId, $params['properties']['key'] );
|
||||
|
||||
} else {
|
||||
|
||||
\OC_Log::write(
|
||||
'Encryption library', "Client side encryption is enabled but the client doesn't provide a encryption key for the file!"
|
||||
, \OC_Log::ERROR
|
||||
);
|
||||
|
||||
error_log( "Client side encryption is enabled but the client doesn't provide an encryption key for the file!" );
|
||||
|
||||
if (Crypt::mode() === 'server') {
|
||||
|
||||
if ($params['uid'] === \OCP\User::getUser()) {
|
||||
|
||||
$view = new \OC_FilesystemView('/');
|
||||
|
||||
$session = new \OCA\Encryption\Session($view);
|
||||
|
||||
// Get existing decrypted private key
|
||||
$privateKey = $session->getPrivateKey();
|
||||
|
||||
// Encrypt private key with new user pwd as passphrase
|
||||
$encryptedPrivateKey = Crypt::symmetricEncryptFileContent($privateKey, $params['password']);
|
||||
|
||||
// Save private key
|
||||
Keymanager::setPrivateKey($encryptedPrivateKey);
|
||||
|
||||
// NOTE: Session does not need to be updated as the
|
||||
// private key has not changed, only the passphrase
|
||||
// used to decrypt it has changed
|
||||
|
||||
|
||||
} else { // admin changed the password for a different user, create new keys and reencrypt file keys
|
||||
|
||||
$user = $params['uid'];
|
||||
$recoveryPassword = $params['recoveryPassword'];
|
||||
$newUserPassword = $params['password'];
|
||||
|
||||
$view = new \OC_FilesystemView('/');
|
||||
|
||||
// make sure that the users home is mounted
|
||||
\OC\Files\Filesystem::initMountPoints($user);
|
||||
|
||||
$keypair = Crypt::createKeypair();
|
||||
|
||||
// Disable encryption proxy to prevent recursive calls
|
||||
$proxyStatus = \OC_FileProxy::$enabled;
|
||||
\OC_FileProxy::$enabled = false;
|
||||
|
||||
// Save public key
|
||||
$view->file_put_contents('/public-keys/' . $user . '.public.key', $keypair['publicKey']);
|
||||
|
||||
// Encrypt private key empty passphrase
|
||||
$encryptedPrivateKey = Crypt::symmetricEncryptFileContent($keypair['privateKey'], $newUserPassword);
|
||||
|
||||
// Save private key
|
||||
$view->file_put_contents(
|
||||
'/' . $user . '/files_encryption/' . $user . '.private.key', $encryptedPrivateKey);
|
||||
|
||||
if ($recoveryPassword) { // if recovery key is set we can re-encrypt the key files
|
||||
$util = new Util($view, $user);
|
||||
$util->recoverUsersFiles($recoveryPassword);
|
||||
}
|
||||
|
||||
\OC_FileProxy::$enabled = $proxyStatus;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
|
||||
/*
|
||||
* @brief check if files can be encrypted to every user.
|
||||
*/
|
||||
public static function postShared( $params ) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
* @param $params
|
||||
*/
|
||||
public static function preUnshare( $params ) {
|
||||
|
||||
// Delete existing catfile
|
||||
|
||||
// Generate new catfile and env keys
|
||||
|
||||
// Save env keys to user folders
|
||||
public static function preShared($params) {
|
||||
|
||||
$users = array();
|
||||
$view = new \OC\Files\View('/public-keys/');
|
||||
|
||||
switch ($params['shareType']) {
|
||||
case \OCP\Share::SHARE_TYPE_USER:
|
||||
$users[] = $params['shareWith'];
|
||||
break;
|
||||
case \OCP\Share::SHARE_TYPE_GROUP:
|
||||
$users = \OC_Group::usersInGroup($params['shareWith']);
|
||||
break;
|
||||
}
|
||||
|
||||
$error = false;
|
||||
foreach ($users as $user) {
|
||||
if (!$view->file_exists($user . '.public.key')) {
|
||||
$error = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($error) // Set flag var 'run' to notify emitting
|
||||
// script that hook execution failed
|
||||
{
|
||||
$params['run']->run = false;
|
||||
}
|
||||
// TODO: Make sure files_sharing provides user
|
||||
// feedback on failed share
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief
|
||||
* @brief
|
||||
*/
|
||||
public static function preUnshareAll( $params ) {
|
||||
|
||||
trigger_error( "preUnshareAll" );
|
||||
|
||||
public static function postShared($params) {
|
||||
|
||||
// NOTE: $params has keys:
|
||||
// [itemType] => file
|
||||
// itemSource -> int, filecache file ID
|
||||
// [parent] =>
|
||||
// [itemTarget] => /13
|
||||
// shareWith -> string, uid of user being shared to
|
||||
// fileTarget -> path of file being shared
|
||||
// uidOwner -> owner of the original file being shared
|
||||
// [shareType] => 0
|
||||
// [shareWith] => test1
|
||||
// [uidOwner] => admin
|
||||
// [permissions] => 17
|
||||
// [fileSource] => 13
|
||||
// [fileTarget] => /test8
|
||||
// [id] => 10
|
||||
// [token] =>
|
||||
// [run] => whether emitting script should continue to run
|
||||
// TODO: Should other kinds of item be encrypted too?
|
||||
|
||||
if ($params['itemType'] === 'file' || $params['itemType'] === 'folder') {
|
||||
|
||||
$view = new \OC_FilesystemView('/');
|
||||
$session = new \OCA\Encryption\Session($view);
|
||||
$userId = \OCP\User::getUser();
|
||||
$util = new Util($view, $userId);
|
||||
$path = $util->fileIdToPath($params['itemSource']);
|
||||
|
||||
$share = $util->getParentFromShare($params['id']);
|
||||
//if parent is set, then this is a re-share action
|
||||
if ($share['parent'] !== null) {
|
||||
|
||||
// get the parent from current share
|
||||
$parent = $util->getShareParent($params['parent']);
|
||||
|
||||
// if parent is file the it is an 1:1 share
|
||||
if ($parent['item_type'] === 'file') {
|
||||
|
||||
// prefix path with Shared
|
||||
$path = '/Shared' . $parent['file_target'];
|
||||
} else {
|
||||
|
||||
// NOTE: parent is folder but shared was a file!
|
||||
// we try to rebuild the missing path
|
||||
// some examples we face here
|
||||
// user1 share folder1 with user2 folder1 has
|
||||
// the following structure
|
||||
// /folder1/subfolder1/subsubfolder1/somefile.txt
|
||||
// user2 re-share subfolder2 with user3
|
||||
// user3 re-share somefile.txt user4
|
||||
// so our path should be
|
||||
// /Shared/subfolder1/subsubfolder1/somefile.txt
|
||||
// while user3 is sharing
|
||||
|
||||
if ($params['itemType'] === 'file') {
|
||||
// get target path
|
||||
$targetPath = $util->fileIdToPath($params['fileSource']);
|
||||
$targetPathSplit = array_reverse(explode('/', $targetPath));
|
||||
|
||||
// init values
|
||||
$path = '';
|
||||
$sharedPart = ltrim($parent['file_target'], '/');
|
||||
|
||||
// rebuild path
|
||||
foreach ($targetPathSplit as $pathPart) {
|
||||
if ($pathPart !== $sharedPart) {
|
||||
$path = '/' . $pathPart . $path;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
// prefix path with Shared
|
||||
$path = '/Shared' . $parent['file_target'] . $path;
|
||||
} else {
|
||||
// prefix path with Shared
|
||||
$path = '/Shared' . $parent['file_target'] . $params['fileTarget'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$sharingEnabled = \OCP\Share::isEnabled();
|
||||
|
||||
// get the path including mount point only if not a shared folder
|
||||
if (strncmp($path, '/Shared', strlen('/Shared') !== 0)) {
|
||||
// get path including the the storage mount point
|
||||
$path = $util->getPathWithMountPoint($params['itemSource']);
|
||||
}
|
||||
|
||||
// if a folder was shared, get a list of all (sub-)folders
|
||||
if ($params['itemType'] === 'folder') {
|
||||
$allFiles = $util->getAllFiles($path);
|
||||
} else {
|
||||
$allFiles = array($path);
|
||||
}
|
||||
|
||||
foreach ($allFiles as $path) {
|
||||
$usersSharing = $util->getSharingUsersArray($sharingEnabled, $path);
|
||||
$util->setSharedFileKeyfiles($session, $usersSharing, $path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*/
|
||||
public static function postUnshare($params) {
|
||||
|
||||
// NOTE: $params has keys:
|
||||
// [itemType] => file
|
||||
// [itemSource] => 13
|
||||
// [shareType] => 0
|
||||
// [shareWith] => test1
|
||||
// [itemParent] =>
|
||||
|
||||
if ($params['itemType'] === 'file' || $params['itemType'] === 'folder') {
|
||||
|
||||
$view = new \OC_FilesystemView('/');
|
||||
$userId = \OCP\User::getUser();
|
||||
$util = new Util($view, $userId);
|
||||
$path = $util->fileIdToPath($params['itemSource']);
|
||||
|
||||
// check if this is a re-share
|
||||
if ($params['itemParent']) {
|
||||
|
||||
// get the parent from current share
|
||||
$parent = $util->getShareParent($params['itemParent']);
|
||||
|
||||
// get target path
|
||||
$targetPath = $util->fileIdToPath($params['itemSource']);
|
||||
$targetPathSplit = array_reverse(explode('/', $targetPath));
|
||||
|
||||
// init values
|
||||
$path = '';
|
||||
$sharedPart = ltrim($parent['file_target'], '/');
|
||||
|
||||
// rebuild path
|
||||
foreach ($targetPathSplit as $pathPart) {
|
||||
if ($pathPart !== $sharedPart) {
|
||||
$path = '/' . $pathPart . $path;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// prefix path with Shared
|
||||
$path = '/Shared' . $parent['file_target'] . $path;
|
||||
}
|
||||
|
||||
// for group shares get a list of the group members
|
||||
if ($params['shareType'] === \OCP\Share::SHARE_TYPE_GROUP) {
|
||||
$userIds = \OC_Group::usersInGroup($params['shareWith']);
|
||||
} else {
|
||||
if ($params['shareType'] === \OCP\Share::SHARE_TYPE_LINK) {
|
||||
$userIds = array($util->getPublicShareKeyId());
|
||||
} else {
|
||||
$userIds = array($params['shareWith']);
|
||||
}
|
||||
}
|
||||
|
||||
// get the path including mount point only if not a shared folder
|
||||
if (strncmp($path, '/Shared', strlen('/Shared') !== 0)) {
|
||||
// get path including the the storage mount point
|
||||
$path = $util->getPathWithMountPoint($params['itemSource']);
|
||||
}
|
||||
|
||||
// if we unshare a folder we need a list of all (sub-)files
|
||||
if ($params['itemType'] === 'folder') {
|
||||
$allFiles = $util->getAllFiles($path);
|
||||
} else {
|
||||
$allFiles = array($path);
|
||||
}
|
||||
|
||||
foreach ($allFiles as $path) {
|
||||
|
||||
// check if the user still has access to the file, otherwise delete share key
|
||||
$sharingUsers = $util->getSharingUsersArray(true, $path);
|
||||
|
||||
// Unshare every user who no longer has access to the file
|
||||
$delUsers = array_diff($userIds, $sharingUsers);
|
||||
|
||||
// delete share key
|
||||
Keymanager::delShareKey($view, $delUsers, $path);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief after a file is renamed, rename its keyfile and share-keys also fix the file size and fix also the sharing
|
||||
* @param array with oldpath and newpath
|
||||
*
|
||||
* This function is connected to the rename signal of OC_Filesystem and adjust the name and location
|
||||
* of the stored versions along the actual file
|
||||
*/
|
||||
public static function postRename($params) {
|
||||
// Disable encryption proxy to prevent recursive calls
|
||||
$proxyStatus = \OC_FileProxy::$enabled;
|
||||
\OC_FileProxy::$enabled = false;
|
||||
|
||||
$view = new \OC_FilesystemView('/');
|
||||
$session = new \OCA\Encryption\Session($view);
|
||||
$userId = \OCP\User::getUser();
|
||||
$util = new Util($view, $userId);
|
||||
|
||||
// Format paths to be relative to user files dir
|
||||
$oldKeyfilePath = \OC\Files\Filesystem::normalizePath(
|
||||
$userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/' . $params['oldpath']);
|
||||
$newKeyfilePath = \OC\Files\Filesystem::normalizePath(
|
||||
$userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/' . $params['newpath']);
|
||||
|
||||
// add key ext if this is not an folder
|
||||
if (!$view->is_dir($oldKeyfilePath)) {
|
||||
$oldKeyfilePath .= '.key';
|
||||
$newKeyfilePath .= '.key';
|
||||
|
||||
// handle share-keys
|
||||
$localKeyPath = $view->getLocalFile($userId . '/files_encryption/share-keys/' . $params['oldpath']);
|
||||
$matches = glob(preg_quote($localKeyPath) . '*.shareKey');
|
||||
foreach ($matches as $src) {
|
||||
$dst = \OC\Files\Filesystem::normalizePath(str_replace($params['oldpath'], $params['newpath'], $src));
|
||||
|
||||
// create destination folder if not exists
|
||||
if (!file_exists(dirname($dst))) {
|
||||
mkdir(dirname($dst), 0750, true);
|
||||
}
|
||||
|
||||
rename($src, $dst);
|
||||
}
|
||||
|
||||
} else {
|
||||
// handle share-keys folders
|
||||
$oldShareKeyfilePath = \OC\Files\Filesystem::normalizePath(
|
||||
$userId . '/' . 'files_encryption' . '/' . 'share-keys' . '/' . $params['oldpath']);
|
||||
$newShareKeyfilePath = \OC\Files\Filesystem::normalizePath(
|
||||
$userId . '/' . 'files_encryption' . '/' . 'share-keys' . '/' . $params['newpath']);
|
||||
|
||||
// create destination folder if not exists
|
||||
if (!$view->file_exists(dirname($newShareKeyfilePath))) {
|
||||
$view->mkdir(dirname($newShareKeyfilePath), 0750, true);
|
||||
}
|
||||
|
||||
$view->rename($oldShareKeyfilePath, $newShareKeyfilePath);
|
||||
}
|
||||
|
||||
// Rename keyfile so it isn't orphaned
|
||||
if ($view->file_exists($oldKeyfilePath)) {
|
||||
|
||||
// create destination folder if not exists
|
||||
if (!$view->file_exists(dirname($newKeyfilePath))) {
|
||||
$view->mkdir(dirname($newKeyfilePath), 0750, true);
|
||||
}
|
||||
|
||||
$view->rename($oldKeyfilePath, $newKeyfilePath);
|
||||
}
|
||||
|
||||
// build the path to the file
|
||||
$newPath = '/' . $userId . '/files' . $params['newpath'];
|
||||
$newPathRelative = $params['newpath'];
|
||||
|
||||
if ($util->fixFileSize($newPath)) {
|
||||
// get sharing app state
|
||||
$sharingEnabled = \OCP\Share::isEnabled();
|
||||
|
||||
// get users
|
||||
$usersSharing = $util->getSharingUsersArray($sharingEnabled, $newPathRelative);
|
||||
|
||||
// update sharing-keys
|
||||
$util->setSharedFileKeyfiles($session, $usersSharing, $newPathRelative);
|
||||
}
|
||||
|
||||
\OC_FileProxy::$enabled = $proxyStatus;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
102
apps/files_encryption/js/settings-admin.js
Normal file
102
apps/files_encryption/js/settings-admin.js
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
/**
|
||||
* Copyright (c) 2013, Sam Tuke <samtuke@owncloud.com>, Robin Appelman
|
||||
* <icewind1991@gmail.com>
|
||||
* This file is licensed under the Affero General Public License version 3 or later.
|
||||
* See the COPYING-README file.
|
||||
*/
|
||||
|
||||
OC.msg={
|
||||
startSaving:function(selector){
|
||||
$(selector)
|
||||
.html( t('settings', 'Saving...') )
|
||||
.removeClass('success')
|
||||
.removeClass('error')
|
||||
.stop(true, true)
|
||||
.show();
|
||||
},
|
||||
finishedSaving:function(selector, data){
|
||||
if( data.status === "success" ){
|
||||
$(selector).html( data.data.message )
|
||||
.addClass('success')
|
||||
.stop(true, true)
|
||||
.delay(3000)
|
||||
.fadeOut(900);
|
||||
}else{
|
||||
$(selector).html( data.data.message ).addClass('error');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
$(document).ready(function(){
|
||||
// Trigger ajax on recoveryAdmin status change
|
||||
var enabledStatus = $('#adminEnableRecovery').val();
|
||||
|
||||
$('input:password[name="recoveryPassword"]').keyup(function(event) {
|
||||
var recoveryPassword = $( '#recoveryPassword' ).val();
|
||||
var checkedButton = $('input:radio[name="adminEnableRecovery"]:checked').val();
|
||||
var uncheckedValue = (1+parseInt(checkedButton)) % 2;
|
||||
if (recoveryPassword != '' ) {
|
||||
$('input:radio[name="adminEnableRecovery"][value="'+uncheckedValue.toString()+'"]').removeAttr("disabled");
|
||||
} else {
|
||||
$('input:radio[name="adminEnableRecovery"][value="'+uncheckedValue.toString()+'"]').attr("disabled", "true");
|
||||
}
|
||||
});
|
||||
|
||||
$( 'input:radio[name="adminEnableRecovery"]' ).change(
|
||||
function() {
|
||||
var recoveryStatus = $( this ).val();
|
||||
var oldStatus = (1+parseInt(recoveryStatus)) % 2;
|
||||
var recoveryPassword = $( '#recoveryPassword' ).val();
|
||||
$.post(
|
||||
OC.filePath( 'files_encryption', 'ajax', 'adminrecovery.php' )
|
||||
, { adminEnableRecovery: recoveryStatus, recoveryPassword: recoveryPassword }
|
||||
, function( result ) {
|
||||
if (result.status === "error") {
|
||||
OC.Notification.show(t('admin', result.data.message));
|
||||
$('input:radio[name="adminEnableRecovery"][value="'+oldStatus.toString()+'"]').attr("checked", "true");
|
||||
} else {
|
||||
OC.Notification.hide();
|
||||
if (recoveryStatus === "0") {
|
||||
$('button:button[name="submitChangeRecoveryKey"]').attr("disabled", "true");
|
||||
$('input:password[name="changeRecoveryPassword"]').attr("disabled", "true");
|
||||
$('input:password[name="changeRecoveryPassword"]').val("");
|
||||
} else {
|
||||
$('input:password[name="changeRecoveryPassword"]').removeAttr("disabled");
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
// change recovery password
|
||||
|
||||
$('input:password[name="changeRecoveryPassword"]').keyup(function(event) {
|
||||
var oldRecoveryPassword = $('input:password[id="oldRecoveryPassword"]').val();
|
||||
var newRecoveryPassword = $('input:password[id="newRecoveryPassword"]').val();
|
||||
if (newRecoveryPassword != '' && oldRecoveryPassword != '' ) {
|
||||
$('button:button[name="submitChangeRecoveryKey"]').removeAttr("disabled");
|
||||
} else {
|
||||
$('button:button[name="submitChangeRecoveryKey"]').attr("disabled", "true");
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$('button:button[name="submitChangeRecoveryKey"]').click(function() {
|
||||
var oldRecoveryPassword = $('input:password[id="oldRecoveryPassword"]').val();
|
||||
var newRecoveryPassword = $('input:password[id="newRecoveryPassword"]').val();
|
||||
OC.msg.startSaving('#encryption .msg');
|
||||
$.post(
|
||||
OC.filePath( 'files_encryption', 'ajax', 'changeRecoveryPassword.php' )
|
||||
, { oldPassword: oldRecoveryPassword, newPassword: newRecoveryPassword }
|
||||
, function( data ) {
|
||||
if (data.status == "error") {
|
||||
OC.msg.finishedSaving('#encryption .msg', data);
|
||||
} else {
|
||||
OC.msg.finishedSaving('#encryption .msg', data);
|
||||
}
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
});
|
||||
98
apps/files_encryption/js/settings-personal.js
Normal file
98
apps/files_encryption/js/settings-personal.js
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
/**
|
||||
* Copyright (c) 2013, Sam Tuke <samtuke@owncloud.com>
|
||||
* This file is licensed under the Affero General Public License version 3 or later.
|
||||
* See the COPYING-README file.
|
||||
*/
|
||||
|
||||
function updatePrivateKeyPasswd() {
|
||||
var oldPrivateKeyPassword = $('input:password[id="oldPrivateKeyPassword"]').val();
|
||||
var newPrivateKeyPassword = $('input:password[id="newPrivateKeyPassword"]').val();
|
||||
OC.msg.startSaving('#encryption .msg');
|
||||
$.post(
|
||||
OC.filePath( 'files_encryption', 'ajax', 'updatePrivateKeyPassword.php' )
|
||||
, { oldPassword: oldPrivateKeyPassword, newPassword: newPrivateKeyPassword }
|
||||
, function( data ) {
|
||||
if (data.status === "error") {
|
||||
OC.msg.finishedSaving('#encryption .msg', data);
|
||||
} else {
|
||||
OC.msg.finishedSaving('#encryption .msg', data);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
$(document).ready(function(){
|
||||
|
||||
// Trigger ajax on recoveryAdmin status change
|
||||
$( 'input:radio[name="userEnableRecovery"]' ).change(
|
||||
function() {
|
||||
|
||||
// Hide feedback messages in case they're already visible
|
||||
$('#recoveryEnabledSuccess').hide();
|
||||
$('#recoveryEnabledError').hide();
|
||||
|
||||
var recoveryStatus = $( this ).val();
|
||||
|
||||
$.post(
|
||||
OC.filePath( 'files_encryption', 'ajax', 'userrecovery.php' )
|
||||
, { userEnableRecovery: recoveryStatus }
|
||||
, function( data ) {
|
||||
if ( data.status == "success" ) {
|
||||
$('#recoveryEnabledSuccess').show();
|
||||
} else {
|
||||
$('#recoveryEnabledError').show();
|
||||
}
|
||||
}
|
||||
);
|
||||
// Ensure page is not reloaded on form submit
|
||||
return false;
|
||||
}
|
||||
);
|
||||
|
||||
$("#encryptAll").click(
|
||||
function(){
|
||||
|
||||
// Hide feedback messages in case they're already visible
|
||||
$('#encryptAllSuccess').hide();
|
||||
$('#encryptAllError').hide();
|
||||
|
||||
var userPassword = $( '#userPassword' ).val();
|
||||
var encryptAll = $( '#encryptAll' ).val();
|
||||
|
||||
$.post(
|
||||
OC.filePath( 'files_encryption', 'ajax', 'encryptall.php' )
|
||||
, { encryptAll: encryptAll, userPassword: userPassword }
|
||||
, function( data ) {
|
||||
if ( data.status == "success" ) {
|
||||
$('#encryptAllSuccess').show();
|
||||
} else {
|
||||
$('#encryptAllError').show();
|
||||
}
|
||||
}
|
||||
);
|
||||
// Ensure page is not reloaded on form submit
|
||||
return false;
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
// update private key password
|
||||
|
||||
$('input:password[name="changePrivateKeyPassword"]').keyup(function(event) {
|
||||
var oldPrivateKeyPassword = $('input:password[id="oldPrivateKeyPassword"]').val();
|
||||
var newPrivateKeyPassword = $('input:password[id="newPrivateKeyPassword"]').val();
|
||||
if (newPrivateKeyPassword !== '' && oldPrivateKeyPassword !== '' ) {
|
||||
$('button:button[name="submitChangePrivateKeyPassword"]').removeAttr("disabled");
|
||||
if(event.which === 13) {
|
||||
updatePrivateKeyPasswd();
|
||||
}
|
||||
} else {
|
||||
$('button:button[name="submitChangePrivateKeyPassword"]').attr("disabled", "true");
|
||||
}
|
||||
});
|
||||
|
||||
$('button:button[name="submitChangePrivateKeyPassword"]').click(function() {
|
||||
updatePrivateKeyPasswd();
|
||||
});
|
||||
|
||||
});
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) 2011, Robin Appelman <icewind1991@gmail.com>
|
||||
* This file is licensed under the Affero General Public License version 3 or later.
|
||||
* See the COPYING-README file.
|
||||
*/
|
||||
|
||||
|
||||
$(document).ready(function(){
|
||||
$('#encryption_blacklist').multiSelect({
|
||||
oncheck:blackListChange,
|
||||
onuncheck:blackListChange,
|
||||
createText:'...'
|
||||
});
|
||||
|
||||
function blackListChange(){
|
||||
var blackList=$('#encryption_blacklist').val().join(',');
|
||||
OC.AppConfig.setValue('files_encryption','type_blacklist',blackList);
|
||||
}
|
||||
})
|
||||
|
|
@ -1,7 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Encryption" => "التشفير",
|
||||
"File encryption is enabled." => "تشفير الملفات فعال.",
|
||||
"The following file types will not be encrypted:" => "الملفات الاتية لن يتم تشفيرها:",
|
||||
"Exclude the following file types from encryption:" => "إستثناء أنواع الملفات الاتية من التشفير: ",
|
||||
"None" => "لا شيء"
|
||||
"Saving..." => "جاري الحفظ...",
|
||||
"Encryption" => "التشفير"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Encryption" => "Криптиране",
|
||||
"None" => "Няма"
|
||||
"Saving..." => "Записване...",
|
||||
"Encryption" => "Криптиране"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Encryption" => "সংকেতায়ন",
|
||||
"None" => "কোনটিই নয়"
|
||||
"Saving..." => "সংরক্ষণ করা হচ্ছে..",
|
||||
"Encryption" => "সংকেতায়ন"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,34 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Recovery key successfully enabled" => "La clau de recuperació s'ha activat",
|
||||
"Could not enable recovery key. Please check your recovery key password!" => "No s'ha pogut activar la clau de recuperació. Comproveu contrasenya de la clau de recuperació!",
|
||||
"Recovery key successfully disabled" => "La clau de recuperació s'ha descativat",
|
||||
"Could not disable recovery key. Please check your recovery key password!" => "No s'ha pogut desactivar la calu de recuperació. Comproveu la contrasenya de la clau de recuperació!",
|
||||
"Password successfully changed." => "La contrasenya s'ha canviat.",
|
||||
"Could not change the password. Maybe the old password was not correct." => "No s'ha pogut canviar la contrasenya. Potser la contrasenya anterior no era correcta.",
|
||||
"Private key password successfully updated." => "La contrasenya de la clau privada s'ha actualitzat.",
|
||||
"Could not update the private key password. Maybe the old password was not correct." => "No s'ha pogut actualitzar la contrasenya de la clau privada. Potser la contrasenya anterior no era correcta.",
|
||||
"Your private key is not valid! Maybe your password was changed from outside. You can update your private key password in your personal settings to regain access to your files" => "La clau privada no és vàlida! Potser la contrasenya ha canviat des de fora. Podeu actualitzar la contrasenya de la clau privada a l'arranjament personal per obtenir de nou accés als vostres fitxers",
|
||||
"Saving..." => "Desant...",
|
||||
"Your private key is not valid! Maybe the your password was changed from outside." => "La vostra clau privada no és vàlida! Potser la vostra contrasenya ha canviat des de fora.",
|
||||
"You can unlock your private key in your " => "Podeu desbloquejar la clau privada en el vostre",
|
||||
"personal settings" => "arranjament personal",
|
||||
"Encryption" => "Xifrat",
|
||||
"File encryption is enabled." => "El xifrat de fitxers està activat.",
|
||||
"The following file types will not be encrypted:" => "Els tipus de fitxers següents no es xifraran:",
|
||||
"Exclude the following file types from encryption:" => "Exclou els tipus de fitxers següents del xifratge:",
|
||||
"None" => "Cap"
|
||||
"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Activa la clau de recuperació de contrasenya (permet compartir la clau de recuperació):",
|
||||
"Recovery account password" => "Contrasenya de recuperació del compte",
|
||||
"Enabled" => "Activat",
|
||||
"Disabled" => "Desactivat",
|
||||
"Change encryption passwords recovery key:" => "Canvia la clau de recuperació de la contrasenya:",
|
||||
"Old Recovery account password" => "Contrasenya de recuperació anterior",
|
||||
"New Recovery account password" => "Nova contrasenya de recuperació de compte",
|
||||
"Change Password" => "Canvia la contrasenya",
|
||||
"Your private key password no longer match your log-in password:" => "La clau privada ja no es correspon amb la contrasenya d'accés:",
|
||||
"Set your old private key password to your current log-in password." => "Establiu la vostra contrasenya clau en funció de la contrasenya actual d'accés.",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." => "Si no recordeu la contrasenya anterior podeu demanar a l'administrador que recuperi els vostres fitxers.",
|
||||
"Old log-in password" => "Contrasenya anterior d'accés",
|
||||
"Current log-in password" => "Contrasenya d'accés actual",
|
||||
"Update Private Key Password" => "Actualitza la contrasenya de clau privada",
|
||||
"Enable password recovery:" => "Habilita la recuperació de contrasenya:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "Activar aquesta opció us permetrà obtenir de nou accés als vostres fitxers encriptats en cas de perdre la contrasenya",
|
||||
"File recovery settings updated" => "S'han actualitzat els arranjaments de recuperació de fitxers",
|
||||
"Could not update file recovery" => "No s'ha pogut actualitzar la recuperació de fitxers"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,25 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Recovery key successfully enabled" => "Záchranný klíč byl úspěšně povolen",
|
||||
"Could not enable recovery key. Please check your recovery key password!" => "Nepodařilo se povolit záchranný klíč. Zkontrolujte prosím vaše heslo záchranného klíče!",
|
||||
"Recovery key successfully disabled" => "Záchranný klíč byl úspěšně zakázán",
|
||||
"Could not disable recovery key. Please check your recovery key password!" => "Nelze zakázat záchranný klíč. Zkontrolujte prosím heslo vašeho záchranného klíče.",
|
||||
"Password successfully changed." => "Heslo bylo úspěšně změněno.",
|
||||
"Could not change the password. Maybe the old password was not correct." => "Nelze změnit heslo. Pravděpodobně nebylo stávající heslo zadáno správně.",
|
||||
"Private key password successfully updated." => "Heslo soukromého klíče úspěšně aktualizováno.",
|
||||
"Could not update the private key password. Maybe the old password was not correct." => "Nelze aktualizovat heslo soukromého klíče. Možná nebylo staré heslo správně.",
|
||||
"Your private key is not valid! Maybe your password was changed from outside. You can update your private key password in your personal settings to regain access to your files" => "Váš soukromý klíč není platný. Možná bylo vaše heslo změněno z venku. Můžete aktualizovat heslo soukromého klíče v osobním nastavení pro opětovné získání přístupu k souborům",
|
||||
"Saving..." => "Ukládám...",
|
||||
"Encryption" => "Šifrování",
|
||||
"File encryption is enabled." => "Šifrování je povoleno.",
|
||||
"The following file types will not be encrypted:" => "Následující typy souborů nebudou šifrovány:",
|
||||
"Exclude the following file types from encryption:" => "Vyjmout následující typy souborů ze šifrování:",
|
||||
"None" => "Žádné"
|
||||
"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Povolit záchranný klíč šifrovacích hesel (povolí sdílený záchranný klíč):",
|
||||
"Recovery account password" => "Heslo pro obnovu účtu",
|
||||
"Enabled" => "Povoleno",
|
||||
"Disabled" => "Zakázáno",
|
||||
"Change encryption passwords recovery key:" => "Změnit záchranný klíč šifrovacích hesel:",
|
||||
"Old Recovery account password" => "Stávající heslo pro obnovu účtu",
|
||||
"New Recovery account password" => "Nové heslo pro obnovu účtu",
|
||||
"Change Password" => "Změnit heslo",
|
||||
"Enable password recovery:" => "Povolit obnovu hesla:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "Povolení vám umožní znovu získat přístup k vašim zašifrovaným souborům pokud ztratíte heslo",
|
||||
"File recovery settings updated" => "Možnosti obnovy souborů aktualizovány",
|
||||
"Could not update file recovery" => "Nelze aktualizovat obnovu souborů"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Encryption" => "Amgryptiad",
|
||||
"File encryption is enabled." => "Galluogwyd amgryptio ffeiliau.",
|
||||
"The following file types will not be encrypted:" => "Ni fydd ffeiliau o'r math yma'n cael eu hamgryptio:",
|
||||
"Exclude the following file types from encryption:" => "Eithrio'r mathau canlynol o ffeiliau rhag cael eu hamgryptio:",
|
||||
"None" => "Dim"
|
||||
"Saving..." => "Yn cadw...",
|
||||
"Encryption" => "Amgryptiad"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Encryption" => "Kryptering",
|
||||
"File encryption is enabled." => "Fil kryptering aktiveret.",
|
||||
"The following file types will not be encrypted:" => "De følgende filtyper vil ikke blive krypteret:",
|
||||
"Exclude the following file types from encryption:" => "Ekskluder de følgende fil typer fra kryptering:",
|
||||
"None" => "Ingen"
|
||||
"Saving..." => "Gemmer...",
|
||||
"Encryption" => "Kryptering"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,20 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Recovery key successfully enabled" => "Wiederherstellungsschlüssel wurde erfolgreich aktiviert",
|
||||
"Could not enable recovery key. Please check your recovery key password!" => "Der Wiederherstellungsschlüssel konnte nicht aktiviert werden. Überprüfen Sie Ihr Wiederherstellungspasswort!",
|
||||
"Recovery key successfully disabled" => "Wiederherstellungsschlüssel deaktiviert.",
|
||||
"Could not disable recovery key. Please check your recovery key password!" => "Der Wiederherstellungsschlüssel konnte nicht deaktiviert werden. Überprüfen Sie Ihr Wiederherstellungspasswort!",
|
||||
"Password successfully changed." => "Dein Passwort wurde geändert.",
|
||||
"Could not change the password. Maybe the old password was not correct." => "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort falsch.",
|
||||
"Private key password successfully updated." => "Passwort des privaten Schlüssels erfolgreich aktualisiert",
|
||||
"Saving..." => "Speichern...",
|
||||
"personal settings" => "Private Einstellungen",
|
||||
"Encryption" => "Verschlüsselung",
|
||||
"File encryption is enabled." => "Dateiverschlüsselung ist aktiviert",
|
||||
"The following file types will not be encrypted:" => "Die folgenden Dateitypen werden nicht verschlüsselt:",
|
||||
"Exclude the following file types from encryption:" => "Schließe die folgenden Dateitypen von der Verschlüsselung aus:",
|
||||
"None" => "Nichts"
|
||||
"Recovery account password" => "Password zurücksetzen",
|
||||
"Enabled" => "Aktiviert",
|
||||
"Disabled" => "Deaktiviert",
|
||||
"Change encryption passwords recovery key:" => "Wiederherstellungsschlüssel für Passwörter ändern:",
|
||||
"Change Password" => "Passwort ändern",
|
||||
"Old log-in password" => "Altes login Passwort",
|
||||
"Current log-in password" => "Aktuelles Passwort",
|
||||
"File recovery settings updated" => "Einstellungen zur Wiederherstellung von Dateien wurden aktualisiert"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,18 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Recovery key successfully enabled" => "Der Wiederherstellungsschlüssel wurde erfolgreich aktiviert.",
|
||||
"Could not enable recovery key. Please check your recovery key password!" => "Der Wiederherstellungsschlüssel konnte nicht aktiviert werden. Bitte überprüfen Sie das Passwort für den Wiederherstellungsschlüssel!",
|
||||
"Recovery key successfully disabled" => "Der Wiederherstellungsschlüssel wurde erfolgreich deaktiviert.",
|
||||
"Could not disable recovery key. Please check your recovery key password!" => "Der Wiederherstellungsschlüssel konnte nicht deaktiviert werden. Bitte überprüfen Sie das Passwort für den Wiederherstellungsschlüssel!",
|
||||
"Password successfully changed." => "Das Passwort wurde erfolgreich geändert.",
|
||||
"Could not change the password. Maybe the old password was not correct." => "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort nicht richtig.",
|
||||
"Saving..." => "Speichern...",
|
||||
"Encryption" => "Verschlüsselung",
|
||||
"File encryption is enabled." => "Datei-Verschlüsselung ist aktiviert",
|
||||
"The following file types will not be encrypted:" => "Die folgenden Dateitypen werden nicht verschlüsselt:",
|
||||
"Exclude the following file types from encryption:" => "Die folgenden Dateitypen von der Verschlüsselung ausnehmen:",
|
||||
"None" => "Nichts"
|
||||
"Recovery account password" => "Account-Passwort wiederherstellen",
|
||||
"Enabled" => "Aktiviert",
|
||||
"Disabled" => "Deaktiviert",
|
||||
"Old Recovery account password" => "Altes Passwort für die Account-Wiederherstellung",
|
||||
"New Recovery account password" => "Neues Passwort für die Account-Wiederherstellung",
|
||||
"Change Password" => "Passwort ändern",
|
||||
"File recovery settings updated" => "Die Einstellungen für die Dateiwiederherstellung wurden aktualisiert.",
|
||||
"Could not update file recovery" => "Die Dateiwiederherstellung konnte nicht aktualisiert werden."
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,11 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Password successfully changed." => "Ο κωδικός αλλάχτηκε επιτυχώς.",
|
||||
"Could not change the password. Maybe the old password was not correct." => "Αποτυχία αλλαγής κωδικού ίσως ο παλιός κωδικός να μην ήταν σωστός.",
|
||||
"Saving..." => "Γίνεται αποθήκευση...",
|
||||
"Encryption" => "Κρυπτογράφηση",
|
||||
"File encryption is enabled." => "Η κρυπτογράφηση αρχείων είναι ενεργή.",
|
||||
"The following file types will not be encrypted:" => "Οι παρακάτω τύποι αρχείων δεν θα κρυπτογραφηθούν:",
|
||||
"Exclude the following file types from encryption:" => "Εξαίρεση των παρακάτω τύπων αρχείων από την κρυπτογράφηση:",
|
||||
"None" => "Τίποτα"
|
||||
"Recovery account password" => "Επαναφορά κωδικού πρόσβασης λογαριασμού",
|
||||
"Enabled" => "Ενεργοποιημένο",
|
||||
"Disabled" => "Απενεργοποιημένο",
|
||||
"Change Password" => "Αλλαγή Κωδικού Πρόσβασης",
|
||||
"File recovery settings updated" => "Οι ρυθμίσεις επαναφοράς αρχείων ανανεώθηκαν"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Encryption" => "Ĉifrado",
|
||||
"None" => "Nenio"
|
||||
"Saving..." => "Konservante...",
|
||||
"Encryption" => "Ĉifrado"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,21 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Recovery key successfully enabled" => "Se ha habilitado la recuperación de archivos",
|
||||
"Could not enable recovery key. Please check your recovery key password!" => "No se pudo habilitar la clave de recuperación. Por favor compruebe su contraseña.",
|
||||
"Recovery key successfully disabled" => "Clave de recuperación deshabilitada",
|
||||
"Could not disable recovery key. Please check your recovery key password!" => "No se pudo deshabilitar la clave de recuperación. Por favor compruebe su contraseña!",
|
||||
"Password successfully changed." => "Su contraseña ha sido cambiada",
|
||||
"Could not change the password. Maybe the old password was not correct." => "No se pudo cambiar la contraseña. Compruebe que la contraseña actual sea correcta.",
|
||||
"Private key password successfully updated." => "Contraseña de clave privada actualizada con éxito.",
|
||||
"Saving..." => "Guardando...",
|
||||
"Encryption" => "Cifrado",
|
||||
"File encryption is enabled." => "La encriptacion de archivo esta activada.",
|
||||
"The following file types will not be encrypted:" => "Los siguientes tipos de archivo no seran encriptados:",
|
||||
"Exclude the following file types from encryption:" => "Excluir los siguientes tipos de archivo de la encriptacion:",
|
||||
"None" => "Ninguno"
|
||||
"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Habilitar clave de recuperación de contraseñas ():",
|
||||
"Recovery account password" => "Recuperar contraseña",
|
||||
"Enabled" => "Habilitar",
|
||||
"Disabled" => "Deshabilitado",
|
||||
"Change encryption passwords recovery key:" => "Cambiar clave de cifrado de contraseñas:",
|
||||
"Old Recovery account password" => "Contraseña de recuperación actual",
|
||||
"New Recovery account password" => "Contraseña de recuperación nueva",
|
||||
"Change Password" => "Cambiar contraseña",
|
||||
"File recovery settings updated" => "Opciones de recuperación de archivos actualizada",
|
||||
"Could not update file recovery" => "No se pudo actualizar la recuperación de archivos"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Password successfully changed." => "Tu contraseña fue cambiada",
|
||||
"Could not change the password. Maybe the old password was not correct." => "No se pudo cambiar la contraseña. Comprobá que la contraseña actual sea correcta.",
|
||||
"Saving..." => "Guardando...",
|
||||
"Encryption" => "Encriptación",
|
||||
"File encryption is enabled." => "La encriptación de archivos no está habilitada",
|
||||
"The following file types will not be encrypted:" => "Los siguientes tipos de archivos no serán encriptados",
|
||||
"Exclude the following file types from encryption:" => "Excluir los siguientes tipos de archivos de encriptación:",
|
||||
"None" => "Ninguno"
|
||||
"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Habilitar clave de recuperación de contraseñas (permite compartir clave de contraseñas):",
|
||||
"Recovery account password" => "Recuperar contraseña"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,20 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Recovery key successfully enabled" => "Taastevõtme lubamine õnnestus",
|
||||
"Could not enable recovery key. Please check your recovery key password!" => "Ei suutnud lubada taastevõtit. Palun kontrolli oma taastevõtme parooli!",
|
||||
"Recovery key successfully disabled" => "Taastevõtme keelamine õnnestus",
|
||||
"Could not disable recovery key. Please check your recovery key password!" => "Ei suuda keelata taastevõtit. Palun kontrolli oma taastevõtme parooli!",
|
||||
"Password successfully changed." => "Parool edukalt vahetatud.",
|
||||
"Could not change the password. Maybe the old password was not correct." => "Ei suutnud vahetada parooli. Võib-olla on vana parool valesti sisestatud.",
|
||||
"Saving..." => "Salvestamine...",
|
||||
"Encryption" => "Krüpteerimine",
|
||||
"File encryption is enabled." => "Faili krüpteerimine on sisse lülitatud.",
|
||||
"The following file types will not be encrypted:" => "Järgnevaid failitüüpe ei krüpteerita:",
|
||||
"Exclude the following file types from encryption:" => "Järgnevaid failitüüpe ei krüpteerita:",
|
||||
"None" => "Pole"
|
||||
"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Luba krüpteerimise paroolide taastevõti (võimalda parooli jagamine taastevõtmesse):",
|
||||
"Recovery account password" => "Konto taasteparool",
|
||||
"Enabled" => "Sisse lülitatud",
|
||||
"Disabled" => "Väljalülitatud",
|
||||
"Change encryption passwords recovery key:" => "Muuda taaste võtme krüpteerimise paroole:",
|
||||
"Old Recovery account password" => "Konto vana taaste parool",
|
||||
"New Recovery account password" => "Konto uus taasteparool",
|
||||
"Change Password" => "Muuda parooli",
|
||||
"File recovery settings updated" => "Faili taaste seaded uuendatud",
|
||||
"Could not update file recovery" => "Ei suuda uuendada taastefaili"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Encryption" => "Enkriptazioa",
|
||||
"File encryption is enabled." => "Fitxategien enkriptazioa gaituta dago.",
|
||||
"The following file types will not be encrypted:" => "Hurrengo fitxategi motak ez dira enkriptatuko:",
|
||||
"Exclude the following file types from encryption:" => "Baztertu hurrengo fitxategi motak enkriptatzetik:",
|
||||
"None" => "Ezer"
|
||||
"Saving..." => "Gordetzen...",
|
||||
"Encryption" => "Enkriptazioa"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Encryption" => "رمزگذاری",
|
||||
"File encryption is enabled." => "رمزنگاری فایلها فعال شد.",
|
||||
"The following file types will not be encrypted:" => "فایلهای زیر رمزنگاری نخواهند شد:",
|
||||
"Exclude the following file types from encryption:" => "فایلهای زیر از رمزنگاری نادیده گرفته می شوند:",
|
||||
"None" => "هیچکدام"
|
||||
"Saving..." => "در حال ذخیره سازی...",
|
||||
"Encryption" => "رمزگذاری"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Password successfully changed." => "Salasana vaihdettiin onnistuneesti.",
|
||||
"Could not change the password. Maybe the old password was not correct." => "Salasanan vaihto epäonnistui. Kenties vanha salasana oli väärin.",
|
||||
"Saving..." => "Tallennetaan...",
|
||||
"Encryption" => "Salaus",
|
||||
"File encryption is enabled." => "Tiedostojen salaus on käytössä.",
|
||||
"The following file types will not be encrypted:" => "Seuraavia tiedostotyyppejä ei salata:",
|
||||
"Exclude the following file types from encryption:" => "Älä salaa seuravia tiedostotyyppejä:",
|
||||
"None" => "Ei mitään"
|
||||
"Enabled" => "Käytössä",
|
||||
"Disabled" => "Ei käytössä",
|
||||
"Change Password" => "Vaihda salasana"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,28 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Recovery key successfully enabled" => "Clé de récupération activée avec succès",
|
||||
"Could not enable recovery key. Please check your recovery key password!" => "Ne peut pas activer la clé de récupération. s'il vous plait vérifiez votre mot de passe de clé de récupération!",
|
||||
"Recovery key successfully disabled" => "Clé de récupération désactivée avc succès",
|
||||
"Could not disable recovery key. Please check your recovery key password!" => "Ne peut pas désactiver la clé de récupération. S'il vous plait vérifiez votre mot de passe de clé de récupération!",
|
||||
"Password successfully changed." => "Mot de passe changé avec succès ",
|
||||
"Could not change the password. Maybe the old password was not correct." => "Ne peut pas changer le mot de passe. L'ancien mot de passe est peut-être incorrect.",
|
||||
"Private key password successfully updated." => "Mot de passe de la clé privé mis à jour avec succès.",
|
||||
"Could not update the private key password. Maybe the old password was not correct." => "Impossible de mettre à jour le mot de passe de la clé privé. Peut-être que l'ancien mot de passe n'était pas correcte.",
|
||||
"Saving..." => "Enregistrement...",
|
||||
"You can unlock your private key in your " => "Vous pouvez déverrouiller votre clé privée dans votre",
|
||||
"personal settings" => "paramètres personnel",
|
||||
"Encryption" => "Chiffrement",
|
||||
"File encryption is enabled." => "Le chiffrement des fichiers est activé",
|
||||
"The following file types will not be encrypted:" => "Les fichiers de types suivants ne seront pas chiffrés :",
|
||||
"Exclude the following file types from encryption:" => "Ne pas chiffrer les fichiers dont les types sont les suivants :",
|
||||
"None" => "Aucun"
|
||||
"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Activer la clé de récupération par mots de passe de cryptage (autoriser le partage de la clé de récupération) ",
|
||||
"Recovery account password" => "Rétablissement du compte mot de passe ",
|
||||
"Enabled" => "Activer",
|
||||
"Disabled" => "Désactiver",
|
||||
"Change encryption passwords recovery key:" => "Changer les mots de passe de cryptage par la clé de récupération",
|
||||
"Old Recovery account password" => "Ancien compte de récupération de mots de passe",
|
||||
"New Recovery account password" => "Nouveau compte de récupération de mots de passe",
|
||||
"Change Password" => "Changer de mot de passe",
|
||||
"Old log-in password" => "Ancien mot de passe de connexion",
|
||||
"Current log-in password" => "Actuel mot de passe de connexion",
|
||||
"Update Private Key Password" => "Mettre à jour le mot de passe de votre clé privée",
|
||||
"Enable password recovery:" => "Activer la récupération du mot de passe:",
|
||||
"File recovery settings updated" => "Mise à jour des paramètres de récupération de fichiers ",
|
||||
"Could not update file recovery" => "Ne peut pas remettre à jour les fichiers de récupération"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,34 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Recovery key successfully enabled" => "Activada satisfactoriamente a chave de recuperación",
|
||||
"Could not enable recovery key. Please check your recovery key password!" => "Non foi posíbel activar a chave de recuperación. Comprobe o contrasinal da chave de recuperación!",
|
||||
"Recovery key successfully disabled" => "Desactivada satisfactoriamente a chave de recuperación",
|
||||
"Could not disable recovery key. Please check your recovery key password!" => "Non foi posíbel desactivar a chave de recuperación. Comprobe o contrasinal da chave de recuperación!",
|
||||
"Password successfully changed." => "O contrasinal foi cambiado satisfactoriamente",
|
||||
"Could not change the password. Maybe the old password was not correct." => "Non foi posíbel cambiar o contrasinal. Probabelmente o contrasinal antigo non é o correcto.",
|
||||
"Private key password successfully updated." => "A chave privada foi actualizada correctamente.",
|
||||
"Could not update the private key password. Maybe the old password was not correct." => "Non foi posíbel actualizar o contrasinal da chave privada. É probábel que o contrasinal antigo non sexa correcto.",
|
||||
"Your private key is not valid! Maybe your password was changed from outside. You can update your private key password in your personal settings to regain access to your files" => "A chave privada non é correcta! É probábel que o seu contrasinal teña sido cambiado desde o exterior. Vostede pode actualizar o contrasinal da súa chave privada nos seus axustes persoais para recuperar o acceso aos seus ficheiros",
|
||||
"Saving..." => "Gardando...",
|
||||
"Your private key is not valid! Maybe the your password was changed from outside." => "A chave privada non é correcta! É probábel que o seu contrasinal teña sido cambiado desde o exterior. ",
|
||||
"You can unlock your private key in your " => "Pode desbloquear a chave privada nos seus",
|
||||
"personal settings" => "axustes persoais",
|
||||
"Encryption" => "Cifrado",
|
||||
"File encryption is enabled." => "O cifrado de ficheiros está activado",
|
||||
"The following file types will not be encrypted:" => "Os seguintes tipos de ficheiros non van seren cifrados:",
|
||||
"Exclude the following file types from encryption:" => "Excluír os seguintes tipos de ficheiros do cifrado:",
|
||||
"None" => "Ningún"
|
||||
"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Activar a chave de recuperación do cifrado de contrasinais (permite compartir a chave de recuperación):",
|
||||
"Recovery account password" => "Recuperación do contrasinal da conta",
|
||||
"Enabled" => "Activado",
|
||||
"Disabled" => "Desactivado",
|
||||
"Change encryption passwords recovery key:" => "Cambiar a chave de la recuperación do cifrado de contrasinais:",
|
||||
"Old Recovery account password" => "Antigo contrasinal de recuperación da conta",
|
||||
"New Recovery account password" => "Novo contrasinal de recuperación da conta",
|
||||
"Change Password" => "Cambiar o contrasinal",
|
||||
"Your private key password no longer match your log-in password:" => "O seu contrasinal da chave privada non coincide co seu contrasinal de acceso.",
|
||||
"Set your old private key password to your current log-in password." => "Estabeleza o seu contrasinal antigo da chave de recuperación ao seu contrasinal de acceso actual",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." => " Se non lembra o seu antigo contrasinal pode pedírllelo ao seu administrador para recuperar os seus ficheiros.",
|
||||
"Old log-in password" => "Contrasinal de acceso antigo",
|
||||
"Current log-in password" => "Contrasinal de acceso actual",
|
||||
"Update Private Key Password" => "Actualizar o contrasinal da chave privada",
|
||||
"Enable password recovery:" => "Activar o contrasinal de recuperación:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "Ao activar esta opción permitiráselle volver a obter acceso aos ficheiros cifrados no caso de perda do contrasinal",
|
||||
"File recovery settings updated" => "Actualizouse o ficheiro de axustes de recuperación",
|
||||
"Could not update file recovery" => "Non foi posíbel actualizar o ficheiro de recuperación"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Encryption" => "הצפנה",
|
||||
"None" => "כלום"
|
||||
"Saving..." => "שמירה…",
|
||||
"Encryption" => "הצפנה"
|
||||
);
|
||||
|
|
|
|||
3
apps/files_encryption/l10n/hr.php
Normal file
3
apps/files_encryption/l10n/hr.php
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Saving..." => "Spremanje..."
|
||||
);
|
||||
|
|
@ -1,7 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Encryption" => "Titkosítás",
|
||||
"File encryption is enabled." => "Az állományok titkosítása be van kapcsolva.",
|
||||
"The following file types will not be encrypted:" => "A következő fájltípusok nem kerülnek titkosításra:",
|
||||
"Exclude the following file types from encryption:" => "Zárjuk ki a titkosításból a következő fájltípusokat:",
|
||||
"None" => "Egyik sem"
|
||||
"Saving..." => "Mentés...",
|
||||
"Encryption" => "Titkosítás"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Encryption" => "Enkripsi",
|
||||
"File encryption is enabled." => "Enkripsi berkas aktif.",
|
||||
"The following file types will not be encrypted:" => "Tipe berkas berikut tidak akan dienkripsi:",
|
||||
"Exclude the following file types from encryption:" => "Kecualikan tipe berkas berikut dari enkripsi:",
|
||||
"None" => "Tidak ada"
|
||||
"Saving..." => "Menyimpan...",
|
||||
"Encryption" => "Enkripsi"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Encryption" => "Dulkóðun",
|
||||
"None" => "Ekkert"
|
||||
"Saving..." => "Er að vista ...",
|
||||
"Encryption" => "Dulkóðun"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,34 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Recovery key successfully enabled" => "Chiave di ripristino abilitata correttamente",
|
||||
"Could not enable recovery key. Please check your recovery key password!" => "Impossibile abilitare la chiave di ripristino. Verifica la password della chiave di ripristino.",
|
||||
"Recovery key successfully disabled" => "Chiave di ripristinata disabilitata correttamente",
|
||||
"Could not disable recovery key. Please check your recovery key password!" => "Impossibile disabilitare la chiave di ripristino. Verifica la password della chiave di ripristino.",
|
||||
"Password successfully changed." => "Password modificata correttamente.",
|
||||
"Could not change the password. Maybe the old password was not correct." => "Impossibile cambiare la password. Forse la vecchia password non era corretta.",
|
||||
"Private key password successfully updated." => "Password della chiave privata aggiornata correttamente.",
|
||||
"Could not update the private key password. Maybe the old password was not correct." => "Impossibile aggiornare la password della chiave privata. Forse la vecchia password non era corretta.",
|
||||
"Your private key is not valid! Maybe your password was changed from outside. You can update your private key password in your personal settings to regain access to your files" => "La chiave privata non è valida! Forse la password è stata cambiata dall'esterno. Puoi aggiornare la password della chiave privata nelle impostazioni personali per riottenere l'accesso ai file.",
|
||||
"Saving..." => "Salvataggio in corso...",
|
||||
"Your private key is not valid! Maybe the your password was changed from outside." => "La tua chiave privata non è valida! Forse è stata modifica dall'esterno.",
|
||||
"You can unlock your private key in your " => "Puoi sbloccare la chiave privata nel tuo",
|
||||
"personal settings" => "Impostazioni personali",
|
||||
"Encryption" => "Cifratura",
|
||||
"File encryption is enabled." => "La cifratura dei file è abilitata.",
|
||||
"The following file types will not be encrypted:" => "I seguenti tipi di file non saranno cifrati:",
|
||||
"Exclude the following file types from encryption:" => "Escludi i seguenti tipi di file dalla cifratura:",
|
||||
"None" => "Nessuno"
|
||||
"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Abilita la chiave di ripristino delle password di cifratura (consente di condividere la chiave di ripristino):",
|
||||
"Recovery account password" => "Password di ripristino dell'account",
|
||||
"Enabled" => "Abilitata",
|
||||
"Disabled" => "Disabilitata",
|
||||
"Change encryption passwords recovery key:" => "Cambia la chiave di ripristino delle password di cifratura:",
|
||||
"Old Recovery account password" => "Vecchia password di ripristino dell'account",
|
||||
"New Recovery account password" => "Nuova password di ripristino dell'account",
|
||||
"Change Password" => "Modifica password",
|
||||
"Your private key password no longer match your log-in password:" => "La password della chiave privata non corrisponde più alla password di login:",
|
||||
"Set your old private key password to your current log-in password." => "Imposta la vecchia password della chiave privata sull'attuale password di login",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." => "Se non ricordi la vecchia password puoi chiedere al tuo amministratore di recuperare i file",
|
||||
"Old log-in password" => "Password di login vecchia",
|
||||
"Current log-in password" => "Password di login corrente",
|
||||
"Update Private Key Password" => "Aggiorna la Password della Chiave Privata",
|
||||
"Enable password recovery:" => "Abilita il recupero della password:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "Abilitando questa opzione potrai riaccedere ai file cifrati nel caso in cui la password venga perduta",
|
||||
"File recovery settings updated" => "Impostazioni di ripristino dei file aggiornate",
|
||||
"Could not update file recovery" => "Impossibile aggiornare il ripristino dei file"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,34 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Recovery key successfully enabled" => "リカバリ用のキーは正常に有効化されました",
|
||||
"Could not enable recovery key. Please check your recovery key password!" => "リカバリ用のキーを有効にできませんでした。リカバリ用のキーのパスワードを確認して下さい!",
|
||||
"Recovery key successfully disabled" => "リカバリ用のキーを正常に無効化しました",
|
||||
"Could not disable recovery key. Please check your recovery key password!" => "リカバリ用のキーを無効化できませんでした。リカバリ用のキーのパスワードを確認して下さい!",
|
||||
"Password successfully changed." => "パスワードを変更できました。",
|
||||
"Could not change the password. Maybe the old password was not correct." => "パスワードを変更できませんでした。古いパスワードが間違っているかもしれません。",
|
||||
"Private key password successfully updated." => "秘密鍵のパスワードが正常に更新されました。",
|
||||
"Could not update the private key password. Maybe the old password was not correct." => "秘密鍵のパスワードを更新できませんでした。古いパスワードが正確でない場合があります。",
|
||||
"Your private key is not valid! Maybe your password was changed from outside. You can update your private key password in your personal settings to regain access to your files" => "秘密鍵が有効ではありません。パスワードが外部から変更された恐れがあります。。個人設定で秘密鍵のパスワードを更新して、ファイルへのアクセス権を奪還できます。",
|
||||
"Saving..." => "保存中...",
|
||||
"Your private key is not valid! Maybe the your password was changed from outside." => "秘密鍵が有効ではありません。パスワードが外部から変更された恐れがあります。",
|
||||
"You can unlock your private key in your " => "個人設定で",
|
||||
"personal settings" => "秘密鍵をアンロックできます",
|
||||
"Encryption" => "暗号化",
|
||||
"File encryption is enabled." => "ファイルの暗号化は有効です。",
|
||||
"The following file types will not be encrypted:" => "次のファイルタイプは暗号化されません:",
|
||||
"Exclude the following file types from encryption:" => "次のファイルタイプを暗号化から除外:",
|
||||
"None" => "なし"
|
||||
"Enable encryption passwords recovery key (allow sharing to recovery key):" => "暗号化パスワードの復旧キーを有効にする(復旧キーを共有することを許可):",
|
||||
"Recovery account password" => "復旧アカウントのパスワード",
|
||||
"Enabled" => "有効",
|
||||
"Disabled" => "無効",
|
||||
"Change encryption passwords recovery key:" => "復旧キーの暗号化パスワードを変更:",
|
||||
"Old Recovery account password" => "古い復旧アカウントのパスワード",
|
||||
"New Recovery account password" => "新しい復旧アカウントのパスワード",
|
||||
"Change Password" => "パスワードを変更",
|
||||
"Your private key password no longer match your log-in password:" => "もはや秘密鍵はログインパスワードと一致しません:",
|
||||
"Set your old private key password to your current log-in password." => "古い秘密鍵のパスワードを現在のログインパスワードに設定する。",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." => "古いパスワードを覚えていない場合、管理者に尋ねてファイルを回復することができます。",
|
||||
"Old log-in password" => "古いログインパスワード",
|
||||
"Current log-in password" => "現在のログインパスワード",
|
||||
"Update Private Key Password" => "秘密鍵のパスワードを更新",
|
||||
"Enable password recovery:" => "パスワード復旧を有効化:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "このオプションを有効にすると、パスワードを紛失した場合も、暗号化されたファイルに再度アクセスすることができるようになります。",
|
||||
"File recovery settings updated" => "ファイル復旧設定が更新されました",
|
||||
"Could not update file recovery" => "ファイル復旧を更新できませんでした"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Encryption" => "ენკრიპცია",
|
||||
"File encryption is enabled." => "ფაილის ენკრიპცია ჩართულია.",
|
||||
"The following file types will not be encrypted:" => "შემდეგი ფაილური ტიპების ენკრიპცია არ მოხდება:",
|
||||
"Exclude the following file types from encryption:" => "ამოიღე შემდეგი ფაილის ტიპები ენკრიპციიდან:",
|
||||
"None" => "არა"
|
||||
"Saving..." => "შენახვა...",
|
||||
"Encryption" => "ენკრიპცია"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Encryption" => "암호화",
|
||||
"None" => "없음"
|
||||
"Saving..." => "저장 중...",
|
||||
"Encryption" => "암호화"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Encryption" => "نهێنیکردن",
|
||||
"None" => "هیچ"
|
||||
"Saving..." => "پاشکهوتدهکات...",
|
||||
"Encryption" => "نهێنیکردن"
|
||||
);
|
||||
|
|
|
|||
3
apps/files_encryption/l10n/lb.php
Normal file
3
apps/files_encryption/l10n/lb.php
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Saving..." => "Speicheren..."
|
||||
);
|
||||
|
|
@ -1,4 +1,20 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Recovery key successfully enabled" => "Atkūrimo raktas sėkmingai įjungtas",
|
||||
"Could not enable recovery key. Please check your recovery key password!" => "Neišėjo įjungti jūsų atkūrimo rakto. Prašome jį patikrinti!",
|
||||
"Recovery key successfully disabled" => "Atkūrimo raktas sėkmingai išjungtas",
|
||||
"Could not disable recovery key. Please check your recovery key password!" => "Neišėjo išjungti jūsų atkūrimo rakto. Prašome jį patikrinti!",
|
||||
"Password successfully changed." => "Slaptažodis sėkmingai pakeistas",
|
||||
"Could not change the password. Maybe the old password was not correct." => "Slaptažodis nebuvo pakeistas. Gali būti, kad buvo neteisingai suvestas senasis.",
|
||||
"Saving..." => "Saugoma...",
|
||||
"Encryption" => "Šifravimas",
|
||||
"None" => "Nieko"
|
||||
"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Įjungti šifravimo slaptažodžio atstatymo raktą (leidžia dalintis su atstatymo raktu):",
|
||||
"Recovery account password" => "Atstatymo vartotojo slaptažodis",
|
||||
"Enabled" => "Įjungta",
|
||||
"Disabled" => "Išjungta",
|
||||
"Change encryption passwords recovery key:" => "Pakeisti šifravimo slaptažodžio atstatymo raktą:",
|
||||
"Old Recovery account password" => "Seno atstatymo vartotojo slaptažodis",
|
||||
"New Recovery account password" => "naujo atstatymo vartotojo slaptažodis",
|
||||
"Change Password" => "Pakeisti slaptažodį",
|
||||
"File recovery settings updated" => "Failų atstatymo nustatymai pakeisti",
|
||||
"Could not update file recovery" => "Neišėjo atnaujinti failų atkūrimo"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Encryption" => "Šifrēšana",
|
||||
"File encryption is enabled." => "Datņu šifrēšana ir aktivēta.",
|
||||
"The following file types will not be encrypted:" => "Sekojošās datnes netiks šifrētas:",
|
||||
"Exclude the following file types from encryption:" => "Sekojošos datņu tipus izslēgt no šifrēšanas:",
|
||||
"None" => "Nav"
|
||||
"Saving..." => "Saglabā...",
|
||||
"Encryption" => "Šifrēšana"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Encryption" => "Енкрипција",
|
||||
"None" => "Ништо"
|
||||
"Saving..." => "Снимам...",
|
||||
"Encryption" => "Енкрипција"
|
||||
);
|
||||
|
|
|
|||
3
apps/files_encryption/l10n/ms_MY.php
Normal file
3
apps/files_encryption/l10n/ms_MY.php
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Saving..." => "Simpan..."
|
||||
);
|
||||
|
|
@ -1,7 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Encryption" => "Kryptering",
|
||||
"File encryption is enabled." => "Fil-kryptering er aktivert.",
|
||||
"The following file types will not be encrypted:" => "Følgende filtyper vil ikke bli kryptert:",
|
||||
"Exclude the following file types from encryption:" => "Ekskluder følgende filtyper fra kryptering:",
|
||||
"None" => "Ingen"
|
||||
"Saving..." => "Lagrer...",
|
||||
"Encryption" => "Kryptering"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,29 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Recovery key successfully enabled" => "Herstelsleutel succesvol geactiveerd",
|
||||
"Could not enable recovery key. Please check your recovery key password!" => "Kon herstelsleutel niet activeren. Controleer het wachtwoord van uw herstelsleutel!",
|
||||
"Recovery key successfully disabled" => "Herstelsleutel succesvol gedeactiveerd",
|
||||
"Could not disable recovery key. Please check your recovery key password!" => "Kon herstelsleutel niet deactiveren. Controleer het wachtwoord van uw herstelsleutel!",
|
||||
"Password successfully changed." => "Wachtwoord succesvol gewijzigd.",
|
||||
"Could not change the password. Maybe the old password was not correct." => "Kon wachtwoord niet wijzigen. Wellicht oude wachtwoord niet juist ingevoerd.",
|
||||
"Saving..." => "Opslaan",
|
||||
"Your private key is not valid! Maybe the your password was changed from outside." => "Uw privésleutel is niet geldig. Misschien was uw wachtwoord van buitenaf gewijzigd.",
|
||||
"You can unlock your private key in your " => "U kunt uw privésleutel deblokkeren in uw",
|
||||
"personal settings" => "persoonlijke instellingen",
|
||||
"Encryption" => "Versleuteling",
|
||||
"File encryption is enabled." => "Bestandsversleuteling geactiveerd.",
|
||||
"The following file types will not be encrypted:" => "De volgende bestandstypen zullen niet worden versleuteld:",
|
||||
"Exclude the following file types from encryption:" => "Sluit de volgende bestandstypen uit van versleuteling:",
|
||||
"None" => "Geen"
|
||||
"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Activeer versleuteling van wachtwoorden herstelsleutel (maak delen met herstel sleutel mogelijk):",
|
||||
"Recovery account password" => "Herstel account wachtwoord",
|
||||
"Enabled" => "Geactiveerd",
|
||||
"Disabled" => "Gedeactiveerd",
|
||||
"Change encryption passwords recovery key:" => "Wijzig versleuteling wachtwoord herstelsleutel",
|
||||
"Old Recovery account password" => "Oude herstel account wachtwoord",
|
||||
"New Recovery account password" => "Nieuwe herstel account wachtwoord",
|
||||
"Change Password" => "Wijzigen wachtwoord",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." => "Als u uw oude wachtwoord niet meer weet, kunt u uw beheerder vragen uw bestanden terug te halen.",
|
||||
"Old log-in password" => "Oude wachtwoord",
|
||||
"Current log-in password" => "Huidige wachtwoord",
|
||||
"Update Private Key Password" => "Bijwerken wachtwoord Privésleutel",
|
||||
"Enable password recovery:" => "Activeren wachtwoord herstel:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "Het activeren van deze optie maakt het mogelijk om uw versleutelde bestanden te benaderen als uw wachtwoord kwijt is",
|
||||
"File recovery settings updated" => "Bestandsherstel instellingen bijgewerkt",
|
||||
"Could not update file recovery" => "Kon bestandsherstel niet bijwerken"
|
||||
);
|
||||
|
|
|
|||
3
apps/files_encryption/l10n/nn_NO.php
Normal file
3
apps/files_encryption/l10n/nn_NO.php
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Saving..." => "Lagrar …"
|
||||
);
|
||||
3
apps/files_encryption/l10n/oc.php
Normal file
3
apps/files_encryption/l10n/oc.php
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Saving..." => "Enregistra..."
|
||||
);
|
||||
|
|
@ -1,7 +1,34 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Recovery key successfully enabled" => "Klucz odzyskiwania włączony",
|
||||
"Could not enable recovery key. Please check your recovery key password!" => "Nie można włączyć klucza odzyskiwania. Proszę sprawdzić swoje hasło odzyskiwania!",
|
||||
"Recovery key successfully disabled" => "Klucz odzyskiwania wyłączony",
|
||||
"Could not disable recovery key. Please check your recovery key password!" => "Nie można wyłączyć klucza odzyskiwania. Proszę sprawdzić swoje hasło odzyskiwania!",
|
||||
"Password successfully changed." => "Zmiana hasła udana.",
|
||||
"Could not change the password. Maybe the old password was not correct." => "Nie można zmienić hasła. Może stare hasło nie było poprawne.",
|
||||
"Private key password successfully updated." => "Pomyślnie zaktualizowano hasło klucza prywatnego.",
|
||||
"Could not update the private key password. Maybe the old password was not correct." => "Nie można zmienić prywatnego hasła. Może stare hasło nie było poprawne.",
|
||||
"Your private key is not valid! Maybe your password was changed from outside. You can update your private key password in your personal settings to regain access to your files" => "Klucz prywatny nie jest poprawny! Może Twoje hasło zostało zmienione z zewnątrz. Można zaktualizować hasło klucza prywatnego w ustawieniach osobistych w celu odzyskania dostępu do plików",
|
||||
"Saving..." => "Zapisywanie...",
|
||||
"Your private key is not valid! Maybe the your password was changed from outside." => "Klucz prywatny nie jest poprawny! Może Twoje hasło zostało zmienione z zewnątrz.",
|
||||
"You can unlock your private key in your " => "Możesz odblokować swój klucz prywatny w swojej",
|
||||
"personal settings" => "Ustawienia osobiste",
|
||||
"Encryption" => "Szyfrowanie",
|
||||
"File encryption is enabled." => "Szyfrowanie plików jest włączone",
|
||||
"The following file types will not be encrypted:" => "Poniższe typy plików nie będą szyfrowane:",
|
||||
"Exclude the following file types from encryption:" => "Wyłącz poniższe typy plików z szyfrowania:",
|
||||
"None" => "Nic"
|
||||
"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Włącz szyfrowanie odzyskiwanych haseł klucza (zezwalaj na odzyskiwanie klucza):",
|
||||
"Recovery account password" => "Odzyskiwanie hasła konta",
|
||||
"Enabled" => "Włączone",
|
||||
"Disabled" => "Wyłączone",
|
||||
"Change encryption passwords recovery key:" => "Zmiana klucza szyfrowania haseł odzyskiwania:",
|
||||
"Old Recovery account password" => "Stare hasło odzyskiwania",
|
||||
"New Recovery account password" => "Nowe hasło odzyskiwania",
|
||||
"Change Password" => "Zmień hasło",
|
||||
"Your private key password no longer match your log-in password:" => "Hasło klucza prywatnego nie pasuje do hasła logowania:",
|
||||
"Set your old private key password to your current log-in password." => "Podaj swoje stare prywatne hasło aby ustawić nowe",
|
||||
" If you don't remember your old password you can ask your administrator to recover your files." => "Jeśli nie pamiętasz swojego starego hasła, poproś swojego administratora, aby odzyskać pliki.",
|
||||
"Old log-in password" => "Stare hasło logowania",
|
||||
"Current log-in password" => "Bieżące hasło logowania",
|
||||
"Update Private Key Password" => "Aktualizacja hasła klucza prywatnego",
|
||||
"Enable password recovery:" => "Włącz hasło odzyskiwania:",
|
||||
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "Włączenie tej opcji umożliwia otrzymać dostęp do zaszyfrowanych plików w przypadku utraty hasła",
|
||||
"File recovery settings updated" => "Ustawienia odzyskiwania plików zmienione",
|
||||
"Could not update file recovery" => "Nie można zmienić pliku odzyskiwania"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,20 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Recovery key successfully enabled" => "Recuperação de chave habilitada com sucesso",
|
||||
"Could not enable recovery key. Please check your recovery key password!" => "Impossível habilitar recuperação de chave. Por favor verifique sua senha para recuperação de chave!",
|
||||
"Recovery key successfully disabled" => "Recuperação de chave desabilitada com sucesso",
|
||||
"Could not disable recovery key. Please check your recovery key password!" => "Impossível desabilitar recuperação de chave. Por favor verifique sua senha para recuperação de chave!",
|
||||
"Password successfully changed." => "Senha alterada com sucesso.",
|
||||
"Could not change the password. Maybe the old password was not correct." => "Não foi possível alterar a senha. Talvez a senha antiga não estava correta.",
|
||||
"Saving..." => "Salvando...",
|
||||
"Encryption" => "Criptografia",
|
||||
"File encryption is enabled." => "A criptografia de arquivos está ativada.",
|
||||
"The following file types will not be encrypted:" => "Os seguintes tipos de arquivo não serão criptografados:",
|
||||
"Exclude the following file types from encryption:" => "Excluir os seguintes tipos de arquivo da criptografia:",
|
||||
"None" => "Nada"
|
||||
"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Ativar a criptografia de chave de recuperação de senhas (permitir compartilhar a chave de recuperação):",
|
||||
"Recovery account password" => "Recuperar a senha da conta",
|
||||
"Enabled" => "Habilidado",
|
||||
"Disabled" => "Desabilitado",
|
||||
"Change encryption passwords recovery key:" => "Mudar a criptografia de chave de recuperação de senhas:",
|
||||
"Old Recovery account password" => "Recuperação de senha de conta antiga",
|
||||
"New Recovery account password" => "Senha Nova da conta de Recuperação",
|
||||
"Change Password" => "Trocar Senha",
|
||||
"File recovery settings updated" => "Configurações de recuperação de arquivo atualizado",
|
||||
"Could not update file recovery" => "Não foi possível atualizar a recuperação de arquivos"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,20 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Recovery key successfully enabled" => "Chave de recuperação activada com sucesso",
|
||||
"Could not enable recovery key. Please check your recovery key password!" => "Não foi possível activar a chave de recuperação. Por favor verifique a password da chave de recuperação!",
|
||||
"Recovery key successfully disabled" => "Chave de recuperação descativada com sucesso",
|
||||
"Could not disable recovery key. Please check your recovery key password!" => "Não foi possível desactivar a chave de recuperação. Por favor verifique a password da chave de recuperação.",
|
||||
"Password successfully changed." => "Password alterada com sucesso.",
|
||||
"Could not change the password. Maybe the old password was not correct." => "Não foi possivel alterar a password. Possivelmente a password antiga não está correcta.",
|
||||
"Saving..." => "A guardar...",
|
||||
"Encryption" => "Encriptação",
|
||||
"File encryption is enabled." => "A encriptação de ficheiros está ligada",
|
||||
"The following file types will not be encrypted:" => "Os seguintes ficheiros não serão encriptados:",
|
||||
"Exclude the following file types from encryption:" => "Excluir da encriptação os seguintes tipos de ficheiro:",
|
||||
"None" => "Nenhum"
|
||||
"Enable encryption passwords recovery key (allow sharing to recovery key):" => "Activar a chave de recuperação das passwords de encriptação (permitir partilha da chave de recuperação):",
|
||||
"Recovery account password" => "Password de recuperação de conta",
|
||||
"Enabled" => "Activado",
|
||||
"Disabled" => "Desactivado",
|
||||
"Change encryption passwords recovery key:" => "Alterar a chave de recuperação da password de encriptação:",
|
||||
"Old Recovery account password" => "Password de recuperação de conta antiga:",
|
||||
"New Recovery account password" => "Nova password de recuperação de conta",
|
||||
"Change Password" => "Mudar a Password",
|
||||
"File recovery settings updated" => "Actualizadas as definições de recuperação de ficheiros",
|
||||
"Could not update file recovery" => "Não foi possível actualizar a recuperação de ficheiros"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<?php $TRANSLATIONS = array(
|
||||
"Encryption" => "Încriptare",
|
||||
"None" => "Niciuna"
|
||||
"Saving..." => "Se salvează...",
|
||||
"Encryption" => "Încriptare"
|
||||
);
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue