Passed
Push — master ( 792c32...9ed106 )
by Roeland
23:07 queued 12:00
created
core/templates/403.php 1 patch
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -1,11 +1,11 @@
 block discarded – undo
1 1
 <?php
2 2
 // @codeCoverageIgnoreStart
3 3
 if(!isset($_)) {//standalone  page is not supported anymore - redirect to /
4
-	require_once '../../lib/base.php';
4
+    require_once '../../lib/base.php';
5 5
 
6
-	$urlGenerator = \OC::$server->getURLGenerator();
7
-	header('Location: ' . $urlGenerator->getAbsoluteURL('/'));
8
-	exit;
6
+    $urlGenerator = \OC::$server->getURLGenerator();
7
+    header('Location: ' . $urlGenerator->getAbsoluteURL('/'));
8
+    exit;
9 9
 }
10 10
 // @codeCoverageIgnoreEnd
11 11
 ?>
Please login to merge, or discard this patch.
core/templates/404.php 1 patch
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -4,11 +4,11 @@
 block discarded – undo
4 4
 /** @var $theme OCP\Defaults */
5 5
 // @codeCoverageIgnoreStart
6 6
 if(!isset($_)) {//standalone  page is not supported anymore - redirect to /
7
-	require_once '../../lib/base.php';
7
+    require_once '../../lib/base.php';
8 8
 
9
-	$urlGenerator = \OC::$server->getURLGenerator();
10
-	header('Location: ' . $urlGenerator->getAbsoluteURL('/'));
11
-	exit;
9
+    $urlGenerator = \OC::$server->getURLGenerator();
10
+    header('Location: ' . $urlGenerator->getAbsoluteURL('/'));
11
+    exit;
12 12
 }
13 13
 // @codeCoverageIgnoreEnd
14 14
 ?>
Please login to merge, or discard this patch.
lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php 1 patch
Indentation   +40 added lines, -40 removed lines patch added patch discarded remove patch
@@ -35,49 +35,49 @@
 block discarded – undo
35 35
  * @package OC\AppFramework\Middleware\Security
36 36
  */
37 37
 class BruteForceMiddleware extends Middleware {
38
-	/** @var ControllerMethodReflector */
39
-	private $reflector;
40
-	/** @var Throttler */
41
-	private $throttler;
42
-	/** @var IRequest */
43
-	private $request;
38
+    /** @var ControllerMethodReflector */
39
+    private $reflector;
40
+    /** @var Throttler */
41
+    private $throttler;
42
+    /** @var IRequest */
43
+    private $request;
44 44
 
45
-	/**
46
-	 * @param ControllerMethodReflector $controllerMethodReflector
47
-	 * @param Throttler $throttler
48
-	 * @param IRequest $request
49
-	 */
50
-	public function __construct(ControllerMethodReflector $controllerMethodReflector,
51
-								Throttler $throttler,
52
-								IRequest $request) {
53
-		$this->reflector = $controllerMethodReflector;
54
-		$this->throttler = $throttler;
55
-		$this->request = $request;
56
-	}
45
+    /**
46
+     * @param ControllerMethodReflector $controllerMethodReflector
47
+     * @param Throttler $throttler
48
+     * @param IRequest $request
49
+     */
50
+    public function __construct(ControllerMethodReflector $controllerMethodReflector,
51
+                                Throttler $throttler,
52
+                                IRequest $request) {
53
+        $this->reflector = $controllerMethodReflector;
54
+        $this->throttler = $throttler;
55
+        $this->request = $request;
56
+    }
57 57
 
58
-	/**
59
-	 * {@inheritDoc}
60
-	 */
61
-	public function beforeController($controller, $methodName) {
62
-		parent::beforeController($controller, $methodName);
58
+    /**
59
+     * {@inheritDoc}
60
+     */
61
+    public function beforeController($controller, $methodName) {
62
+        parent::beforeController($controller, $methodName);
63 63
 
64
-		if($this->reflector->hasAnnotation('BruteForceProtection')) {
65
-			$action = $this->reflector->getAnnotationParameter('BruteForceProtection', 'action');
66
-			$this->throttler->sleepDelay($this->request->getRemoteAddress(), $action);
67
-		}
68
-	}
64
+        if($this->reflector->hasAnnotation('BruteForceProtection')) {
65
+            $action = $this->reflector->getAnnotationParameter('BruteForceProtection', 'action');
66
+            $this->throttler->sleepDelay($this->request->getRemoteAddress(), $action);
67
+        }
68
+    }
69 69
 
70
-	/**
71
-	 * {@inheritDoc}
72
-	 */
73
-	public function afterController($controller, $methodName, Response $response) {
74
-		if($this->reflector->hasAnnotation('BruteForceProtection') && $response->isThrottled()) {
75
-			$action = $this->reflector->getAnnotationParameter('BruteForceProtection', 'action');
76
-			$ip = $this->request->getRemoteAddress();
77
-			$this->throttler->sleepDelay($ip, $action);
78
-			$this->throttler->registerAttempt($action, $ip, $response->getThrottleMetadata());
79
-		}
70
+    /**
71
+     * {@inheritDoc}
72
+     */
73
+    public function afterController($controller, $methodName, Response $response) {
74
+        if($this->reflector->hasAnnotation('BruteForceProtection') && $response->isThrottled()) {
75
+            $action = $this->reflector->getAnnotationParameter('BruteForceProtection', 'action');
76
+            $ip = $this->request->getRemoteAddress();
77
+            $this->throttler->sleepDelay($ip, $action);
78
+            $this->throttler->registerAttempt($action, $ip, $response->getThrottleMetadata());
79
+        }
80 80
 
81
-		return parent::afterController($controller, $methodName, $response);
82
-	}
81
+        return parent::afterController($controller, $methodName, $response);
82
+    }
83 83
 }
