embulk-output-sftp 0.1.8 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/build.gradle +1 -1
- data/classpath/embulk-output-sftp-0.1.9.jar +0 -0
- data/src/main/java/org/embulk/output/sftp/SftpFileOutputPlugin.java +10 -0
- data/src/main/java/org/embulk/output/sftp/SftpUtils.java +21 -2
- data/src/test/java/org/embulk/output/sftp/TestSftpFileOutputPlugin.java +31 -0
- metadata +3 -3
- data/classpath/embulk-output-sftp-0.1.8.jar +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 51708045da5829301daa1d1d816688c262b6e932
|
4
|
+
data.tar.gz: 3fedac6d7f98845a1278beaba39de3cfd0722ff4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: de3417dd58045d5c8bccc8b78896f1134bb320c0637207599ac974dec2032cb1a609244d95066008199f37194129c3fbe5d2d1b1dcd07a7996717669b08aa3c2
|
7
|
+
data.tar.gz: 8e4ca5ae5bc7fddc25ba4a1bdd26e29a2dd07488477ee5f166592bb8fc957276b669c5fd0b158a98c1f084de9cd87c45a50c806c644c306a9a018b121ff90c33
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
0.1.9 (2018-04-26)
|
2
|
+
- Enhance: Add validation for "host" and "proxy.host"
|
3
|
+
- https://github.com/embulk/embulk-output-sftp/pull/48
|
1
4
|
0.1.8 (2018-03-20)
|
2
5
|
- Change input stream buffer size to 32MB to reduce number of storage reads
|
3
6
|
- https://github.com/embulk/embulk-output-sftp/pull/47
|
data/build.gradle
CHANGED
Binary file
|
@@ -81,6 +81,16 @@ public class SftpFileOutputPlugin
|
|
81
81
|
FileOutputPlugin.Control control)
|
82
82
|
{
|
83
83
|
PluginTask task = config.loadConfig(PluginTask.class);
|
84
|
+
SftpUtils sftpUtils = null;
|
85
|
+
try {
|
86
|
+
sftpUtils = new SftpUtils(task);
|
87
|
+
sftpUtils.validateHost(task);
|
88
|
+
}
|
89
|
+
finally {
|
90
|
+
if (sftpUtils != null) {
|
91
|
+
sftpUtils.close();
|
92
|
+
}
|
93
|
+
}
|
84
94
|
|
85
95
|
// retryable (idempotent) output:
|
86
96
|
// return resume(task.dump(), taskCount, control);
|
@@ -35,6 +35,7 @@ public class SftpUtils
|
|
35
35
|
private final DefaultFileSystemManager manager;
|
36
36
|
private final FileSystemOptions fsOptions;
|
37
37
|
private final String userInfo;
|
38
|
+
private final String user;
|
38
39
|
private final String host;
|
39
40
|
private final int port;
|
40
41
|
private final int maxConnectionRetry;
|
@@ -127,6 +128,7 @@ public class SftpUtils
|
|
127
128
|
{
|
128
129
|
this.manager = initializeStandardFileSystemManager();
|
129
130
|
this.userInfo = initializeUserInfo(task);
|
131
|
+
this.user = task.getUser();
|
130
132
|
this.fsOptions = initializeFsOptions(task);
|
131
133
|
this.host = task.getHost();
|
132
134
|
this.port = task.getPort();
|
@@ -182,6 +184,9 @@ public class SftpUtils
|
|
182
184
|
@Override
|
183
185
|
public boolean isRetryableException(Exception exception)
|
184
186
|
{
|
187
|
+
if (exception instanceof ConfigException) {
|
188
|
+
return false;
|
189
|
+
}
|
185
190
|
return true;
|
186
191
|
}
|
187
192
|
|
@@ -264,14 +269,28 @@ public class SftpUtils
|
|
264
269
|
}
|
265
270
|
}
|
266
271
|
|
272
|
+
public void validateHost(PluginTask task)
|
273
|
+
{
|
274
|
+
if (task.getHost().contains("%s")) {
|
275
|
+
throw new ConfigException("'host' can't contain spaces");
|
276
|
+
}
|
277
|
+
getSftpFileUri("/");
|
278
|
+
|
279
|
+
if (task.getProxy().isPresent() && task.getProxy().get().getHost().isPresent()) {
|
280
|
+
if (task.getProxy().get().getHost().get().contains("%s")) {
|
281
|
+
throw new ConfigException("'proxy.host' can't contains spaces");
|
282
|
+
}
|
283
|
+
}
|
284
|
+
}
|
285
|
+
|
267
286
|
private URI getSftpFileUri(String remoteFilePath)
|
268
287
|
{
|
269
288
|
try {
|
270
289
|
return new URI("sftp", userInfo, host, port, remoteFilePath, null, null);
|
271
290
|
}
|
272
291
|
catch (URISyntaxException e) {
|
273
|
-
|
274
|
-
throw new ConfigException(
|
292
|
+
String message = String.format("URISyntaxException was thrown: Illegal character in sftp://%s:******@%s:%s%s", user, host, port, remoteFilePath);
|
293
|
+
throw new ConfigException(message);
|
275
294
|
}
|
276
295
|
}
|
277
296
|
|
@@ -247,6 +247,37 @@ public class TestSftpFileOutputPlugin
|
|
247
247
|
}
|
248
248
|
}
|
249
249
|
|
250
|
+
@Test(expected = ConfigException.class)
|
251
|
+
public void testInvalidHost()
|
252
|
+
{
|
253
|
+
// setting embulk config
|
254
|
+
final String pathPrefix = "/test/testUserPassword";
|
255
|
+
String configYaml = "" +
|
256
|
+
"type: sftp\n" +
|
257
|
+
"host: " + HOST + "\n" +
|
258
|
+
"user: " + USERNAME + "\n" +
|
259
|
+
"path_prefix: " + pathPrefix + "\n" +
|
260
|
+
"file_ext: txt\n" +
|
261
|
+
"formatter:\n" +
|
262
|
+
" type: csv\n" +
|
263
|
+
" newline: CRLF\n" +
|
264
|
+
" newline_in_field: LF\n" +
|
265
|
+
" header_line: true\n" +
|
266
|
+
" charset: UTF-8\n" +
|
267
|
+
" quote_policy: NONE\n" +
|
268
|
+
" quote: \"\\\"\"\n" +
|
269
|
+
" escape: \"\\\\\"\n" +
|
270
|
+
" null_string: \"\"\n" +
|
271
|
+
" default_timezone: 'UTC'";
|
272
|
+
|
273
|
+
ConfigSource config = getConfigFromYaml(configYaml);
|
274
|
+
config.set("host", HOST + " ");
|
275
|
+
PluginTask task = config.loadConfig(PluginTask.class);
|
276
|
+
|
277
|
+
SftpUtils utils = new SftpUtils(task);
|
278
|
+
utils.validateHost(task);
|
279
|
+
}
|
280
|
+
|
250
281
|
@Test
|
251
282
|
public void testConfigValuesIncludingDefault()
|
252
283
|
{
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: embulk-output-sftp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Civitaspo
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-
|
12
|
+
date: 2018-04-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,7 +78,7 @@ files:
|
|
78
78
|
- classpath/commons-io-2.6.jar
|
79
79
|
- classpath/commons-logging-1.2.jar
|
80
80
|
- classpath/commons-vfs2-2.2.jar
|
81
|
-
- classpath/embulk-output-sftp-0.1.
|
81
|
+
- classpath/embulk-output-sftp-0.1.9.jar
|
82
82
|
- classpath/jsch-0.1.54.jar
|
83
83
|
homepage: https://github.com/embulk/embulk-output-sftp
|
84
84
|
licenses:
|
Binary file
|