From f59aedff4fd4aeee869abb3b57f7e531b62e164d Mon Sep 17 00:00:00 2001 From: kondou Date: Sun, 7 Apr 2013 19:49:07 +0200 Subject: Optimize pictures with optipng. --- .../images/ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 260 -> 157 bytes .../images/ui-bg_diagonals-thick_20_666666_40x40.png | Bin 251 -> 157 bytes core/css/images/ui-bg_flat_100_ffffff_40x100.png | Bin 178 -> 86 bytes core/css/images/ui-bg_flat_10_000000_40x100.png | Bin 178 -> 86 bytes core/css/images/ui-bg_flat_35_1d2d44_40x100.png | Bin 183 -> 86 bytes core/css/images/ui-icons_1d2d44_256x240.png | Bin 4369 -> 4196 bytes core/css/images/ui-icons_222222_256x240.png | Bin 4369 -> 4196 bytes core/css/images/ui-icons_ffd27a_256x240.png | Bin 4369 -> 4196 bytes core/css/images/ui-icons_ffffff_256x240.png | Bin 4369 -> 4196 bytes core/img/actions/caret-dark.png | Bin 256 -> 229 bytes core/img/actions/caret.png | Bin 283 -> 269 bytes core/img/actions/clock.png | Bin 466 -> 367 bytes core/img/actions/close.png | Bin 275 -> 254 bytes core/img/actions/delete-hover.png | Bin 344 -> 254 bytes core/img/actions/history.png | Bin 363 -> 321 bytes core/img/actions/lock.png | Bin 346 -> 182 bytes core/img/actions/logout.png | Bin 613 -> 424 bytes core/img/actions/password.png | Bin 197 -> 195 bytes core/img/actions/search.png | Bin 554 -> 420 bytes core/img/actions/settings.png | Bin 683 -> 524 bytes core/img/actions/toggle.png | Bin 515 -> 391 bytes core/img/actions/triangle-n.png | Bin 223 -> 211 bytes core/img/actions/triangle-s.png | Bin 232 -> 211 bytes core/img/actions/view-close.png | Bin 434 -> 368 bytes core/img/actions/view-next.png | Bin 341 -> 305 bytes core/img/actions/view-pause.png | Bin 206 -> 181 bytes core/img/actions/view-play.png | Bin 274 -> 227 bytes core/img/actions/view-previous.png | Bin 356 -> 304 bytes core/img/appstore.png | Bin 7418 -> 7217 bytes core/img/desktopapp.png | Bin 4593 -> 2359 bytes core/img/favicon.png | Bin 912 -> 875 bytes core/img/filetypes/application-x-debian-package.png | Bin 548 -> 539 bytes core/img/googleplay.png | Bin 7758 -> 7402 bytes core/img/logo-wide.png | Bin 2282 -> 2227 bytes core/img/logo.png | Bin 5860 -> 5182 bytes core/img/noise.png | Bin 3127 -> 3125 bytes core/img/places/calendar-dark.png | Bin 512 -> 429 bytes core/img/places/files.png | Bin 328 -> 280 bytes core/img/places/home.png | Bin 355 -> 342 bytes core/img/places/picture.png | Bin 271 -> 242 bytes core/img/rating/s1.png | Bin 454 -> 393 bytes core/img/rating/s10.png | Bin 848 -> 651 bytes core/img/rating/s11.png | Bin 724 -> 561 bytes core/img/rating/s2.png | Bin 731 -> 535 bytes core/img/rating/s3.png | Bin 918 -> 688 bytes core/img/rating/s4.png | Bin 989 -> 714 bytes core/img/rating/s5.png | Bin 939 -> 696 bytes core/img/rating/s6.png | Bin 992 -> 715 bytes core/img/rating/s7.png | Bin 939 -> 697 bytes core/img/rating/s8.png | Bin 987 -> 715 bytes core/img/rating/s9.png | Bin 908 -> 678 bytes core/img/remoteStorage-big.png | Bin 8997 -> 8372 bytes settings/img/admin.png | Bin 228 -> 198 bytes settings/img/apps.png | Bin 219 -> 196 bytes settings/img/help.png | Bin 477 -> 457 bytes settings/img/users.png | Bin 598 -> 391 bytes 56 files changed, 0 insertions(+), 0 deletions(-) diff --git a/core/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/core/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png index 954e22dbd99..eed4abd1922 100644 Binary files a/core/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png and b/core/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png differ diff --git a/core/css/images/ui-bg_diagonals-thick_20_666666_40x40.png b/core/css/images/ui-bg_diagonals-thick_20_666666_40x40.png index 64ece5707d9..a618b065866 100644 Binary files a/core/css/images/ui-bg_diagonals-thick_20_666666_40x40.png and b/core/css/images/ui-bg_diagonals-thick_20_666666_40x40.png differ diff --git a/core/css/images/ui-bg_flat_100_ffffff_40x100.png b/core/css/images/ui-bg_flat_100_ffffff_40x100.png index ac8b229af95..6ebfa5026e2 100644 Binary files a/core/css/images/ui-bg_flat_100_ffffff_40x100.png and b/core/css/images/ui-bg_flat_100_ffffff_40x100.png differ diff --git a/core/css/images/ui-bg_flat_10_000000_40x100.png b/core/css/images/ui-bg_flat_10_000000_40x100.png index abdc01082bf..b10f59cd342 100644 Binary files a/core/css/images/ui-bg_flat_10_000000_40x100.png and b/core/css/images/ui-bg_flat_10_000000_40x100.png differ diff --git a/core/css/images/ui-bg_flat_35_1d2d44_40x100.png b/core/css/images/ui-bg_flat_35_1d2d44_40x100.png index 904ef14c37d..2be93e582d8 100644 Binary files a/core/css/images/ui-bg_flat_35_1d2d44_40x100.png and b/core/css/images/ui-bg_flat_35_1d2d44_40x100.png differ diff --git a/core/css/images/ui-icons_1d2d44_256x240.png b/core/css/images/ui-icons_1d2d44_256x240.png index 2a857e4da57..1b1474b1fdf 100644 Binary files a/core/css/images/ui-icons_1d2d44_256x240.png and b/core/css/images/ui-icons_1d2d44_256x240.png differ diff --git a/core/css/images/ui-icons_222222_256x240.png b/core/css/images/ui-icons_222222_256x240.png index b273ff111d2..82ef90aabaf 100644 Binary files a/core/css/images/ui-icons_222222_256x240.png and b/core/css/images/ui-icons_222222_256x240.png differ diff --git a/core/css/images/ui-icons_ffd27a_256x240.png b/core/css/images/ui-icons_ffd27a_256x240.png index e117effa3dc..a7ac4ec6580 100644 Binary files a/core/css/images/ui-icons_ffd27a_256x240.png and b/core/css/images/ui-icons_ffd27a_256x240.png differ diff --git a/core/css/images/ui-icons_ffffff_256x240.png b/core/css/images/ui-icons_ffffff_256x240.png index 42f8f992c72..174be7c2847 100644 Binary files a/core/css/images/ui-icons_ffffff_256x240.png and b/core/css/images/ui-icons_ffffff_256x240.png differ diff --git a/core/img/actions/caret-dark.png b/core/img/actions/caret-dark.png index ce7e1e69802..8ac5fbbd198 100644 Binary files a/core/img/actions/caret-dark.png and b/core/img/actions/caret-dark.png differ diff --git a/core/img/actions/caret.png b/core/img/actions/caret.png index e0ae969a943..00baea9ece6 100644 Binary files a/core/img/actions/caret.png and b/core/img/actions/caret.png differ diff --git a/core/img/actions/clock.png b/core/img/actions/clock.png index 671b3f4f0c1..9c3a284b8ba 100644 Binary files a/core/img/actions/clock.png and b/core/img/actions/clock.png differ diff --git a/core/img/actions/close.png b/core/img/actions/close.png index bc0c782882d..0d8c89a56e2 100644 Binary files a/core/img/actions/close.png and b/core/img/actions/close.png differ diff --git a/core/img/actions/delete-hover.png b/core/img/actions/delete-hover.png index 08b15510d92..048d91cee51 100644 Binary files a/core/img/actions/delete-hover.png and b/core/img/actions/delete-hover.png differ diff --git a/core/img/actions/history.png b/core/img/actions/history.png index 1d138b8cd5a..3234880b25a 100644 Binary files a/core/img/actions/history.png and b/core/img/actions/history.png differ diff --git a/core/img/actions/lock.png b/core/img/actions/lock.png index 511bfa615bb..dbcffa3990f 100644 Binary files a/core/img/actions/lock.png and b/core/img/actions/lock.png differ diff --git a/core/img/actions/logout.png b/core/img/actions/logout.png index e2f4b7af12e..e9c89a15a7a 100644 Binary files a/core/img/actions/logout.png and b/core/img/actions/logout.png differ diff --git a/core/img/actions/password.png b/core/img/actions/password.png index 5167161dfa9..edcafdd9bbf 100644 Binary files a/core/img/actions/password.png and b/core/img/actions/password.png differ diff --git a/core/img/actions/search.png b/core/img/actions/search.png index 98e1d73ee34..312e4f419e5 100644 Binary files a/core/img/actions/search.png and b/core/img/actions/search.png differ diff --git a/core/img/actions/settings.png b/core/img/actions/settings.png index 8b3acb00a4f..9ada3087707 100644 Binary files a/core/img/actions/settings.png and b/core/img/actions/settings.png differ diff --git a/core/img/actions/toggle.png b/core/img/actions/toggle.png index 6ef3f2227b7..d06e5cb32b5 100644 Binary files a/core/img/actions/toggle.png and b/core/img/actions/toggle.png differ diff --git a/core/img/actions/triangle-n.png b/core/img/actions/triangle-n.png index 14825f70114..0ffcf6cbc44 100644 Binary files a/core/img/actions/triangle-n.png and b/core/img/actions/triangle-n.png differ diff --git a/core/img/actions/triangle-s.png b/core/img/actions/triangle-s.png index f36faef2b8a..0f533b142eb 100644 Binary files a/core/img/actions/triangle-s.png and b/core/img/actions/triangle-s.png differ diff --git a/core/img/actions/view-close.png b/core/img/actions/view-close.png index 80339d78229..330ae09ea73 100644 Binary files a/core/img/actions/view-close.png and b/core/img/actions/view-close.png differ diff --git a/core/img/actions/view-next.png b/core/img/actions/view-next.png index b76bea06713..f9e6174ae3f 100644 Binary files a/core/img/actions/view-next.png and b/core/img/actions/view-next.png differ diff --git a/core/img/actions/view-pause.png b/core/img/actions/view-pause.png index 64264ff9281..94696bf6868 100644 Binary files a/core/img/actions/view-pause.png and b/core/img/actions/view-pause.png differ diff --git a/core/img/actions/view-play.png b/core/img/actions/view-play.png index 0080d45b5cd..721787d9c44 100644 Binary files a/core/img/actions/view-play.png and b/core/img/actions/view-play.png differ diff --git a/core/img/actions/view-previous.png b/core/img/actions/view-previous.png index 82943c23a59..97b41a195ff 100644 Binary files a/core/img/actions/view-previous.png and b/core/img/actions/view-previous.png differ diff --git a/core/img/appstore.png b/core/img/appstore.png index 009b2b51b98..234aa0bb6be 100644 Binary files a/core/img/appstore.png and b/core/img/appstore.png differ diff --git a/core/img/desktopapp.png b/core/img/desktopapp.png index 182ddd2cf18..25dae6f197a 100644 Binary files a/core/img/desktopapp.png and b/core/img/desktopapp.png differ diff --git a/core/img/favicon.png b/core/img/favicon.png index 79b6795f6f6..02936243cb1 100644 Binary files a/core/img/favicon.png and b/core/img/favicon.png differ diff --git a/core/img/filetypes/application-x-debian-package.png b/core/img/filetypes/application-x-debian-package.png index b3f6b7e5cf9..1d6db5f933a 100644 Binary files a/core/img/filetypes/application-x-debian-package.png and b/core/img/filetypes/application-x-debian-package.png differ diff --git a/core/img/googleplay.png b/core/img/googleplay.png index 2d9ad629608..1470518272e 100644 Binary files a/core/img/googleplay.png and b/core/img/googleplay.png differ diff --git a/core/img/logo-wide.png b/core/img/logo-wide.png index b0c90984e44..5b7d4c6f915 100644 Binary files a/core/img/logo-wide.png and b/core/img/logo-wide.png differ diff --git a/core/img/logo.png b/core/img/logo.png index a84fe145bbd..8d112d99be5 100644 Binary files a/core/img/logo.png and b/core/img/logo.png differ diff --git a/core/img/noise.png b/core/img/noise.png index 271dd5ebcfb..6c06c8a4d6d 100644 Binary files a/core/img/noise.png and b/core/img/noise.png differ diff --git a/core/img/places/calendar-dark.png b/core/img/places/calendar-dark.png index e372104a284..920dee610dd 100644 Binary files a/core/img/places/calendar-dark.png and b/core/img/places/calendar-dark.png differ diff --git a/core/img/places/files.png b/core/img/places/files.png index 9c7ff2642f9..52e0c6bf949 100644 Binary files a/core/img/places/files.png and b/core/img/places/files.png differ diff --git a/core/img/places/home.png b/core/img/places/home.png index 2945b84e868..e664719e2ec 100644 Binary files a/core/img/places/home.png and b/core/img/places/home.png differ diff --git a/core/img/places/picture.png b/core/img/places/picture.png index a278240a6d6..7b3af8c7f84 100644 Binary files a/core/img/places/picture.png and b/core/img/places/picture.png differ diff --git a/core/img/rating/s1.png b/core/img/rating/s1.png index 445d965ffeb..015f9483714 100644 Binary files a/core/img/rating/s1.png and b/core/img/rating/s1.png differ diff --git a/core/img/rating/s10.png b/core/img/rating/s10.png index b8d66c2a4c4..b47b05e4f89 100644 Binary files a/core/img/rating/s10.png and b/core/img/rating/s10.png differ diff --git a/core/img/rating/s11.png b/core/img/rating/s11.png index aee9f921560..3dcb4bb4830 100644 Binary files a/core/img/rating/s11.png and b/core/img/rating/s11.png differ diff --git a/core/img/rating/s2.png b/core/img/rating/s2.png index 4f860e74ca1..94ac5bc9566 100644 Binary files a/core/img/rating/s2.png and b/core/img/rating/s2.png differ diff --git a/core/img/rating/s3.png b/core/img/rating/s3.png index 26c9baff55f..42a814ca081 100644 Binary files a/core/img/rating/s3.png and b/core/img/rating/s3.png differ diff --git a/core/img/rating/s4.png b/core/img/rating/s4.png index 47f1f694bf7..5ce38887570 100644 Binary files a/core/img/rating/s4.png and b/core/img/rating/s4.png differ diff --git a/core/img/rating/s5.png b/core/img/rating/s5.png index aa225b6a9a9..da4bbc58479 100644 Binary files a/core/img/rating/s5.png and b/core/img/rating/s5.png differ diff --git a/core/img/rating/s6.png b/core/img/rating/s6.png index fd4f42e22c6..267c52ad3c0 100644 Binary files a/core/img/rating/s6.png and b/core/img/rating/s6.png differ diff --git a/core/img/rating/s7.png b/core/img/rating/s7.png index 0d18a1dc025..3381d066d87 100644 Binary files a/core/img/rating/s7.png and b/core/img/rating/s7.png differ diff --git a/core/img/rating/s8.png b/core/img/rating/s8.png index 951c3fd3be4..091dc5b21f0 100644 Binary files a/core/img/rating/s8.png and b/core/img/rating/s8.png differ diff --git a/core/img/rating/s9.png b/core/img/rating/s9.png index b1a654c85d2..dfe83563433 100644 Binary files a/core/img/rating/s9.png and b/core/img/rating/s9.png differ diff --git a/core/img/remoteStorage-big.png b/core/img/remoteStorage-big.png index f2254233031..7e76e21209e 100644 Binary files a/core/img/remoteStorage-big.png and b/core/img/remoteStorage-big.png differ diff --git a/settings/img/admin.png b/settings/img/admin.png index d883f0b61a3..8023d8de850 100644 Binary files a/settings/img/admin.png and b/settings/img/admin.png differ diff --git a/settings/img/apps.png b/settings/img/apps.png index de5ccbd2c5f..2b18f678a02 100644 Binary files a/settings/img/apps.png and b/settings/img/apps.png differ diff --git a/settings/img/help.png b/settings/img/help.png index c0200096735..00d9761ee36 100644 Binary files a/settings/img/help.png and b/settings/img/help.png differ diff --git a/settings/img/users.png b/settings/img/users.png index a811af47c1c..e819b5f3205 100644 Binary files a/settings/img/users.png and b/settings/img/users.png differ -- cgit v1.2.3 From 448a3904860412c8277718673bc18773990c4c24 Mon Sep 17 00:00:00 2001 From: kondou Date: Fri, 12 Apr 2013 19:06:29 +0200 Subject: Optimize svgs with scour. --- core/img/actions/add.svg | 115 +- core/img/actions/caret-dark.svg | 103 +- core/img/actions/caret.svg | 119 +- core/img/actions/clock.svg | 41 +- core/img/actions/close.svg | 75 +- core/img/actions/delete-hover.svg | 75 +- core/img/actions/delete.svg | 72 +- core/img/actions/download.svg | 75 +- core/img/actions/history.svg | 242 +--- core/img/actions/info.svg | 1768 +---------------------------- core/img/actions/lock.svg | 13 +- core/img/actions/logout.svg | 179 +-- core/img/actions/mail.svg | 62 +- core/img/actions/password.svg | 2149 +----------------------------------- core/img/actions/pause-big.svg | 75 +- core/img/actions/pause.svg | 74 +- core/img/actions/play-add.svg | 86 +- core/img/actions/play-big.svg | 75 +- core/img/actions/play-next.svg | 82 +- core/img/actions/play-previous.svg | 82 +- core/img/actions/play.svg | 75 +- core/img/actions/public.svg | 292 +---- core/img/actions/rename.svg | 74 +- core/img/actions/search.svg | 1642 +-------------------------- core/img/actions/settings.svg | 283 +---- core/img/actions/share.svg | 72 +- core/img/actions/shared.svg | 1739 +---------------------------- core/img/actions/sound-off.svg | 75 +- core/img/actions/sound.svg | 81 +- core/img/actions/toggle.svg | 64 +- core/img/actions/triangle-n.svg | 88 +- core/img/actions/triangle-s.svg | 88 +- core/img/actions/upload-white.svg | 75 +- core/img/actions/upload.svg | 75 +- core/img/actions/user.svg | 1699 +--------------------------- core/img/actions/view-close.svg | 75 +- core/img/actions/view-next.svg | 75 +- core/img/actions/view-pause.svg | 74 +- core/img/actions/view-play.svg | 75 +- core/img/actions/view-previous.svg | 75 +- core/img/breadcrumb-start.svg | 73 +- core/img/breadcrumb.svg | 79 +- core/img/desktopapp.svg | 103 +- core/img/favicon-touch.svg | 789 +------------ core/img/favicon.svg | 798 +------------ core/img/logo-wide.svg | 797 +------------ core/img/logo.svg | 761 +------------ core/img/places/calendar-dark.svg | 78 +- core/img/places/contacts-dark.svg | 76 +- core/img/places/file.svg | 1851 +------------------------------ core/img/places/files.svg | 131 +-- core/img/places/folder.svg | 1842 +------------------------------ core/img/places/home.svg | 1826 +----------------------------- core/img/places/music.svg | 76 +- core/img/places/picture.svg | 78 +- settings/img/admin.svg | 2132 +---------------------------------- settings/img/apps.svg | 2117 +---------------------------------- settings/img/help.svg | 1748 +---------------------------- settings/img/log.svg | 94 +- settings/img/personal.svg | 1718 +--------------------------- settings/img/users.svg | 1727 +---------------------------- 61 files changed, 333 insertions(+), 30919 deletions(-) mode change 100755 => 100644 core/img/actions/clock.svg mode change 100755 => 100644 core/img/actions/lock.svg diff --git a/core/img/actions/add.svg b/core/img/actions/add.svg index 29994747c33..136d6c4b311 100644 --- a/core/img/actions/add.svg +++ b/core/img/actions/add.svg @@ -1,109 +1,10 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - + + + + + + + + diff --git a/core/img/actions/caret-dark.svg b/core/img/actions/caret-dark.svg index abb1dc192d2..be45ad402bf 100644 --- a/core/img/actions/caret-dark.svg +++ b/core/img/actions/caret-dark.svg @@ -1,102 +1,5 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - + + + diff --git a/core/img/actions/caret.svg b/core/img/actions/caret.svg index 7bb0c59cde2..d1ae8d60a6f 100644 --- a/core/img/actions/caret.svg +++ b/core/img/actions/caret.svg @@ -1,112 +1,11 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - + + + + + + + + + diff --git a/core/img/actions/clock.svg b/core/img/actions/clock.svg old mode 100755 new mode 100644 index 1821f474df5..f3fcb19031a --- a/core/img/actions/clock.svg +++ b/core/img/actions/clock.svg @@ -1,20 +1,21 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + diff --git a/core/img/actions/close.svg b/core/img/actions/close.svg index 6a6d98e34ad..ef564bfd482 100644 --- a/core/img/actions/close.svg +++ b/core/img/actions/close.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/delete-hover.svg b/core/img/actions/delete-hover.svg index 63cacd5e38e..3e8d26c9786 100644 --- a/core/img/actions/delete-hover.svg +++ b/core/img/actions/delete-hover.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/delete.svg b/core/img/actions/delete.svg index 86c8317d01d..ef564bfd482 100644 --- a/core/img/actions/delete.svg +++ b/core/img/actions/delete.svg @@ -1,70 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/download.svg b/core/img/actions/download.svg index 107a46f07bf..a469c3b8a00 100644 --- a/core/img/actions/download.svg +++ b/core/img/actions/download.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/history.svg b/core/img/actions/history.svg index 9c2838d565b..94512a2d431 100644 --- a/core/img/actions/history.svg +++ b/core/img/actions/history.svg @@ -1,240 +1,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/info.svg b/core/img/actions/info.svg index 1e07aed8527..55bdb17f2e1 100644 --- a/core/img/actions/info.svg +++ b/core/img/actions/info.svg @@ -1,1758 +1,14 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/core/img/actions/lock.svg b/core/img/actions/lock.svg old mode 100755 new mode 100644 index 8fb039b9e3b..beef1d3ad3a --- a/core/img/actions/lock.svg +++ b/core/img/actions/lock.svg @@ -1,8 +1,5 @@ - - - - - - + + + + + diff --git a/core/img/actions/logout.svg b/core/img/actions/logout.svg index e5edc24895d..59543875d75 100644 --- a/core/img/actions/logout.svg +++ b/core/img/actions/logout.svg @@ -1,178 +1,5 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - + + + diff --git a/core/img/actions/mail.svg b/core/img/actions/mail.svg index e82fa3b4677..2c63daac034 100644 --- a/core/img/actions/mail.svg +++ b/core/img/actions/mail.svg @@ -1,58 +1,8 @@ - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - + + + + + + diff --git a/core/img/actions/password.svg b/core/img/actions/password.svg index ee6a9fe0182..9ab5d4243d9 100644 --- a/core/img/actions/password.svg +++ b/core/img/actions/password.svg @@ -1,2148 +1,5 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + diff --git a/core/img/actions/pause-big.svg b/core/img/actions/pause-big.svg index b521057a35c..9c4944223ff 100644 --- a/core/img/actions/pause-big.svg +++ b/core/img/actions/pause-big.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/pause.svg b/core/img/actions/pause.svg index ff3c69d6c71..d572ad6f5c5 100644 --- a/core/img/actions/pause.svg +++ b/core/img/actions/pause.svg @@ -1,72 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/play-add.svg b/core/img/actions/play-add.svg index 25ff0b57eee..cdf4f6ea9f3 100644 --- a/core/img/actions/play-add.svg +++ b/core/img/actions/play-add.svg @@ -1,83 +1,9 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - - - + + + + + + diff --git a/core/img/actions/play-big.svg b/core/img/actions/play-big.svg index 2ef67415323..884171ced85 100644 --- a/core/img/actions/play-big.svg +++ b/core/img/actions/play-big.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/play-next.svg b/core/img/actions/play-next.svg index 9a41e4bd9d0..8b3d7d6effc 100644 --- a/core/img/actions/play-next.svg +++ b/core/img/actions/play-next.svg @@ -1,79 +1,7 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - - + + + + + diff --git a/core/img/actions/play-previous.svg b/core/img/actions/play-previous.svg index 31d45dedb4d..6210b088cb8 100644 --- a/core/img/actions/play-previous.svg +++ b/core/img/actions/play-previous.svg @@ -1,79 +1,7 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - - + + + + + diff --git a/core/img/actions/play.svg b/core/img/actions/play.svg index 7bb7b5c262a..ae23e6a0d26 100644 --- a/core/img/actions/play.svg +++ b/core/img/actions/play.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/public.svg b/core/img/actions/public.svg index b47305fbd08..c70a7627788 100644 --- a/core/img/actions/public.svg +++ b/core/img/actions/public.svg @@ -1,292 +1,4 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + diff --git a/core/img/actions/rename.svg b/core/img/actions/rename.svg index 44b464c850f..d6779709d96 100644 --- a/core/img/actions/rename.svg +++ b/core/img/actions/rename.svg @@ -1,72 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/search.svg b/core/img/actions/search.svg index c8d9d848c46..4f27369dbbc 100644 --- a/core/img/actions/search.svg +++ b/core/img/actions/search.svg @@ -1,1632 +1,14 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/core/img/actions/settings.svg b/core/img/actions/settings.svg index da685e8be0b..bd7ae3b3d7f 100644 --- a/core/img/actions/settings.svg +++ b/core/img/actions/settings.svg @@ -1,270 +1,17 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + diff --git a/core/img/actions/share.svg b/core/img/actions/share.svg index a5f2f8cb4d2..d67d35c6e56 100644 --- a/core/img/actions/share.svg +++ b/core/img/actions/share.svg @@ -1,70 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/shared.svg b/core/img/actions/shared.svg index 2302cc98919..3e63cc54687 100644 --- a/core/img/actions/shared.svg +++ b/core/img/actions/shared.svg @@ -1,1738 +1,5 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + diff --git a/core/img/actions/sound-off.svg b/core/img/actions/sound-off.svg index 053291311fa..701d7a1a64e 100644 --- a/core/img/actions/sound-off.svg +++ b/core/img/actions/sound-off.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/sound.svg b/core/img/actions/sound.svg index 6feea076a44..ecadf7dae90 100644 --- a/core/img/actions/sound.svg +++ b/core/img/actions/sound.svg @@ -1,78 +1,7 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - - + + + + + diff --git a/core/img/actions/toggle.svg b/core/img/actions/toggle.svg index 82a5171477e..1b774a19b11 100644 --- a/core/img/actions/toggle.svg +++ b/core/img/actions/toggle.svg @@ -1,61 +1,5 @@ - - -image/svg+xml - - - - - \ No newline at end of file + + + + diff --git a/core/img/actions/triangle-n.svg b/core/img/actions/triangle-n.svg index e8d70fa8ce3..4f866978f48 100644 --- a/core/img/actions/triangle-n.svg +++ b/core/img/actions/triangle-n.svg @@ -1,88 +1,4 @@ - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - + + diff --git a/core/img/actions/triangle-s.svg b/core/img/actions/triangle-s.svg index 396c61e01e2..b178b20a20b 100644 --- a/core/img/actions/triangle-s.svg +++ b/core/img/actions/triangle-s.svg @@ -1,88 +1,4 @@ - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - + + diff --git a/core/img/actions/upload-white.svg b/core/img/actions/upload-white.svg index 32ecd8b82b7..9c54cac5e1e 100644 --- a/core/img/actions/upload-white.svg +++ b/core/img/actions/upload-white.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/upload.svg b/core/img/actions/upload.svg index 718da8f4a59..eae4515c722 100644 --- a/core/img/actions/upload.svg +++ b/core/img/actions/upload.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/user.svg b/core/img/actions/user.svg index 6d0dc714ce4..aa719573708 100644 --- a/core/img/actions/user.svg +++ b/core/img/actions/user.svg @@ -1,1698 +1,5 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + diff --git a/core/img/actions/view-close.svg b/core/img/actions/view-close.svg index 45d66976084..1d5b1a9f49f 100644 --- a/core/img/actions/view-close.svg +++ b/core/img/actions/view-close.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/view-next.svg b/core/img/actions/view-next.svg index d5642f1a11c..07c95b73ff0 100644 --- a/core/img/actions/view-next.svg +++ b/core/img/actions/view-next.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/view-pause.svg b/core/img/actions/view-pause.svg index 0edc6f14e28..d901a4d789e 100644 --- a/core/img/actions/view-pause.svg +++ b/core/img/actions/view-pause.svg @@ -1,72 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/view-play.svg b/core/img/actions/view-play.svg index 0bdc63bf7e1..d9fa355371c 100644 --- a/core/img/actions/view-play.svg +++ b/core/img/actions/view-play.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/actions/view-previous.svg b/core/img/actions/view-previous.svg index df1f49511d0..68a31c04433 100644 --- a/core/img/actions/view-previous.svg +++ b/core/img/actions/view-previous.svg @@ -1,73 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/breadcrumb-start.svg b/core/img/breadcrumb-start.svg index 4197763dc6c..7f36231cdf8 100644 --- a/core/img/breadcrumb-start.svg +++ b/core/img/breadcrumb-start.svg @@ -1,71 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/breadcrumb.svg b/core/img/breadcrumb.svg index 9d522b42b73..05a216e50a9 100644 --- a/core/img/breadcrumb.svg +++ b/core/img/breadcrumb.svg @@ -1,77 +1,6 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - + + + + diff --git a/core/img/desktopapp.svg b/core/img/desktopapp.svg index 93d91e461a6..a983e6f9598 100644 --- a/core/img/desktopapp.svg +++ b/core/img/desktopapp.svg @@ -1,100 +1,5 @@ -image/svg+xml - - -Desktop app -Windows, OS X, Linux - \ No newline at end of file + +Desktop app +Windows, OS X, Linux + diff --git a/core/img/favicon-touch.svg b/core/img/favicon-touch.svg index 6d766d3ced3..68f36a8a9ac 100644 --- a/core/img/favicon-touch.svg +++ b/core/img/favicon-touch.svg @@ -1,787 +1,4 @@ - - -image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + diff --git a/core/img/favicon.svg b/core/img/favicon.svg index f055c32efb6..39cb1742689 100644 --- a/core/img/favicon.svg +++ b/core/img/favicon.svg @@ -1,796 +1,4 @@ - - -image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + diff --git a/core/img/logo-wide.svg b/core/img/logo-wide.svg index cf8eace5204..29c617d6f83 100644 --- a/core/img/logo-wide.svg +++ b/core/img/logo-wide.svg @@ -1,796 +1,3 @@ - - -image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + diff --git a/core/img/logo.svg b/core/img/logo.svg index bd928cccfa2..cfb20b60e4f 100644 --- a/core/img/logo.svg +++ b/core/img/logo.svg @@ -1,759 +1,4 @@ - - -image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + diff --git a/core/img/places/calendar-dark.svg b/core/img/places/calendar-dark.svg index 6f7cb8e74d7..986be039ab9 100644 --- a/core/img/places/calendar-dark.svg +++ b/core/img/places/calendar-dark.svg @@ -1,75 +1,7 @@ - - - - - - - - - image/svg+xml - - - - - - - - - + + + + + diff --git a/core/img/places/contacts-dark.svg b/core/img/places/contacts-dark.svg index df364911c51..3fc10cfe08f 100644 --- a/core/img/places/contacts-dark.svg +++ b/core/img/places/contacts-dark.svg @@ -1,73 +1,7 @@ - - - - - - - - - image/svg+xml - - - - - - - - - + + + + + diff --git a/core/img/places/file.svg b/core/img/places/file.svg index 478714b75d1..f93f3ef6fae 100644 --- a/core/img/places/file.svg +++ b/core/img/places/file.svg @@ -1,1841 +1,14 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/core/img/places/files.svg b/core/img/places/files.svg index 8ebf861f6d5..d446ef655ae 100644 --- a/core/img/places/files.svg +++ b/core/img/places/files.svg @@ -1,128 +1,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - + + + + + diff --git a/core/img/places/folder.svg b/core/img/places/folder.svg index c04b00fedce..676f10afe0b 100644 --- a/core/img/places/folder.svg +++ b/core/img/places/folder.svg @@ -1,1830 +1,18 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + diff --git a/core/img/places/home.svg b/core/img/places/home.svg index a836a5999f0..80b7dcc8663 100644 --- a/core/img/places/home.svg +++ b/core/img/places/home.svg @@ -1,1819 +1,11 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + diff --git a/core/img/places/music.svg b/core/img/places/music.svg index e8f91f46166..f7eb391d981 100644 --- a/core/img/places/music.svg +++ b/core/img/places/music.svg @@ -1,73 +1,7 @@ - - - - - - - - - image/svg+xml - - - - - - - - - + + + + + diff --git a/core/img/places/picture.svg b/core/img/places/picture.svg index aba68e62063..791cbb5909a 100644 --- a/core/img/places/picture.svg +++ b/core/img/places/picture.svg @@ -1,75 +1,7 @@ - - - - - - - - - image/svg+xml - - - - - - - - - + + + + + diff --git a/settings/img/admin.svg b/settings/img/admin.svg index 1ea226231b3..90d87272017 100644 --- a/settings/img/admin.svg +++ b/settings/img/admin.svg @@ -1,2128 +1,8 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + diff --git a/settings/img/apps.svg b/settings/img/apps.svg index d3415921209..e2cc48f2956 100644 --- a/settings/img/apps.svg +++ b/settings/img/apps.svg @@ -1,2113 +1,8 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + diff --git a/settings/img/help.svg b/settings/img/help.svg index 55b68e6baf2..f393ab5b1fd 100644 --- a/settings/img/help.svg +++ b/settings/img/help.svg @@ -1,1744 +1,8 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + diff --git a/settings/img/log.svg b/settings/img/log.svg index 72d4758aceb..a3939b73093 100644 --- a/settings/img/log.svg +++ b/settings/img/log.svg @@ -1,86 +1,10 @@ - - -image/svg+xml - - - - - - - - \ No newline at end of file + + + + + + + + + diff --git a/settings/img/personal.svg b/settings/img/personal.svg index 2f3a77d07a2..c0213f8589b 100644 --- a/settings/img/personal.svg +++ b/settings/img/personal.svg @@ -1,1714 +1,8 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + diff --git a/settings/img/users.svg b/settings/img/users.svg index 5ef31b763bb..9008e1d211f 100644 --- a/settings/img/users.svg +++ b/settings/img/users.svg @@ -1,1723 +1,8 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + -- cgit v1.2.3 From 1871f43a521c54ae9ceeeb2dc3169eb82e765c2e Mon Sep 17 00:00:00 2001 From: kondou Date: Sat, 13 Apr 2013 10:01:13 +0200 Subject: Add shellscript for optimization. --- core/img/image-optimization.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100755 core/img/image-optimization.sh diff --git a/core/img/image-optimization.sh b/core/img/image-optimization.sh new file mode 100755 index 00000000000..0a96bf558d1 --- /dev/null +++ b/core/img/image-optimization.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +function recursive_optimize_images() { +cd $1; +optipng -o6 *.png; +jpegoptim --strip-all *.jpg; +for svg in `ls *.svg`; +do + mv $svg $svg.opttmp; + scour -i $svg.opttmp -o $svg --create-groups --enable-id-stripping --enable-comment-stripping --shorten-ids --remove-metadata; +done; +rm *.opttmp +for dir in `ls -d */`; +do + recursive_optimize_images $dir; + cd ..; +done; +} + +recursive_optimize_images ../../ -- cgit v1.2.3 From 215264706dcdaf50f47cb208da6b7fae6307e512 Mon Sep 17 00:00:00 2001 From: Paul Brown Date: Mon, 29 Apr 2013 15:44:11 -0500 Subject: Improve IE Compatibility Added meta tags from HTML5 Boiler Plate to improve compatibility with IE7+. This fixes the issues with rendering. --- core/templates/layout.user.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index 4dc4a2c7593..734def5f20c 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -8,7 +8,8 @@ <?php p(!empty($_['application'])?$_['application'].' | ':'') ?>ownCloud <?php p(trim($_['user_displayname']) != '' ?' ('.$_['user_displayname'].') ':'') ?> - + + -- cgit v1.2.3 From 9bebf9b4c81e12cd7ce47852538f6f8f10654e5b Mon Sep 17 00:00:00 2001 From: Michael Gapczynski Date: Fri, 17 May 2013 14:14:12 -0400 Subject: Don't set Content-Length header if size is unknown --- lib/files.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/files.php b/lib/files.php index ab7fa1ed096..abb1617c25e 100644 --- a/lib/files.php +++ b/lib/files.php @@ -123,8 +123,11 @@ class OC_Files { header('Content-Length: ' . filesize($filename)); self::addSendfileHeader($filename); }else{ + $filesize = \OC\Files\Filesystem::filesize($filename); header('Content-Type: '.\OC\Files\Filesystem::getMimeType($filename)); - header("Content-Length: ".\OC\Files\Filesystem::filesize($filename)); + if ($filesize > -1) { + header("Content-Length: ".$filesize); + } list($storage) = \OC\Files\Filesystem::resolvePath($filename); if ($storage instanceof \OC\Files\Storage\Local) { self::addSendfileHeader(\OC\Files\Filesystem::getLocalFile($filename)); -- cgit v1.2.3 From 5ce4149e752564c58a6f0191d0426c333dfbc347 Mon Sep 17 00:00:00 2001 From: Björn Schießle Date: Fri, 24 May 2013 17:35:00 +0200 Subject: fix first time encryption after app was enabled --- apps/files_encryption/lib/util.php | 35 ++++++++++++----------------------- 1 file changed, 12 insertions(+), 23 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 2980aa94e0c..cac67d496e8 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -421,7 +421,7 @@ class Util // If the file uses old // encryption system - } elseif ( Crypt::isLegacyEncryptedContent( $this->tail( $filePath, 3 ), $relPath ) ) { + } elseif ( Crypt::isLegacyEncryptedContent( $data, $relPath ) ) { $found['legacy'][] = array( 'name' => $file, 'path' => $filePath ); @@ -672,39 +672,28 @@ class Util $relPath = $plainFile['path']; //relative to /data - $rawPath = $this->userId . '/files/' . $plainFile['path']; + $rawPath = '/'.$this->userId . '/files/' . $plainFile['path']; // Open plain file handle for binary reading - $plainHandle1 = $this->view->fopen( $rawPath, 'rb' ); + $plainHandle = $this->view->fopen( $rawPath, 'rb' ); - // 2nd handle for moving plain file - view->rename() doesn't work, this is a workaround - $plainHandle2 = $this->view->fopen( $rawPath . '.plaintmp', 'wb' ); + // Open enc file handle for binary writing, with same filename as original plain file + $encHandle = fopen( 'crypt://' . $relPath.'.tmp', 'wb' ); // Move plain file to a temporary location - stream_copy_to_stream( $plainHandle1, $plainHandle2 ); - - // Close access to original file - // $this->view->fclose( $plainHandle1 ); // not implemented in view{} - // Delete original plain file so we can rename enc file later - $this->view->unlink( $rawPath ); + $size = stream_copy_to_stream( $plainHandle, $encHandle ); - // Open enc file handle for binary writing, with same filename as original plain file - $encHandle = fopen( 'crypt://' . $relPath, 'wb' ); + fclose($encHandle); - // Save data from plain stream to new encrypted file via enc stream - // NOTE: Stream{} will be invoked for handling - // the encryption, and should handle all keys - // and their generation etc. automatically - stream_copy_to_stream( $plainHandle2, $encHandle ); + $fakeRoot = $this->view->getRoot(); + $this->view->chroot('/'.$this->userId.'/files'); - // get file size - $size = $this->view->filesize( $rawPath . '.plaintmp' ); + $this->view->rename($relPath . '.tmp', $relPath); - // Delete temporary plain copy of file - $this->view->unlink( $rawPath . '.plaintmp' ); + $this->view->chroot($fakeRoot); // Add the file to the cache - \OC\Files\Filesystem::putFileInfo( $plainFile['path'], array( 'encrypted' => true, 'size' => $size, 'unencrypted_size' => $size ) ); + \OC\Files\Filesystem::putFileInfo( $relPath, array( 'encrypted' => true, 'size' => $size, 'unencrypted_size' => $size ) ); } // Encrypt legacy encrypted files -- cgit v1.2.3 From f314eb8f722b78a4d27d7591521f014d74cac180 Mon Sep 17 00:00:00 2001 From: zafi Date: Sat, 25 May 2013 09:03:07 +0200 Subject: The "lost password" field depends on OC_USER_BACKEND_SET_PASSWORD so it should only be visible for users with a supporting backend. --- settings/templates/personal.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/settings/templates/personal.php b/settings/templates/personal.php index da812e8ed9a..f0002c505c8 100644 --- a/settings/templates/personal.php +++ b/settings/templates/personal.php @@ -63,6 +63,9 @@ if($_['displayNameChangeSupported']) { } ?> +
t('Email'));?> @@ -71,6 +74,9 @@ if($_['displayNameChangeSupported']) { t('Fill in an email address to enable password recovery'));?>
+
-- cgit v1.2.3 From 9a6cd89a69783d35726e6963eabe51e34ce2e878 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 25 May 2013 21:33:05 +0200 Subject: added OC_DB::isError and logging --- apps/files_encryption/lib/util.php | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 2980aa94e0c..9259f521d1a 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -291,6 +291,10 @@ class Util $recoveryEnabled = array(); + if (\OC_DB::isError($result)) { + \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } + while ( $row = $result->fetchRow() ) { $recoveryEnabled[] = $row['recovery_enabled']; @@ -820,6 +824,10 @@ class Util $result = $query->execute( array( $fileId ) ); + if (\OC_DB::isError($result)) { + \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } + $row = $result->fetchRow(); return substr( $row['path'], 5 ); @@ -1086,6 +1094,10 @@ class Util $migrationStatus = array(); + if (\OC_DB::isError($result)) { + \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } + $row = $result->fetchRow(); if($row) { $migrationStatus[] = $row['migration_status']; @@ -1221,6 +1233,10 @@ class Util $result = $query->execute( array( $id ) ); + if (\OC_DB::isError($result)) { + \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } + $row = $result->fetchRow(); return $row; @@ -1240,6 +1256,10 @@ class Util $result = $query->execute( array( $id ) ); + if (\OC_DB::isError($result)) { + \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } + $row = $result->fetchRow(); return $row; @@ -1255,7 +1275,14 @@ class Util public function getOwnerFromSharedFile( $id ) { $query = \OC_DB::prepare( 'SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1 ); - $source = $query->execute( array( $id ) )->fetchRow(); + + $result = $query->execute( array( $id ) ); + + if (\OC_DB::isError($result)) { + \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } + + $source = $result->fetchRow(); $fileOwner = false; @@ -1266,7 +1293,14 @@ class Util while ( isset( $parent ) ) { $query = \OC_DB::prepare( 'SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1 ); - $item = $query->execute( array( $parent ) )->fetchRow(); + + $result = $query->execute( array( $parent ) ); + + if (\OC_DB::isError($result)) { + \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } + + $item = $result->fetchRow(); if ( isset( $item['parent'] ) ) { -- cgit v1.2.3 From 788c5940f08c5380b695c4bf9b69b53af1cd2d59 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sat, 25 May 2013 23:07:19 +0200 Subject: fixed error rising from fetchRow --- apps/files_encryption/lib/util.php | 49 +++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 9259f521d1a..70fcd955be0 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -293,12 +293,11 @@ class Util if (\OC_DB::isError($result)) { \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); - } - - while ( $row = $result->fetchRow() ) { - - $recoveryEnabled[] = $row['recovery_enabled']; - + } else { + $row = $result->fetchRow(); + if( isset( $row['recovery_enabled'] ) ) { + $recoveryEnabled[] = $row['recovery_enabled']; + } } // If no record is found @@ -824,13 +823,15 @@ class Util $result = $query->execute( array( $fileId ) ); + $path = false; if (\OC_DB::isError($result)) { \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } else { + $row = $result->fetchRow(); + $path = substr( $row['path'], strlen('files') ); } - $row = $result->fetchRow(); - - return substr( $row['path'], 5 ); + return $path; } @@ -1096,11 +1097,11 @@ class Util if (\OC_DB::isError($result)) { \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); - } - - $row = $result->fetchRow(); - if($row) { - $migrationStatus[] = $row['migration_status']; + } else { + $row = $result->fetchRow(); + if( isset( $row['migration_status'] ) ) { + $migrationStatus[] = $row['migration_status']; + } } // If no record is found @@ -1233,12 +1234,13 @@ class Util $result = $query->execute( array( $id ) ); + $row = array(); if (\OC_DB::isError($result)) { \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } else { + $row = $result->fetchRow(); } - $row = $result->fetchRow(); - return $row; } @@ -1256,12 +1258,13 @@ class Util $result = $query->execute( array( $id ) ); + $row = array(); if (\OC_DB::isError($result)) { \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } else { + $row = $result->fetchRow(); } - $row = $result->fetchRow(); - return $row; } @@ -1278,12 +1281,13 @@ class Util $result = $query->execute( array( $id ) ); + $source = array(); if (\OC_DB::isError($result)) { \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } else { + $source = $result->fetchRow(); } - $source = $result->fetchRow(); - $fileOwner = false; if ( isset( $source['parent'] ) ) { @@ -1296,12 +1300,13 @@ class Util $result = $query->execute( array( $parent ) ); + $item = array(); if (\OC_DB::isError($result)) { \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + } else { + $item = $result->fetchRow(); } - $item = $result->fetchRow(); - if ( isset( $item['parent'] ) ) { $parent = $item['parent']; -- cgit v1.2.3 From c7981abbc902ece98ceaad72e475ec5515cd26a7 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sun, 26 May 2013 03:22:16 +0200 Subject: improved test - fixed testPermanentDeleteFile sometimes failed - speed optimization - reformat code --- apps/files_encryption/tests/crypt.php | 553 ++++++++++++++-------------- apps/files_encryption/tests/keymanager.php | 187 +++++----- apps/files_encryption/tests/share.php | 562 ++++++++++++++--------------- apps/files_encryption/tests/stream.php | 134 +++---- apps/files_encryption/tests/trashbin.php | 193 +++++----- apps/files_encryption/tests/util.php | 187 +++++----- apps/files_encryption/tests/webdav.php | 103 +++--- 7 files changed, 944 insertions(+), 975 deletions(-) diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 621941c52a1..b8fbdda400f 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -7,15 +7,15 @@ * See the COPYING-README file. */ -require_once realpath(dirname(__FILE__) . '/../3rdparty/Crypt_Blowfish/Blowfish.php'); -require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); -require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); -require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); -require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); -require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); -require_once realpath(dirname(__FILE__) . '/../lib/util.php'); -require_once realpath(dirname(__FILE__) . '/../lib/helper.php'); -require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath( dirname( __FILE__ ) . '/../3rdparty/Crypt_Blowfish/Blowfish.php' ); +require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/helper.php' ); +require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); use OCA\Encryption; @@ -39,92 +39,95 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase public $genPrivateKey; public $genPublicKey; - function setUp() - { + public static function setUpBeforeClass() { // reset backend \OC_User::clearBackends(); - \OC_User::useBackend('database'); + \OC_User::useBackend( 'database' ); + // Filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); + + // Filesystem related hooks + \OCA\Encryption\Helper::registerUserHooks(); + + // clear and register hooks + \OC_FileProxy::clearProxies(); + \OC_FileProxy::register( new OCA\Encryption\Proxy() ); + + // setup filesystem + \OC_Util::tearDownFS(); + \OC_User::setUserId( '' ); + \OC\Files\Filesystem::tearDown(); + \OC_Util::setupFS( 'admin' ); + \OC_User::setUserId( 'admin' ); + + // login admin + $params['uid'] = 'admin'; + $params['password'] = 'admin'; + OCA\Encryption\Hooks::login( $params ); + } + + function setUp() { // set content for encrypting / decrypting in tests - $this->dataLong = file_get_contents(realpath(dirname(__FILE__) . '/../lib/crypt.php')); + $this->dataLong = file_get_contents( realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ) ); $this->dataShort = 'hats'; - $this->dataUrl = realpath(dirname(__FILE__) . '/../lib/crypt.php'); - $this->legacyData = realpath(dirname(__FILE__) . '/legacy-text.txt'); - $this->legacyEncryptedData = realpath(dirname(__FILE__) . '/legacy-encrypted-text.txt'); - $this->legacyEncryptedDataKey = realpath(dirname(__FILE__) . '/encryption.key'); + $this->dataUrl = realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); + $this->legacyData = realpath( dirname( __FILE__ ) . '/legacy-text.txt' ); + $this->legacyEncryptedData = realpath( dirname( __FILE__ ) . '/legacy-encrypted-text.txt' ); + $this->legacyEncryptedDataKey = realpath( dirname( __FILE__ ) . '/encryption.key' ); $this->randomKey = Encryption\Crypt::generateKey(); $keypair = Encryption\Crypt::createKeypair(); $this->genPublicKey = $keypair['publicKey']; $this->genPrivateKey = $keypair['privateKey']; - $this->view = new \OC_FilesystemView('/'); + $this->view = new \OC_FilesystemView( '/' ); - \OC_User::setUserId('admin'); + \OC_User::setUserId( 'admin' ); $this->userId = 'admin'; $this->pass = 'admin'; - $userHome = \OC_User::getHome($this->userId); - $this->dataDir = str_replace('/' . $this->userId, '', $userHome); - - // Filesystem related hooks - \OCA\Encryption\Helper::registerFilesystemHooks(); - - // Filesystem related hooks - \OCA\Encryption\Helper::registerUserHooks(); - - \OC_FileProxy::register(new OCA\Encryption\Proxy()); + $userHome = \OC_User::getHome( $this->userId ); + $this->dataDir = str_replace( '/' . $this->userId, '', $userHome ); // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); + $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); // we don't want to tests with app files_trashbin enabled - \OC_App::disable('files_trashbin'); - - \OC_Util::tearDownFS(); - \OC_User::setUserId(''); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS($this->userId); - \OC_User::setUserId($this->userId); - - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - OCA\Encryption\Hooks::login($params); - + \OC_App::disable( 'files_trashbin' ); } - function tearDown() - { - \OC_FileProxy::clearProxies(); - + function tearDown() { // reset app files_trashbin - if ($this->stateFilesTrashbin) { - OC_App::enable('files_trashbin'); + if ( $this->stateFilesTrashbin ) { + OC_App::enable( 'files_trashbin' ); } else { - OC_App::disable('files_trashbin'); + OC_App::disable( 'files_trashbin' ); } } - function testGenerateKey() - { + public static function tearDownAfterClass() { + + } + + function testGenerateKey() { # TODO: use more accurate (larger) string length for test confirmation $key = Encryption\Crypt::generateKey(); - $this->assertTrue(strlen($key) > 16); + $this->assertTrue( strlen( $key ) > 16 ); } /** * @return String */ - function testGenerateIv() - { + function testGenerateIv() { $iv = Encryption\Crypt::generateIv(); - $this->assertEquals(16, strlen($iv)); + $this->assertEquals( 16, strlen( $iv ) ); return $iv; @@ -133,27 +136,26 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase /** * @depends testGenerateIv */ - function testConcatIv($iv) - { + function testConcatIv( $iv ) { - $catFile = Encryption\Crypt::concatIv($this->dataLong, $iv); + $catFile = Encryption\Crypt::concatIv( $this->dataLong, $iv ); // Fetch encryption metadata from end of file - $meta = substr($catFile, -22); + $meta = substr( $catFile, -22 ); - $identifier = substr($meta, 0, 6); + $identifier = substr( $meta, 0, 6 ); // Fetch IV from end of file - $foundIv = substr($meta, 6); + $foundIv = substr( $meta, 6 ); - $this->assertEquals('00iv00', $identifier); + $this->assertEquals( '00iv00', $identifier ); - $this->assertEquals($iv, $foundIv); + $this->assertEquals( $iv, $foundIv ); // Remove IV and IV identifier text to expose encrypted content - $data = substr($catFile, 0, -22); + $data = substr( $catFile, 0, -22 ); - $this->assertEquals($this->dataLong, $data); + $this->assertEquals( $this->dataLong, $data ); return array( 'iv' => $iv @@ -165,31 +167,29 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase /** * @depends testConcatIv */ - function testSplitIv($testConcatIv) - { + function testSplitIv( $testConcatIv ) { // Split catfile into components - $splitCatfile = Encryption\Crypt::splitIv($testConcatIv['catfile']); + $splitCatfile = Encryption\Crypt::splitIv( $testConcatIv['catfile'] ); // Check that original IV and split IV match - $this->assertEquals($testConcatIv['iv'], $splitCatfile['iv']); + $this->assertEquals( $testConcatIv['iv'], $splitCatfile['iv'] ); // Check that original data and split data match - $this->assertEquals($this->dataLong, $splitCatfile['encrypted']); + $this->assertEquals( $this->dataLong, $splitCatfile['encrypted'] ); } /** * @return string padded */ - function testAddPadding() - { + function testAddPadding() { - $padded = Encryption\Crypt::addPadding($this->dataLong); + $padded = Encryption\Crypt::addPadding( $this->dataLong ); - $padding = substr($padded, -2); + $padding = substr( $padded, -2 ); - $this->assertEquals('xx', $padding); + $this->assertEquals( 'xx', $padding ); return $padded; @@ -198,107 +198,102 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase /** * @depends testAddPadding */ - function testRemovePadding($padded) - { + function testRemovePadding( $padded ) { - $noPadding = Encryption\Crypt::RemovePadding($padded); + $noPadding = Encryption\Crypt::RemovePadding( $padded ); - $this->assertEquals($this->dataLong, $noPadding); + $this->assertEquals( $this->dataLong, $noPadding ); } - function testEncrypt() - { + function testEncrypt() { - $random = openssl_random_pseudo_bytes(13); + $random = openssl_random_pseudo_bytes( 13 ); - $iv = substr(base64_encode($random), 0, -4); // i.e. E5IG033j+mRNKrht + $iv = substr( base64_encode( $random ), 0, -4 ); // i.e. E5IG033j+mRNKrht - $crypted = Encryption\Crypt::encrypt($this->dataUrl, $iv, 'hat'); + $crypted = Encryption\Crypt::encrypt( $this->dataUrl, $iv, 'hat' ); - $this->assertNotEquals($this->dataUrl, $crypted); + $this->assertNotEquals( $this->dataUrl, $crypted ); } - function testDecrypt() - { + function testDecrypt() { - $random = openssl_random_pseudo_bytes(13); + $random = openssl_random_pseudo_bytes( 13 ); - $iv = substr(base64_encode($random), 0, -4); // i.e. E5IG033j+mRNKrht + $iv = substr( base64_encode( $random ), 0, -4 ); // i.e. E5IG033j+mRNKrht - $crypted = Encryption\Crypt::encrypt($this->dataUrl, $iv, 'hat'); + $crypted = Encryption\Crypt::encrypt( $this->dataUrl, $iv, 'hat' ); - $decrypt = Encryption\Crypt::decrypt($crypted, $iv, 'hat'); + $decrypt = Encryption\Crypt::decrypt( $crypted, $iv, 'hat' ); - $this->assertEquals($this->dataUrl, $decrypt); + $this->assertEquals( $this->dataUrl, $decrypt ); } - function testSymmetricEncryptFileContent() - { + function testSymmetricEncryptFileContent() { # TODO: search in keyfile for actual content as IV will ensure this test always passes - $crypted = Encryption\Crypt::symmetricEncryptFileContent($this->dataShort, 'hat'); + $crypted = Encryption\Crypt::symmetricEncryptFileContent( $this->dataShort, 'hat' ); - $this->assertNotEquals($this->dataShort, $crypted); + $this->assertNotEquals( $this->dataShort, $crypted ); - $decrypt = Encryption\Crypt::symmetricDecryptFileContent($crypted, 'hat'); + $decrypt = Encryption\Crypt::symmetricDecryptFileContent( $crypted, 'hat' ); - $this->assertEquals($this->dataShort, $decrypt); + $this->assertEquals( $this->dataShort, $decrypt ); } - function testSymmetricStreamEncryptShortFileContent() - { + function testSymmetricStreamEncryptShortFileContent() { $filename = 'tmp-' . time() . '.test'; - $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataShort); + $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataShort ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // Get file contents without using any wrapper to get it's actual contents on disk - $retreivedCryptedFile = $this->view->file_get_contents($this->userId . '/files/' . $filename); + $retreivedCryptedFile = $this->view->file_get_contents( $this->userId . '/files/' . $filename ); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; // Check that the file was encrypted before being written to disk - $this->assertNotEquals($this->dataShort, $retreivedCryptedFile); + $this->assertNotEquals( $this->dataShort, $retreivedCryptedFile ); // Get the encrypted keyfile - $encKeyfile = Encryption\Keymanager::getFileKey($this->view, $this->userId, $filename); + $encKeyfile = Encryption\Keymanager::getFileKey( $this->view, $this->userId, $filename ); // Attempt to fetch the user's shareKey - $shareKey = Encryption\Keymanager::getShareKey($this->view, $this->userId, $filename); + $shareKey = Encryption\Keymanager::getShareKey( $this->view, $this->userId, $filename ); // get session - $session = new Encryption\Session($this->view); + $session = new Encryption\Session( $this->view ); // get private key - $privateKey = $session->getPrivateKey($this->userId); + $privateKey = $session->getPrivateKey( $this->userId ); // Decrypt keyfile with shareKey - $plainKeyfile = Encryption\Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); + $plainKeyfile = Encryption\Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); // Manually decrypt - $manualDecrypt = Encryption\Crypt::symmetricDecryptFileContent($retreivedCryptedFile, $plainKeyfile); + $manualDecrypt = Encryption\Crypt::symmetricDecryptFileContent( $retreivedCryptedFile, $plainKeyfile ); // Check that decrypted data matches - $this->assertEquals($this->dataShort, $manualDecrypt); + $this->assertEquals( $this->dataShort, $manualDecrypt ); // Teardown - $this->view->unlink($this->userId . '/files/' . $filename); + $this->view->unlink( $this->userId . '/files/' . $filename ); - Encryption\Keymanager::deleteFileKey($this->view, $this->userId, $filename); + Encryption\Keymanager::deleteFileKey( $this->view, $this->userId, $filename ); } /** @@ -307,212 +302,204 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase * @note If this test fails with truncate content, check that enough array slices are being rejoined to form $e, as the crypt.php file may have gotten longer and broken the manual * reassembly of its data */ - function testSymmetricStreamEncryptLongFileContent() - { + function testSymmetricStreamEncryptLongFileContent() { // Generate a a random filename $filename = 'tmp-' . time() . '.test'; // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong . $this->dataLong); + $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong . $this->dataLong ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // Get file contents without using any wrapper to get it's actual contents on disk - $retreivedCryptedFile = $this->view->file_get_contents($this->userId . '/files/' . $filename); + $retreivedCryptedFile = $this->view->file_get_contents( $this->userId . '/files/' . $filename ); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; // Check that the file was encrypted before being written to disk - $this->assertNotEquals($this->dataLong . $this->dataLong, $retreivedCryptedFile); + $this->assertNotEquals( $this->dataLong . $this->dataLong, $retreivedCryptedFile ); // Manuallly split saved file into separate IVs and encrypted chunks - $r = preg_split('/(00iv00.{16,18})/', $retreivedCryptedFile, NULL, PREG_SPLIT_DELIM_CAPTURE); + $r = preg_split( '/(00iv00.{16,18})/', $retreivedCryptedFile, NULL, PREG_SPLIT_DELIM_CAPTURE ); //print_r($r); // Join IVs and their respective data chunks - $e = array($r[0] . $r[1], $r[2] . $r[3], $r[4] . $r[5], $r[6] . $r[7], $r[8] . $r[9], $r[10] . $r[11]); //.$r[11], $r[12].$r[13], $r[14] ); + $e = array( $r[0] . $r[1], $r[2] . $r[3], $r[4] . $r[5], $r[6] . $r[7], $r[8] . $r[9], $r[10] . $r[11] ); //.$r[11], $r[12].$r[13], $r[14] ); //print_r($e); // Get the encrypted keyfile - $encKeyfile = Encryption\Keymanager::getFileKey($this->view, $this->userId, $filename); + $encKeyfile = Encryption\Keymanager::getFileKey( $this->view, $this->userId, $filename ); // Attempt to fetch the user's shareKey - $shareKey = Encryption\Keymanager::getShareKey($this->view, $this->userId, $filename); + $shareKey = Encryption\Keymanager::getShareKey( $this->view, $this->userId, $filename ); // get session - $session = new Encryption\Session($this->view); + $session = new Encryption\Session( $this->view ); // get private key - $privateKey = $session->getPrivateKey($this->userId); + $privateKey = $session->getPrivateKey( $this->userId ); // Decrypt keyfile with shareKey - $plainKeyfile = Encryption\Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); + $plainKeyfile = Encryption\Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); // Set var for reassembling decrypted content $decrypt = ''; // Manually decrypt chunk - foreach ($e as $chunk) { + foreach ( $e as $chunk ) { - $chunkDecrypt = Encryption\Crypt::symmetricDecryptFileContent($chunk, $plainKeyfile); + $chunkDecrypt = Encryption\Crypt::symmetricDecryptFileContent( $chunk, $plainKeyfile ); // Assemble decrypted chunks $decrypt .= $chunkDecrypt; } - $this->assertEquals($this->dataLong . $this->dataLong, $decrypt); + $this->assertEquals( $this->dataLong . $this->dataLong, $decrypt ); // Teardown - $this->view->unlink($this->userId . '/files/' . $filename); + $this->view->unlink( $this->userId . '/files/' . $filename ); - Encryption\Keymanager::deleteFileKey($this->view, $this->userId, $filename); + Encryption\Keymanager::deleteFileKey( $this->view, $this->userId, $filename ); } /** * @brief Test that data that is read by the crypto stream wrapper */ - function testSymmetricStreamDecryptShortFileContent() - { + function testSymmetricStreamDecryptShortFileContent() { $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataShort); + $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataShort ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $this->assertTrue(Encryption\Crypt::isEncryptedMeta($filename)); + $this->assertTrue( Encryption\Crypt::isEncryptedMeta( $filename ) ); \OC_FileProxy::$enabled = $proxyStatus; // Get file decrypted contents - $decrypt = file_get_contents('crypt://' . $filename); + $decrypt = file_get_contents( 'crypt://' . $filename ); - $this->assertEquals($this->dataShort, $decrypt); + $this->assertEquals( $this->dataShort, $decrypt ); // tear down - $this->view->unlink($this->userId . '/files/' . $filename); + $this->view->unlink( $this->userId . '/files/' . $filename ); } - function testSymmetricStreamDecryptLongFileContent() - { + function testSymmetricStreamDecryptLongFileContent() { $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong); + $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // Get file decrypted contents - $decrypt = file_get_contents('crypt://' . $filename); + $decrypt = file_get_contents( 'crypt://' . $filename ); - $this->assertEquals($this->dataLong, $decrypt); + $this->assertEquals( $this->dataLong, $decrypt ); // tear down - $this->view->unlink($this->userId . '/files/' . $filename); + $this->view->unlink( $this->userId . '/files/' . $filename ); } - function testSymmetricEncryptFileContentKeyfile() - { + function testSymmetricEncryptFileContentKeyfile() { # TODO: search in keyfile for actual content as IV will ensure this test always passes - $crypted = Encryption\Crypt::symmetricEncryptFileContentKeyfile($this->dataUrl); + $crypted = Encryption\Crypt::symmetricEncryptFileContentKeyfile( $this->dataUrl ); - $this->assertNotEquals($this->dataUrl, $crypted['encrypted']); + $this->assertNotEquals( $this->dataUrl, $crypted['encrypted'] ); - $decrypt = Encryption\Crypt::symmetricDecryptFileContent($crypted['encrypted'], $crypted['key']); + $decrypt = Encryption\Crypt::symmetricDecryptFileContent( $crypted['encrypted'], $crypted['key'] ); - $this->assertEquals($this->dataUrl, $decrypt); + $this->assertEquals( $this->dataUrl, $decrypt ); } - function testIsEncryptedContent() - { + function testIsEncryptedContent() { - $this->assertFalse(Encryption\Crypt::isCatfileContent($this->dataUrl)); + $this->assertFalse( Encryption\Crypt::isCatfileContent( $this->dataUrl ) ); - $this->assertFalse(Encryption\Crypt::isCatfileContent($this->legacyEncryptedData)); + $this->assertFalse( Encryption\Crypt::isCatfileContent( $this->legacyEncryptedData ) ); - $keyfileContent = Encryption\Crypt::symmetricEncryptFileContent($this->dataUrl, 'hat'); + $keyfileContent = Encryption\Crypt::symmetricEncryptFileContent( $this->dataUrl, 'hat' ); - $this->assertTrue(Encryption\Crypt::isCatfileContent($keyfileContent)); + $this->assertTrue( Encryption\Crypt::isCatfileContent( $keyfileContent ) ); } - function testMultiKeyEncrypt() - { + function testMultiKeyEncrypt() { # TODO: search in keyfile for actual content as IV will ensure this test always passes $pair1 = Encryption\Crypt::createKeypair(); - $this->assertEquals(2, count($pair1)); + $this->assertEquals( 2, count( $pair1 ) ); - $this->assertTrue(strlen($pair1['publicKey']) > 1); + $this->assertTrue( strlen( $pair1['publicKey'] ) > 1 ); - $this->assertTrue(strlen($pair1['privateKey']) > 1); + $this->assertTrue( strlen( $pair1['privateKey'] ) > 1 ); - $crypted = Encryption\Crypt::multiKeyEncrypt($this->dataShort, array($pair1['publicKey'])); + $crypted = Encryption\Crypt::multiKeyEncrypt( $this->dataShort, array( $pair1['publicKey'] ) ); - $this->assertNotEquals($this->dataShort, $crypted['data']); + $this->assertNotEquals( $this->dataShort, $crypted['data'] ); - $decrypt = Encryption\Crypt::multiKeyDecrypt($crypted['data'], $crypted['keys'][0], $pair1['privateKey']); + $decrypt = Encryption\Crypt::multiKeyDecrypt( $crypted['data'], $crypted['keys'][0], $pair1['privateKey'] ); - $this->assertEquals($this->dataShort, $decrypt); + $this->assertEquals( $this->dataShort, $decrypt ); } - function testKeyEncrypt() - { + function testKeyEncrypt() { // Generate keypair $pair1 = Encryption\Crypt::createKeypair(); // Encrypt data - $crypted = Encryption\Crypt::keyEncrypt($this->dataUrl, $pair1['publicKey']); + $crypted = Encryption\Crypt::keyEncrypt( $this->dataUrl, $pair1['publicKey'] ); - $this->assertNotEquals($this->dataUrl, $crypted); + $this->assertNotEquals( $this->dataUrl, $crypted ); // Decrypt data - $decrypt = Encryption\Crypt::keyDecrypt($crypted, $pair1['privateKey']); + $decrypt = Encryption\Crypt::keyDecrypt( $crypted, $pair1['privateKey'] ); - $this->assertEquals($this->dataUrl, $decrypt); + $this->assertEquals( $this->dataUrl, $decrypt ); } /** * @brief test encryption using legacy blowfish method */ - function testLegacyEncryptShort() - { + function testLegacyEncryptShort() { - $crypted = Encryption\Crypt::legacyEncrypt($this->dataShort, $this->pass); + $crypted = Encryption\Crypt::legacyEncrypt( $this->dataShort, $this->pass ); - $this->assertNotEquals($this->dataShort, $crypted); + $this->assertNotEquals( $this->dataShort, $crypted ); # TODO: search inencrypted text for actual content to ensure it # genuine transformation @@ -525,24 +512,22 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase * @brief test decryption using legacy blowfish method * @depends testLegacyEncryptShort */ - function testLegacyDecryptShort($crypted) - { + function testLegacyDecryptShort( $crypted ) { - $decrypted = Encryption\Crypt::legacyDecrypt($crypted, $this->pass); + $decrypted = Encryption\Crypt::legacyDecrypt( $crypted, $this->pass ); - $this->assertEquals($this->dataShort, $decrypted); + $this->assertEquals( $this->dataShort, $decrypted ); } /** * @brief test encryption using legacy blowfish method */ - function testLegacyEncryptLong() - { + function testLegacyEncryptLong() { - $crypted = Encryption\Crypt::legacyEncrypt($this->dataLong, $this->pass); + $crypted = Encryption\Crypt::legacyEncrypt( $this->dataLong, $this->pass ); - $this->assertNotEquals($this->dataLong, $crypted); + $this->assertNotEquals( $this->dataLong, $crypted ); # TODO: search inencrypted text for actual content to ensure it # genuine transformation @@ -555,33 +540,31 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase * @brief test decryption using legacy blowfish method * @depends testLegacyEncryptLong */ - function testLegacyDecryptLong($crypted) - { + function testLegacyDecryptLong( $crypted ) { - $decrypted = Encryption\Crypt::legacyDecrypt($crypted, $this->pass); + $decrypted = Encryption\Crypt::legacyDecrypt( $crypted, $this->pass ); - $this->assertEquals($this->dataLong, $decrypted); + $this->assertEquals( $this->dataLong, $decrypted ); - $this->assertFalse(Encryption\Crypt::getBlowfish('')); + $this->assertFalse( Encryption\Crypt::getBlowfish( '' ) ); } /** * @brief test generation of legacy encryption key * @depends testLegacyDecryptShort */ - function testLegacyCreateKey() - { + function testLegacyCreateKey() { // Create encrypted key - $encKey = Encryption\Crypt::legacyCreateKey($this->pass); + $encKey = Encryption\Crypt::legacyCreateKey( $this->pass ); // Decrypt key - $key = Encryption\Crypt::legacyDecrypt($encKey, $this->pass); + $key = Encryption\Crypt::legacyDecrypt( $encKey, $this->pass ); - $this->assertTrue(is_numeric($key)); + $this->assertTrue( is_numeric( $key ) ); // Check that key is correct length - $this->assertEquals(20, strlen($key)); + $this->assertEquals( 20, strlen( $key ) ); } @@ -589,12 +572,11 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase * @brief test decryption using legacy blowfish method * @depends testLegacyEncryptLong */ - function testLegacyKeyRecryptKeyfileEncrypt($crypted) - { + function testLegacyKeyRecryptKeyfileEncrypt( $crypted ) { - $recrypted = Encryption\Crypt::LegacyKeyRecryptKeyfile($crypted, $this->pass, array($this->genPublicKey), $this->pass, ''); + $recrypted = Encryption\Crypt::LegacyKeyRecryptKeyfile( $crypted, $this->pass, array( $this->genPublicKey ), $this->pass, '' ); - $this->assertNotEquals($this->dataLong, $recrypted['data']); + $this->assertNotEquals( $this->dataLong, $recrypted['data'] ); return $recrypted; @@ -603,231 +585,224 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase } - function testRenameFile() - { + function testRenameFile() { $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong); + $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // Get file decrypted contents - $decrypt = file_get_contents('crypt://' . $filename); + $decrypt = file_get_contents( 'crypt://' . $filename ); - $this->assertEquals($this->dataLong, $decrypt); + $this->assertEquals( $this->dataLong, $decrypt ); $newFilename = 'tmp-new-' . time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); - $view->rename($filename, $newFilename); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view->rename( $filename, $newFilename ); // Get file decrypted contents - $newDecrypt = file_get_contents('crypt://' . $newFilename); + $newDecrypt = file_get_contents( 'crypt://' . $newFilename ); - $this->assertEquals($this->dataLong, $newDecrypt); + $this->assertEquals( $this->dataLong, $newDecrypt ); // tear down - $view->unlink($newFilename); + $view->unlink( $newFilename ); } - function testMoveFileIntoFolder() - { + function testMoveFileIntoFolder() { $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong); + $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // Get file decrypted contents - $decrypt = file_get_contents('crypt://' . $filename); + $decrypt = file_get_contents( 'crypt://' . $filename ); - $this->assertEquals($this->dataLong, $decrypt); + $this->assertEquals( $this->dataLong, $decrypt ); $newFolder = '/newfolder' . time(); $newFilename = 'tmp-new-' . time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); - $view->mkdir($newFolder); - $view->rename($filename, $newFolder . '/' . $newFilename); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view->mkdir( $newFolder ); + $view->rename( $filename, $newFolder . '/' . $newFilename ); // Get file decrypted contents - $newDecrypt = file_get_contents('crypt://' . $newFolder . '/' . $newFilename); + $newDecrypt = file_get_contents( 'crypt://' . $newFolder . '/' . $newFilename ); - $this->assertEquals($this->dataLong, $newDecrypt); + $this->assertEquals( $this->dataLong, $newDecrypt ); // tear down - $view->unlink($newFolder); + $view->unlink( $newFolder ); } - function testMoveFolder() - { + function testMoveFolder() { - $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); $filename = '/tmp-' . time(); $folder = '/folder' . time(); - $view->mkdir($folder); + $view->mkdir( $folder ); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents('crypt://' . $folder . $filename, $this->dataLong); + $cryptedFile = file_put_contents( 'crypt://' . $folder . $filename, $this->dataLong ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // Get file decrypted contents - $decrypt = file_get_contents('crypt://' . $folder . $filename); + $decrypt = file_get_contents( 'crypt://' . $folder . $filename ); - $this->assertEquals($this->dataLong, $decrypt); + $this->assertEquals( $this->dataLong, $decrypt ); $newFolder = '/newfolder/subfolder' . time(); - $view->mkdir('/newfolder'); + $view->mkdir( '/newfolder' ); - $view->rename($folder, $newFolder); + $view->rename( $folder, $newFolder ); // Get file decrypted contents - $newDecrypt = file_get_contents('crypt://' . $newFolder . $filename); + $newDecrypt = file_get_contents( 'crypt://' . $newFolder . $filename ); - $this->assertEquals($this->dataLong, $newDecrypt); + $this->assertEquals( $this->dataLong, $newDecrypt ); // tear down - $view->unlink($newFolder); + $view->unlink( $newFolder ); + $view->unlink( '/newfolder' ); } - function testChangePassphrase() - { - $filename = 'tmp-' . time(); + function testChangePassphrase() { + $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong); + $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // Get file decrypted contents - $decrypt = file_get_contents('crypt://' . $filename); + $decrypt = file_get_contents( 'crypt://' . $filename ); - $this->assertEquals($this->dataLong, $decrypt); + $this->assertEquals( $this->dataLong, $decrypt ); // change password - \OC_User::setPassword($this->userId, 'test', null); + \OC_User::setPassword( $this->userId, 'test', null ); // relogin $params['uid'] = $this->userId; $params['password'] = 'test'; - OCA\Encryption\Hooks::login($params); + OCA\Encryption\Hooks::login( $params ); // Get file decrypted contents - $newDecrypt = file_get_contents('crypt://' . $filename); + $newDecrypt = file_get_contents( 'crypt://' . $filename ); - $this->assertEquals($this->dataLong, $newDecrypt); + $this->assertEquals( $this->dataLong, $newDecrypt ); // tear down // change password back - \OC_User::setPassword($this->userId, $this->pass); - $view = new \OC\Files\View('/' . $this->userId . '/files'); - $view->unlink($filename); + \OC_User::setPassword( $this->userId, $this->pass ); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view->unlink( $filename ); } - function testViewFilePutAndGetContents() - { + function testViewFilePutAndGetContents() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents($filename, $this->dataShort); + $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // Get file decrypted contents - $decrypt = $view->file_get_contents($filename); + $decrypt = $view->file_get_contents( $filename ); - $this->assertEquals($this->dataShort, $decrypt); + $this->assertEquals( $this->dataShort, $decrypt ); // Save long data as encrypted file using stream wrapper - $cryptedFileLong = $view->file_put_contents($filename, $this->dataLong); + $cryptedFileLong = $view->file_put_contents( $filename, $this->dataLong ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFileLong)); + $this->assertTrue( is_int( $cryptedFileLong ) ); // Get file decrypted contents - $decryptLong = $view->file_get_contents($filename); + $decryptLong = $view->file_get_contents( $filename ); - $this->assertEquals($this->dataLong, $decryptLong); + $this->assertEquals( $this->dataLong, $decryptLong ); // tear down - $view->unlink($filename); + $view->unlink( $filename ); } - function testTouchExistingFile() - { + function testTouchExistingFile() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents($filename, $this->dataShort); + $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); - $view->touch($filename); + $view->touch( $filename ); // Get file decrypted contents - $decrypt = $view->file_get_contents($filename); + $decrypt = $view->file_get_contents( $filename ); - $this->assertEquals($this->dataShort, $decrypt); + $this->assertEquals( $this->dataShort, $decrypt ); // tear down - $view->unlink($filename); + $view->unlink( $filename ); } - function testTouchFile() - { + function testTouchFile() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); - $view->touch($filename); + $view->touch( $filename ); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents($filename, $this->dataShort); + $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // Get file decrypted contents - $decrypt = $view->file_get_contents($filename); + $decrypt = $view->file_get_contents( $filename ); - $this->assertEquals($this->dataShort, $decrypt); + $this->assertEquals( $this->dataShort, $decrypt ); // tear down - $view->unlink($filename); + $view->unlink( $filename ); } - function testFopenFile() - { + function testFopenFile() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents($filename, $this->dataShort); + $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); - $handle = $view->fopen($filename, 'r'); + $handle = $view->fopen( $filename, 'r' ); // Get file decrypted contents - $decrypt = fgets($handle); + $decrypt = fgets( $handle ); - $this->assertEquals($this->dataShort, $decrypt); + $this->assertEquals( $this->dataShort, $decrypt ); // tear down - $view->unlink($filename); + $view->unlink( $filename ); } } diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php index b1bae673e82..1e7c2bdb40b 100644 --- a/apps/files_encryption/tests/keymanager.php +++ b/apps/files_encryption/tests/keymanager.php @@ -6,14 +6,14 @@ * See the COPYING-README file. */ -require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); -require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); -require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); -require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); -require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); -require_once realpath(dirname(__FILE__) . '/../lib/util.php'); -require_once realpath(dirname(__FILE__) . '/../lib/helper.php'); -require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/helper.php' ); +require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); use OCA\Encryption; @@ -33,109 +33,111 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase public $randomKey; public $dataShort; - function setUp() - { + public static function setUpBeforeClass() { // reset backend \OC_User::clearBackends(); - \OC_User::useBackend('database'); + \OC_User::useBackend( 'database' ); + // Filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); + + // clear and register hooks + \OC_FileProxy::clearProxies(); + \OC_FileProxy::register( new OCA\Encryption\Proxy() ); + + // disable file proxy by default \OC_FileProxy::$enabled = false; + // setup filesystem + \OC_Util::tearDownFS(); + \OC_User::setUserId( '' ); + \OC\Files\Filesystem::tearDown(); + \OC_Util::setupFS( 'admin' ); + \OC_User::setUserId( 'admin' ); + + // login admin + $params['uid'] = 'admin'; + $params['password'] = 'admin'; + OCA\Encryption\Hooks::login( $params ); + } + + function setUp() { // set content for encrypting / decrypting in tests - $this->dataLong = file_get_contents(realpath(dirname(__FILE__) . '/../lib/crypt.php')); + $this->dataLong = file_get_contents( realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ) ); $this->dataShort = 'hats'; - $this->dataUrl = realpath(dirname(__FILE__) . '/../lib/crypt.php'); - $this->legacyData = realpath(dirname(__FILE__) . '/legacy-text.txt'); - $this->legacyEncryptedData = realpath(dirname(__FILE__) . '/legacy-encrypted-text.txt'); + $this->dataUrl = realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); + $this->legacyData = realpath( dirname( __FILE__ ) . '/legacy-text.txt' ); + $this->legacyEncryptedData = realpath( dirname( __FILE__ ) . '/legacy-encrypted-text.txt' ); $this->randomKey = Encryption\Crypt::generateKey(); $keypair = Encryption\Crypt::createKeypair(); $this->genPublicKey = $keypair['publicKey']; $this->genPrivateKey = $keypair['privateKey']; - $this->view = new \OC_FilesystemView('/'); + $this->view = new \OC_FilesystemView( '/' ); - \OC_User::setUserId('admin'); + \OC_User::setUserId( 'admin' ); $this->userId = 'admin'; $this->pass = 'admin'; - $userHome = \OC_User::getHome($this->userId); - $this->dataDir = str_replace('/' . $this->userId, '', $userHome); - - // Filesystem related hooks - \OCA\Encryption\Helper::registerFilesystemHooks(); - - \OC_FileProxy::register(new OCA\Encryption\Proxy()); + $userHome = \OC_User::getHome( $this->userId ); + $this->dataDir = str_replace( '/' . $this->userId, '', $userHome ); // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); + $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); // we don't want to tests with app files_trashbin enabled - \OC_App::disable('files_trashbin'); - - \OC_Util::tearDownFS(); - \OC_User::setUserId(''); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS($this->userId); - \OC_User::setUserId($this->userId); - - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - OCA\Encryption\Hooks::login($params); + \OC_App::disable( 'files_trashbin' ); } - function tearDown() - { - - \OC_FileProxy::$enabled = true; - \OC_FileProxy::clearProxies(); - + function tearDown() { // reset app files_trashbin - if ($this->stateFilesTrashbin) { - OC_App::enable('files_trashbin'); + if ( $this->stateFilesTrashbin ) { + OC_App::enable( 'files_trashbin' ); } else { - OC_App::disable('files_trashbin'); + OC_App::disable( 'files_trashbin' ); } } - function testGetPrivateKey() - { + public static function tearDownAfterClass() { + \OC_FileProxy::$enabled = true; + } + + function testGetPrivateKey() { - $key = Encryption\Keymanager::getPrivateKey($this->view, $this->userId); + $key = Encryption\Keymanager::getPrivateKey( $this->view, $this->userId ); - $privateKey = Encryption\Crypt::symmetricDecryptFileContent($key, $this->pass); + $privateKey = Encryption\Crypt::symmetricDecryptFileContent( $key, $this->pass ); - $res = openssl_pkey_get_private($privateKey); + $res = openssl_pkey_get_private( $privateKey ); - $this->assertTrue(is_resource($res)); + $this->assertTrue( is_resource( $res ) ); - $sslInfo = openssl_pkey_get_details($res); + $sslInfo = openssl_pkey_get_details( $res ); - $this->assertArrayHasKey('key', $sslInfo); + $this->assertArrayHasKey( 'key', $sslInfo ); } - function testGetPublicKey() - { + function testGetPublicKey() { - $publiceKey = Encryption\Keymanager::getPublicKey($this->view, $this->userId); + $publiceKey = Encryption\Keymanager::getPublicKey( $this->view, $this->userId ); - $res = openssl_pkey_get_public($publiceKey); + $res = openssl_pkey_get_public( $publiceKey ); - $this->assertTrue(is_resource($res)); + $this->assertTrue( is_resource( $res ) ); - $sslInfo = openssl_pkey_get_details($res); + $sslInfo = openssl_pkey_get_details( $res ); - $this->assertArrayHasKey('key', $sslInfo); + $this->assertArrayHasKey( 'key', $sslInfo ); } - function testSetFileKey() - { + function testSetFileKey() { # NOTE: This cannot be tested until we are able to break out # of the FileSystemView data directory root - $key = Encryption\Crypt::symmetricEncryptFileContentKeyfile($this->randomKey, 'hat'); + $key = Encryption\Crypt::symmetricEncryptFileContentKeyfile( $this->randomKey, 'hat' ); $file = 'unittest-' . time() . '.txt'; @@ -143,101 +145,98 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $this->view->file_put_contents($this->userId . '/files/' . $file, $key['encrypted']); + $this->view->file_put_contents( $this->userId . '/files/' . $file, $key['encrypted'] ); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; //$view = new \OC_FilesystemView( '/' . $this->userId . '/files_encryption/keyfiles' ); - Encryption\Keymanager::setFileKey($this->view, $file, $this->userId, $key['key']); + Encryption\Keymanager::setFileKey( $this->view, $file, $this->userId, $key['key'] ); // enable encryption proxy $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = true; // cleanup - $this->view->unlink('/' . $this->userId . '/files/' . $file); + $this->view->unlink( '/' . $this->userId . '/files/' . $file ); // change encryption proxy to previous state \OC_FileProxy::$enabled = $proxyStatus; } - function testGetUserKeys() - { + function testGetUserKeys() { - $keys = Encryption\Keymanager::getUserKeys($this->view, $this->userId); + $keys = Encryption\Keymanager::getUserKeys( $this->view, $this->userId ); - $resPublic = openssl_pkey_get_public($keys['publicKey']); + $resPublic = openssl_pkey_get_public( $keys['publicKey'] ); - $this->assertTrue(is_resource($resPublic)); + $this->assertTrue( is_resource( $resPublic ) ); - $sslInfoPublic = openssl_pkey_get_details($resPublic); + $sslInfoPublic = openssl_pkey_get_details( $resPublic ); - $this->assertArrayHasKey('key', $sslInfoPublic); + $this->assertArrayHasKey( 'key', $sslInfoPublic ); - $privateKey = Encryption\Crypt::symmetricDecryptFileContent($keys['privateKey'], $this->pass); + $privateKey = Encryption\Crypt::symmetricDecryptFileContent( $keys['privateKey'], $this->pass ); - $resPrivate = openssl_pkey_get_private($privateKey); + $resPrivate = openssl_pkey_get_private( $privateKey ); - $this->assertTrue(is_resource($resPrivate)); + $this->assertTrue( is_resource( $resPrivate ) ); - $sslInfoPrivate = openssl_pkey_get_details($resPrivate); + $sslInfoPrivate = openssl_pkey_get_details( $resPrivate ); - $this->assertArrayHasKey('key', $sslInfoPrivate); + $this->assertArrayHasKey( 'key', $sslInfoPrivate ); } - function testFixPartialFilePath() - { + function testFixPartialFilePath() { $partFilename = 'testfile.txt.part'; $filename = 'testfile.txt'; - $this->assertTrue(Encryption\Keymanager::isPartialFilePath($partFilename)); + $this->assertTrue( Encryption\Keymanager::isPartialFilePath( $partFilename ) ); - $this->assertEquals('testfile.txt', Encryption\Keymanager::fixPartialFilePath($partFilename)); + $this->assertEquals( 'testfile.txt', Encryption\Keymanager::fixPartialFilePath( $partFilename ) ); - $this->assertFalse(Encryption\Keymanager::isPartialFilePath($filename)); + $this->assertFalse( Encryption\Keymanager::isPartialFilePath( $filename ) ); - $this->assertEquals('testfile.txt', Encryption\Keymanager::fixPartialFilePath($filename)); + $this->assertEquals( 'testfile.txt', Encryption\Keymanager::fixPartialFilePath( $filename ) ); } - function testRecursiveDelShareKeys() - { + function testRecursiveDelShareKeys() { // generate filename $filename = '/tmp-' . time() . '.txt'; // create folder structure - $this->view->mkdir('/admin/files/folder1'); - $this->view->mkdir('/admin/files/folder1/subfolder'); - $this->view->mkdir('/admin/files/folder1/subfolder/subsubfolder'); + $this->view->mkdir( '/admin/files/folder1' ); + $this->view->mkdir( '/admin/files/folder1/subfolder' ); + $this->view->mkdir( '/admin/files/folder1/subfolder/subsubfolder' ); // enable encryption proxy $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = true; // save file with content - $cryptedFile = file_put_contents('crypt:///folder1/subfolder/subsubfolder/' . $filename, $this->dataShort); + $cryptedFile = file_put_contents( 'crypt:///folder1/subfolder/subsubfolder/' . $filename, $this->dataShort ); // test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // change encryption proxy to previous state \OC_FileProxy::$enabled = $proxyStatus; // recursive delete keys - Encryption\Keymanager::delShareKey($this->view, array('admin'), '/folder1/'); + Encryption\Keymanager::delShareKey( $this->view, array( 'admin' ), '/folder1/' ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/folder1/subfolder/subsubfolder/' . $filename . '.admin.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/folder1/subfolder/subsubfolder/' . $filename . '.admin.shareKey' ) ); // enable encryption proxy $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = true; // cleanup - $this->view->unlink('/admin/files/folder1'); + $this->view->unlink( '/admin/files/folder1' ); // change encryption proxy to previous state \OC_FileProxy::$enabled = $proxyStatus; diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index 1d0cbfbc1de..0131ac88e72 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -20,15 +20,15 @@ * */ -require_once realpath(dirname(__FILE__) . '/../3rdparty/Crypt_Blowfish/Blowfish.php'); -require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); -require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); -require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); -require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); -require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); -require_once realpath(dirname(__FILE__) . '/../lib/util.php'); -require_once realpath(dirname(__FILE__) . '/../lib/helper.php'); -require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath( dirname( __FILE__ ) . '/../3rdparty/Crypt_Blowfish/Blowfish.php' ); +require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/helper.php' ); +require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); use OCA\Encryption; @@ -49,31 +49,18 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase public $subfolder; public $subsubfolder; - function setUp() - { + public static function setUpBeforeClass() { // reset backend \OC_User::clearBackends(); - \OC_User::useBackend('database'); - - $this->dataShort = 'hats'; - $this->view = new \OC_FilesystemView('/'); - - $userHome = \OC_User::getHome('admin'); - $this->dataDir = str_replace('/admin', '', $userHome); - - $this->folder1 = '/folder1'; - $this->subfolder = '/subfolder1'; - $this->subsubfolder = '/subsubfolder1'; - - $this->filename = 'share-tmp.test'; + \OC_User::useBackend( 'database' ); // enable resharing - \OC_Appconfig::setValue('core', 'shareapi_allow_resharing', 'yes'); + \OC_Appconfig::setValue( 'core', 'shareapi_allow_resharing', 'yes' ); // clear share hooks - \OC_Hook::clear('OCP\\Share'); + \OC_Hook::clear( 'OCP\\Share' ); \OC::registerShareHooks(); - \OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup'); + \OCP\Util::connectHook( 'OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup' ); // Sharing related hooks \OCA\Encryption\Helper::registerShareHooks(); @@ -81,170 +68,183 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase // Filesystem related hooks \OCA\Encryption\Helper::registerFilesystemHooks(); - \OC_FileProxy::register(new OCA\Encryption\Proxy()); - - // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); - - // we don't want to tests with app files_trashbin enabled - \OC_App::disable('files_trashbin'); + // clear and register hooks + \OC_FileProxy::clearProxies(); + \OC_FileProxy::register( new OCA\Encryption\Proxy() ); // create users - $this->loginHelper('user1', true); - $this->loginHelper('user2', true); - $this->loginHelper('user3', true); + \Test_Encryption_Share::loginHelper( 'user1', true ); + \Test_Encryption_Share::loginHelper( 'user2', true ); + \Test_Encryption_Share::loginHelper( 'user3', true ); // create group and assign users - \OC_Group::createGroup('group1'); - \OC_Group::addToGroup('user2', 'group1'); - \OC_Group::addToGroup('user3', 'group1'); + \OC_Group::createGroup( 'group1' ); + \OC_Group::addToGroup( 'user2', 'group1' ); + \OC_Group::addToGroup( 'user3', 'group1' ); + } + + function setUp() { + $this->dataShort = 'hats'; + $this->view = new \OC_FilesystemView( '/' ); + + $userHome = \OC_User::getHome( 'admin' ); + $this->dataDir = str_replace( '/admin', '', $userHome ); + + $this->folder1 = '/folder1'; + $this->subfolder = '/subfolder1'; + $this->subsubfolder = '/subsubfolder1'; + + $this->filename = 'share-tmp.test'; + + // we don't want to tests with app files_trashbin enabled + \OC_App::disable( 'files_trashbin' ); + + // remember files_trashbin state + $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); } - function tearDown() - { + function tearDown() { // reset app files_trashbin - if ($this->stateFilesTrashbin) { - OC_App::enable('files_trashbin'); + if ( $this->stateFilesTrashbin ) { + OC_App::enable( 'files_trashbin' ); } else { - OC_App::disable('files_trashbin'); + OC_App::disable( 'files_trashbin' ); } + } + public static function tearDownAfterClass() { // clean group - \OC_Group::deleteGroup('group1'); + \OC_Group::deleteGroup( 'group1' ); // cleanup users - \OC_User::deleteUser('user1'); - \OC_User::deleteUser('user2'); - \OC_User::deleteUser('user3'); - - \OC_FileProxy::clearProxies(); + \OC_User::deleteUser( 'user1' ); + \OC_User::deleteUser( 'user2' ); + \OC_User::deleteUser( 'user3' ); } /** * @param bool $withTeardown */ - function testShareFile($withTeardown = true) - { + function testShareFile( $withTeardown = true ) { // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // save file with content - $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); + $cryptedFile = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); // test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created file - $fileInfo = $this->view->getFileInfo('/admin/files/' . $this->filename); + $fileInfo = $this->view->getFileInfo( '/admin/files/' . $this->filename ); // check if we have a valid file info - $this->assertTrue(is_array($fileInfo)); + $this->assertTrue( is_array( $fileInfo ) ); // check if the unencrypted file size is stored - $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); + $this->assertGreaterThan( 0, $fileInfo['unencrypted_size'] ); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the file - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_ALL); + \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_ALL ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // check if share key for user1 exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey' ) ); // login as user1 - $this->loginHelper('user1'); + $this->loginHelper( 'user1' ); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents('/user1/files/Shared/' . $this->filename); + $retrievedCryptedFile = $this->view->file_get_contents( '/user1/files/Shared/' . $this->filename ); // check if data is the same as we previously written - $this->assertEquals($this->dataShort, $retrievedCryptedFile); + $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); // cleanup - if ($withTeardown) { + if ( $withTeardown ) { // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // unshare the file - \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); + \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1' ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey' ) ); // cleanup - $this->view->unlink('/admin/files/' . $this->filename); + $this->view->unlink( '/admin/files/' . $this->filename ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey' ) ); } } /** * @param bool $withTeardown */ - function testReShareFile($withTeardown = true) - { - $this->testShareFile(false); + function testReShareFile( $withTeardown = true ) { + $this->testShareFile( false ); // login as user1 - $this->loginHelper('user1'); + $this->loginHelper( 'user1' ); // get the file info - $fileInfo = $this->view->getFileInfo('/user1/files/Shared/' . $this->filename); + $fileInfo = $this->view->getFileInfo( '/user1/files/Shared/' . $this->filename ); // share the file with user2 - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2', OCP\PERMISSION_ALL); + \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2', OCP\PERMISSION_ALL ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // check if share key for user2 exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); // login as user2 - $this->loginHelper('user2'); + $this->loginHelper( 'user2' ); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents('/user2/files/Shared/' . $this->filename); + $retrievedCryptedFile = $this->view->file_get_contents( '/user2/files/Shared/' . $this->filename ); // check if data is the same as previously written - $this->assertEquals($this->dataShort, $retrievedCryptedFile); + $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); // cleanup - if ($withTeardown) { + if ( $withTeardown ) { // login as user1 - $this->loginHelper('user1'); + $this->loginHelper( 'user1' ); // unshare the file with user2 - \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2'); + \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2' ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); // unshare the file with user1 - \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); + \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1' ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey' ) ); // cleanup - $this->view->unlink('/admin/files/' . $this->filename); + $this->view->unlink( '/admin/files/' . $this->filename ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey' ) ); } } @@ -252,70 +252,69 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase * @param bool $withTeardown * @return array */ - function testShareFolder($withTeardown = true) - { + function testShareFolder( $withTeardown = true ) { // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // create folder structure - $this->view->mkdir('/admin/files' . $this->folder1); - $this->view->mkdir('/admin/files' . $this->folder1 . $this->subfolder); - $this->view->mkdir('/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder); + $this->view->mkdir( '/admin/files' . $this->folder1 ); + $this->view->mkdir( '/admin/files' . $this->folder1 . $this->subfolder ); + $this->view->mkdir( '/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder ); // save file with content - $cryptedFile = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort); + $cryptedFile = file_put_contents( 'crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort ); // test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created folder - $fileInfo = $this->view->getFileInfo('/admin/files' . $this->folder1); + $fileInfo = $this->view->getFileInfo( '/admin/files' . $this->folder1 ); // check if we have a valid file info - $this->assertTrue(is_array($fileInfo)); + $this->assertTrue( is_array( $fileInfo ) ); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the folder with user1 - \OCP\Share::shareItem('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_ALL); + \OCP\Share::shareItem( 'folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_ALL ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // check if share key for user1 exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey' ) ); // login as user1 - $this->loginHelper('user1'); + $this->loginHelper( 'user1' ); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents('/user1/files/Shared' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + $retrievedCryptedFile = $this->view->file_get_contents( '/user1/files/Shared' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename ); // check if data is the same - $this->assertEquals($this->dataShort, $retrievedCryptedFile); + $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); // cleanup - if ($withTeardown) { + if ( $withTeardown ) { // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // unshare the folder with user1 - \OCP\Share::unshare('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); + \OCP\Share::unshare( 'folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1' ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey' ) ); // cleanup - $this->view->unlink('/admin/files' . $this->folder1); + $this->view->unlink( '/admin/files' . $this->folder1 ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey' ) ); } return $fileInfo; @@ -324,467 +323,462 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase /** * @param bool $withTeardown */ - function testReShareFolder($withTeardown = true) - { - $fileInfoFolder1 = $this->testShareFolder(false); + function testReShareFolder( $withTeardown = true ) { + $fileInfoFolder1 = $this->testShareFolder( false ); // login as user1 - $this->loginHelper('user1'); + $this->loginHelper( 'user1' ); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created folder - $fileInfoSubFolder = $this->view->getFileInfo('/user1/files/Shared' . $this->folder1 . $this->subfolder); + $fileInfoSubFolder = $this->view->getFileInfo( '/user1/files/Shared' . $this->folder1 . $this->subfolder ); // check if we have a valid file info - $this->assertTrue(is_array($fileInfoSubFolder)); + $this->assertTrue( is_array( $fileInfoSubFolder ) ); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the file with user2 - \OCP\Share::shareItem('folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2', OCP\PERMISSION_ALL); + \OCP\Share::shareItem( 'folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2', OCP\PERMISSION_ALL ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // check if share key for user2 exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user2.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user2.shareKey' ) ); // login as user2 - $this->loginHelper('user2'); + $this->loginHelper( 'user2' ); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents('/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + $retrievedCryptedFile = $this->view->file_get_contents( '/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename ); // check if data is the same - $this->assertEquals($this->dataShort, $retrievedCryptedFile); + $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); // get the file info - $fileInfo = $this->view->getFileInfo('/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + $fileInfo = $this->view->getFileInfo( '/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename ); // check if we have fileInfos - $this->assertTrue(is_array($fileInfo)); + $this->assertTrue( is_array( $fileInfo ) ); // share the file with user3 - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user3', OCP\PERMISSION_ALL); + \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user3', OCP\PERMISSION_ALL ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // check if share key for user3 exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user3.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user3.shareKey' ) ); // login as user3 - $this->loginHelper('user3'); + $this->loginHelper( 'user3' ); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents('/user3/files/Shared/' . $this->filename); + $retrievedCryptedFile = $this->view->file_get_contents( '/user3/files/Shared/' . $this->filename ); // check if data is the same - $this->assertEquals($this->dataShort, $retrievedCryptedFile); + $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); // cleanup - if ($withTeardown) { + if ( $withTeardown ) { // login as user2 - $this->loginHelper('user2'); + $this->loginHelper( 'user2' ); // unshare the file with user3 - \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user3'); + \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user3' ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user3.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user3.shareKey' ) ); // login as user1 - $this->loginHelper('user1'); + $this->loginHelper( 'user1' ); // unshare the folder with user2 - \OCP\Share::unshare('folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2'); + \OCP\Share::unshare( 'folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2' ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user2.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user2.shareKey' ) ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // unshare the folder1 with user1 - \OCP\Share::unshare('folder', $fileInfoFolder1['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1'); + \OCP\Share::unshare( 'folder', $fileInfoFolder1['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1' ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey' ) ); // cleanup - $this->view->unlink('/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + $this->view->unlink( '/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey' ) ); } } - function testPublicShareFile() - { + function testPublicShareFile() { // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // save file with content - $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); + $cryptedFile = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); // test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created file - $fileInfo = $this->view->getFileInfo('/admin/files/' . $this->filename); + $fileInfo = $this->view->getFileInfo( '/admin/files/' . $this->filename ); // check if we have a valid file info - $this->assertTrue(is_array($fileInfo)); + $this->assertTrue( is_array( $fileInfo ) ); // check if the unencrypted file size is stored - $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); + $this->assertGreaterThan( 0, $fileInfo['unencrypted_size'] ); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the file - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, false, OCP\PERMISSION_ALL); + \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, false, OCP\PERMISSION_ALL ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); - $publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); + $publicShareKeyId = \OC_Appconfig::getValue( 'files_encryption', 'publicShareKeyId' ); // check if share key for public exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $publicShareKeyId . '.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $publicShareKeyId . '.shareKey' ) ); // some hacking to simulate public link $GLOBALS['app'] = 'files_sharing'; $GLOBALS['fileOwner'] = 'admin'; - \OC_User::setUserId(''); + \OC_User::setUserId( '' ); // get file contents - $retrievedCryptedFile = file_get_contents('crypt://' . $this->filename); + $retrievedCryptedFile = file_get_contents( 'crypt://' . $this->filename ); // check if data is the same as we previously written - $this->assertEquals($this->dataShort, $retrievedCryptedFile); + $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); // tear down // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // unshare the file - \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null); + \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $publicShareKeyId . '.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $publicShareKeyId . '.shareKey' ) ); // cleanup - $this->view->unlink('/admin/files/' . $this->filename); + $this->view->unlink( '/admin/files/' . $this->filename ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey' ) ); } - function testShareFileWithGroup() - { + function testShareFileWithGroup() { // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // save file with content - $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); + $cryptedFile = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); // test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created file - $fileInfo = $this->view->getFileInfo('/admin/files/' . $this->filename); + $fileInfo = $this->view->getFileInfo( '/admin/files/' . $this->filename ); // check if we have a valid file info - $this->assertTrue(is_array($fileInfo)); + $this->assertTrue( is_array( $fileInfo ) ); // check if the unencrypted file size is stored - $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); + $this->assertGreaterThan( 0, $fileInfo['unencrypted_size'] ); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the file - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1', OCP\PERMISSION_ALL); + \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1', OCP\PERMISSION_ALL ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // check if share key for user2 and user3 exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user3.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user3.shareKey' ) ); // login as user1 - $this->loginHelper('user2'); + $this->loginHelper( 'user2' ); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents('/user2/files/Shared/' . $this->filename); + $retrievedCryptedFile = $this->view->file_get_contents( '/user2/files/Shared/' . $this->filename ); // check if data is the same as we previously written - $this->assertEquals($this->dataShort, $retrievedCryptedFile); + $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // unshare the file - \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1'); + \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1' ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user3.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user3.shareKey' ) ); // cleanup - $this->view->unlink('/admin/files/' . $this->filename); + $this->view->unlink( '/admin/files/' . $this->filename ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey' ) ); } - function testRecoveryFile() - { - \OCA\Encryption\Helper::adminEnableRecovery(null, 'test123'); - $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); + function testRecoveryFile() { + // login as admin + $this->loginHelper( 'admin' ); + + \OCA\Encryption\Helper::adminEnableRecovery( null, 'test123' ); + $recoveryKeyId = OC_Appconfig::getValue( 'files_encryption', 'recoveryKeyId' ); // check if control file created - $this->assertTrue($this->view->file_exists('/control-file/controlfile.enc')); + $this->assertTrue( $this->view->file_exists( '/control-file/controlfile.enc' ) ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); - $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), 'admin'); + $util = new \OCA\Encryption\Util( new \OC_FilesystemView( '/' ), 'admin' ); // check if recovery password match - $this->assertTrue($util->checkRecoveryPassword('test123')); + $this->assertTrue( $util->checkRecoveryPassword( 'test123' ) ); // enable recovery for admin - $this->assertTrue($util->setRecoveryForUser(1)); + $this->assertTrue( $util->setRecoveryForUser( 1 ) ); // create folder structure - $this->view->mkdir('/admin/files' . $this->folder1); - $this->view->mkdir('/admin/files' . $this->folder1 . $this->subfolder); - $this->view->mkdir('/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder); + $this->view->mkdir( '/admin/files' . $this->folder1 ); + $this->view->mkdir( '/admin/files' . $this->folder1 . $this->subfolder ); + $this->view->mkdir( '/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder ); // save file with content - $cryptedFile1 = file_put_contents('crypt://' . $this->filename, $this->dataShort); - $cryptedFile2 = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort); + $cryptedFile1 = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); + $cryptedFile2 = file_put_contents( 'crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort ); // test that data was successfully written - $this->assertTrue(is_int($cryptedFile1)); - $this->assertTrue(is_int($cryptedFile2)); + $this->assertTrue( is_int( $cryptedFile1 ) ); + $this->assertTrue( is_int( $cryptedFile2 ) ); // check if share key for admin and recovery exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey')); - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey')); - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey' ) ); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey' ) ); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); // disable recovery for admin - $this->assertTrue($util->setRecoveryForUser(0)); + $this->assertTrue( $util->setRecoveryForUser( 0 ) ); // remove all recovery keys - $util->removeRecoveryKeys('/'); + $util->removeRecoveryKeys( '/' ); // check if share key for recovery not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); // enable recovery for admin - $this->assertTrue($util->setRecoveryForUser(1)); + $this->assertTrue( $util->setRecoveryForUser( 1 ) ); // remove all recovery keys - $util->addRecoveryKeys('/'); + $util->addRecoveryKeys( '/' ); // check if share key for admin and recovery exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); // cleanup - $this->view->unlink('/admin/files/' . $this->filename); - $this->view->unlink('/admin/files/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + $this->view->unlink( '/admin/files/' . $this->filename ); + $this->view->unlink( '/admin/files/' . $this->folder1 ); // check if share key for recovery not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); - $this->assertTrue(\OCA\Encryption\Helper::adminEnableRecovery(null, 'test123')); - $this->assertTrue(\OCA\Encryption\Helper::adminDisableRecovery('test123')); - $this->assertEquals(0, \OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled')); + $this->assertTrue( \OCA\Encryption\Helper::adminEnableRecovery( null, 'test123' ) ); + $this->assertTrue( \OCA\Encryption\Helper::adminDisableRecovery( 'test123' ) ); + $this->assertEquals( 0, \OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ) ); } - function testRecoveryForUser() - { + function testRecoveryForUser() { // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); - \OCA\Encryption\Helper::adminEnableRecovery(null, 'test123'); - $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); + \OCA\Encryption\Helper::adminEnableRecovery( null, 'test123' ); + $recoveryKeyId = OC_Appconfig::getValue( 'files_encryption', 'recoveryKeyId' ); // check if control file created - $this->assertTrue($this->view->file_exists('/control-file/controlfile.enc')); + $this->assertTrue( $this->view->file_exists( '/control-file/controlfile.enc' ) ); // login as user1 - $this->loginHelper('user1'); + $this->loginHelper( 'user1' ); - $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), 'user1'); + $util = new \OCA\Encryption\Util( new \OC_FilesystemView( '/' ), 'user1' ); // enable recovery for admin - $this->assertTrue($util->setRecoveryForUser(1)); + $this->assertTrue( $util->setRecoveryForUser( 1 ) ); // create folder structure - $this->view->mkdir('/user1/files' . $this->folder1); - $this->view->mkdir('/user1/files' . $this->folder1 . $this->subfolder); - $this->view->mkdir('/user1/files' . $this->folder1 . $this->subfolder . $this->subsubfolder); + $this->view->mkdir( '/user1/files' . $this->folder1 ); + $this->view->mkdir( '/user1/files' . $this->folder1 . $this->subfolder ); + $this->view->mkdir( '/user1/files' . $this->folder1 . $this->subfolder . $this->subsubfolder ); // save file with content - $cryptedFile1 = file_put_contents('crypt://' . $this->filename, $this->dataShort); - $cryptedFile2 = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort); + $cryptedFile1 = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); + $cryptedFile2 = file_put_contents( 'crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort ); // test that data was successfully written - $this->assertTrue(is_int($cryptedFile1)); - $this->assertTrue(is_int($cryptedFile2)); + $this->assertTrue( is_int( $cryptedFile1 ) ); + $this->assertTrue( is_int( $cryptedFile2 ) ); // check if share key for user and recovery exists - $this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); - $this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); - $this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); - $this->assertTrue($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertTrue( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->filename . '.user1.shareKey' ) ); + $this->assertTrue( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertTrue( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey' ) ); + $this->assertTrue( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // change password - \OC_User::setPassword('user1', 'test', 'test123'); + \OC_User::setPassword( 'user1', 'test', 'test123' ); // login as user1 - $this->loginHelper('user1', false, 'test'); + $this->loginHelper( 'user1', false, 'test' ); // get file contents - $retrievedCryptedFile1 = file_get_contents('crypt://' . $this->filename); - $retrievedCryptedFile2 = file_get_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); + $retrievedCryptedFile1 = file_get_contents( 'crypt://' . $this->filename ); + $retrievedCryptedFile2 = file_get_contents( 'crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename ); // check if data is the same as we previously written - $this->assertEquals($this->dataShort, $retrievedCryptedFile1); - $this->assertEquals($this->dataShort, $retrievedCryptedFile2); + $this->assertEquals( $this->dataShort, $retrievedCryptedFile1 ); + $this->assertEquals( $this->dataShort, $retrievedCryptedFile2 ); // cleanup - $this->view->unlink('/user1/files' . $this->folder1); - $this->view->unlink('/user1/files' . $this->filename); + $this->view->unlink( '/user1/files' . $this->folder1 ); + $this->view->unlink( '/user1/files' . $this->filename ); // check if share key for user and recovery exists - $this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.user1.shareKey')); - $this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); - $this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey')); - $this->assertFalse($this->view->file_exists('/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertFalse( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->filename . '.user1.shareKey' ) ); + $this->assertFalse( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertFalse( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey' ) ); + $this->assertFalse( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); // enable recovery for admin - $this->assertTrue($util->setRecoveryForUser(0)); + $this->assertTrue( $util->setRecoveryForUser( 0 ) ); - \OCA\Encryption\Helper::adminDisableRecovery('test123'); - $this->assertEquals(0, \OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled')); + \OCA\Encryption\Helper::adminDisableRecovery( 'test123' ); + $this->assertEquals( 0, \OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ) ); } - function testFailShareFile() - { + function testFailShareFile() { // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // save file with content - $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); + $cryptedFile = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); // test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created file - $fileInfo = $this->view->getFileInfo('/admin/files/' . $this->filename); + $fileInfo = $this->view->getFileInfo( '/admin/files/' . $this->filename ); // check if we have a valid file info - $this->assertTrue(is_array($fileInfo)); + $this->assertTrue( is_array( $fileInfo ) ); // check if the unencrypted file size is stored - $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); + $this->assertGreaterThan( 0, $fileInfo['unencrypted_size'] ); // break users public key - $this->view->rename('/public-keys/user2.public.key', '/public-keys/user2.public.key_backup'); + $this->view->rename( '/public-keys/user2.public.key', '/public-keys/user2.public.key_backup' ); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the file - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1', OCP\PERMISSION_ALL); + \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1', OCP\PERMISSION_ALL ); // login as admin - $this->loginHelper('admin'); + $this->loginHelper( 'admin' ); // check if share key for user1 not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // break user1 public key - $this->view->rename('/public-keys/user2.public.key_backup', '/public-keys/user2.public.key'); + $this->view->rename( '/public-keys/user2.public.key_backup', '/public-keys/user2.public.key' ); // remove share file - $this->view->unlink('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey'); + $this->view->unlink( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // unshare the file with user1 - \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1'); + \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1' ); // check if share key not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); // cleanup - $this->view->unlink('/admin/files/' . $this->filename); + $this->view->unlink( '/admin/files/' . $this->filename ); } - /** * @param $user * @param bool $create * @param bool $password */ - function loginHelper($user, $create = false, $password = false) - { - if ($create) { - \OC_User::createUser($user, $user); + public static function loginHelper( $user, $create = false, $password = false ) { + if ( $create ) { + \OC_User::createUser( $user, $user ); } - if ($password === false) { + if ( $password === false ) { $password = $user; } \OC_Util::tearDownFS(); - \OC_User::setUserId(''); + \OC_User::setUserId( '' ); \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS($user); - \OC_User::setUserId($user); + \OC_Util::setupFS( $user ); + \OC_User::setUserId( $user ); $params['uid'] = $user; $params['password'] = $password; - OCA\Encryption\Hooks::login($params); + OCA\Encryption\Hooks::login( $params ); } } diff --git a/apps/files_encryption/tests/stream.php b/apps/files_encryption/tests/stream.php index 3765d986e12..59b310c7ac8 100644 --- a/apps/files_encryption/tests/stream.php +++ b/apps/files_encryption/tests/stream.php @@ -20,13 +20,13 @@ * */ -require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); -require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); -require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); -require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); -require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); -require_once realpath(dirname(__FILE__) . '/../lib/util.php'); -require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); +require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); use OCA\Encryption; @@ -46,137 +46,141 @@ class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase public $dataShort; public $stateFilesTrashbin; - function setUp() - { + public static function setUpBeforeClass() { // reset backend - \OC_User::useBackend('database'); + \OC_User::clearBackends(); + \OC_User::useBackend( 'database' ); + // Filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); + + // clear and register hooks + \OC_FileProxy::clearProxies(); + \OC_FileProxy::register( new OCA\Encryption\Proxy() ); + + // setup filesystem + \OC_Util::tearDownFS(); + \OC_User::setUserId( '' ); + \OC\Files\Filesystem::tearDown(); + \OC_Util::setupFS( 'admin' ); + \OC_User::setUserId( 'admin' ); + + // login admin + $params['uid'] = 'admin'; + $params['password'] = 'admin'; + OCA\Encryption\Hooks::login( $params ); + + } + + function setUp() { // set user id - \OC_User::setUserId('admin'); + \OC_User::setUserId( 'admin' ); $this->userId = 'admin'; $this->pass = 'admin'; // init filesystem view - $this->view = new \OC_FilesystemView('/'); + $this->view = new \OC_FilesystemView( '/' ); // init short data $this->dataShort = 'hats'; - // init filesystem related hooks - \OCA\Encryption\Helper::registerFilesystemHooks(); - - // register encryption file proxy - \OC_FileProxy::register(new OCA\Encryption\Proxy()); - // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); + $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); // we don't want to tests with app files_trashbin enabled - \OC_App::disable('files_trashbin'); - - // init filesystem for user - \OC_Util::tearDownFS(); - \OC_User::setUserId(''); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS($this->userId); - \OC_User::setUserId($this->userId); - - // login user - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - OCA\Encryption\Hooks::login($params); + \OC_App::disable( 'files_trashbin' ); } - function tearDown() - { + function tearDown() { // reset app files_trashbin - if ($this->stateFilesTrashbin) { - OC_App::enable('files_trashbin'); + if ( $this->stateFilesTrashbin ) { + OC_App::enable( 'files_trashbin' ); } else { - OC_App::disable('files_trashbin'); + OC_App::disable( 'files_trashbin' ); } + } + + public static function tearDownAfterClass() { - // clear all proxies - \OC_FileProxy::clearProxies(); } function testStreamOptions() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents($filename, $this->dataShort); + $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); - $handle = $view->fopen($filename, 'r'); + $handle = $view->fopen( $filename, 'r' ); // check if stream is at position zero - $this->assertEquals(0,ftell($handle)); + $this->assertEquals( 0, ftell( $handle ) ); // set stream options - $this->assertTrue(flock($handle, LOCK_SH)); - $this->assertTrue(flock($handle, LOCK_UN)); + $this->assertTrue( flock( $handle, LOCK_SH ) ); + $this->assertTrue( flock( $handle, LOCK_UN ) ); // tear down - $view->unlink($filename); + $view->unlink( $filename ); } function testStreamSetBlocking() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents($filename, $this->dataShort); + $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); - $handle = $view->fopen($filename, 'r'); + $handle = $view->fopen( $filename, 'r' ); // set stream options - $this->assertTrue(stream_set_blocking($handle,1)); + $this->assertTrue( stream_set_blocking( $handle, 1 ) ); // tear down - $view->unlink($filename); + $view->unlink( $filename ); } function testStreamSetTimeout() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents($filename, $this->dataShort); + $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); - $handle = $view->fopen($filename, 'r'); + $handle = $view->fopen( $filename, 'r' ); // set stream options - $this->assertFalse(stream_set_timeout($handle,1)); + $this->assertFalse( stream_set_timeout( $handle, 1 ) ); // tear down - $view->unlink($filename); + $view->unlink( $filename ); } function testStreamSetWriteBuffer() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view = new \OC\Files\View( '/' . $this->userId . '/files' ); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents($filename, $this->dataShort); + $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); // Test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); - $handle = $view->fopen($filename, 'r'); + $handle = $view->fopen( $filename, 'r' ); // set stream options - $this->assertEquals(0, stream_set_write_buffer($handle,1024)); + $this->assertEquals( 0, stream_set_write_buffer( $handle, 1024 ) ); // tear down - $view->unlink($filename); + $view->unlink( $filename ); } } \ No newline at end of file diff --git a/apps/files_encryption/tests/trashbin.php b/apps/files_encryption/tests/trashbin.php index cc8709b6f24..1d7cdc60b21 100755 --- a/apps/files_encryption/tests/trashbin.php +++ b/apps/files_encryption/tests/trashbin.php @@ -20,14 +20,14 @@ * */ -require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); -require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); -require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); -require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); -require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); -require_once realpath(dirname(__FILE__) . '/../lib/util.php'); -require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); -require_once realpath(dirname(__FILE__) . '/../../files_trashbin/appinfo/app.php'); +require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); +require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); +require_once realpath( dirname( __FILE__ ) . '/../../files_trashbin/appinfo/app.php' ); use OCA\Encryption; @@ -50,18 +50,45 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase public $subfolder; public $subsubfolder; - function setUp() - { + public static function setUpBeforeClass() { // reset backend - \OC_User::useBackend('database'); + \OC_User::clearBackends(); + \OC_User::useBackend( 'database' ); + \OC_Hook::clear( 'OC_Filesystem' ); + \OC_Hook::clear( 'OC_User' ); + + // trashbin hooks + \OCA\Files_Trashbin\Trashbin::registerHooks(); + + // Filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); + + // clear and register hooks + \OC_FileProxy::clearProxies(); + \OC_FileProxy::register( new OCA\Encryption\Proxy() ); + + // setup filesystem + \OC_Util::tearDownFS(); + \OC_User::setUserId( '' ); + \OC\Files\Filesystem::tearDown(); + \OC_Util::setupFS( 'admin' ); + \OC_User::setUserId( 'admin' ); + + // login admin + $params['uid'] = 'admin'; + $params['password'] = 'admin'; + OCA\Encryption\Hooks::login( $params ); + } + + function setUp() { // set user id - \OC_User::setUserId('admin'); + \OC_User::setUserId( 'admin' ); $this->userId = 'admin'; $this->pass = 'admin'; // init filesystem view - $this->view = new \OC_FilesystemView('/'); + $this->view = new \OC_FilesystemView( '/' ); // init short data $this->dataShort = 'hats'; @@ -70,48 +97,24 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase $this->subfolder = '/subfolder1'; $this->subsubfolder = '/subsubfolder1'; - \OC_Hook::clear('OC_Filesystem'); - \OC_Hook::clear('OC_User'); - - // init filesystem related hooks - \OCA\Encryption\Helper::registerFilesystemHooks(); - - // register encryption file proxy - \OC_FileProxy::register(new OCA\Encryption\Proxy()); - - // trashbin hooks - \OCA\Files_Trashbin\Trashbin::registerHooks(); - // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); - - // we don't want to tests with app files_trashbin enabled - \OC_App::enable('files_trashbin'); + $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); - // init filesystem for user - \OC_Util::tearDownFS(); - \OC_User::setUserId(''); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS($this->userId); - \OC_User::setUserId($this->userId); - - // login user - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - OCA\Encryption\Hooks::login($params); + // we want to tests with app files_trashbin enabled + \OC_App::enable( 'files_trashbin' ); } - function tearDown() - { + function tearDown() { // reset app files_trashbin - if ($this->stateFilesTrashbin) { - OC_App::enable('files_trashbin'); + if ( $this->stateFilesTrashbin ) { + OC_App::enable( 'files_trashbin' ); } else { - OC_App::disable('files_trashbin'); + OC_App::disable( 'files_trashbin' ); } + } + + public static function tearDownAfterClass() { - // clear all proxies - \OC_FileProxy::clearProxies(); } /** @@ -123,49 +126,49 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase $filename = 'tmp-' . time() . '.txt'; // save file with content - $cryptedFile = file_put_contents('crypt:///' . $filename, $this->dataShort); + $cryptedFile = file_put_contents( 'crypt:///' . $filename, $this->dataShort ); // test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // check if key for admin exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/keyfiles/' . $filename . '.key')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $filename . '.key' ) ); // check if share key for admin exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey' ) ); // delete file - \OC\FIles\Filesystem::unlink($filename); + \OC\FIles\Filesystem::unlink( $filename ); // check if file not exists - $this->assertFalse($this->view->file_exists('/admin/files/' . $filename)); + $this->assertFalse( $this->view->file_exists( '/admin/files/' . $filename ) ); // check if key for admin not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/keyfiles/' . $filename . '.key')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $filename . '.key' ) ); // check if share key for admin not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey' ) ); // get files - $trashFiles = $this->view->getDirectoryContent('/admin/files_trashbin/files/'); + $trashFiles = $this->view->getDirectoryContent( '/admin/files_trashbin/files/' ); $trashFileSuffix = null; // find created file with timestamp - foreach($trashFiles as $file) { - if(strncmp($file['path'], $filename, strlen($filename))) { - $path_parts = pathinfo($file['name']); + foreach ( $trashFiles as $file ) { + if ( strncmp( $file['path'], $filename, strlen( $filename ) ) ) { + $path_parts = pathinfo( $file['name'] ); $trashFileSuffix = $path_parts['extension']; } } // check if we found the file we created - $this->assertNotNull($trashFileSuffix); + $this->assertNotNull( $trashFileSuffix ); // check if key for admin not exists - $this->assertTrue($this->view->file_exists('/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix)); + $this->assertTrue( $this->view->file_exists( '/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix ) ); // check if share key for admin not exists - $this->assertTrue($this->view->file_exists('/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix)); + $this->assertTrue( $this->view->file_exists( '/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix ) ); // return filename for next test return $filename . '.' . $trashFileSuffix; @@ -176,25 +179,25 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase * * @depends testDeleteFile */ - function testRestoreFile($filename) { + function testRestoreFile( $filename ) { // prepare file information - $path_parts = pathinfo($filename); + $path_parts = pathinfo( $filename ); $trashFileSuffix = $path_parts['extension']; - $timestamp = str_replace('d', '', $trashFileSuffix); - $fileNameWithoutSuffix = str_replace('.'.$trashFileSuffix, '', $filename); + $timestamp = str_replace( 'd', '', $trashFileSuffix ); + $fileNameWithoutSuffix = str_replace( '.' . $trashFileSuffix, '', $filename ); // restore file - $this->assertTrue(\OCA\Files_Trashbin\Trashbin::restore($filename, $fileNameWithoutSuffix, $timestamp)); + $this->assertTrue( \OCA\Files_Trashbin\Trashbin::restore( $filename, $fileNameWithoutSuffix, $timestamp ) ); // check if file exists - $this->assertTrue($this->view->file_exists('/admin/files/' . $fileNameWithoutSuffix)); + $this->assertTrue( $this->view->file_exists( '/admin/files/' . $fileNameWithoutSuffix ) ); // check if key for admin exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/keyfiles/' . $fileNameWithoutSuffix . '.key')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $fileNameWithoutSuffix . '.key' ) ); // check if share key for admin exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $fileNameWithoutSuffix . '.admin.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $fileNameWithoutSuffix . '.admin.shareKey' ) ); } /** @@ -206,65 +209,59 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase $filename = 'tmp-' . time() . '.txt'; // save file with content - $cryptedFile = file_put_contents('crypt:///' . $filename, $this->dataShort); + $cryptedFile = file_put_contents( 'crypt:///' . $filename, $this->dataShort ); // test that data was successfully written - $this->assertTrue(is_int($cryptedFile)); + $this->assertTrue( is_int( $cryptedFile ) ); // check if key for admin exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/keyfiles/' . $filename . '.key')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $filename . '.key' ) ); // check if share key for admin exists - $this->assertTrue($this->view->file_exists('/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey')); + $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey' ) ); // delete file - \OC\FIles\Filesystem::unlink($filename); + \OC\FIles\Filesystem::unlink( $filename ); // check if file not exists - $this->assertFalse($this->view->file_exists('/admin/files/' . $filename)); + $this->assertFalse( $this->view->file_exists( '/admin/files/' . $filename ) ); // check if key for admin not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/keyfiles/' . $filename . '.key')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $filename . '.key' ) ); // check if share key for admin not exists - $this->assertFalse($this->view->file_exists('/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey')); + $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey' ) ); - // get files - $trashFiles = $this->view->getDirectoryContent('/admin/files_trashbin/files/'); - - $trashFileSuffix = null; // find created file with timestamp - foreach($trashFiles as $file) { - if(strncmp($file['name'], $filename, strlen($filename)) == 0) { - $path_parts = pathinfo($file['name']); - $trashFileSuffix = $path_parts['extension']; - break; - } - } + $query = \OC_DB::prepare( 'SELECT `timestamp`,`type` FROM `*PREFIX*files_trash`' + . ' WHERE `id`=?' ); + $result = $query->execute( array( $filename ) )->fetchRow(); - // check if we found the file we created - $this->assertNotNull($trashFileSuffix); + $this->assertTrue( is_array( $result ) ); + + // build suffix + $trashFileSuffix = 'd' . $result['timestamp']; // check if key for admin exists - $this->assertTrue($this->view->file_exists('/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix)); + $this->assertTrue( $this->view->file_exists( '/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix ) ); // check if share key for admin exists - $this->assertTrue($this->view->file_exists('/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix)); + $this->assertTrue( $this->view->file_exists( '/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix ) ); // get timestamp from file - $timestamp = str_replace('d', '', $trashFileSuffix); + $timestamp = str_replace( 'd', '', $trashFileSuffix ); // delete file forever - $this->assertGreaterThan(0, \OCA\Files_Trashbin\Trashbin::delete($filename, $timestamp)); + $this->assertGreaterThan( 0, \OCA\Files_Trashbin\Trashbin::delete( $filename, $timestamp ) ); // check if key for admin not exists - $this->assertFalse($this->view->file_exists('/admin/files_trashbin/files/' . $filename . '.' . $trashFileSuffix)); + $this->assertFalse( $this->view->file_exists( '/admin/files_trashbin/files/' . $filename . '.' . $trashFileSuffix ) ); // check if key for admin not exists - $this->assertFalse($this->view->file_exists('/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix)); + $this->assertFalse( $this->view->file_exists( '/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix ) ); // check if share key for admin not exists - $this->assertFalse($this->view->file_exists('/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix)); + $this->assertFalse( $this->view->file_exists( '/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix ) ); } } \ No newline at end of file diff --git a/apps/files_encryption/tests/util.php b/apps/files_encryption/tests/util.php index a2be8a40417..af78894da2b 100755 --- a/apps/files_encryption/tests/util.php +++ b/apps/files_encryption/tests/util.php @@ -6,13 +6,13 @@ * See the COPYING-README file. */ -require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); -require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); -require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); -require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); -require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); -require_once realpath(dirname(__FILE__) . '/../lib/util.php'); -require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); +require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); use OCA\Encryption; @@ -42,22 +42,21 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase public $legacyEncryptedDataKey; public $lagacyKey; - function setUp() - { + function setUp() { // reset backend - \OC_User::useBackend('database'); + \OC_User::useBackend( 'database' ); - \OC_User::setUserId('admin'); + \OC_User::setUserId( 'admin' ); $this->userId = 'admin'; $this->pass = 'admin'; // set content for encrypting / decrypting in tests - $this->dataUrl = realpath(dirname(__FILE__) . '/../lib/crypt.php'); + $this->dataUrl = realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); $this->dataShort = 'hats'; - $this->dataLong = file_get_contents(realpath(dirname(__FILE__) . '/../lib/crypt.php')); - $this->legacyData = realpath(dirname(__FILE__) . '/legacy-text.txt'); - $this->legacyEncryptedData = realpath(dirname(__FILE__) . '/legacy-encrypted-text.txt'); - $this->legacyEncryptedDataKey = realpath(dirname(__FILE__) . '/encryption.key'); + $this->dataLong = file_get_contents( realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ) ); + $this->legacyData = realpath( dirname( __FILE__ ) . '/legacy-text.txt' ); + $this->legacyEncryptedData = realpath( dirname( __FILE__ ) . '/legacy-encrypted-text.txt' ); + $this->legacyEncryptedDataKey = realpath( dirname( __FILE__ ) . '/encryption.key' ); $this->lagacyKey = '62829813025828180801'; $keypair = Encryption\Crypt::createKeypair(); @@ -71,132 +70,128 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase $this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key $this->privateKeyPath = $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key - $this->view = new \OC_FilesystemView('/'); + $this->view = new \OC_FilesystemView( '/' ); - $userHome = \OC_User::getHome($this->userId); - $this->dataDir = str_replace('/' . $this->userId, '', $userHome); + $userHome = \OC_User::getHome( $this->userId ); + $this->dataDir = str_replace( '/' . $this->userId, '', $userHome ); // Filesystem related hooks \OCA\Encryption\Helper::registerFilesystemHooks(); - \OC_FileProxy::register(new OCA\Encryption\Proxy()); + // clear and register hooks + \OC_FileProxy::clearProxies(); + \OC_FileProxy::register( new OCA\Encryption\Proxy() ); + // setup filesystem \OC_Util::tearDownFS(); - \OC_User::setUserId(''); + \OC_User::setUserId( '' ); \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS($this->userId); - \OC_User::setUserId($this->userId); + \OC_Util::setupFS( $this->userId ); + \OC_User::setUserId( $this->userId ); + // login admin $params['uid'] = $this->userId; $params['password'] = $this->pass; - OCA\Encryption\Hooks::login($params); + OCA\Encryption\Hooks::login( $params ); - $this->util = new Encryption\Util($this->view, $this->userId); + $this->util = new Encryption\Util( $this->view, $this->userId ); } - function tearDown() - { - + function tearDown() { + // clear and register hooks \OC_FileProxy::clearProxies(); } /** * @brief test that paths set during User construction are correct */ - function testKeyPaths() - { - $util = new Encryption\Util($this->view, $this->userId); + function testKeyPaths() { + $util = new Encryption\Util( $this->view, $this->userId ); - $this->assertEquals($this->publicKeyDir, $util->getPath('publicKeyDir')); - $this->assertEquals($this->encryptionDir, $util->getPath('encryptionDir')); - $this->assertEquals($this->keyfilesPath, $util->getPath('keyfilesPath')); - $this->assertEquals($this->publicKeyPath, $util->getPath('publicKeyPath')); - $this->assertEquals($this->privateKeyPath, $util->getPath('privateKeyPath')); + $this->assertEquals( $this->publicKeyDir, $util->getPath( 'publicKeyDir' ) ); + $this->assertEquals( $this->encryptionDir, $util->getPath( 'encryptionDir' ) ); + $this->assertEquals( $this->keyfilesPath, $util->getPath( 'keyfilesPath' ) ); + $this->assertEquals( $this->publicKeyPath, $util->getPath( 'publicKeyPath' ) ); + $this->assertEquals( $this->privateKeyPath, $util->getPath( 'privateKeyPath' ) ); } /** * @brief test setup of encryption directories */ - function testSetupServerSide() - { - $this->assertEquals(true, $this->util->setupServerSide($this->pass)); + function testSetupServerSide() { + $this->assertEquals( true, $this->util->setupServerSide( $this->pass ) ); } /** * @brief test checking whether account is ready for encryption, */ - function testUserIsReady() - { - $this->assertEquals(true, $this->util->ready()); + function testUserIsReady() { + $this->assertEquals( true, $this->util->ready() ); } /** * @brief test checking whether account is not ready for encryption, */ - function testUserIsNotReady() - { - $this->view->unlink($this->publicKeyDir); + function testUserIsNotReady() { + $this->view->unlink( $this->publicKeyDir ); $params['uid'] = $this->userId; $params['password'] = $this->pass; - $this->assertFalse(OCA\Encryption\Hooks::login($params)); + $this->assertFalse( OCA\Encryption\Hooks::login( $params ) ); - $this->view->unlink($this->privateKeyPath); + $this->view->unlink( $this->privateKeyPath ); } /** * @brief test checking whether account is not ready for encryption, */ - function testIsLagacyUser() - { + function testIsLagacyUser() { $userView = new \OC_FilesystemView( '/' . $this->userId ); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $encryptionKeyContent = file_get_contents($this->legacyEncryptedDataKey); - $userView->file_put_contents('/encryption.key', $encryptionKeyContent); + $encryptionKeyContent = file_get_contents( $this->legacyEncryptedDataKey ); + $userView->file_put_contents( '/encryption.key', $encryptionKeyContent ); \OC_FileProxy::$enabled = $proxyStatus; $params['uid'] = $this->userId; $params['password'] = $this->pass; - $util = new Encryption\Util($this->view, $this->userId); - $util->setMigrationStatus(0); + $util = new Encryption\Util( $this->view, $this->userId ); + $util->setMigrationStatus( 0 ); - $this->assertTrue(OCA\Encryption\Hooks::login($params)); + $this->assertTrue( OCA\Encryption\Hooks::login( $params ) ); - $this->assertEquals($this->lagacyKey, $_SESSION['legacyKey']); + $this->assertEquals( $this->lagacyKey, $_SESSION['legacyKey'] ); } - function testRecoveryEnabledForUser() - { + function testRecoveryEnabledForUser() { - $util = new Encryption\Util($this->view, $this->userId); + $util = new Encryption\Util( $this->view, $this->userId ); // Record the value so we can return it to it's original state later $enabled = $util->recoveryEnabledForUser(); - $this->assertTrue($util->setRecoveryForUser(1)); + $this->assertTrue( $util->setRecoveryForUser( 1 ) ); - $this->assertEquals(1, $util->recoveryEnabledForUser()); + $this->assertEquals( 1, $util->recoveryEnabledForUser() ); - $this->assertTrue($util->setRecoveryForUser(0)); + $this->assertTrue( $util->setRecoveryForUser( 0 ) ); - $this->assertEquals(0, $util->recoveryEnabledForUser()); + $this->assertEquals( 0, $util->recoveryEnabledForUser() ); // Return the setting to it's previous state - $this->assertTrue($util->setRecoveryForUser($enabled)); + $this->assertTrue( $util->setRecoveryForUser( $enabled ) ); } - function testGetUidAndFilename() - { + function testGetUidAndFilename() { - \OC_User::setUserId('admin'); + \OC_User::setUserId( 'admin' ); $filename = 'tmp-' . time() . '.test'; @@ -204,74 +199,80 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $this->view->file_put_contents($this->userId . '/files/' . $filename, $this->dataShort); + $this->view->file_put_contents( $this->userId . '/files/' . $filename, $this->dataShort ); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; - $util = new Encryption\Util($this->view, $this->userId); + $util = new Encryption\Util( $this->view, $this->userId ); - list($fileOwnerUid, $file) = $util->getUidAndFilename($filename); + list( $fileOwnerUid, $file ) = $util->getUidAndFilename( $filename ); - $this->assertEquals('admin', $fileOwnerUid); + $this->assertEquals( 'admin', $fileOwnerUid ); - $this->assertEquals($file, $filename); + $this->assertEquals( $file, $filename ); + + $this->view->unlink( $this->userId . '/files/' . $filename ); } function testIsSharedPath() { $sharedPath = '/user1/files/Shared/test'; $path = '/user1/files/test'; - $this->assertTrue($this->util->isSharedPath($sharedPath)); + $this->assertTrue( $this->util->isSharedPath( $sharedPath ) ); - $this->assertFalse($this->util->isSharedPath($path)); + $this->assertFalse( $this->util->isSharedPath( $path ) ); } - function testEncryptLagacyFiles() - { - $userView = new \OC_FilesystemView( '/' . $this->userId); + function testEncryptLagacyFiles() { + // login admin + $params['uid'] = $this->userId; + $params['password'] = $this->pass; + OCA\Encryption\Hooks::login( $params ); + + $userView = new \OC_FilesystemView( '/' . $this->userId ); $view = new \OC_FilesystemView( '/' . $this->userId . '/files' ); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $encryptionKeyContent = file_get_contents($this->legacyEncryptedDataKey); - $userView->file_put_contents('/encryption.key', $encryptionKeyContent); + $encryptionKeyContent = file_get_contents( $this->legacyEncryptedDataKey ); + $userView->file_put_contents( '/encryption.key', $encryptionKeyContent ); - $legacyEncryptedData = file_get_contents($this->legacyEncryptedData); - $view->mkdir('/test/'); - $view->mkdir('/test/subtest/'); - $view->file_put_contents('/test/subtest/legacy-encrypted-text.txt', $legacyEncryptedData); + $legacyEncryptedData = file_get_contents( $this->legacyEncryptedData ); + $view->mkdir( '/test/' ); + $view->mkdir( '/test/subtest/' ); + $view->file_put_contents( '/test/subtest/legacy-encrypted-text.txt', $legacyEncryptedData ); - $fileInfo = $view->getFileInfo('/test/subtest/legacy-encrypted-text.txt'); + $fileInfo = $view->getFileInfo( '/test/subtest/legacy-encrypted-text.txt' ); $fileInfo['encrypted'] = true; - $view->putFileInfo('/test/subtest/legacy-encrypted-text.txt', $fileInfo); + $view->putFileInfo( '/test/subtest/legacy-encrypted-text.txt', $fileInfo ); \OC_FileProxy::$enabled = $proxyStatus; $params['uid'] = $this->userId; $params['password'] = $this->pass; - $util = new Encryption\Util($this->view, $this->userId); - $util->setMigrationStatus(0); + $util = new Encryption\Util( $this->view, $this->userId ); + $util->setMigrationStatus( 0 ); - $this->assertTrue(OCA\Encryption\Hooks::login($params)); + $this->assertTrue( OCA\Encryption\Hooks::login( $params ) ); - $this->assertEquals($this->lagacyKey, $_SESSION['legacyKey']); + $this->assertEquals( $this->lagacyKey, $_SESSION['legacyKey'] ); - $files = $util->findEncFiles('/' . $this->userId . '/files/'); + $files = $util->findEncFiles( '/' . $this->userId . '/files/' ); - $this->assertTrue(is_array($files)); + $this->assertTrue( is_array( $files ) ); $found = false; - foreach($files['encrypted'] as $encryptedFile) { - if($encryptedFile['name'] === 'legacy-encrypted-text.txt') { + foreach ( $files['encrypted'] as $encryptedFile ) { + if ( $encryptedFile['name'] === 'legacy-encrypted-text.txt' ) { $found = true; break; } } - $this->assertTrue($found); + $this->assertTrue( $found ); } } \ No newline at end of file diff --git a/apps/files_encryption/tests/webdav.php b/apps/files_encryption/tests/webdav.php index 4b453d0c9d1..57848cd273c 100755 --- a/apps/files_encryption/tests/webdav.php +++ b/apps/files_encryption/tests/webdav.php @@ -20,13 +20,13 @@ * */ -require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); -require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); -require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); -require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); -require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); -require_once realpath(dirname(__FILE__) . '/../lib/util.php'); -require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); +require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); +require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); use OCA\Encryption; @@ -46,18 +46,17 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase public $dataShort; public $stateFilesTrashbin; - function setUp() - { + function setUp() { // reset backend - \OC_User::useBackend('database'); + \OC_User::useBackend( 'database' ); // set user id - \OC_User::setUserId('admin'); + \OC_User::setUserId( 'admin' ); $this->userId = 'admin'; $this->pass = 'admin'; // init filesystem view - $this->view = new \OC_FilesystemView('/'); + $this->view = new \OC_FilesystemView( '/' ); // init short data $this->dataShort = 'hats'; @@ -65,38 +64,38 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase // init filesystem related hooks \OCA\Encryption\Helper::registerFilesystemHooks(); - // register encryption file proxy - \OC_FileProxy::register(new OCA\Encryption\Proxy()); + // clear and register hooks + \OC_FileProxy::clearProxies(); + \OC_FileProxy::register( new OCA\Encryption\Proxy() ); // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); + $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); // we don't want to tests with app files_trashbin enabled - \OC_App::disable('files_trashbin'); + \OC_App::disable( 'files_trashbin' ); // init filesystem for user \OC_Util::tearDownFS(); - \OC_User::setUserId(''); + \OC_User::setUserId( '' ); \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS($this->userId); - \OC_User::setUserId($this->userId); + \OC_Util::setupFS( $this->userId ); + \OC_User::setUserId( $this->userId ); // login user $params['uid'] = $this->userId; $params['password'] = $this->pass; - OCA\Encryption\Hooks::login($params); + OCA\Encryption\Hooks::login( $params ); } - function tearDown() - { + function tearDown() { // reset app files_trashbin - if ($this->stateFilesTrashbin) { - OC_App::enable('files_trashbin'); + if ( $this->stateFilesTrashbin ) { + OC_App::enable( 'files_trashbin' ); } else { - OC_App::disable('files_trashbin'); + OC_App::disable( 'files_trashbin' ); } - // clear all proxies + // clear and register hooks \OC_FileProxy::clearProxies(); } @@ -116,38 +115,38 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase $_SERVER['HTTP_AUTHORIZATION'] = 'Basic YWRtaW46YWRtaW4='; $_SERVER['CONTENT_TYPE'] = 'application/octet-stream'; $_SERVER['PATH_INFO'] = '/webdav' . $filename; - $_SERVER['CONTENT_LENGTH'] = strlen($this->dataShort); + $_SERVER['CONTENT_LENGTH'] = strlen( $this->dataShort ); // handle webdav request - $this->handleWebdavRequest($this->dataShort); + $this->handleWebdavRequest( $this->dataShort ); // check if file was created - $this->assertTrue($this->view->file_exists('/' . $this->userId . '/files' . $filename)); + $this->assertTrue( $this->view->file_exists( '/' . $this->userId . '/files' . $filename ) ); // check if key-file was created - $this->assertTrue($this->view->file_exists('/' . $this->userId . '/files_encryption/keyfiles/' . $filename . '.key')); + $this->assertTrue( $this->view->file_exists( '/' . $this->userId . '/files_encryption/keyfiles/' . $filename . '.key' ) ); // check if shareKey-file was created - $this->assertTrue($this->view->file_exists('/' . $this->userId . '/files_encryption/share-keys/' . $filename . '.' . $this->userId . '.shareKey')); + $this->assertTrue( $this->view->file_exists( '/' . $this->userId . '/files_encryption/share-keys/' . $filename . '.' . $this->userId . '.shareKey' ) ); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get encrypted file content - $encryptedContent = $this->view->file_get_contents('/' . $this->userId . '/files' . $filename); + $encryptedContent = $this->view->file_get_contents( '/' . $this->userId . '/files' . $filename ); // restore proxy state \OC_FileProxy::$enabled = $proxyStatus; // check if encrypted content is valid - $this->assertTrue(Encryption\Crypt::isCatfileContent($encryptedContent)); + $this->assertTrue( Encryption\Crypt::isCatfileContent( $encryptedContent ) ); // get decrypted file contents - $decrypt = file_get_contents('crypt://' . $filename); + $decrypt = file_get_contents( 'crypt://' . $filename ); // check if file content match with the written content - $this->assertEquals($this->dataShort, $decrypt); + $this->assertEquals( $this->dataShort, $decrypt ); // return filename for next test return $filename; @@ -158,7 +157,7 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase * * @depends testWebdavPUT */ - function testWebdavGET($filename) { + function testWebdavGET( $filename ) { // set server vars $_SERVER['REQUEST_METHOD'] = 'GET'; @@ -170,7 +169,7 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase $content = $this->handleWebdavRequest(); // check if file content match with the written content - $this->assertEquals($this->dataShort, $content); + $this->assertEquals( $this->dataShort, $content ); // return filename for next test return $filename; @@ -180,7 +179,7 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase * @brief test webdav delete random file * @depends testWebdavGET */ - function testWebdavDELETE($filename) { + function testWebdavDELETE( $filename ) { // set server vars $_SERVER['REQUEST_METHOD'] = 'DELETE'; $_SERVER['REQUEST_URI'] = '/remote.php/webdav' . $filename; @@ -191,13 +190,13 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase $content = $this->handleWebdavRequest(); // check if file was removed - $this->assertFalse($this->view->file_exists('/' . $this->userId . '/files' . $filename)); + $this->assertFalse( $this->view->file_exists( '/' . $this->userId . '/files' . $filename ) ); // check if key-file was removed - $this->assertFalse($this->view->file_exists('/' . $this->userId . '/files_encryption/keyfiles' . $filename . '.key')); + $this->assertFalse( $this->view->file_exists( '/' . $this->userId . '/files_encryption/keyfiles' . $filename . '.key' ) ); // check if shareKey-file was removed - $this->assertFalse($this->view->file_exists('/' . $this->userId . '/files_encryption/share-keys' . $filename . '.' . $this->userId . '.shareKey')); + $this->assertFalse( $this->view->file_exists( '/' . $this->userId . '/files_encryption/share-keys' . $filename . '.' . $this->userId . '.shareKey' ) ); } /** @@ -207,30 +206,30 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase * * @note this init procedure is copied from /apps/files/remote.php */ - function handleWebdavRequest($body = false) { + function handleWebdavRequest( $body = false ) { // Backends $authBackend = new OC_Connector_Sabre_Auth(); $lockBackend = new OC_Connector_Sabre_Locks(); $requestBackend = new OC_Connector_Sabre_Request(); // Create ownCloud Dir - $publicDir = new OC_Connector_Sabre_Directory(''); + $publicDir = new OC_Connector_Sabre_Directory( '' ); // Fire up server - $server = new Sabre_DAV_Server($publicDir); + $server = new Sabre_DAV_Server( $publicDir ); $server->httpRequest = $requestBackend; - $server->setBaseUri('/remote.php/webdav/'); + $server->setBaseUri( '/remote.php/webdav/' ); // Load plugins - $server->addPlugin(new Sabre_DAV_Auth_Plugin($authBackend, 'ownCloud')); - $server->addPlugin(new Sabre_DAV_Locks_Plugin($lockBackend)); - $server->addPlugin(new Sabre_DAV_Browser_Plugin(false)); // Show something in the Browser, but no upload - $server->addPlugin(new OC_Connector_Sabre_QuotaPlugin()); - $server->addPlugin(new OC_Connector_Sabre_MaintenancePlugin()); + $server->addPlugin( new Sabre_DAV_Auth_Plugin( $authBackend, 'ownCloud' ) ); + $server->addPlugin( new Sabre_DAV_Locks_Plugin( $lockBackend ) ); + $server->addPlugin( new Sabre_DAV_Browser_Plugin( false ) ); // Show something in the Browser, but no upload + $server->addPlugin( new OC_Connector_Sabre_QuotaPlugin() ); + $server->addPlugin( new OC_Connector_Sabre_MaintenancePlugin() ); // And off we go! - if($body) { - $server->httpRequest->setBody($body); + if ( $body ) { + $server->httpRequest->setBody( $body ); } // turn on output buffering -- cgit v1.2.3 From 9dd277576a87b8876ebf281ba21161fa30645807 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Sun, 26 May 2013 20:44:15 +0200 Subject: added users for tests reformat code to meet coding guidelines --- apps/files_encryption/tests/crypt.php | 459 +++++++------- apps/files_encryption/tests/encryption.key | Bin 24 -> 24 bytes apps/files_encryption/tests/keymanager.php | 135 +++-- .../tests/legacy-encrypted-text.txt | 2 +- apps/files_encryption/tests/share.php | 673 ++++++++++++--------- apps/files_encryption/tests/stream.php | 114 ++-- apps/files_encryption/tests/trashbin.php | 191 +++--- apps/files_encryption/tests/util.php | 269 ++++---- apps/files_encryption/tests/webdav.php | 146 +++-- 9 files changed, 1098 insertions(+), 891 deletions(-) diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index b8fbdda400f..74b4252a1d4 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -7,23 +7,25 @@ * See the COPYING-README file. */ -require_once realpath( dirname( __FILE__ ) . '/../3rdparty/Crypt_Blowfish/Blowfish.php' ); -require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/helper.php' ); -require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); +require_once realpath(dirname(__FILE__) . '/../3rdparty/Crypt_Blowfish/Blowfish.php'); +require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); +require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); +require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); +require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); +require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); +require_once realpath(dirname(__FILE__) . '/../lib/util.php'); +require_once realpath(dirname(__FILE__) . '/../lib/helper.php'); +require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath(dirname(__FILE__) . '/util.php'); use OCA\Encryption; /** * Class Test_Encryption_Crypt */ -class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase -{ +class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { + + const TEST_ENCRYPTION_CRYPT_USER1 = "test-crypt-user1"; public $userId; public $pass; @@ -42,7 +44,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase public static function setUpBeforeClass() { // reset backend \OC_User::clearBackends(); - \OC_User::useBackend( 'database' ); + \OC_User::useBackend('database'); // Filesystem related hooks \OCA\Encryption\Helper::registerFilesystemHooks(); @@ -52,62 +54,53 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase // clear and register hooks \OC_FileProxy::clearProxies(); - \OC_FileProxy::register( new OCA\Encryption\Proxy() ); - - // setup filesystem - \OC_Util::tearDownFS(); - \OC_User::setUserId( '' ); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS( 'admin' ); - \OC_User::setUserId( 'admin' ); + \OC_FileProxy::register(new OCA\Encryption\Proxy()); - // login admin - $params['uid'] = 'admin'; - $params['password'] = 'admin'; - OCA\Encryption\Hooks::login( $params ); + // create test user + \Test_Encryption_Util::loginHelper(\Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1, true); } function setUp() { + // set user id + \OC_User::setUserId(\Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1); + $this->userId = \Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1; + $this->pass = \Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1; + // set content for encrypting / decrypting in tests - $this->dataLong = file_get_contents( realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ) ); + $this->dataLong = file_get_contents(realpath(dirname(__FILE__) . '/../lib/crypt.php')); $this->dataShort = 'hats'; - $this->dataUrl = realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); - $this->legacyData = realpath( dirname( __FILE__ ) . '/legacy-text.txt' ); - $this->legacyEncryptedData = realpath( dirname( __FILE__ ) . '/legacy-encrypted-text.txt' ); - $this->legacyEncryptedDataKey = realpath( dirname( __FILE__ ) . '/encryption.key' ); + $this->dataUrl = realpath(dirname(__FILE__) . '/../lib/crypt.php'); + $this->legacyData = realpath(dirname(__FILE__) . '/legacy-text.txt'); + $this->legacyEncryptedData = realpath(dirname(__FILE__) . '/legacy-encrypted-text.txt'); + $this->legacyEncryptedDataKey = realpath(dirname(__FILE__) . '/encryption.key'); $this->randomKey = Encryption\Crypt::generateKey(); $keypair = Encryption\Crypt::createKeypair(); $this->genPublicKey = $keypair['publicKey']; $this->genPrivateKey = $keypair['privateKey']; - $this->view = new \OC_FilesystemView( '/' ); - - \OC_User::setUserId( 'admin' ); - $this->userId = 'admin'; - $this->pass = 'admin'; - - $userHome = \OC_User::getHome( $this->userId ); - $this->dataDir = str_replace( '/' . $this->userId, '', $userHome ); + $this->view = new \OC_FilesystemView('/'); // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); + $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); // we don't want to tests with app files_trashbin enabled - \OC_App::disable( 'files_trashbin' ); + \OC_App::disable('files_trashbin'); } function tearDown() { // reset app files_trashbin - if ( $this->stateFilesTrashbin ) { - OC_App::enable( 'files_trashbin' ); - } else { - OC_App::disable( 'files_trashbin' ); + if ($this->stateFilesTrashbin) { + OC_App::enable('files_trashbin'); + } + else { + OC_App::disable('files_trashbin'); } } public static function tearDownAfterClass() { - + // cleanup test user + \OC_User::deleteUser(\Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1); } function testGenerateKey() { @@ -116,7 +109,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $key = Encryption\Crypt::generateKey(); - $this->assertTrue( strlen( $key ) > 16 ); + $this->assertTrue(strlen($key) > 16); } @@ -127,7 +120,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $iv = Encryption\Crypt::generateIv(); - $this->assertEquals( 16, strlen( $iv ) ); + $this->assertEquals(16, strlen($iv)); return $iv; @@ -136,30 +129,31 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase /** * @depends testGenerateIv */ - function testConcatIv( $iv ) { + function testConcatIv($iv) { - $catFile = Encryption\Crypt::concatIv( $this->dataLong, $iv ); + $catFile = Encryption\Crypt::concatIv($this->dataLong, $iv); // Fetch encryption metadata from end of file - $meta = substr( $catFile, -22 ); + $meta = substr($catFile, -22); - $identifier = substr( $meta, 0, 6 ); + $identifier = substr($meta, 0, 6); // Fetch IV from end of file - $foundIv = substr( $meta, 6 ); + $foundIv = substr($meta, 6); - $this->assertEquals( '00iv00', $identifier ); + $this->assertEquals('00iv00', $identifier); - $this->assertEquals( $iv, $foundIv ); + $this->assertEquals($iv, $foundIv); // Remove IV and IV identifier text to expose encrypted content - $data = substr( $catFile, 0, -22 ); + $data = substr($catFile, 0, -22); - $this->assertEquals( $this->dataLong, $data ); + $this->assertEquals($this->dataLong, $data); return array( 'iv' => $iv - , 'catfile' => $catFile + , + 'catfile' => $catFile ); } @@ -167,16 +161,16 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase /** * @depends testConcatIv */ - function testSplitIv( $testConcatIv ) { + function testSplitIv($testConcatIv) { // Split catfile into components - $splitCatfile = Encryption\Crypt::splitIv( $testConcatIv['catfile'] ); + $splitCatfile = Encryption\Crypt::splitIv($testConcatIv['catfile']); // Check that original IV and split IV match - $this->assertEquals( $testConcatIv['iv'], $splitCatfile['iv'] ); + $this->assertEquals($testConcatIv['iv'], $splitCatfile['iv']); // Check that original data and split data match - $this->assertEquals( $this->dataLong, $splitCatfile['encrypted'] ); + $this->assertEquals($this->dataLong, $splitCatfile['encrypted']); } @@ -185,11 +179,11 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase */ function testAddPadding() { - $padded = Encryption\Crypt::addPadding( $this->dataLong ); + $padded = Encryption\Crypt::addPadding($this->dataLong); - $padding = substr( $padded, -2 ); + $padding = substr($padded, -2); - $this->assertEquals( 'xx', $padding ); + $this->assertEquals('xx', $padding); return $padded; @@ -198,37 +192,37 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase /** * @depends testAddPadding */ - function testRemovePadding( $padded ) { + function testRemovePadding($padded) { - $noPadding = Encryption\Crypt::RemovePadding( $padded ); + $noPadding = Encryption\Crypt::RemovePadding($padded); - $this->assertEquals( $this->dataLong, $noPadding ); + $this->assertEquals($this->dataLong, $noPadding); } function testEncrypt() { - $random = openssl_random_pseudo_bytes( 13 ); + $random = openssl_random_pseudo_bytes(13); - $iv = substr( base64_encode( $random ), 0, -4 ); // i.e. E5IG033j+mRNKrht + $iv = substr(base64_encode($random), 0, -4); // i.e. E5IG033j+mRNKrht - $crypted = Encryption\Crypt::encrypt( $this->dataUrl, $iv, 'hat' ); + $crypted = Encryption\Crypt::encrypt($this->dataUrl, $iv, 'hat'); - $this->assertNotEquals( $this->dataUrl, $crypted ); + $this->assertNotEquals($this->dataUrl, $crypted); } function testDecrypt() { - $random = openssl_random_pseudo_bytes( 13 ); + $random = openssl_random_pseudo_bytes(13); - $iv = substr( base64_encode( $random ), 0, -4 ); // i.e. E5IG033j+mRNKrht + $iv = substr(base64_encode($random), 0, -4); // i.e. E5IG033j+mRNKrht - $crypted = Encryption\Crypt::encrypt( $this->dataUrl, $iv, 'hat' ); + $crypted = Encryption\Crypt::encrypt($this->dataUrl, $iv, 'hat'); - $decrypt = Encryption\Crypt::decrypt( $crypted, $iv, 'hat' ); + $decrypt = Encryption\Crypt::decrypt($crypted, $iv, 'hat'); - $this->assertEquals( $this->dataUrl, $decrypt ); + $this->assertEquals($this->dataUrl, $decrypt); } @@ -236,14 +230,14 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase # TODO: search in keyfile for actual content as IV will ensure this test always passes - $crypted = Encryption\Crypt::symmetricEncryptFileContent( $this->dataShort, 'hat' ); + $crypted = Encryption\Crypt::symmetricEncryptFileContent($this->dataShort, 'hat'); - $this->assertNotEquals( $this->dataShort, $crypted ); + $this->assertNotEquals($this->dataShort, $crypted); - $decrypt = Encryption\Crypt::symmetricDecryptFileContent( $crypted, 'hat' ); + $decrypt = Encryption\Crypt::symmetricDecryptFileContent($crypted, 'hat'); - $this->assertEquals( $this->dataShort, $decrypt ); + $this->assertEquals($this->dataShort, $decrypt); } @@ -251,49 +245,49 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $filename = 'tmp-' . time() . '.test'; - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataShort ); + $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // Get file contents without using any wrapper to get it's actual contents on disk - $retreivedCryptedFile = $this->view->file_get_contents( $this->userId . '/files/' . $filename ); + $retreivedCryptedFile = $this->view->file_get_contents($this->userId . '/files/' . $filename); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; // Check that the file was encrypted before being written to disk - $this->assertNotEquals( $this->dataShort, $retreivedCryptedFile ); + $this->assertNotEquals($this->dataShort, $retreivedCryptedFile); // Get the encrypted keyfile - $encKeyfile = Encryption\Keymanager::getFileKey( $this->view, $this->userId, $filename ); + $encKeyfile = Encryption\Keymanager::getFileKey($this->view, $this->userId, $filename); // Attempt to fetch the user's shareKey - $shareKey = Encryption\Keymanager::getShareKey( $this->view, $this->userId, $filename ); + $shareKey = Encryption\Keymanager::getShareKey($this->view, $this->userId, $filename); // get session - $session = new Encryption\Session( $this->view ); + $session = new Encryption\Session($this->view); // get private key - $privateKey = $session->getPrivateKey( $this->userId ); + $privateKey = $session->getPrivateKey($this->userId); // Decrypt keyfile with shareKey - $plainKeyfile = Encryption\Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); + $plainKeyfile = Encryption\Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); // Manually decrypt - $manualDecrypt = Encryption\Crypt::symmetricDecryptFileContent( $retreivedCryptedFile, $plainKeyfile ); + $manualDecrypt = Encryption\Crypt::symmetricDecryptFileContent($retreivedCryptedFile, $plainKeyfile); // Check that decrypted data matches - $this->assertEquals( $this->dataShort, $manualDecrypt ); + $this->assertEquals($this->dataShort, $manualDecrypt); // Teardown - $this->view->unlink( $this->userId . '/files/' . $filename ); + $this->view->unlink($this->userId . '/files/' . $filename); - Encryption\Keymanager::deleteFileKey( $this->view, $this->userId, $filename ); + Encryption\Keymanager::deleteFileKey($this->view, $this->userId, $filename); } /** @@ -308,70 +302,77 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $filename = 'tmp-' . time() . '.test'; // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong . $this->dataLong ); + $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong . $this->dataLong); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // Get file contents without using any wrapper to get it's actual contents on disk - $retreivedCryptedFile = $this->view->file_get_contents( $this->userId . '/files/' . $filename ); + $retreivedCryptedFile = $this->view->file_get_contents($this->userId . '/files/' . $filename); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; // Check that the file was encrypted before being written to disk - $this->assertNotEquals( $this->dataLong . $this->dataLong, $retreivedCryptedFile ); + $this->assertNotEquals($this->dataLong . $this->dataLong, $retreivedCryptedFile); // Manuallly split saved file into separate IVs and encrypted chunks - $r = preg_split( '/(00iv00.{16,18})/', $retreivedCryptedFile, NULL, PREG_SPLIT_DELIM_CAPTURE ); + $r = preg_split('/(00iv00.{16,18})/', $retreivedCryptedFile, NULL, PREG_SPLIT_DELIM_CAPTURE); //print_r($r); // Join IVs and their respective data chunks - $e = array( $r[0] . $r[1], $r[2] . $r[3], $r[4] . $r[5], $r[6] . $r[7], $r[8] . $r[9], $r[10] . $r[11] ); //.$r[11], $r[12].$r[13], $r[14] ); + $e = array( + $r[0] . $r[1], + $r[2] . $r[3], + $r[4] . $r[5], + $r[6] . $r[7], + $r[8] . $r[9], + $r[10] . $r[11] + ); //.$r[11], $r[12].$r[13], $r[14] ); //print_r($e); // Get the encrypted keyfile - $encKeyfile = Encryption\Keymanager::getFileKey( $this->view, $this->userId, $filename ); + $encKeyfile = Encryption\Keymanager::getFileKey($this->view, $this->userId, $filename); // Attempt to fetch the user's shareKey - $shareKey = Encryption\Keymanager::getShareKey( $this->view, $this->userId, $filename ); + $shareKey = Encryption\Keymanager::getShareKey($this->view, $this->userId, $filename); // get session - $session = new Encryption\Session( $this->view ); + $session = new Encryption\Session($this->view); // get private key - $privateKey = $session->getPrivateKey( $this->userId ); + $privateKey = $session->getPrivateKey($this->userId); // Decrypt keyfile with shareKey - $plainKeyfile = Encryption\Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); + $plainKeyfile = Encryption\Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); // Set var for reassembling decrypted content $decrypt = ''; // Manually decrypt chunk - foreach ( $e as $chunk ) { + foreach ($e as $chunk) { - $chunkDecrypt = Encryption\Crypt::symmetricDecryptFileContent( $chunk, $plainKeyfile ); + $chunkDecrypt = Encryption\Crypt::symmetricDecryptFileContent($chunk, $plainKeyfile); // Assemble decrypted chunks $decrypt .= $chunkDecrypt; } - $this->assertEquals( $this->dataLong . $this->dataLong, $decrypt ); + $this->assertEquals($this->dataLong . $this->dataLong, $decrypt); // Teardown - $this->view->unlink( $this->userId . '/files/' . $filename ); + $this->view->unlink($this->userId . '/files/' . $filename); - Encryption\Keymanager::deleteFileKey( $this->view, $this->userId, $filename ); + Encryption\Keymanager::deleteFileKey($this->view, $this->userId, $filename); } @@ -383,26 +384,26 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataShort ); + $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $this->assertTrue( Encryption\Crypt::isEncryptedMeta( $filename ) ); + $this->assertTrue(Encryption\Crypt::isEncryptedMeta($filename)); \OC_FileProxy::$enabled = $proxyStatus; // Get file decrypted contents - $decrypt = file_get_contents( 'crypt://' . $filename ); + $decrypt = file_get_contents('crypt://' . $filename); - $this->assertEquals( $this->dataShort, $decrypt ); + $this->assertEquals($this->dataShort, $decrypt); // tear down - $this->view->unlink( $this->userId . '/files/' . $filename ); + $this->view->unlink($this->userId . '/files/' . $filename); } function testSymmetricStreamDecryptLongFileContent() { @@ -410,44 +411,44 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); + $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Get file decrypted contents - $decrypt = file_get_contents( 'crypt://' . $filename ); + $decrypt = file_get_contents('crypt://' . $filename); - $this->assertEquals( $this->dataLong, $decrypt ); + $this->assertEquals($this->dataLong, $decrypt); // tear down - $this->view->unlink( $this->userId . '/files/' . $filename ); + $this->view->unlink($this->userId . '/files/' . $filename); } function testSymmetricEncryptFileContentKeyfile() { # TODO: search in keyfile for actual content as IV will ensure this test always passes - $crypted = Encryption\Crypt::symmetricEncryptFileContentKeyfile( $this->dataUrl ); + $crypted = Encryption\Crypt::symmetricEncryptFileContentKeyfile($this->dataUrl); - $this->assertNotEquals( $this->dataUrl, $crypted['encrypted'] ); + $this->assertNotEquals($this->dataUrl, $crypted['encrypted']); - $decrypt = Encryption\Crypt::symmetricDecryptFileContent( $crypted['encrypted'], $crypted['key'] ); + $decrypt = Encryption\Crypt::symmetricDecryptFileContent($crypted['encrypted'], $crypted['key']); - $this->assertEquals( $this->dataUrl, $decrypt ); + $this->assertEquals($this->dataUrl, $decrypt); } function testIsEncryptedContent() { - $this->assertFalse( Encryption\Crypt::isCatfileContent( $this->dataUrl ) ); + $this->assertFalse(Encryption\Crypt::isCatfileContent($this->dataUrl)); - $this->assertFalse( Encryption\Crypt::isCatfileContent( $this->legacyEncryptedData ) ); + $this->assertFalse(Encryption\Crypt::isCatfileContent($this->legacyEncryptedData)); - $keyfileContent = Encryption\Crypt::symmetricEncryptFileContent( $this->dataUrl, 'hat' ); + $keyfileContent = Encryption\Crypt::symmetricEncryptFileContent($this->dataUrl, 'hat'); - $this->assertTrue( Encryption\Crypt::isCatfileContent( $keyfileContent ) ); + $this->assertTrue(Encryption\Crypt::isCatfileContent($keyfileContent)); } @@ -457,21 +458,21 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $pair1 = Encryption\Crypt::createKeypair(); - $this->assertEquals( 2, count( $pair1 ) ); + $this->assertEquals(2, count($pair1)); - $this->assertTrue( strlen( $pair1['publicKey'] ) > 1 ); + $this->assertTrue(strlen($pair1['publicKey']) > 1); - $this->assertTrue( strlen( $pair1['privateKey'] ) > 1 ); + $this->assertTrue(strlen($pair1['privateKey']) > 1); - $crypted = Encryption\Crypt::multiKeyEncrypt( $this->dataShort, array( $pair1['publicKey'] ) ); + $crypted = Encryption\Crypt::multiKeyEncrypt($this->dataShort, array($pair1['publicKey'])); - $this->assertNotEquals( $this->dataShort, $crypted['data'] ); + $this->assertNotEquals($this->dataShort, $crypted['data']); - $decrypt = Encryption\Crypt::multiKeyDecrypt( $crypted['data'], $crypted['keys'][0], $pair1['privateKey'] ); + $decrypt = Encryption\Crypt::multiKeyDecrypt($crypted['data'], $crypted['keys'][0], $pair1['privateKey']); - $this->assertEquals( $this->dataShort, $decrypt ); + $this->assertEquals($this->dataShort, $decrypt); } @@ -481,14 +482,14 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $pair1 = Encryption\Crypt::createKeypair(); // Encrypt data - $crypted = Encryption\Crypt::keyEncrypt( $this->dataUrl, $pair1['publicKey'] ); + $crypted = Encryption\Crypt::keyEncrypt($this->dataUrl, $pair1['publicKey']); - $this->assertNotEquals( $this->dataUrl, $crypted ); + $this->assertNotEquals($this->dataUrl, $crypted); // Decrypt data - $decrypt = Encryption\Crypt::keyDecrypt( $crypted, $pair1['privateKey'] ); + $decrypt = Encryption\Crypt::keyDecrypt($crypted, $pair1['privateKey']); - $this->assertEquals( $this->dataUrl, $decrypt ); + $this->assertEquals($this->dataUrl, $decrypt); } @@ -497,9 +498,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase */ function testLegacyEncryptShort() { - $crypted = Encryption\Crypt::legacyEncrypt( $this->dataShort, $this->pass ); + $crypted = Encryption\Crypt::legacyEncrypt($this->dataShort, $this->pass); - $this->assertNotEquals( $this->dataShort, $crypted ); + $this->assertNotEquals($this->dataShort, $crypted); # TODO: search inencrypted text for actual content to ensure it # genuine transformation @@ -512,11 +513,11 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase * @brief test decryption using legacy blowfish method * @depends testLegacyEncryptShort */ - function testLegacyDecryptShort( $crypted ) { + function testLegacyDecryptShort($crypted) { - $decrypted = Encryption\Crypt::legacyDecrypt( $crypted, $this->pass ); + $decrypted = Encryption\Crypt::legacyDecrypt($crypted, $this->pass); - $this->assertEquals( $this->dataShort, $decrypted ); + $this->assertEquals($this->dataShort, $decrypted); } @@ -525,9 +526,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase */ function testLegacyEncryptLong() { - $crypted = Encryption\Crypt::legacyEncrypt( $this->dataLong, $this->pass ); + $crypted = Encryption\Crypt::legacyEncrypt($this->dataLong, $this->pass); - $this->assertNotEquals( $this->dataLong, $crypted ); + $this->assertNotEquals($this->dataLong, $crypted); # TODO: search inencrypted text for actual content to ensure it # genuine transformation @@ -540,13 +541,13 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase * @brief test decryption using legacy blowfish method * @depends testLegacyEncryptLong */ - function testLegacyDecryptLong( $crypted ) { + function testLegacyDecryptLong($crypted) { - $decrypted = Encryption\Crypt::legacyDecrypt( $crypted, $this->pass ); + $decrypted = Encryption\Crypt::legacyDecrypt($crypted, $this->pass); - $this->assertEquals( $this->dataLong, $decrypted ); + $this->assertEquals($this->dataLong, $decrypted); - $this->assertFalse( Encryption\Crypt::getBlowfish( '' ) ); + $this->assertFalse(Encryption\Crypt::getBlowfish('')); } /** @@ -556,15 +557,15 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase function testLegacyCreateKey() { // Create encrypted key - $encKey = Encryption\Crypt::legacyCreateKey( $this->pass ); + $encKey = Encryption\Crypt::legacyCreateKey($this->pass); // Decrypt key - $key = Encryption\Crypt::legacyDecrypt( $encKey, $this->pass ); + $key = Encryption\Crypt::legacyDecrypt($encKey, $this->pass); - $this->assertTrue( is_numeric( $key ) ); + $this->assertTrue(is_numeric($key)); // Check that key is correct length - $this->assertEquals( 20, strlen( $key ) ); + $this->assertEquals(20, strlen($key)); } @@ -572,11 +573,11 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase * @brief test decryption using legacy blowfish method * @depends testLegacyEncryptLong */ - function testLegacyKeyRecryptKeyfileEncrypt( $crypted ) { + function testLegacyKeyRecryptKeyfileEncrypt($crypted) { - $recrypted = Encryption\Crypt::LegacyKeyRecryptKeyfile( $crypted, $this->pass, array( $this->genPublicKey ), $this->pass, '' ); + $recrypted = Encryption\Crypt::LegacyKeyRecryptKeyfile($crypted, $this->pass, array($this->genPublicKey), $this->pass, ''); - $this->assertNotEquals( $this->dataLong, $recrypted['data'] ); + $this->assertNotEquals($this->dataLong, $recrypted['data']); return $recrypted; @@ -590,27 +591,27 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); + $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Get file decrypted contents - $decrypt = file_get_contents( 'crypt://' . $filename ); + $decrypt = file_get_contents('crypt://' . $filename); - $this->assertEquals( $this->dataLong, $decrypt ); + $this->assertEquals($this->dataLong, $decrypt); $newFilename = 'tmp-new-' . time(); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); - $view->rename( $filename, $newFilename ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view->rename($filename, $newFilename); // Get file decrypted contents - $newDecrypt = file_get_contents( 'crypt://' . $newFilename ); + $newDecrypt = file_get_contents('crypt://' . $newFilename); - $this->assertEquals( $this->dataLong, $newDecrypt ); + $this->assertEquals($this->dataLong, $newDecrypt); // tear down - $view->unlink( $newFilename ); + $view->unlink($newFilename); } function testMoveFileIntoFolder() { @@ -618,191 +619,191 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); + $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Get file decrypted contents - $decrypt = file_get_contents( 'crypt://' . $filename ); + $decrypt = file_get_contents('crypt://' . $filename); - $this->assertEquals( $this->dataLong, $decrypt ); + $this->assertEquals($this->dataLong, $decrypt); $newFolder = '/newfolder' . time(); $newFilename = 'tmp-new-' . time(); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); - $view->mkdir( $newFolder ); - $view->rename( $filename, $newFolder . '/' . $newFilename ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view->mkdir($newFolder); + $view->rename($filename, $newFolder . '/' . $newFilename); // Get file decrypted contents - $newDecrypt = file_get_contents( 'crypt://' . $newFolder . '/' . $newFilename ); + $newDecrypt = file_get_contents('crypt://' . $newFolder . '/' . $newFilename); - $this->assertEquals( $this->dataLong, $newDecrypt ); + $this->assertEquals($this->dataLong, $newDecrypt); // tear down - $view->unlink( $newFolder ); + $view->unlink($newFolder); } function testMoveFolder() { - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); $filename = '/tmp-' . time(); $folder = '/folder' . time(); - $view->mkdir( $folder ); + $view->mkdir($folder); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $folder . $filename, $this->dataLong ); + $cryptedFile = file_put_contents('crypt://' . $folder . $filename, $this->dataLong); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Get file decrypted contents - $decrypt = file_get_contents( 'crypt://' . $folder . $filename ); + $decrypt = file_get_contents('crypt://' . $folder . $filename); - $this->assertEquals( $this->dataLong, $decrypt ); + $this->assertEquals($this->dataLong, $decrypt); $newFolder = '/newfolder/subfolder' . time(); - $view->mkdir( '/newfolder' ); + $view->mkdir('/newfolder'); - $view->rename( $folder, $newFolder ); + $view->rename($folder, $newFolder); // Get file decrypted contents - $newDecrypt = file_get_contents( 'crypt://' . $newFolder . $filename ); + $newDecrypt = file_get_contents('crypt://' . $newFolder . $filename); - $this->assertEquals( $this->dataLong, $newDecrypt ); + $this->assertEquals($this->dataLong, $newDecrypt); // tear down - $view->unlink( $newFolder ); - $view->unlink( '/newfolder' ); + $view->unlink($newFolder); + $view->unlink('/newfolder'); } function testChangePassphrase() { $filename = 'tmp-' . time(); // Save long data as encrypted file using stream wrapper - $cryptedFile = file_put_contents( 'crypt://' . $filename, $this->dataLong ); + $cryptedFile = file_put_contents('crypt://' . $filename, $this->dataLong); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Get file decrypted contents - $decrypt = file_get_contents( 'crypt://' . $filename ); + $decrypt = file_get_contents('crypt://' . $filename); - $this->assertEquals( $this->dataLong, $decrypt ); + $this->assertEquals($this->dataLong, $decrypt); // change password - \OC_User::setPassword( $this->userId, 'test', null ); + \OC_User::setPassword($this->userId, 'test', null); // relogin $params['uid'] = $this->userId; $params['password'] = 'test'; - OCA\Encryption\Hooks::login( $params ); + OCA\Encryption\Hooks::login($params); // Get file decrypted contents - $newDecrypt = file_get_contents( 'crypt://' . $filename ); + $newDecrypt = file_get_contents('crypt://' . $filename); - $this->assertEquals( $this->dataLong, $newDecrypt ); + $this->assertEquals($this->dataLong, $newDecrypt); // tear down // change password back - \OC_User::setPassword( $this->userId, $this->pass ); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); - $view->unlink( $filename ); + \OC_User::setPassword($this->userId, $this->pass); + $view = new \OC\Files\View('/' . $this->userId . '/files'); + $view->unlink($filename); } function testViewFilePutAndGetContents() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Get file decrypted contents - $decrypt = $view->file_get_contents( $filename ); + $decrypt = $view->file_get_contents($filename); - $this->assertEquals( $this->dataShort, $decrypt ); + $this->assertEquals($this->dataShort, $decrypt); // Save long data as encrypted file using stream wrapper - $cryptedFileLong = $view->file_put_contents( $filename, $this->dataLong ); + $cryptedFileLong = $view->file_put_contents($filename, $this->dataLong); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFileLong ) ); + $this->assertTrue(is_int($cryptedFileLong)); // Get file decrypted contents - $decryptLong = $view->file_get_contents( $filename ); + $decryptLong = $view->file_get_contents($filename); - $this->assertEquals( $this->dataLong, $decryptLong ); + $this->assertEquals($this->dataLong, $decryptLong); // tear down - $view->unlink( $filename ); + $view->unlink($filename); } function testTouchExistingFile() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); - $view->touch( $filename ); + $view->touch($filename); // Get file decrypted contents - $decrypt = $view->file_get_contents( $filename ); + $decrypt = $view->file_get_contents($filename); - $this->assertEquals( $this->dataShort, $decrypt ); + $this->assertEquals($this->dataShort, $decrypt); // tear down - $view->unlink( $filename ); + $view->unlink($filename); } function testTouchFile() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); - $view->touch( $filename ); + $view->touch($filename); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // Get file decrypted contents - $decrypt = $view->file_get_contents( $filename ); + $decrypt = $view->file_get_contents($filename); - $this->assertEquals( $this->dataShort, $decrypt ); + $this->assertEquals($this->dataShort, $decrypt); // tear down - $view->unlink( $filename ); + $view->unlink($filename); } function testFopenFile() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); - $handle = $view->fopen( $filename, 'r' ); + $handle = $view->fopen($filename, 'r'); // Get file decrypted contents - $decrypt = fgets( $handle ); + $decrypt = fgets($handle); - $this->assertEquals( $this->dataShort, $decrypt ); + $this->assertEquals($this->dataShort, $decrypt); // tear down - $view->unlink( $filename ); + $view->unlink($filename); } } diff --git a/apps/files_encryption/tests/encryption.key b/apps/files_encryption/tests/encryption.key index 4495cee78e2..4ee962145c2 100644 Binary files a/apps/files_encryption/tests/encryption.key and b/apps/files_encryption/tests/encryption.key differ diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php index 1e7c2bdb40b..40ae1659a55 100644 --- a/apps/files_encryption/tests/keymanager.php +++ b/apps/files_encryption/tests/keymanager.php @@ -6,22 +6,21 @@ * See the COPYING-README file. */ -require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/helper.php' ); -require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); +require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); +require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); +require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); +require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); +require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); +require_once realpath(dirname(__FILE__) . '/../lib/util.php'); +require_once realpath(dirname(__FILE__) . '/../lib/helper.php'); +require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); use OCA\Encryption; /** * Class Test_Encryption_Keymanager */ -class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase -{ +class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { public $userId; public $pass; @@ -36,66 +35,67 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase public static function setUpBeforeClass() { // reset backend \OC_User::clearBackends(); - \OC_User::useBackend( 'database' ); + \OC_User::useBackend('database'); // Filesystem related hooks \OCA\Encryption\Helper::registerFilesystemHooks(); // clear and register hooks \OC_FileProxy::clearProxies(); - \OC_FileProxy::register( new OCA\Encryption\Proxy() ); + \OC_FileProxy::register(new OCA\Encryption\Proxy()); // disable file proxy by default \OC_FileProxy::$enabled = false; // setup filesystem \OC_Util::tearDownFS(); - \OC_User::setUserId( '' ); + \OC_User::setUserId(''); \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS( 'admin' ); - \OC_User::setUserId( 'admin' ); + \OC_Util::setupFS('admin'); + \OC_User::setUserId('admin'); // login admin $params['uid'] = 'admin'; $params['password'] = 'admin'; - OCA\Encryption\Hooks::login( $params ); + OCA\Encryption\Hooks::login($params); } function setUp() { // set content for encrypting / decrypting in tests - $this->dataLong = file_get_contents( realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ) ); + $this->dataLong = file_get_contents(realpath(dirname(__FILE__) . '/../lib/crypt.php')); $this->dataShort = 'hats'; - $this->dataUrl = realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); - $this->legacyData = realpath( dirname( __FILE__ ) . '/legacy-text.txt' ); - $this->legacyEncryptedData = realpath( dirname( __FILE__ ) . '/legacy-encrypted-text.txt' ); + $this->dataUrl = realpath(dirname(__FILE__) . '/../lib/crypt.php'); + $this->legacyData = realpath(dirname(__FILE__) . '/legacy-text.txt'); + $this->legacyEncryptedData = realpath(dirname(__FILE__) . '/legacy-encrypted-text.txt'); $this->randomKey = Encryption\Crypt::generateKey(); $keypair = Encryption\Crypt::createKeypair(); $this->genPublicKey = $keypair['publicKey']; $this->genPrivateKey = $keypair['privateKey']; - $this->view = new \OC_FilesystemView( '/' ); + $this->view = new \OC_FilesystemView('/'); - \OC_User::setUserId( 'admin' ); + \OC_User::setUserId('admin'); $this->userId = 'admin'; $this->pass = 'admin'; - $userHome = \OC_User::getHome( $this->userId ); - $this->dataDir = str_replace( '/' . $this->userId, '', $userHome ); + $userHome = \OC_User::getHome($this->userId); + $this->dataDir = str_replace('/' . $this->userId, '', $userHome); // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); + $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); // we don't want to tests with app files_trashbin enabled - \OC_App::disable( 'files_trashbin' ); + \OC_App::disable('files_trashbin'); } function tearDown() { // reset app files_trashbin - if ( $this->stateFilesTrashbin ) { - OC_App::enable( 'files_trashbin' ); - } else { - OC_App::disable( 'files_trashbin' ); + if ($this->stateFilesTrashbin) { + OC_App::enable('files_trashbin'); + } + else { + OC_App::disable('files_trashbin'); } } @@ -105,31 +105,31 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase function testGetPrivateKey() { - $key = Encryption\Keymanager::getPrivateKey( $this->view, $this->userId ); + $key = Encryption\Keymanager::getPrivateKey($this->view, $this->userId); - $privateKey = Encryption\Crypt::symmetricDecryptFileContent( $key, $this->pass ); + $privateKey = Encryption\Crypt::symmetricDecryptFileContent($key, $this->pass); - $res = openssl_pkey_get_private( $privateKey ); + $res = openssl_pkey_get_private($privateKey); - $this->assertTrue( is_resource( $res ) ); + $this->assertTrue(is_resource($res)); - $sslInfo = openssl_pkey_get_details( $res ); + $sslInfo = openssl_pkey_get_details($res); - $this->assertArrayHasKey( 'key', $sslInfo ); + $this->assertArrayHasKey('key', $sslInfo); } function testGetPublicKey() { - $publiceKey = Encryption\Keymanager::getPublicKey( $this->view, $this->userId ); + $publiceKey = Encryption\Keymanager::getPublicKey($this->view, $this->userId); - $res = openssl_pkey_get_public( $publiceKey ); + $res = openssl_pkey_get_public($publiceKey); - $this->assertTrue( is_resource( $res ) ); + $this->assertTrue(is_resource($res)); - $sslInfo = openssl_pkey_get_details( $res ); + $sslInfo = openssl_pkey_get_details($res); - $this->assertArrayHasKey( 'key', $sslInfo ); + $this->assertArrayHasKey('key', $sslInfo); } function testSetFileKey() { @@ -137,7 +137,7 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase # NOTE: This cannot be tested until we are able to break out # of the FileSystemView data directory root - $key = Encryption\Crypt::symmetricEncryptFileContentKeyfile( $this->randomKey, 'hat' ); + $key = Encryption\Crypt::symmetricEncryptFileContentKeyfile($this->randomKey, 'hat'); $file = 'unittest-' . time() . '.txt'; @@ -145,20 +145,20 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $this->view->file_put_contents( $this->userId . '/files/' . $file, $key['encrypted'] ); + $this->view->file_put_contents($this->userId . '/files/' . $file, $key['encrypted']); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; //$view = new \OC_FilesystemView( '/' . $this->userId . '/files_encryption/keyfiles' ); - Encryption\Keymanager::setFileKey( $this->view, $file, $this->userId, $key['key'] ); + Encryption\Keymanager::setFileKey($this->view, $file, $this->userId, $key['key']); // enable encryption proxy $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = true; // cleanup - $this->view->unlink( '/' . $this->userId . '/files/' . $file ); + $this->view->unlink('/' . $this->userId . '/files/' . $file); // change encryption proxy to previous state \OC_FileProxy::$enabled = $proxyStatus; @@ -167,25 +167,25 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase function testGetUserKeys() { - $keys = Encryption\Keymanager::getUserKeys( $this->view, $this->userId ); + $keys = Encryption\Keymanager::getUserKeys($this->view, $this->userId); - $resPublic = openssl_pkey_get_public( $keys['publicKey'] ); + $resPublic = openssl_pkey_get_public($keys['publicKey']); - $this->assertTrue( is_resource( $resPublic ) ); + $this->assertTrue(is_resource($resPublic)); - $sslInfoPublic = openssl_pkey_get_details( $resPublic ); + $sslInfoPublic = openssl_pkey_get_details($resPublic); - $this->assertArrayHasKey( 'key', $sslInfoPublic ); + $this->assertArrayHasKey('key', $sslInfoPublic); - $privateKey = Encryption\Crypt::symmetricDecryptFileContent( $keys['privateKey'], $this->pass ); + $privateKey = Encryption\Crypt::symmetricDecryptFileContent($keys['privateKey'], $this->pass); - $resPrivate = openssl_pkey_get_private( $privateKey ); + $resPrivate = openssl_pkey_get_private($privateKey); - $this->assertTrue( is_resource( $resPrivate ) ); + $this->assertTrue(is_resource($resPrivate)); - $sslInfoPrivate = openssl_pkey_get_details( $resPrivate ); + $sslInfoPrivate = openssl_pkey_get_details($resPrivate); - $this->assertArrayHasKey( 'key', $sslInfoPrivate ); + $this->assertArrayHasKey('key', $sslInfoPrivate); } function testFixPartialFilePath() { @@ -193,13 +193,13 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase $partFilename = 'testfile.txt.part'; $filename = 'testfile.txt'; - $this->assertTrue( Encryption\Keymanager::isPartialFilePath( $partFilename ) ); + $this->assertTrue(Encryption\Keymanager::isPartialFilePath($partFilename)); - $this->assertEquals( 'testfile.txt', Encryption\Keymanager::fixPartialFilePath( $partFilename ) ); + $this->assertEquals('testfile.txt', Encryption\Keymanager::fixPartialFilePath($partFilename)); - $this->assertFalse( Encryption\Keymanager::isPartialFilePath( $filename ) ); + $this->assertFalse(Encryption\Keymanager::isPartialFilePath($filename)); - $this->assertEquals( 'testfile.txt', Encryption\Keymanager::fixPartialFilePath( $filename ) ); + $this->assertEquals('testfile.txt', Encryption\Keymanager::fixPartialFilePath($filename)); } function testRecursiveDelShareKeys() { @@ -208,35 +208,36 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase $filename = '/tmp-' . time() . '.txt'; // create folder structure - $this->view->mkdir( '/admin/files/folder1' ); - $this->view->mkdir( '/admin/files/folder1/subfolder' ); - $this->view->mkdir( '/admin/files/folder1/subfolder/subsubfolder' ); + $this->view->mkdir('/admin/files/folder1'); + $this->view->mkdir('/admin/files/folder1/subfolder'); + $this->view->mkdir('/admin/files/folder1/subfolder/subsubfolder'); // enable encryption proxy $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = true; // save file with content - $cryptedFile = file_put_contents( 'crypt:///folder1/subfolder/subsubfolder/' . $filename, $this->dataShort ); + $cryptedFile = file_put_contents('crypt:///folder1/subfolder/subsubfolder/' . $filename, $this->dataShort); // test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // change encryption proxy to previous state \OC_FileProxy::$enabled = $proxyStatus; // recursive delete keys - Encryption\Keymanager::delShareKey( $this->view, array( 'admin' ), '/folder1/' ); + Encryption\Keymanager::delShareKey($this->view, array('admin'), '/folder1/'); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/folder1/subfolder/subsubfolder/' . $filename . '.admin.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/admin/files_encryption/share-keys/folder1/subfolder/subsubfolder/' . $filename . '.admin.shareKey')); // enable encryption proxy $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = true; // cleanup - $this->view->unlink( '/admin/files/folder1' ); + $this->view->unlink('/admin/files/folder1'); // change encryption proxy to previous state \OC_FileProxy::$enabled = $proxyStatus; diff --git a/apps/files_encryption/tests/legacy-encrypted-text.txt b/apps/files_encryption/tests/legacy-encrypted-text.txt index d38cb7d1b0d..1f5087178cd 100644 --- a/apps/files_encryption/tests/legacy-encrypted-text.txt +++ b/apps/files_encryption/tests/legacy-encrypted-text.txt @@ -1 +1 @@ - ߕ t.dS@t9 QJ \ No newline at end of file +5ǡiZgESlF= \ No newline at end of file diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index 0131ac88e72..6d92881ceb0 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -20,23 +20,29 @@ * */ -require_once realpath( dirname( __FILE__ ) . '/../3rdparty/Crypt_Blowfish/Blowfish.php' ); -require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/helper.php' ); -require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); +require_once realpath(dirname(__FILE__) . '/../3rdparty/Crypt_Blowfish/Blowfish.php'); +require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); +require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); +require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); +require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); +require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); +require_once realpath(dirname(__FILE__) . '/../lib/util.php'); +require_once realpath(dirname(__FILE__) . '/../lib/helper.php'); +require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath(dirname(__FILE__) . '/util.php'); use OCA\Encryption; /** * Class Test_Encryption_Share */ -class Test_Encryption_Share extends \PHPUnit_Framework_TestCase -{ +class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { + + const TEST_ENCRYPTION_SHARE_USER1 = "test-share-user1"; + const TEST_ENCRYPTION_SHARE_USER2 = "test-share-user2"; + const TEST_ENCRYPTION_SHARE_USER3 = "test-share-user3"; + const TEST_ENCRYPTION_SHARE_USER4 = "test-share-user4"; + const TEST_ENCRYPTION_SHARE_GROUP1 = "test-share-group1"; public $stateFilesTrashbin; public $filename; @@ -52,15 +58,15 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase public static function setUpBeforeClass() { // reset backend \OC_User::clearBackends(); - \OC_User::useBackend( 'database' ); + \OC_User::useBackend('database'); // enable resharing - \OC_Appconfig::setValue( 'core', 'shareapi_allow_resharing', 'yes' ); + \OC_Appconfig::setValue('core', 'shareapi_allow_resharing', 'yes'); // clear share hooks - \OC_Hook::clear( 'OCP\\Share' ); + \OC_Hook::clear('OCP\\Share'); \OC::registerShareHooks(); - \OCP\Util::connectHook( 'OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup' ); + \OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup'); // Sharing related hooks \OCA\Encryption\Helper::registerShareHooks(); @@ -70,25 +76,23 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase // clear and register hooks \OC_FileProxy::clearProxies(); - \OC_FileProxy::register( new OCA\Encryption\Proxy() ); + \OC_FileProxy::register(new OCA\Encryption\Proxy()); // create users - \Test_Encryption_Share::loginHelper( 'user1', true ); - \Test_Encryption_Share::loginHelper( 'user2', true ); - \Test_Encryption_Share::loginHelper( 'user3', true ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1, true); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, true); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3, true); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4, true); // create group and assign users - \OC_Group::createGroup( 'group1' ); - \OC_Group::addToGroup( 'user2', 'group1' ); - \OC_Group::addToGroup( 'user3', 'group1' ); + \OC_Group::createGroup(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1); + \OC_Group::addToGroup(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1); + \OC_Group::addToGroup(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1); } function setUp() { $this->dataShort = 'hats'; - $this->view = new \OC_FilesystemView( '/' ); - - $userHome = \OC_User::getHome( 'admin' ); - $this->dataDir = str_replace( '/admin', '', $userHome ); + $this->view = new \OC_FilesystemView('/'); $this->folder1 = '/folder1'; $this->subfolder = '/subfolder1'; @@ -97,154 +101,176 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase $this->filename = 'share-tmp.test'; // we don't want to tests with app files_trashbin enabled - \OC_App::disable( 'files_trashbin' ); + \OC_App::disable('files_trashbin'); // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); + $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); } function tearDown() { // reset app files_trashbin - if ( $this->stateFilesTrashbin ) { - OC_App::enable( 'files_trashbin' ); - } else { - OC_App::disable( 'files_trashbin' ); + if ($this->stateFilesTrashbin) { + OC_App::enable('files_trashbin'); + } + else { + OC_App::disable('files_trashbin'); } } public static function tearDownAfterClass() { // clean group - \OC_Group::deleteGroup( 'group1' ); + \OC_Group::deleteGroup(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1); // cleanup users - \OC_User::deleteUser( 'user1' ); - \OC_User::deleteUser( 'user2' ); - \OC_User::deleteUser( 'user3' ); + \OC_User::deleteUser(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + \OC_User::deleteUser(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); + \OC_User::deleteUser(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); + \OC_User::deleteUser(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4); } /** * @param bool $withTeardown */ - function testShareFile( $withTeardown = true ) { + function testShareFile($withTeardown = true) { // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // save file with content - $cryptedFile = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); + $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); // test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created file - $fileInfo = $this->view->getFileInfo( '/admin/files/' . $this->filename ); + $fileInfo = $this->view->getFileInfo( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); // check if we have a valid file info - $this->assertTrue( is_array( $fileInfo ) ); + $this->assertTrue(is_array($fileInfo)); // check if the unencrypted file size is stored - $this->assertGreaterThan( 0, $fileInfo['unencrypted_size'] ); + $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the file - \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_ALL ); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, OCP\PERMISSION_ALL); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key for user1 exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); // login as user1 - $this->loginHelper( 'user1' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents( '/user1/files/Shared/' . $this->filename ); + $retrievedCryptedFile = $this->view->file_get_contents( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files/Shared/' . $this->filename); // check if data is the same as we previously written - $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); + $this->assertEquals($this->dataShort, $retrievedCryptedFile); // cleanup - if ( $withTeardown ) { + if ($withTeardown) { // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // unshare the file - \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1' ); + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); // cleanup - $this->view->unlink( '/admin/files/' . $this->filename ); + $this->view->unlink( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '.shareKey')); } } /** * @param bool $withTeardown */ - function testReShareFile( $withTeardown = true ) { - $this->testShareFile( false ); + function testReShareFile($withTeardown = true) { + $this->testShareFile(false); // login as user1 - $this->loginHelper( 'user1' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // get the file info - $fileInfo = $this->view->getFileInfo( '/user1/files/Shared/' . $this->filename ); + $fileInfo = $this->view->getFileInfo( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files/Shared/' . $this->filename); // share the file with user2 - \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2', OCP\PERMISSION_ALL ); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3, OCP\PERMISSION_ALL); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key for user2 exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.shareKey')); // login as user2 - $this->loginHelper( 'user2' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents( '/user2/files/Shared/' . $this->filename ); + $retrievedCryptedFile = $this->view->file_get_contents( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '/files/Shared/' . $this->filename); // check if data is the same as previously written - $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); + $this->assertEquals($this->dataShort, $retrievedCryptedFile); // cleanup - if ( $withTeardown ) { + if ($withTeardown) { // login as user1 - $this->loginHelper( 'user1' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // unshare the file with user2 - \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2' ); + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.shareKey')); // unshare the file with user1 - \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1' ); + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user1.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); // cleanup - $this->view->unlink( '/admin/files/' . $this->filename ); + $this->view->unlink( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '.shareKey')); } } @@ -252,69 +278,85 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase * @param bool $withTeardown * @return array */ - function testShareFolder( $withTeardown = true ) { + function testShareFolder($withTeardown = true) { // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // create folder structure - $this->view->mkdir( '/admin/files' . $this->folder1 ); - $this->view->mkdir( '/admin/files' . $this->folder1 . $this->subfolder ); - $this->view->mkdir( '/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder ); + $this->view->mkdir('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this->folder1); + $this->view->mkdir( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this->folder1 . $this->subfolder); + $this->view->mkdir( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this->folder1 . $this->subfolder + . $this->subsubfolder); // save file with content - $cryptedFile = file_put_contents( 'crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort ); + $cryptedFile = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' + . $this->filename, $this->dataShort); // test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created folder - $fileInfo = $this->view->getFileInfo( '/admin/files' . $this->folder1 ); + $fileInfo = $this->view->getFileInfo( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this->folder1); // check if we have a valid file info - $this->assertTrue( is_array( $fileInfo ) ); + $this->assertTrue(is_array($fileInfo)); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the folder with user1 - \OCP\Share::shareItem( 'folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1', OCP\PERMISSION_ALL ); + \OCP\Share::shareItem('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, OCP\PERMISSION_ALL); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key for user1 exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); // login as user1 - $this->loginHelper( 'user1' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents( '/user1/files/Shared' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename ); + $retrievedCryptedFile = $this->view->file_get_contents( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files/Shared' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' . $this->filename); // check if data is the same - $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); + $this->assertEquals($this->dataShort, $retrievedCryptedFile); // cleanup - if ( $withTeardown ) { + if ($withTeardown) { // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // unshare the folder with user1 - \OCP\Share::unshare( 'folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1' ); + \OCP\Share::unshare('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys' + . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); // cleanup - $this->view->unlink( '/admin/files' . $this->folder1 ); + $this->view->unlink('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this->folder1); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys' + . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '.shareKey')); } return $fileInfo; @@ -323,462 +365,547 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase /** * @param bool $withTeardown */ - function testReShareFolder( $withTeardown = true ) { - $fileInfoFolder1 = $this->testShareFolder( false ); + function testReShareFolder($withTeardown = true) { + $fileInfoFolder1 = $this->testShareFolder(false); // login as user1 - $this->loginHelper( 'user1' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created folder - $fileInfoSubFolder = $this->view->getFileInfo( '/user1/files/Shared' . $this->folder1 . $this->subfolder ); + $fileInfoSubFolder = $this->view->getFileInfo( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files/Shared' . $this->folder1 + . $this->subfolder); // check if we have a valid file info - $this->assertTrue( is_array( $fileInfoSubFolder ) ); + $this->assertTrue(is_array($fileInfoSubFolder)); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the file with user2 - \OCP\Share::shareItem( 'folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2', OCP\PERMISSION_ALL ); + \OCP\Share::shareItem('folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3, OCP\PERMISSION_ALL); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key for user2 exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user2.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.shareKey')); // login as user2 - $this->loginHelper( 'user2' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents( '/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename ); + $retrievedCryptedFile = $this->view->file_get_contents( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '/files/Shared' . $this->subfolder + . $this->subsubfolder . '/' . $this->filename); // check if data is the same - $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); + $this->assertEquals($this->dataShort, $retrievedCryptedFile); // get the file info - $fileInfo = $this->view->getFileInfo( '/user2/files/Shared' . $this->subfolder . $this->subsubfolder . '/' . $this->filename ); + $fileInfo = $this->view->getFileInfo( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '/files/Shared' . $this->subfolder + . $this->subsubfolder . '/' . $this->filename); // check if we have fileInfos - $this->assertTrue( is_array( $fileInfo ) ); + $this->assertTrue(is_array($fileInfo)); // share the file with user3 - \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user3', OCP\PERMISSION_ALL ); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4, OCP\PERMISSION_ALL); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key for user3 exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user3.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4 . '.shareKey')); // login as user3 - $this->loginHelper( 'user3' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents( '/user3/files/Shared/' . $this->filename ); + $retrievedCryptedFile = $this->view->file_get_contents( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4 . '/files/Shared/' . $this->filename); // check if data is the same - $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); + $this->assertEquals($this->dataShort, $retrievedCryptedFile); // cleanup - if ( $withTeardown ) { + if ($withTeardown) { // login as user2 - $this->loginHelper( 'user2' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); // unshare the file with user3 - \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user3' ); + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user3.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys' + . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4 . '.shareKey')); // login as user1 - $this->loginHelper( 'user1' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // unshare the folder with user2 - \OCP\Share::unshare( 'folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user2' ); + \OCP\Share::unshare('folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user2.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys' + . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.shareKey')); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // unshare the folder1 with user1 - \OCP\Share::unshare( 'folder', $fileInfoFolder1['fileid'], \OCP\Share::SHARE_TYPE_USER, 'user1' ); + \OCP\Share::unshare('folder', $fileInfoFolder1['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys' + . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); // cleanup - $this->view->unlink( '/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename ); + $this->view->unlink( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this->folder1 . $this->subfolder + . $this->subsubfolder . '/' . $this->filename); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys' + . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '.shareKey')); } } function testPublicShareFile() { // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // save file with content - $cryptedFile = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); + $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); // test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created file - $fileInfo = $this->view->getFileInfo( '/admin/files/' . $this->filename ); + $fileInfo = $this->view->getFileInfo( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); // check if we have a valid file info - $this->assertTrue( is_array( $fileInfo ) ); + $this->assertTrue(is_array($fileInfo)); // check if the unencrypted file size is stored - $this->assertGreaterThan( 0, $fileInfo['unencrypted_size'] ); + $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the file - \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, false, OCP\PERMISSION_ALL ); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, false, OCP\PERMISSION_ALL); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); - $publicShareKeyId = \OC_Appconfig::getValue( 'files_encryption', 'publicShareKeyId' ); + $publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); // check if share key for public exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $publicShareKeyId . '.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . $publicShareKeyId . '.shareKey')); // some hacking to simulate public link $GLOBALS['app'] = 'files_sharing'; - $GLOBALS['fileOwner'] = 'admin'; - \OC_User::setUserId( '' ); + $GLOBALS['fileOwner'] = \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1; + \OC_User::setUserId(''); // get file contents - $retrievedCryptedFile = file_get_contents( 'crypt://' . $this->filename ); + $retrievedCryptedFile = file_get_contents('crypt://' . $this->filename); // check if data is the same as we previously written - $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); + $this->assertEquals($this->dataShort, $retrievedCryptedFile); // tear down // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // unshare the file - \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null ); + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $publicShareKeyId . '.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . $publicShareKeyId . '.shareKey')); // cleanup - $this->view->unlink( '/admin/files/' . $this->filename ); + $this->view->unlink('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '.shareKey')); } function testShareFileWithGroup() { // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // save file with content - $cryptedFile = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); + $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); // test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created file - $fileInfo = $this->view->getFileInfo( '/admin/files/' . $this->filename ); + $fileInfo = $this->view->getFileInfo( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); // check if we have a valid file info - $this->assertTrue( is_array( $fileInfo ) ); + $this->assertTrue(is_array($fileInfo)); // check if the unencrypted file size is stored - $this->assertGreaterThan( 0, $fileInfo['unencrypted_size'] ); + $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the file - \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1', OCP\PERMISSION_ALL ); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1, OCP\PERMISSION_ALL); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key for user2 and user3 exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user3.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.shareKey')); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4 . '.shareKey')); // login as user1 - $this->loginHelper( 'user2' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); // get file contents - $retrievedCryptedFile = $this->view->file_get_contents( '/user2/files/Shared/' . $this->filename ); + $retrievedCryptedFile = $this->view->file_get_contents( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '/files/Shared/' . $this->filename); // check if data is the same as we previously written - $this->assertEquals( $this->dataShort, $retrievedCryptedFile ); + $this->assertEquals($this->dataShort, $retrievedCryptedFile); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // unshare the file - \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1' ); + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user3.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.shareKey')); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4 . '.shareKey')); // cleanup - $this->view->unlink( '/admin/files/' . $this->filename ); + $this->view->unlink('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '.shareKey')); } function testRecoveryFile() { // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); - \OCA\Encryption\Helper::adminEnableRecovery( null, 'test123' ); - $recoveryKeyId = OC_Appconfig::getValue( 'files_encryption', 'recoveryKeyId' ); + \OCA\Encryption\Helper::adminEnableRecovery(null, 'test123'); + $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); // check if control file created - $this->assertTrue( $this->view->file_exists( '/control-file/controlfile.enc' ) ); + $this->assertTrue($this->view->file_exists('/control-file/controlfile.enc')); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); - $util = new \OCA\Encryption\Util( new \OC_FilesystemView( '/' ), 'admin' ); + $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if recovery password match - $this->assertTrue( $util->checkRecoveryPassword( 'test123' ) ); + $this->assertTrue($util->checkRecoveryPassword('test123')); // enable recovery for admin - $this->assertTrue( $util->setRecoveryForUser( 1 ) ); + $this->assertTrue($util->setRecoveryForUser(1)); // create folder structure - $this->view->mkdir( '/admin/files' . $this->folder1 ); - $this->view->mkdir( '/admin/files' . $this->folder1 . $this->subfolder ); - $this->view->mkdir( '/admin/files' . $this->folder1 . $this->subfolder . $this->subsubfolder ); + $this->view->mkdir('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this->folder1); + $this->view->mkdir( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this->folder1 . $this->subfolder); + $this->view->mkdir( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this->folder1 . $this->subfolder + . $this->subsubfolder); // save file with content - $cryptedFile1 = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); - $cryptedFile2 = file_put_contents( 'crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort ); + $cryptedFile1 = file_put_contents('crypt://' . $this->filename, $this->dataShort); + $cryptedFile2 = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' + . $this->filename, $this->dataShort); // test that data was successfully written - $this->assertTrue( is_int( $cryptedFile1 ) ); - $this->assertTrue( is_int( $cryptedFile2 ) ); + $this->assertTrue(is_int($cryptedFile1)); + $this->assertTrue(is_int($cryptedFile2)); // check if share key for admin and recovery exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.admin.shareKey' ) ); - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.admin.shareKey' ) ); - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '.shareKey')); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '.shareKey')); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); // disable recovery for admin - $this->assertTrue( $util->setRecoveryForUser( 0 ) ); + $this->assertTrue($util->setRecoveryForUser(0)); // remove all recovery keys - $util->removeRecoveryKeys( '/' ); + $util->removeRecoveryKeys('/'); // check if share key for recovery not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); // enable recovery for admin - $this->assertTrue( $util->setRecoveryForUser( 1 ) ); + $this->assertTrue($util->setRecoveryForUser(1)); // remove all recovery keys - $util->addRecoveryKeys( '/' ); + $util->addRecoveryKeys('/'); // check if share key for admin and recovery exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); // cleanup - $this->view->unlink( '/admin/files/' . $this->filename ); - $this->view->unlink( '/admin/files/' . $this->folder1 ); + $this->view->unlink('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); + $this->view->unlink('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->folder1); // check if share key for recovery not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); - - $this->assertTrue( \OCA\Encryption\Helper::adminEnableRecovery( null, 'test123' ) ); - $this->assertTrue( \OCA\Encryption\Helper::adminDisableRecovery( 'test123' ) ); - $this->assertEquals( 0, \OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + + $this->assertTrue(\OCA\Encryption\Helper::adminEnableRecovery(null, 'test123')); + $this->assertTrue(\OCA\Encryption\Helper::adminDisableRecovery('test123')); + $this->assertEquals(0, \OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled')); } function testRecoveryForUser() { // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); - \OCA\Encryption\Helper::adminEnableRecovery( null, 'test123' ); - $recoveryKeyId = OC_Appconfig::getValue( 'files_encryption', 'recoveryKeyId' ); + \OCA\Encryption\Helper::adminEnableRecovery(null, 'test123'); + $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); // check if control file created - $this->assertTrue( $this->view->file_exists( '/control-file/controlfile.enc' ) ); + $this->assertTrue($this->view->file_exists('/control-file/controlfile.enc')); // login as user1 - $this->loginHelper( 'user1' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); - $util = new \OCA\Encryption\Util( new \OC_FilesystemView( '/' ), 'user1' ); + $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // enable recovery for admin - $this->assertTrue( $util->setRecoveryForUser( 1 ) ); + $this->assertTrue($util->setRecoveryForUser(1)); // create folder structure - $this->view->mkdir( '/user1/files' . $this->folder1 ); - $this->view->mkdir( '/user1/files' . $this->folder1 . $this->subfolder ); - $this->view->mkdir( '/user1/files' . $this->folder1 . $this->subfolder . $this->subsubfolder ); + $this->view->mkdir('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files' . $this->folder1); + $this->view->mkdir( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files' . $this->folder1 . $this->subfolder); + $this->view->mkdir( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files' . $this->folder1 . $this->subfolder + . $this->subsubfolder); // save file with content - $cryptedFile1 = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); - $cryptedFile2 = file_put_contents( 'crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename, $this->dataShort ); + $cryptedFile1 = file_put_contents('crypt://' . $this->filename, $this->dataShort); + $cryptedFile2 = file_put_contents('crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' + . $this->filename, $this->dataShort); // test that data was successfully written - $this->assertTrue( is_int( $cryptedFile1 ) ); - $this->assertTrue( is_int( $cryptedFile2 ) ); + $this->assertTrue(is_int($cryptedFile1)); + $this->assertTrue(is_int($cryptedFile2)); // check if share key for user and recovery exists - $this->assertTrue( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->filename . '.user1.shareKey' ) ); - $this->assertTrue( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); - $this->assertTrue( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey' ) ); - $this->assertTrue( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // change password - \OC_User::setPassword( 'user1', 'test', 'test123' ); + \OC_User::setPassword(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, 'test', 'test123'); // login as user1 - $this->loginHelper( 'user1', false, 'test' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, false, 'test'); // get file contents - $retrievedCryptedFile1 = file_get_contents( 'crypt://' . $this->filename ); - $retrievedCryptedFile2 = file_get_contents( 'crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename ); + $retrievedCryptedFile1 = file_get_contents('crypt://' . $this->filename); + $retrievedCryptedFile2 = file_get_contents( + 'crypt://' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename); // check if data is the same as we previously written - $this->assertEquals( $this->dataShort, $retrievedCryptedFile1 ); - $this->assertEquals( $this->dataShort, $retrievedCryptedFile2 ); + $this->assertEquals($this->dataShort, $retrievedCryptedFile1); + $this->assertEquals($this->dataShort, $retrievedCryptedFile2); // cleanup - $this->view->unlink( '/user1/files' . $this->folder1 ); - $this->view->unlink( '/user1/files' . $this->filename ); + $this->view->unlink('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files' . $this->folder1); + $this->view->unlink('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files' . $this->filename); // check if share key for user and recovery exists - $this->assertFalse( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->filename . '.user1.shareKey' ) ); - $this->assertFalse( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); - $this->assertFalse( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.user1.shareKey' ) ); - $this->assertFalse( $this->view->file_exists( '/user1/files_encryption/share-keys/' . $this->folder1 . $this->subfolder . $this->subsubfolder . '/' . $this->filename . '.' . $recoveryKeyId . '.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files_encryption/share-keys/' . $this->folder1 + . $this->subfolder . $this->subsubfolder . '/' + . $this->filename . '.' . $recoveryKeyId . '.shareKey')); // enable recovery for admin - $this->assertTrue( $util->setRecoveryForUser( 0 ) ); + $this->assertTrue($util->setRecoveryForUser(0)); - \OCA\Encryption\Helper::adminDisableRecovery( 'test123' ); - $this->assertEquals( 0, \OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ) ); + \OCA\Encryption\Helper::adminDisableRecovery('test123'); + $this->assertEquals(0, \OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled')); } function testFailShareFile() { // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // save file with content - $cryptedFile = file_put_contents( 'crypt://' . $this->filename, $this->dataShort ); + $cryptedFile = file_put_contents('crypt://' . $this->filename, $this->dataShort); // test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get the file info from previous created file - $fileInfo = $this->view->getFileInfo( '/admin/files/' . $this->filename ); + $fileInfo = $this->view->getFileInfo( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); // check if we have a valid file info - $this->assertTrue( is_array( $fileInfo ) ); + $this->assertTrue(is_array($fileInfo)); // check if the unencrypted file size is stored - $this->assertGreaterThan( 0, $fileInfo['unencrypted_size'] ); + $this->assertGreaterThan(0, $fileInfo['unencrypted_size']); // break users public key - $this->view->rename( '/public-keys/user2.public.key', '/public-keys/user2.public.key_backup' ); + $this->view->rename('/public-keys/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.public.key', + '/public-keys/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.public.key_backup'); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // share the file - \OCP\Share::shareItem( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1', OCP\PERMISSION_ALL ); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1, OCP\PERMISSION_ALL); // login as admin - $this->loginHelper( 'admin' ); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key for user1 not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.shareKey')); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // break user1 public key - $this->view->rename( '/public-keys/user2.public.key_backup', '/public-keys/user2.public.key' ); + $this->view->rename( + '/public-keys/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.public.key_backup', + '/public-keys/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.public.key'); // remove share file - $this->view->unlink( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ); + $this->view->unlink('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 + . '.shareKey'); // re-enable the file proxy \OC_FileProxy::$enabled = $proxyStatus; // unshare the file with user1 - \OCP\Share::unshare( 'file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, 'group1' ); + \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1); // check if share key not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $this->filename . '.user2.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files_encryption/share-keys/' + . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.shareKey')); // cleanup - $this->view->unlink( '/admin/files/' . $this->filename ); + $this->view->unlink('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); } - - /** - * @param $user - * @param bool $create - * @param bool $password - */ - public static function loginHelper( $user, $create = false, $password = false ) { - if ( $create ) { - \OC_User::createUser( $user, $user ); - } - - if ( $password === false ) { - $password = $user; - } - - \OC_Util::tearDownFS(); - \OC_User::setUserId( '' ); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS( $user ); - \OC_User::setUserId( $user ); - - $params['uid'] = $user; - $params['password'] = $password; - OCA\Encryption\Hooks::login( $params ); - } } diff --git a/apps/files_encryption/tests/stream.php b/apps/files_encryption/tests/stream.php index 59b310c7ac8..3d978767542 100644 --- a/apps/files_encryption/tests/stream.php +++ b/apps/files_encryption/tests/stream.php @@ -20,13 +20,14 @@ * */ -require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); -require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); +require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); +require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); +require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); +require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); +require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); +require_once realpath(dirname(__FILE__) . '/../lib/util.php'); +require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath(dirname(__FILE__) . '/util.php'); use OCA\Encryption; @@ -34,8 +35,9 @@ use OCA\Encryption; * Class Test_Encryption_Stream * @brief this class provide basic stream tests */ -class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase -{ +class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase { + + const TEST_ENCRYPTION_STREAM_USER1 = "test-stream-user1"; public $userId; public $pass; @@ -49,138 +51,130 @@ class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase public static function setUpBeforeClass() { // reset backend \OC_User::clearBackends(); - \OC_User::useBackend( 'database' ); + \OC_User::useBackend('database'); // Filesystem related hooks \OCA\Encryption\Helper::registerFilesystemHooks(); // clear and register hooks \OC_FileProxy::clearProxies(); - \OC_FileProxy::register( new OCA\Encryption\Proxy() ); - - // setup filesystem - \OC_Util::tearDownFS(); - \OC_User::setUserId( '' ); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS( 'admin' ); - \OC_User::setUserId( 'admin' ); - - // login admin - $params['uid'] = 'admin'; - $params['password'] = 'admin'; - OCA\Encryption\Hooks::login( $params ); + \OC_FileProxy::register(new OCA\Encryption\Proxy()); + // create test user + \Test_Encryption_Util::loginHelper(\Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1, true); } function setUp() { // set user id - \OC_User::setUserId( 'admin' ); - $this->userId = 'admin'; - $this->pass = 'admin'; + \OC_User::setUserId(\Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1); + $this->userId = \Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1; + $this->pass = \Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1; // init filesystem view - $this->view = new \OC_FilesystemView( '/' ); + $this->view = new \OC_FilesystemView('/'); // init short data $this->dataShort = 'hats'; // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); + $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); // we don't want to tests with app files_trashbin enabled - \OC_App::disable( 'files_trashbin' ); + \OC_App::disable('files_trashbin'); } function tearDown() { // reset app files_trashbin - if ( $this->stateFilesTrashbin ) { - OC_App::enable( 'files_trashbin' ); - } else { - OC_App::disable( 'files_trashbin' ); + if ($this->stateFilesTrashbin) { + OC_App::enable('files_trashbin'); + } + else { + OC_App::disable('files_trashbin'); } } public static function tearDownAfterClass() { - + // cleanup test user + \OC_User::deleteUser(\Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1); } function testStreamOptions() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); - $handle = $view->fopen( $filename, 'r' ); + $handle = $view->fopen($filename, 'r'); // check if stream is at position zero - $this->assertEquals( 0, ftell( $handle ) ); + $this->assertEquals(0, ftell($handle)); // set stream options - $this->assertTrue( flock( $handle, LOCK_SH ) ); - $this->assertTrue( flock( $handle, LOCK_UN ) ); + $this->assertTrue(flock($handle, LOCK_SH)); + $this->assertTrue(flock($handle, LOCK_UN)); // tear down - $view->unlink( $filename ); + $view->unlink($filename); } function testStreamSetBlocking() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); - $handle = $view->fopen( $filename, 'r' ); + $handle = $view->fopen($filename, 'r'); // set stream options - $this->assertTrue( stream_set_blocking( $handle, 1 ) ); + $this->assertTrue(stream_set_blocking($handle, 1)); // tear down - $view->unlink( $filename ); + $view->unlink($filename); } function testStreamSetTimeout() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); - $handle = $view->fopen( $filename, 'r' ); + $handle = $view->fopen($filename, 'r'); // set stream options - $this->assertFalse( stream_set_timeout( $handle, 1 ) ); + $this->assertFalse(stream_set_timeout($handle, 1)); // tear down - $view->unlink( $filename ); + $view->unlink($filename); } function testStreamSetWriteBuffer() { $filename = '/tmp-' . time(); - $view = new \OC\Files\View( '/' . $this->userId . '/files' ); + $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper - $cryptedFile = $view->file_put_contents( $filename, $this->dataShort ); + $cryptedFile = $view->file_put_contents($filename, $this->dataShort); // Test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); - $handle = $view->fopen( $filename, 'r' ); + $handle = $view->fopen($filename, 'r'); // set stream options - $this->assertEquals( 0, stream_set_write_buffer( $handle, 1024 ) ); + $this->assertEquals(0, stream_set_write_buffer($handle, 1024)); // tear down - $view->unlink( $filename ); + $view->unlink($filename); } } \ No newline at end of file diff --git a/apps/files_encryption/tests/trashbin.php b/apps/files_encryption/tests/trashbin.php index 1d7cdc60b21..29f8fb5a396 100755 --- a/apps/files_encryption/tests/trashbin.php +++ b/apps/files_encryption/tests/trashbin.php @@ -20,14 +20,15 @@ * */ -require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); -require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); -require_once realpath( dirname( __FILE__ ) . '/../../files_trashbin/appinfo/app.php' ); +require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); +require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); +require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); +require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); +require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); +require_once realpath(dirname(__FILE__) . '/../lib/util.php'); +require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath(dirname(__FILE__) . '/../../files_trashbin/appinfo/app.php'); +require_once realpath(dirname(__FILE__) . '/util.php'); use OCA\Encryption; @@ -35,8 +36,9 @@ use OCA\Encryption; * Class Test_Encryption_Trashbin * @brief this class provide basic trashbin app tests */ -class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase -{ +class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase { + + const TEST_ENCRYPTION_TRASHBIN_USER1 = "test-trashbin-user1"; public $userId; public $pass; @@ -53,10 +55,10 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase public static function setUpBeforeClass() { // reset backend \OC_User::clearBackends(); - \OC_User::useBackend( 'database' ); + \OC_User::useBackend('database'); - \OC_Hook::clear( 'OC_Filesystem' ); - \OC_Hook::clear( 'OC_User' ); + \OC_Hook::clear('OC_Filesystem'); + \OC_Hook::clear('OC_User'); // trashbin hooks \OCA\Files_Trashbin\Trashbin::registerHooks(); @@ -66,29 +68,20 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase // clear and register hooks \OC_FileProxy::clearProxies(); - \OC_FileProxy::register( new OCA\Encryption\Proxy() ); - - // setup filesystem - \OC_Util::tearDownFS(); - \OC_User::setUserId( '' ); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS( 'admin' ); - \OC_User::setUserId( 'admin' ); - - // login admin - $params['uid'] = 'admin'; - $params['password'] = 'admin'; - OCA\Encryption\Hooks::login( $params ); + \OC_FileProxy::register(new OCA\Encryption\Proxy()); + + // create test user + \Test_Encryption_Util::loginHelper(\Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1, true); } function setUp() { // set user id - \OC_User::setUserId( 'admin' ); - $this->userId = 'admin'; - $this->pass = 'admin'; + \OC_User::setUserId(\Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1); + $this->userId = \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1; + $this->pass = \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1; // init filesystem view - $this->view = new \OC_FilesystemView( '/' ); + $this->view = new \OC_FilesystemView('/'); // init short data $this->dataShort = 'hats'; @@ -98,23 +91,25 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase $this->subsubfolder = '/subsubfolder1'; // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); + $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); // we want to tests with app files_trashbin enabled - \OC_App::enable( 'files_trashbin' ); + \OC_App::enable('files_trashbin'); } function tearDown() { // reset app files_trashbin - if ( $this->stateFilesTrashbin ) { - OC_App::enable( 'files_trashbin' ); - } else { - OC_App::disable( 'files_trashbin' ); + if ($this->stateFilesTrashbin) { + OC_App::enable('files_trashbin'); + } + else { + OC_App::disable('files_trashbin'); } } public static function tearDownAfterClass() { - + // cleanup test user + \OC_User::deleteUser(\Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1); } /** @@ -126,49 +121,63 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase $filename = 'tmp-' . time() . '.txt'; // save file with content - $cryptedFile = file_put_contents( 'crypt:///' . $filename, $this->dataShort ); + $cryptedFile = file_put_contents('crypt:///' . $filename, $this->dataShort); // test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // check if key for admin exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $filename . '.key' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename + . '.key')); // check if share key for admin exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' + . $filename . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); // delete file - \OC\FIles\Filesystem::unlink( $filename ); + \OC\FIles\Filesystem::unlink($filename); // check if file not exists - $this->assertFalse( $this->view->file_exists( '/admin/files/' . $filename ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files/' . $filename)); // check if key for admin not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $filename . '.key' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename + . '.key')); // check if share key for admin not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' + . $filename . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); // get files - $trashFiles = $this->view->getDirectoryContent( '/admin/files_trashbin/files/' ); + $trashFiles = $this->view->getDirectoryContent( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/files/'); $trashFileSuffix = null; // find created file with timestamp - foreach ( $trashFiles as $file ) { - if ( strncmp( $file['path'], $filename, strlen( $filename ) ) ) { - $path_parts = pathinfo( $file['name'] ); + foreach ($trashFiles as $file) { + if (strncmp($file['path'], $filename, strlen($filename))) { + $path_parts = pathinfo($file['name']); $trashFileSuffix = $path_parts['extension']; } } // check if we found the file we created - $this->assertNotNull( $trashFileSuffix ); + $this->assertNotNull($trashFileSuffix); // check if key for admin not exists - $this->assertTrue( $this->view->file_exists( '/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/keyfiles/' . $filename + . '.key.' . $trashFileSuffix)); // check if share key for admin not exists - $this->assertTrue( $this->view->file_exists( '/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/share-keys/' . $filename + . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey.' . $trashFileSuffix)); // return filename for next test return $filename . '.' . $trashFileSuffix; @@ -179,25 +188,30 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase * * @depends testDeleteFile */ - function testRestoreFile( $filename ) { + function testRestoreFile($filename) { // prepare file information - $path_parts = pathinfo( $filename ); + $path_parts = pathinfo($filename); $trashFileSuffix = $path_parts['extension']; - $timestamp = str_replace( 'd', '', $trashFileSuffix ); - $fileNameWithoutSuffix = str_replace( '.' . $trashFileSuffix, '', $filename ); + $timestamp = str_replace('d', '', $trashFileSuffix); + $fileNameWithoutSuffix = str_replace('.' . $trashFileSuffix, '', $filename); // restore file - $this->assertTrue( \OCA\Files_Trashbin\Trashbin::restore( $filename, $fileNameWithoutSuffix, $timestamp ) ); + $this->assertTrue(\OCA\Files_Trashbin\Trashbin::restore($filename, $fileNameWithoutSuffix, $timestamp)); // check if file exists - $this->assertTrue( $this->view->file_exists( '/admin/files/' . $fileNameWithoutSuffix ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files/' . $fileNameWithoutSuffix)); // check if key for admin exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $fileNameWithoutSuffix . '.key' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' + . $fileNameWithoutSuffix . '.key')); // check if share key for admin exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $fileNameWithoutSuffix . '.admin.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' + . $fileNameWithoutSuffix . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); } /** @@ -209,59 +223,78 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase $filename = 'tmp-' . time() . '.txt'; // save file with content - $cryptedFile = file_put_contents( 'crypt:///' . $filename, $this->dataShort ); + $cryptedFile = file_put_contents('crypt:///' . $filename, $this->dataShort); // test that data was successfully written - $this->assertTrue( is_int( $cryptedFile ) ); + $this->assertTrue(is_int($cryptedFile)); // check if key for admin exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $filename . '.key' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename + . '.key')); // check if share key for admin exists - $this->assertTrue( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' + . $filename . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); // delete file - \OC\FIles\Filesystem::unlink( $filename ); + \OC\FIles\Filesystem::unlink($filename); // check if file not exists - $this->assertFalse( $this->view->file_exists( '/admin/files/' . $filename ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files/' . $filename)); // check if key for admin not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/keyfiles/' . $filename . '.key' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename + . '.key')); // check if share key for admin not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_encryption/share-keys/' . $filename . '.admin.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' + . $filename . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); // find created file with timestamp - $query = \OC_DB::prepare( 'SELECT `timestamp`,`type` FROM `*PREFIX*files_trash`' - . ' WHERE `id`=?' ); - $result = $query->execute( array( $filename ) )->fetchRow(); + $query = \OC_DB::prepare('SELECT `timestamp`,`type` FROM `*PREFIX*files_trash`' + . ' WHERE `id`=?'); + $result = $query->execute(array($filename))->fetchRow(); - $this->assertTrue( is_array( $result ) ); + $this->assertTrue(is_array($result)); // build suffix $trashFileSuffix = 'd' . $result['timestamp']; // check if key for admin exists - $this->assertTrue( $this->view->file_exists( '/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/keyfiles/' . $filename + . '.key.' . $trashFileSuffix)); // check if share key for admin exists - $this->assertTrue( $this->view->file_exists( '/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix ) ); + $this->assertTrue($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/share-keys/' . $filename + . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey.' . $trashFileSuffix)); // get timestamp from file - $timestamp = str_replace( 'd', '', $trashFileSuffix ); + $timestamp = str_replace('d', '', $trashFileSuffix); // delete file forever - $this->assertGreaterThan( 0, \OCA\Files_Trashbin\Trashbin::delete( $filename, $timestamp ) ); + $this->assertGreaterThan(0, \OCA\Files_Trashbin\Trashbin::delete($filename, $timestamp)); // check if key for admin not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_trashbin/files/' . $filename . '.' . $trashFileSuffix ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/files/' . $filename . '.' + . $trashFileSuffix)); // check if key for admin not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/keyfiles/' . $filename + . '.key.' . $trashFileSuffix)); // check if share key for admin not exists - $this->assertFalse( $this->view->file_exists( '/admin/files_trashbin/share-keys/' . $filename . '.admin.shareKey.' . $trashFileSuffix ) ); + $this->assertFalse($this->view->file_exists( + '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/share-keys/' . $filename + . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey.' . $trashFileSuffix)); } } \ No newline at end of file diff --git a/apps/files_encryption/tests/util.php b/apps/files_encryption/tests/util.php index af78894da2b..2069cae27e5 100755 --- a/apps/files_encryption/tests/util.php +++ b/apps/files_encryption/tests/util.php @@ -6,21 +6,23 @@ * See the COPYING-README file. */ -require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); -require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); +require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); +require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); +require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); +require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); +require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); +require_once realpath(dirname(__FILE__) . '/../lib/util.php'); +require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); use OCA\Encryption; /** * Class Test_Encryption_Util */ -class Test_Encryption_Util extends \PHPUnit_Framework_TestCase -{ +class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { + + const TEST_ENCRYPTION_UTIL_USER1 = "test-util-user1"; + const TEST_ENCRYPTION_UTIL_LEGACY_USER = "test-legacy-user"; public $userId; public $encryptionDir; @@ -40,24 +42,40 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase public $dataShort; public $legacyEncryptedData; public $legacyEncryptedDataKey; - public $lagacyKey; + public $legacyKey; + public $stateFilesTrashbin; - function setUp() { + public static function setUpBeforeClass() { // reset backend - \OC_User::useBackend( 'database' ); + \OC_User::clearBackends(); + \OC_User::useBackend('database'); - \OC_User::setUserId( 'admin' ); - $this->userId = 'admin'; - $this->pass = 'admin'; + // Filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); + + // clear and register hooks + \OC_FileProxy::clearProxies(); + \OC_FileProxy::register(new OCA\Encryption\Proxy()); + + // create test user + \Test_Encryption_Util::loginHelper(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1, true); + \Test_Encryption_Util::loginHelper(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER, true); + } + + + function setUp() { + \OC_User::setUserId(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1); + $this->userId = \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1; + $this->pass = \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1; // set content for encrypting / decrypting in tests - $this->dataUrl = realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); + $this->dataUrl = realpath(dirname(__FILE__) . '/../lib/crypt.php'); $this->dataShort = 'hats'; - $this->dataLong = file_get_contents( realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ) ); - $this->legacyData = realpath( dirname( __FILE__ ) . '/legacy-text.txt' ); - $this->legacyEncryptedData = realpath( dirname( __FILE__ ) . '/legacy-encrypted-text.txt' ); - $this->legacyEncryptedDataKey = realpath( dirname( __FILE__ ) . '/encryption.key' ); - $this->lagacyKey = '62829813025828180801'; + $this->dataLong = file_get_contents(realpath(dirname(__FILE__) . '/../lib/crypt.php')); + $this->legacyData = realpath(dirname(__FILE__) . '/legacy-text.txt'); + $this->legacyEncryptedData = realpath(dirname(__FILE__) . '/legacy-encrypted-text.txt'); + $this->legacyEncryptedDataKey = realpath(dirname(__FILE__) . '/encryption.key'); + $this->legacyKey = '30943623843030686906'; $keypair = Encryption\Crypt::createKeypair(); @@ -67,52 +85,49 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase $this->publicKeyDir = '/' . 'public-keys'; $this->encryptionDir = '/' . $this->userId . '/' . 'files_encryption'; $this->keyfilesPath = $this->encryptionDir . '/' . 'keyfiles'; - $this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key - $this->privateKeyPath = $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key - - $this->view = new \OC_FilesystemView( '/' ); - - $userHome = \OC_User::getHome( $this->userId ); - $this->dataDir = str_replace( '/' . $this->userId, '', $userHome ); - - // Filesystem related hooks - \OCA\Encryption\Helper::registerFilesystemHooks(); + $this->publicKeyPath = + $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key + $this->privateKeyPath = + $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key - // clear and register hooks - \OC_FileProxy::clearProxies(); - \OC_FileProxy::register( new OCA\Encryption\Proxy() ); + $this->view = new \OC_FilesystemView('/'); - // setup filesystem - \OC_Util::tearDownFS(); - \OC_User::setUserId( '' ); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS( $this->userId ); - \OC_User::setUserId( $this->userId ); + $this->util = new Encryption\Util($this->view, $this->userId); - // login admin - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - OCA\Encryption\Hooks::login( $params ); + // remember files_trashbin state + $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); - $this->util = new Encryption\Util( $this->view, $this->userId ); + // we don't want to tests with app files_trashbin enabled + \OC_App::disable('files_trashbin'); } function tearDown() { - // clear and register hooks - \OC_FileProxy::clearProxies(); + // reset app files_trashbin + if ($this->stateFilesTrashbin) { + OC_App::enable('files_trashbin'); + } + else { + OC_App::disable('files_trashbin'); + } + } + + public static function tearDownAfterClass() { + // cleanup test user + \OC_User::deleteUser(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1); + \OC_User::deleteUser(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER); } /** * @brief test that paths set during User construction are correct */ function testKeyPaths() { - $util = new Encryption\Util( $this->view, $this->userId ); + $util = new Encryption\Util($this->view, $this->userId); - $this->assertEquals( $this->publicKeyDir, $util->getPath( 'publicKeyDir' ) ); - $this->assertEquals( $this->encryptionDir, $util->getPath( 'encryptionDir' ) ); - $this->assertEquals( $this->keyfilesPath, $util->getPath( 'keyfilesPath' ) ); - $this->assertEquals( $this->publicKeyPath, $util->getPath( 'publicKeyPath' ) ); - $this->assertEquals( $this->privateKeyPath, $util->getPath( 'privateKeyPath' ) ); + $this->assertEquals($this->publicKeyDir, $util->getPath('publicKeyDir')); + $this->assertEquals($this->encryptionDir, $util->getPath('encryptionDir')); + $this->assertEquals($this->keyfilesPath, $util->getPath('keyfilesPath')); + $this->assertEquals($this->publicKeyPath, $util->getPath('publicKeyPath')); + $this->assertEquals($this->privateKeyPath, $util->getPath('privateKeyPath')); } @@ -120,78 +135,80 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase * @brief test setup of encryption directories */ function testSetupServerSide() { - $this->assertEquals( true, $this->util->setupServerSide( $this->pass ) ); + $this->assertEquals(true, $this->util->setupServerSide($this->pass)); } /** * @brief test checking whether account is ready for encryption, */ function testUserIsReady() { - $this->assertEquals( true, $this->util->ready() ); + $this->assertEquals(true, $this->util->ready()); } /** * @brief test checking whether account is not ready for encryption, */ - function testUserIsNotReady() { - $this->view->unlink( $this->publicKeyDir ); - - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - $this->assertFalse( OCA\Encryption\Hooks::login( $params ) ); - - $this->view->unlink( $this->privateKeyPath ); - } +// function testUserIsNotReady() { +// $this->view->unlink($this->publicKeyDir); +// +// $params['uid'] = $this->userId; +// $params['password'] = $this->pass; +// $this->assertFalse(OCA\Encryption\Hooks::login($params)); +// +// $this->view->unlink($this->privateKeyPath); +// } /** * @brief test checking whether account is not ready for encryption, */ - function testIsLagacyUser() { - $userView = new \OC_FilesystemView( '/' . $this->userId ); + function testIsLegacyUser() { + \Test_Encryption_Util::loginHelper(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER); + + $userView = new \OC_FilesystemView('/' . \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $encryptionKeyContent = file_get_contents( $this->legacyEncryptedDataKey ); - $userView->file_put_contents( '/encryption.key', $encryptionKeyContent ); + $encryptionKeyContent = file_get_contents($this->legacyEncryptedDataKey); + $userView->file_put_contents('/encryption.key', $encryptionKeyContent); \OC_FileProxy::$enabled = $proxyStatus; - $params['uid'] = $this->userId; - $params['password'] = $this->pass; + $params['uid'] = \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER; + $params['password'] = \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER; - $util = new Encryption\Util( $this->view, $this->userId ); - $util->setMigrationStatus( 0 ); + $util = new Encryption\Util($this->view, \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER); + $util->setMigrationStatus(0); - $this->assertTrue( OCA\Encryption\Hooks::login( $params ) ); + $this->assertTrue(OCA\Encryption\Hooks::login($params)); - $this->assertEquals( $this->lagacyKey, $_SESSION['legacyKey'] ); + $this->assertEquals($this->legacyKey, $_SESSION['legacyKey']); } function testRecoveryEnabledForUser() { - $util = new Encryption\Util( $this->view, $this->userId ); + $util = new Encryption\Util($this->view, $this->userId); // Record the value so we can return it to it's original state later $enabled = $util->recoveryEnabledForUser(); - $this->assertTrue( $util->setRecoveryForUser( 1 ) ); + $this->assertTrue($util->setRecoveryForUser(1)); - $this->assertEquals( 1, $util->recoveryEnabledForUser() ); + $this->assertEquals(1, $util->recoveryEnabledForUser()); - $this->assertTrue( $util->setRecoveryForUser( 0 ) ); + $this->assertTrue($util->setRecoveryForUser(0)); - $this->assertEquals( 0, $util->recoveryEnabledForUser() ); + $this->assertEquals(0, $util->recoveryEnabledForUser()); // Return the setting to it's previous state - $this->assertTrue( $util->setRecoveryForUser( $enabled ) ); + $this->assertTrue($util->setRecoveryForUser($enabled)); } function testGetUidAndFilename() { - \OC_User::setUserId( 'admin' ); + \OC_User::setUserId(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1); $filename = 'tmp-' . time() . '.test'; @@ -199,80 +216,102 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $this->view->file_put_contents( $this->userId . '/files/' . $filename, $this->dataShort ); + $this->view->file_put_contents($this->userId . '/files/' . $filename, $this->dataShort); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; - $util = new Encryption\Util( $this->view, $this->userId ); + $util = new Encryption\Util($this->view, $this->userId); - list( $fileOwnerUid, $file ) = $util->getUidAndFilename( $filename ); + list($fileOwnerUid, $file) = $util->getUidAndFilename($filename); - $this->assertEquals( 'admin', $fileOwnerUid ); + $this->assertEquals(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1, $fileOwnerUid); - $this->assertEquals( $file, $filename ); + $this->assertEquals($file, $filename); - $this->view->unlink( $this->userId . '/files/' . $filename ); + $this->view->unlink($this->userId . '/files/' . $filename); } function testIsSharedPath() { $sharedPath = '/user1/files/Shared/test'; $path = '/user1/files/test'; - $this->assertTrue( $this->util->isSharedPath( $sharedPath ) ); + $this->assertTrue($this->util->isSharedPath($sharedPath)); - $this->assertFalse( $this->util->isSharedPath( $path ) ); + $this->assertFalse($this->util->isSharedPath($path)); } - function testEncryptLagacyFiles() { - // login admin - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - OCA\Encryption\Hooks::login( $params ); + function testEncryptLegacyFiles() { + \Test_Encryption_Util::loginHelper(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER); - $userView = new \OC_FilesystemView( '/' . $this->userId ); - $view = new \OC_FilesystemView( '/' . $this->userId . '/files' ); + $userView = new \OC_FilesystemView('/' . \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER); + $view = new \OC_FilesystemView('/' . \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER . '/files'); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $encryptionKeyContent = file_get_contents( $this->legacyEncryptedDataKey ); - $userView->file_put_contents( '/encryption.key', $encryptionKeyContent ); + $encryptionKeyContent = file_get_contents($this->legacyEncryptedDataKey); + $userView->file_put_contents('/encryption.key', $encryptionKeyContent); - $legacyEncryptedData = file_get_contents( $this->legacyEncryptedData ); - $view->mkdir( '/test/' ); - $view->mkdir( '/test/subtest/' ); - $view->file_put_contents( '/test/subtest/legacy-encrypted-text.txt', $legacyEncryptedData ); + $legacyEncryptedData = file_get_contents($this->legacyEncryptedData); + $view->mkdir('/test/'); + $view->mkdir('/test/subtest/'); + $view->file_put_contents('/test/subtest/legacy-encrypted-text.txt', $legacyEncryptedData); - $fileInfo = $view->getFileInfo( '/test/subtest/legacy-encrypted-text.txt' ); + $fileInfo = $view->getFileInfo('/test/subtest/legacy-encrypted-text.txt'); $fileInfo['encrypted'] = true; - $view->putFileInfo( '/test/subtest/legacy-encrypted-text.txt', $fileInfo ); + $view->putFileInfo('/test/subtest/legacy-encrypted-text.txt', $fileInfo); \OC_FileProxy::$enabled = $proxyStatus; - $params['uid'] = $this->userId; - $params['password'] = $this->pass; + $params['uid'] = \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER; + $params['password'] = \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER; - $util = new Encryption\Util( $this->view, $this->userId ); - $util->setMigrationStatus( 0 ); + $util = new Encryption\Util($this->view, \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER); + $util->setMigrationStatus(0); - $this->assertTrue( OCA\Encryption\Hooks::login( $params ) ); + $this->assertTrue(OCA\Encryption\Hooks::login($params)); - $this->assertEquals( $this->lagacyKey, $_SESSION['legacyKey'] ); + $this->assertEquals($this->legacyKey, $_SESSION['legacyKey']); - $files = $util->findEncFiles( '/' . $this->userId . '/files/' ); + $files = $util->findEncFiles('/' . \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER . '/files/'); - $this->assertTrue( is_array( $files ) ); + $this->assertTrue(is_array($files)); $found = false; - foreach ( $files['encrypted'] as $encryptedFile ) { - if ( $encryptedFile['name'] === 'legacy-encrypted-text.txt' ) { + foreach ($files['encrypted'] as $encryptedFile) { + if ($encryptedFile['name'] === 'legacy-encrypted-text.txt') { $found = true; break; } } - $this->assertTrue( $found ); + $this->assertTrue($found); + } + + /** + * @param $user + * @param bool $create + * @param bool $password + */ + public static function loginHelper($user, $create = false, $password = false) { + if ($create) { + \OC_User::createUser($user, $user); + } + + if ($password === false) { + $password = $user; + } + + \OC_Util::tearDownFS(); + \OC_User::setUserId(''); + \OC\Files\Filesystem::tearDown(); + \OC_Util::setupFS($user); + \OC_User::setUserId($user); + + $params['uid'] = $user; + $params['password'] = $password; + OCA\Encryption\Hooks::login($params); } } \ No newline at end of file diff --git a/apps/files_encryption/tests/webdav.php b/apps/files_encryption/tests/webdav.php index 57848cd273c..94d3ec3fa55 100755 --- a/apps/files_encryption/tests/webdav.php +++ b/apps/files_encryption/tests/webdav.php @@ -20,13 +20,14 @@ * */ -require_once realpath( dirname( __FILE__ ) . '/../../../lib/base.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/crypt.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/keymanager.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/proxy.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/stream.php' ); -require_once realpath( dirname( __FILE__ ) . '/../lib/util.php' ); -require_once realpath( dirname( __FILE__ ) . '/../appinfo/app.php' ); +require_once realpath(dirname(__FILE__) . '/../../../lib/base.php'); +require_once realpath(dirname(__FILE__) . '/../lib/crypt.php'); +require_once realpath(dirname(__FILE__) . '/../lib/keymanager.php'); +require_once realpath(dirname(__FILE__) . '/../lib/proxy.php'); +require_once realpath(dirname(__FILE__) . '/../lib/stream.php'); +require_once realpath(dirname(__FILE__) . '/../lib/util.php'); +require_once realpath(dirname(__FILE__) . '/../appinfo/app.php'); +require_once realpath(dirname(__FILE__) . '/util.php'); use OCA\Encryption; @@ -34,8 +35,9 @@ use OCA\Encryption; * Class Test_Encryption_Webdav * @brief this class provide basic webdav tests for PUT,GET and DELETE */ -class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase -{ +class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase { + + const TEST_ENCRYPTION_WEBDAV_USER1 = "test-webdav-user1"; public $userId; public $pass; @@ -46,57 +48,63 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase public $dataShort; public $stateFilesTrashbin; + public static function setUpBeforeClass() { + // reset backend + \OC_User::clearBackends(); + \OC_User::useBackend('database'); + + // Filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); + + // Filesystem related hooks + \OCA\Encryption\Helper::registerUserHooks(); + + // clear and register hooks + \OC_FileProxy::clearProxies(); + \OC_FileProxy::register(new OCA\Encryption\Proxy()); + + // create test user + \Test_Encryption_Util::loginHelper(\Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1, true); + } + function setUp() { // reset backend - \OC_User::useBackend( 'database' ); + \OC_User::useBackend('database'); // set user id - \OC_User::setUserId( 'admin' ); - $this->userId = 'admin'; - $this->pass = 'admin'; + \OC_User::setUserId(\Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1); + $this->userId = \Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1; + $this->pass = \Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1; // init filesystem view - $this->view = new \OC_FilesystemView( '/' ); + $this->view = new \OC_FilesystemView('/'); // init short data $this->dataShort = 'hats'; - // init filesystem related hooks - \OCA\Encryption\Helper::registerFilesystemHooks(); - - // clear and register hooks - \OC_FileProxy::clearProxies(); - \OC_FileProxy::register( new OCA\Encryption\Proxy() ); - // remember files_trashbin state - $this->stateFilesTrashbin = OC_App::isEnabled( 'files_trashbin' ); + $this->stateFilesTrashbin = OC_App::isEnabled('files_trashbin'); // we don't want to tests with app files_trashbin enabled - \OC_App::disable( 'files_trashbin' ); - - // init filesystem for user - \OC_Util::tearDownFS(); - \OC_User::setUserId( '' ); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS( $this->userId ); - \OC_User::setUserId( $this->userId ); - - // login user - $params['uid'] = $this->userId; - $params['password'] = $this->pass; - OCA\Encryption\Hooks::login( $params ); + \OC_App::disable('files_trashbin'); + + // create test user + \Test_Encryption_Util::loginHelper(\Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1); } function tearDown() { // reset app files_trashbin - if ( $this->stateFilesTrashbin ) { - OC_App::enable( 'files_trashbin' ); - } else { - OC_App::disable( 'files_trashbin' ); + if ($this->stateFilesTrashbin) { + OC_App::enable('files_trashbin'); + } + else { + OC_App::disable('files_trashbin'); } + } - // clear and register hooks - \OC_FileProxy::clearProxies(); + public static function tearDownAfterClass() { + // cleanup test user + \OC_User::deleteUser(\Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1); } /** @@ -115,38 +123,40 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase $_SERVER['HTTP_AUTHORIZATION'] = 'Basic YWRtaW46YWRtaW4='; $_SERVER['CONTENT_TYPE'] = 'application/octet-stream'; $_SERVER['PATH_INFO'] = '/webdav' . $filename; - $_SERVER['CONTENT_LENGTH'] = strlen( $this->dataShort ); + $_SERVER['CONTENT_LENGTH'] = strlen($this->dataShort); // handle webdav request - $this->handleWebdavRequest( $this->dataShort ); + $this->handleWebdavRequest($this->dataShort); // check if file was created - $this->assertTrue( $this->view->file_exists( '/' . $this->userId . '/files' . $filename ) ); + $this->assertTrue($this->view->file_exists('/' . $this->userId . '/files' . $filename)); // check if key-file was created - $this->assertTrue( $this->view->file_exists( '/' . $this->userId . '/files_encryption/keyfiles/' . $filename . '.key' ) ); + $this->assertTrue($this->view->file_exists( + '/' . $this->userId . '/files_encryption/keyfiles/' . $filename . '.key')); // check if shareKey-file was created - $this->assertTrue( $this->view->file_exists( '/' . $this->userId . '/files_encryption/share-keys/' . $filename . '.' . $this->userId . '.shareKey' ) ); + $this->assertTrue($this->view->file_exists( + '/' . $this->userId . '/files_encryption/share-keys/' . $filename . '.' . $this->userId . '.shareKey')); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get encrypted file content - $encryptedContent = $this->view->file_get_contents( '/' . $this->userId . '/files' . $filename ); + $encryptedContent = $this->view->file_get_contents('/' . $this->userId . '/files' . $filename); // restore proxy state \OC_FileProxy::$enabled = $proxyStatus; // check if encrypted content is valid - $this->assertTrue( Encryption\Crypt::isCatfileContent( $encryptedContent ) ); + $this->assertTrue(Encryption\Crypt::isCatfileContent($encryptedContent)); // get decrypted file contents - $decrypt = file_get_contents( 'crypt://' . $filename ); + $decrypt = file_get_contents('crypt://' . $filename); // check if file content match with the written content - $this->assertEquals( $this->dataShort, $decrypt ); + $this->assertEquals($this->dataShort, $decrypt); // return filename for next test return $filename; @@ -157,7 +167,7 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase * * @depends testWebdavPUT */ - function testWebdavGET( $filename ) { + function testWebdavGET($filename) { // set server vars $_SERVER['REQUEST_METHOD'] = 'GET'; @@ -169,7 +179,7 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase $content = $this->handleWebdavRequest(); // check if file content match with the written content - $this->assertEquals( $this->dataShort, $content ); + $this->assertEquals($this->dataShort, $content); // return filename for next test return $filename; @@ -179,7 +189,7 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase * @brief test webdav delete random file * @depends testWebdavGET */ - function testWebdavDELETE( $filename ) { + function testWebdavDELETE($filename) { // set server vars $_SERVER['REQUEST_METHOD'] = 'DELETE'; $_SERVER['REQUEST_URI'] = '/remote.php/webdav' . $filename; @@ -190,13 +200,15 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase $content = $this->handleWebdavRequest(); // check if file was removed - $this->assertFalse( $this->view->file_exists( '/' . $this->userId . '/files' . $filename ) ); + $this->assertFalse($this->view->file_exists('/' . $this->userId . '/files' . $filename)); // check if key-file was removed - $this->assertFalse( $this->view->file_exists( '/' . $this->userId . '/files_encryption/keyfiles' . $filename . '.key' ) ); + $this->assertFalse($this->view->file_exists( + '/' . $this->userId . '/files_encryption/keyfiles' . $filename . '.key')); // check if shareKey-file was removed - $this->assertFalse( $this->view->file_exists( '/' . $this->userId . '/files_encryption/share-keys' . $filename . '.' . $this->userId . '.shareKey' ) ); + $this->assertFalse($this->view->file_exists( + '/' . $this->userId . '/files_encryption/share-keys' . $filename . '.' . $this->userId . '.shareKey')); } /** @@ -206,30 +218,30 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase * * @note this init procedure is copied from /apps/files/remote.php */ - function handleWebdavRequest( $body = false ) { + function handleWebdavRequest($body = false) { // Backends $authBackend = new OC_Connector_Sabre_Auth(); $lockBackend = new OC_Connector_Sabre_Locks(); $requestBackend = new OC_Connector_Sabre_Request(); // Create ownCloud Dir - $publicDir = new OC_Connector_Sabre_Directory( '' ); + $publicDir = new OC_Connector_Sabre_Directory(''); // Fire up server - $server = new Sabre_DAV_Server( $publicDir ); + $server = new Sabre_DAV_Server($publicDir); $server->httpRequest = $requestBackend; - $server->setBaseUri( '/remote.php/webdav/' ); + $server->setBaseUri('/remote.php/webdav/'); // Load plugins - $server->addPlugin( new Sabre_DAV_Auth_Plugin( $authBackend, 'ownCloud' ) ); - $server->addPlugin( new Sabre_DAV_Locks_Plugin( $lockBackend ) ); - $server->addPlugin( new Sabre_DAV_Browser_Plugin( false ) ); // Show something in the Browser, but no upload - $server->addPlugin( new OC_Connector_Sabre_QuotaPlugin() ); - $server->addPlugin( new OC_Connector_Sabre_MaintenancePlugin() ); + $server->addPlugin(new Sabre_DAV_Auth_Plugin($authBackend, 'ownCloud')); + $server->addPlugin(new Sabre_DAV_Locks_Plugin($lockBackend)); + $server->addPlugin(new Sabre_DAV_Browser_Plugin(false)); // Show something in the Browser, but no upload + $server->addPlugin(new OC_Connector_Sabre_QuotaPlugin()); + $server->addPlugin(new OC_Connector_Sabre_MaintenancePlugin()); // And off we go! - if ( $body ) { - $server->httpRequest->setBody( $body ); + if ($body) { + $server->httpRequest->setBody($body); } // turn on output buffering -- cgit v1.2.3 From 73e0b4c10a26316e9ae085f8fcf6a4e3a2a85384 Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Mon, 27 May 2013 02:07:24 +0200 Subject: [tx-robot] updated from transifex --- apps/files_encryption/l10n/gl.php | 8 +++++++- apps/files_encryption/l10n/ja_JP.php | 1 + apps/files_encryption/l10n/pt_BR.php | 18 ++++++++++++++++- l10n/af_ZA/core.po | 4 ++-- l10n/af_ZA/lib.po | 4 ++-- l10n/ar/core.po | 4 ++-- l10n/ar/files.po | 4 ++-- l10n/ar/files_external.po | 4 ++-- l10n/ar/files_sharing.po | 4 ++-- l10n/ar/files_trashbin.po | 4 ++-- l10n/ar/lib.po | 4 ++-- l10n/ar/settings.po | 4 ++-- l10n/ar/user_ldap.po | 4 ++-- l10n/bg_BG/core.po | 4 ++-- l10n/bg_BG/files.po | 4 ++-- l10n/bg_BG/files_external.po | 4 ++-- l10n/bg_BG/files_sharing.po | 4 ++-- l10n/bg_BG/files_trashbin.po | 4 ++-- l10n/bg_BG/lib.po | 4 ++-- l10n/bg_BG/settings.po | 4 ++-- l10n/bg_BG/user_ldap.po | 4 ++-- l10n/bn_BD/core.po | 4 ++-- l10n/bn_BD/files.po | 4 ++-- l10n/bn_BD/files_external.po | 4 ++-- l10n/bn_BD/files_sharing.po | 4 ++-- l10n/bn_BD/files_trashbin.po | 4 ++-- l10n/bn_BD/lib.po | 4 ++-- l10n/bn_BD/settings.po | 4 ++-- l10n/bn_BD/user_ldap.po | 4 ++-- l10n/ca/core.po | 4 ++-- l10n/ca/files.po | 4 ++-- l10n/ca/files_external.po | 4 ++-- l10n/ca/files_sharing.po | 4 ++-- l10n/ca/files_trashbin.po | 4 ++-- l10n/ca/lib.po | 4 ++-- l10n/ca/settings.po | 4 ++-- l10n/ca/user_ldap.po | 4 ++-- l10n/cs_CZ/core.po | 4 ++-- l10n/cs_CZ/files.po | 4 ++-- l10n/cs_CZ/files_external.po | 4 ++-- l10n/cs_CZ/files_sharing.po | 4 ++-- l10n/cs_CZ/files_trashbin.po | 4 ++-- l10n/cs_CZ/lib.po | 4 ++-- l10n/cs_CZ/settings.po | 4 ++-- l10n/cs_CZ/user_ldap.po | 4 ++-- l10n/cy_GB/core.po | 4 ++-- l10n/cy_GB/files.po | 4 ++-- l10n/cy_GB/files_external.po | 4 ++-- l10n/cy_GB/files_sharing.po | 4 ++-- l10n/cy_GB/files_trashbin.po | 4 ++-- l10n/cy_GB/lib.po | 4 ++-- l10n/cy_GB/settings.po | 4 ++-- l10n/cy_GB/user_ldap.po | 4 ++-- l10n/da/core.po | 4 ++-- l10n/da/files.po | 4 ++-- l10n/da/files_external.po | 4 ++-- l10n/da/files_sharing.po | 4 ++-- l10n/da/files_trashbin.po | 4 ++-- l10n/da/lib.po | 4 ++-- l10n/da/settings.po | 4 ++-- l10n/da/user_ldap.po | 4 ++-- l10n/de/core.po | 4 ++-- l10n/de/files.po | 4 ++-- l10n/de/files_external.po | 4 ++-- l10n/de/files_sharing.po | 4 ++-- l10n/de/files_trashbin.po | 4 ++-- l10n/de/lib.po | 4 ++-- l10n/de/settings.po | 4 ++-- l10n/de/user_ldap.po | 4 ++-- l10n/de_DE/core.po | 4 ++-- l10n/de_DE/files.po | 4 ++-- l10n/de_DE/files_external.po | 4 ++-- l10n/de_DE/files_sharing.po | 4 ++-- l10n/de_DE/files_trashbin.po | 4 ++-- l10n/de_DE/lib.po | 4 ++-- l10n/de_DE/settings.po | 4 ++-- l10n/de_DE/user_ldap.po | 4 ++-- l10n/el/core.po | 4 ++-- l10n/el/files.po | 4 ++-- l10n/el/files_external.po | 4 ++-- l10n/el/files_sharing.po | 4 ++-- l10n/el/files_trashbin.po | 4 ++-- l10n/el/lib.po | 4 ++-- l10n/el/settings.po | 4 ++-- l10n/el/user_ldap.po | 4 ++-- l10n/en@pirate/files.po | 4 ++-- l10n/en@pirate/files_sharing.po | 4 ++-- l10n/eo/core.po | 4 ++-- l10n/eo/files.po | 4 ++-- l10n/eo/files_external.po | 4 ++-- l10n/eo/files_sharing.po | 4 ++-- l10n/eo/files_trashbin.po | 4 ++-- l10n/eo/lib.po | 4 ++-- l10n/eo/settings.po | 4 ++-- l10n/eo/user_ldap.po | 4 ++-- l10n/es/core.po | 4 ++-- l10n/es/files.po | 4 ++-- l10n/es/files_external.po | 4 ++-- l10n/es/files_sharing.po | 4 ++-- l10n/es/files_trashbin.po | 4 ++-- l10n/es/lib.po | 4 ++-- l10n/es/settings.po | 4 ++-- l10n/es/user_ldap.po | 4 ++-- l10n/es_AR/core.po | 4 ++-- l10n/es_AR/files.po | 4 ++-- l10n/es_AR/files_external.po | 4 ++-- l10n/es_AR/files_sharing.po | 4 ++-- l10n/es_AR/files_trashbin.po | 4 ++-- l10n/es_AR/lib.po | 4 ++-- l10n/es_AR/settings.po | 4 ++-- l10n/es_AR/user_ldap.po | 4 ++-- l10n/et_EE/core.po | 4 ++-- l10n/et_EE/files.po | 4 ++-- l10n/et_EE/files_external.po | 4 ++-- l10n/et_EE/files_sharing.po | 4 ++-- l10n/et_EE/files_trashbin.po | 4 ++-- l10n/et_EE/lib.po | 4 ++-- l10n/et_EE/settings.po | 4 ++-- l10n/et_EE/user_ldap.po | 4 ++-- l10n/eu/core.po | 4 ++-- l10n/eu/files.po | 4 ++-- l10n/eu/files_external.po | 4 ++-- l10n/eu/files_sharing.po | 4 ++-- l10n/eu/files_trashbin.po | 4 ++-- l10n/eu/lib.po | 4 ++-- l10n/eu/settings.po | 4 ++-- l10n/eu/user_ldap.po | 4 ++-- l10n/fa/core.po | 4 ++-- l10n/fa/files.po | 4 ++-- l10n/fa/files_external.po | 4 ++-- l10n/fa/files_sharing.po | 4 ++-- l10n/fa/files_trashbin.po | 4 ++-- l10n/fa/lib.po | 4 ++-- l10n/fa/settings.po | 4 ++-- l10n/fa/user_ldap.po | 4 ++-- l10n/fi/core.po | 4 ++-- l10n/fi/files.po | 4 ++-- l10n/fi/lib.po | 4 ++-- l10n/fi_FI/core.po | 4 ++-- l10n/fi_FI/files.po | 4 ++-- l10n/fi_FI/files_external.po | 4 ++-- l10n/fi_FI/files_sharing.po | 4 ++-- l10n/fi_FI/files_trashbin.po | 4 ++-- l10n/fi_FI/lib.po | 4 ++-- l10n/fi_FI/settings.po | 4 ++-- l10n/fi_FI/user_ldap.po | 4 ++-- l10n/fr/core.po | 4 ++-- l10n/fr/files.po | 4 ++-- l10n/fr/files_external.po | 4 ++-- l10n/fr/files_sharing.po | 4 ++-- l10n/fr/files_trashbin.po | 4 ++-- l10n/fr/lib.po | 4 ++-- l10n/fr/settings.po | 4 ++-- l10n/fr/user_ldap.po | 4 ++-- l10n/gl/core.po | 4 ++-- l10n/gl/files.po | 4 ++-- l10n/gl/files_encryption.po | 18 +++++++++-------- l10n/gl/files_external.po | 4 ++-- l10n/gl/files_sharing.po | 4 ++-- l10n/gl/files_trashbin.po | 4 ++-- l10n/gl/lib.po | 4 ++-- l10n/gl/settings.po | 4 ++-- l10n/gl/user_ldap.po | 4 ++-- l10n/he/core.po | 4 ++-- l10n/he/files.po | 4 ++-- l10n/he/files_external.po | 4 ++-- l10n/he/files_sharing.po | 4 ++-- l10n/he/files_trashbin.po | 4 ++-- l10n/he/lib.po | 4 ++-- l10n/he/settings.po | 4 ++-- l10n/he/user_ldap.po | 4 ++-- l10n/hi/core.po | 4 ++-- l10n/hi/lib.po | 4 ++-- l10n/hr/core.po | 4 ++-- l10n/hr/files.po | 4 ++-- l10n/hr/files_external.po | 4 ++-- l10n/hr/files_sharing.po | 4 ++-- l10n/hr/files_trashbin.po | 4 ++-- l10n/hr/lib.po | 4 ++-- l10n/hr/settings.po | 4 ++-- l10n/hr/user_ldap.po | 4 ++-- l10n/hu_HU/core.po | 4 ++-- l10n/hu_HU/files.po | 4 ++-- l10n/hu_HU/files_external.po | 4 ++-- l10n/hu_HU/files_sharing.po | 4 ++-- l10n/hu_HU/files_trashbin.po | 4 ++-- l10n/hu_HU/lib.po | 4 ++-- l10n/hu_HU/settings.po | 4 ++-- l10n/hu_HU/user_ldap.po | 4 ++-- l10n/hy/files.po | 4 ++-- l10n/hy/files_external.po | 2 +- l10n/hy/files_sharing.po | 2 +- l10n/hy/files_trashbin.po | 2 +- l10n/hy/settings.po | 4 ++-- l10n/ia/core.po | 4 ++-- l10n/ia/files.po | 4 ++-- l10n/ia/files_external.po | 4 ++-- l10n/ia/files_sharing.po | 4 ++-- l10n/ia/files_trashbin.po | 4 ++-- l10n/ia/lib.po | 4 ++-- l10n/ia/settings.po | 4 ++-- l10n/ia/user_ldap.po | 4 ++-- l10n/id/core.po | 4 ++-- l10n/id/files.po | 4 ++-- l10n/id/files_external.po | 4 ++-- l10n/id/files_sharing.po | 4 ++-- l10n/id/files_trashbin.po | 4 ++-- l10n/id/lib.po | 4 ++-- l10n/id/settings.po | 4 ++-- l10n/id/user_ldap.po | 4 ++-- l10n/is/core.po | 4 ++-- l10n/is/files.po | 4 ++-- l10n/is/files_external.po | 4 ++-- l10n/is/files_sharing.po | 4 ++-- l10n/is/files_trashbin.po | 4 ++-- l10n/is/lib.po | 4 ++-- l10n/is/settings.po | 4 ++-- l10n/is/user_ldap.po | 4 ++-- l10n/it/core.po | 4 ++-- l10n/it/files.po | 4 ++-- l10n/it/files_external.po | 4 ++-- l10n/it/files_sharing.po | 4 ++-- l10n/it/files_trashbin.po | 4 ++-- l10n/it/lib.po | 4 ++-- l10n/it/settings.po | 4 ++-- l10n/it/user_ldap.po | 4 ++-- l10n/ja_JP/core.po | 4 ++-- l10n/ja_JP/files.po | 4 ++-- l10n/ja_JP/files_encryption.po | 6 +++--- l10n/ja_JP/files_external.po | 4 ++-- l10n/ja_JP/files_sharing.po | 4 ++-- l10n/ja_JP/files_trashbin.po | 4 ++-- l10n/ja_JP/lib.po | 9 +++++---- l10n/ja_JP/settings.po | 9 +++++---- l10n/ja_JP/user_ldap.po | 4 ++-- l10n/ka/files.po | 4 ++-- l10n/ka/files_sharing.po | 4 ++-- l10n/ka_GE/core.po | 4 ++-- l10n/ka_GE/files.po | 4 ++-- l10n/ka_GE/files_external.po | 4 ++-- l10n/ka_GE/files_sharing.po | 4 ++-- l10n/ka_GE/files_trashbin.po | 4 ++-- l10n/ka_GE/lib.po | 4 ++-- l10n/ka_GE/settings.po | 4 ++-- l10n/ka_GE/user_ldap.po | 4 ++-- l10n/ko/core.po | 4 ++-- l10n/ko/files.po | 4 ++-- l10n/ko/files_external.po | 4 ++-- l10n/ko/files_sharing.po | 4 ++-- l10n/ko/files_trashbin.po | 4 ++-- l10n/ko/lib.po | 4 ++-- l10n/ko/settings.po | 4 ++-- l10n/ko/user_ldap.po | 4 ++-- l10n/ku_IQ/core.po | 4 ++-- l10n/ku_IQ/files.po | 4 ++-- l10n/ku_IQ/files_sharing.po | 4 ++-- l10n/ku_IQ/files_trashbin.po | 4 ++-- l10n/ku_IQ/lib.po | 4 ++-- l10n/ku_IQ/settings.po | 4 ++-- l10n/ku_IQ/user_ldap.po | 4 ++-- l10n/lb/core.po | 4 ++-- l10n/lb/files.po | 4 ++-- l10n/lb/files_external.po | 4 ++-- l10n/lb/files_sharing.po | 4 ++-- l10n/lb/files_trashbin.po | 4 ++-- l10n/lb/lib.po | 4 ++-- l10n/lb/settings.po | 4 ++-- l10n/lb/user_ldap.po | 4 ++-- l10n/lt_LT/core.po | 4 ++-- l10n/lt_LT/files.po | 4 ++-- l10n/lt_LT/files_external.po | 4 ++-- l10n/lt_LT/files_sharing.po | 4 ++-- l10n/lt_LT/files_trashbin.po | 4 ++-- l10n/lt_LT/lib.po | 4 ++-- l10n/lt_LT/settings.po | 4 ++-- l10n/lt_LT/user_ldap.po | 4 ++-- l10n/lv/core.po | 4 ++-- l10n/lv/files.po | 4 ++-- l10n/lv/files_external.po | 4 ++-- l10n/lv/files_sharing.po | 4 ++-- l10n/lv/files_trashbin.po | 4 ++-- l10n/lv/lib.po | 4 ++-- l10n/lv/settings.po | 4 ++-- l10n/lv/user_ldap.po | 4 ++-- l10n/mk/core.po | 4 ++-- l10n/mk/files.po | 4 ++-- l10n/mk/files_external.po | 4 ++-- l10n/mk/files_sharing.po | 4 ++-- l10n/mk/files_trashbin.po | 4 ++-- l10n/mk/lib.po | 4 ++-- l10n/mk/settings.po | 4 ++-- l10n/mk/user_ldap.po | 4 ++-- l10n/ms_MY/core.po | 4 ++-- l10n/ms_MY/files.po | 4 ++-- l10n/ms_MY/files_external.po | 4 ++-- l10n/ms_MY/files_sharing.po | 4 ++-- l10n/ms_MY/files_trashbin.po | 4 ++-- l10n/ms_MY/lib.po | 4 ++-- l10n/ms_MY/settings.po | 4 ++-- l10n/ms_MY/user_ldap.po | 4 ++-- l10n/my_MM/core.po | 4 ++-- l10n/my_MM/files.po | 4 ++-- l10n/my_MM/files_sharing.po | 4 ++-- l10n/my_MM/lib.po | 4 ++-- l10n/nb_NO/core.po | 4 ++-- l10n/nb_NO/files.po | 4 ++-- l10n/nb_NO/files_external.po | 4 ++-- l10n/nb_NO/files_sharing.po | 4 ++-- l10n/nb_NO/files_trashbin.po | 4 ++-- l10n/nb_NO/lib.po | 4 ++-- l10n/nb_NO/settings.po | 4 ++-- l10n/nb_NO/user_ldap.po | 4 ++-- l10n/nl/core.po | 4 ++-- l10n/nl/files.po | 4 ++-- l10n/nl/files_external.po | 4 ++-- l10n/nl/files_sharing.po | 4 ++-- l10n/nl/files_trashbin.po | 4 ++-- l10n/nl/lib.po | 4 ++-- l10n/nl/settings.po | 4 ++-- l10n/nl/user_ldap.po | 4 ++-- l10n/nn_NO/core.po | 4 ++-- l10n/nn_NO/files.po | 4 ++-- l10n/nn_NO/files_external.po | 4 ++-- l10n/nn_NO/files_sharing.po | 4 ++-- l10n/nn_NO/files_trashbin.po | 4 ++-- l10n/nn_NO/lib.po | 4 ++-- l10n/nn_NO/settings.po | 4 ++-- l10n/nn_NO/user_ldap.po | 4 ++-- l10n/oc/core.po | 4 ++-- l10n/oc/files.po | 4 ++-- l10n/oc/files_external.po | 4 ++-- l10n/oc/files_sharing.po | 4 ++-- l10n/oc/files_trashbin.po | 4 ++-- l10n/oc/lib.po | 4 ++-- l10n/oc/settings.po | 4 ++-- l10n/oc/user_ldap.po | 4 ++-- l10n/pl/core.po | 4 ++-- l10n/pl/files.po | 4 ++-- l10n/pl/files_external.po | 4 ++-- l10n/pl/files_sharing.po | 4 ++-- l10n/pl/files_trashbin.po | 4 ++-- l10n/pl/lib.po | 4 ++-- l10n/pl/settings.po | 4 ++-- l10n/pl/user_ldap.po | 4 ++-- l10n/pl_PL/core.po | 4 ++-- l10n/pl_PL/files.po | 4 ++-- l10n/pl_PL/lib.po | 4 ++-- l10n/pl_PL/settings.po | 4 ++-- l10n/pt_BR/core.po | 4 ++-- l10n/pt_BR/files.po | 4 ++-- l10n/pt_BR/files_encryption.po | 39 ++++++++++++++++++------------------ l10n/pt_BR/files_external.po | 4 ++-- l10n/pt_BR/files_sharing.po | 4 ++-- l10n/pt_BR/files_trashbin.po | 4 ++-- l10n/pt_BR/lib.po | 4 ++-- l10n/pt_BR/settings.po | 8 ++++---- l10n/pt_BR/user_ldap.po | 4 ++-- l10n/pt_PT/core.po | 4 ++-- l10n/pt_PT/files.po | 4 ++-- l10n/pt_PT/files_external.po | 4 ++-- l10n/pt_PT/files_sharing.po | 4 ++-- l10n/pt_PT/files_trashbin.po | 4 ++-- l10n/pt_PT/lib.po | 4 ++-- l10n/pt_PT/settings.po | 4 ++-- l10n/pt_PT/user_ldap.po | 4 ++-- l10n/ro/core.po | 4 ++-- l10n/ro/files.po | 4 ++-- l10n/ro/files_external.po | 4 ++-- l10n/ro/files_sharing.po | 4 ++-- l10n/ro/files_trashbin.po | 4 ++-- l10n/ro/lib.po | 4 ++-- l10n/ro/settings.po | 4 ++-- l10n/ro/user_ldap.po | 4 ++-- l10n/ru/core.po | 4 ++-- l10n/ru/files.po | 4 ++-- l10n/ru/files_external.po | 4 ++-- l10n/ru/files_sharing.po | 4 ++-- l10n/ru/files_trashbin.po | 4 ++-- l10n/ru/lib.po | 4 ++-- l10n/ru/settings.po | 4 ++-- l10n/ru/user_ldap.po | 4 ++-- l10n/ru_RU/core.po | 4 ++-- l10n/ru_RU/files.po | 2 +- l10n/ru_RU/files_external.po | 2 +- l10n/ru_RU/files_sharing.po | 2 +- l10n/ru_RU/files_trashbin.po | 2 +- l10n/ru_RU/lib.po | 4 ++-- l10n/ru_RU/settings.po | 4 ++-- l10n/ru_RU/user_ldap.po | 2 +- l10n/si_LK/core.po | 4 ++-- l10n/si_LK/files.po | 4 ++-- l10n/si_LK/files_external.po | 4 ++-- l10n/si_LK/files_sharing.po | 4 ++-- l10n/si_LK/files_trashbin.po | 4 ++-- l10n/si_LK/lib.po | 4 ++-- l10n/si_LK/settings.po | 4 ++-- l10n/si_LK/user_ldap.po | 4 ++-- l10n/sk_SK/core.po | 4 ++-- l10n/sk_SK/files.po | 4 ++-- l10n/sk_SK/files_external.po | 4 ++-- l10n/sk_SK/files_sharing.po | 4 ++-- l10n/sk_SK/files_trashbin.po | 4 ++-- l10n/sk_SK/lib.po | 4 ++-- l10n/sk_SK/settings.po | 4 ++-- l10n/sk_SK/user_ldap.po | 4 ++-- l10n/sl/core.po | 4 ++-- l10n/sl/files.po | 4 ++-- l10n/sl/files_external.po | 4 ++-- l10n/sl/files_sharing.po | 4 ++-- l10n/sl/files_trashbin.po | 4 ++-- l10n/sl/lib.po | 4 ++-- l10n/sl/settings.po | 4 ++-- l10n/sl/user_ldap.po | 4 ++-- l10n/sq/core.po | 4 ++-- l10n/sq/files.po | 4 ++-- l10n/sq/files_external.po | 4 ++-- l10n/sq/files_sharing.po | 4 ++-- l10n/sq/files_trashbin.po | 4 ++-- l10n/sq/lib.po | 4 ++-- l10n/sq/settings.po | 4 ++-- l10n/sq/user_ldap.po | 4 ++-- l10n/sr/core.po | 4 ++-- l10n/sr/files.po | 4 ++-- l10n/sr/files_external.po | 4 ++-- l10n/sr/files_sharing.po | 4 ++-- l10n/sr/files_trashbin.po | 4 ++-- l10n/sr/lib.po | 4 ++-- l10n/sr/settings.po | 4 ++-- l10n/sr/user_ldap.po | 4 ++-- l10n/sr@latin/core.po | 4 ++-- l10n/sr@latin/files.po | 4 ++-- l10n/sr@latin/files_external.po | 4 ++-- l10n/sr@latin/files_sharing.po | 4 ++-- l10n/sr@latin/files_trashbin.po | 4 ++-- l10n/sr@latin/lib.po | 4 ++-- l10n/sr@latin/settings.po | 4 ++-- l10n/sv/core.po | 4 ++-- l10n/sv/files.po | 4 ++-- l10n/sv/files_external.po | 4 ++-- l10n/sv/files_sharing.po | 4 ++-- l10n/sv/files_trashbin.po | 4 ++-- l10n/sv/lib.po | 4 ++-- l10n/sv/settings.po | 4 ++-- l10n/sv/user_ldap.po | 4 ++-- l10n/ta_LK/core.po | 4 ++-- l10n/ta_LK/files.po | 4 ++-- l10n/ta_LK/files_external.po | 4 ++-- l10n/ta_LK/files_sharing.po | 4 ++-- l10n/ta_LK/files_trashbin.po | 4 ++-- l10n/ta_LK/lib.po | 4 ++-- l10n/ta_LK/settings.po | 4 ++-- l10n/ta_LK/user_ldap.po | 4 ++-- l10n/te/core.po | 4 ++-- l10n/te/files.po | 4 ++-- l10n/te/files_external.po | 4 ++-- l10n/te/files_trashbin.po | 4 ++-- l10n/te/lib.po | 4 ++-- l10n/te/settings.po | 4 ++-- l10n/te/user_ldap.po | 4 ++-- l10n/templates/core.pot | 2 +- l10n/templates/files.pot | 2 +- l10n/templates/files_encryption.pot | 2 +- l10n/templates/files_external.pot | 2 +- l10n/templates/files_sharing.pot | 2 +- l10n/templates/files_trashbin.pot | 2 +- l10n/templates/files_versions.pot | 2 +- l10n/templates/lib.pot | 2 +- l10n/templates/settings.pot | 2 +- l10n/templates/user_ldap.pot | 2 +- l10n/templates/user_webdavauth.pot | 2 +- l10n/th_TH/core.po | 4 ++-- l10n/th_TH/files.po | 4 ++-- l10n/th_TH/files_external.po | 4 ++-- l10n/th_TH/files_sharing.po | 4 ++-- l10n/th_TH/files_trashbin.po | 4 ++-- l10n/th_TH/lib.po | 4 ++-- l10n/th_TH/settings.po | 4 ++-- l10n/th_TH/user_ldap.po | 4 ++-- l10n/tr/core.po | 4 ++-- l10n/tr/files.po | 4 ++-- l10n/tr/files_external.po | 4 ++-- l10n/tr/files_sharing.po | 4 ++-- l10n/tr/files_trashbin.po | 4 ++-- l10n/tr/lib.po | 4 ++-- l10n/tr/settings.po | 4 ++-- l10n/tr/user_ldap.po | 4 ++-- l10n/ug/core.po | 4 ++-- l10n/ug/files.po | 4 ++-- l10n/ug/files_external.po | 4 ++-- l10n/ug/files_sharing.po | 4 ++-- l10n/ug/files_trashbin.po | 4 ++-- l10n/ug/lib.po | 4 ++-- l10n/ug/settings.po | 4 ++-- l10n/ug/user_ldap.po | 4 ++-- l10n/uk/core.po | 4 ++-- l10n/uk/files.po | 4 ++-- l10n/uk/files_external.po | 4 ++-- l10n/uk/files_sharing.po | 4 ++-- l10n/uk/files_trashbin.po | 4 ++-- l10n/uk/lib.po | 4 ++-- l10n/uk/settings.po | 4 ++-- l10n/uk/user_ldap.po | 4 ++-- l10n/ur_PK/core.po | 4 ++-- l10n/ur_PK/files.po | 4 ++-- l10n/ur_PK/files_trashbin.po | 4 ++-- l10n/ur_PK/lib.po | 4 ++-- l10n/ur_PK/settings.po | 4 ++-- l10n/ur_PK/user_ldap.po | 4 ++-- l10n/vi/core.po | 4 ++-- l10n/vi/files.po | 4 ++-- l10n/vi/files_external.po | 4 ++-- l10n/vi/files_sharing.po | 4 ++-- l10n/vi/files_trashbin.po | 4 ++-- l10n/vi/lib.po | 4 ++-- l10n/vi/settings.po | 4 ++-- l10n/vi/user_ldap.po | 4 ++-- l10n/zh_CN.GB2312/core.po | 4 ++-- l10n/zh_CN.GB2312/files.po | 4 ++-- l10n/zh_CN.GB2312/files_external.po | 4 ++-- l10n/zh_CN.GB2312/files_sharing.po | 4 ++-- l10n/zh_CN.GB2312/files_trashbin.po | 4 ++-- l10n/zh_CN.GB2312/lib.po | 4 ++-- l10n/zh_CN.GB2312/settings.po | 4 ++-- l10n/zh_CN.GB2312/user_ldap.po | 4 ++-- l10n/zh_CN/core.po | 4 ++-- l10n/zh_CN/files.po | 4 ++-- l10n/zh_CN/files_external.po | 4 ++-- l10n/zh_CN/files_sharing.po | 4 ++-- l10n/zh_CN/files_trashbin.po | 4 ++-- l10n/zh_CN/lib.po | 4 ++-- l10n/zh_CN/settings.po | 4 ++-- l10n/zh_CN/user_ldap.po | 4 ++-- l10n/zh_HK/core.po | 4 ++-- l10n/zh_HK/files.po | 4 ++-- l10n/zh_HK/files_external.po | 4 ++-- l10n/zh_HK/files_sharing.po | 4 ++-- l10n/zh_HK/files_trashbin.po | 4 ++-- l10n/zh_HK/lib.po | 4 ++-- l10n/zh_HK/settings.po | 4 ++-- l10n/zh_HK/user_ldap.po | 4 ++-- l10n/zh_TW/core.po | 4 ++-- l10n/zh_TW/files.po | 4 ++-- l10n/zh_TW/files_external.po | 4 ++-- l10n/zh_TW/files_sharing.po | 4 ++-- l10n/zh_TW/files_trashbin.po | 4 ++-- l10n/zh_TW/lib.po | 4 ++-- l10n/zh_TW/settings.po | 4 ++-- l10n/zh_TW/user_ldap.po | 4 ++-- lib/l10n/ja_JP.php | 1 + settings/l10n/ja_JP.php | 1 + settings/l10n/pt_BR.php | 1 + 551 files changed, 1134 insertions(+), 1103 deletions(-) diff --git a/apps/files_encryption/l10n/gl.php b/apps/files_encryption/l10n/gl.php index a3384174d78..4c53c7e3d2b 100644 --- a/apps/files_encryption/l10n/gl.php +++ b/apps/files_encryption/l10n/gl.php @@ -10,5 +10,11 @@ "Enabled" => "Activado", "Disabled" => "Desactivado", "Change encryption passwords recovery key:" => "Cambiar a chave de la recuperación do cifrado de contrasinais:", -"Change Password" => "Cambiar o contrasinal" +"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", +"Enable password recovery by sharing all files with your administrator:" => "Activar a recuperación de contrasinais compartindo todos os ficheiros co administrador:", +"Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" => "Ao activar esta opción permitiráselle volver a obter acceso aos ficheiros cifrados se perde o 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" ); diff --git a/apps/files_encryption/l10n/ja_JP.php b/apps/files_encryption/l10n/ja_JP.php index 99fd3ec3aba..287091f6376 100644 --- a/apps/files_encryption/l10n/ja_JP.php +++ b/apps/files_encryption/l10n/ja_JP.php @@ -5,6 +5,7 @@ "Could not change the password. Maybe the old password was not correct." => "パスワードを変更できませんでした。古いパスワードが間違っているかもしれません。", "Saving..." => "保存中...", "Encryption" => "暗号化", +"Enable encryption passwords recovery key (allow sharing to recovery key):" => "暗号化パスワードの復旧キーを有効にする(復旧キーを共有することを許可):", "Recovery account password" => "復旧アカウントのパスワード", "Enabled" => "有効", "Disabled" => "無効", diff --git a/apps/files_encryption/l10n/pt_BR.php b/apps/files_encryption/l10n/pt_BR.php index 73d7b57b878..91b4672f27e 100644 --- a/apps/files_encryption/l10n/pt_BR.php +++ b/apps/files_encryption/l10n/pt_BR.php @@ -1,4 +1,20 @@ "Recuperação de chave com sucesso", +"Could not " => "Não foi possível", +"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" +"Encryption" => "Criptografia", +"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", +"Enable password recovery by sharing all files with your administrator:" => "Habilitar recuperação de senha através da partilha de todos os arquivos com o administrador:", +"Enabling this option will allow you to reobtain access to your encrypted files if your password is lost" => "Ativando esta opção irá permitir que você reobtainha acesso aos seus arquivos criptografados se sua senha for perdida", +"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" ); diff --git a/l10n/af_ZA/core.po b/l10n/af_ZA/core.po index a624008674c..9804cb9de6a 100644 --- a/l10n/af_ZA/core.po +++ b/l10n/af_ZA/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/af_ZA/lib.po b/l10n/af_ZA/lib.po index f7cb1209ce9..623dc60bb92 100644 --- a/l10n/af_ZA/lib.po +++ b/l10n/af_ZA/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Afrikaans (South Africa) (http://www.transifex.com/projects/p/owncloud/language/af_ZA/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/core.po b/l10n/ar/core.po index c4823768aed..8fab964a8b7 100644 --- a/l10n/ar/core.po +++ b/l10n/ar/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/files.po b/l10n/ar/files.po index 1dfdf7ab314..dff8a52c2fb 100644 --- a/l10n/ar/files.po +++ b/l10n/ar/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/files_external.po b/l10n/ar/files_external.po index 0d71b2a0326..6874dbb0b50 100644 --- a/l10n/ar/files_external.po +++ b/l10n/ar/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/files_sharing.po b/l10n/ar/files_sharing.po index 046ef739418..8b90aa1ff5a 100644 --- a/l10n/ar/files_sharing.po +++ b/l10n/ar/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/files_trashbin.po b/l10n/ar/files_trashbin.po index b429c2998c9..baca98abbf0 100644 --- a/l10n/ar/files_trashbin.po +++ b/l10n/ar/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/lib.po b/l10n/ar/lib.po index 9cf50deda49..ac7feed820e 100644 --- a/l10n/ar/lib.po +++ b/l10n/ar/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/settings.po b/l10n/ar/settings.po index a8f9277cdaa..f607fe4e347 100644 --- a/l10n/ar/settings.po +++ b/l10n/ar/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/user_ldap.po b/l10n/ar/user_ldap.po index f0f0c087c1c..07a165c3ce9 100644 --- a/l10n/ar/user_ldap.po +++ b/l10n/ar/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/core.po b/l10n/bg_BG/core.po index ce6aead990d..fe9c93b088a 100644 --- a/l10n/bg_BG/core.po +++ b/l10n/bg_BG/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files.po b/l10n/bg_BG/files.po index 48498737518..ed09a2a6b5b 100644 --- a/l10n/bg_BG/files.po +++ b/l10n/bg_BG/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files_external.po b/l10n/bg_BG/files_external.po index b0378410bfb..30ac2b78035 100644 --- a/l10n/bg_BG/files_external.po +++ b/l10n/bg_BG/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files_sharing.po b/l10n/bg_BG/files_sharing.po index 94f67e35c16..9723a4ec850 100644 --- a/l10n/bg_BG/files_sharing.po +++ b/l10n/bg_BG/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files_trashbin.po b/l10n/bg_BG/files_trashbin.po index 8cd444f0a9d..474447ab394 100644 --- a/l10n/bg_BG/files_trashbin.po +++ b/l10n/bg_BG/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/lib.po b/l10n/bg_BG/lib.po index b7287ca9f66..7bbaf4a45f6 100644 --- a/l10n/bg_BG/lib.po +++ b/l10n/bg_BG/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/settings.po b/l10n/bg_BG/settings.po index 3a7b4588fb7..73e6f0cf024 100644 --- a/l10n/bg_BG/settings.po +++ b/l10n/bg_BG/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/user_ldap.po b/l10n/bg_BG/user_ldap.po index 7a34aa28cbe..12face4d68b 100644 --- a/l10n/bg_BG/user_ldap.po +++ b/l10n/bg_BG/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/core.po b/l10n/bn_BD/core.po index c6b1fb49426..8e8719710fa 100644 --- a/l10n/bn_BD/core.po +++ b/l10n/bn_BD/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/files.po b/l10n/bn_BD/files.po index feef9357888..34c6c973fee 100644 --- a/l10n/bn_BD/files.po +++ b/l10n/bn_BD/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/files_external.po b/l10n/bn_BD/files_external.po index cccfbf9cbe8..a27939a0b3f 100644 --- a/l10n/bn_BD/files_external.po +++ b/l10n/bn_BD/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/files_sharing.po b/l10n/bn_BD/files_sharing.po index 4abb4f55e58..61fb8daecb1 100644 --- a/l10n/bn_BD/files_sharing.po +++ b/l10n/bn_BD/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/files_trashbin.po b/l10n/bn_BD/files_trashbin.po index b28d89542ac..fa5cb2f1eeb 100644 --- a/l10n/bn_BD/files_trashbin.po +++ b/l10n/bn_BD/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/lib.po b/l10n/bn_BD/lib.po index 26ceefa7447..1e5d2d1dbbc 100644 --- a/l10n/bn_BD/lib.po +++ b/l10n/bn_BD/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/settings.po b/l10n/bn_BD/settings.po index 83c2fdef238..8e535308d55 100644 --- a/l10n/bn_BD/settings.po +++ b/l10n/bn_BD/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/user_ldap.po b/l10n/bn_BD/user_ldap.po index 9d4ae2b9fb8..0d66cbe128d 100644 --- a/l10n/bn_BD/user_ldap.po +++ b/l10n/bn_BD/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/core.po b/l10n/ca/core.po index dbc11dea11e..af410a947f9 100644 --- a/l10n/ca/core.po +++ b/l10n/ca/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/files.po b/l10n/ca/files.po index f362b228ba1..3b49b3de49a 100644 --- a/l10n/ca/files.po +++ b/l10n/ca/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/files_external.po b/l10n/ca/files_external.po index 4206b79a482..f3e3f5631f5 100644 --- a/l10n/ca/files_external.po +++ b/l10n/ca/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/files_sharing.po b/l10n/ca/files_sharing.po index 5cbb2f22fcc..568aaf4c218 100644 --- a/l10n/ca/files_sharing.po +++ b/l10n/ca/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/files_trashbin.po b/l10n/ca/files_trashbin.po index e5533dd580f..f15d18de123 100644 --- a/l10n/ca/files_trashbin.po +++ b/l10n/ca/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/lib.po b/l10n/ca/lib.po index 4d784df7f18..1dd06ecb9d6 100644 --- a/l10n/ca/lib.po +++ b/l10n/ca/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/settings.po b/l10n/ca/settings.po index ba7e8887548..8fac803737e 100644 --- a/l10n/ca/settings.po +++ b/l10n/ca/settings.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/user_ldap.po b/l10n/ca/user_ldap.po index 3d43f0d6001..f807e3432e5 100644 --- a/l10n/ca/user_ldap.po +++ b/l10n/ca/user_ldap.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/core.po b/l10n/cs_CZ/core.po index b780396b8ed..9f5a47f4973 100644 --- a/l10n/cs_CZ/core.po +++ b/l10n/cs_CZ/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Tomáš Chvátal \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files.po b/l10n/cs_CZ/files.po index a8e9fd43660..d3605ad7f40 100644 --- a/l10n/cs_CZ/files.po +++ b/l10n/cs_CZ/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files_external.po b/l10n/cs_CZ/files_external.po index 7bb1729e6b3..65233225abd 100644 --- a/l10n/cs_CZ/files_external.po +++ b/l10n/cs_CZ/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files_sharing.po b/l10n/cs_CZ/files_sharing.po index 298ae8e1653..f090f4deab4 100644 --- a/l10n/cs_CZ/files_sharing.po +++ b/l10n/cs_CZ/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files_trashbin.po b/l10n/cs_CZ/files_trashbin.po index 9d0e9ed97da..0013a8fd7b9 100644 --- a/l10n/cs_CZ/files_trashbin.po +++ b/l10n/cs_CZ/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/lib.po b/l10n/cs_CZ/lib.po index d59cb5367f1..5cffd4639fa 100644 --- a/l10n/cs_CZ/lib.po +++ b/l10n/cs_CZ/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/settings.po b/l10n/cs_CZ/settings.po index ee6633ad0bc..e797fcc034b 100644 --- a/l10n/cs_CZ/settings.po +++ b/l10n/cs_CZ/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/user_ldap.po b/l10n/cs_CZ/user_ldap.po index 0a23be1493a..74298d65e0f 100644 --- a/l10n/cs_CZ/user_ldap.po +++ b/l10n/cs_CZ/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/core.po b/l10n/cy_GB/core.po index cef633c7e81..b8169f4c7d8 100644 --- a/l10n/cy_GB/core.po +++ b/l10n/cy_GB/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: ubuntucymraeg \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files.po b/l10n/cy_GB/files.po index b45b7c7becf..2e01550c737 100644 --- a/l10n/cy_GB/files.po +++ b/l10n/cy_GB/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files_external.po b/l10n/cy_GB/files_external.po index d3e3ec18703..5548817313a 100644 --- a/l10n/cy_GB/files_external.po +++ b/l10n/cy_GB/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files_sharing.po b/l10n/cy_GB/files_sharing.po index 546afb5e9c4..e28365980af 100644 --- a/l10n/cy_GB/files_sharing.po +++ b/l10n/cy_GB/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: ubuntucymraeg \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files_trashbin.po b/l10n/cy_GB/files_trashbin.po index 55222d01b2e..61f0303c648 100644 --- a/l10n/cy_GB/files_trashbin.po +++ b/l10n/cy_GB/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: ubuntucymraeg \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/lib.po b/l10n/cy_GB/lib.po index 47522b763f8..bf41a45bad2 100644 --- a/l10n/cy_GB/lib.po +++ b/l10n/cy_GB/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: ubuntucymraeg \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/settings.po b/l10n/cy_GB/settings.po index 95d7f45b3c5..ea19cd7e5c9 100644 --- a/l10n/cy_GB/settings.po +++ b/l10n/cy_GB/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/user_ldap.po b/l10n/cy_GB/user_ldap.po index b7897fd6bdc..750c4308cee 100644 --- a/l10n/cy_GB/user_ldap.po +++ b/l10n/cy_GB/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/core.po b/l10n/da/core.po index ab48232ecda..b1c0b8d07a8 100644 --- a/l10n/da/core.po +++ b/l10n/da/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files.po b/l10n/da/files.po index e32f965a33c..bca893008ad 100644 --- a/l10n/da/files.po +++ b/l10n/da/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files_external.po b/l10n/da/files_external.po index c28602cc345..e9b3d50014e 100644 --- a/l10n/da/files_external.po +++ b/l10n/da/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files_sharing.po b/l10n/da/files_sharing.po index 34ee9db15fe..34ef9ad2e60 100644 --- a/l10n/da/files_sharing.po +++ b/l10n/da/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files_trashbin.po b/l10n/da/files_trashbin.po index d32638a9044..cc87d50e624 100644 --- a/l10n/da/files_trashbin.po +++ b/l10n/da/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/lib.po b/l10n/da/lib.po index b935e3c21c5..e2275d55f0c 100644 --- a/l10n/da/lib.po +++ b/l10n/da/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/settings.po b/l10n/da/settings.po index 7b157217911..4c7d58c86c3 100644 --- a/l10n/da/settings.po +++ b/l10n/da/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/user_ldap.po b/l10n/da/user_ldap.po index 03de07a6d29..20ac52903c5 100644 --- a/l10n/da/user_ldap.po +++ b/l10n/da/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/de/core.po b/l10n/de/core.po index 538d60348f4..5bb079506af 100644 --- a/l10n/de/core.po +++ b/l10n/de/core.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Marcel Kühlhorn \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files.po b/l10n/de/files.po index 260f0526eb1..d7092304af5 100644 --- a/l10n/de/files.po +++ b/l10n/de/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files_external.po b/l10n/de/files_external.po index 425c30c5717..aaa9503d424 100644 --- a/l10n/de/files_external.po +++ b/l10n/de/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files_sharing.po b/l10n/de/files_sharing.po index 90fee14e48a..08ffd925fe7 100644 --- a/l10n/de/files_sharing.po +++ b/l10n/de/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files_trashbin.po b/l10n/de/files_trashbin.po index 5b825136340..6d712ba87b4 100644 --- a/l10n/de/files_trashbin.po +++ b/l10n/de/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/lib.po b/l10n/de/lib.po index 53d4a2a49fb..38600f19f9a 100644 --- a/l10n/de/lib.po +++ b/l10n/de/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/settings.po b/l10n/de/settings.po index 087555bbc63..979f091aa55 100644 --- a/l10n/de/settings.po +++ b/l10n/de/settings.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de/user_ldap.po b/l10n/de/user_ldap.po index 58b75683455..99d5f1a29a0 100644 --- a/l10n/de/user_ldap.po +++ b/l10n/de/user_ldap.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: German \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/core.po b/l10n/de_DE/core.po index baec6c4b99e..7be233193f8 100644 --- a/l10n/de_DE/core.po +++ b/l10n/de_DE/core.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: traductor \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/files.po b/l10n/de_DE/files.po index b551450b820..28d07847e76 100644 --- a/l10n/de_DE/files.po +++ b/l10n/de_DE/files.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: a.tangemann \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/files_external.po b/l10n/de_DE/files_external.po index c0c3205e8ae..0042342c7c7 100644 --- a/l10n/de_DE/files_external.po +++ b/l10n/de_DE/files_external.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/files_sharing.po b/l10n/de_DE/files_sharing.po index d4da6a4830d..bc65e773d00 100644 --- a/l10n/de_DE/files_sharing.po +++ b/l10n/de_DE/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/files_trashbin.po b/l10n/de_DE/files_trashbin.po index 71c5b7e976b..60904e64967 100644 --- a/l10n/de_DE/files_trashbin.po +++ b/l10n/de_DE/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Mirodin \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/lib.po b/l10n/de_DE/lib.po index 2e835905242..da4e06ea018 100644 --- a/l10n/de_DE/lib.po +++ b/l10n/de_DE/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: traductor \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/settings.po b/l10n/de_DE/settings.po index c162ae7d787..f2f5324988a 100644 --- a/l10n/de_DE/settings.po +++ b/l10n/de_DE/settings.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: traductor \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/user_ldap.po b/l10n/de_DE/user_ldap.po index 9c307e3c5b0..44e74b41ccc 100644 --- a/l10n/de_DE/user_ldap.po +++ b/l10n/de_DE/user_ldap.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: traductor \n" "Language-Team: German (Germany) \n" "MIME-Version: 1.0\n" diff --git a/l10n/el/core.po b/l10n/el/core.po index caf5c8c21fd..c20840c7e93 100644 --- a/l10n/el/core.po +++ b/l10n/el/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/files.po b/l10n/el/files.po index 8abc9aea99a..2b44c954556 100644 --- a/l10n/el/files.po +++ b/l10n/el/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Efstathios Iosifidis \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/files_external.po b/l10n/el/files_external.po index a153fc4a2cf..c3b5796d954 100644 --- a/l10n/el/files_external.po +++ b/l10n/el/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: KAT.RAT12 \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/files_sharing.po b/l10n/el/files_sharing.po index dd823d3199c..5bdc6732f38 100644 --- a/l10n/el/files_sharing.po +++ b/l10n/el/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/files_trashbin.po b/l10n/el/files_trashbin.po index f86b45deeab..b8e4d052b70 100644 --- a/l10n/el/files_trashbin.po +++ b/l10n/el/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/lib.po b/l10n/el/lib.po index 0b177a298bd..d1c875b317e 100644 --- a/l10n/el/lib.po +++ b/l10n/el/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/settings.po b/l10n/el/settings.po index 64281b740ac..d6743841ae5 100644 --- a/l10n/el/settings.po +++ b/l10n/el/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/user_ldap.po b/l10n/el/user_ldap.po index 7113f5e51e9..8999877692f 100644 --- a/l10n/el/user_ldap.po +++ b/l10n/el/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/en@pirate/files.po b/l10n/en@pirate/files.po index a743fe7eab4..6e9142092b1 100644 --- a/l10n/en@pirate/files.po +++ b/l10n/en@pirate/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Pirate English (http://www.transifex.com/projects/p/owncloud/language/en@pirate/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/en@pirate/files_sharing.po b/l10n/en@pirate/files_sharing.po index 3b3b50c4166..fbc06c5ae42 100644 --- a/l10n/en@pirate/files_sharing.po +++ b/l10n/en@pirate/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: lhpalacio \n" "Language-Team: Pirate English (http://www.transifex.com/projects/p/owncloud/language/en@pirate/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/core.po b/l10n/eo/core.po index 87d72403e44..38499a90499 100644 --- a/l10n/eo/core.po +++ b/l10n/eo/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files.po b/l10n/eo/files.po index f29626fba62..a9aa36002c5 100644 --- a/l10n/eo/files.po +++ b/l10n/eo/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files_external.po b/l10n/eo/files_external.po index a765664a0e2..625ec7c1c4c 100644 --- a/l10n/eo/files_external.po +++ b/l10n/eo/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files_sharing.po b/l10n/eo/files_sharing.po index ab53d42da6e..ec0f1072a51 100644 --- a/l10n/eo/files_sharing.po +++ b/l10n/eo/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files_trashbin.po b/l10n/eo/files_trashbin.po index d989ae73f47..b64e20aebca 100644 --- a/l10n/eo/files_trashbin.po +++ b/l10n/eo/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/lib.po b/l10n/eo/lib.po index ee7d5519226..f435085d53e 100644 --- a/l10n/eo/lib.po +++ b/l10n/eo/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/settings.po b/l10n/eo/settings.po index f13af8d5ee1..8530d4cc4ff 100644 --- a/l10n/eo/settings.po +++ b/l10n/eo/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/user_ldap.po b/l10n/eo/user_ldap.po index 41ea1fc2841..983285555e3 100644 --- a/l10n/eo/user_ldap.po +++ b/l10n/eo/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/core.po b/l10n/es/core.po index 55dc7cf8959..df92a51f20a 100644 --- a/l10n/es/core.po +++ b/l10n/es/core.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: xhiena \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/files.po b/l10n/es/files.po index 070b1bc7257..46cecf3a244 100644 --- a/l10n/es/files.po +++ b/l10n/es/files.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Art O. Pal \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/files_external.po b/l10n/es/files_external.po index ecb13e5f067..7feeba112ed 100644 --- a/l10n/es/files_external.po +++ b/l10n/es/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/files_sharing.po b/l10n/es/files_sharing.po index 399b2c6ba4f..7f671d97f67 100644 --- a/l10n/es/files_sharing.po +++ b/l10n/es/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/files_trashbin.po b/l10n/es/files_trashbin.po index 8fc536faef3..99095c72bdf 100644 --- a/l10n/es/files_trashbin.po +++ b/l10n/es/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/lib.po b/l10n/es/lib.po index e04ac472f26..eda28e1a8ec 100644 --- a/l10n/es/lib.po +++ b/l10n/es/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: xhiena \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/settings.po b/l10n/es/settings.po index faae86fdbb6..fe5cfc92863 100644 --- a/l10n/es/settings.po +++ b/l10n/es/settings.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/user_ldap.po b/l10n/es/user_ldap.po index de3b6538866..eb95d5852ff 100644 --- a/l10n/es/user_ldap.po +++ b/l10n/es/user_ldap.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: xhiena \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/core.po b/l10n/es_AR/core.po index bde15389c6e..db878cc4d2b 100644 --- a/l10n/es_AR/core.po +++ b/l10n/es_AR/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files.po b/l10n/es_AR/files.po index 486139ce9f4..fd9fe8e18af 100644 --- a/l10n/es_AR/files.po +++ b/l10n/es_AR/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Agustin Ferrario \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files_external.po b/l10n/es_AR/files_external.po index 10c0aa85fb2..531fe71aa8e 100644 --- a/l10n/es_AR/files_external.po +++ b/l10n/es_AR/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files_sharing.po b/l10n/es_AR/files_sharing.po index b693e9b643a..4c328fe10a8 100644 --- a/l10n/es_AR/files_sharing.po +++ b/l10n/es_AR/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files_trashbin.po b/l10n/es_AR/files_trashbin.po index 0970ef5ce09..056aa110adc 100644 --- a/l10n/es_AR/files_trashbin.po +++ b/l10n/es_AR/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/lib.po b/l10n/es_AR/lib.po index 8ff8e3fc8be..5f87f7153c5 100644 --- a/l10n/es_AR/lib.po +++ b/l10n/es_AR/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/settings.po b/l10n/es_AR/settings.po index 0aaaf8bcd83..1a2d4403497 100644 --- a/l10n/es_AR/settings.po +++ b/l10n/es_AR/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/user_ldap.po b/l10n/es_AR/user_ldap.po index 85fa9ab4bc5..5f823fd02f7 100644 --- a/l10n/es_AR/user_ldap.po +++ b/l10n/es_AR/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/core.po b/l10n/et_EE/core.po index ea4c90ad7b3..b5815dd69c5 100644 --- a/l10n/et_EE/core.po +++ b/l10n/et_EE/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: pisike.sipelgas \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/files.po b/l10n/et_EE/files.po index 5251a5bda4f..c0d96144529 100644 --- a/l10n/et_EE/files.po +++ b/l10n/et_EE/files.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/files_external.po b/l10n/et_EE/files_external.po index d9dc6d3b79d..a27a7929cdc 100644 --- a/l10n/et_EE/files_external.po +++ b/l10n/et_EE/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/files_sharing.po b/l10n/et_EE/files_sharing.po index 22b9d80a686..f289c069898 100644 --- a/l10n/et_EE/files_sharing.po +++ b/l10n/et_EE/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/files_trashbin.po b/l10n/et_EE/files_trashbin.po index 0bae4217d92..7b2c63f7e47 100644 --- a/l10n/et_EE/files_trashbin.po +++ b/l10n/et_EE/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Rivo Zängov \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/lib.po b/l10n/et_EE/lib.po index 4840f789869..ab802cb6ccb 100644 --- a/l10n/et_EE/lib.po +++ b/l10n/et_EE/lib.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: pisike.sipelgas \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/settings.po b/l10n/et_EE/settings.po index 7f4fcfd4895..42ac650354b 100644 --- a/l10n/et_EE/settings.po +++ b/l10n/et_EE/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/user_ldap.po b/l10n/et_EE/user_ldap.po index 05d708d5c1f..4df823f8c87 100644 --- a/l10n/et_EE/user_ldap.po +++ b/l10n/et_EE/user_ldap.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: pisike.sipelgas \n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/core.po b/l10n/eu/core.po index ab599b7a67f..42c322872c5 100644 --- a/l10n/eu/core.po +++ b/l10n/eu/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files.po b/l10n/eu/files.po index 12b26307da8..5bd7901df30 100644 --- a/l10n/eu/files.po +++ b/l10n/eu/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files_external.po b/l10n/eu/files_external.po index 478b2bf21fe..ac065bb0dea 100644 --- a/l10n/eu/files_external.po +++ b/l10n/eu/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files_sharing.po b/l10n/eu/files_sharing.po index 5f01d70e313..034087b4f10 100644 --- a/l10n/eu/files_sharing.po +++ b/l10n/eu/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files_trashbin.po b/l10n/eu/files_trashbin.po index 35a8f305f3c..ef3ea4b51ca 100644 --- a/l10n/eu/files_trashbin.po +++ b/l10n/eu/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/lib.po b/l10n/eu/lib.po index 70dad3fb6f5..1b49dcc9c8b 100644 --- a/l10n/eu/lib.po +++ b/l10n/eu/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/settings.po b/l10n/eu/settings.po index ae2f8935894..8da91524780 100644 --- a/l10n/eu/settings.po +++ b/l10n/eu/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/user_ldap.po b/l10n/eu/user_ldap.po index 946f19ac125..751d34a2bbd 100644 --- a/l10n/eu/user_ldap.po +++ b/l10n/eu/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/core.po b/l10n/fa/core.po index 07fc7d608b6..8cda41a3943 100644 --- a/l10n/fa/core.po +++ b/l10n/fa/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files.po b/l10n/fa/files.po index f1b20c2dd4f..6b4e4daa9f4 100644 --- a/l10n/fa/files.po +++ b/l10n/fa/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files_external.po b/l10n/fa/files_external.po index 33d459e808d..f92fd3c9365 100644 --- a/l10n/fa/files_external.po +++ b/l10n/fa/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files_sharing.po b/l10n/fa/files_sharing.po index 6f4123f6948..0910d3b09a1 100644 --- a/l10n/fa/files_sharing.po +++ b/l10n/fa/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files_trashbin.po b/l10n/fa/files_trashbin.po index fc22ab8d6fb..d9bc9aa13cb 100644 --- a/l10n/fa/files_trashbin.po +++ b/l10n/fa/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/lib.po b/l10n/fa/lib.po index 28b4c3e883c..ccf506d104a 100644 --- a/l10n/fa/lib.po +++ b/l10n/fa/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/settings.po b/l10n/fa/settings.po index 4349f0aae20..257fb2df31e 100644 --- a/l10n/fa/settings.po +++ b/l10n/fa/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/user_ldap.po b/l10n/fa/user_ldap.po index ad3d9d441be..aec7a710b01 100644 --- a/l10n/fa/user_ldap.po +++ b/l10n/fa/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi/core.po b/l10n/fi/core.po index ff1cb94e449..0eb4bea1514 100644 --- a/l10n/fi/core.po +++ b/l10n/fi/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi/files.po b/l10n/fi/files.po index 890d4d34636..24941fb51b1 100644 --- a/l10n/fi/files.po +++ b/l10n/fi/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi/lib.po b/l10n/fi/lib.po index a3152711397..f7d94e81c55 100644 --- a/l10n/fi/lib.po +++ b/l10n/fi/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/core.po b/l10n/fi_FI/core.po index 0ca2b1aa75f..fd4aed9d540 100644 --- a/l10n/fi_FI/core.po +++ b/l10n/fi_FI/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files.po b/l10n/fi_FI/files.po index 4cf1e872101..c6385d6c75d 100644 --- a/l10n/fi_FI/files.po +++ b/l10n/fi_FI/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files_external.po b/l10n/fi_FI/files_external.po index 2f400bf940f..427b22131b4 100644 --- a/l10n/fi_FI/files_external.po +++ b/l10n/fi_FI/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files_sharing.po b/l10n/fi_FI/files_sharing.po index 0509701f95f..8351bbbff09 100644 --- a/l10n/fi_FI/files_sharing.po +++ b/l10n/fi_FI/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files_trashbin.po b/l10n/fi_FI/files_trashbin.po index a055b21c70b..bffa98c52be 100644 --- a/l10n/fi_FI/files_trashbin.po +++ b/l10n/fi_FI/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/lib.po b/l10n/fi_FI/lib.po index 3885df649ae..adf38a10915 100644 --- a/l10n/fi_FI/lib.po +++ b/l10n/fi_FI/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/settings.po b/l10n/fi_FI/settings.po index f1f210e8ae9..029fd4c6960 100644 --- a/l10n/fi_FI/settings.po +++ b/l10n/fi_FI/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/user_ldap.po b/l10n/fi_FI/user_ldap.po index fc2c9b922fe..9552f1a7d2b 100644 --- a/l10n/fi_FI/user_ldap.po +++ b/l10n/fi_FI/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/core.po b/l10n/fr/core.po index e2807a4e27f..3f5247277f9 100644 --- a/l10n/fr/core.po +++ b/l10n/fr/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: msoko \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files.po b/l10n/fr/files.po index 5a210b069f3..ea1d44fe903 100644 --- a/l10n/fr/files.po +++ b/l10n/fr/files.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Christophe Lherieau \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files_external.po b/l10n/fr/files_external.po index 4de73cb7b3d..a1e8e7fcb48 100644 --- a/l10n/fr/files_external.po +++ b/l10n/fr/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files_sharing.po b/l10n/fr/files_sharing.po index 4b9be759029..95f720f1a93 100644 --- a/l10n/fr/files_sharing.po +++ b/l10n/fr/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files_trashbin.po b/l10n/fr/files_trashbin.po index f0c54cf1da1..24a5ce04004 100644 --- a/l10n/fr/files_trashbin.po +++ b/l10n/fr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/lib.po b/l10n/fr/lib.po index aaf4929bd2b..452184d3569 100644 --- a/l10n/fr/lib.po +++ b/l10n/fr/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/settings.po b/l10n/fr/settings.po index a1a52f52f62..b9c958ef2db 100644 --- a/l10n/fr/settings.po +++ b/l10n/fr/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/user_ldap.po b/l10n/fr/user_ldap.po index 38f0b27ee05..bb84d226fe7 100644 --- a/l10n/fr/user_ldap.po +++ b/l10n/fr/user_ldap.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: plachance \n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/core.po b/l10n/gl/core.po index c82e920afcf..c7dee9cdf38 100644 --- a/l10n/gl/core.po +++ b/l10n/gl/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/files.po b/l10n/gl/files.po index f0ff411edf2..97b213b8a30 100644 --- a/l10n/gl/files.po +++ b/l10n/gl/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/files_encryption.po b/l10n/gl/files_encryption.po index 98d1d55438a..583c4d33551 100644 --- a/l10n/gl/files_encryption.po +++ b/l10n/gl/files_encryption.po @@ -4,12 +4,14 @@ # # Translators: # mbouzada , 2013 +# mbouzada , 2013 +# mbouzada , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 07:00+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 08:00+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" @@ -65,11 +67,11 @@ msgstr "Cambiar a chave de la recuperación do cifrado de contrasinais:" #: templates/settings-admin.php:39 msgid "Old Recovery account password" -msgstr "" +msgstr "Antigo contrasinal de recuperación da conta" #: templates/settings-admin.php:46 msgid "New Recovery account password" -msgstr "" +msgstr "Novo contrasinal de recuperación da conta" #: templates/settings-admin.php:51 msgid "Change Password" @@ -77,18 +79,18 @@ msgstr "Cambiar o contrasinal" #: templates/settings-personal.php:9 msgid "Enable password recovery by sharing all files with your administrator:" -msgstr "" +msgstr "Activar a recuperación de contrasinais compartindo todos os ficheiros co administrador:" #: templates/settings-personal.php:11 msgid "" "Enabling this option will allow you to reobtain access to your encrypted " "files if your password is lost" -msgstr "" +msgstr "Ao activar esta opción permitiráselle volver a obter acceso aos ficheiros cifrados se perde o contrasinal" #: templates/settings-personal.php:27 msgid "File recovery settings updated" -msgstr "" +msgstr "Actualizouse o ficheiro de axustes de recuperación" #: templates/settings-personal.php:28 msgid "Could not update file recovery" -msgstr "" +msgstr "Non foi posíbel actualizar o ficheiro de recuperación" diff --git a/l10n/gl/files_external.po b/l10n/gl/files_external.po index d0b33514379..6a1e321dbe0 100644 --- a/l10n/gl/files_external.po +++ b/l10n/gl/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/files_sharing.po b/l10n/gl/files_sharing.po index 93f5c8287d9..6be3b7318f6 100644 --- a/l10n/gl/files_sharing.po +++ b/l10n/gl/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/files_trashbin.po b/l10n/gl/files_trashbin.po index e90c2777438..5bc79b03d9b 100644 --- a/l10n/gl/files_trashbin.po +++ b/l10n/gl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/lib.po b/l10n/gl/lib.po index ab04cf10a2e..bac73862a4c 100644 --- a/l10n/gl/lib.po +++ b/l10n/gl/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/settings.po b/l10n/gl/settings.po index 3e30c88b545..48f260d3332 100644 --- a/l10n/gl/settings.po +++ b/l10n/gl/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/user_ldap.po b/l10n/gl/user_ldap.po index 5162e7bc58b..52971c67c19 100644 --- a/l10n/gl/user_ldap.po +++ b/l10n/gl/user_ldap.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: mbouzada \n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/core.po b/l10n/he/core.po index 572e2fc69b5..a56c6873ff9 100644 --- a/l10n/he/core.po +++ b/l10n/he/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files.po b/l10n/he/files.po index 87ab55469c1..4c7f442cd8c 100644 --- a/l10n/he/files.po +++ b/l10n/he/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files_external.po b/l10n/he/files_external.po index aa8693d7414..c1786298b13 100644 --- a/l10n/he/files_external.po +++ b/l10n/he/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files_sharing.po b/l10n/he/files_sharing.po index 39f0aac0651..a796f8ef87e 100644 --- a/l10n/he/files_sharing.po +++ b/l10n/he/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files_trashbin.po b/l10n/he/files_trashbin.po index 8c49c90ba12..0b71e0535a8 100644 --- a/l10n/he/files_trashbin.po +++ b/l10n/he/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/lib.po b/l10n/he/lib.po index b6a84a12755..db4e3883a16 100644 --- a/l10n/he/lib.po +++ b/l10n/he/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/settings.po b/l10n/he/settings.po index 9a99b8d7ce9..ff975e8a228 100644 --- a/l10n/he/settings.po +++ b/l10n/he/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/user_ldap.po b/l10n/he/user_ldap.po index 2e8cf820198..92660e60896 100644 --- a/l10n/he/user_ldap.po +++ b/l10n/he/user_ldap.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hi/core.po b/l10n/hi/core.po index 89fc47d2841..5064703432c 100644 --- a/l10n/hi/core.po +++ b/l10n/hi/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hi/lib.po b/l10n/hi/lib.po index 9792ca8cbc7..5d692249758 100644 --- a/l10n/hi/lib.po +++ b/l10n/hi/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/owncloud/language/hi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/core.po b/l10n/hr/core.po index f3ebca83987..ef435cc5ba6 100644 --- a/l10n/hr/core.po +++ b/l10n/hr/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/files.po b/l10n/hr/files.po index 132d497bcf9..c0f82fdda0d 100644 --- a/l10n/hr/files.po +++ b/l10n/hr/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/files_external.po b/l10n/hr/files_external.po index fad820592ea..302c7f00760 100644 --- a/l10n/hr/files_external.po +++ b/l10n/hr/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/files_sharing.po b/l10n/hr/files_sharing.po index c886967f9f6..7150c836a00 100644 --- a/l10n/hr/files_sharing.po +++ b/l10n/hr/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/files_trashbin.po b/l10n/hr/files_trashbin.po index 5c18e6ec0e6..bb9f65a64f6 100644 --- a/l10n/hr/files_trashbin.po +++ b/l10n/hr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/lib.po b/l10n/hr/lib.po index 0ba2f5836b5..74fac12dd62 100644 --- a/l10n/hr/lib.po +++ b/l10n/hr/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/settings.po b/l10n/hr/settings.po index 30272b5bd5e..a0fcdb89417 100644 --- a/l10n/hr/settings.po +++ b/l10n/hr/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/user_ldap.po b/l10n/hr/user_ldap.po index ecd821ed0af..cba292130c9 100644 --- a/l10n/hr/user_ldap.po +++ b/l10n/hr/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/core.po b/l10n/hu_HU/core.po index 6d69d246da3..f9f4a4fe4f7 100644 --- a/l10n/hu_HU/core.po +++ b/l10n/hu_HU/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Laszlo Tornoci \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/files.po b/l10n/hu_HU/files.po index 1db96175497..53f1a297536 100644 --- a/l10n/hu_HU/files.po +++ b/l10n/hu_HU/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Laszlo Tornoci \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/files_external.po b/l10n/hu_HU/files_external.po index ffff744008b..f63d2c6f833 100644 --- a/l10n/hu_HU/files_external.po +++ b/l10n/hu_HU/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Laszlo Tornoci \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/files_sharing.po b/l10n/hu_HU/files_sharing.po index 2d692f6a003..b1c8b21e2eb 100644 --- a/l10n/hu_HU/files_sharing.po +++ b/l10n/hu_HU/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/files_trashbin.po b/l10n/hu_HU/files_trashbin.po index 99b725c3ac7..673d0e7daa4 100644 --- a/l10n/hu_HU/files_trashbin.po +++ b/l10n/hu_HU/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/lib.po b/l10n/hu_HU/lib.po index 9d65a5f0326..f8a569b0a12 100644 --- a/l10n/hu_HU/lib.po +++ b/l10n/hu_HU/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: Laszlo Tornoci \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/settings.po b/l10n/hu_HU/settings.po index 5c0e3e282f3..2016cda84b6 100644 --- a/l10n/hu_HU/settings.po +++ b/l10n/hu_HU/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Laszlo Tornoci \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/user_ldap.po b/l10n/hu_HU/user_ldap.po index fc4df4b0456..227d6447b4f 100644 --- a/l10n/hu_HU/user_ldap.po +++ b/l10n/hu_HU/user_ldap.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Laszlo Tornoci \n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hy/files.po b/l10n/hy/files.po index 3019b47b5f7..1f3742d0b64 100644 --- a/l10n/hy/files.po +++ b/l10n/hy/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hy/files_external.po b/l10n/hy/files_external.po index 8902a6865f3..c5959563cd4 100644 --- a/l10n/hy/files_external.po +++ b/l10n/hy/files_external.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" diff --git a/l10n/hy/files_sharing.po b/l10n/hy/files_sharing.po index 036350e9016..d360b244338 100644 --- a/l10n/hy/files_sharing.po +++ b/l10n/hy/files_sharing.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" diff --git a/l10n/hy/files_trashbin.po b/l10n/hy/files_trashbin.po index 8468b1f82df..186cb696f43 100644 --- a/l10n/hy/files_trashbin.po +++ b/l10n/hy/files_trashbin.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" diff --git a/l10n/hy/settings.po b/l10n/hy/settings.po index 76043b4ca03..6d46441160c 100644 --- a/l10n/hy/settings.po +++ b/l10n/hy/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Armenian (http://www.transifex.com/projects/p/owncloud/language/hy/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/core.po b/l10n/ia/core.po index ee678a38a67..74e8cdfe938 100644 --- a/l10n/ia/core.po +++ b/l10n/ia/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/files.po b/l10n/ia/files.po index 0c974b4dab7..5eb8d541fcc 100644 --- a/l10n/ia/files.po +++ b/l10n/ia/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/files_external.po b/l10n/ia/files_external.po index 9fc7ed88967..d33df31a8bc 100644 --- a/l10n/ia/files_external.po +++ b/l10n/ia/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/files_sharing.po b/l10n/ia/files_sharing.po index ba39382665b..f185eee2f12 100644 --- a/l10n/ia/files_sharing.po +++ b/l10n/ia/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/files_trashbin.po b/l10n/ia/files_trashbin.po index d4b53ae1e14..8db9d253cc5 100644 --- a/l10n/ia/files_trashbin.po +++ b/l10n/ia/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/lib.po b/l10n/ia/lib.po index a1edc04173d..296158b5106 100644 --- a/l10n/ia/lib.po +++ b/l10n/ia/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/settings.po b/l10n/ia/settings.po index 1b7a939d264..277d277f6a2 100644 --- a/l10n/ia/settings.po +++ b/l10n/ia/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/user_ldap.po b/l10n/ia/user_ldap.po index 4cf6d5c9bb5..e5582b3fc0c 100644 --- a/l10n/ia/user_ldap.po +++ b/l10n/ia/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/core.po b/l10n/id/core.po index 9c6b02757a4..17ebc16853a 100644 --- a/l10n/id/core.po +++ b/l10n/id/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/files.po b/l10n/id/files.po index a13cde22471..92c3176689d 100644 --- a/l10n/id/files.po +++ b/l10n/id/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/files_external.po b/l10n/id/files_external.po index 757b8074c44..34583234e67 100644 --- a/l10n/id/files_external.po +++ b/l10n/id/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/files_sharing.po b/l10n/id/files_sharing.po index 507030fcea4..9969cb5fbf9 100644 --- a/l10n/id/files_sharing.po +++ b/l10n/id/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/files_trashbin.po b/l10n/id/files_trashbin.po index 1e2dfe0d866..0922222ae21 100644 --- a/l10n/id/files_trashbin.po +++ b/l10n/id/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/lib.po b/l10n/id/lib.po index 7e9d04c7492..40a0f2129e1 100644 --- a/l10n/id/lib.po +++ b/l10n/id/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/settings.po b/l10n/id/settings.po index db81cfc465a..13b7a63d97b 100644 --- a/l10n/id/settings.po +++ b/l10n/id/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/user_ldap.po b/l10n/id/user_ldap.po index 3e0c3227cef..e9d987cd277 100644 --- a/l10n/id/user_ldap.po +++ b/l10n/id/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/core.po b/l10n/is/core.po index a6c989cd889..29ec4fcb335 100644 --- a/l10n/is/core.po +++ b/l10n/is/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/files.po b/l10n/is/files.po index ab228c23c7a..903efe3a19a 100644 --- a/l10n/is/files.po +++ b/l10n/is/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/files_external.po b/l10n/is/files_external.po index ab58d024211..750c2249cd7 100644 --- a/l10n/is/files_external.po +++ b/l10n/is/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/files_sharing.po b/l10n/is/files_sharing.po index a6ed046dad1..d8642b612da 100644 --- a/l10n/is/files_sharing.po +++ b/l10n/is/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/files_trashbin.po b/l10n/is/files_trashbin.po index bf84b0232b7..2bfa7104ee6 100644 --- a/l10n/is/files_trashbin.po +++ b/l10n/is/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/lib.po b/l10n/is/lib.po index 86ac4aef5a9..37c87ab5997 100644 --- a/l10n/is/lib.po +++ b/l10n/is/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/settings.po b/l10n/is/settings.po index bed94e21b7e..a2ed3ae0adf 100644 --- a/l10n/is/settings.po +++ b/l10n/is/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/user_ldap.po b/l10n/is/user_ldap.po index fb63014028d..f09665d2329 100644 --- a/l10n/is/user_ldap.po +++ b/l10n/is/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/core.po b/l10n/it/core.po index 74217759496..3123748e835 100644 --- a/l10n/it/core.po +++ b/l10n/it/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files.po b/l10n/it/files.po index 98eacd6d3eb..612b277e22d 100644 --- a/l10n/it/files.po +++ b/l10n/it/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files_external.po b/l10n/it/files_external.po index ee87d670f4f..7acfe1e9ac4 100644 --- a/l10n/it/files_external.po +++ b/l10n/it/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files_sharing.po b/l10n/it/files_sharing.po index 38cbaf14efc..a4b0685df67 100644 --- a/l10n/it/files_sharing.po +++ b/l10n/it/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files_trashbin.po b/l10n/it/files_trashbin.po index 81742e492a6..13cd3f0777d 100644 --- a/l10n/it/files_trashbin.po +++ b/l10n/it/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/lib.po b/l10n/it/lib.po index 312194b5a59..1319b291049 100644 --- a/l10n/it/lib.po +++ b/l10n/it/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/settings.po b/l10n/it/settings.po index f47b825a759..e8ec8991fee 100644 --- a/l10n/it/settings.po +++ b/l10n/it/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/user_ldap.po b/l10n/it/user_ldap.po index ea82f8b570a..dd87b8c9754 100644 --- a/l10n/it/user_ldap.po +++ b/l10n/it/user_ldap.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/core.po b/l10n/ja_JP/core.po index d0351725ff8..dfc10d3c2ae 100644 --- a/l10n/ja_JP/core.po +++ b/l10n/ja_JP/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/files.po b/l10n/ja_JP/files.po index 3c7dedab0bf..d2ccc18f12e 100644 --- a/l10n/ja_JP/files.po +++ b/l10n/ja_JP/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/files_encryption.po b/l10n/ja_JP/files_encryption.po index 7f1370c7106..bb4c738de09 100644 --- a/l10n/ja_JP/files_encryption.po +++ b/l10n/ja_JP/files_encryption.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:58+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 00:10+0000\n" "Last-Translator: tt yn \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" @@ -45,7 +45,7 @@ msgstr "暗号化" #: templates/settings-admin.php:9 msgid "" "Enable encryption passwords recovery key (allow sharing to recovery key):" -msgstr "" +msgstr "暗号化パスワードの復旧キーを有効にする(復旧キーを共有することを許可):" #: templates/settings-admin.php:13 msgid "Recovery account password" diff --git a/l10n/ja_JP/files_external.po b/l10n/ja_JP/files_external.po index d1ae250d756..d6d44b5f8d5 100644 --- a/l10n/ja_JP/files_external.po +++ b/l10n/ja_JP/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/files_sharing.po b/l10n/ja_JP/files_sharing.po index d175faddb17..f8dd0c17bc2 100644 --- a/l10n/ja_JP/files_sharing.po +++ b/l10n/ja_JP/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/files_trashbin.po b/l10n/ja_JP/files_trashbin.po index 7ef98025d90..73efd166e07 100644 --- a/l10n/ja_JP/files_trashbin.po +++ b/l10n/ja_JP/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/lib.po b/l10n/ja_JP/lib.po index c60b0e169c3..e786fe49a79 100644 --- a/l10n/ja_JP/lib.po +++ b/l10n/ja_JP/lib.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# tt yn , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" +"Last-Translator: tt yn \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -123,7 +124,7 @@ msgstr "既存のアカウントもしくは管理者のどちらかを入力す #: setup.php:155 msgid "Oracle connection could not be established" -msgstr "" +msgstr "Oracleへの接続が確立できませんでした。" #: setup.php:237 msgid "MySQL username and/or password not valid" diff --git a/l10n/ja_JP/settings.po b/l10n/ja_JP/settings.po index 17ee8d489b0..210d7f1d376 100644 --- a/l10n/ja_JP/settings.po +++ b/l10n/ja_JP/settings.po @@ -4,13 +4,14 @@ # # Translators: # Daisuke Deguchi , 2013 +# tt yn , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" +"Last-Translator: tt yn \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -466,7 +467,7 @@ msgstr "作成" #: templates/users.php:34 msgid "Admin Recovery Password" -msgstr "" +msgstr "管理者復旧パスワード" #: templates/users.php:38 msgid "Default Storage" diff --git a/l10n/ja_JP/user_ldap.po b/l10n/ja_JP/user_ldap.po index f09879f1378..a144d41a6f5 100644 --- a/l10n/ja_JP/user_ldap.po +++ b/l10n/ja_JP/user_ldap.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Daisuke Deguchi \n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka/files.po b/l10n/ka/files.po index 53527515132..bfc07fbeedf 100644 --- a/l10n/ka/files.po +++ b/l10n/ka/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (http://www.transifex.com/projects/p/owncloud/language/ka/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka/files_sharing.po b/l10n/ka/files_sharing.po index bdb2af3e9ab..68a06d7fb7e 100644 --- a/l10n/ka/files_sharing.po +++ b/l10n/ka/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (http://www.transifex.com/projects/p/owncloud/language/ka/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/core.po b/l10n/ka_GE/core.po index 45a9dff0eef..1ab71ced4be 100644 --- a/l10n/ka_GE/core.po +++ b/l10n/ka_GE/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files.po b/l10n/ka_GE/files.po index 5296144c27d..1ff33d484bf 100644 --- a/l10n/ka_GE/files.po +++ b/l10n/ka_GE/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files_external.po b/l10n/ka_GE/files_external.po index c620c0c44c4..fe4031205c9 100644 --- a/l10n/ka_GE/files_external.po +++ b/l10n/ka_GE/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: drlinux64 \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files_sharing.po b/l10n/ka_GE/files_sharing.po index 083b22241bb..0c8b3ee7845 100644 --- a/l10n/ka_GE/files_sharing.po +++ b/l10n/ka_GE/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: drlinux64 \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files_trashbin.po b/l10n/ka_GE/files_trashbin.po index b534413a343..000a8929c7e 100644 --- a/l10n/ka_GE/files_trashbin.po +++ b/l10n/ka_GE/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: drlinux64 \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/lib.po b/l10n/ka_GE/lib.po index 29d64d5905d..1b251670ebb 100644 --- a/l10n/ka_GE/lib.po +++ b/l10n/ka_GE/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/settings.po b/l10n/ka_GE/settings.po index fcbea62883a..6403702d5d6 100644 --- a/l10n/ka_GE/settings.po +++ b/l10n/ka_GE/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/user_ldap.po b/l10n/ka_GE/user_ldap.po index f46aecd36ac..ca6d6f8afeb 100644 --- a/l10n/ka_GE/user_ldap.po +++ b/l10n/ka_GE/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/core.po b/l10n/ko/core.po index 306bc14e947..afa21fdc400 100644 --- a/l10n/ko/core.po +++ b/l10n/ko/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/files.po b/l10n/ko/files.po index b29aa4a8c31..596a378ad57 100644 --- a/l10n/ko/files.po +++ b/l10n/ko/files.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/files_external.po b/l10n/ko/files_external.po index 9787d7b23ed..2cb7b8276f3 100644 --- a/l10n/ko/files_external.po +++ b/l10n/ko/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/files_sharing.po b/l10n/ko/files_sharing.po index d1af09d3155..bbb025a87da 100644 --- a/l10n/ko/files_sharing.po +++ b/l10n/ko/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/files_trashbin.po b/l10n/ko/files_trashbin.po index 0ce2a2a5ee8..5f00ea90315 100644 --- a/l10n/ko/files_trashbin.po +++ b/l10n/ko/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/lib.po b/l10n/ko/lib.po index 52920ee751b..a93ac64707c 100644 --- a/l10n/ko/lib.po +++ b/l10n/ko/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/settings.po b/l10n/ko/settings.po index 9d7550f9a04..97abf91d8c1 100644 --- a/l10n/ko/settings.po +++ b/l10n/ko/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/user_ldap.po b/l10n/ko/user_ldap.po index 4c7a97e3b2e..58f220c181e 100644 --- a/l10n/ko/user_ldap.po +++ b/l10n/ko/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/core.po b/l10n/ku_IQ/core.po index e66f0850f8d..7b16b399736 100644 --- a/l10n/ku_IQ/core.po +++ b/l10n/ku_IQ/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/files.po b/l10n/ku_IQ/files.po index 6b6edda66a6..0c5b1a64e4b 100644 --- a/l10n/ku_IQ/files.po +++ b/l10n/ku_IQ/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/files_sharing.po b/l10n/ku_IQ/files_sharing.po index 71be77277b7..1c7a69e03f6 100644 --- a/l10n/ku_IQ/files_sharing.po +++ b/l10n/ku_IQ/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/files_trashbin.po b/l10n/ku_IQ/files_trashbin.po index c1433026f51..4f51cc2ffe5 100644 --- a/l10n/ku_IQ/files_trashbin.po +++ b/l10n/ku_IQ/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/lib.po b/l10n/ku_IQ/lib.po index 6b5349bf849..c9f81744976 100644 --- a/l10n/ku_IQ/lib.po +++ b/l10n/ku_IQ/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/settings.po b/l10n/ku_IQ/settings.po index daae7a43ff4..55380680665 100644 --- a/l10n/ku_IQ/settings.po +++ b/l10n/ku_IQ/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/user_ldap.po b/l10n/ku_IQ/user_ldap.po index e7766153443..915955dccad 100644 --- a/l10n/ku_IQ/user_ldap.po +++ b/l10n/ku_IQ/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/core.po b/l10n/lb/core.po index 2e13c0e7dbb..69d0995cc30 100644 --- a/l10n/lb/core.po +++ b/l10n/lb/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/files.po b/l10n/lb/files.po index 5ffd6e96c62..f501d6e4ec2 100644 --- a/l10n/lb/files.po +++ b/l10n/lb/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/files_external.po b/l10n/lb/files_external.po index fdef516ec6c..e5f91614837 100644 --- a/l10n/lb/files_external.po +++ b/l10n/lb/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/files_sharing.po b/l10n/lb/files_sharing.po index 7abad7bced2..de2d045d258 100644 --- a/l10n/lb/files_sharing.po +++ b/l10n/lb/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/files_trashbin.po b/l10n/lb/files_trashbin.po index 2835ab77ffb..72108f015ac 100644 --- a/l10n/lb/files_trashbin.po +++ b/l10n/lb/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/lib.po b/l10n/lb/lib.po index 70cc6975fef..ae3a653046d 100644 --- a/l10n/lb/lib.po +++ b/l10n/lb/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/settings.po b/l10n/lb/settings.po index 248587c499e..d2f0156df96 100644 --- a/l10n/lb/settings.po +++ b/l10n/lb/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/user_ldap.po b/l10n/lb/user_ldap.po index 6d881588f04..4f83b998149 100644 --- a/l10n/lb/user_ldap.po +++ b/l10n/lb/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/core.po b/l10n/lt_LT/core.po index b49fc6fb116..3eb7c02c36f 100644 --- a/l10n/lt_LT/core.po +++ b/l10n/lt_LT/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Roman Deniobe \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/files.po b/l10n/lt_LT/files.po index b0b960b7413..767fc3da827 100644 --- a/l10n/lt_LT/files.po +++ b/l10n/lt_LT/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/files_external.po b/l10n/lt_LT/files_external.po index 33459e1ce07..eee630efced 100644 --- a/l10n/lt_LT/files_external.po +++ b/l10n/lt_LT/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/files_sharing.po b/l10n/lt_LT/files_sharing.po index 56696359148..eb4017fd43d 100644 --- a/l10n/lt_LT/files_sharing.po +++ b/l10n/lt_LT/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/files_trashbin.po b/l10n/lt_LT/files_trashbin.po index 703568acb79..afab5f79b85 100644 --- a/l10n/lt_LT/files_trashbin.po +++ b/l10n/lt_LT/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/lib.po b/l10n/lt_LT/lib.po index bc3bd172469..6070ff15c6c 100644 --- a/l10n/lt_LT/lib.po +++ b/l10n/lt_LT/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/settings.po b/l10n/lt_LT/settings.po index 3c934ade010..07726c02c01 100644 --- a/l10n/lt_LT/settings.po +++ b/l10n/lt_LT/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/user_ldap.po b/l10n/lt_LT/user_ldap.po index f2b10fa0055..d489d5170a7 100644 --- a/l10n/lt_LT/user_ldap.po +++ b/l10n/lt_LT/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/core.po b/l10n/lv/core.po index dce31d5ff18..85929f2968e 100644 --- a/l10n/lv/core.po +++ b/l10n/lv/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/files.po b/l10n/lv/files.po index 8ea56c0d77f..e75ad0a2bea 100644 --- a/l10n/lv/files.po +++ b/l10n/lv/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/files_external.po b/l10n/lv/files_external.po index 312a5f3ed5d..f698f106dfd 100644 --- a/l10n/lv/files_external.po +++ b/l10n/lv/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/files_sharing.po b/l10n/lv/files_sharing.po index 3589bb8760c..6c9db4e0745 100644 --- a/l10n/lv/files_sharing.po +++ b/l10n/lv/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/files_trashbin.po b/l10n/lv/files_trashbin.po index 41dd280db4e..f478a1a5380 100644 --- a/l10n/lv/files_trashbin.po +++ b/l10n/lv/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/lib.po b/l10n/lv/lib.po index 397917c695f..11d857681b7 100644 --- a/l10n/lv/lib.po +++ b/l10n/lv/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/settings.po b/l10n/lv/settings.po index 8c4699c494f..01bc08eaf2c 100644 --- a/l10n/lv/settings.po +++ b/l10n/lv/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/user_ldap.po b/l10n/lv/user_ldap.po index 3c49fc3c58e..5e60c37aef8 100644 --- a/l10n/lv/user_ldap.po +++ b/l10n/lv/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/core.po b/l10n/mk/core.po index 0ae92528b4d..ac12061917b 100644 --- a/l10n/mk/core.po +++ b/l10n/mk/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/files.po b/l10n/mk/files.po index 53d4465f5ca..690eaf2b887 100644 --- a/l10n/mk/files.po +++ b/l10n/mk/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/files_external.po b/l10n/mk/files_external.po index 4d25c25c235..4e33f030a43 100644 --- a/l10n/mk/files_external.po +++ b/l10n/mk/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/files_sharing.po b/l10n/mk/files_sharing.po index 8f5350a5ed8..0453b0f8b52 100644 --- a/l10n/mk/files_sharing.po +++ b/l10n/mk/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/files_trashbin.po b/l10n/mk/files_trashbin.po index 04db2a54bd0..c0aa67f4d15 100644 --- a/l10n/mk/files_trashbin.po +++ b/l10n/mk/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/lib.po b/l10n/mk/lib.po index 497fee8fe48..08516c3c55d 100644 --- a/l10n/mk/lib.po +++ b/l10n/mk/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/settings.po b/l10n/mk/settings.po index 20478b1ba7d..68bd2d08d9c 100644 --- a/l10n/mk/settings.po +++ b/l10n/mk/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/user_ldap.po b/l10n/mk/user_ldap.po index f1aa42b9442..12c2b844f8b 100644 --- a/l10n/mk/user_ldap.po +++ b/l10n/mk/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/core.po b/l10n/ms_MY/core.po index dbe7892825d..6ceb9677da1 100644 --- a/l10n/ms_MY/core.po +++ b/l10n/ms_MY/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/files.po b/l10n/ms_MY/files.po index 049514d04f9..f7b33200050 100644 --- a/l10n/ms_MY/files.po +++ b/l10n/ms_MY/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/files_external.po b/l10n/ms_MY/files_external.po index 0e330ef9552..161f2a6259a 100644 --- a/l10n/ms_MY/files_external.po +++ b/l10n/ms_MY/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/files_sharing.po b/l10n/ms_MY/files_sharing.po index bcba5b44768..bdbe77bd545 100644 --- a/l10n/ms_MY/files_sharing.po +++ b/l10n/ms_MY/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/files_trashbin.po b/l10n/ms_MY/files_trashbin.po index b784d3df6d9..80119f596d5 100644 --- a/l10n/ms_MY/files_trashbin.po +++ b/l10n/ms_MY/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/lib.po b/l10n/ms_MY/lib.po index 723b88d7ff2..c626516f98c 100644 --- a/l10n/ms_MY/lib.po +++ b/l10n/ms_MY/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/settings.po b/l10n/ms_MY/settings.po index 8d06e29501b..41c557f852d 100644 --- a/l10n/ms_MY/settings.po +++ b/l10n/ms_MY/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/user_ldap.po b/l10n/ms_MY/user_ldap.po index 63ed8a148f1..b1ba1062a06 100644 --- a/l10n/ms_MY/user_ldap.po +++ b/l10n/ms_MY/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/core.po b/l10n/my_MM/core.po index 383b27975b2..51523a241c7 100644 --- a/l10n/my_MM/core.po +++ b/l10n/my_MM/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/files.po b/l10n/my_MM/files.po index 8d70b87716a..49cdaf50689 100644 --- a/l10n/my_MM/files.po +++ b/l10n/my_MM/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/files_sharing.po b/l10n/my_MM/files_sharing.po index b989c6f8fe2..f7cb6623df9 100644 --- a/l10n/my_MM/files_sharing.po +++ b/l10n/my_MM/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/my_MM/lib.po b/l10n/my_MM/lib.po index 9b55512891a..217fbce6cf0 100644 --- a/l10n/my_MM/lib.po +++ b/l10n/my_MM/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Burmese (Myanmar) (http://www.transifex.com/projects/p/owncloud/language/my_MM/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/core.po b/l10n/nb_NO/core.po index 71aea619138..03e3b374483 100644 --- a/l10n/nb_NO/core.po +++ b/l10n/nb_NO/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files.po b/l10n/nb_NO/files.po index a46cbd78148..f41226f9942 100644 --- a/l10n/nb_NO/files.po +++ b/l10n/nb_NO/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Hans Nesse <>\n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files_external.po b/l10n/nb_NO/files_external.po index d5e1cbfa315..44a21a9ae52 100644 --- a/l10n/nb_NO/files_external.po +++ b/l10n/nb_NO/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Hans Nesse <>\n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files_sharing.po b/l10n/nb_NO/files_sharing.po index ad80b4b2848..07e07815666 100644 --- a/l10n/nb_NO/files_sharing.po +++ b/l10n/nb_NO/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files_trashbin.po b/l10n/nb_NO/files_trashbin.po index c49f21bcb7f..95fab7c54e8 100644 --- a/l10n/nb_NO/files_trashbin.po +++ b/l10n/nb_NO/files_trashbin.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Hans Nesse <>\n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/lib.po b/l10n/nb_NO/lib.po index 09916d998b7..ff574006104 100644 --- a/l10n/nb_NO/lib.po +++ b/l10n/nb_NO/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/settings.po b/l10n/nb_NO/settings.po index fad235b9233..1e61c245126 100644 --- a/l10n/nb_NO/settings.po +++ b/l10n/nb_NO/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/user_ldap.po b/l10n/nb_NO/user_ldap.po index ba95d21248d..8191a00900c 100644 --- a/l10n/nb_NO/user_ldap.po +++ b/l10n/nb_NO/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/core.po b/l10n/nl/core.po index d1339ef19e0..736848cc750 100644 --- a/l10n/nl/core.po +++ b/l10n/nl/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/files.po b/l10n/nl/files.po index 271d73810f2..b3eb6e1324e 100644 --- a/l10n/nl/files.po +++ b/l10n/nl/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/files_external.po b/l10n/nl/files_external.po index 507d6c68f17..a84b40d7006 100644 --- a/l10n/nl/files_external.po +++ b/l10n/nl/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/files_sharing.po b/l10n/nl/files_sharing.po index 1ab80fbbfc6..ecde82c57f3 100644 --- a/l10n/nl/files_sharing.po +++ b/l10n/nl/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/files_trashbin.po b/l10n/nl/files_trashbin.po index e842ab2f793..e135ddc0646 100644 --- a/l10n/nl/files_trashbin.po +++ b/l10n/nl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/lib.po b/l10n/nl/lib.po index 9ab110c0022..7bd53bb6987 100644 --- a/l10n/nl/lib.po +++ b/l10n/nl/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/settings.po b/l10n/nl/settings.po index 0d1a96aba5f..1340a3db687 100644 --- a/l10n/nl/settings.po +++ b/l10n/nl/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/user_ldap.po b/l10n/nl/user_ldap.po index ae4971b4156..ef8953ea926 100644 --- a/l10n/nl/user_ldap.po +++ b/l10n/nl/user_ldap.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: André Koot \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/core.po b/l10n/nn_NO/core.po index a31ee08289a..709ca1cb681 100644 --- a/l10n/nn_NO/core.po +++ b/l10n/nn_NO/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files.po b/l10n/nn_NO/files.po index 2e8734faab3..b31b5766f2e 100644 --- a/l10n/nn_NO/files.po +++ b/l10n/nn_NO/files.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files_external.po b/l10n/nn_NO/files_external.po index 084df4b746f..a4bbf7f21d2 100644 --- a/l10n/nn_NO/files_external.po +++ b/l10n/nn_NO/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files_sharing.po b/l10n/nn_NO/files_sharing.po index e846c9d1a21..5f7e3f8c310 100644 --- a/l10n/nn_NO/files_sharing.po +++ b/l10n/nn_NO/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files_trashbin.po b/l10n/nn_NO/files_trashbin.po index e56617d69fa..fe5bc0afb26 100644 --- a/l10n/nn_NO/files_trashbin.po +++ b/l10n/nn_NO/files_trashbin.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/lib.po b/l10n/nn_NO/lib.po index dcb52e0e407..ad2b917bccf 100644 --- a/l10n/nn_NO/lib.po +++ b/l10n/nn_NO/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: unhammer \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/settings.po b/l10n/nn_NO/settings.po index d53e2a117ee..9942f63488e 100644 --- a/l10n/nn_NO/settings.po +++ b/l10n/nn_NO/settings.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/user_ldap.po b/l10n/nn_NO/user_ldap.po index 76f343d91ce..fc7992427d6 100644 --- a/l10n/nn_NO/user_ldap.po +++ b/l10n/nn_NO/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/core.po b/l10n/oc/core.po index 8085c54f8d6..ef626b77d76 100644 --- a/l10n/oc/core.po +++ b/l10n/oc/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/files.po b/l10n/oc/files.po index ca59ea12e44..0daeac35552 100644 --- a/l10n/oc/files.po +++ b/l10n/oc/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/files_external.po b/l10n/oc/files_external.po index 0111481a9e5..b212045b568 100644 --- a/l10n/oc/files_external.po +++ b/l10n/oc/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/files_sharing.po b/l10n/oc/files_sharing.po index cc935418037..8472badae04 100644 --- a/l10n/oc/files_sharing.po +++ b/l10n/oc/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/files_trashbin.po b/l10n/oc/files_trashbin.po index 8e5b8f353de..5971fe7ac5e 100644 --- a/l10n/oc/files_trashbin.po +++ b/l10n/oc/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/lib.po b/l10n/oc/lib.po index bed1fe38062..339945e1bef 100644 --- a/l10n/oc/lib.po +++ b/l10n/oc/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/settings.po b/l10n/oc/settings.po index b6537963a06..de5f2a07210 100644 --- a/l10n/oc/settings.po +++ b/l10n/oc/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/user_ldap.po b/l10n/oc/user_ldap.po index 95aad8d0add..b69fe92aa00 100644 --- a/l10n/oc/user_ldap.po +++ b/l10n/oc/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/core.po b/l10n/pl/core.po index 0a6334b71e6..80c928e4ab8 100644 --- a/l10n/pl/core.po +++ b/l10n/pl/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/files.po b/l10n/pl/files.po index 1e47d2345d8..a92d06584e4 100644 --- a/l10n/pl/files.po +++ b/l10n/pl/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: adbrand \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/files_external.po b/l10n/pl/files_external.po index 6fa27193fe9..9c3b278e68d 100644 --- a/l10n/pl/files_external.po +++ b/l10n/pl/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/files_sharing.po b/l10n/pl/files_sharing.po index 7f83ad4ccf6..7cce02488c5 100644 --- a/l10n/pl/files_sharing.po +++ b/l10n/pl/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/files_trashbin.po b/l10n/pl/files_trashbin.po index c0c0f60e8a6..52a71f3394a 100644 --- a/l10n/pl/files_trashbin.po +++ b/l10n/pl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/lib.po b/l10n/pl/lib.po index 03ea126cdb0..7bc6cd7c123 100644 --- a/l10n/pl/lib.po +++ b/l10n/pl/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/settings.po b/l10n/pl/settings.po index cd0ffd5900d..ed1428d0315 100644 --- a/l10n/pl/settings.po +++ b/l10n/pl/settings.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/user_ldap.po b/l10n/pl/user_ldap.po index 4cea4c05d50..9a658596fc5 100644 --- a/l10n/pl/user_ldap.po +++ b/l10n/pl/user_ldap.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Cyryl Sochacki \n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl_PL/core.po b/l10n/pl_PL/core.po index 8d297b83b23..4fe18c99186 100644 --- a/l10n/pl_PL/core.po +++ b/l10n/pl_PL/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:01+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl_PL/files.po b/l10n/pl_PL/files.po index ae728a7a748..ab35f9d766c 100644 --- a/l10n/pl_PL/files.po +++ b/l10n/pl_PL/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl_PL/lib.po b/l10n/pl_PL/lib.po index 8f136d55211..4d8f8b01599 100644 --- a/l10n/pl_PL/lib.po +++ b/l10n/pl_PL/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl_PL/settings.po b/l10n/pl_PL/settings.po index 9830ab282f0..ab0b631002e 100644 --- a/l10n/pl_PL/settings.po +++ b/l10n/pl_PL/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/owncloud/language/pl_PL/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/core.po b/l10n/pt_BR/core.po index dcb91632e4b..98370f24052 100644 --- a/l10n/pt_BR/core.po +++ b/l10n/pt_BR/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:50+0000\n" "Last-Translator: Flávio Veras \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/files.po b/l10n/pt_BR/files.po index 2537f6da5c3..43648d7e888 100644 --- a/l10n/pt_BR/files.po +++ b/l10n/pt_BR/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Flávio Veras \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/files_encryption.po b/l10n/pt_BR/files_encryption.po index 5d944e56f87..d36fa35c6aa 100644 --- a/l10n/pt_BR/files_encryption.po +++ b/l10n/pt_BR/files_encryption.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Flávio Veras , 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 00:20+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 19:40+0000\n" +"Last-Translator: Flávio Veras \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,19 +20,19 @@ msgstr "" #: ajax/adminrecovery.php:40 msgid "Recovery key successfully " -msgstr "" +msgstr "Recuperação de chave com sucesso" #: ajax/adminrecovery.php:42 msgid "Could not " -msgstr "" +msgstr "Não foi possível" #: ajax/changeRecoveryPassword.php:49 msgid "Password successfully changed." -msgstr "" +msgstr "Senha alterada com sucesso." #: ajax/changeRecoveryPassword.php:51 msgid "Could not change the password. Maybe the old password was not correct." -msgstr "" +msgstr "Não foi possível alterar a senha. Talvez a senha antiga não estava correta." #: js/settings-admin.js:11 msgid "Saving..." @@ -44,50 +45,50 @@ msgstr "Criptografia" #: templates/settings-admin.php:9 msgid "" "Enable encryption passwords recovery key (allow sharing to recovery key):" -msgstr "" +msgstr "Ativar a criptografia de chave de recuperação de senhas (permitir compartilhar a chave de recuperação):" #: templates/settings-admin.php:13 msgid "Recovery account password" -msgstr "" +msgstr "Recuperar a senha da conta" #: templates/settings-admin.php:20 templates/settings-personal.php:18 msgid "Enabled" -msgstr "" +msgstr "Habilidado" #: templates/settings-admin.php:28 templates/settings-personal.php:26 msgid "Disabled" -msgstr "" +msgstr "Desabilitado" #: templates/settings-admin.php:32 msgid "Change encryption passwords recovery key:" -msgstr "" +msgstr "Mudar a criptografia de chave de recuperação de senhas:" #: templates/settings-admin.php:39 msgid "Old Recovery account password" -msgstr "" +msgstr "Recuperação de senha de conta antiga" #: templates/settings-admin.php:46 msgid "New Recovery account password" -msgstr "" +msgstr "Senha Nova da conta de Recuperação" #: templates/settings-admin.php:51 msgid "Change Password" -msgstr "" +msgstr "Trocar Senha" #: templates/settings-personal.php:9 msgid "Enable password recovery by sharing all files with your administrator:" -msgstr "" +msgstr "Habilitar recuperação de senha através da partilha de todos os arquivos com o administrador:" #: templates/settings-personal.php:11 msgid "" "Enabling this option will allow you to reobtain access to your encrypted " "files if your password is lost" -msgstr "" +msgstr "Ativando esta opção irá permitir que você reobtainha acesso aos seus arquivos criptografados se sua senha for perdida" #: templates/settings-personal.php:27 msgid "File recovery settings updated" -msgstr "" +msgstr "Configurações de recuperação de arquivo atualizado" #: templates/settings-personal.php:28 msgid "Could not update file recovery" -msgstr "" +msgstr "Não foi possível atualizar a recuperação de arquivos" diff --git a/l10n/pt_BR/files_external.po b/l10n/pt_BR/files_external.po index 4e7d6488f18..f7e2c8a7461 100644 --- a/l10n/pt_BR/files_external.po +++ b/l10n/pt_BR/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Flávio Veras \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/files_sharing.po b/l10n/pt_BR/files_sharing.po index 2acfafb9869..6dcbeeb2210 100644 --- a/l10n/pt_BR/files_sharing.po +++ b/l10n/pt_BR/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/files_trashbin.po b/l10n/pt_BR/files_trashbin.po index 23baf48bc6b..a44bd568eb1 100644 --- a/l10n/pt_BR/files_trashbin.po +++ b/l10n/pt_BR/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/lib.po b/l10n/pt_BR/lib.po index 1c7f19f926c..04a57cac6d5 100644 --- a/l10n/pt_BR/lib.po +++ b/l10n/pt_BR/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:50+0000\n" "Last-Translator: Flávio Veras \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/settings.po b/l10n/pt_BR/settings.po index 7042ac948a5..c1abb53502a 100644 --- a/l10n/pt_BR/settings.po +++ b/l10n/pt_BR/settings.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" -"Last-Translator: I Robot \n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" +"Last-Translator: Flávio Veras \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -466,7 +466,7 @@ msgstr "Criar" #: templates/users.php:34 msgid "Admin Recovery Password" -msgstr "" +msgstr "Recuperação da Senha do Administrador" #: templates/users.php:38 msgid "Default Storage" diff --git a/l10n/pt_BR/user_ldap.po b/l10n/pt_BR/user_ldap.po index f7cd5c2ab73..84173198735 100644 --- a/l10n/pt_BR/user_ldap.po +++ b/l10n/pt_BR/user_ldap.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Flávio Veras \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/core.po b/l10n/pt_PT/core.po index 8555fa8ca0f..79c4bd5c841 100644 --- a/l10n/pt_PT/core.po +++ b/l10n/pt_PT/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/files.po b/l10n/pt_PT/files.po index b9f5360d314..9711835015d 100644 --- a/l10n/pt_PT/files.po +++ b/l10n/pt_PT/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/files_external.po b/l10n/pt_PT/files_external.po index 88ed87dcf73..d07b2036e83 100644 --- a/l10n/pt_PT/files_external.po +++ b/l10n/pt_PT/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Mouxy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/files_sharing.po b/l10n/pt_PT/files_sharing.po index 38659821743..643142eca5e 100644 --- a/l10n/pt_PT/files_sharing.po +++ b/l10n/pt_PT/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/files_trashbin.po b/l10n/pt_PT/files_trashbin.po index 7012e810982..450ef2a5602 100644 --- a/l10n/pt_PT/files_trashbin.po +++ b/l10n/pt_PT/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/lib.po b/l10n/pt_PT/lib.po index a8d9810d043..dcf2a20b6b6 100644 --- a/l10n/pt_PT/lib.po +++ b/l10n/pt_PT/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/settings.po b/l10n/pt_PT/settings.po index 2d860d801f1..8f8f5862a67 100644 --- a/l10n/pt_PT/settings.po +++ b/l10n/pt_PT/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/user_ldap.po b/l10n/pt_PT/user_ldap.po index 7157a06aea5..2f0197cdb76 100644 --- a/l10n/pt_PT/user_ldap.po +++ b/l10n/pt_PT/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/core.po b/l10n/ro/core.po index c9e70d59f5d..7ef4b4867aa 100644 --- a/l10n/ro/core.po +++ b/l10n/ro/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files.po b/l10n/ro/files.po index 595e5a20705..741268c9af3 100644 --- a/l10n/ro/files.po +++ b/l10n/ro/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files_external.po b/l10n/ro/files_external.po index 8448c74b212..90b747df9f2 100644 --- a/l10n/ro/files_external.po +++ b/l10n/ro/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files_sharing.po b/l10n/ro/files_sharing.po index f516156380b..6280fa12315 100644 --- a/l10n/ro/files_sharing.po +++ b/l10n/ro/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files_trashbin.po b/l10n/ro/files_trashbin.po index d0de269cdf5..a2a649a76aa 100644 --- a/l10n/ro/files_trashbin.po +++ b/l10n/ro/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/lib.po b/l10n/ro/lib.po index b8df5112bbc..800f9a55cae 100644 --- a/l10n/ro/lib.po +++ b/l10n/ro/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/settings.po b/l10n/ro/settings.po index 7e227065e92..5edbd4a4143 100644 --- a/l10n/ro/settings.po +++ b/l10n/ro/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/user_ldap.po b/l10n/ro/user_ldap.po index 6d5ee0f47cd..627965d2080 100644 --- a/l10n/ro/user_ldap.po +++ b/l10n/ro/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/core.po b/l10n/ru/core.po index e5c500a81ff..63a5a4aeef1 100644 --- a/l10n/ru/core.po +++ b/l10n/ru/core.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: foool \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files.po b/l10n/ru/files.po index 9c18f195a54..f495588abaa 100644 --- a/l10n/ru/files.po +++ b/l10n/ru/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files_external.po b/l10n/ru/files_external.po index 35aa28c4c44..83e746272f4 100644 --- a/l10n/ru/files_external.po +++ b/l10n/ru/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files_sharing.po b/l10n/ru/files_sharing.po index 1f0f91910aa..833d99a6744 100644 --- a/l10n/ru/files_sharing.po +++ b/l10n/ru/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files_trashbin.po b/l10n/ru/files_trashbin.po index d7fc79b3ac6..14370140394 100644 --- a/l10n/ru/files_trashbin.po +++ b/l10n/ru/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/lib.po b/l10n/ru/lib.po index 1bc33f5604c..51592d6e089 100644 --- a/l10n/ru/lib.po +++ b/l10n/ru/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/settings.po b/l10n/ru/settings.po index c19a198aee4..3811ba025b7 100644 --- a/l10n/ru/settings.po +++ b/l10n/ru/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/user_ldap.po b/l10n/ru/user_ldap.po index c1ff77930e0..f68b28c2567 100644 --- a/l10n/ru/user_ldap.po +++ b/l10n/ru/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru_RU/core.po b/l10n/ru_RU/core.po index 911e33bd8c1..3cbd14928d8 100644 --- a/l10n/ru_RU/core.po +++ b/l10n/ru_RU/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru_RU/files.po b/l10n/ru_RU/files.po index 0b49c128dce..f1a5cfea5be 100644 --- a/l10n/ru_RU/files.po +++ b/l10n/ru_RU/files.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: 2013-04-26 08:00+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" diff --git a/l10n/ru_RU/files_external.po b/l10n/ru_RU/files_external.po index 90c90262761..cfae951035d 100644 --- a/l10n/ru_RU/files_external.po +++ b/l10n/ru_RU/files_external.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" diff --git a/l10n/ru_RU/files_sharing.po b/l10n/ru_RU/files_sharing.po index 397ef1679e0..558889db189 100644 --- a/l10n/ru_RU/files_sharing.po +++ b/l10n/ru_RU/files_sharing.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" diff --git a/l10n/ru_RU/files_trashbin.po b/l10n/ru_RU/files_trashbin.po index 77b6be968e3..eda240990e6 100644 --- a/l10n/ru_RU/files_trashbin.po +++ b/l10n/ru_RU/files_trashbin.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: 2013-04-26 08:01+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" diff --git a/l10n/ru_RU/lib.po b/l10n/ru_RU/lib.po index 00831d6a1d7..baebf140725 100644 --- a/l10n/ru_RU/lib.po +++ b/l10n/ru_RU/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru_RU/settings.po b/l10n/ru_RU/settings.po index bd7808ecb79..10e54b64f3b 100644 --- a/l10n/ru_RU/settings.po +++ b/l10n/ru_RU/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru_RU/user_ldap.po b/l10n/ru_RU/user_ldap.po index 21c93b52ccc..2b690eb5bfe 100644 --- a/l10n/ru_RU/user_ldap.po +++ b/l10n/ru_RU/user_ldap.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" "PO-Revision-Date: 2013-04-26 08:02+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/owncloud/language/ru_RU/)\n" diff --git a/l10n/si_LK/core.po b/l10n/si_LK/core.po index 62527ad6485..5f8eb837618 100644 --- a/l10n/si_LK/core.po +++ b/l10n/si_LK/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files.po b/l10n/si_LK/files.po index 7b57291fdcd..8e6e38fc02a 100644 --- a/l10n/si_LK/files.po +++ b/l10n/si_LK/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files_external.po b/l10n/si_LK/files_external.po index 2eba16213a2..b95a68a244e 100644 --- a/l10n/si_LK/files_external.po +++ b/l10n/si_LK/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files_sharing.po b/l10n/si_LK/files_sharing.po index ab09a0b344e..c5bc53fc855 100644 --- a/l10n/si_LK/files_sharing.po +++ b/l10n/si_LK/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files_trashbin.po b/l10n/si_LK/files_trashbin.po index af245b29432..357d232ed75 100644 --- a/l10n/si_LK/files_trashbin.po +++ b/l10n/si_LK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/lib.po b/l10n/si_LK/lib.po index 45540e62efb..fbfed58ffc9 100644 --- a/l10n/si_LK/lib.po +++ b/l10n/si_LK/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/settings.po b/l10n/si_LK/settings.po index de7ada22614..36ed2b20621 100644 --- a/l10n/si_LK/settings.po +++ b/l10n/si_LK/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/user_ldap.po b/l10n/si_LK/user_ldap.po index acf0e6c8b16..605d7b6f0ca 100644 --- a/l10n/si_LK/user_ldap.po +++ b/l10n/si_LK/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/core.po b/l10n/sk_SK/core.po index de24fcf99d2..0f0c2eaa831 100644 --- a/l10n/sk_SK/core.po +++ b/l10n/sk_SK/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files.po b/l10n/sk_SK/files.po index d45f80245d8..8b79d378150 100644 --- a/l10n/sk_SK/files.po +++ b/l10n/sk_SK/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files_external.po b/l10n/sk_SK/files_external.po index a86aab7f354..507aa278ffa 100644 --- a/l10n/sk_SK/files_external.po +++ b/l10n/sk_SK/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: mhh \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files_sharing.po b/l10n/sk_SK/files_sharing.po index 737975cda28..2e3bae465cb 100644 --- a/l10n/sk_SK/files_sharing.po +++ b/l10n/sk_SK/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files_trashbin.po b/l10n/sk_SK/files_trashbin.po index a3d6905179f..8d4ae573628 100644 --- a/l10n/sk_SK/files_trashbin.po +++ b/l10n/sk_SK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/lib.po b/l10n/sk_SK/lib.po index 93d56982359..8cbd39556ac 100644 --- a/l10n/sk_SK/lib.po +++ b/l10n/sk_SK/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/settings.po b/l10n/sk_SK/settings.po index 4510469b46c..cc730004af0 100644 --- a/l10n/sk_SK/settings.po +++ b/l10n/sk_SK/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/user_ldap.po b/l10n/sk_SK/user_ldap.po index 7676749ed76..a80bd9d9fb4 100644 --- a/l10n/sk_SK/user_ldap.po +++ b/l10n/sk_SK/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/core.po b/l10n/sl/core.po index d8a4b3092e2..fc13339dc86 100644 --- a/l10n/sl/core.po +++ b/l10n/sl/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: mateju <>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files.po b/l10n/sl/files.po index 043e6d62928..e5a39bbe442 100644 --- a/l10n/sl/files.po +++ b/l10n/sl/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files_external.po b/l10n/sl/files_external.po index 1a7650d903e..03439e97f41 100644 --- a/l10n/sl/files_external.po +++ b/l10n/sl/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: mateju <>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files_sharing.po b/l10n/sl/files_sharing.po index e0c59f422df..65558835642 100644 --- a/l10n/sl/files_sharing.po +++ b/l10n/sl/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files_trashbin.po b/l10n/sl/files_trashbin.po index ca45e58075b..52cc46a4baf 100644 --- a/l10n/sl/files_trashbin.po +++ b/l10n/sl/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/lib.po b/l10n/sl/lib.po index 1515c5a00fd..ee6bb847a8d 100644 --- a/l10n/sl/lib.po +++ b/l10n/sl/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/settings.po b/l10n/sl/settings.po index 9c0a46f0ace..f97f66e2cb7 100644 --- a/l10n/sl/settings.po +++ b/l10n/sl/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/user_ldap.po b/l10n/sl/user_ldap.po index 1f345364e88..3cc2f2c295d 100644 --- a/l10n/sl/user_ldap.po +++ b/l10n/sl/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/core.po b/l10n/sq/core.po index 95403baf0d7..eeb70e4b895 100644 --- a/l10n/sq/core.po +++ b/l10n/sq/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files.po b/l10n/sq/files.po index 76ca91268fb..1f503abd8b3 100644 --- a/l10n/sq/files.po +++ b/l10n/sq/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files_external.po b/l10n/sq/files_external.po index 45a09733bc9..86ba07934fa 100644 --- a/l10n/sq/files_external.po +++ b/l10n/sq/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files_sharing.po b/l10n/sq/files_sharing.po index 34f73661f86..325b4109682 100644 --- a/l10n/sq/files_sharing.po +++ b/l10n/sq/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files_trashbin.po b/l10n/sq/files_trashbin.po index 2556f948cbc..93a3fb1784b 100644 --- a/l10n/sq/files_trashbin.po +++ b/l10n/sq/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/lib.po b/l10n/sq/lib.po index 8730f07cec3..d01a098b747 100644 --- a/l10n/sq/lib.po +++ b/l10n/sq/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/settings.po b/l10n/sq/settings.po index 795bf6379ff..d2143c51f9e 100644 --- a/l10n/sq/settings.po +++ b/l10n/sq/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/user_ldap.po b/l10n/sq/user_ldap.po index d215f6371a3..deafbb0f5e5 100644 --- a/l10n/sq/user_ldap.po +++ b/l10n/sq/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/core.po b/l10n/sr/core.po index 2bb63a99cc2..ad4f9d164bd 100644 --- a/l10n/sr/core.po +++ b/l10n/sr/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files.po b/l10n/sr/files.po index d21c00b9ba3..8bcce3e10cc 100644 --- a/l10n/sr/files.po +++ b/l10n/sr/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files_external.po b/l10n/sr/files_external.po index daa0a3ffb99..0163579eaa8 100644 --- a/l10n/sr/files_external.po +++ b/l10n/sr/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files_sharing.po b/l10n/sr/files_sharing.po index b42bbe03abe..f10148df0a7 100644 --- a/l10n/sr/files_sharing.po +++ b/l10n/sr/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files_trashbin.po b/l10n/sr/files_trashbin.po index add0b415fa5..6f9cf0f1b89 100644 --- a/l10n/sr/files_trashbin.po +++ b/l10n/sr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/lib.po b/l10n/sr/lib.po index 4e989fc80a9..ea86980d6c1 100644 --- a/l10n/sr/lib.po +++ b/l10n/sr/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/settings.po b/l10n/sr/settings.po index 8ce18c39b9d..aff9ef4961a 100644 --- a/l10n/sr/settings.po +++ b/l10n/sr/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/user_ldap.po b/l10n/sr/user_ldap.po index 1522f7d8f00..6e7300e19d1 100644 --- a/l10n/sr/user_ldap.po +++ b/l10n/sr/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/core.po b/l10n/sr@latin/core.po index 0eaee08d188..365a71db00e 100644 --- a/l10n/sr@latin/core.po +++ b/l10n/sr@latin/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/files.po b/l10n/sr@latin/files.po index 970ef961c93..80fcd9b9e09 100644 --- a/l10n/sr@latin/files.po +++ b/l10n/sr@latin/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/files_external.po b/l10n/sr@latin/files_external.po index 790b9879ea4..a145fb419dd 100644 --- a/l10n/sr@latin/files_external.po +++ b/l10n/sr@latin/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/files_sharing.po b/l10n/sr@latin/files_sharing.po index ab71d76c2a7..a8397732eaf 100644 --- a/l10n/sr@latin/files_sharing.po +++ b/l10n/sr@latin/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/files_trashbin.po b/l10n/sr@latin/files_trashbin.po index c436bf6f5b4..53f3bc29b6b 100644 --- a/l10n/sr@latin/files_trashbin.po +++ b/l10n/sr@latin/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/lib.po b/l10n/sr@latin/lib.po index 20cf9c706c3..577e7f7c46d 100644 --- a/l10n/sr@latin/lib.po +++ b/l10n/sr@latin/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/settings.po b/l10n/sr@latin/settings.po index 5ae3a2fce72..2d7615ca69b 100644 --- a/l10n/sr@latin/settings.po +++ b/l10n/sr@latin/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/core.po b/l10n/sv/core.po index 9db4120e1a1..7546cda4671 100644 --- a/l10n/sv/core.po +++ b/l10n/sv/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files.po b/l10n/sv/files.po index 6ca51eb51e8..1d07480f64c 100644 --- a/l10n/sv/files.po +++ b/l10n/sv/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files_external.po b/l10n/sv/files_external.po index 2801ad22bc4..fb4af547b21 100644 --- a/l10n/sv/files_external.po +++ b/l10n/sv/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files_sharing.po b/l10n/sv/files_sharing.po index 81a75dd6e91..670b1f9e246 100644 --- a/l10n/sv/files_sharing.po +++ b/l10n/sv/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files_trashbin.po b/l10n/sv/files_trashbin.po index 12e368d65ba..35a11a073ba 100644 --- a/l10n/sv/files_trashbin.po +++ b/l10n/sv/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/lib.po b/l10n/sv/lib.po index 35334f375ff..62cb4f1fa93 100644 --- a/l10n/sv/lib.po +++ b/l10n/sv/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/settings.po b/l10n/sv/settings.po index 3b7986d8dd5..c4e16d5f8c9 100644 --- a/l10n/sv/settings.po +++ b/l10n/sv/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/user_ldap.po b/l10n/sv/user_ldap.po index 13f07b07a1d..f3043a5824a 100644 --- a/l10n/sv/user_ldap.po +++ b/l10n/sv/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/core.po b/l10n/ta_LK/core.po index 579acd34e40..23e839b1183 100644 --- a/l10n/ta_LK/core.po +++ b/l10n/ta_LK/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files.po b/l10n/ta_LK/files.po index 131bd3c9456..222fcda4583 100644 --- a/l10n/ta_LK/files.po +++ b/l10n/ta_LK/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files_external.po b/l10n/ta_LK/files_external.po index 07f69bbecb4..42a3ab0220e 100644 --- a/l10n/ta_LK/files_external.po +++ b/l10n/ta_LK/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files_sharing.po b/l10n/ta_LK/files_sharing.po index 8e81ade154c..c9671813efd 100644 --- a/l10n/ta_LK/files_sharing.po +++ b/l10n/ta_LK/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files_trashbin.po b/l10n/ta_LK/files_trashbin.po index 5d3c99577b3..e11b923ec7d 100644 --- a/l10n/ta_LK/files_trashbin.po +++ b/l10n/ta_LK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/lib.po b/l10n/ta_LK/lib.po index e2806a3afdf..25b80bcab1d 100644 --- a/l10n/ta_LK/lib.po +++ b/l10n/ta_LK/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/settings.po b/l10n/ta_LK/settings.po index cfef54c73b7..2a3a67d6abe 100644 --- a/l10n/ta_LK/settings.po +++ b/l10n/ta_LK/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/user_ldap.po b/l10n/ta_LK/user_ldap.po index f7a6cd8b78a..08a0a1ae5f2 100644 --- a/l10n/ta_LK/user_ldap.po +++ b/l10n/ta_LK/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/core.po b/l10n/te/core.po index 64a4970d769..f45ba51afbf 100644 --- a/l10n/te/core.po +++ b/l10n/te/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/files.po b/l10n/te/files.po index 1df2ca8560e..30c2cb08b4e 100644 --- a/l10n/te/files.po +++ b/l10n/te/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/files_external.po b/l10n/te/files_external.po index 56aaedb6573..227472606f6 100644 --- a/l10n/te/files_external.po +++ b/l10n/te/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/files_trashbin.po b/l10n/te/files_trashbin.po index 1e81cdb777b..ce425db1ccf 100644 --- a/l10n/te/files_trashbin.po +++ b/l10n/te/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/lib.po b/l10n/te/lib.po index f9c63628e5b..412d91f87b3 100644 --- a/l10n/te/lib.po +++ b/l10n/te/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/settings.po b/l10n/te/settings.po index 049bbcf8928..4413237a0f3 100644 --- a/l10n/te/settings.po +++ b/l10n/te/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/te/user_ldap.po b/l10n/te/user_ldap.po index a7103446d65..8c7d75f8167 100644 --- a/l10n/te/user_ldap.po +++ b/l10n/te/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Telugu (http://www.transifex.com/projects/p/owncloud/language/te/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/templates/core.pot b/l10n/templates/core.pot index 1504a6467ab..bf86dac64cd 100644 --- a/l10n/templates/core.pot +++ b/l10n/templates/core.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files.pot b/l10n/templates/files.pot index 2b70448c552..f14f02181ac 100644 --- a/l10n/templates/files.pot +++ b/l10n/templates/files.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_encryption.pot b/l10n/templates/files_encryption.pot index 12d6c39b7b7..53ab4f96b10 100644 --- a/l10n/templates/files_encryption.pot +++ b/l10n/templates/files_encryption.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_external.pot b/l10n/templates/files_external.pot index 792d5b17f63..8d0e23b72b6 100644 --- a/l10n/templates/files_external.pot +++ b/l10n/templates/files_external.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_sharing.pot b/l10n/templates/files_sharing.pot index af8c2dcdb57..66b0079954a 100644 --- a/l10n/templates/files_sharing.pot +++ b/l10n/templates/files_sharing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_trashbin.pot b/l10n/templates/files_trashbin.pot index ab55823307d..a26cf6115a3 100644 --- a/l10n/templates/files_trashbin.pot +++ b/l10n/templates/files_trashbin.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/files_versions.pot b/l10n/templates/files_versions.pot index 1297a9683df..a603433e46b 100644 --- a/l10n/templates/files_versions.pot +++ b/l10n/templates/files_versions.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/lib.pot b/l10n/templates/lib.pot index c9d0b980510..65e93c824ca 100644 --- a/l10n/templates/lib.pot +++ b/l10n/templates/lib.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/settings.pot b/l10n/templates/settings.pot index 19c802e8c39..52022d72a6b 100644 --- a/l10n/templates/settings.pot +++ b/l10n/templates/settings.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/user_ldap.pot b/l10n/templates/user_ldap.pot index 3be6bcc9285..0a75791c4df 100644 --- a/l10n/templates/user_ldap.pot +++ b/l10n/templates/user_ldap.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/templates/user_webdavauth.pot b/l10n/templates/user_webdavauth.pot index fffcf960140..1d7174783fa 100644 --- a/l10n/templates/user_webdavauth.pot +++ b/l10n/templates/user_webdavauth.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/l10n/th_TH/core.po b/l10n/th_TH/core.po index 7f8f94f5e2b..8d2e8025d67 100644 --- a/l10n/th_TH/core.po +++ b/l10n/th_TH/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/files.po b/l10n/th_TH/files.po index 994ed1a04fc..56ba32b585d 100644 --- a/l10n/th_TH/files.po +++ b/l10n/th_TH/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/files_external.po b/l10n/th_TH/files_external.po index 85619f8a934..cb002642599 100644 --- a/l10n/th_TH/files_external.po +++ b/l10n/th_TH/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/files_sharing.po b/l10n/th_TH/files_sharing.po index 4ae34acc27a..f87f8a413f1 100644 --- a/l10n/th_TH/files_sharing.po +++ b/l10n/th_TH/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/files_trashbin.po b/l10n/th_TH/files_trashbin.po index 6712022a105..28f352b3a6c 100644 --- a/l10n/th_TH/files_trashbin.po +++ b/l10n/th_TH/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/lib.po b/l10n/th_TH/lib.po index 49591aa68c3..f7c19fc4661 100644 --- a/l10n/th_TH/lib.po +++ b/l10n/th_TH/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/settings.po b/l10n/th_TH/settings.po index cef1e0560d9..6afb9e27e35 100644 --- a/l10n/th_TH/settings.po +++ b/l10n/th_TH/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/user_ldap.po b/l10n/th_TH/user_ldap.po index 0f6d695b38f..147e84575ba 100644 --- a/l10n/th_TH/user_ldap.po +++ b/l10n/th_TH/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/core.po b/l10n/tr/core.po index c287d0323a3..0811fd4f850 100644 --- a/l10n/tr/core.po +++ b/l10n/tr/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: ismail yenigül \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files.po b/l10n/tr/files.po index 4afc23c1a92..8145d588051 100644 --- a/l10n/tr/files.po +++ b/l10n/tr/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: ismail yenigül \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files_external.po b/l10n/tr/files_external.po index 4357038ece4..098a1bb0b4f 100644 --- a/l10n/tr/files_external.po +++ b/l10n/tr/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files_sharing.po b/l10n/tr/files_sharing.po index 8b2c35630e9..2464822696a 100644 --- a/l10n/tr/files_sharing.po +++ b/l10n/tr/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files_trashbin.po b/l10n/tr/files_trashbin.po index 9451991df42..ed154557aa6 100644 --- a/l10n/tr/files_trashbin.po +++ b/l10n/tr/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/lib.po b/l10n/tr/lib.po index 1669aad0005..3a77c6e9fb4 100644 --- a/l10n/tr/lib.po +++ b/l10n/tr/lib.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: ismail yenigül \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/settings.po b/l10n/tr/settings.po index 0305e4c817c..e1f3215675b 100644 --- a/l10n/tr/settings.po +++ b/l10n/tr/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/user_ldap.po b/l10n/tr/user_ldap.po index 5e2108b82d9..48050116fbe 100644 --- a/l10n/tr/user_ldap.po +++ b/l10n/tr/user_ldap.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: ismail yenigül \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/core.po b/l10n/ug/core.po index cc16fec0603..3cc08d79cf6 100644 --- a/l10n/ug/core.po +++ b/l10n/ug/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/files.po b/l10n/ug/files.po index 642ca25d3aa..50ec35af5ca 100644 --- a/l10n/ug/files.po +++ b/l10n/ug/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/files_external.po b/l10n/ug/files_external.po index 686fafbb9b9..a410ce4fbff 100644 --- a/l10n/ug/files_external.po +++ b/l10n/ug/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/files_sharing.po b/l10n/ug/files_sharing.po index 8af1c769bc8..29a984280ef 100644 --- a/l10n/ug/files_sharing.po +++ b/l10n/ug/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: uqkun \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/files_trashbin.po b/l10n/ug/files_trashbin.po index 78242cd0b81..b0f7da3d324 100644 --- a/l10n/ug/files_trashbin.po +++ b/l10n/ug/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/lib.po b/l10n/ug/lib.po index f126f1d9fee..9e77eab3f97 100644 --- a/l10n/ug/lib.po +++ b/l10n/ug/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: Abduqadir Abliz \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/settings.po b/l10n/ug/settings.po index cf56d0ff7cd..ab603660b93 100644 --- a/l10n/ug/settings.po +++ b/l10n/ug/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/user_ldap.po b/l10n/ug/user_ldap.po index bddcca68f50..79a85366551 100644 --- a/l10n/ug/user_ldap.po +++ b/l10n/ug/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Uighur \n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/core.po b/l10n/uk/core.po index 0fb74bcbf4e..5baf954ded8 100644 --- a/l10n/uk/core.po +++ b/l10n/uk/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files.po b/l10n/uk/files.po index a87cb8f88fb..b34815c7bb1 100644 --- a/l10n/uk/files.po +++ b/l10n/uk/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files_external.po b/l10n/uk/files_external.po index 2277b8e12ae..34a686d2688 100644 --- a/l10n/uk/files_external.po +++ b/l10n/uk/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files_sharing.po b/l10n/uk/files_sharing.po index 29934a31175..88cc9fb9052 100644 --- a/l10n/uk/files_sharing.po +++ b/l10n/uk/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files_trashbin.po b/l10n/uk/files_trashbin.po index 88bac954f90..01cb17f7d69 100644 --- a/l10n/uk/files_trashbin.po +++ b/l10n/uk/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/lib.po b/l10n/uk/lib.po index 62aad184a69..4c58682c9f8 100644 --- a/l10n/uk/lib.po +++ b/l10n/uk/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/settings.po b/l10n/uk/settings.po index 2cd2543e9c3..a24c18b52f7 100644 --- a/l10n/uk/settings.po +++ b/l10n/uk/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/user_ldap.po b/l10n/uk/user_ldap.po index f699538e7c8..a40cb4bc660 100644 --- a/l10n/uk/user_ldap.po +++ b/l10n/uk/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/core.po b/l10n/ur_PK/core.po index 9c650d81350..fefef2c2b98 100644 --- a/l10n/ur_PK/core.po +++ b/l10n/ur_PK/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/files.po b/l10n/ur_PK/files.po index df77bffed97..498e743ebb8 100644 --- a/l10n/ur_PK/files.po +++ b/l10n/ur_PK/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/files_trashbin.po b/l10n/ur_PK/files_trashbin.po index 9793d228b42..ff9411f35ca 100644 --- a/l10n/ur_PK/files_trashbin.po +++ b/l10n/ur_PK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/lib.po b/l10n/ur_PK/lib.po index 681c34c81d1..292b1527fd9 100644 --- a/l10n/ur_PK/lib.po +++ b/l10n/ur_PK/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-25 02:02+0200\n" -"PO-Revision-Date: 2013-05-25 00:02+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/settings.po b/l10n/ur_PK/settings.po index ea730144e49..970baf2bb30 100644 --- a/l10n/ur_PK/settings.po +++ b/l10n/ur_PK/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ur_PK/user_ldap.po b/l10n/ur_PK/user_ldap.po index c304dd8dc87..c3316ed5ada 100644 --- a/l10n/ur_PK/user_ldap.po +++ b/l10n/ur_PK/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Urdu (Pakistan) (http://www.transifex.com/projects/p/owncloud/language/ur_PK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/core.po b/l10n/vi/core.po index 0585bffc8bb..cb33e7cf619 100644 --- a/l10n/vi/core.po +++ b/l10n/vi/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: xtdv \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files.po b/l10n/vi/files.po index 5a3305fa9e6..a20da815182 100644 --- a/l10n/vi/files.po +++ b/l10n/vi/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files_external.po b/l10n/vi/files_external.po index 86ca37129ff..594c7380ff5 100644 --- a/l10n/vi/files_external.po +++ b/l10n/vi/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: xtdv \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files_sharing.po b/l10n/vi/files_sharing.po index d473201a24d..06ef29e8fdc 100644 --- a/l10n/vi/files_sharing.po +++ b/l10n/vi/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files_trashbin.po b/l10n/vi/files_trashbin.po index 892a0c895ad..d3c609e034f 100644 --- a/l10n/vi/files_trashbin.po +++ b/l10n/vi/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/lib.po b/l10n/vi/lib.po index 7631c4c5a7f..d685f6d377e 100644 --- a/l10n/vi/lib.po +++ b/l10n/vi/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/settings.po b/l10n/vi/settings.po index fd4b6554f2b..caf3709ae2c 100644 --- a/l10n/vi/settings.po +++ b/l10n/vi/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/user_ldap.po b/l10n/vi/user_ldap.po index 3665d05eb31..6215510f726 100644 --- a/l10n/vi/user_ldap.po +++ b/l10n/vi/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/core.po b/l10n/zh_CN.GB2312/core.po index 032394320f0..3e64e6278e4 100644 --- a/l10n/zh_CN.GB2312/core.po +++ b/l10n/zh_CN.GB2312/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:15+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/files.po b/l10n/zh_CN.GB2312/files.po index 75ab7bcf5fe..6dbc82c94ba 100644 --- a/l10n/zh_CN.GB2312/files.po +++ b/l10n/zh_CN.GB2312/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/files_external.po b/l10n/zh_CN.GB2312/files_external.po index cf178b323d8..9511a0f067e 100644 --- a/l10n/zh_CN.GB2312/files_external.po +++ b/l10n/zh_CN.GB2312/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/files_sharing.po b/l10n/zh_CN.GB2312/files_sharing.po index 2741ffe6f64..760ffbe7cf2 100644 --- a/l10n/zh_CN.GB2312/files_sharing.po +++ b/l10n/zh_CN.GB2312/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/files_trashbin.po b/l10n/zh_CN.GB2312/files_trashbin.po index e7f4be5c290..9cd91db93d1 100644 --- a/l10n/zh_CN.GB2312/files_trashbin.po +++ b/l10n/zh_CN.GB2312/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/lib.po b/l10n/zh_CN.GB2312/lib.po index f73a4764c1c..17e2523e125 100644 --- a/l10n/zh_CN.GB2312/lib.po +++ b/l10n/zh_CN.GB2312/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/settings.po b/l10n/zh_CN.GB2312/settings.po index 8c36765d816..098e2904444 100644 --- a/l10n/zh_CN.GB2312/settings.po +++ b/l10n/zh_CN.GB2312/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN.GB2312/user_ldap.po b/l10n/zh_CN.GB2312/user_ldap.po index 4666a10be09..6f2a06c7b7a 100644 --- a/l10n/zh_CN.GB2312/user_ldap.po +++ b/l10n/zh_CN.GB2312/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (GB2312) (http://www.transifex.com/projects/p/owncloud/language/zh_CN.GB2312/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/core.po b/l10n/zh_CN/core.po index 3189dfff2d8..c87992fe823 100644 --- a/l10n/zh_CN/core.po +++ b/l10n/zh_CN/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: zhangmin \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/files.po b/l10n/zh_CN/files.po index 26884dbc7dd..ea332b90cdb 100644 --- a/l10n/zh_CN/files.po +++ b/l10n/zh_CN/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: zhangmin \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/files_external.po b/l10n/zh_CN/files_external.po index 541bbd4804c..bf87e0da83f 100644 --- a/l10n/zh_CN/files_external.po +++ b/l10n/zh_CN/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/files_sharing.po b/l10n/zh_CN/files_sharing.po index 5df0586ad17..abf2f1fd079 100644 --- a/l10n/zh_CN/files_sharing.po +++ b/l10n/zh_CN/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/files_trashbin.po b/l10n/zh_CN/files_trashbin.po index c0fa3214cda..230860f3a04 100644 --- a/l10n/zh_CN/files_trashbin.po +++ b/l10n/zh_CN/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/lib.po b/l10n/zh_CN/lib.po index a1e0ef01d70..102ef28a951 100644 --- a/l10n/zh_CN/lib.po +++ b/l10n/zh_CN/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/settings.po b/l10n/zh_CN/settings.po index b3d91b9ead0..4a3f0f88c61 100644 --- a/l10n/zh_CN/settings.po +++ b/l10n/zh_CN/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/user_ldap.po b/l10n/zh_CN/user_ldap.po index 7234fb52647..144d472b2df 100644 --- a/l10n/zh_CN/user_ldap.po +++ b/l10n/zh_CN/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/core.po b/l10n/zh_HK/core.po index 6262b6ff4ba..6ceb5a50052 100644 --- a/l10n/zh_HK/core.po +++ b/l10n/zh_HK/core.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/files.po b/l10n/zh_HK/files.po index 93fc2dd175b..1cf848bc55e 100644 --- a/l10n/zh_HK/files.po +++ b/l10n/zh_HK/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/files_external.po b/l10n/zh_HK/files_external.po index 88ad0fde407..129a0e8d1ae 100644 --- a/l10n/zh_HK/files_external.po +++ b/l10n/zh_HK/files_external.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/files_sharing.po b/l10n/zh_HK/files_sharing.po index 21db673b648..3093ead7fd6 100644 --- a/l10n/zh_HK/files_sharing.po +++ b/l10n/zh_HK/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/files_trashbin.po b/l10n/zh_HK/files_trashbin.po index 615b0272f72..9b9e972db9f 100644 --- a/l10n/zh_HK/files_trashbin.po +++ b/l10n/zh_HK/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/lib.po b/l10n/zh_HK/lib.po index 4779e68e389..6583213ecd7 100644 --- a/l10n/zh_HK/lib.po +++ b/l10n/zh_HK/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/settings.po b/l10n/zh_HK/settings.po index 26854adf76f..58e2fa78b54 100644 --- a/l10n/zh_HK/settings.po +++ b/l10n/zh_HK/settings.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/user_ldap.po b/l10n/zh_HK/user_ldap.po index a32ccce9c9e..eee6fe3168c 100644 --- a/l10n/zh_HK/user_ldap.po +++ b/l10n/zh_HK/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/core.po b/l10n/zh_TW/core.po index 6562bbdf503..4fa92c5d858 100644 --- a/l10n/zh_TW/core.po +++ b/l10n/zh_TW/core.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:15+0000\n" "Last-Translator: pellaeon \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files.po b/l10n/zh_TW/files.po index 6cdee027a5a..53fb8812390 100644 --- a/l10n/zh_TW/files.po +++ b/l10n/zh_TW/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files_external.po b/l10n/zh_TW/files_external.po index ca5ec7c149f..4c97a31a96c 100644 --- a/l10n/zh_TW/files_external.po +++ b/l10n/zh_TW/files_external.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: pellaeon \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files_sharing.po b/l10n/zh_TW/files_sharing.po index d9bb607db12..0dcccd1d266 100644 --- a/l10n/zh_TW/files_sharing.po +++ b/l10n/zh_TW/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: pellaeon \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files_trashbin.po b/l10n/zh_TW/files_trashbin.po index e7d2a8192ea..a5366b39664 100644 --- a/l10n/zh_TW/files_trashbin.po +++ b/l10n/zh_TW/files_trashbin.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:00+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/lib.po b/l10n/zh_TW/lib.po index 83f825dcbca..0aa649dcf62 100644 --- a/l10n/zh_TW/lib.po +++ b/l10n/zh_TW/lib.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-27 00:02+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/settings.po b/l10n/zh_TW/settings.po index eb2070244fb..b8ac3e19071 100644 --- a/l10n/zh_TW/settings.po +++ b/l10n/zh_TW/settings.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:16+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/user_ldap.po b/l10n/zh_TW/user_ldap.po index d2e05a0dce9..fec5c9cbe2a 100644 --- a/l10n/zh_TW/user_ldap.po +++ b/l10n/zh_TW/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-05-26 01:58+0200\n" -"PO-Revision-Date: 2013-05-25 23:17+0000\n" +"POT-Creation-Date: 2013-05-27 02:01+0200\n" +"PO-Revision-Date: 2013-05-26 23:16+0000\n" "Last-Translator: I Robot \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/lib/l10n/ja_JP.php b/lib/l10n/ja_JP.php index 0e856b0497d..a2eb4bee67b 100644 --- a/lib/l10n/ja_JP.php +++ b/lib/l10n/ja_JP.php @@ -24,6 +24,7 @@ "%s set the database host." => "%s にデータベースホストを設定します。", "PostgreSQL username and/or password not valid" => "PostgreSQLのユーザ名もしくはパスワードは有効ではありません", "You need to enter either an existing account or the administrator." => "既存のアカウントもしくは管理者のどちらかを入力する必要があります。", +"Oracle connection could not be established" => "Oracleへの接続が確立できませんでした。", "MySQL username and/or password not valid" => "MySQLのユーザ名もしくはパスワードは有効ではありません", "DB Error: \"%s\"" => "DBエラー: \"%s\"", "Offending command was: \"%s\"" => "違反コマンド: \"%s\"", diff --git a/settings/l10n/ja_JP.php b/settings/l10n/ja_JP.php index defc96e81b6..ad42d3f085b 100644 --- a/settings/l10n/ja_JP.php +++ b/settings/l10n/ja_JP.php @@ -101,6 +101,7 @@ "Use this address to connect to your ownCloud in your file manager" => "ファイルマネージャでownCloudに接続する際はこのアドレスを利用してください", "Login Name" => "ログイン名", "Create" => "作成", +"Admin Recovery Password" => "管理者復旧パスワード", "Default Storage" => "デフォルトストレージ", "Unlimited" => "無制限", "Other" => "その他", diff --git a/settings/l10n/pt_BR.php b/settings/l10n/pt_BR.php index f1e45aab150..824940da583 100644 --- a/settings/l10n/pt_BR.php +++ b/settings/l10n/pt_BR.php @@ -101,6 +101,7 @@ "Use this address to connect to your ownCloud in your file manager" => "Usar este endereço para conectar-se ao seu ownCloud no seu gerenciador de arquivos", "Login Name" => "Nome de Login", "Create" => "Criar", +"Admin Recovery Password" => "Recuperação da Senha do Administrador", "Default Storage" => "Armazenamento Padrão", "Unlimited" => "Ilimitado", "Other" => "Outro", -- cgit v1.2.3 From 89f0c8f39d99b4c2bf0fb9dac1ad11cbe0781a3b Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 27 May 2013 12:41:55 +0200 Subject: added check by numRows() changed to public api where it was possible reformat code to comply with the coding guidelines --- apps/files_encryption/lib/util.php | 722 ++++++++++++++++++++----------------- 1 file changed, 387 insertions(+), 335 deletions(-) diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index 70fcd955be0..f25ead1f5c3 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -49,14 +49,13 @@ namespace OCA\Encryption; /** * @brief Class for utilities relating to encrypted file storage system - * @param OC_FilesystemView $view expected to have OC '/' as root path + * @param \OC_FilesystemView $view expected to have OC '/' as root path * @param string $userId ID of the logged in user * @param int $client indicating status of client side encryption. Currently * unused, likely to become obsolete shortly */ -class Util -{ +class Util { // Web UI: @@ -117,47 +116,52 @@ class Util * @param $userId * @param bool $client */ - public function __construct( \OC_FilesystemView $view, $userId, $client = false ) { + public function __construct(\OC_FilesystemView $view, $userId, $client = false) { $this->view = $view; $this->userId = $userId; $this->client = $client; $this->isPublic = false; - $this->publicShareKeyId = \OC_Appconfig::getValue( 'files_encryption', 'publicShareKeyId' ); - $this->recoveryKeyId = \OC_Appconfig::getValue( 'files_encryption', 'recoveryKeyId' ); + $this->publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); + $this->recoveryKeyId = \OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); // if we are anonymous/public - if ( $this->userId === false || - ( isset( $_GET['service'] ) && $_GET['service'] == 'files' && - isset( $_GET['t'] ) ) + if ($this->userId === false + || (isset($_GET['service']) && $_GET['service'] == 'files' && isset($_GET['t'])) ) { $this->userId = $this->publicShareKeyId; // only handle for files_sharing app - if ( $GLOBALS['app'] === 'files_sharing' ) { + if ($GLOBALS['app'] === 'files_sharing') { $this->userDir = '/' . $GLOBALS['fileOwner']; $this->fileFolderName = 'files'; - $this->userFilesDir = '/' . $GLOBALS['fileOwner'] . '/' . $this->fileFolderName; // TODO: Does this need to be user configurable? + $this->userFilesDir = '/' . $GLOBALS['fileOwner'] . '/' + . $this->fileFolderName; // TODO: Does this need to be user configurable? $this->publicKeyDir = '/' . 'public-keys'; $this->encryptionDir = '/' . $GLOBALS['fileOwner'] . '/' . 'files_encryption'; $this->keyfilesPath = $this->encryptionDir . '/' . 'keyfiles'; $this->shareKeysPath = $this->encryptionDir . '/' . 'share-keys'; - $this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key - $this->privateKeyPath = '/owncloud_private_key/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key + $this->publicKeyPath = + $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key + $this->privateKeyPath = + '/owncloud_private_key/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key $this->isPublic = true; } } else { $this->userDir = '/' . $this->userId; $this->fileFolderName = 'files'; - $this->userFilesDir = '/' . $this->userId . '/' . $this->fileFolderName; // TODO: Does this need to be user configurable? + $this->userFilesDir = + '/' . $this->userId . '/' . $this->fileFolderName; // TODO: Does this need to be user configurable? $this->publicKeyDir = '/' . 'public-keys'; $this->encryptionDir = '/' . $this->userId . '/' . 'files_encryption'; $this->keyfilesPath = $this->encryptionDir . '/' . 'keyfiles'; $this->shareKeysPath = $this->encryptionDir . '/' . 'share-keys'; - $this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key - $this->privateKeyPath = $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key + $this->publicKeyPath = + $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key + $this->privateKeyPath = + $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key } } @@ -167,11 +171,11 @@ class Util public function ready() { if ( - !$this->view->file_exists( $this->encryptionDir ) - or !$this->view->file_exists( $this->keyfilesPath ) - or !$this->view->file_exists( $this->shareKeysPath ) - or !$this->view->file_exists( $this->publicKeyPath ) - or !$this->view->file_exists( $this->privateKeyPath ) + !$this->view->file_exists($this->encryptionDir) + or !$this->view->file_exists($this->keyfilesPath) + or !$this->view->file_exists($this->shareKeysPath) + or !$this->view->file_exists($this->publicKeyPath) + or !$this->view->file_exists($this->privateKeyPath) ) { return false; @@ -188,24 +192,24 @@ class Util * @brief Sets up user folders and keys for serverside encryption * @param string $passphrase passphrase to encrypt server-stored private key with */ - public function setupServerSide( $passphrase = null ) { + public function setupServerSide($passphrase = null) { // Set directories to check / create $setUpDirs = array( - $this->userDir - , $this->userFilesDir - , $this->publicKeyDir - , $this->encryptionDir - , $this->keyfilesPath - , $this->shareKeysPath + $this->userDir, + $this->userFilesDir, + $this->publicKeyDir, + $this->encryptionDir, + $this->keyfilesPath, + $this->shareKeysPath ); // Check / create all necessary dirs - foreach ( $setUpDirs as $dirPath ) { + foreach ($setUpDirs as $dirPath) { - if ( !$this->view->file_exists( $dirPath ) ) { + if (!$this->view->file_exists($dirPath)) { - $this->view->mkdir( $dirPath ); + $this->view->mkdir($dirPath); } @@ -214,8 +218,8 @@ class Util // Create user keypair // we should never override a keyfile if ( - !$this->view->file_exists( $this->publicKeyPath ) - && !$this->view->file_exists( $this->privateKeyPath ) + !$this->view->file_exists($this->publicKeyPath) + && !$this->view->file_exists($this->privateKeyPath) ) { // Generate keypair @@ -224,35 +228,44 @@ class Util \OC_FileProxy::$enabled = false; // Save public key - $this->view->file_put_contents( $this->publicKeyPath, $keypair['publicKey'] ); + $this->view->file_put_contents($this->publicKeyPath, $keypair['publicKey']); // Encrypt private key with user pwd as passphrase - $encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $keypair['privateKey'], $passphrase ); + $encryptedPrivateKey = Crypt::symmetricEncryptFileContent($keypair['privateKey'], $passphrase); // Save private key - $this->view->file_put_contents( $this->privateKeyPath, $encryptedPrivateKey ); + $this->view->file_put_contents($this->privateKeyPath, $encryptedPrivateKey); \OC_FileProxy::$enabled = true; } else { // check if public-key exists but private-key is missing - if ( $this->view->file_exists( $this->publicKeyPath ) && !$this->view->file_exists( $this->privateKeyPath ) ) { - \OC_Log::write( 'Encryption library', 'public key exists but private key is missing for "' . $this->userId . '"', \OC_Log::FATAL ); - return false; - } else if ( !$this->view->file_exists( $this->publicKeyPath ) && $this->view->file_exists( $this->privateKeyPath ) ) { - \OC_Log::write( 'Encryption library', 'private key exists but public key is missing for "' . $this->userId . '"', \OC_Log::FATAL ); + if ($this->view->file_exists($this->publicKeyPath) && !$this->view->file_exists($this->privateKeyPath)) { + \OCP\Util::writeLog('Encryption library', + 'public key exists but private key is missing for "' . $this->userId . '"', \OCP\Util::FATAL); return false; + } else { + if (!$this->view->file_exists($this->publicKeyPath) && $this->view->file_exists($this->privateKeyPath) + ) { + \OCP\Util::writeLog('Encryption library', + 'private key exists but public key is missing for "' . $this->userId . '"', \OCP\Util::FATAL); + return false; + } } } // If there's no record for this user's encryption preferences - if ( false === $this->recoveryEnabledForUser() ) { + if (false === $this->recoveryEnabledForUser()) { // create database configuration $sql = 'INSERT INTO `*PREFIX*encryption` (`uid`,`mode`,`recovery_enabled`) VALUES (?,?,?)'; - $args = array( $this->userId, 'server-side', 0 ); - $query = \OCP\DB::prepare( $sql ); - $query->execute( $args ); + $args = array( + $this->userId, + 'server-side', + 0 + ); + $query = \OCP\DB::prepare($sql); + $query->execute($args); } @@ -276,32 +289,29 @@ class Util */ public function recoveryEnabledForUser() { - $sql = 'SELECT - recovery_enabled - FROM - `*PREFIX*encryption` - WHERE - uid = ?'; + $sql = 'SELECT `recovery_enabled` FROM `*PREFIX*encryption` WHERE uid = ?'; - $args = array( $this->userId ); + $args = array($this->userId); - $query = \OCP\DB::prepare( $sql ); + $query = \OCP\DB::prepare($sql); - $result = $query->execute( $args ); + $result = $query->execute($args); $recoveryEnabled = array(); - if (\OC_DB::isError($result)) { - \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + if (\OCP\DB::isError($result)) { + \OCP\Util::writeLog('Encryption library', \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); } else { - $row = $result->fetchRow(); - if( isset( $row['recovery_enabled'] ) ) { - $recoveryEnabled[] = $row['recovery_enabled']; + if($result->numRows() > 0) { + $row = $result->fetchRow(); + if (isset($row['recovery_enabled'])) { + $recoveryEnabled[] = $row['recovery_enabled']; + } } } // If no record is found - if ( empty( $recoveryEnabled ) ) { + if (empty($recoveryEnabled)) { return false; @@ -319,36 +329,36 @@ class Util * @param bool $enabled Whether to enable or disable recovery * @return bool */ - public function setRecoveryForUser( $enabled ) { + public function setRecoveryForUser($enabled) { $recoveryStatus = $this->recoveryEnabledForUser(); // If a record for this user already exists, update it - if ( false === $recoveryStatus ) { + if (false === $recoveryStatus) { - $sql = 'INSERT INTO `*PREFIX*encryption` - (`uid`,`mode`,`recovery_enabled`) - VALUES (?,?,?)'; + $sql = 'INSERT INTO `*PREFIX*encryption` (`uid`,`mode`,`recovery_enabled`) VALUES (?,?,?)'; - $args = array( $this->userId, 'server-side', $enabled ); + $args = array( + $this->userId, + 'server-side', + $enabled + ); // Create a new record instead } else { - $sql = 'UPDATE - *PREFIX*encryption - SET - recovery_enabled = ? - WHERE - uid = ?'; + $sql = 'UPDATE `*PREFIX*encryption` SET recovery_enabled = ? WHERE uid = ?'; - $args = array( $enabled, $this->userId ); + $args = array( + $enabled, + $this->userId + ); } - $query = \OCP\DB::prepare( $sql ); + $query = \OCP\DB::prepare($sql); - if ( $query->execute( $args ) ) { + if ($query->execute($args)) { return true; @@ -363,50 +373,55 @@ class Util /** * @brief Find all files and their encryption status within a directory * @param string $directory The path of the parent directory to search + * @param bool $found the founded files if called again * @return mixed false if 0 found, array on success. Keys: name, path * @note $directory needs to be a path relative to OC data dir. e.g. * /admin/files NOT /backup OR /home/www/oc/data/admin/files */ - public function findEncFiles( $directory, &$found = false ) { + public function findEncFiles($directory, &$found = false) { // Disable proxy - we don't want files to be decrypted before // we handle them \OC_FileProxy::$enabled = false; - if ( $found == false ) { - $found = array( 'plain' => array(), 'encrypted' => array(), 'legacy' => array() ); + if ($found == false) { + $found = array( + 'plain' => array(), + 'encrypted' => array(), + 'legacy' => array() + ); } if ( - $this->view->is_dir( $directory ) - && $handle = $this->view->opendir( $directory ) + $this->view->is_dir($directory) + && $handle = $this->view->opendir($directory) ) { - while ( false !== ( $file = readdir( $handle ) ) ) { + while (false !== ($file = readdir($handle))) { if ( $file != "." && $file != ".." ) { - $filePath = $directory . '/' . $this->view->getRelativePath( '/' . $file ); - $relPath = $this->stripUserFilesPath( $filePath ); + $filePath = $directory . '/' . $this->view->getRelativePath('/' . $file); + $relPath = $this->stripUserFilesPath($filePath); // If the path is a directory, search // its contents - if ( $this->view->is_dir( $filePath ) ) { + if ($this->view->is_dir($filePath)) { - $this->findEncFiles( $filePath, $found ); + $this->findEncFiles($filePath, $found); // If the path is a file, determine // its encryption status - } elseif ( $this->view->is_file( $filePath ) ) { + } elseif ($this->view->is_file($filePath)) { // Disable proxies again, some- // where they got re-enabled :/ \OC_FileProxy::$enabled = false; - $data = $this->view->file_get_contents( $filePath ); + $data = $this->view->file_get_contents($filePath); // If the file is encrypted // NOTE: If the userId is @@ -416,22 +431,31 @@ class Util // scanning every file like this // will eat server resources :( if ( - Keymanager::getFileKey( $this->view, $this->userId, $relPath ) - && Crypt::isCatfileContent( $data ) + Keymanager::getFileKey($this->view, $this->userId, $relPath) + && Crypt::isCatfileContent($data) ) { - $found['encrypted'][] = array( 'name' => $file, 'path' => $filePath ); + $found['encrypted'][] = array( + 'name' => $file, + 'path' => $filePath + ); // If the file uses old // encryption system - } elseif ( Crypt::isLegacyEncryptedContent( $this->tail( $filePath, 3 ), $relPath ) ) { + } elseif (Crypt::isLegacyEncryptedContent($this->tail($filePath, 3), $relPath)) { - $found['legacy'][] = array( 'name' => $file, 'path' => $filePath ); + $found['legacy'][] = array( + 'name' => $file, + 'path' => $filePath + ); // If the file is not encrypted } else { - $found['plain'][] = array( 'name' => $file, 'path' => $relPath ); + $found['plain'][] = array( + 'name' => $file, + 'path' => $relPath + ); } @@ -443,7 +467,7 @@ class Util \OC_FileProxy::$enabled = true; - if ( empty( $found ) ) { + if (empty($found)) { return false; @@ -466,38 +490,38 @@ class Util * @note Safe to use on large files; does not read entire file to memory * @note Derivative of http://tekkie.flashbit.net/php/tail-functionality-in-php */ - public function tail( $filename, $numLines ) { + public function tail($filename, $numLines) { \OC_FileProxy::$enabled = false; $text = ''; $pos = -1; - $handle = $this->view->fopen( $filename, 'r' ); + $handle = $this->view->fopen($filename, 'r'); - while ( $numLines > 0 ) { + while ($numLines > 0) { --$pos; - if ( fseek( $handle, $pos, SEEK_END ) !== 0 ) { + if (fseek($handle, $pos, SEEK_END) !== 0) { - rewind( $handle ); + rewind($handle); $numLines = 0; - } elseif ( fgetc( $handle ) === "\n" ) { + } elseif (fgetc($handle) === "\n") { --$numLines; } - $block_size = ( -$pos ) % 8192; - if ( $block_size === 0 || $numLines === 0 ) { + $block_size = (-$pos) % 8192; + if ($block_size === 0 || $numLines === 0) { - $text = fread( $handle, ( $block_size === 0 ? 8192 : $block_size ) ) . $text; + $text = fread($handle, ($block_size === 0 ? 8192 : $block_size)) . $text; } } - fclose( $handle ); + fclose($handle); \OC_FileProxy::$enabled = true; @@ -509,7 +533,7 @@ class Util * @param $path * @return boolean */ - public function isEncryptedPath( $path ) { + public function isEncryptedPath($path) { // Disable encryption proxy so data retrieved is in its // original form @@ -518,15 +542,15 @@ class Util // we only need 24 byte from the last chunk $data = ''; - $handle = $this->view->fopen( $path, 'r' ); - if ( !fseek( $handle, -24, SEEK_END ) ) { - $data = fgets( $handle ); + $handle = $this->view->fopen($path, 'r'); + if (!fseek($handle, -24, SEEK_END)) { + $data = fgets($handle); } // re-enable proxy \OC_FileProxy::$enabled = $proxyStatus; - return Crypt::isCatfileContent( $data ); + return Crypt::isCatfileContent($data); } @@ -535,7 +559,7 @@ class Util * @param string $path absolute path * @return bool */ - public function getFileSize( $path ) { + public function getFileSize($path) { $result = 0; @@ -544,33 +568,33 @@ class Util \OC_FileProxy::$enabled = false; // Reformat path for use with OC_FSV - $pathSplit = explode( '/', $path ); - $pathRelative = implode( '/', array_slice( $pathSplit, 3 ) ); + $pathSplit = explode('/', $path); + $pathRelative = implode('/', array_slice($pathSplit, 3)); - if ( $pathSplit[2] == 'files' && $this->view->file_exists( $path ) && $this->isEncryptedPath( $path ) ) { + if ($pathSplit[2] == 'files' && $this->view->file_exists($path) && $this->isEncryptedPath($path)) { // get the size from filesystem - $fullPath = $this->view->getLocalFile( $path ); - $size = filesize( $fullPath ); + $fullPath = $this->view->getLocalFile($path); + $size = filesize($fullPath); // calculate last chunk nr - $lastChunkNr = floor( $size / 8192 ); + $lastChunkNr = floor($size / 8192); // open stream - $stream = fopen( 'crypt://' . $pathRelative, "r" ); + $stream = fopen('crypt://' . $pathRelative, "r"); - if ( is_resource( $stream ) ) { + if (is_resource($stream)) { // calculate last chunk position - $lastChunckPos = ( $lastChunkNr * 8192 ); + $lastChunckPos = ($lastChunkNr * 8192); // seek to end - fseek( $stream, $lastChunckPos ); + fseek($stream, $lastChunckPos); // get the content of the last chunk - $lastChunkContent = fread( $stream, 8192 ); + $lastChunkContent = fread($stream, 8192); // calc the real file size with the size of the last chunk - $realSize = ( ( $lastChunkNr * 6126 ) + strlen( $lastChunkContent ) ); + $realSize = (($lastChunkNr * 6126) + strlen($lastChunkContent)); // store file size $result = $realSize; @@ -584,10 +608,10 @@ class Util /** * @brief fix the file size of the encrypted file - * @param $path absolute path - * @return true / false if file is encrypted + * @param string $path absolute path + * @return boolean true / false if file is encrypted */ - public function fixFileSize( $path ) { + public function fixFileSize($path) { $result = false; @@ -595,18 +619,18 @@ class Util $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $realSize = $this->getFileSize( $path ); + $realSize = $this->getFileSize($path); - if ( $realSize > 0 ) { + if ($realSize > 0) { - $cached = $this->view->getFileInfo( $path ); + $cached = $this->view->getFileInfo($path); $cached['encrypted'] = true; // set the size $cached['unencrypted_size'] = $realSize; // put file info - $this->view->putFileInfo( $path, $cached ); + $this->view->putFileInfo($path, $cached); $result = true; @@ -621,12 +645,12 @@ class Util * @brief Format a path to be relative to the /user/files/ directory * @note e.g. turns '/admin/files/test.txt' into 'test.txt' */ - public function stripUserFilesPath( $path ) { + public function stripUserFilesPath($path) { - $trimmed = ltrim( $path, '/' ); - $split = explode( '/', $trimmed ); - $sliced = array_slice( $split, 2 ); - $relPath = implode( '/', $sliced ); + $trimmed = ltrim($path, '/'); + $split = explode('/', $trimmed); + $sliced = array_slice($split, 2); + $relPath = implode('/', $sliced); return $relPath; @@ -636,12 +660,12 @@ class Util * @param $path * @return bool */ - public function isSharedPath( $path ) { + public function isSharedPath($path) { - $trimmed = ltrim( $path, '/' ); - $split = explode( '/', $trimmed ); + $trimmed = ltrim($path, '/'); + $split = explode('/', $trimmed); - if ( $split[2] == "Shared" ) { + if ($split[2] == "Shared") { return true; @@ -661,15 +685,15 @@ class Util * @return bool * @note Encryption is recursive */ - public function encryptAll( $dirPath, $legacyPassphrase = null, $newPassphrase = null ) { + public function encryptAll($dirPath, $legacyPassphrase = null, $newPassphrase = null) { - if ( $found = $this->findEncFiles( $dirPath ) ) { + if ($found = $this->findEncFiles($dirPath)) { // Disable proxy to prevent file being encrypted twice \OC_FileProxy::$enabled = false; // Encrypt unencrypted files - foreach ( $found['plain'] as $plainFile ) { + foreach ($found['plain'] as $plainFile) { //relative to data//file $relPath = $plainFile['path']; @@ -678,80 +702,87 @@ class Util $rawPath = $this->userId . '/files/' . $plainFile['path']; // Open plain file handle for binary reading - $plainHandle1 = $this->view->fopen( $rawPath, 'rb' ); + $plainHandle1 = $this->view->fopen($rawPath, 'rb'); // 2nd handle for moving plain file - view->rename() doesn't work, this is a workaround - $plainHandle2 = $this->view->fopen( $rawPath . '.plaintmp', 'wb' ); + $plainHandle2 = $this->view->fopen($rawPath . '.plaintmp', 'wb'); // Move plain file to a temporary location - stream_copy_to_stream( $plainHandle1, $plainHandle2 ); + stream_copy_to_stream($plainHandle1, $plainHandle2); // Close access to original file // $this->view->fclose( $plainHandle1 ); // not implemented in view{} // Delete original plain file so we can rename enc file later - $this->view->unlink( $rawPath ); + $this->view->unlink($rawPath); // Open enc file handle for binary writing, with same filename as original plain file - $encHandle = fopen( 'crypt://' . $relPath, 'wb' ); + $encHandle = fopen('crypt://' . $relPath, 'wb'); // Save data from plain stream to new encrypted file via enc stream // NOTE: Stream{} will be invoked for handling // the encryption, and should handle all keys // and their generation etc. automatically - stream_copy_to_stream( $plainHandle2, $encHandle ); + stream_copy_to_stream($plainHandle2, $encHandle); // get file size - $size = $this->view->filesize( $rawPath . '.plaintmp' ); + $size = $this->view->filesize($rawPath . '.plaintmp'); // Delete temporary plain copy of file - $this->view->unlink( $rawPath . '.plaintmp' ); + $this->view->unlink($rawPath . '.plaintmp'); // Add the file to the cache - \OC\Files\Filesystem::putFileInfo( $plainFile['path'], array( 'encrypted' => true, 'size' => $size, 'unencrypted_size' => $size ) ); + \OC\Files\Filesystem::putFileInfo($plainFile['path'], array( + 'encrypted' => true, + 'size' => $size, + 'unencrypted_size' => $size + )); } // Encrypt legacy encrypted files if ( - !empty( $legacyPassphrase ) - && !empty( $newPassphrase ) + !empty($legacyPassphrase) + && !empty($newPassphrase) ) { - foreach ( $found['legacy'] as $legacyFile ) { + foreach ($found['legacy'] as $legacyFile) { // Fetch data from file - $legacyData = $this->view->file_get_contents( $legacyFile['path'] ); + $legacyData = $this->view->file_get_contents($legacyFile['path']); $sharingEnabled = \OCP\Share::isEnabled(); // if file exists try to get sharing users - if ( $this->view->file_exists( $legacyFile['path'] ) ) { - $uniqueUserIds = $this->getSharingUsersArray( $sharingEnabled, $legacyFile['path'], $this->userId ); + if ($this->view->file_exists($legacyFile['path'])) { + $uniqueUserIds = $this->getSharingUsersArray($sharingEnabled, $legacyFile['path'], $this->userId); } else { $uniqueUserIds[] = $this->userId; } // Fetch public keys for all users who will share the file - $publicKeys = Keymanager::getPublicKeys( $this->view, $uniqueUserIds ); + $publicKeys = Keymanager::getPublicKeys($this->view, $uniqueUserIds); // Recrypt data, generate catfile - $recrypted = Crypt::legacyKeyRecryptKeyfile( $legacyData, $legacyPassphrase, $publicKeys, $newPassphrase, $legacyFile['path'] ); + $recrypted = Crypt::legacyKeyRecryptKeyfile($legacyData, $legacyPassphrase, $publicKeys, $newPassphrase, $legacyFile['path']); $rawPath = $legacyFile['path']; - $relPath = $this->stripUserFilesPath( $rawPath ); + $relPath = $this->stripUserFilesPath($rawPath); // Save keyfile - Keymanager::setFileKey( $this->view, $relPath, $this->userId, $recrypted['filekey'] ); + Keymanager::setFileKey($this->view, $relPath, $this->userId, $recrypted['filekey']); // Save sharekeys to user folders - Keymanager::setShareKeys( $this->view, $relPath, $recrypted['sharekeys'] ); + Keymanager::setShareKeys($this->view, $relPath, $recrypted['sharekeys']); // Overwrite the existing file with the encrypted one - $this->view->file_put_contents( $rawPath, $recrypted['data'] ); + $this->view->file_put_contents($rawPath, $recrypted['data']); - $size = strlen( $recrypted['data'] ); + $size = strlen($recrypted['data']); // Add the file to the cache - \OC\Files\Filesystem::putFileInfo( $rawPath, array( 'encrypted' => true, 'size' => $size ), '' ); + \OC\Files\Filesystem::putFileInfo($rawPath, array( + 'encrypted' => true, + 'size' => $size + ), ''); } } @@ -771,9 +802,9 @@ class Util * @param string $pathName Name of the directory to return the path of * @return string path */ - public function getPath( $pathName ) { + public function getPath($pathName) { - switch ( $pathName ) { + switch ($pathName) { case 'publicKeyDir': @@ -815,20 +846,22 @@ class Util * @param int $fileId id of the file * @return string path of the file */ - public static function fileIdToPath( $fileId ) { + public static function fileIdToPath($fileId) { - $query = \OC_DB::prepare( 'SELECT `path`' - . ' FROM `*PREFIX*filecache`' - . ' WHERE `fileid` = ?' ); + $sql = 'SELECT `path` FROM `*PREFIX*filecache` WHERE `fileid` = ?'; - $result = $query->execute( array( $fileId ) ); + $query = \OCP\DB::prepare($sql); + + $result = $query->execute(array($fileId)); $path = false; - if (\OC_DB::isError($result)) { - \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + if (\OCP\DB::isError($result)) { + \OCP\Util::writeLog('Encryption library', \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); } else { - $row = $result->fetchRow(); - $path = substr( $row['path'], strlen('files') ); + if($result->numRows() > 0) { + $row = $result->fetchRow(); + $path = substr($row['path'], strlen('files')); + } } return $path; @@ -838,17 +871,17 @@ class Util /** * @brief Filter an array of UIDs to return only ones ready for sharing * @param array $unfilteredUsers users to be checked for sharing readiness - * @return multi-dimensional array. keys: ready, unready + * @return array as multi-dimensional array. keys: ready, unready */ - public function filterShareReadyUsers( $unfilteredUsers ) { + public function filterShareReadyUsers($unfilteredUsers) { // This array will collect the filtered IDs $readyIds = $unreadyIds = array(); // Loop through users and create array of UIDs that need new keyfiles - foreach ( $unfilteredUsers as $user ) { + foreach ($unfilteredUsers as $user) { - $util = new Util( $this->view, $user ); + $util = new Util($this->view, $user); // Check that the user is encryption capable, or is the // public system user 'ownCloud' (for public shares) @@ -868,7 +901,8 @@ class Util // Log warning; we can't do necessary setup here // because we don't have the user passphrase - \OC_Log::write( 'Encryption library', '"' . $user . '" is not setup for encryption', \OC_Log::WARN ); + \OCP\Util::writeLog('Encryption library', + '"' . $user . '" is not setup for encryption', \OCP\Util::WARN); } @@ -891,31 +925,31 @@ class Util * @note This was used when 2 types of encryption for keyfiles was used, * but now we've switched to exclusively using openssl_seal() */ - public function decryptUnknownKeyfile( $filePath, $fileOwner, $privateKey ) { + public function decryptUnknownKeyfile($filePath, $fileOwner, $privateKey) { // Get the encrypted keyfile // NOTE: the keyfile format depends on how it was encrypted! At // this stage we don't know how it was encrypted - $encKeyfile = Keymanager::getFileKey( $this->view, $this->userId, $filePath ); + $encKeyfile = Keymanager::getFileKey($this->view, $this->userId, $filePath); // We need to decrypt the keyfile // Has the file been shared yet? if ( $this->userId == $fileOwner - && !Keymanager::getShareKey( $this->view, $this->userId, $filePath ) // NOTE: we can't use isShared() here because it's a post share hook so it always returns true + && !Keymanager::getShareKey($this->view, $this->userId, $filePath) // NOTE: we can't use isShared() here because it's a post share hook so it always returns true ) { // The file has no shareKey, and its keyfile must be // decrypted conventionally - $plainKeyfile = Crypt::keyDecrypt( $encKeyfile, $privateKey ); + $plainKeyfile = Crypt::keyDecrypt($encKeyfile, $privateKey); } else { // The file has a shareKey and must use it for decryption - $shareKey = Keymanager::getShareKey( $this->view, $this->userId, $filePath ); + $shareKey = Keymanager::getShareKey($this->view, $this->userId, $filePath); - $plainKeyfile = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); + $plainKeyfile = Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); } @@ -930,22 +964,24 @@ class Util * @param string $filePath path of the file to be shared * @return bool */ - public function setSharedFileKeyfiles( Session $session, array $users, $filePath ) { + public function setSharedFileKeyfiles(Session $session, array $users, $filePath) { // Make sure users are capable of sharing - $filteredUids = $this->filterShareReadyUsers( $users ); + $filteredUids = $this->filterShareReadyUsers($users); // If we're attempting to share to unready users - if ( !empty( $filteredUids['unready'] ) ) { + if (!empty($filteredUids['unready'])) { - \OC_Log::write( 'Encryption library', 'Sharing to these user(s) failed as they are unready for encryption:"' . print_r( $filteredUids['unready'], 1 ), \OC_Log::WARN ); + \OCP\Util::writeLog('Encryption library', + 'Sharing to these user(s) failed as they are unready for encryption:"' + . print_r($filteredUids['unready'], 1), \OCP\Util::WARN); return false; } // Get public keys for each user, ready for generating sharekeys - $userPubKeys = Keymanager::getPublicKeys( $this->view, $filteredUids['ready'] ); + $userPubKeys = Keymanager::getPublicKeys($this->view, $filteredUids['ready']); // Note proxy status then disable it $proxyStatus = \OC_FileProxy::$enabled; @@ -954,22 +990,23 @@ class Util // Get the current users's private key for decrypting existing keyfile $privateKey = $session->getPrivateKey(); - $fileOwner = \OC\Files\Filesystem::getOwner( $filePath ); + $fileOwner = \OC\Files\Filesystem::getOwner($filePath); // Decrypt keyfile - $plainKeyfile = $this->decryptUnknownKeyfile( $filePath, $fileOwner, $privateKey ); + $plainKeyfile = $this->decryptUnknownKeyfile($filePath, $fileOwner, $privateKey); // Re-enc keyfile to (additional) sharekeys - $multiEncKey = Crypt::multiKeyEncrypt( $plainKeyfile, $userPubKeys ); + $multiEncKey = Crypt::multiKeyEncrypt($plainKeyfile, $userPubKeys); // Save the recrypted key to it's owner's keyfiles directory // Save new sharekeys to all necessary user directory if ( - !Keymanager::setFileKey( $this->view, $filePath, $fileOwner, $multiEncKey['data'] ) - || !Keymanager::setShareKeys( $this->view, $filePath, $multiEncKey['keys'] ) + !Keymanager::setFileKey($this->view, $filePath, $fileOwner, $multiEncKey['data']) + || !Keymanager::setShareKeys($this->view, $filePath, $multiEncKey['keys']) ) { - \OC_Log::write( 'Encryption library', 'Keyfiles could not be saved for users sharing ' . $filePath, \OC_Log::ERROR ); + \OCP\Util::writeLog('Encryption library', + 'Keyfiles could not be saved for users sharing ' . $filePath, \OCP\Util::ERROR); return false; @@ -985,11 +1022,11 @@ class Util * @brief Find, sanitise and format users sharing a file * @note This wraps other methods into a portable bundle */ - public function getSharingUsersArray( $sharingEnabled, $filePath, $currentUserId = false ) { + public function getSharingUsersArray($sharingEnabled, $filePath, $currentUserId = false) { // Check if key recovery is enabled if ( - \OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' ) + \OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled') && $this->recoveryEnabledForUser() ) { @@ -1002,15 +1039,15 @@ class Util } // Make sure that a share key is generated for the owner too - list( $owner, $ownerPath ) = $this->getUidAndFilename( $filePath ); + list($owner, $ownerPath) = $this->getUidAndFilename($filePath); $userIds = array(); - if ( $sharingEnabled ) { + if ($sharingEnabled) { // Find out who, if anyone, is sharing the file - $result = \OCP\Share::getUsersSharingFile( $ownerPath, $owner, true, true, true ); + $result = \OCP\Share::getUsersSharingFile($ownerPath, $owner, true, true, true); $userIds = $result['users']; - if ( $result['public'] ) { + if ($result['public']) { $userIds[] = $this->publicShareKeyId; } @@ -1018,10 +1055,10 @@ class Util // If recovery is enabled, add the // Admin UID to list of users to share to - if ( $recoveryEnabled ) { + if ($recoveryEnabled) { // Find recoveryAdmin user ID - $recoveryKeyId = \OC_Appconfig::getValue( 'files_encryption', 'recoveryKeyId' ); + $recoveryKeyId = \OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); // Add recoveryAdmin to list of users sharing $userIds[] = $recoveryKeyId; @@ -1029,14 +1066,14 @@ class Util } // add current user if given - if ( $currentUserId != false ) { + if ($currentUserId != false) { $userIds[] = $currentUserId; } // Remove duplicate UIDs - $uniqueUserIds = array_unique( $userIds ); + $uniqueUserIds = array_unique($userIds); return $uniqueUserIds; @@ -1047,20 +1084,18 @@ class Util * @param $status * @return bool */ - public function setMigrationStatus( $status ) { + public function setMigrationStatus($status) { - $sql = 'UPDATE - *PREFIX*encryption - SET - migration_status = ? - WHERE - uid = ?'; + $sql = 'UPDATE `*PREFIX*encryption` SET migration_status = ? WHERE uid = ?'; - $args = array( $status, $this->userId ); + $args = array( + $status, + $this->userId + ); - $query = \OCP\DB::prepare( $sql ); + $query = \OCP\DB::prepare($sql); - if ( $query->execute( $args ) ) { + if ($query->execute($args)) { return true; @@ -1080,32 +1115,29 @@ class Util */ public function getMigrationStatus() { - $sql = 'SELECT - migration_status - FROM - `*PREFIX*encryption` - WHERE - uid = ?'; + $sql = 'SELECT `migration_status` FROM `*PREFIX*encryption` WHERE uid = ?'; - $args = array( $this->userId ); + $args = array($this->userId); - $query = \OCP\DB::prepare( $sql ); + $query = \OCP\DB::prepare($sql); - $result = $query->execute( $args ); + $result = $query->execute($args); $migrationStatus = array(); - if (\OC_DB::isError($result)) { - \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + if (\OCP\DB::isError($result)) { + \OCP\Util::writeLog('Encryption library', \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); } else { - $row = $result->fetchRow(); - if( isset( $row['migration_status'] ) ) { - $migrationStatus[] = $row['migration_status']; + if($result->numRows() > 0) { + $row = $result->fetchRow(); + if (isset($row['migration_status'])) { + $migrationStatus[] = $row['migration_status']; + } } } // If no record is found - if ( empty( $migrationStatus ) ) { + if (empty($migrationStatus)) { return false; @@ -1125,44 +1157,51 @@ class Util * relative to /Shared are also acceptable * @return array */ - public function getUidAndFilename( $path ) { + public function getUidAndFilename($path) { - $view = new \OC\Files\View( $this->userFilesDir ); - $fileOwnerUid = $view->getOwner( $path ); + $view = new \OC\Files\View($this->userFilesDir); + $fileOwnerUid = $view->getOwner($path); // handle public access - if ( $this->isPublic ) { + if ($this->isPublic) { $filename = $path; $fileOwnerUid = $GLOBALS['fileOwner']; - return array( $fileOwnerUid, $filename ); + return array( + $fileOwnerUid, + $filename + ); } else { // Check that UID is valid - if ( !\OCP\User::userExists( $fileOwnerUid ) ) { - throw new \Exception( 'Could not find owner (UID = "' . var_export( $fileOwnerUid, 1 ) . '") of file "' . $path . '"' ); + if (!\OCP\User::userExists($fileOwnerUid)) { + throw new \Exception( + 'Could not find owner (UID = "' . var_export($fileOwnerUid, 1) . '") of file "' . $path . '"'); } // NOTE: Bah, this dependency should be elsewhere - \OC\Files\Filesystem::initMountPoints( $fileOwnerUid ); + \OC\Files\Filesystem::initMountPoints($fileOwnerUid); // If the file owner is the currently logged in user - if ( $fileOwnerUid == $this->userId ) { + if ($fileOwnerUid == $this->userId) { // Assume the path supplied is correct $filename = $path; } else { - $info = $view->getFileInfo( $path ); - $ownerView = new \OC\Files\View( '/' . $fileOwnerUid . '/files' ); + $info = $view->getFileInfo($path); + $ownerView = new \OC\Files\View('/' . $fileOwnerUid . '/files'); // Fetch real file path from DB - $filename = $ownerView->getPath( $info['fileid'] ); // TODO: Check that this returns a path without including the user data dir + $filename = $ownerView->getPath($info['fileid']); // TODO: Check that this returns a path without including the user data dir } - return array( $fileOwnerUid, $filename ); + return array( + $fileOwnerUid, + $filename + ); } @@ -1173,26 +1212,26 @@ class Util * @param string $dir relative to the users files folder * @return array with list of files relative to the users files folder */ - public function getAllFiles( $dir ) { + public function getAllFiles($dir) { $result = array(); - $content = $this->view->getDirectoryContent( $this->userFilesDir . $dir ); + $content = $this->view->getDirectoryContent($this->userFilesDir . $dir); // handling for re shared folders - $path_split = explode( '/', $dir ); + $path_split = explode('/', $dir); - foreach ( $content as $c ) { + foreach ($content as $c) { - $sharedPart = $path_split[sizeof( $path_split ) - 1]; - $targetPathSplit = array_reverse( explode( '/', $c['path'] ) ); + $sharedPart = $path_split[sizeof($path_split) - 1]; + $targetPathSplit = array_reverse(explode('/', $c['path'])); $path = ''; // rebuild path - foreach ( $targetPathSplit as $pathPart ) { + foreach ($targetPathSplit as $pathPart) { - if ( $pathPart !== $sharedPart ) { + if ($pathPart !== $sharedPart) { $path = '/' . $pathPart . $path; @@ -1206,9 +1245,9 @@ class Util $path = $dir . $path; - if ( $c['type'] === "dir" ) { + if ($c['type'] === "dir") { - $result = array_merge( $result, $this->getAllFiles( $path ) ); + $result = array_merge($result, $this->getAllFiles($path)); } else { @@ -1226,19 +1265,21 @@ class Util * @param int $id of the current share * @return array of the parent */ - public static function getShareParent( $id ) { + public static function getShareParent($id) { - $query = \OC_DB::prepare( 'SELECT `file_target`, `item_type`' - . ' FROM `*PREFIX*share`' - . ' WHERE `id` = ?' ); + $sql = 'SELECT `file_target`, `item_type` FROM `*PREFIX*share` WHERE `id` = ?'; - $result = $query->execute( array( $id ) ); + $query = \OCP\DB::prepare($sql); + + $result = $query->execute(array($id)); $row = array(); - if (\OC_DB::isError($result)) { - \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + if (\OCP\DB::isError($result)) { + \OCP\Util::writeLog('Encryption library', \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); } else { - $row = $result->fetchRow(); + if($result->numRows() > 0) { + $row = $result->fetchRow(); + } } return $row; @@ -1250,19 +1291,21 @@ class Util * @param int $id of the current share * @return array of the parent */ - public static function getParentFromShare( $id ) { + public static function getParentFromShare($id) { - $query = \OC_DB::prepare( 'SELECT `parent`' - . ' FROM `*PREFIX*share`' - . ' WHERE `id` = ?' ); + $sql = 'SELECT `parent` FROM `*PREFIX*share` WHERE `id` = ?'; - $result = $query->execute( array( $id ) ); + $query = \OCP\DB::prepare($sql); + + $result = $query->execute(array($id)); $row = array(); - if (\OC_DB::isError($result)) { - \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + if (\OCP\DB::isError($result)) { + \OCP\Util::writeLog('Encryption library', \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); } else { - $row = $result->fetchRow(); + if($result->numRows() > 0) { + $row = $result->fetchRow(); + } } return $row; @@ -1275,39 +1318,43 @@ class Util * @internal param int $Id of a share * @return string owner */ - public function getOwnerFromSharedFile( $id ) { + public function getOwnerFromSharedFile($id) { - $query = \OC_DB::prepare( 'SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1 ); + $query = \OCP\DB::prepare('SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1); - $result = $query->execute( array( $id ) ); + $result = $query->execute(array($id)); $source = array(); - if (\OC_DB::isError($result)) { - \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + if (\OCP\DB::isError($result)) { + \OCP\Util::writeLog('Encryption library', \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); } else { - $source = $result->fetchRow(); + if($result->numRows() > 0) { + $source = $result->fetchRow(); + } } $fileOwner = false; - if ( isset( $source['parent'] ) ) { + if (isset($source['parent'])) { $parent = $source['parent']; - while ( isset( $parent ) ) { + while (isset($parent)) { - $query = \OC_DB::prepare( 'SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1 ); + $query = \OCP\DB::prepare('SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1); - $result = $query->execute( array( $parent ) ); + $result = $query->execute(array($parent)); $item = array(); - if (\OC_DB::isError($result)) { - \OC_Log::write('Encryption library', \OC_DB::getErrorMessage($result), \OC_Log::ERROR); + if (\OCP\DB::isError($result)) { + \OCP\Util::writeLog('Encryption library', \OC_DB::getErrorMessage($result), \OCP\Util::ERROR); } else { - $item = $result->fetchRow(); + if($result->numRows() > 0) { + $item = $result->fetchRow(); + } } - if ( isset( $item['parent'] ) ) { + if (isset($item['parent'])) { $parent = $item['parent']; @@ -1348,7 +1395,7 @@ class Util * @param $password * @return bool */ - public function checkRecoveryPassword( $password ) { + public function checkRecoveryPassword($password) { $pathKey = '/owncloud_private_key/' . $this->recoveryKeyId . ".private.key"; $pathControlData = '/control-file/controlfile.enc'; @@ -1356,16 +1403,16 @@ class Util $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $recoveryKey = $this->view->file_get_contents( $pathKey ); + $recoveryKey = $this->view->file_get_contents($pathKey); - $decryptedRecoveryKey = Crypt::symmetricDecryptFileContent( $recoveryKey, $password ); + $decryptedRecoveryKey = Crypt::symmetricDecryptFileContent($recoveryKey, $password); - $controlData = $this->view->file_get_contents( $pathControlData ); - $decryptedControlData = Crypt::keyDecrypt( $controlData, $decryptedRecoveryKey ); + $controlData = $this->view->file_get_contents($pathControlData); + $decryptedControlData = Crypt::keyDecrypt($controlData, $decryptedRecoveryKey); \OC_FileProxy::$enabled = $proxyStatus; - if ( $decryptedControlData === 'ownCloud' ) { + if ($decryptedControlData === 'ownCloud') { return true; } @@ -1382,19 +1429,19 @@ class Util /** * @brief add recovery key to all encrypted files */ - public function addRecoveryKeys( $path = '/' ) { - $dirContent = $this->view->getDirectoryContent( $this->keyfilesPath . $path ); - foreach ( $dirContent as $item ) { + public function addRecoveryKeys($path = '/') { + $dirContent = $this->view->getDirectoryContent($this->keyfilesPath . $path); + foreach ($dirContent as $item) { // get relative path from files_encryption/keyfiles/ - $filePath = substr( $item['path'], strlen('files_encryption/keyfiles') ); - if ( $item['type'] == 'dir' ) { - $this->addRecoveryKeys( $filePath . '/' ); + $filePath = substr($item['path'], strlen('files_encryption/keyfiles')); + if ($item['type'] == 'dir') { + $this->addRecoveryKeys($filePath . '/'); } else { - $session = new Session( new \OC_FilesystemView( '/' ) ); + $session = new Session(new \OC_FilesystemView('/')); $sharingEnabled = \OCP\Share::isEnabled(); - $file = substr( $filePath, 0, -4 ); - $usersSharing = $this->getSharingUsersArray( $sharingEnabled, $file ); - $this->setSharedFileKeyfiles( $session, $usersSharing, $file ); + $file = substr($filePath, 0, -4); + $usersSharing = $this->getSharingUsersArray($sharingEnabled, $file); + $this->setSharedFileKeyfiles($session, $usersSharing, $file); } } } @@ -1402,16 +1449,16 @@ class Util /** * @brief remove recovery key to all encrypted files */ - public function removeRecoveryKeys( $path = '/' ) { - $dirContent = $this->view->getDirectoryContent( $this->keyfilesPath . $path ); - foreach ( $dirContent as $item ) { + public function removeRecoveryKeys($path = '/') { + $dirContent = $this->view->getDirectoryContent($this->keyfilesPath . $path); + foreach ($dirContent as $item) { // get relative path from files_encryption/keyfiles - $filePath = substr( $item['path'], strlen('files_encryption/keyfiles') ); - if ( $item['type'] == 'dir' ) { - $this->removeRecoveryKeys( $filePath . '/' ); + $filePath = substr($item['path'], strlen('files_encryption/keyfiles')); + if ($item['type'] == 'dir') { + $this->removeRecoveryKeys($filePath . '/'); } else { - $file = substr( $filePath, 0, -4 ); - $this->view->unlink( $this->shareKeysPath . '/' . $file . '.' . $this->recoveryKeyId . '.shareKey' ); + $file = substr($filePath, 0, -4); + $this->view->unlink($this->shareKeysPath . '/' . $file . '.' . $this->recoveryKeyId . '.shareKey'); } } } @@ -1421,39 +1468,43 @@ class Util * @param string $file * @param string $privateKey recovery key to decrypt the file */ - private function recoverFile( $file, $privateKey ) { + private function recoverFile($file, $privateKey) { $sharingEnabled = \OCP\Share::isEnabled(); // Find out who, if anyone, is sharing the file - if ( $sharingEnabled ) { - $result = \OCP\Share::getUsersSharingFile( $file, $this->userId, true, true, true ); + if ($sharingEnabled) { + $result = \OCP\Share::getUsersSharingFile($file, $this->userId, true, true, true); $userIds = $result['users']; $userIds[] = $this->recoveryKeyId; - if ( $result['public'] ) { + if ($result['public']) { $userIds[] = $this->publicShareKeyId; } } else { - $userIds = array( $this->userId, $this->recoveryKeyId ); + $userIds = array( + $this->userId, + $this->recoveryKeyId + ); } - $filteredUids = $this->filterShareReadyUsers( $userIds ); + $filteredUids = $this->filterShareReadyUsers($userIds); $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; //decrypt file key - $encKeyfile = $this->view->file_get_contents( $this->keyfilesPath . $file . ".key" ); - $shareKey = $this->view->file_get_contents( $this->shareKeysPath . $file . "." . $this->recoveryKeyId . ".shareKey" ); - $plainKeyfile = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); + $encKeyfile = $this->view->file_get_contents($this->keyfilesPath . $file . ".key"); + $shareKey = $this->view->file_get_contents( + $this->shareKeysPath . $file . "." . $this->recoveryKeyId . ".shareKey"); + $plainKeyfile = Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); // encrypt file key again to all users, this time with the new public key for the recovered use - $userPubKeys = Keymanager::getPublicKeys( $this->view, $filteredUids['ready'] ); - $multiEncKey = Crypt::multiKeyEncrypt( $plainKeyfile, $userPubKeys ); + $userPubKeys = Keymanager::getPublicKeys($this->view, $filteredUids['ready']); + $multiEncKey = Crypt::multiKeyEncrypt($plainKeyfile, $userPubKeys); // write new keys to filesystem TDOO! - $this->view->file_put_contents( $this->keyfilesPath . $file . '.key', $multiEncKey['data'] ); - foreach ( $multiEncKey['keys'] as $userId => $shareKey ) { + $this->view->file_put_contents($this->keyfilesPath . $file . '.key', $multiEncKey['data']); + foreach ($multiEncKey['keys'] as $userId => $shareKey) { $shareKeyPath = $this->shareKeysPath . $file . '.' . $userId . '.shareKey'; - $this->view->file_put_contents( $shareKeyPath, $shareKey ); + $this->view->file_put_contents($shareKeyPath, $shareKey); } // Return proxy to original status @@ -1465,15 +1516,15 @@ class Util * @param string $path to look for files keys * @param string $privateKey private recovery key which is used to decrypt the files */ - private function recoverAllFiles( $path, $privateKey ) { - $dirContent = $this->view->getDirectoryContent( $this->keyfilesPath . $path ); - foreach ( $dirContent as $item ) { - $filePath = substr( $item['path'], 25 ); - if ( $item['type'] == 'dir' ) { - $this->recoverAllFiles( $filePath . '/', $privateKey ); + private function recoverAllFiles($path, $privateKey) { + $dirContent = $this->view->getDirectoryContent($this->keyfilesPath . $path); + foreach ($dirContent as $item) { + $filePath = substr($item['path'], 25); + if ($item['type'] == 'dir') { + $this->recoverAllFiles($filePath . '/', $privateKey); } else { - $file = substr( $filePath, 0, -4 ); - $this->recoverFile( $file, $privateKey ); + $file = substr($filePath, 0, -4); + $this->recoverFile($file, $privateKey); } } } @@ -1482,18 +1533,19 @@ class Util * @brief recover users files in case of password lost * @param string $recoveryPassword */ - public function recoverUsersFiles( $recoveryPassword ) { + public function recoverUsersFiles($recoveryPassword) { // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $encryptedKey = $this->view->file_get_contents( '/owncloud_private_key/' . $this->recoveryKeyId . '.private.key' ); - $privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, $recoveryPassword ); + $encryptedKey = $this->view->file_get_contents( + '/owncloud_private_key/' . $this->recoveryKeyId . '.private.key'); + $privateKey = Crypt::symmetricDecryptFileContent($encryptedKey, $recoveryPassword); \OC_FileProxy::$enabled = $proxyStatus; - $this->recoverAllFiles( '/', $privateKey ); + $this->recoverAllFiles('/', $privateKey); } } -- cgit v1.2.3 From d408cd7f376c6b6841fd849758c1dbb6d9f12806 Mon Sep 17 00:00:00 2001 From: Georg Ehrke Date: Mon, 27 May 2013 15:24:37 +0200 Subject: fix https://github.com/owncloud/core/issues/3320 --- apps/files_trashbin/js/trash.js | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/files_trashbin/js/trash.js b/apps/files_trashbin/js/trash.js index eed253d6602..63baa83f527 100644 --- a/apps/files_trashbin/js/trash.js +++ b/apps/files_trashbin/js/trash.js @@ -117,6 +117,7 @@ $(document).ready(function() { }); $('.delete').click('click',function(event) { + event.preventDefault(); console.log("delete selected"); var spinner = ''; var files=getSelectedFiles('file'); -- cgit v1.2.3 From 1a3f7891ea86f108fbd984b12fe047ffacb20efb Mon Sep 17 00:00:00 2001 From: Björn Schießle Date: Mon, 27 May 2013 15:31:26 +0200 Subject: remove unused varaibles --- apps/files_encryption/lib/crypt.php | 4 +--- apps/files_encryption/lib/util.php | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index f5b7a8a0a40..8e3522917d5 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -640,11 +640,9 @@ class Crypt * @param $legacyEncryptedContent * @param $legacyPassphrase * @param $publicKeys - * @param $newPassphrase - * @param $path * @return array */ - public static function legacyKeyRecryptKeyfile( $legacyEncryptedContent, $legacyPassphrase, $publicKeys, $newPassphrase, $path ) { + public static function legacyKeyRecryptKeyfile( $legacyEncryptedContent, $legacyPassphrase, $publicKeys ) { $decrypted = self::legacyBlockDecrypt( $legacyEncryptedContent, $legacyPassphrase ); diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index cac67d496e8..7f34d21682d 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -720,7 +720,7 @@ class Util $publicKeys = Keymanager::getPublicKeys( $this->view, $uniqueUserIds ); // Recrypt data, generate catfile - $recrypted = Crypt::legacyKeyRecryptKeyfile( $legacyData, $legacyPassphrase, $publicKeys, $newPassphrase, $legacyFile['path'] ); + $recrypted = Crypt::legacyKeyRecryptKeyfile( $legacyData, $legacyPassphrase, $publicKeys ); $rawPath = $legacyFile['path']; $relPath = $this->stripUserFilesPath( $rawPath ); -- cgit v1.2.3 From 710e9c2d14c8f25cfedf5cc04fa4ca0e12fc2f19 Mon Sep 17 00:00:00 2001 From: Björn Schießle Date: Mon, 27 May 2013 15:34:57 +0200 Subject: fix tests, after unused variables are removed --- apps/files_encryption/tests/crypt.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 74b4252a1d4..fa2a2984d58 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -575,7 +575,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { */ function testLegacyKeyRecryptKeyfileEncrypt($crypted) { - $recrypted = Encryption\Crypt::LegacyKeyRecryptKeyfile($crypted, $this->pass, array($this->genPublicKey), $this->pass, ''); + $recrypted = Encryption\Crypt::LegacyKeyRecryptKeyfile($crypted, $this->pass, array($this->genPublicKey)); $this->assertNotEquals($this->dataLong, $recrypted['data']); -- cgit v1.2.3 From 841b420bc49d0a50e030279b68c27f6c05446c34 Mon Sep 17 00:00:00 2001 From: Georg Ehrke Date: Mon, 27 May 2013 16:37:43 +0200 Subject: add event.preventDefault to undelete function --- apps/files_trashbin/js/trash.js | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/files_trashbin/js/trash.js b/apps/files_trashbin/js/trash.js index 63baa83f527..691642811b7 100644 --- a/apps/files_trashbin/js/trash.js +++ b/apps/files_trashbin/js/trash.js @@ -93,6 +93,7 @@ $(document).ready(function() { }); $('.undelete').click('click',function(event) { + event.preventDefault(); var spinner = ''; var files=getSelectedFiles('file'); var fileslist = JSON.stringify(files); -- cgit v1.2.3 From 5d32e214b7c91d3710c46f522d82104cbad5b837 Mon Sep 17 00:00:00 2001 From: Florin Peter Date: Mon, 27 May 2013 17:26:58 +0200 Subject: reformat code --- apps/files_encryption/ajax/adminrecovery.php | 13 +- .../ajax/changeRecoveryPassword.php | 8 +- apps/files_encryption/ajax/userrecovery.php | 22 +- apps/files_encryption/appinfo/app.php | 8 +- apps/files_encryption/hooks/hooks.php | 390 +++++++++++---------- apps/files_encryption/lib/crypt.php | 205 +++++------ apps/files_encryption/lib/helper.php | 84 ++--- apps/files_encryption/lib/keymanager.php | 227 ++++++------ apps/files_encryption/lib/proxy.php | 198 ++++++----- apps/files_encryption/lib/session.php | 57 +-- apps/files_encryption/lib/stream.php | 142 ++++---- 11 files changed, 694 insertions(+), 660 deletions(-) diff --git a/apps/files_encryption/ajax/adminrecovery.php b/apps/files_encryption/ajax/adminrecovery.php index 6d7953b5639..d532bb62b64 100644 --- a/apps/files_encryption/ajax/adminrecovery.php +++ b/apps/files_encryption/ajax/adminrecovery.php @@ -13,7 +13,7 @@ use OCA\Encryption; \OCP\JSON::checkAppEnabled('files_encryption'); \OCP\JSON::callCheck(); -$l=OC_L10N::get('files_encryption'); +$l = OC_L10N::get('files_encryption'); $return = false; @@ -21,7 +21,7 @@ $return = false; $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); -if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] == 1){ +if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] == 1) { $return = \OCA\Encryption\Helper::adminEnableRecovery($recoveryKeyId, $_POST['recoveryPassword']); $action = "enable"; @@ -37,7 +37,12 @@ if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] == 1){ // Return success or failure if ($return) { - \OCP\JSON::success(array("data" => array( "message" => $l->t('Recovery key successfully ' . $action.'d')))); + \OCP\JSON::success(array("data" => array("message" => $l->t('Recovery key successfully ' . $action . 'd')))); } else { - \OCP\JSON::error(array("data" => array( "message" => $l->t('Could not '.$action.' recovery key. Please check your recovery key password!')))); + \OCP\JSON::error(array( + "data" => array( + "message" => $l->t( + 'Could not ' . $action . ' recovery key. Please check your recovery key password!') + ) + )); } diff --git a/apps/files_encryption/ajax/changeRecoveryPassword.php b/apps/files_encryption/ajax/changeRecoveryPassword.php index d990796a4fb..0103d933758 100644 --- a/apps/files_encryption/ajax/changeRecoveryPassword.php +++ b/apps/files_encryption/ajax/changeRecoveryPassword.php @@ -6,7 +6,7 @@ * See the COPYING-README file. * * @brief Script to change recovery key password - * + * */ use OCA\Encryption; @@ -15,7 +15,7 @@ use OCA\Encryption; \OCP\JSON::checkAppEnabled('files_encryption'); \OCP\JSON::callCheck(); -$l=OC_L10N::get('core'); +$l = OC_L10N::get('core'); $return = false; @@ -46,7 +46,7 @@ if ($result) { // success or failure if ($return) { - \OCP\JSON::success(array("data" => array( "message" => $l->t('Password successfully changed.')))); + \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.')))); + \OCP\JSON::error(array("data" => array("message" => $l->t('Could not change the password. Maybe the old password was not correct.')))); } \ No newline at end of file diff --git a/apps/files_encryption/ajax/userrecovery.php b/apps/files_encryption/ajax/userrecovery.php index 1f42b376e42..4b364121e33 100644 --- a/apps/files_encryption/ajax/userrecovery.php +++ b/apps/files_encryption/ajax/userrecovery.php @@ -10,32 +10,32 @@ use OCA\Encryption; \OCP\JSON::checkLoggedIn(); -\OCP\JSON::checkAppEnabled( 'files_encryption' ); +\OCP\JSON::checkAppEnabled('files_encryption'); \OCP\JSON::callCheck(); -if ( - isset( $_POST['userEnableRecovery'] ) - && ( 0 == $_POST['userEnableRecovery'] || 1 == $_POST['userEnableRecovery'] ) +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 ); - + $view = new \OC_FilesystemView('/'); + $util = new \OCA\Encryption\Util($view, $userId); + // Save recovery preference to DB - $return = $util->setRecoveryForUser( $_POST['userEnableRecovery'] ); + $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(); \ No newline at end of file +($return) ? \OCP\JSON::success() : \OCP\JSON::error(); \ No newline at end of file diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php index 7d01696e08a..d9bb4d5e74e 100644 --- a/apps/files_encryption/appinfo/app.php +++ b/apps/files_encryption/appinfo/app.php @@ -10,7 +10,7 @@ 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() ); +OC_FileProxy::register(new OCA\Encryption\Proxy()); // User related hooks OCA\Encryption\Helper::registerUserHooks(); @@ -21,7 +21,7 @@ OCA\Encryption\Helper::registerShareHooks(); // Filesystem related hooks OCA\Encryption\Helper::registerFilesystemHooks(); -stream_wrapper_register( 'crypt', 'OCA\Encryption\Stream' ); +stream_wrapper_register('crypt', 'OCA\Encryption\Stream'); // check if we are logged in if (OCP\User::isLoggedIn()) { @@ -46,6 +46,6 @@ if (OCP\User::isLoggedIn()) { } // Register settings scripts -OCP\App::registerAdmin( 'files_encryption', 'settings-admin' ); -OCP\App::registerPersonal( 'files_encryption', 'settings-personal' ); +OCP\App::registerAdmin('files_encryption', 'settings-admin'); +OCP\App::registerPersonal('files_encryption', 'settings-personal'); diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 2066300a163..f0d0856d6e1 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -37,108 +37,108 @@ 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 - // NOTE: disabled because this give errors on webdav! + // NOTE: disabled because this give errors on webdav! //\OC\Files\Filesystem::init( $params['uid'], '/' . 'files' . '/' ); - - $view = new \OC_FilesystemView( '/' ); - $util = new Util( $view, $params['uid'] ); + $view = new \OC_FilesystemView('/'); + + $util = new Util($view, $params['uid']); + + // setup user, if user not ready force relogin + if (Helper::setupUser($util, $params['password']) === false) { + return false; + } + + $encryptedKey = Keymanager::getPrivateKey($view, $params['uid']); - // setup user, if user not ready force relogin - if(Helper::setupUser($util, $params['password']) === false) { - return false; - } + $privateKey = Crypt::symmetricDecryptFileContent($encryptedKey, $params['password']); - $encryptedKey = Keymanager::getPrivateKey( $view, $params['uid'] ); - - $privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, $params['password'] ); + $session = new Session($view); + + $session->setPrivateKey($privateKey, $params['uid']); - $session = new Session( $view ); - - $session->setPrivateKey( $privateKey, $params['uid'] ); - // Check if first-run file migration has already been performed $migrationCompleted = $util->getMigrationStatus(); - + // If migration not yet done - if ( ! $migrationCompleted ) { - - $userView = new \OC_FilesystemView( '/' . $params['uid'] ); - + if (!$migrationCompleted) { + + $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' ) + $userView->file_exists('encryption.key') + && $encLegacyKey = $userView->file_get_contents('encryption.key') ) { - - $plainLegacyKey = Crypt::legacyDecrypt( $encLegacyKey, $params['password'] ); - - $session->setLegacyKey( $plainLegacyKey ); - + + $plainLegacyKey = Crypt::legacyDecrypt($encLegacyKey, $params['password']); + + $session->setLegacyKey($plainLegacyKey); + } - $publicKey = Keymanager::getPublicKey( $view, $params['uid'] ); - + $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( '/' . $params['uid'] . '/' . 'files', $session->getLegacyKey(), $params['password'] ) + $util->encryptAll('/' . $params['uid'] . '/' . 'files', $session->getLegacyKey(), $params['password']) ) { - - \OC_Log::write( + + \OC_Log::write( 'Encryption library', 'Encryption of existing files belonging to "' . $params['uid'] . '" completed' - , \OC_Log::INFO + , \OC_Log::INFO ); - + } // Register successful migration in DB - $util->setMigrationStatus( 1 ); - + $util->setMigrationStatus(1); + } 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( '/' ); + /** + * @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'] ); + $util = new Util($view, $params['uid']); - Helper::setupUser($util, $params['password']); - } + 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( '/' ); + /** + * @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'; + // 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; + // Disable encryption proxy to prevent recursive calls + $proxyStatus = \OC_FileProxy::$enabled; + \OC_FileProxy::$enabled = false; - $view->unlink($publicKey); + $view->unlink($publicKey); - \OC_FileProxy::$enabled = $proxyStatus; - } + \OC_FileProxy::$enabled = $proxyStatus; + } - /** + /** * @brief Change a user's encryption passphrase * @param array $params keys: uid, password */ @@ -167,10 +167,10 @@ class Hooks { // 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']; @@ -181,21 +181,22 @@ class Hooks { \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'] ); + $view->file_put_contents('/public-keys/' . $user . '.public.key', $keypair['publicKey']); // Encrypt private key empty passphrase - $encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $keypair['privateKey'], $newUserPassword ); + $encryptedPrivateKey = Crypt::symmetricEncryptFileContent($keypair['privateKey'], $newUserPassword); // Save private key - $view->file_put_contents( '/'.$user.'/files_encryption/'.$user.'.private.key', $encryptedPrivateKey ); + $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 + if ($recoveryPassword) { // if recovery key is set we can re-encrypt the key files $util = new Util($view, $user); $util->recoverUsersFiles($recoveryPassword); } @@ -233,16 +234,17 @@ class Hooks { } } - if($error) - // Set flag var 'run' to notify emitting + 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 + } + // TODO: Make sure files_sharing provides user + // feedback on failed share } /** - * @brief + * @brief */ public static function postShared($params) { @@ -336,15 +338,15 @@ class Hooks { foreach ($allFiles as $path) { $usersSharing = $util->getSharingUsersArray($sharingEnabled, $path); - $util->setSharedFileKeyfiles( $session, $usersSharing, $path ); + $util->setSharedFileKeyfiles($session, $usersSharing, $path); } } } - + /** - * @brief + * @brief */ - public static function postUnshare( $params ) { + public static function postUnshare($params) { // NOTE: $params has keys: // [itemType] => file @@ -353,40 +355,40 @@ class Hooks { // [shareWith] => test1 // [itemParent] => - if ( $params['itemType'] === 'file' || $params['itemType'] === 'folder' ) { + if ($params['itemType'] === 'file' || $params['itemType'] === 'folder') { - $view = new \OC_FilesystemView( '/' ); + $view = new \OC_FilesystemView('/'); $userId = \OCP\User::getUser(); - $util = new Util( $view, $userId); - $path = $util->fileIdToPath( $params['itemSource'] ); + $util = new Util($view, $userId); + $path = $util->fileIdToPath($params['itemSource']); // check if this is a re-share - if ( $params['itemParent'] ) { + if ($params['itemParent']) { // get the parent from current share - $parent = $util->getShareParent( $params['itemParent'] ); + $parent = $util->getShareParent($params['itemParent']); // get target path - $targetPath = $util->fileIdToPath( $params['itemSource'] ); - $targetPathSplit = array_reverse( explode( '/', $targetPath ) ); + $targetPath = $util->fileIdToPath($params['itemSource']); + $targetPathSplit = array_reverse(explode('/', $targetPath)); // init values $path = ''; - $sharedPart = ltrim( $parent['file_target'], '/' ); + $sharedPart = ltrim($parent['file_target'], '/'); // rebuild path - foreach ( $targetPathSplit as $pathPart ) { - - if ( $pathPart !== $sharedPart ) { - + foreach ($targetPathSplit as $pathPart) { + + if ($pathPart !== $sharedPart) { + $path = '/' . $pathPart . $path; - + } else { - + break; - + } - + } // prefix path with Shared @@ -394,118 +396,124 @@ class Hooks { } // for group shares get a list of the group members - if ( $params['shareType'] == \OCP\Share::SHARE_TYPE_GROUP ) { + 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'] ); + if ($params['shareType'] == \OCP\Share::SHARE_TYPE_LINK) { + $userIds = array($util->getPublicShareKeyId()); + } else { + $userIds = array($params['shareWith']); + } } // if we unshare a folder we need a list of all (sub-)files - if ( $params['itemType'] === 'folder' ) { - - $allFiles = $util->getAllFiles( $path ); - + if ($params['itemType'] === 'folder') { + + $allFiles = $util->getAllFiles($path); + } else { - - $allFiles = array( $path ); + + $allFiles = array($path); } - foreach ( $allFiles as $path ) { + foreach ($allFiles as $path) { // check if the user still has access to the file, otherwise delete share key - $sharingUsers = $util->getSharingUsersArray( true, $path ); + $sharingUsers = $util->getSharingUsersArray(true, $path); // Unshare every user who no longer has access to the file - $delUsers = array_diff( $userIds, $sharingUsers); + $delUsers = array_diff($userIds, $sharingUsers); // delete share key - Keymanager::delShareKey( $view, $delUsers, $path ); + 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 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; - } + * @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 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; + } } diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 8e3522917d5..11b9298b447 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -26,21 +26,20 @@ namespace OCA\Encryption; //require_once '../3rdparty/Crypt_Blowfish/Blowfish.php'; -require_once realpath( dirname( __FILE__ ) . '/../3rdparty/Crypt_Blowfish/Blowfish.php' ); +require_once realpath(dirname(__FILE__) . '/../3rdparty/Crypt_Blowfish/Blowfish.php'); /** * Class for common cryptography functionality */ -class Crypt -{ +class Crypt { /** * @brief return encryption mode client or server side encryption * @param string $user name (use system wide setting if name=null) * @return string 'client' or 'server' */ - public static function mode( $user = null ) { + public static function mode($user = null) { return 'server'; @@ -52,17 +51,20 @@ class Crypt */ public static function createKeypair() { - $res = openssl_pkey_new( array( 'private_key_bits' => 4096 ) ); + $res = openssl_pkey_new(array('private_key_bits' => 4096)); // Get private key - openssl_pkey_export( $res, $privateKey ); + openssl_pkey_export($res, $privateKey); // Get public key - $publicKey = openssl_pkey_get_details( $res ); + $publicKey = openssl_pkey_get_details($res); $publicKey = $publicKey['key']; - return ( array( 'publicKey' => $publicKey, 'privateKey' => $privateKey ) ); + return (array( + 'publicKey' => $publicKey, + 'privateKey' => $privateKey + )); } @@ -75,7 +77,7 @@ class Crypt * blocks with encryption alone, hence padding is added to achieve the * required length. */ - public static function addPadding( $data ) { + public static function addPadding($data) { $padded = $data . 'xx'; @@ -88,11 +90,11 @@ class Crypt * @param string $padded padded data to remove padding from * @return string unpadded data on success, false on error */ - public static function removePadding( $padded ) { + public static function removePadding($padded) { - if ( substr( $padded, -2 ) == 'xx' ) { + if (substr($padded, -2) == 'xx') { - $data = substr( $padded, 0, -2 ); + $data = substr($padded, 0, -2); return $data; @@ -111,26 +113,26 @@ class Crypt * @return boolean * @note see also OCA\Encryption\Util->isEncryptedPath() */ - public static function isCatfileContent( $content ) { + public static function isCatfileContent($content) { - if ( !$content ) { + if (!$content) { return false; } - $noPadding = self::removePadding( $content ); + $noPadding = self::removePadding($content); // Fetch encryption metadata from end of file - $meta = substr( $noPadding, -22 ); + $meta = substr($noPadding, -22); // Fetch IV from end of file - $iv = substr( $meta, -16 ); + $iv = substr($meta, -16); // Fetch identifier from start of metadata - $identifier = substr( $meta, 0, 6 ); + $identifier = substr($meta, 0, 6); - if ( $identifier == '00iv00' ) { + if ($identifier == '00iv00') { return true; @@ -147,15 +149,15 @@ class Crypt * @param string $path * @return bool */ - public static function isEncryptedMeta( $path ) { + public static function isEncryptedMeta($path) { // TODO: Use DI to get \OC\Files\Filesystem out of here // Fetch all file metadata from DB - $metadata = \OC\Files\Filesystem::getFileInfo( $path ); + $metadata = \OC\Files\Filesystem::getFileInfo($path); // Return encryption status - return isset( $metadata['encrypted'] ) and ( bool )$metadata['encrypted']; + return isset($metadata['encrypted']) and ( bool )$metadata['encrypted']; } @@ -166,18 +168,18 @@ class Crypt * e.g. filename or /Docs/filename, NOT admin/files/filename * @return boolean */ - public static function isLegacyEncryptedContent( $data, $relPath ) { + public static function isLegacyEncryptedContent($data, $relPath) { // Fetch all file metadata from DB - $metadata = \OC\Files\Filesystem::getFileInfo( $relPath, '' ); + $metadata = \OC\Files\Filesystem::getFileInfo($relPath, ''); // If a file is flagged with encryption in DB, but isn't a // valid content + IV combination, it's probably using the // legacy encryption system if ( - isset( $metadata['encrypted'] ) + isset($metadata['encrypted']) and $metadata['encrypted'] === true - and !self::isCatfileContent( $data ) + and !self::isCatfileContent($data) ) { return true; @@ -197,15 +199,15 @@ class Crypt * @param string $passphrase * @return string encrypted file content */ - public static function encrypt( $plainContent, $iv, $passphrase = '' ) { + public static function encrypt($plainContent, $iv, $passphrase = '') { - if ( $encryptedContent = openssl_encrypt( $plainContent, 'AES-128-CFB', $passphrase, false, $iv ) ) { + if ($encryptedContent = openssl_encrypt($plainContent, 'AES-128-CFB', $passphrase, false, $iv)) { return $encryptedContent; } else { - \OC_Log::write( 'Encryption library', 'Encryption (symmetric) of content failed', \OC_Log::ERROR ); + \OC_Log::write('Encryption library', 'Encryption (symmetric) of content failed', \OC_Log::ERROR); return false; @@ -221,15 +223,15 @@ class Crypt * @throws \Exception * @return string decrypted file content */ - public static function decrypt( $encryptedContent, $iv, $passphrase ) { + public static function decrypt($encryptedContent, $iv, $passphrase) { - if ( $plainContent = openssl_decrypt( $encryptedContent, 'AES-128-CFB', $passphrase, false, $iv ) ) { + if ($plainContent = openssl_decrypt($encryptedContent, 'AES-128-CFB', $passphrase, false, $iv)) { return $plainContent; } else { - throw new \Exception( 'Encryption library: Decryption (symmetric) of content failed' ); + throw new \Exception('Encryption library: Decryption (symmetric) of content failed'); } @@ -241,7 +243,7 @@ class Crypt * @param string $iv IV to be concatenated * @returns string concatenated content */ - public static function concatIv( $content, $iv ) { + public static function concatIv($content, $iv) { $combined = $content . '00iv00' . $iv; @@ -254,20 +256,21 @@ class Crypt * @param string $catFile concatenated data to be split * @returns array keys: encrypted, iv */ - public static function splitIv( $catFile ) { + public static function splitIv($catFile) { // Fetch encryption metadata from end of file - $meta = substr( $catFile, -22 ); + $meta = substr($catFile, -22); // Fetch IV from end of file - $iv = substr( $meta, -16 ); + $iv = substr($meta, -16); // Remove IV and IV identifier text to expose encrypted content - $encrypted = substr( $catFile, 0, -22 ); + $encrypted = substr($catFile, 0, -22); $split = array( 'encrypted' => $encrypted - , 'iv' => $iv + , + 'iv' => $iv ); return $split; @@ -283,9 +286,9 @@ class Crypt * @note IV need not be specified, as it will be stored in the returned keyfile * and remain accessible therein. */ - public static function symmetricEncryptFileContent( $plainContent, $passphrase = '' ) { + public static function symmetricEncryptFileContent($plainContent, $passphrase = '') { - if ( !$plainContent ) { + if (!$plainContent) { return false; @@ -293,18 +296,18 @@ class Crypt $iv = self::generateIv(); - if ( $encryptedContent = self::encrypt( $plainContent, $iv, $passphrase ) ) { + if ($encryptedContent = self::encrypt($plainContent, $iv, $passphrase)) { // Combine content to encrypt with IV identifier and actual IV - $catfile = self::concatIv( $encryptedContent, $iv ); + $catfile = self::concatIv($encryptedContent, $iv); - $padded = self::addPadding( $catfile ); + $padded = self::addPadding($catfile); return $padded; } else { - \OC_Log::write( 'Encryption library', 'Encryption (symmetric) of keyfile content failed', \OC_Log::ERROR ); + \OC_Log::write('Encryption library', 'Encryption (symmetric) of keyfile content failed', \OC_Log::ERROR); return false; @@ -326,21 +329,21 @@ class Crypt * * This function decrypts a file */ - public static function symmetricDecryptFileContent( $keyfileContent, $passphrase = '' ) { + public static function symmetricDecryptFileContent($keyfileContent, $passphrase = '') { - if ( !$keyfileContent ) { + if (!$keyfileContent) { - throw new \Exception( 'Encryption library: no data provided for decryption' ); + throw new \Exception('Encryption library: no data provided for decryption'); } // Remove padding - $noPadding = self::removePadding( $keyfileContent ); + $noPadding = self::removePadding($keyfileContent); // Split into enc data and catfile - $catfile = self::splitIv( $noPadding ); + $catfile = self::splitIv($noPadding); - if ( $plainContent = self::decrypt( $catfile['encrypted'], $catfile['iv'], $passphrase ) ) { + if ($plainContent = self::decrypt($catfile['encrypted'], $catfile['iv'], $passphrase)) { return $plainContent; @@ -358,11 +361,11 @@ class Crypt * * This function decrypts a file */ - public static function symmetricEncryptFileContentKeyfile( $plainContent ) { + public static function symmetricEncryptFileContentKeyfile($plainContent) { $key = self::generateKey(); - if ( $encryptedContent = self::symmetricEncryptFileContent( $plainContent, $key ) ) { + if ($encryptedContent = self::symmetricEncryptFileContent($plainContent, $key)) { return array( 'key' => $key, @@ -384,13 +387,13 @@ class Crypt * @returns array keys: keys (array, key = userId), data * @note symmetricDecryptFileContent() can decrypt files created using this method */ - public static function multiKeyEncrypt( $plainContent, array $publicKeys ) { + public static function multiKeyEncrypt($plainContent, array $publicKeys) { // openssl_seal returns false without errors if $plainContent // is empty, so trigger our own error - if ( empty( $plainContent ) ) { + if (empty($plainContent)) { - throw new \Exception( 'Cannot mutliKeyEncrypt empty plain content' ); + throw new \Exception('Cannot mutliKeyEncrypt empty plain content'); } @@ -399,13 +402,13 @@ class Crypt $shareKeys = array(); $mappedShareKeys = array(); - if ( openssl_seal( $plainContent, $sealed, $shareKeys, $publicKeys ) ) { + if (openssl_seal($plainContent, $sealed, $shareKeys, $publicKeys)) { $i = 0; // Ensure each shareKey is labelled with its // corresponding userId - foreach ( $publicKeys as $userId => $publicKey ) { + foreach ($publicKeys as $userId => $publicKey) { $mappedShareKeys[$userId] = $shareKeys[$i]; $i++; @@ -437,21 +440,21 @@ class Crypt * * This function decrypts a file */ - public static function multiKeyDecrypt( $encryptedContent, $shareKey, $privateKey ) { + public static function multiKeyDecrypt($encryptedContent, $shareKey, $privateKey) { - if ( !$encryptedContent ) { + if (!$encryptedContent) { return false; } - if ( openssl_open( $encryptedContent, $plainContent, $shareKey, $privateKey ) ) { + if (openssl_open($encryptedContent, $plainContent, $shareKey, $privateKey)) { return $plainContent; } else { - \OC_Log::write( 'Encryption library', 'Decryption (asymmetric) of sealed content failed', \OC_Log::ERROR ); + \OC_Log::write('Encryption library', 'Decryption (asymmetric) of sealed content failed', \OC_Log::ERROR); return false; @@ -463,9 +466,9 @@ class Crypt * @brief Asymetrically encrypt a string using a public key * @return string encrypted file */ - public static function keyEncrypt( $plainContent, $publicKey ) { + public static function keyEncrypt($plainContent, $publicKey) { - openssl_public_encrypt( $plainContent, $encryptedContent, $publicKey ); + openssl_public_encrypt($plainContent, $encryptedContent, $publicKey); return $encryptedContent; @@ -475,11 +478,11 @@ class Crypt * @brief Asymetrically decrypt a file using a private key * @return string decrypted file */ - public static function keyDecrypt( $encryptedContent, $privatekey ) { + public static function keyDecrypt($encryptedContent, $privatekey) { - $result = @openssl_private_decrypt( $encryptedContent, $plainContent, $privatekey ); + $result = @openssl_private_decrypt($encryptedContent, $plainContent, $privatekey); - if ( $result ) { + if ($result) { return $plainContent; } @@ -493,24 +496,24 @@ class Crypt */ public static function generateIv() { - if ( $random = openssl_random_pseudo_bytes( 12, $strong ) ) { + if ($random = openssl_random_pseudo_bytes(12, $strong)) { - if ( !$strong ) { + if (!$strong) { // If OpenSSL indicates randomness is insecure, log error - \OC_Log::write( 'Encryption library', 'Insecure symmetric key was generated using openssl_random_pseudo_bytes()', \OC_Log::WARN ); + \OC_Log::write('Encryption library', 'Insecure symmetric key was generated using openssl_random_pseudo_bytes()', \OC_Log::WARN); } // We encode the iv purely for string manipulation // purposes - it gets decoded before use - $iv = base64_encode( $random ); + $iv = base64_encode($random); return $iv; } else { - throw new \Exception( 'Generating IV failed' ); + throw new \Exception('Generating IV failed'); } @@ -523,12 +526,12 @@ class Crypt public static function generateKey() { // Generate key - if ( $key = base64_encode( openssl_random_pseudo_bytes( 183, $strong ) ) ) { + if ($key = base64_encode(openssl_random_pseudo_bytes(183, $strong))) { - if ( !$strong ) { + if (!$strong) { // If OpenSSL indicates randomness is insecure, log error - throw new \Exception( 'Encryption library, Insecure symmetric key was generated using openssl_random_pseudo_bytes()' ); + throw new \Exception('Encryption library, Insecure symmetric key was generated using openssl_random_pseudo_bytes()'); } @@ -549,11 +552,11 @@ class Crypt * * if the key is left out, the default handeler will be used */ - public static function getBlowfish( $key = '' ) { + public static function getBlowfish($key = '') { - if ( $key ) { + if ($key) { - return new \Crypt_Blowfish( $key ); + return new \Crypt_Blowfish($key); } else { @@ -567,13 +570,13 @@ class Crypt * @param $passphrase * @return mixed */ - public static function legacyCreateKey( $passphrase ) { + public static function legacyCreateKey($passphrase) { // Generate a random integer - $key = mt_rand( 10000, 99999 ) . mt_rand( 10000, 99999 ) . mt_rand( 10000, 99999 ) . mt_rand( 10000, 99999 ); + $key = mt_rand(10000, 99999) . mt_rand(10000, 99999) . mt_rand(10000, 99999) . mt_rand(10000, 99999); // Encrypt the key with the passphrase - $legacyEncKey = self::legacyEncrypt( $key, $passphrase ); + $legacyEncKey = self::legacyEncrypt($key, $passphrase); return $legacyEncKey; @@ -589,11 +592,11 @@ class Crypt * * This function encrypts an content */ - public static function legacyEncrypt( $content, $passphrase = '' ) { + public static function legacyEncrypt($content, $passphrase = '') { - $bf = self::getBlowfish( $passphrase ); + $bf = self::getBlowfish($passphrase); - return $bf->encrypt( $content ); + return $bf->encrypt($content); } @@ -607,13 +610,13 @@ class Crypt * * This function decrypts an content */ - public static function legacyDecrypt( $content, $passphrase = '' ) { + public static function legacyDecrypt($content, $passphrase = '') { - $bf = self::getBlowfish( $passphrase ); + $bf = self::getBlowfish($passphrase); - $decrypted = $bf->decrypt( $content ); + $decrypted = $bf->decrypt($content); - return rtrim( $decrypted, "\0" );; + return rtrim($decrypted, "\0");; } @@ -623,16 +626,16 @@ class Crypt * @param int $maxLength * @return string */ - private static function legacyBlockDecrypt( $data, $key = '', $maxLength = 0 ) { + private static function legacyBlockDecrypt($data, $key = '', $maxLength = 0) { $result = ''; - while ( strlen( $data ) ) { - $result .= self::legacyDecrypt( substr( $data, 0, 8192 ), $key ); - $data = substr( $data, 8192 ); + while (strlen($data)) { + $result .= self::legacyDecrypt(substr($data, 0, 8192), $key); + $data = substr($data, 8192); } - if ( $maxLength > 0 ) { - return substr( $result, 0, $maxLength ); + if ($maxLength > 0) { + return substr($result, 0, $maxLength); } else { - return rtrim( $result, "\0" ); + return rtrim($result, "\0"); } } @@ -642,17 +645,21 @@ class Crypt * @param $publicKeys * @return array */ - public static function legacyKeyRecryptKeyfile( $legacyEncryptedContent, $legacyPassphrase, $publicKeys ) { + public static function legacyKeyRecryptKeyfile($legacyEncryptedContent, $legacyPassphrase, $publicKeys) { - $decrypted = self::legacyBlockDecrypt( $legacyEncryptedContent, $legacyPassphrase ); + $decrypted = self::legacyBlockDecrypt($legacyEncryptedContent, $legacyPassphrase); // Encrypt plain data, generate keyfile & encrypted file - $cryptedData = self::symmetricEncryptFileContentKeyfile( $decrypted ); + $cryptedData = self::symmetricEncryptFileContentKeyfile($decrypted); // Encrypt plain keyfile to multiple sharefiles - $multiEncrypted = Crypt::multiKeyEncrypt( $cryptedData['key'], $publicKeys ); + $multiEncrypted = Crypt::multiKeyEncrypt($cryptedData['key'], $publicKeys); - return array( 'data' => $cryptedData['encrypted'], 'filekey' => $multiEncrypted['data'], 'sharekeys' => $multiEncrypted['keys'] ); + return array( + 'data' => $cryptedData['encrypted'], + 'filekey' => $multiEncrypted['data'], + 'sharekeys' => $multiEncrypted['keys'] + ); } diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php index 7a2d19eed57..b946f69513a 100755 --- a/apps/files_encryption/lib/helper.php +++ b/apps/files_encryption/lib/helper.php @@ -30,8 +30,7 @@ namespace OCA\Encryption; * Class Helper * @package OCA\Encryption */ -class Helper -{ +class Helper { /** * @brief register share related hooks @@ -39,9 +38,9 @@ class Helper */ public static function registerShareHooks() { - \OCP\Util::connectHook( 'OCP\Share', 'pre_shared', 'OCA\Encryption\Hooks', 'preShared' ); - \OCP\Util::connectHook( 'OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared' ); - \OCP\Util::connectHook( 'OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare' ); + \OCP\Util::connectHook('OCP\Share', 'pre_shared', 'OCA\Encryption\Hooks', 'preShared'); + \OCP\Util::connectHook('OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared'); + \OCP\Util::connectHook('OCP\Share', 'post_unshare', 'OCA\Encryption\Hooks', 'postUnshare'); } /** @@ -50,10 +49,10 @@ class Helper */ public static function registerUserHooks() { - \OCP\Util::connectHook( 'OC_User', 'post_login', 'OCA\Encryption\Hooks', 'login' ); - \OCP\Util::connectHook( 'OC_User', 'post_setPassword', 'OCA\Encryption\Hooks', 'setPassphrase' ); - \OCP\Util::connectHook( 'OC_User', 'post_createUser', 'OCA\Encryption\Hooks', 'postCreateUser' ); - \OCP\Util::connectHook( 'OC_User', 'post_deleteUser', 'OCA\Encryption\Hooks', 'postDeleteUser' ); + \OCP\Util::connectHook('OC_User', 'post_login', 'OCA\Encryption\Hooks', 'login'); + \OCP\Util::connectHook('OC_User', 'post_setPassword', 'OCA\Encryption\Hooks', 'setPassphrase'); + \OCP\Util::connectHook('OC_User', 'post_createUser', 'OCA\Encryption\Hooks', 'postCreateUser'); + \OCP\Util::connectHook('OC_User', 'post_deleteUser', 'OCA\Encryption\Hooks', 'postDeleteUser'); } /** @@ -62,7 +61,7 @@ class Helper */ public static function registerFilesystemHooks() { - \OCP\Util::connectHook( 'OC_Filesystem', 'post_rename', 'OCA\Encryption\Hooks', 'postRename' ); + \OCP\Util::connectHook('OC_Filesystem', 'post_rename', 'OCA\Encryption\Hooks', 'postRename'); } /** @@ -72,13 +71,14 @@ class Helper * @param string $password * @return bool */ - public static function setupUser( $util, $password ) { + public static function setupUser($util, $password) { // Check files_encryption infrastructure is ready for action - if ( !$util->ready() ) { + if (!$util->ready()) { - \OC_Log::write( 'Encryption library', 'User account "' . $util->getUserId() . '" is not ready for encryption; configuration started', \OC_Log::DEBUG ); + \OC_Log::write('Encryption library', 'User account "' . $util->getUserId() + . '" is not ready for encryption; configuration started', \OC_Log::DEBUG); - if ( !$util->setupServerSide( $password ) ) { + if (!$util->setupServerSide($password)) { return false; } } @@ -95,21 +95,21 @@ class Helper * @internal param string $password * @return bool */ - public static function adminEnableRecovery( $recoveryKeyId, $recoveryPassword ) { - $view = new \OC\Files\View( '/' ); + public static function adminEnableRecovery($recoveryKeyId, $recoveryPassword) { + $view = new \OC\Files\View('/'); - if ( $recoveryKeyId === null ) { - $recoveryKeyId = 'recovery_' . substr( md5( time() ), 0, 8 ); - \OC_Appconfig::setValue( 'files_encryption', 'recoveryKeyId', $recoveryKeyId ); + if ($recoveryKeyId === null) { + $recoveryKeyId = 'recovery_' . substr(md5(time()), 0, 8); + \OC_Appconfig::setValue('files_encryption', 'recoveryKeyId', $recoveryKeyId); } - if ( !$view->is_dir( '/owncloud_private_key' ) ) { - $view->mkdir( '/owncloud_private_key' ); + if (!$view->is_dir('/owncloud_private_key')) { + $view->mkdir('/owncloud_private_key'); } if ( - ( !$view->file_exists( "/public-keys/" . $recoveryKeyId . ".public.key" ) - || !$view->file_exists( "/owncloud_private_key/" . $recoveryKeyId . ".private.key" ) ) + (!$view->file_exists("/public-keys/" . $recoveryKeyId . ".public.key") + || !$view->file_exists("/owncloud_private_key/" . $recoveryKeyId . ".private.key")) ) { $keypair = \OCA\Encryption\Crypt::createKeypair(); @@ -118,37 +118,37 @@ class Helper // Save public key - if ( !$view->is_dir( '/public-keys' ) ) { - $view->mkdir( '/public-keys' ); + if (!$view->is_dir('/public-keys')) { + $view->mkdir('/public-keys'); } - $view->file_put_contents( '/public-keys/' . $recoveryKeyId . '.public.key', $keypair['publicKey'] ); + $view->file_put_contents('/public-keys/' . $recoveryKeyId . '.public.key', $keypair['publicKey']); // Encrypt private key empthy passphrase - $encryptedPrivateKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent( $keypair['privateKey'], $recoveryPassword ); + $encryptedPrivateKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent($keypair['privateKey'], $recoveryPassword); // Save private key - $view->file_put_contents( '/owncloud_private_key/' . $recoveryKeyId . '.private.key', $encryptedPrivateKey ); + $view->file_put_contents('/owncloud_private_key/' . $recoveryKeyId . '.private.key', $encryptedPrivateKey); // create control file which let us check later on if the entered password was correct. - $encryptedControlData = \OCA\Encryption\Crypt::keyEncrypt( "ownCloud", $keypair['publicKey'] ); - if ( !$view->is_dir( '/control-file' ) ) { - $view->mkdir( '/control-file' ); + $encryptedControlData = \OCA\Encryption\Crypt::keyEncrypt("ownCloud", $keypair['publicKey']); + if (!$view->is_dir('/control-file')) { + $view->mkdir('/control-file'); } - $view->file_put_contents( '/control-file/controlfile.enc', $encryptedControlData ); + $view->file_put_contents('/control-file/controlfile.enc', $encryptedControlData); \OC_FileProxy::$enabled = true; // Set recoveryAdmin as enabled - \OC_Appconfig::setValue( 'files_encryption', 'recoveryAdminEnabled', 1 ); + \OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 1); $return = true; } else { // get recovery key and check the password - $util = new \OCA\Encryption\Util( new \OC_FilesystemView( '/' ), \OCP\User::getUser() ); - $return = $util->checkRecoveryPassword( $recoveryPassword ); - if ( $return ) { - \OC_Appconfig::setValue( 'files_encryption', 'recoveryAdminEnabled', 1 ); + $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \OCP\User::getUser()); + $return = $util->checkRecoveryPassword($recoveryPassword); + if ($return) { + \OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 1); } } @@ -162,13 +162,13 @@ class Helper * @param $recoveryPassword * @return bool */ - public static function adminDisableRecovery( $recoveryPassword ) { - $util = new Util( new \OC_FilesystemView( '/' ), \OCP\User::getUser() ); - $return = $util->checkRecoveryPassword( $recoveryPassword ); + public static function adminDisableRecovery($recoveryPassword) { + $util = new Util(new \OC_FilesystemView('/'), \OCP\User::getUser()); + $return = $util->checkRecoveryPassword($recoveryPassword); - if ( $return ) { + if ($return) { // Set recoveryAdmin as disabled - \OC_Appconfig::setValue( 'files_encryption', 'recoveryAdminEnabled', 0 ); + \OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 0); } return $return; diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index aaa2e4ba1b5..49e76b2dc88 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -27,8 +27,7 @@ namespace OCA\Encryption; * @brief Class to manage storage and retrieval of encryption keys * @note Where a method requires a view object, it's root must be '/' */ -class Keymanager -{ +class Keymanager { /** * @brief retrieve the ENCRYPTED private key from a user @@ -38,14 +37,14 @@ class Keymanager * @return string private key or false (hopefully) * @note the key returned by this method must be decrypted before use */ - public static function getPrivateKey( \OC_FilesystemView $view, $user ) { + public static function getPrivateKey(\OC_FilesystemView $view, $user) { $path = '/' . $user . '/' . 'files_encryption' . '/' . $user . '.private.key'; $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $key = $view->file_get_contents( $path ); + $key = $view->file_get_contents($path); \OC_FileProxy::$enabled = $proxyStatus; @@ -58,12 +57,12 @@ class Keymanager * @param $userId * @return string public key or false */ - public static function getPublicKey( \OC_FilesystemView $view, $userId ) { + public static function getPublicKey(\OC_FilesystemView $view, $userId) { $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $result = $view->file_get_contents( '/public-keys/' . $userId . '.public.key' ); + $result = $view->file_get_contents('/public-keys/' . $userId . '.public.key'); \OC_FileProxy::$enabled = $proxyStatus; @@ -77,11 +76,12 @@ class Keymanager * @param $userId * @return array keys: privateKey, publicKey */ - public static function getUserKeys( \OC_FilesystemView $view, $userId ) { + public static function getUserKeys(\OC_FilesystemView $view, $userId) { return array( - 'publicKey' => self::getPublicKey( $view, $userId ) - , 'privateKey' => self::getPrivateKey( $view, $userId ) + 'publicKey' => self::getPublicKey($view, $userId) + , + 'privateKey' => self::getPrivateKey($view, $userId) ); } @@ -92,13 +92,13 @@ class Keymanager * @param array $userIds * @return array of public keys for the specified users */ - public static function getPublicKeys( \OC_FilesystemView $view, array $userIds ) { + public static function getPublicKeys(\OC_FilesystemView $view, array $userIds) { $keys = array(); - foreach ( $userIds as $userId ) { + foreach ($userIds as $userId) { - $keys[$userId] = self::getPublicKey( $view, $userId ); + $keys[$userId] = self::getPublicKey($view, $userId); } @@ -118,40 +118,41 @@ class Keymanager * @note The keyfile is not encrypted here. Client code must * asymmetrically encrypt the keyfile before passing it to this method */ - public static function setFileKey( \OC_FilesystemView $view, $path, $userId, $catfile ) { + public static function setFileKey(\OC_FilesystemView $view, $path, $userId, $catfile) { $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; //here we need the currently logged in user, while userId can be a different user - $util = new Util( $view, \OCP\User::getUser() ); - list( $owner, $filename ) = $util->getUidAndFilename( $path ); + $util = new Util($view, \OCP\User::getUser()); + list($owner, $filename) = $util->getUidAndFilename($path); $basePath = '/' . $owner . '/files_encryption/keyfiles'; - $targetPath = self::keySetPreparation( $view, $filename, $basePath, $owner ); + $targetPath = self::keySetPreparation($view, $filename, $basePath, $owner); - if ( !$view->is_dir( $basePath . '/' . $targetPath ) ) { + if (!$view->is_dir($basePath . '/' . $targetPath)) { // create all parent folders - $info = pathinfo( $basePath . '/' . $targetPath ); - $keyfileFolderName = $view->getLocalFolder( $info['dirname'] ); + $info = pathinfo($basePath . '/' . $targetPath); + $keyfileFolderName = $view->getLocalFolder($info['dirname']); - if ( !file_exists( $keyfileFolderName ) ) { + if (!file_exists($keyfileFolderName)) { - mkdir( $keyfileFolderName, 0750, true ); + mkdir($keyfileFolderName, 0750, true); } } // try reusing key file if part file - if ( self::isPartialFilePath( $targetPath ) ) { + if (self::isPartialFilePath($targetPath)) { - $result = $view->file_put_contents( $basePath . '/' . self::fixPartialFilePath( $targetPath ) . '.key', $catfile ); + $result = $view->file_put_contents( + $basePath . '/' . self::fixPartialFilePath($targetPath) . '.key', $catfile); } else { - $result = $view->file_put_contents( $basePath . '/' . $targetPath . '.key', $catfile ); + $result = $view->file_put_contents($basePath . '/' . $targetPath . '.key', $catfile); } @@ -167,12 +168,12 @@ class Keymanager * @return string File path without .part extension * @note this is needed for reusing keys */ - public static function fixPartialFilePath( $path ) { + public static function fixPartialFilePath($path) { - if ( preg_match( '/\.part$/', $path ) ) { + if (preg_match('/\.part$/', $path)) { - $newLength = strlen( $path ) - 5; - $fPath = substr( $path, 0, $newLength ); + $newLength = strlen($path) - 5; + $fPath = substr($path, 0, $newLength); return $fPath; @@ -189,9 +190,9 @@ class Keymanager * @param string $path Path that may identify a .part file * @return bool */ - public static function isPartialFilePath( $path ) { + public static function isPartialFilePath($path) { - if ( preg_match( '/\.part$/', $path ) ) { + if (preg_match('/\.part$/', $path)) { return true; @@ -213,14 +214,14 @@ class Keymanager * @note The keyfile returned is asymmetrically encrypted. Decryption * of the keyfile must be performed by client code */ - public static function getFileKey( \OC_FilesystemView $view, $userId, $filePath ) { + public static function getFileKey(\OC_FilesystemView $view, $userId, $filePath) { // try reusing key file if part file - if ( self::isPartialFilePath( $filePath ) ) { + if (self::isPartialFilePath($filePath)) { - $result = self::getFileKey( $view, $userId, self::fixPartialFilePath( $filePath ) ); + $result = self::getFileKey($view, $userId, self::fixPartialFilePath($filePath)); - if ( $result ) { + if ($result) { return $result; @@ -228,19 +229,19 @@ class Keymanager } - $util = new Util( $view, \OCP\User::getUser() ); + $util = new Util($view, \OCP\User::getUser()); - list( $owner, $filename ) = $util->getUidAndFilename( $filePath ); - $filePath_f = ltrim( $filename, '/' ); + list($owner, $filename) = $util->getUidAndFilename($filePath); + $filePath_f = ltrim($filename, '/'); $keyfilePath = '/' . $owner . '/files_encryption/keyfiles/' . $filePath_f . '.key'; $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - if ( $view->file_exists( $keyfilePath ) ) { + if ($view->file_exists($keyfilePath)) { - $result = $view->file_get_contents( $keyfilePath ); + $result = $view->file_get_contents($keyfilePath); } else { @@ -264,26 +265,29 @@ class Keymanager * @note $path must be relative to data/user/files. e.g. mydoc.txt NOT * /data/admin/files/mydoc.txt */ - public static function deleteFileKey( \OC_FilesystemView $view, $userId, $path ) { + public static function deleteFileKey(\OC_FilesystemView $view, $userId, $path) { - $trimmed = ltrim( $path, '/' ); + $trimmed = ltrim($path, '/'); $keyPath = '/' . $userId . '/files_encryption/keyfiles/' . $trimmed; $result = false; - if ( $view->is_dir( $keyPath ) ) { + if ($view->is_dir($keyPath)) { - $result = $view->unlink( $keyPath ); + $result = $view->unlink($keyPath); - } else if ( $view->file_exists( $keyPath . '.key' ) ) { + } else { + if ($view->file_exists($keyPath . '.key')) { - $result = $view->unlink( $keyPath . '.key' ); + $result = $view->unlink($keyPath . '.key'); + } } - if ( !$result ) { + if (!$result) { - \OC_Log::write( 'Encryption library', 'Could not delete keyfile; does not exist: "' . $keyPath, \OC_Log::ERROR ); + \OC_Log::write('Encryption library', + 'Could not delete keyfile; does not exist: "' . $keyPath, \OC_Log::ERROR); } @@ -298,19 +302,19 @@ class Keymanager * @note Encryption of the private key must be performed by client code * as no encryption takes place here */ - public static function setPrivateKey( $key ) { + public static function setPrivateKey($key) { $user = \OCP\User::getUser(); - $view = new \OC_FilesystemView( '/' . $user . '/files_encryption' ); + $view = new \OC_FilesystemView('/' . $user . '/files_encryption'); $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - if ( !$view->file_exists( '' ) ) - $view->mkdir( '' ); + if (!$view->file_exists('')) + $view->mkdir(''); - $result = $view->file_put_contents( $user . '.private.key', $key ); + $result = $view->file_put_contents($user . '.private.key', $key); \OC_FileProxy::$enabled = $proxyStatus; @@ -331,21 +335,21 @@ class Keymanager * @note The keyfile is not encrypted here. Client code must * asymmetrically encrypt the keyfile before passing it to this method */ - public static function setShareKey( \OC_FilesystemView $view, $path, $userId, $shareKey ) { + public static function setShareKey(\OC_FilesystemView $view, $path, $userId, $shareKey) { // Here we need the currently logged in user, while userId can be a different user - $util = new Util( $view, \OCP\User::getUser() ); + $util = new Util($view, \OCP\User::getUser()); - list( $owner, $filename ) = $util->getUidAndFilename( $path ); + list($owner, $filename) = $util->getUidAndFilename($path); $basePath = '/' . $owner . '/files_encryption/share-keys'; - $shareKeyPath = self::keySetPreparation( $view, $filename, $basePath, $owner ); + $shareKeyPath = self::keySetPreparation($view, $filename, $basePath, $owner); // try reusing key file if part file - if ( self::isPartialFilePath( $shareKeyPath ) ) { + if (self::isPartialFilePath($shareKeyPath)) { - $writePath = $basePath . '/' . self::fixPartialFilePath( $shareKeyPath ) . '.' . $userId . '.shareKey'; + $writePath = $basePath . '/' . self::fixPartialFilePath($shareKeyPath) . '.' . $userId . '.shareKey'; } else { @@ -356,12 +360,12 @@ class Keymanager $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $result = $view->file_put_contents( $writePath, $shareKey ); + $result = $view->file_put_contents($writePath, $shareKey); \OC_FileProxy::$enabled = $proxyStatus; if ( - is_int( $result ) + is_int($result) && $result > 0 ) { @@ -382,16 +386,16 @@ class Keymanager * @param array $shareKeys * @return bool */ - public static function setShareKeys( \OC_FilesystemView $view, $path, array $shareKeys ) { + public static function setShareKeys(\OC_FilesystemView $view, $path, array $shareKeys) { // $shareKeys must be an array with the following format: // [userId] => [encrypted key] $result = true; - foreach ( $shareKeys as $userId => $shareKey ) { + foreach ($shareKeys as $userId => $shareKey) { - if ( !self::setShareKey( $view, $path, $userId, $shareKey ) ) { + if (!self::setShareKey($view, $path, $userId, $shareKey)) { // If any of the keys are not set, flag false $result = false; @@ -415,14 +419,14 @@ class Keymanager * @note The sharekey returned is encrypted. Decryption * of the keyfile must be performed by client code */ - public static function getShareKey( \OC_FilesystemView $view, $userId, $filePath ) { + public static function getShareKey(\OC_FilesystemView $view, $userId, $filePath) { // try reusing key file if part file - if ( self::isPartialFilePath( $filePath ) ) { + if (self::isPartialFilePath($filePath)) { - $result = self::getShareKey( $view, $userId, self::fixPartialFilePath( $filePath ) ); + $result = self::getShareKey($view, $userId, self::fixPartialFilePath($filePath)); - if ( $result ) { + if ($result) { return $result; @@ -434,14 +438,15 @@ class Keymanager \OC_FileProxy::$enabled = false; //here we need the currently logged in user, while userId can be a different user - $util = new Util( $view, \OCP\User::getUser() ); + $util = new Util($view, \OCP\User::getUser()); - list( $owner, $filename ) = $util->getUidAndFilename( $filePath ); - $shareKeyPath = \OC\Files\Filesystem::normalizePath( '/' . $owner . '/files_encryption/share-keys/' . $filename . '.' . $userId . '.shareKey' ); + list($owner, $filename) = $util->getUidAndFilename($filePath); + $shareKeyPath = \OC\Files\Filesystem::normalizePath( + '/' . $owner . '/files_encryption/share-keys/' . $filename . '.' . $userId . '.shareKey'); - if ( $view->file_exists( $shareKeyPath ) ) { + if ($view->file_exists($shareKeyPath)) { - $result = $view->file_get_contents( $shareKeyPath ); + $result = $view->file_get_contents($shareKeyPath); } else { @@ -461,17 +466,18 @@ class Keymanager * @param string $userId owner of the file * @param string $filePath path to the file, relative to the owners file dir */ - public static function delAllShareKeys( \OC_FilesystemView $view, $userId, $filePath ) { + public static function delAllShareKeys(\OC_FilesystemView $view, $userId, $filePath) { - if ( $view->is_dir( $userId . '/files/' . $filePath ) ) { - $view->unlink( $userId . '/files_encryption/share-keys/' . $filePath ); + if ($view->is_dir($userId . '/files/' . $filePath)) { + $view->unlink($userId . '/files_encryption/share-keys/' . $filePath); } else { - $localKeyPath = $view->getLocalFile( $userId . '/files_encryption/share-keys/' . $filePath ); - $matches = glob( preg_quote( $localKeyPath ) . '*.shareKey' ); - foreach ( $matches as $ma ) { - $result = unlink( $ma ); - if ( !$result ) { - \OC_Log::write( 'Encryption library', 'Keyfile or shareKey could not be deleted for file "' . $filePath . '"', \OC_Log::ERROR ); + $localKeyPath = $view->getLocalFile($userId . '/files_encryption/share-keys/' . $filePath); + $matches = glob(preg_quote($localKeyPath) . '*.shareKey'); + foreach ($matches as $ma) { + $result = unlink($ma); + if (!$result) { + \OC_Log::write('Encryption library', + 'Keyfile or shareKey could not be deleted for file "' . $filePath . '"', \OC_Log::ERROR); } } } @@ -480,29 +486,31 @@ class Keymanager /** * @brief Delete a single user's shareKey for a single file */ - public static function delShareKey( \OC_FilesystemView $view, $userIds, $filePath ) { + public static function delShareKey(\OC_FilesystemView $view, $userIds, $filePath) { $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; //here we need the currently logged in user, while userId can be a different user - $util = new Util( $view, \OCP\User::getUser() ); + $util = new Util($view, \OCP\User::getUser()); - list( $owner, $filename ) = $util->getUidAndFilename( $filePath ); + list($owner, $filename) = $util->getUidAndFilename($filePath); - $shareKeyPath = \OC\Files\Filesystem::normalizePath( '/' . $owner . '/files_encryption/share-keys/' . $filename ); + $shareKeyPath = \OC\Files\Filesystem::normalizePath('/' . $owner . '/files_encryption/share-keys/' . $filename); - if ( $view->is_dir( $shareKeyPath ) ) { + if ($view->is_dir($shareKeyPath)) { - $localPath = \OC\Files\Filesystem::normalizePath( $view->getLocalFolder( $shareKeyPath ) ); - self::recursiveDelShareKeys( $localPath, $userIds ); + $localPath = \OC\Files\Filesystem::normalizePath($view->getLocalFolder($shareKeyPath)); + self::recursiveDelShareKeys($localPath, $userIds); } else { - foreach ( $userIds as $userId ) { + foreach ($userIds as $userId) { - if ( !$view->unlink( $shareKeyPath . '.' . $userId . '.shareKey' ) ) { - \OC_Log::write( 'Encryption library', 'Could not delete shareKey; does not exist: "' . $shareKeyPath . '.' . $userId . '.shareKey"', \OC_Log::ERROR ); + if (!$view->unlink($shareKeyPath . '.' . $userId . '.shareKey')) { + \OC_Log::write('Encryption library', + 'Could not delete shareKey; does not exist: "' . $shareKeyPath . '.' . $userId + . '.shareKey"', \OC_Log::ERROR); } } @@ -517,42 +525,43 @@ class Keymanager * @param string $dir directory * @param array $userIds user ids for which the share keys should be deleted */ - private static function recursiveDelShareKeys( $dir, $userIds ) { - foreach ( $userIds as $userId ) { - $matches = glob( preg_quote( $dir ) . '/*' . preg_quote( '.' . $userId . '.shareKey' ) ); + private static function recursiveDelShareKeys($dir, $userIds) { + foreach ($userIds as $userId) { + $matches = glob(preg_quote($dir) . '/*' . preg_quote('.' . $userId . '.shareKey')); } /** @var $matches array */ - foreach ( $matches as $ma ) { - if ( !unlink( $ma ) ) { - \OC_Log::write( 'Encryption library', 'Could not delete shareKey; does not exist: "' . $ma . '"', \OC_Log::ERROR ); + foreach ($matches as $ma) { + if (!unlink($ma)) { + \OC_Log::write('Encryption library', + 'Could not delete shareKey; does not exist: "' . $ma . '"', \OC_Log::ERROR); } } - $subdirs = $directories = glob( preg_quote( $dir ) . '/*', GLOB_ONLYDIR ); - foreach ( $subdirs as $subdir ) { - self::recursiveDelShareKeys( $subdir, $userIds ); + $subdirs = $directories = glob(preg_quote($dir) . '/*', GLOB_ONLYDIR); + foreach ($subdirs as $subdir) { + self::recursiveDelShareKeys($subdir, $userIds); } } /** * @brief Make preparations to vars and filesystem for saving a keyfile */ - public static function keySetPreparation( \OC_FilesystemView $view, $path, $basePath, $userId ) { + public static function keySetPreparation(\OC_FilesystemView $view, $path, $basePath, $userId) { - $targetPath = ltrim( $path, '/' ); + $targetPath = ltrim($path, '/'); - $path_parts = pathinfo( $targetPath ); + $path_parts = pathinfo($targetPath); // If the file resides within a subdirectory, create it if ( - isset( $path_parts['dirname'] ) - && !$view->file_exists( $basePath . '/' . $path_parts['dirname'] ) + isset($path_parts['dirname']) + && !$view->file_exists($basePath . '/' . $path_parts['dirname']) ) { - $sub_dirs = explode( DIRECTORY_SEPARATOR, $basePath . '/' . $path_parts['dirname'] ); + $sub_dirs = explode(DIRECTORY_SEPARATOR, $basePath . '/' . $path_parts['dirname']); $dir = ''; - foreach ( $sub_dirs as $sub_dir ) { + foreach ($sub_dirs as $sub_dir) { $dir .= '/' . $sub_dir; - if ( !$view->is_dir( $dir ) ) { - $view->mkdir( $dir ); + if (!$view->is_dir($dir)) { + $view->mkdir($dir); } } } diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index eaaeae9b619..0efe0a79118 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -34,8 +34,7 @@ namespace OCA\Encryption; * Class Proxy * @package OCA\Encryption */ -class Proxy extends \OC_FileProxy -{ +class Proxy extends \OC_FileProxy { private static $blackList = null; //mimetypes blacklisted from encryption @@ -48,12 +47,12 @@ class Proxy extends \OC_FileProxy * * Tests if server side encryption is enabled, and file is allowed by blacklists */ - private static function shouldEncrypt( $path ) { + private static function shouldEncrypt($path) { - if ( is_null( self::$enableEncryption ) ) { + if (is_null(self::$enableEncryption)) { if ( - \OCP\Config::getAppValue( 'files_encryption', 'enable_encryption', 'true' ) == 'true' + \OCP\Config::getAppValue('files_encryption', 'enable_encryption', 'true') == 'true' && Crypt::mode() == 'server' ) { @@ -67,27 +66,27 @@ class Proxy extends \OC_FileProxy } - if ( !self::$enableEncryption ) { + if (!self::$enableEncryption) { return false; } - if ( is_null( self::$blackList ) ) { + if (is_null(self::$blackList)) { - self::$blackList = explode( ',', \OCP\Config::getAppValue( 'files_encryption', 'type_blacklist', '' ) ); + self::$blackList = explode(',', \OCP\Config::getAppValue('files_encryption', 'type_blacklist', '')); } - if ( Crypt::isCatfileContent( $path ) ) { + if (Crypt::isCatfileContent($path)) { return true; } - $extension = substr( $path, strrpos( $path, '.' ) + 1 ); + $extension = substr($path, strrpos($path, '.') + 1); - if ( array_search( $extension, self::$blackList ) === false ) { + if (array_search($extension, self::$blackList) === false) { return true; @@ -101,34 +100,34 @@ class Proxy extends \OC_FileProxy * @param $data * @return bool */ - public function preFile_put_contents( $path, &$data ) { + public function preFile_put_contents($path, &$data) { - if ( self::shouldEncrypt( $path ) ) { + if (self::shouldEncrypt($path)) { // Stream put contents should have been converted to fopen - if ( !is_resource( $data ) ) { + if (!is_resource($data)) { $userId = \OCP\USER::getUser(); - $view = new \OC_FilesystemView( '/' ); - $util = new Util( $view, $userId ); - $session = new Session( $view ); + $view = new \OC_FilesystemView('/'); + $util = new Util($view, $userId); + $session = new Session($view); $privateKey = $session->getPrivateKey(); - $filePath = $util->stripUserFilesPath( $path ); + $filePath = $util->stripUserFilesPath($path); // Set the filesize for userland, before encrypting - $size = strlen( $data ); + $size = strlen($data); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // Check if there is an existing key we can reuse - if ( $encKeyfile = Keymanager::getFileKey( $view, $userId, $filePath ) ) { + if ($encKeyfile = Keymanager::getFileKey($view, $userId, $filePath)) { // Fetch shareKey - $shareKey = Keymanager::getShareKey( $view, $userId, $filePath ); + $shareKey = Keymanager::getShareKey($view, $userId, $filePath); // Decrypt the keyfile - $plainKey = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); + $plainKey = Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); } else { @@ -138,37 +137,41 @@ class Proxy extends \OC_FileProxy } // Encrypt data - $encData = Crypt::symmetricEncryptFileContent( $data, $plainKey ); + $encData = Crypt::symmetricEncryptFileContent($data, $plainKey); $sharingEnabled = \OCP\Share::isEnabled(); // if file exists try to get sharing users - if ( $view->file_exists( $path ) ) { - $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $filePath, $userId ); + if ($view->file_exists($path)) { + $uniqueUserIds = $util->getSharingUsersArray($sharingEnabled, $filePath, $userId); } else { $uniqueUserIds[] = $userId; } // Fetch public keys for all users who will share the file - $publicKeys = Keymanager::getPublicKeys( $view, $uniqueUserIds ); + $publicKeys = Keymanager::getPublicKeys($view, $uniqueUserIds); // Encrypt plain keyfile to multiple sharefiles - $multiEncrypted = Crypt::multiKeyEncrypt( $plainKey, $publicKeys ); + $multiEncrypted = Crypt::multiKeyEncrypt($plainKey, $publicKeys); // Save sharekeys to user folders - Keymanager::setShareKeys( $view, $filePath, $multiEncrypted['keys'] ); + Keymanager::setShareKeys($view, $filePath, $multiEncrypted['keys']); // Set encrypted keyfile as common varname $encKey = $multiEncrypted['data']; // Save keyfile for newly encrypted file in parallel directory tree - Keymanager::setFileKey( $view, $filePath, $userId, $encKey ); + Keymanager::setFileKey($view, $filePath, $userId, $encKey); // Replace plain content with encrypted content by reference $data = $encData; // Update the file cache with file info - \OC\Files\Filesystem::putFileInfo( $filePath, array( 'encrypted' => true, 'size' => strlen( $data ), 'unencrypted_size' => $size ), '' ); + \OC\Files\Filesystem::putFileInfo($filePath, array( + 'encrypted' => true, + 'size' => strlen($data), + 'unencrypted_size' => $size + ), ''); // Re-enable proxy - our work is done \OC_FileProxy::$enabled = $proxyStatus; @@ -184,51 +187,51 @@ class Proxy extends \OC_FileProxy * @param string $path Path of file from which has been read * @param string $data Data that has been read from file */ - public function postFile_get_contents( $path, $data ) { + public function postFile_get_contents($path, $data) { $userId = \OCP\USER::getUser(); - $view = new \OC_FilesystemView( '/' ); - $util = new Util( $view, $userId ); + $view = new \OC_FilesystemView('/'); + $util = new Util($view, $userId); - $relPath = $util->stripUserFilesPath( $path ); + $relPath = $util->stripUserFilesPath($path); // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // init session - $session = new Session( $view ); + $session = new Session($view); // If data is a catfile if ( Crypt::mode() == 'server' - && Crypt::isCatfileContent( $data ) + && Crypt::isCatfileContent($data) ) { - $privateKey = $session->getPrivateKey( $userId ); + $privateKey = $session->getPrivateKey($userId); // Get the encrypted keyfile - $encKeyfile = Keymanager::getFileKey( $view, $userId, $relPath ); + $encKeyfile = Keymanager::getFileKey($view, $userId, $relPath); // Attempt to fetch the user's shareKey - $shareKey = Keymanager::getShareKey( $view, $userId, $relPath ); + $shareKey = Keymanager::getShareKey($view, $userId, $relPath); // Decrypt keyfile with shareKey - $plainKeyfile = Crypt::multiKeyDecrypt( $encKeyfile, $shareKey, $privateKey ); + $plainKeyfile = Crypt::multiKeyDecrypt($encKeyfile, $shareKey, $privateKey); - $plainData = Crypt::symmetricDecryptFileContent( $data, $plainKeyfile ); + $plainData = Crypt::symmetricDecryptFileContent($data, $plainKeyfile); } elseif ( Crypt::mode() == 'server' - && isset( $_SESSION['legacyenckey'] ) - && Crypt::isEncryptedMeta( $path ) + && isset($_SESSION['legacyenckey']) + && Crypt::isEncryptedMeta($path) ) { - $plainData = Crypt::legacyDecrypt( $data, $session->getLegacyKey() ); + $plainData = Crypt::legacyDecrypt($data, $session->getLegacyKey()); } \OC_FileProxy::$enabled = $proxyStatus; - if ( !isset( $plainData ) ) { + if (!isset($plainData)) { $plainData = $data; @@ -241,10 +244,10 @@ class Proxy extends \OC_FileProxy /** * @brief When a file is deleted, remove its keyfile also */ - public function preUnlink( $path ) { + public function preUnlink($path) { // let the trashbin handle this - if ( \OCP\App::isEnabled( 'files_trashbin' ) ) { + if (\OCP\App::isEnabled('files_trashbin')) { return true; } @@ -252,23 +255,24 @@ class Proxy extends \OC_FileProxy $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $view = new \OC_FilesystemView( '/' ); + $view = new \OC_FilesystemView('/'); $userId = \OCP\USER::getUser(); - $util = new Util( $view, $userId ); + $util = new Util($view, $userId); // Format path to be relative to user files dir - $relPath = $util->stripUserFilesPath( $path ); + $relPath = $util->stripUserFilesPath($path); - list( $owner, $ownerPath ) = $util->getUidAndFilename( $relPath ); + list($owner, $ownerPath) = $util->getUidAndFilename($relPath); // Delete keyfile & shareKey so it isn't orphaned - if ( !Keymanager::deleteFileKey( $view, $owner, $ownerPath ) ) { - \OC_Log::write( 'Encryption library', 'Keyfile or shareKey could not be deleted for file "' . $ownerPath . '"', \OC_Log::ERROR ); + if (!Keymanager::deleteFileKey($view, $owner, $ownerPath)) { + \OC_Log::write('Encryption library', + 'Keyfile or shareKey could not be deleted for file "' . $ownerPath . '"', \OC_Log::ERROR); } - Keymanager::delAllShareKeys( $view, $owner, $ownerPath ); + Keymanager::delAllShareKeys($view, $owner, $ownerPath); \OC_FileProxy::$enabled = $proxyStatus; @@ -282,8 +286,8 @@ class Proxy extends \OC_FileProxy * @param $path * @return bool */ - public function postTouch( $path ) { - $this->handleFile( $path ); + public function postTouch($path) { + $this->handleFile($path); return true; } @@ -293,20 +297,20 @@ class Proxy extends \OC_FileProxy * @param $result * @return resource */ - public function postFopen( $path, &$result ) { + public function postFopen($path, &$result) { - if ( !$result ) { + if (!$result) { return $result; } // Reformat path for use with OC_FSV - $path_split = explode( '/', $path ); - $path_f = implode( '/', array_slice( $path_split, 3 ) ); + $path_split = explode('/', $path); + $path_f = implode('/', array_slice($path_split, 3)); // FIXME: handling for /userId/cache used by webdav for chunking. The cache chunks are NOT encrypted - if ( count($path_split) >= 2 && $path_split[2] == 'cache' ) { + if (count($path_split) >= 2 && $path_split[2] == 'cache') { return $result; } @@ -314,31 +318,31 @@ class Proxy extends \OC_FileProxy $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $meta = stream_get_meta_data( $result ); + $meta = stream_get_meta_data($result); - $view = new \OC_FilesystemView( '' ); + $view = new \OC_FilesystemView(''); - $util = new Util( $view, \OCP\USER::getUser() ); + $util = new Util($view, \OCP\USER::getUser()); // If file is already encrypted, decrypt using crypto protocol if ( Crypt::mode() == 'server' - && $util->isEncryptedPath( $path ) + && $util->isEncryptedPath($path) ) { // Close the original encrypted file - fclose( $result ); + fclose($result); // Open the file using the crypto stream wrapper // protocol and let it do the decryption work instead - $result = fopen( 'crypt://' . $path_f, $meta['mode'] ); + $result = fopen('crypt://' . $path_f, $meta['mode']); } elseif ( - self::shouldEncrypt( $path ) + self::shouldEncrypt($path) and $meta ['mode'] != 'r' - and $meta['mode'] != 'rb' + and $meta['mode'] != 'rb' ) { - $result = fopen( 'crypt://' . $path_f, $meta['mode'] ); + $result = fopen('crypt://' . $path_f, $meta['mode']); } // Re-enable the proxy @@ -353,17 +357,17 @@ class Proxy extends \OC_FileProxy * @param $data * @return array */ - public function postGetFileInfo( $path, $data ) { + public function postGetFileInfo($path, $data) { // if path is a folder do nothing - if ( is_array( $data ) && array_key_exists( 'size', $data ) ) { + if (is_array($data) && array_key_exists('size', $data)) { // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // get file size - $data['size'] = self::postFileSize( $path, $data['size'] ); + $data['size'] = self::postFileSize($path, $data['size']); // Re-enable the proxy \OC_FileProxy::$enabled = $proxyStatus; @@ -377,51 +381,51 @@ class Proxy extends \OC_FileProxy * @param $size * @return bool */ - public function postFileSize( $path, $size ) { + public function postFileSize($path, $size) { - $view = new \OC_FilesystemView( '/' ); + $view = new \OC_FilesystemView('/'); // if path is a folder do nothing - if ( $view->is_dir( $path ) ) { + if ($view->is_dir($path)) { return $size; } // Reformat path for use with OC_FSV - $path_split = explode( '/', $path ); - $path_f = implode( '/', array_slice( $path_split, 3 ) ); + $path_split = explode('/', $path); + $path_f = implode('/', array_slice($path_split, 3)); // if path is empty we cannot resolve anything - if ( empty( $path_f ) ) { + if (empty($path_f)) { return $size; } $fileInfo = false; // get file info from database/cache if not .part file - if ( !Keymanager::isPartialFilePath( $path ) ) { - $fileInfo = $view->getFileInfo( $path ); + if (!Keymanager::isPartialFilePath($path)) { + $fileInfo = $view->getFileInfo($path); } // if file is encrypted return real file size - if ( is_array( $fileInfo ) && $fileInfo['encrypted'] === true ) { + if (is_array($fileInfo) && $fileInfo['encrypted'] === true) { $size = $fileInfo['unencrypted_size']; } else { // self healing if file was removed from file cache - if ( !is_array( $fileInfo ) ) { + if (!is_array($fileInfo)) { $fileInfo = array(); } $userId = \OCP\User::getUser(); - $util = new Util( $view, $userId ); - $fixSize = $util->getFileSize( $path ); - if ( $fixSize > 0 ) { + $util = new Util($view, $userId); + $fixSize = $util->getFileSize($path); + if ($fixSize > 0) { $size = $fixSize; $fileInfo['encrypted'] = true; $fileInfo['unencrypted_size'] = $size; // put file info if not .part file - if ( !Keymanager::isPartialFilePath( $path_f ) ) { - $view->putFileInfo( $path, $fileInfo ); + if (!Keymanager::isPartialFilePath($path_f)) { + $view->putFileInfo($path, $fileInfo); } } @@ -432,32 +436,32 @@ class Proxy extends \OC_FileProxy /** * @param $path */ - public function handleFile( $path ) { + public function handleFile($path) { // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $view = new \OC_FilesystemView( '/' ); - $session = new Session( $view ); + $view = new \OC_FilesystemView('/'); + $session = new Session($view); $userId = \OCP\User::getUser(); - $util = new Util( $view, $userId ); + $util = new Util($view, $userId); // Reformat path for use with OC_FSV - $path_split = explode( '/', $path ); - $path_f = implode( '/', array_slice( $path_split, 3 ) ); + $path_split = explode('/', $path); + $path_f = implode('/', array_slice($path_split, 3)); // only if file is on 'files' folder fix file size and sharing - if ( count($path_split) >= 2 && $path_split[2] == 'files' && $util->fixFileSize( $path ) ) { + if (count($path_split) >= 2 && $path_split[2] == 'files' && $util->fixFileSize($path)) { // get sharing app state $sharingEnabled = \OCP\Share::isEnabled(); // get users - $usersSharing = $util->getSharingUsersArray( $sharingEnabled, $path_f ); + $usersSharing = $util->getSharingUsersArray($sharingEnabled, $path_f); // update sharing-keys - $util->setSharedFileKeyfiles( $session, $usersSharing, $path_f ); + $util->setSharedFileKeyfiles($session, $usersSharing, $path_f); } \OC_FileProxy::$enabled = $proxyStatus; diff --git a/apps/files_encryption/lib/session.php b/apps/files_encryption/lib/session.php index 2ddad0a15da..ba52a43365f 100644 --- a/apps/files_encryption/lib/session.php +++ b/apps/files_encryption/lib/session.php @@ -26,8 +26,7 @@ namespace OCA\Encryption; * Class for handling encryption related session data */ -class Session -{ +class Session { private $view; @@ -37,26 +36,26 @@ class Session * * @note The ownCloud key pair is used to allow public link sharing even if encryption is enabled */ - public function __construct( $view ) { + public function __construct($view) { $this->view = $view; - if ( !$this->view->is_dir( 'owncloud_private_key' ) ) { + if (!$this->view->is_dir('owncloud_private_key')) { - $this->view->mkdir( 'owncloud_private_key' ); + $this->view->mkdir('owncloud_private_key'); } - $publicShareKeyId = \OC_Appconfig::getValue( 'files_encryption', 'publicShareKeyId' ); + $publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId'); - if ( $publicShareKeyId === null ) { - $publicShareKeyId = 'pubShare_' . substr( md5( time() ), 0, 8 ); - \OC_Appconfig::setValue( 'files_encryption', 'publicShareKeyId', $publicShareKeyId ); + if ($publicShareKeyId === null) { + $publicShareKeyId = 'pubShare_' . substr(md5(time()), 0, 8); + \OC_Appconfig::setValue('files_encryption', 'publicShareKeyId', $publicShareKeyId); } if ( - !$this->view->file_exists( "/public-keys/" . $publicShareKeyId . ".public.key" ) - || !$this->view->file_exists( "/owncloud_private_key/" . $publicShareKeyId . ".private.key" ) + !$this->view->file_exists("/public-keys/" . $publicShareKeyId . ".public.key") + || !$this->view->file_exists("/owncloud_private_key/" . $publicShareKeyId . ".private.key") ) { $keypair = Crypt::createKeypair(); @@ -67,33 +66,35 @@ class Session // Save public key - if ( !$view->is_dir( '/public-keys' ) ) { - $view->mkdir( '/public-keys' ); + if (!$view->is_dir('/public-keys')) { + $view->mkdir('/public-keys'); } - $this->view->file_put_contents( '/public-keys/' . $publicShareKeyId . '.public.key', $keypair['publicKey'] ); + $this->view->file_put_contents('/public-keys/' . $publicShareKeyId . '.public.key', $keypair['publicKey']); // Encrypt private key empty passphrase - $encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $keypair['privateKey'], '' ); + $encryptedPrivateKey = Crypt::symmetricEncryptFileContent($keypair['privateKey'], ''); // Save private key - $this->view->file_put_contents( '/owncloud_private_key/' . $publicShareKeyId . '.private.key', $encryptedPrivateKey ); + $this->view->file_put_contents( + '/owncloud_private_key/' . $publicShareKeyId . '.private.key', $encryptedPrivateKey); \OC_FileProxy::$enabled = $proxyStatus; } - if ( \OCP\USER::getUser() === false || - ( isset( $_GET['service'] ) && $_GET['service'] == 'files' && - isset( $_GET['t'] ) ) + if (\OCP\USER::getUser() === false + || (isset($_GET['service']) && $_GET['service'] == 'files' + && isset($_GET['t'])) ) { // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; - $encryptedKey = $this->view->file_get_contents( '/owncloud_private_key/' . $publicShareKeyId . '.private.key' ); - $privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, '' ); - $this->setPrivateKey( $privateKey ); + $encryptedKey = $this->view->file_get_contents( + '/owncloud_private_key/' . $publicShareKeyId . '.private.key'); + $privateKey = Crypt::symmetricDecryptFileContent($encryptedKey, ''); + $this->setPrivateKey($privateKey); \OC_FileProxy::$enabled = $proxyStatus; } @@ -104,7 +105,7 @@ class Session * @param string $privateKey * @return bool */ - public function setPrivateKey( $privateKey ) { + public function setPrivateKey($privateKey) { $_SESSION['privateKey'] = $privateKey; @@ -120,8 +121,8 @@ class Session public function getPrivateKey() { if ( - isset( $_SESSION['privateKey'] ) - && !empty( $_SESSION['privateKey'] ) + isset($_SESSION['privateKey']) + && !empty($_SESSION['privateKey']) ) { return $_SESSION['privateKey']; @@ -139,7 +140,7 @@ class Session * @param $legacyKey * @return bool */ - public function setLegacyKey( $legacyKey ) { + public function setLegacyKey($legacyKey) { $_SESSION['legacyKey'] = $legacyKey; @@ -154,8 +155,8 @@ class Session public function getLegacyKey() { if ( - isset( $_SESSION['legacyKey'] ) - && !empty( $_SESSION['legacyKey'] ) + isset($_SESSION['legacyKey']) + && !empty($_SESSION['legacyKey']) ) { return $_SESSION['legacyKey']; diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index fa9df02f085..88a06c09654 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -48,8 +48,7 @@ namespace OCA\Encryption; * previous version deleted, this is handled by OC\Files\View, and thus the * encryption proxies are used and keyfiles deleted. */ -class Stream -{ +class Stream { private $plainKey; private $encKeyfiles; @@ -77,18 +76,18 @@ class Stream * @param $opened_path * @return bool */ - public function stream_open( $path, $mode, $options, &$opened_path ) { + public function stream_open($path, $mode, $options, &$opened_path) { - if ( !isset( $this->rootView ) ) { - $this->rootView = new \OC_FilesystemView( '/' ); + if (!isset($this->rootView)) { + $this->rootView = new \OC_FilesystemView('/'); } - $util = new Util( $this->rootView, \OCP\USER::getUser() ); + $util = new Util($this->rootView, \OCP\USER::getUser()); $this->userId = $util->getUserId(); // Strip identifier text from path, this gives us the path relative to data//files - $this->relPath = \OC\Files\Filesystem::normalizePath( str_replace( 'crypt://', '', $path ) ); + $this->relPath = \OC\Files\Filesystem::normalizePath(str_replace('crypt://', '', $path)); // rawPath is relative to the data directory $this->rawPath = $util->getUserFilesDir() . $this->relPath; @@ -110,25 +109,25 @@ class Stream } else { - $this->size = $this->rootView->filesize( $this->rawPath, $mode ); + $this->size = $this->rootView->filesize($this->rawPath, $mode); } - $this->handle = $this->rootView->fopen( $this->rawPath, $mode ); + $this->handle = $this->rootView->fopen($this->rawPath, $mode); \OC_FileProxy::$enabled = $proxyStatus; - if ( !is_resource( $this->handle ) ) { + if (!is_resource($this->handle)) { - \OCP\Util::writeLog( 'files_encryption', 'failed to open file "' . $this->rawPath . '"', \OCP\Util::ERROR ); + \OCP\Util::writeLog('files_encryption', 'failed to open file "' . $this->rawPath . '"', \OCP\Util::ERROR); } else { - $this->meta = stream_get_meta_data( $this->handle ); + $this->meta = stream_get_meta_data($this->handle); } - return is_resource( $this->handle ); + return is_resource($this->handle); } @@ -136,11 +135,11 @@ class Stream * @param $offset * @param int $whence */ - public function stream_seek( $offset, $whence = SEEK_SET ) { + public function stream_seek($offset, $whence = SEEK_SET) { $this->flush(); - fseek( $this->handle, $offset, $whence ); + fseek($this->handle, $offset, $whence); } @@ -149,36 +148,37 @@ class Stream * @return bool|string * @throws \Exception */ - public function stream_read( $count ) { + public function stream_read($count) { $this->writeCache = ''; - if ( $count != 8192 ) { + if ($count != 8192) { // $count will always be 8192 https://bugs.php.net/bug.php?id=21641 // This makes this function a lot simpler, but will break this class if the above 'bug' gets 'fixed' - \OCP\Util::writeLog( 'files_encryption', 'PHP "bug" 21641 no longer holds, decryption system requires refactoring', \OCP\Util::FATAL ); + \OCP\Util::writeLog('files_encryption', 'PHP "bug" 21641 no longer holds, decryption system requires refactoring', \OCP\Util::FATAL); die(); } // Get the data from the file handle - $data = fread( $this->handle, 8192 ); + $data = fread($this->handle, 8192); $result = ''; - if ( strlen( $data ) ) { + if (strlen($data)) { - if ( !$this->getKey() ) { + if (!$this->getKey()) { // Error! We don't have a key to decrypt the file with - throw new \Exception( 'Encryption key not found for "' . $this->rawPath . '" during attempted read via stream' ); + throw new \Exception( + 'Encryption key not found for "' . $this->rawPath . '" during attempted read via stream'); } // Decrypt data - $result = Crypt::symmetricDecryptFileContent( $data, $this->plainKey ); + $result = Crypt::symmetricDecryptFileContent($data, $this->plainKey); } @@ -192,10 +192,10 @@ class Stream * @param string $key key to use for encryption * @return string encrypted data on success, false on failure */ - public function preWriteEncrypt( $plainData, $key ) { + public function preWriteEncrypt($plainData, $key) { // Encrypt data to 'catfile', which includes IV - if ( $encrypted = Crypt::symmetricEncryptFileContent( $plainData, $key ) ) { + if ($encrypted = Crypt::symmetricEncryptFileContent($plainData, $key)) { return $encrypted; @@ -215,7 +215,7 @@ class Stream public function getKey() { // Check if key is already set - if ( isset( $this->plainKey ) && isset( $this->encKeyfile ) ) { + if (isset($this->plainKey) && isset($this->encKeyfile)) { return true; @@ -223,18 +223,18 @@ class Stream // Fetch and decrypt keyfile // Fetch existing keyfile - $this->encKeyfile = Keymanager::getFileKey( $this->rootView, $this->userId, $this->relPath ); + $this->encKeyfile = Keymanager::getFileKey($this->rootView, $this->userId, $this->relPath); // If a keyfile already exists - if ( $this->encKeyfile ) { + if ($this->encKeyfile) { - $session = new Session( $this->rootView ); + $session = new Session($this->rootView); - $privateKey = $session->getPrivateKey( $this->userId ); + $privateKey = $session->getPrivateKey($this->userId); - $shareKey = Keymanager::getShareKey( $this->rootView, $this->userId, $this->relPath ); + $shareKey = Keymanager::getShareKey($this->rootView, $this->userId, $this->relPath); - $this->plainKey = Crypt::multiKeyDecrypt( $this->encKeyfile, $shareKey, $privateKey ); + $this->plainKey = Crypt::multiKeyDecrypt($this->encKeyfile, $shareKey, $privateKey); return true; @@ -255,7 +255,7 @@ class Stream * @note Padding is added to each encrypted block to ensure that the resulting block is exactly 8192 bytes. This is removed during stream_read * @note PHP automatically updates the file pointer after writing data to reflect it's length. There is generally no need to update the poitner manually using fseek */ - public function stream_write( $data ) { + public function stream_write($data) { // Disable the file proxies so that encryption is not // automatically attempted when the file is written to disk - @@ -265,16 +265,16 @@ class Stream \OC_FileProxy::$enabled = false; // Get the length of the unencrypted data that we are handling - $length = strlen( $data ); + $length = strlen($data); // Find out where we are up to in the writing of data to the // file - $pointer = ftell( $this->handle ); + $pointer = ftell($this->handle); // Get / generate the keyfile for the file we're handling // If we're writing a new file (not overwriting an existing // one), save the newly generated keyfile - if ( !$this->getKey() ) { + if (!$this->getKey()) { $this->plainKey = Crypt::generateKey(); @@ -282,7 +282,7 @@ class Stream // If extra data is left over from the last round, make sure it // is integrated into the next 6126 / 8192 block - if ( $this->writeCache ) { + if ($this->writeCache) { // Concat writeCache to start of $data $data = $this->writeCache . $data; @@ -294,15 +294,15 @@ class Stream } // While there still remains some data to be processed & written - while ( strlen( $data ) > 0 ) { + while (strlen($data) > 0) { // Remaining length for this iteration, not of the // entire file (may be greater than 8192 bytes) - $remainingLength = strlen( $data ); + $remainingLength = strlen($data); // If data remaining to be written is less than the // size of 1 6126 byte block - if ( $remainingLength < 6126 ) { + if ($remainingLength < 6126) { // Set writeCache to contents of $data // The writeCache will be carried over to the @@ -320,25 +320,25 @@ class Stream } else { // Read the chunk from the start of $data - $chunk = substr( $data, 0, 6126 ); + $chunk = substr($data, 0, 6126); - $encrypted = $this->preWriteEncrypt( $chunk, $this->plainKey ); + $encrypted = $this->preWriteEncrypt($chunk, $this->plainKey); // Write the data chunk to disk. This will be // attended to the last data chunk if the file // being handled totals more than 6126 bytes - fwrite( $this->handle, $encrypted ); + fwrite($this->handle, $encrypted); // Remove the chunk we just processed from // $data, leaving only unprocessed data in $data // var, for handling on the next round - $data = substr( $data, 6126 ); + $data = substr($data, 6126); } } - $this->size = max( $this->size, $pointer + $length ); + $this->size = max($this->size, $pointer + $length); $this->unencryptedSize += $length; \OC_FileProxy::$enabled = $proxyStatus; @@ -353,17 +353,17 @@ class Stream * @param $arg1 * @param $arg2 */ - public function stream_set_option( $option, $arg1, $arg2 ) { + public function stream_set_option($option, $arg1, $arg2) { $return = false; - switch ( $option ) { + switch ($option) { case STREAM_OPTION_BLOCKING: - $return = stream_set_blocking( $this->handle, $arg1 ); + $return = stream_set_blocking($this->handle, $arg1); break; case STREAM_OPTION_READ_TIMEOUT: - $return = stream_set_timeout( $this->handle, $arg1, $arg2 ); + $return = stream_set_timeout($this->handle, $arg1, $arg2); break; case STREAM_OPTION_WRITE_BUFFER: - $return = stream_set_write_buffer( $this->handle, $arg1 ); + $return = stream_set_write_buffer($this->handle, $arg1); } return $return; @@ -373,14 +373,14 @@ class Stream * @return array */ public function stream_stat() { - return fstat( $this->handle ); + return fstat($this->handle); } /** * @param $mode */ - public function stream_lock( $mode ) { - return flock( $this->handle, $mode ); + public function stream_lock($mode) { + return flock($this->handle, $mode); } /** @@ -388,7 +388,7 @@ class Stream */ public function stream_flush() { - return fflush( $this->handle ); + return fflush($this->handle); // Not a typo: http://php.net/manual/en/function.fflush.php } @@ -397,19 +397,19 @@ class Stream * @return bool */ public function stream_eof() { - return feof( $this->handle ); + return feof($this->handle); } private function flush() { - if ( $this->writeCache ) { + if ($this->writeCache) { // Set keyfile property for file in question $this->getKey(); - $encrypted = $this->preWriteEncrypt( $this->writeCache, $this->plainKey ); + $encrypted = $this->preWriteEncrypt($this->writeCache, $this->plainKey); - fwrite( $this->handle, $encrypted ); + fwrite($this->handle, $encrypted); $this->writeCache = ''; @@ -427,40 +427,40 @@ class Stream if ( $this->meta['mode'] != 'r' and $this->meta['mode'] != 'rb' - and $this->size > 0 + and $this->size > 0 ) { // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; // Fetch user's public key - $this->publicKey = Keymanager::getPublicKey( $this->rootView, $this->userId ); + $this->publicKey = Keymanager::getPublicKey($this->rootView, $this->userId); // Check if OC sharing api is enabled $sharingEnabled = \OCP\Share::isEnabled(); - $util = new Util( $this->rootView, $this->userId ); + $util = new Util($this->rootView, $this->userId); // Get all users sharing the file includes current user - $uniqueUserIds = $util->getSharingUsersArray( $sharingEnabled, $this->relPath, $this->userId ); + $uniqueUserIds = $util->getSharingUsersArray($sharingEnabled, $this->relPath, $this->userId); // Fetch public keys for all sharing users - $publicKeys = Keymanager::getPublicKeys( $this->rootView, $uniqueUserIds ); + $publicKeys = Keymanager::getPublicKeys($this->rootView, $uniqueUserIds); // Encrypt enc key for all sharing users - $this->encKeyfiles = Crypt::multiKeyEncrypt( $this->plainKey, $publicKeys ); + $this->encKeyfiles = Crypt::multiKeyEncrypt($this->plainKey, $publicKeys); - $view = new \OC_FilesystemView( '/' ); + $view = new \OC_FilesystemView('/'); // Save the new encrypted file key - Keymanager::setFileKey( $this->rootView, $this->relPath, $this->userId, $this->encKeyfiles['data'] ); + Keymanager::setFileKey($this->rootView, $this->relPath, $this->userId, $this->encKeyfiles['data']); // Save the sharekeys - Keymanager::setShareKeys( $view, $this->relPath, $this->encKeyfiles['keys'] ); + Keymanager::setShareKeys($view, $this->relPath, $this->encKeyfiles['keys']); // get file info - $fileInfo = $view->getFileInfo( $this->rawPath ); - if ( !is_array( $fileInfo ) ) { + $fileInfo = $view->getFileInfo($this->rawPath); + if (!is_array($fileInfo)) { $fileInfo = array(); } @@ -473,10 +473,10 @@ class Stream $fileInfo['unencrypted_size'] = $this->unencryptedSize; // set fileinfo - $view->putFileInfo( $this->rawPath, $fileInfo ); + $view->putFileInfo($this->rawPath, $fileInfo); } - return fclose( $this->handle ); + return fclose($this->handle); } -- cgit v1.2.3 From 8b355788333f9078066b3f877c4e5c1c4001597c Mon Sep 17 00:00:00 2001 From: Björn Schießle Date: Mon, 27 May 2013 12:02:27 +0200 Subject: fix migration from old to new encryption --- apps/files_encryption/hooks/hooks.php | 2 -- apps/files_encryption/lib/crypt.php | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 2066300a163..07072fb8c44 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -81,8 +81,6 @@ class Hooks { $session->setLegacyKey( $plainLegacyKey ); } - - $publicKey = Keymanager::getPublicKey( $view, $params['uid'] ); // Encrypt existing user files: // This serves to upgrade old versions of the encryption diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index f5b7a8a0a40..009a648016b 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -613,7 +613,7 @@ class Crypt $decrypted = $bf->decrypt( $content ); - return rtrim( $decrypted, "\0" );; + return $decrypted; } -- cgit v1.2.3 From df22a7c4954acb67c9365f9900bd7a3f70f13487 Mon Sep 17 00:00:00 2001 From: Björn Schießle Date: Mon, 27 May 2013 12:21:39 +0200 Subject: make legacyDecrypt() private als always call legacyBlockDecrypt() from other classes --- apps/files_encryption/hooks/hooks.php | 2 +- apps/files_encryption/lib/crypt.php | 2 +- apps/files_encryption/lib/proxy.php | 2 +- apps/files_encryption/tests/crypt.php | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 07072fb8c44..9af1f2c6459 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -76,7 +76,7 @@ class Hooks { && $encLegacyKey = $userView->file_get_contents( 'encryption.key' ) ) { - $plainLegacyKey = Crypt::legacyDecrypt( $encLegacyKey, $params['password'] ); + $plainLegacyKey = Crypt::legacyBlockDecrypt( $encLegacyKey, $params['password'] ); $session->setLegacyKey( $plainLegacyKey ); diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 009a648016b..9345712a455 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -607,7 +607,7 @@ class Crypt * * This function decrypts an content */ - public static function legacyDecrypt( $content, $passphrase = '' ) { + private static function legacyDecrypt( $content, $passphrase = '' ) { $bf = self::getBlowfish( $passphrase ); diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index eaaeae9b619..d9520810bf4 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -223,7 +223,7 @@ class Proxy extends \OC_FileProxy && isset( $_SESSION['legacyenckey'] ) && Crypt::isEncryptedMeta( $path ) ) { - $plainData = Crypt::legacyDecrypt( $data, $session->getLegacyKey() ); + $plainData = Crypt::legacyBlockDecrypt( $data, $session->getLegacyKey() ); } \OC_FileProxy::$enabled = $proxyStatus; diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 74b4252a1d4..e9f155e2649 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -515,7 +515,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { */ function testLegacyDecryptShort($crypted) { - $decrypted = Encryption\Crypt::legacyDecrypt($crypted, $this->pass); + $decrypted = Encryption\Crypt::legacyBlockDecrypt($crypted, $this->pass); $this->assertEquals($this->dataShort, $decrypted); @@ -543,7 +543,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { */ function testLegacyDecryptLong($crypted) { - $decrypted = Encryption\Crypt::legacyDecrypt($crypted, $this->pass); + $decrypted = Encryption\Crypt::legacyBlockDecrypt($crypted, $this->pass); $this->assertEquals($this->dataLong, $decrypted); @@ -560,7 +560,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $encKey = Encryption\Crypt::legacyCreateKey($this->pass); // Decrypt key - $key = Encryption\Crypt::legacyDecrypt($encKey, $this->pass); + $key = Encryption\Crypt::legacyBlockDecrypt($encKey, $this->pass); $this->assertTrue(is_numeric($key)); -- cgit v1.2.3 From 4c05259ccfbb7e2f0083794172eaa7c06f4b2592 Mon Sep 17 00:00:00 2001 From: Björn Schießle Date: Mon, 27 May 2013 13:47:03 +0200 Subject: legacyBlockDecryprt() needs to be public --- apps/files_encryption/lib/crypt.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 9345712a455..33f9fc2060d 100755 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -623,7 +623,7 @@ class Crypt * @param int $maxLength * @return string */ - private static function legacyBlockDecrypt( $data, $key = '', $maxLength = 0 ) { + public static function legacyBlockDecrypt( $data, $key = '', $maxLength = 0 ) { $result = ''; while ( strlen( $data ) ) { $result .= self::legacyDecrypt( substr( $data, 0, 8192 ), $key ); -- cgit v1.2.3 From c81e34ef899617d4c0280bd3b19d5ef7da31d158 Mon Sep 17 00:00:00 2001 From: Björn Schießle Date: Mon, 27 May 2013 18:03:29 +0200 Subject: replace == with === --- apps/files_encryption/ajax/adminrecovery.php | 2 +- apps/files_encryption/ajax/userrecovery.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/files_encryption/ajax/adminrecovery.php b/apps/files_encryption/ajax/adminrecovery.php index d532bb62b64..9375e27913a 100644 --- a/apps/files_encryption/ajax/adminrecovery.php +++ b/apps/files_encryption/ajax/adminrecovery.php @@ -21,7 +21,7 @@ $return = false; $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId'); -if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] == 1) { +if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] === "1") { $return = \OCA\Encryption\Helper::adminEnableRecovery($recoveryKeyId, $_POST['recoveryPassword']); $action = "enable"; diff --git a/apps/files_encryption/ajax/userrecovery.php b/apps/files_encryption/ajax/userrecovery.php index 4b364121e33..4b971f2afbb 100644 --- a/apps/files_encryption/ajax/userrecovery.php +++ b/apps/files_encryption/ajax/userrecovery.php @@ -15,7 +15,7 @@ use OCA\Encryption; if ( isset($_POST['userEnableRecovery']) - && (0 == $_POST['userEnableRecovery'] || 1 == $_POST['userEnableRecovery']) + && (0 == $_POST['userEnableRecovery'] || "1" === $_POST['userEnableRecovery']) ) { $userId = \OCP\USER::getUser(); @@ -25,7 +25,7 @@ if ( // Save recovery preference to DB $return = $util->setRecoveryForUser($_POST['userEnableRecovery']); - if ($_POST['userEnableRecovery'] == "1") { + if ($_POST['userEnableRecovery'] === "1") { $util->addRecoveryKeys(); } else { $util->removeRecoveryKeys(); -- cgit v1.2.3 From 3001db6b50c44d78b9f3eaf947b9a680c8b81dc5 Mon Sep 17 00:00:00 2001 From: kondou Date: Mon, 27 May 2013 20:13:13 +0200 Subject: Update jquery to 1.10.0 & add jquery-migrate 1.2.1 --- core/js/jquery-1.10.0.min.js | 6 ++++++ core/js/jquery-1.7.2.min.js | 4 ---- core/js/jquery-migrate-1.2.1.min.js | 2 ++ lib/base.php | 3 ++- 4 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 core/js/jquery-1.10.0.min.js delete mode 100644 core/js/jquery-1.7.2.min.js create mode 100644 core/js/jquery-migrate-1.2.1.min.js diff --git a/core/js/jquery-1.10.0.min.js b/core/js/jquery-1.10.0.min.js new file mode 100644 index 00000000000..01c688164ad --- /dev/null +++ b/core/js/jquery-1.10.0.min.js @@ -0,0 +1,6 @@ +/*! jQuery v1.10.0 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license +//@ sourceMappingURL=jquery-1.10.0.min.map +*/ +(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.0",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=lt(),k=lt(),E=lt(),S=!1,A=function(){return 0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=bt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+xt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return At(e.replace(z,"$1"),t,n,i)}function st(e){return K.test(e+"")}function lt(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function ut(e){return e[b]=!0,e}function ct(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function pt(e,t,n){e=e.split("|");var r,i=e.length,a=n?null:t;while(i--)(r=o.attrHandle[e[i]])&&r!==t||(o.attrHandle[e[i]]=a)}function ft(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:e[t]===!0?t.toLowerCase():null}function dt(e,t){return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}function ht(e){return"input"===e.nodeName.toLowerCase()?e.defaultValue:t}function gt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function mt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function yt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function vt(e){return ut(function(t){return t=+t,ut(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),r.attributes=ct(function(e){return e.innerHTML="",pt("type|href|height|width",dt,"#"===e.firstChild.getAttribute("href")),pt(B,ft,null==e.getAttribute("disabled")),e.className="i",!e.getAttribute("className")}),r.input=ct(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}),pt("value",ht,r.attributes&&r.input),r.getElementsByTagName=ct(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ct(function(e){return e.innerHTML="
",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ct(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=st(n.querySelectorAll))&&(ct(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ct(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=st(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ct(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=st(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},r.sortDetached=ct(function(e){return 1&e.compareDocumentPosition(n.createElement("div"))}),A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return gt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?gt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:ut,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=bt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?ut(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ut(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?ut(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ut(function(e){return function(t){return at(e,t).length>0}}),contains:ut(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:ut(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:vt(function(){return[0]}),last:vt(function(e,t){return[t-1]}),eq:vt(function(e,t,n){return[0>n?n+t:n]}),even:vt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:vt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:vt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:vt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=mt(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=yt(n);function bt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function xt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function wt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function Tt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Ct(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function Nt(e,t,n,r,i,o){return r&&!r[b]&&(r=Nt(r)),i&&!i[b]&&(i=Nt(i,o)),ut(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||St(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:Ct(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=Ct(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=Ct(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function kt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=wt(function(e){return e===t},s,!0),p=wt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[wt(Tt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return Nt(l>1&&Tt(f),l>1&&xt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&kt(e.slice(l,r)),i>r&&kt(e=e.slice(r)),i>r&&xt(e))}f.push(n)}return Tt(f)}function Et(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=Ct(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?ut(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=bt(e)),n=t.length;while(n--)o=kt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Et(i,r))}return o};function St(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function At(e,t,n,i){var a,s,u,c,p,f=bt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&xt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}o.pseudos.nth=o.pseudos.eq;function jt(){}jt.prototype=o.filters=o.pseudos,o.setFilters=new jt,r.sortStable=b.split("").sort(A).join("")===b,p(),[0,0].sort(A),r.detectDuplicates=S,x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!l||i&&!u||(n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
a",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="
t
",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s; +if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=x(this),l=t,u=e.match(T)||[];while(o=u[a++])l=r?l:!s.hasClass(o),s[l?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X
","
"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}) +}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("