Please login to merge, or discard this patch.
lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php 1 patch
Indentation   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -24,7 +24,7 @@
 block discarded – undo
24 24
 use OC\DB\QueryBuilder\QueryFunction;
25 25
 
26 26
 class PgSqlFunctionBuilder extends FunctionBuilder {
27
-	public function concat($x, $y) {
28
-		return new QueryFunction('(' . $this->helper->quoteColumnName($x) . ' || ' . $this->helper->quoteColumnName($y) . ')');
29
-	}
27
+    public function concat($x, $y) {
28
+        return new QueryFunction('(' . $this->helper->quoteColumnName($x) . ' || ' . $this->helper->quoteColumnName($y) . ')');
29
+    }
30 30
 }
Please login to merge, or discard this patch.
apps/files_sharing/lib/Activity/Settings/RemoteShare.php 1 patch
Indentation   +59 added lines, -59 removed lines patch added patch discarded remove patch
@@ -27,72 +27,72 @@
 block discarded – undo
27 27
 
28 28
 class RemoteShare implements ISetting {
29 29
 
30
-	/** @var IL10N */
31
-	protected $l;
30
+    /** @var IL10N */
31
+    protected $l;
32 32
 
33
-	/**
34
-	 * @param IL10N $l
35
-	 */
36
-	public function __construct(IL10N $l) {
37
-		$this->l = $l;
38
-	}
33
+    /**
34
+     * @param IL10N $l
35
+     */
36
+    public function __construct(IL10N $l) {
37
+        $this->l = $l;
38
+    }
39 39
 
40
-	/**
41
-	 * @return string Lowercase a-z and underscore only identifier
42
-	 * @since 11.0.0
43
-	 */
44
-	public function getIdentifier() {
45
-		return 'remote_share';
46
-	}
40
+    /**
41
+     * @return string Lowercase a-z and underscore only identifier
42
+     * @since 11.0.0
43
+     */
44
+    public function getIdentifier() {
45
+        return 'remote_share';
46
+    }
47 47
 
48
-	/**
49
-	 * @return string A translated string
50
-	 * @since 11.0.0
51
-	 */
52
-	public function getName() {
53
-		return $this->l->t('A file or folder was shared from <strong>another server</strong>');
54
-	}
48
+    /**
49
+     * @return string A translated string
50
+     * @since 11.0.0
51
+     */
52
+    public function getName() {
53
+        return $this->l->t('A file or folder was shared from <strong>another server</strong>');
54
+    }
55 55
 
56
-	/**
57
-	 * @return int whether the filter should be rather on the top or bottom of
58
-	 * the admin section. The filters are arranged in ascending order of the
59
-	 * priority values. It is required to return a value between 0 and 100.
60
-	 * @since 11.0.0
61
-	 */
62
-	public function getPriority() {
63
-		return 11;
64
-	}
56
+    /**
57
+     * @return int whether the filter should be rather on the top or bottom of
58
+     * the admin section. The filters are arranged in ascending order of the
59
+     * priority values. It is required to return a value between 0 and 100.
60
+     * @since 11.0.0
61
+     */
62
+    public function getPriority() {
63
+        return 11;
64
+    }
65 65
 
66
-	/**
67
-	 * @return bool True when the option can be changed for the stream
68
-	 * @since 11.0.0
69
-	 */
70
-	public function canChangeStream() {
71
-		return true;
72
-	}
66
+    /**
67
+     * @return bool True when the option can be changed for the stream
68
+     * @since 11.0.0
69
+     */
70
+    public function canChangeStream() {
71
+        return true;
72
+    }
73 73
 
74
-	/**
75
-	 * @return bool True when the option can be changed for the stream
76
-	 * @since 11.0.0
77
-	 */
78
-	public function isDefaultEnabledStream() {
79
-		return true;
80
-	}
74
+    /**
75
+     * @return bool True when the option can be changed for the stream
76
+     * @since 11.0.0
77
+     */
78
+    public function isDefaultEnabledStream() {
79
+        return true;
80
+    }
81 81
 
82
-	/**
83
-	 * @return bool True when the option can be changed for the mail
84
-	 * @since 11.0.0
85
-	 */
86
-	public function canChangeMail() {
87
-		return true;
88
-	}
82
+    /**
83
+     * @return bool True when the option can be changed for the mail
84
+     * @since 11.0.0
85
+     */
86
+    public function canChangeMail() {
87
+        return true;
88
+    }
89 89
 
90
-	/**
91
-	 * @return bool True when the option can be changed for the stream
92
-	 * @since 11.0.0
93
-	 */
94
-	public function isDefaultEnabledMail() {
95
-		return false;
96
-	}
90
+    /**
91
+     * @return bool True when the option can be changed for the stream
92
+     * @since 11.0.0
93
+     */
94
+    public function isDefaultEnabledMail() {
95
+        return false;
96
+    }
97 97
 }
