embulk-output-ftp 0.1.2 → 0.1.3
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 +5 -0
- data/README.md +20 -2
- data/build.gradle +1 -1
- data/classpath/embulk-output-ftp-0.1.3.jar +0 -0
- data/src/main/java/org/embulk/output/ftp/FtpFileOutputPlugin.java +12 -9
- data/src/test/java/org/embulk/output/ftp/TestFtpFileOutputPlugin.java +27 -23
- metadata +2 -2
- data/classpath/embulk-output-ftp-0.1.2.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: 5dc75d041719981674d7fae9fa33063917cbb78b
|
|
4
|
+
data.tar.gz: 10b76c0ea6377bfbc4e7843102380ef939bc803e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 54f5d91122ba11013591355303f7ff57930a7f952998ee3bdb7d4d189b5b94b3a8062cbe2f75cebdd93a14ce91e257e116a19e38a9ceef6e11b85618634274d9
|
|
7
|
+
data.tar.gz: 60ec552f6383b58521f8f1054d4045664a71a0aa6c6d97531449eb87a513ffb7558912c9129ec6f5f9a98280da96d24b46d2f5658738d95988139aefe88d7dc4
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
## 0.1.3 - 2016-07-21
|
|
2
|
+
|
|
3
|
+
* [new feature] Support both of FTPS(explicit) and FTPS(implicit). [#4](https://github.com/sakama/embulk-output-ftp/pull/4)
|
|
4
|
+
* [maintenance] Fix exception handling. [#5](https://github.com/sakama/embulk-output-ftp/pull/5)
|
|
5
|
+
|
|
1
6
|
## 0.1.2 - 2016-07-21
|
|
2
7
|
|
|
3
8
|
* [maintenance] Force to create remote directory if remote directory doesn't exists. [#2](https://github.com/sakama/embulk-output-ftp/pull/2)
|
data/README.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
# FTP file output plugin for Embulk
|
|
2
2
|
[](https://travis-ci.org/sakama/embulk-output-ftp)
|
|
3
3
|
|
|
4
|
+
This plugin support **FTP**, **FTPES(FTPS explicit)**, **FTPS(FTPS implicit)** and doesn't support **SFTP**.
|
|
5
|
+
|
|
6
|
+
If you want to use SFTP, please use [embulk-output-sftp](https://github.com/civitaspo/embulk-output-sftp).
|
|
7
|
+
|
|
4
8
|
## Overview
|
|
5
9
|
|
|
6
10
|
* **Plugin type**: file input
|
|
@@ -10,7 +14,7 @@
|
|
|
10
14
|
## Configuration
|
|
11
15
|
|
|
12
16
|
- **host**: FTP server address (string, required)
|
|
13
|
-
- **port**: FTP server port number (integer, default: `21`.
|
|
17
|
+
- **port**: FTP server port number (integer, default: `21`.)
|
|
14
18
|
- **user**: user name to login (string, optional)
|
|
15
19
|
- **password**: password to login (string, default: `""`)
|
|
16
20
|
- **path_prefix** prefix of target files (string, required)
|
|
@@ -19,11 +23,26 @@
|
|
|
19
23
|
- **passive_mode**: use passive mode (boolean, default: true)
|
|
20
24
|
- **ascii_mode**: use ASCII mode instead of binary mode (boolean, default: false)
|
|
21
25
|
- **ssl**: use FTPS (SSL encryption). (boolean, default: false)
|
|
26
|
+
- **ssl_explicit** use FTPS(explicit) instead of FTPS(implicit). (boolean, default:true)
|
|
22
27
|
- **ssl_verify**: verify the certification provided by the server. By default, connection fails if the server certification is not signed by one the CAs in JVM's default trusted CA list. (boolean, default: true)
|
|
23
28
|
- **ssl_verify_hostname**: verify server's hostname matches with provided certificate. (boolean, default: true)
|
|
24
29
|
- **ssl_trusted_ca_cert_file**: if the server certification is not signed by a certificate authority, set path to the X.508 certification file (pem file) of a private CA (string, optional)
|
|
25
30
|
- **ssl_trusted_ca_cert_data**: similar to `ssl_trusted_ca_cert_file` but embed the contents of the PEM file as a string value instead of path to a local file (string, optional)
|
|
26
31
|
|
|
32
|
+
### FTP / FTPS default port number
|
|
33
|
+
|
|
34
|
+
FTP and FTPS server listens following port number(TCP) as default.
|
|
35
|
+
|
|
36
|
+
Please be sure to configure firewall rules.
|
|
37
|
+
|
|
38
|
+
| | FTP | FTPS(explicit) = FTPES | FTPS(implicit) = FTPS |
|
|
39
|
+
|:------------------------|----:|-----------------------:|----------------------:|
|
|
40
|
+
| Control channel port | 21 | 21 | 990 (\*1) |
|
|
41
|
+
| Data channel port (\*2) | 20 | 20 | 989 |
|
|
42
|
+
|
|
43
|
+
1. If you're using both of FTPS(implicit) and FTP, server also use 21/TCP for FTP.
|
|
44
|
+
2. If you're using passive mode, data channel port can be taken between 1024 and 65535.
|
|
45
|
+
|
|
27
46
|
## Example
|
|
28
47
|
|
|
29
48
|
Simple FTP:
|
|
@@ -90,7 +109,6 @@ out:
|
|
|
90
109
|
ext: csv
|
|
91
110
|
```
|
|
92
111
|
|
|
93
|
-
|
|
94
112
|
## Build
|
|
95
113
|
|
|
96
114
|
```
|
data/build.gradle
CHANGED
|
Binary file
|
|
@@ -48,7 +48,7 @@ public class FtpFileOutputPlugin implements FileOutputPlugin
|
|
|
48
48
|
String getHost();
|
|
49
49
|
|
|
50
50
|
@Config("port")
|
|
51
|
-
@ConfigDefault("
|
|
51
|
+
@ConfigDefault("21")
|
|
52
52
|
Optional<Integer> getPort();
|
|
53
53
|
void setPort(Optional<Integer> port);
|
|
54
54
|
|
|
@@ -72,6 +72,10 @@ public class FtpFileOutputPlugin implements FileOutputPlugin
|
|
|
72
72
|
@ConfigDefault("false")
|
|
73
73
|
boolean getSsl();
|
|
74
74
|
|
|
75
|
+
@Config("ssl_explicit")
|
|
76
|
+
@ConfigDefault("true")
|
|
77
|
+
boolean getSslExplicit();
|
|
78
|
+
|
|
75
79
|
SSLPluginConfig getSSLConfig();
|
|
76
80
|
void setSSLConfig(SSLPluginConfig config);
|
|
77
81
|
|
|
@@ -256,7 +260,7 @@ public class FtpFileOutputPlugin implements FileOutputPlugin
|
|
|
256
260
|
public void onRetry(Exception exception, int retryCount, int retryLimit, int retryWait)
|
|
257
261
|
throws RetryGiveupException
|
|
258
262
|
{
|
|
259
|
-
if (exception instanceof
|
|
263
|
+
if (exception instanceof ConfigException) {
|
|
260
264
|
throw new RetryGiveupException(exception);
|
|
261
265
|
}
|
|
262
266
|
String message = String.format("FTP put request failed. Retrying %d/%d after %d seconds. Message: %s",
|
|
@@ -314,14 +318,13 @@ public class FtpFileOutputPlugin implements FileOutputPlugin
|
|
|
314
318
|
try {
|
|
315
319
|
if (task.getSsl()) {
|
|
316
320
|
client.setSSLSocketFactory(SSLPlugins.newSSLSocketFactory(task.getSSLConfig(), task.getHost()));
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
321
|
+
if (task.getSslExplicit()) {
|
|
322
|
+
client.setSecurity(FTPClient.SECURITY_FTPES);
|
|
323
|
+
log.info("Using FTPES(FTPS/explicit) mode");
|
|
320
324
|
}
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
task.setPort(Optional.of(21));
|
|
325
|
+
else {
|
|
326
|
+
client.setSecurity(FTPClient.SECURITY_FTPS);
|
|
327
|
+
log.info("Using FTPS(FTPS/implicit) mode");
|
|
325
328
|
}
|
|
326
329
|
}
|
|
327
330
|
|
|
@@ -110,6 +110,10 @@ public class TestFtpFileOutputPlugin
|
|
|
110
110
|
assertEquals(FTP_TEST_HOST, task.getHost());
|
|
111
111
|
assertEquals(FTP_TEST_USER, task.getUser().get());
|
|
112
112
|
assertEquals(FTP_TEST_PASSWORD, task.getPassword().get());
|
|
113
|
+
assertEquals(true, task.getPassiveMode());
|
|
114
|
+
assertEquals(false, task.getAsciiMode());
|
|
115
|
+
assertEquals(false, task.getSsl());
|
|
116
|
+
assertEquals(true, task.getSslExplicit());
|
|
113
117
|
assertEquals(10, task.getMaxConnectionRetry());
|
|
114
118
|
}
|
|
115
119
|
|
|
@@ -152,29 +156,29 @@ public class TestFtpFileOutputPlugin
|
|
|
152
156
|
runner.transaction(config, schema, 0, new Control());
|
|
153
157
|
}
|
|
154
158
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
159
|
+
@Test
|
|
160
|
+
public void testTransactionWithSsl()
|
|
161
|
+
{
|
|
162
|
+
ConfigSource config = Exec.newConfigSource()
|
|
163
|
+
.set("in", inputConfig())
|
|
164
|
+
.set("parser", parserConfig(schemaConfig()))
|
|
165
|
+
.set("type", "ftp")
|
|
166
|
+
.set("host", FTP_TEST_HOST)
|
|
167
|
+
.set("port", FTP_TEST_SSL_PORT)
|
|
168
|
+
.set("user", FTP_TEST_USER)
|
|
169
|
+
.set("password", FTP_TEST_PASSWORD)
|
|
170
|
+
.set("ssl", true)
|
|
171
|
+
.set("ssl_verify", false)
|
|
172
|
+
.set("ssl_verify_hostname", false)
|
|
173
|
+
.set("ssl_trusted_ca_cert_file", FTP_TEST_SSL_TRUSTED_CA_CERT_FILE)
|
|
174
|
+
.set("path_prefix", "my-prefix")
|
|
175
|
+
.set("file_ext", ".csv")
|
|
176
|
+
.set("formatter", formatterConfig());
|
|
177
|
+
|
|
178
|
+
Schema schema = config.getNested("parser").loadConfig(CsvParserPlugin.PluginTask.class).getSchemaConfig().toSchema();
|
|
179
|
+
|
|
180
|
+
runner.transaction(config, schema, 0, new Control());
|
|
181
|
+
}
|
|
178
182
|
|
|
179
183
|
@Test
|
|
180
184
|
public void testResume()
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: embulk-output-ftp
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Satoshi Akama
|
|
@@ -69,7 +69,7 @@ files:
|
|
|
69
69
|
- src/test/resources/sample_02.csv
|
|
70
70
|
- classpath/bcpkix-jdk15on-1.52.jar
|
|
71
71
|
- classpath/bcprov-jdk15on-1.52.jar
|
|
72
|
-
- classpath/embulk-output-ftp-0.1.
|
|
72
|
+
- classpath/embulk-output-ftp-0.1.3.jar
|
|
73
73
|
- classpath/ftp4j-1.7.2.jar
|
|
74
74
|
homepage: https://github.com/sakama/embulk-output-ftp
|
|
75
75
|
licenses:
|
|
Binary file
|