98 98
 
Please login to merge, or discard this patch.
apps/files_sharing/lib/Activity/Settings/Shared.php 1 patch
Indentation   +59 added lines, -59 removed lines patch added patch discarded remove patch
@@ -27,72 +27,72 @@
 block discarded – undo
27 27
 
28 28
 class Shared implements ISetting {
29 29
 
30
-	/** @var IL10N */
31
-	protected $l;
30
+    /** @var IL10N */
31
+    protected $l;
32 32
 
33
-	/**
34
-	 * @param IL10N $l
35
-	 */
36
-	public function __construct(IL10N $l) {
37
-		$this->l = $l;
38
-	}
33
+    /**
34
+     * @param IL10N $l
35
+     */
36
+    public function __construct(IL10N $l) {
37
+        $this->l = $l;
38
+    }
39 39
 
40
-	/**
41
-	 * @return string Lowercase a-z and underscore only identifier
42
-	 * @since 11.0.0
43
-	 */
44
-	public function getIdentifier() {
45
-		return 'shared';
46
-	}
40
+    /**
41
+     * @return string Lowercase a-z and underscore only identifier
42
+     * @since 11.0.0
43
+     */
44
+    public function getIdentifier() {
45
+        return 'shared';
46
+    }
47 47
 
48
-	/**
49
-	 * @return string A translated string
50
-	 * @since 11.0.0
51
-	 */
52
-	public function getName() {
53
-		return $this->l->t('A file or folder has been <strong>shared</strong>');
54
-	}
48
+    /**
49
+     * @return string A translated string
50
+     * @since 11.0.0
51
+     */
52
+    public function getName() {
53
+        return $this->l->t('A file or folder has been <strong>shared</strong>');
54
+    }
55 55
 
56
-	/**
57
-	 * @return int whether the filter should be rather on the top or bottom of
58
-	 * the admin section. The filters are arranged in ascending order of the
59
-	 * priority values. It is required to return a value between 0 and 100.
60
-	 * @since 11.0.0
61
-	 */
62
-	public function getPriority() {
63
-		return 10;
64
-	}
56
+    /**
57
+     * @return int whether the filter should be rather on the top or bottom of
58
+     * the admin section. The filters are arranged in ascending order of the
59
+     * priority values. It is required to return a value between 0 and 100.
60
+     * @since 11.0.0
61
+     */
62
+    public function getPriority() {
63
+        return 10;
64
+    }
65 65
 
66
-	/**
67
-	 * @return bool True when the option can be changed for the stream
68
-	 * @since 11.0.0
69
-	 */
70
-	public function canChangeStream() {
71
-		return true;
72
-	}
66
+    /**
67
+     * @return bool True when the option can be changed for the stream
68
+     * @since 11.0.0
69
+     */
70
+    public function canChangeStream() {
71
+        return true;
72
+    }
73 73
 
74
-	/**
75
-	 * @return bool True when the option can be changed for the stream
76
-	 * @since 11.0.0
77
-	 */
78
-	public function isDefaultEnabledStream() {
79
-		return true;
80
-	}
74
+    /**
75
+     * @return bool True when the option can be changed for the stream
76
+     * @since 11.0.0
77
+     */
78
+    public function isDefaultEnabledStream() {
79
+        return true;
80
+    }
81 81
 
82
-	/**
83
-	 * @return bool True when the option can be changed for the mail
84
-	 * @since 11.0.0
85
-	 */
86
-	public function canChangeMail() {
87
-		return true;
88
-	}
82
+    /**
83
+     * @return bool True when the option can be changed for the mail
84
+     * @since 11.0.0
85
+     */
86
+    public function canChangeMail() {
87
+        return true;
88
+    }
89 89
 
90
-	/**
91
-	 * @return bool True when the option can be changed for the stream
92
-	 * @since 11.0.0
93
-	 */
94
-	public function isDefaultEnabledMail() {
95
-		return false;
96
-	}
90
+    /**
91
+     * @return bool True when the option can be changed for the stream
92
+     * @since 11.0.0
93
+     */
94
+    public function isDefaultEnabledMail() {
95
+        return false;
96
+    }
97 97
 }
98 98
 
Please login to merge, or discard this patch.
lib/private/Files/ObjectStore/S3.php 1 patch
Indentation   +12 added lines, -12 removed lines patch added patch discarded remove patch
@@ -24,18 +24,18 @@
 block discarded – undo
24 24
 use OCP\Files\ObjectStore\IObjectStore;
25 25
 
26 26
 class S3 implements IObjectStore {
27
-	use S3ConnectionTrait;
28
-	use S3ObjectTrait;
27
+    use S3ConnectionTrait;
28
+    use S3ObjectTrait;
29 29
 
30
-	public function __construct($parameters) {
31
-		$this->parseParams($parameters);
32
-	}
30
+    public function __construct($parameters) {
31
+        $this->parseParams($parameters);
32
+    }
33 33
 
34
-	/**
35
-	 * @return string the container or bucket name where objects are stored
36
-	 * @since 7.0.0
37
-	 */
38
-	public function getStorageId() {
39
-		return $this->id;
40
-	}
34
+    /**
35
+     * @return string the container or bucket name where objects are stored
36
+     * @since 7.0.0
37
+     */
38
+    public function getStorageId() {
39
+        return $this->id;
40
+    }
41 41
 }
Please login to merge, or discard this patch.
apps/files_external/lib/Command/Import.php 1 patch
Indentation   +183 added lines, -183 removed lines patch added patch discarded remove patch
@@ -39,187 +39,187 @@
 block discarded – undo
39 39
 use Symfony\Component\Console\Output\OutputInterface;
40 40
 
41 41
 class Import extends Base {
42
-	/**
43
-	 * @var GlobalStoragesService
44
-	 */
45
-	private $globalService;
46
-
47
-	/**
48
-	 * @var UserStoragesService
49
-	 */
50
-	private $userService;
51
-
52
-	/**
53
-	 * @var IUserSession
54
-	 */
55
-	private $userSession;
56
-
57
-	/**
58
-	 * @var IUserManager
59
-	 */
60
-	private $userManager;
61
-
62
-	/** @var ImportLegacyStoragesService */
63
-	private $importLegacyStorageService;
64
-
65
-	/** @var BackendService */
66
-	private $backendService;
67
-
68
-	function __construct(GlobalStoragesService $globalService,
69
-						 UserStoragesService $userService,
70
-						 IUserSession $userSession,
71
-						 IUserManager $userManager,
72
-						 ImportLegacyStoragesService $importLegacyStorageService,
73
-						 BackendService $backendService
74
-	) {
75
-		parent::__construct();
76
-		$this->globalService = $globalService;
77
-		$this->userService = $userService;
78
-		$this->userSession = $userSession;
79
-		$this->userManager = $userManager;
80
-		$this->importLegacyStorageService = $importLegacyStorageService;
81
-		$this->backendService = $backendService;
82
-	}
83
-
84
-	protected function configure() {
85
-		$this
86
-			->setName('files_external:import')
87
-			->setDescription('Import mount configurations')
88
-			->addOption(
89
-				'user',
90
-				'',
91
-				InputOption::VALUE_OPTIONAL,
92
-				'user to add the mount configurations for, if not set the mount will be added as system mount'
93
-			)
94
-			->addArgument(
95
-				'path',
96
-				InputArgument::REQUIRED,
97
-				'path to a json file containing the mounts to import, use "-" to read from stdin'
98
-			)
99
-			->addOption(
100
-				'dry',
101
-				'',
102
-				InputOption::VALUE_NONE,
103
-				'Don\'t save the imported mounts, only list the new mounts'
104
-			);
105
-		parent::configure();
106
-	}
107
-
108
-	protected function execute(InputInterface $input, OutputInterface $output) {
109
-		$user = $input->getOption('user');
110
-		$path = $input->getArgument('path');
111
-		if ($path === '-') {
112
-			$json = file_get_contents('php://stdin');
113
-		} else {
114
-			if (!file_exists($path)) {
115
-				$output->writeln('<error>File not found: ' . $path . '</error>');
116
-				return 1;
117
-			}
118
-			$json = file_get_contents($path);
119
-		}
120
-		if (!is_string($json) || strlen($json) < 2) {
121
-			$output->writeln('<error>Error while reading json</error>');
122
-			return 1;
123
-		}
124
-		$data = json_decode($json, true);
125
-		if (!is_array($data)) {
126
-			$output->writeln('<error>Error while parsing json</error>');
127
-			return 1;
128
-		}
129
-
130
-		$isLegacy = isset($data['user']) || isset($data['group']);
131
-		if ($isLegacy) {
132
-			$this->importLegacyStorageService->setData($data);
133
-			$mounts = $this->importLegacyStorageService->getAllStorages();
134
-			foreach ($mounts as $mount) {
135
-				if ($mount->getBackendOption('password') === false) {
136
-					$output->writeln('<error>Failed to decrypt password</error>');
137
-					return 1;
138
-				}
139
-			}
140
-		} else {
141
-			if (!isset($data[0])) { //normalize to an array of mounts
142
-				$data = [$data];
143
-			}
144
-			$mounts = array_map([$this, 'parseData'], $data);
145
-		}
146
-
147
-		if ($user) {
148
-			// ensure applicables are correct for personal mounts
149
-			foreach ($mounts as $mount) {
150
-				$mount->setApplicableGroups([]);
151
-				$mount->setApplicableUsers([$user]);
152
-			}
153
-		}
154
-
155
-		$storageService = $this->getStorageService($user);
156
-
157
-		$existingMounts = $storageService->getAllStorages();
158
-
159
-		foreach ($mounts as $mount) {
160
-			foreach ($existingMounts as $existingMount) {
161
-				if (
162
-					$existingMount->getMountPoint() === $mount->getMountPoint() &&
163
-					$existingMount->getApplicableGroups() === $mount->getApplicableGroups() &&
164
-					$existingMount->getApplicableUsers() === $mount->getApplicableUsers() &&
165
-					$existingMount->getBackendOptions() === $mount->getBackendOptions()
166
-				) {
167
-					$output->writeln("<error>Duplicate mount (" . $mount->getMountPoint() . ")</error>");
168
-					return 1;
169
-				}
170
-			}
171
-		}
172
-
173
-		if ($input->getOption('dry')) {
174
-			if (count($mounts) === 0) {
175
-				$output->writeln('<error>No mounts to be imported</error>');
176
-				return 1;
177
-			}
178
-			$listCommand = new ListCommand($this->globalService, $this->userService, $this->userSession, $this->userManager);
179
-			$listInput = new ArrayInput([], $listCommand->getDefinition());
180
-			$listInput->setOption('output', $input->getOption('output'));
181
-			$listInput->setOption('show-password', true);
182
-			$listCommand->listMounts($user, $mounts, $listInput, $output);
183
-		} else {
184
-			foreach ($mounts as $mount) {
185
-				$storageService->addStorage($mount);
186
-			}
187
-		}
188
-		return 0;
189
-	}
190
-
191
-	private function parseData(array $data) {
192
-		$mount = new StorageConfig($data['mount_id']);
193
-		$mount->setMountPoint($data['mount_point']);
194
-		$mount->setBackend($this->getBackendByClass($data['storage']));
195
-		$authBackend = $this->backendService->getAuthMechanism($data['authentication_type']);
196
-		$mount->setAuthMechanism($authBackend);
197
-		$mount->setBackendOptions($data['configuration']);
198
-		$mount->setMountOptions($data['options']);
199
-		$mount->setApplicableUsers(isset($data['applicable_users']) ? $data['applicable_users'] : []);
200
-		$mount->setApplicableGroups(isset($data['applicable_groups']) ? $data['applicable_groups'] : []);
201
-		return $mount;
202
-	}
203
-
204
-	private function getBackendByClass($className) {
205
-		$backends = $this->backendService->getBackends();
206
-		foreach ($backends as $backend) {
207
-			if ($backend->getStorageClass() === $className) {
208
-				return $backend;
209
-			}
210
-		}
211
-	}
212
-
213
-	protected function getStorageService($userId) {
214
-		if (!empty($userId)) {
215
-			$user = $this->userManager->get($userId);
216
-			if (is_null($user)) {
217
-				throw new NoUserException("user $userId not found");
218
-			}
219
-			$this->userSession->setUser($user);
220
-			return $this->userService;
221
-		} else {
222
-			return $this->globalService;
223
-		}
224
-	}
42
+    /**
43
+     * @var GlobalStoragesService
44
+     */
45
+    private $globalService;
46
+
47
+    /**
48
+     * @var UserStoragesService
49
+     */
50
+    private $userService;
51
+
52
+    /**
53
+     * @var IUserSession
54
+     */
55
+    private $userSession;
56
+
57
+    /**
58
+     * @var IUserManager
59
+     */
60
+    private $userManager;
61
+
62
+    /** @var ImportLegacyStoragesService */
63
+    private $importLegacyStorageService;
64
+
65
+    /** @var BackendService */
66
+    private $backendService;
67
+
68
+    function __construct(GlobalStoragesService $globalService,
69
+                            UserStoragesService $userService,
70
+                            IUserSession $userSession,
71
+                            IUserManager $userManager,
72
+                            ImportLegacyStoragesService $importLegacyStorageService,
73
+                            BackendService $backendService
74
+    ) {
75
+        parent::__construct();
76
+        $this->globalService = $globalService;
77
+        $this->userService = $userService;
78
+        $this->userSession = $userSession;
79
+        $this->userManager = $userManager;
80
+        $this->importLegacyStorageService = $importLegacyStorageService;
81
+        $this->backendService = $backendService;
82
+    }
83
+
84
+    protected function configure() {
85
+        $this
86
+            ->setName('files_external:import')
87
+            ->setDescription('Import mount configurations')
88
+            ->addOption(
89
+                'user',
90
+                '',
91
+                InputOption::VALUE_OPTIONAL,
92
+                'user to add the mount configurations for, if not set the mount will be added as system mount'
93
+            )
94
+            ->addArgument(
95
+                'path',
96
+                InputArgument::REQUIRED,
97
+                'path to a json file containing the mounts to import, use "-" to read from stdin'
98
+            )
99
+            ->addOption(
100
+                'dry',
101
+                '',
102
+                InputOption::VALUE_NONE,
103
+                'Don\'t save the imported mounts, only list the new mounts'
104
+            );
105
+        parent::configure();
106
+    }
107
+
108
+    protected function execute(InputInterface $input, OutputInterface $output) {
109
+        $user = $input->getOption('user');
110
+        $path = $input->getArgument('path');
111
+        if ($path === '-') {
112
+            $json = file_get_contents('php://stdin');
113
+        } else {
114
+            if (!file_exists($path)) {
115
+                $output->writeln('<error>File not found: ' . $path . '</error>');
116
+                return 1;
117
+            }
118
+            $json = file_get_contents($path);
119
+        }
120
+        if (!is_string($json) || strlen($json) < 2) {
121
+            $output->writeln('<error>Error while reading json</error>');
122
+            return 1;
123
+        }
124
+        $data = json_decode($json, true);
125
+        if (!is_array($data)) {
126
+            $output->writeln('<error>Error while parsing json</error>');
127
+            return 1;
128
+        }
129
+
130
+        $isLegacy = isset($data['user']) || isset($data['group']);
131
+        if ($isLegacy) {
132
+            $this->importLegacyStorageService->setData($data);
133
+            $mounts = $this->importLegacyStorageService->getAllStorages();
134
+            foreach ($mounts as $mount) {
135
+                if ($mount->getBackendOption('password') === false) {
136
+                    $output->writeln('<error>Failed to decrypt password</error>');
137
+                    return 1;
138
+                }
139
+            }
140
+        } else {
141
+            if (!isset($data[0])) { //normalize to an array of mounts
142
+                $data = [$data];
143
+            }
144
+            $mounts = array_map([$this, 'parseData'], $data);
145
+        }
146
+
147
+        if ($user) {
148
+            // ensure applicables are correct for personal mounts
149
+            foreach ($mounts as $mount) {
150
+                $mount->setApplicableGroups([]);
151
+                $mount->setApplicableUsers([$user]);
152
+            }
153
+        }
154
+
155
+        $storageService = $this->getStorageService($user);
156
+
157
+        $existingMounts = $storageService->getAllStorages();
158
+
159
+        foreach ($mounts as $mount) {
160
+            foreach ($existingMounts as $existingMount) {
161
+                if (
162
+                    $existingMount->getMountPoint() === $mount->getMountPoint() &&
163
+                    $existingMount->getApplicableGroups() === $mount->getApplicableGroups() &&
164
+                    $existingMount->getApplicableUsers() === $mount->getApplicableUsers() &&
165
+                    $existingMount->getBackendOptions() === $mount->getBackendOptions()
166
+                ) {
167
+                    $output->writeln("<error>Duplicate mount (" . $mount->getMountPoint() . ")</error>");
168
+                    return 1;
169
+                }
170
+            }
171
+        }
172
+
173
+        if ($input->getOption('dry')) {
174
+            if (count($mounts) === 0) {
175
+                $output->writeln('<error>No mounts to be imported</error>');
176
+                return 1;
177
+            }
178
+            $listCommand = new ListCommand($this->globalService, $this->userService, $this->userSession, $this->userManager);
179
+            $listInput = new ArrayInput([], $listCommand->getDefinition());
180
+            $listInput->setOption('output', $input->getOption('output'));
181
+            $listInput->setOption('show-password', true);
182
+            $listCommand->listMounts($user, $mounts, $listInput, $output);
183
+        } else {
184
+            foreach ($mounts as $mount) {
185
+                $storageService->addStorage($mount);
186
+            }
187
+        }
188
+        return 0;
189
+    }
190
+
191
+    private function parseData(array $data) {
192
+        $mount = new StorageConfig($data['mount_id']);
193
+        $mount->setMountPoint($data['mount_point']);
194
+        $mount->setBackend($this->getBackendByClass($data['storage']));
195
+        $authBackend = $this->backendService->getAuthMechanism($data['authentication_type']);
196
+        $mount->setAuthMechanism($authBackend);
197
+        $mount->setBackendOptions($data['configuration']);
198
+        $mount->setMountOptions($data['options']);
199
+        $mount->setApplicableUsers(isset($data['applicable_users']) ? $data['applicable_users'] : []);
200
+        $mount->setApplicableGroups(isset($data['applicable_groups']) ? $data['applicable_groups'] : []);
201
+        return $mount;
202
+    }
203
+
204
+    private function getBackendByClass($className) {
205
+        $backends = $this->backendService->getBackends();
206
+        foreach ($backends as $backend) {
207
+            if ($backend->getStorageClass() === $className) {
208
+                return $backend;
209
+            }
210
+        }
211
+    }
212
+
213
+    protected function getStorageService($userId) {
214
+        if (!empty($userId)) {
215
+            $user = $this->userManager->get($userId);
216
+            if (is_null($user)) {
217
+                throw new NoUserException("user $userId not found");
218
+            }
219
+            $this->userSession->setUser($user);
220
+            return $this->userService;
221
+        } else {
222
+            return $this->globalService;
223
+        }
224
+    }
225 225
 }
Please login to merge, or discard this patch.
apps/files_sharing/lib/Middleware/OCSShareAPIMiddleware.php 1 patch
Indentation   +35 added lines, -35 removed lines patch added patch discarded remove patch
@@ -11,43 +11,43 @@
 block discarded – undo
11 11
 use OCP\Share\IManager;
12 12
 
13 13
 class OCSShareAPIMiddleware extends Middleware {
14
-	/** @var IManager */
15
-	private $shareManager;
16
-	/** @var IL10N */
17
-	private $l;
14
+    /** @var IManager */
15
+    private $shareManager;
16
+    /** @var IL10N */
17
+    private $l;
18 18
 
19
-	public function __construct(IManager $shareManager,
20
-								IL10N $l) {
21
-		$this->shareManager = $shareManager;
22
-		$this->l = $l;
23
-	}
19
+    public function __construct(IManager $shareManager,
20
+                                IL10N $l) {
21
+        $this->shareManager = $shareManager;
22
+        $this->l = $l;
23
+    }
24 24
 
25
-	/**
26
-	 * @param Controller $controller
27
-	 * @param string $methodName
28
-	 *
29
-	 * @throws OCSNotFoundException
30
-	 */
31
-	public function beforeController($controller, $methodName) {
32
-		if ($controller instanceof ShareAPIController) {
33
-			if (!$this->shareManager->shareApiEnabled()) {
34
-				throw new OCSNotFoundException($this->l->t('Share API is disabled'));
35
-			}
36
-		}
37
-	}
25
+    /**
26
+     * @param Controller $controller
27
+     * @param string $methodName
28
+     *
29
+     * @throws OCSNotFoundException
30
+     */
31
+    public function beforeController($controller, $methodName) {
32
+        if ($controller instanceof ShareAPIController) {
33
+            if (!$this->shareManager->shareApiEnabled()) {
34
+                throw new OCSNotFoundException($this->l->t('Share API is disabled'));
35
+            }
36
+        }
37
+    }
38 38
 
39
-	/**
40
-	 * @param Controller $controller
41
-	 * @param string $methodName
42
-	 * @param Response $response
43
-	 * @return Response
44
-	 */
45
-	public function afterController($controller, $methodName, Response $response) {
46
-		if ($controller instanceof ShareAPIController) {
47
-			/** @var ShareAPIController $controller */
48
-			$controller->cleanup();
49
-		}
39
+    /**
40
+     * @param Controller $controller
41
+     * @param string $methodName
42
+     * @param Response $response
43
+     * @return Response
44
+     */
45
+    public function afterController($controller, $methodName, Response $response) {
46
+        if ($controller instanceof ShareAPIController) {
47
+            /** @var ShareAPIController $controller */
48
+            $controller->cleanup();
49
+        }
50 50
 
51
-		return $response;
52
-	}
51
+        return $response;
52
+    }
53 53
 }
Please login to merge, or discard this patch.