embulk-output-ftp 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +7 -4
- data/CHANGELOG.md +3 -1
- data/README.md +23 -14
- data/build.gradle +5 -5
- data/docker-compose.yml +24 -0
- data/docker-ftps/Dockerfile +9 -0
- data/docker-ftps/ca.cert.pem +35 -0
- data/docker-ftps/ca.key.pem +51 -0
- data/docker-ftps/run-vsftpd-with-ssl.sh +12 -0
- data/src/main/java/org/embulk/output/ftp/FtpFileOutputPlugin.java +2 -2
- data/src/test/java/org/embulk/output/ftp/TestFtpFileOutputPlugin.java +30 -15
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1832391d6c6f0f5d74151a1ff9efb2eacb00f1cd
|
4
|
+
data.tar.gz: 57a38106df95458da2618516ad3a55cb4105ad4b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a01f2622c0f7a27b16d7e95cab138c9cbe6dfc5b1c9289151ef2b3cb3f0e64f1c70209ff29e5a629a7e9af5cb0eb14089be2f892ca5dd86c387e6bc98e8389e
|
7
|
+
data.tar.gz: 47944e72c5e2a3a63df8ea3b9b5b1041cd19a189d37012d2a467e681d29d2feb7859195fed0855d0be04e0eb1c4d02b474ccbe5d38d247c87779a523dd4863ca
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
## 0.1
|
1
|
+
## 0.2.1 - 2018-12-14
|
2
|
+
* [maintenance] Update Embulk version v0.8.9 to v0.9.11 and refactor code for Java8 support [#21](https://github.com/embulk/embulk-output-ftp/pull/21)
|
3
|
+
## 0.2.0 - 2018-07-04
|
2
4
|
* [maintenance] Only support Java8 [#16](https://github.com/embulk/embulk-output-ftp/pull/16)
|
3
5
|
* [maintenance] Use embulk-util-ftp from Bintray [#15](https://github.com/embulk/embulk-output-ftp/pull/15)
|
4
6
|
|
data/README.md
CHANGED
@@ -117,32 +117,41 @@ $ ./gradlew gem # -t to watch change of files and rebuild continuously
|
|
117
117
|
|
118
118
|
## Test
|
119
119
|
|
120
|
-
|
120
|
+
Firstly install Docker and Docker compose then `docker-compose up -d`,
|
121
|
+
so that an FTP server will be locally launched then you can run tests with `./gradlew test`.
|
122
|
+
|
123
|
+
```sh
|
124
|
+
$ docker-compose up -d
|
125
|
+
Creating network "embulk-output-ftp_default" with the default driver
|
126
|
+
Creating embulk-output-ftp_server ... done
|
127
|
+
Creating embulk-output-ftps_server ... done
|
128
|
+
|
129
|
+
$ docker-compose ps
|
130
|
+
Name Command State Ports
|
131
|
+
---------------------------------------------------------------------------------------------------
|
132
|
+
embulk-output-ftp_server /usr/sbin/run-vsftpd.sh Up 20/tcp, 0.0.0.0:11021->21/tcp, 0.0.0.0:65000->65000/tcp, 0.0.0.0:65001->65001/tcp, 0.0.0.0:65002->65002/tcp, 0.0.0.0:65003->65003/tcp,
|
133
|
+
0.0.0.0:65004->65004/tcp
|
134
|
+
embulk-output-ftps_server /usr/sbin/run-vsftpd-with- ... Up 20/tcp, 0.0.0.0:990->21/tcp, 0.0.0.0:65005->65005/tcp, 0.0.0.0:65006->65006/tcp, 0.0.0.0:65007->65007/tcp, 0.0.0.0:65008->65008/tcp
|
135
|
+
|
121
136
|
$ ./gradlew test # -t to watch change of files and rebuild continuously
|
122
137
|
```
|
123
138
|
|
124
|
-
|
125
|
-
|
126
|
-
When environment variables are not set, skip some test cases.
|
139
|
+
If you want to use other FTP server to test, configure the following environment variables.
|
127
140
|
|
128
141
|
```
|
129
|
-
FTP_TEST_HOST
|
130
|
-
|
131
|
-
|
142
|
+
FTP_TEST_HOST (default: localhost)
|
143
|
+
FTP_TEST_PORT (default: 11021)
|
144
|
+
FTP_TEST_SSL_PORT (default:990)
|
145
|
+
FTP_TEST_USER (default: scott)
|
146
|
+
FTP_TEST_PASSWORD (default: tigger)
|
132
147
|
FTP_TEST_SSL_TRUSTED_CA_CERT_FILE
|
133
148
|
FTP_TEST_SSL_TRUSTED_CA_CERT_DATA
|
134
149
|
```
|
135
150
|
|
136
|
-
Following option is optional
|
137
|
-
```
|
138
|
-
FTP_TEST_PORT (default:21)
|
139
|
-
FTP_TEST_SSL__PORT (default:990)
|
140
|
-
```
|
141
|
-
|
142
151
|
If you're using Mac OS X El Capitan and GUI Applications(IDE), like as follows.
|
143
152
|
```xml
|
144
153
|
|
145
|
-
|
154
|
+
$ vi ~/Library/LaunchAgents/environment.plist
|
146
155
|
<?xml version="1.0" encoding="UTF-8"?>
|
147
156
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
148
157
|
<plist version="1.0">
|
data/build.gradle
CHANGED
@@ -17,20 +17,20 @@ configurations {
|
|
17
17
|
provided
|
18
18
|
}
|
19
19
|
|
20
|
-
version = "0.2.
|
20
|
+
version = "0.2.1"
|
21
21
|
|
22
22
|
sourceCompatibility = 1.8
|
23
23
|
targetCompatibility = 1.8
|
24
24
|
|
25
25
|
dependencies {
|
26
|
-
compile "org.embulk:embulk-core:0.
|
27
|
-
provided "org.embulk:embulk-core:0.
|
26
|
+
compile "org.embulk:embulk-core:0.9.11"
|
27
|
+
provided "org.embulk:embulk-core:0.9.11"
|
28
28
|
compile files("libs/ftp4j-1.7.2.jar")
|
29
29
|
compile 'org.embulk.input.ftp:embulk-util-ftp:0.1.6'
|
30
30
|
compile "org.bouncycastle:bcpkix-jdk15on:1.52"
|
31
31
|
testCompile "junit:junit:4.+"
|
32
|
-
testCompile "org.embulk:embulk-core:0.
|
33
|
-
testCompile "org.embulk:embulk-standards:0.
|
32
|
+
testCompile "org.embulk:embulk-core:0.9.11:tests"
|
33
|
+
testCompile "org.embulk:embulk-standards:0.9.11"
|
34
34
|
}
|
35
35
|
|
36
36
|
task classpath(type: Copy, dependsOn: ["jar"]) {
|
data/docker-compose.yml
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
version: '3'
|
2
|
+
services:
|
3
|
+
ftp_server:
|
4
|
+
container_name: embulk-output-ftp_server
|
5
|
+
image: "fauria/vsftpd"
|
6
|
+
environment:
|
7
|
+
- FTP_USER=scott
|
8
|
+
- FTP_PASS=tiger
|
9
|
+
- PASV_MIN_PORT=65000
|
10
|
+
- PASV_MAX_PORT=65004
|
11
|
+
ports:
|
12
|
+
- "11021:21"
|
13
|
+
- "65000-65004:65000-65004"
|
14
|
+
ftps_server:
|
15
|
+
container_name: embulk-output-ftps_server
|
16
|
+
build: ./docker-ftps
|
17
|
+
environment:
|
18
|
+
- FTP_USER=scott
|
19
|
+
- FTP_PASS=tiger
|
20
|
+
- PASV_MIN_PORT=65005
|
21
|
+
- PASV_MAX_PORT=65008
|
22
|
+
ports:
|
23
|
+
- "990:21"
|
24
|
+
- "65005-65008:65005-65008"
|
@@ -0,0 +1,9 @@
|
|
1
|
+
FROM fauria/vsftpd
|
2
|
+
|
3
|
+
COPY ca.key.pem /etc/pki/tls/private/vsftpd.key.pem
|
4
|
+
COPY ca.cert.pem /etc/pki/tls/certs/vsftpd.cert.pem
|
5
|
+
|
6
|
+
COPY run-vsftpd-with-ssl.sh /usr/sbin/
|
7
|
+
RUN chmod +x /usr/sbin/run-vsftpd-with-ssl.sh
|
8
|
+
|
9
|
+
CMD ["/usr/sbin/run-vsftpd-with-ssl.sh"]
|
@@ -0,0 +1,35 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIGEzCCA/ugAwIBAgIJAPF+x8rtCyyOMA0GCSqGSIb3DQEBCwUAMIGfMQswCQYD
|
3
|
+
VQQGEwJKUDEOMAwGA1UECAwFVG9reW8xFTATBgNVBAcMDEV4YW1wbGUgVG93bjEY
|
4
|
+
MBYGA1UECgwPRXhhbXBsZSBDb21wYW55MRgwFgYDVQQLDA9FeGFtcGxlIFNlY3Rp
|
5
|
+
b24xFDASBgNVBAMMC2V4YW1wbGUuY29tMR8wHQYJKoZIhvcNAQkBFhB0ZXN0QGV4
|
6
|
+
YW1wbGUuY29tMB4XDTE4MDcxNTE2MDIyMFoXDTM4MDcxMDE2MDIyMFowgZ8xCzAJ
|
7
|
+
BgNVBAYTAkpQMQ4wDAYDVQQIDAVUb2t5bzEVMBMGA1UEBwwMRXhhbXBsZSBUb3du
|
8
|
+
MRgwFgYDVQQKDA9FeGFtcGxlIENvbXBhbnkxGDAWBgNVBAsMD0V4YW1wbGUgU2Vj
|
9
|
+
dGlvbjEUMBIGA1UEAwwLZXhhbXBsZS5jb20xHzAdBgkqhkiG9w0BCQEWEHRlc3RA
|
10
|
+
ZXhhbXBsZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDHT2XK
|
11
|
+
9igFWH1iXVdwvS8U+bQJlSYafUHCDACTdzvNwJCwCwVkF5u7kOe5Tc3yVg/m7YVx
|
12
|
+
YldYaUSGhPHvVPp2sSCKl//Zqjcy0R5pLWNiEU8Omj55rBLWGHKrJzzFjcTMlbYs
|
13
|
+
FIqVAr7E/uOjBFuwZTqkVk2/Pl1VwMxB2/MwxlS8WadhVIpwe9s3bUNmuPTkp6Ol
|
14
|
+
dLDPRFV6Qwo0sV739PAmAi8UB4OcnrS4e6Aj+mlileMO8zv/f4LFldjA8uIrGDyP
|
15
|
+
w/tFu3g0BmUsrqBbcc7lJ2WmMjgtPHk9XoITPqW81VakhTO/v7s9qe7YS8fk33N9
|
16
|
+
+Ad7JMwotOVu0ekCRDQ1kqgXyxdgMBXt0iX0466nKSBwKNjMr8tJJqzAPbjlGysN
|
17
|
+
r8oVfllKQATfaXdIW+ZrxHBjpq4PzLuV9gFXYeBSRd1dIrgQk42G/fgdPMmY+tpe
|
18
|
+
XBA0BROStbj1hpeFjCOH8fhKFyE86ol93lVJkX5FFh7yCS0g3LCclTSiM2qEghzA
|
19
|
+
g81vwUrsrnfL+NJSCubDv8JfTuvaninihaq9Lql6BWXescaHEv3E47k9Tva+J8FO
|
20
|
+
q1zs6oBI8J1/PXZ99E+Kd1ADSDnI8dkYtaVO19JmYTfytUJpHnplGAuPeXV2H6ZP
|
21
|
+
rH7J4BG84mP0vlbz81w/uQK8nMdiMMNcK23LiQIDAQABo1AwTjAdBgNVHQ4EFgQU
|
22
|
+
NozLa3yA5zAf8nqEveqrZWLH0x0wHwYDVR0jBBgwFoAUNozLa3yA5zAf8nqEveqr
|
23
|
+
ZWLH0x0wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAaxcX1c+0UBNg
|
24
|
+
rDUx5T2hR7IbiQ7wrXbZUIUnT7JEhRUfx/uFmkZ/U+PYy+xz1/O4y2fKnZwGlkhh
|
25
|
+
6yY/iBLiZiwf4u1liUEBA5xvqsFLUQeo+UxLNHTdRG6HjyTHZaqlJsVvUG2TT5Ht
|
26
|
+
PetKnKLy/52eiZO+Trrx8J08Z8E7viUxmQ/qEVEEZC2alr1VNRlLz+68qDOv8hHI
|
27
|
+
bEliuGHtij+q8+aATj8T1Gn2I/g0w0sXQpGo5GQu7iujSn9Lo4RxvD2wRdOiq+gP
|
28
|
+
o2GUB1mkWV/FWMwBZSC+rYcGilKdyfLRC+WfOQBDtJwCowXl/P9d/4uoVS4F1Oj0
|
29
|
+
Qxb1kXmxEkpxd6kIMiu49ISAlM+xYtcpMq/GFrk5vLOjNW84rHOlCv52NaOTJag5
|
30
|
+
tEHziSW3Twk5fsdqid8L6jLdtDBLnlF+oNje0F2hlHgOAamsAdNQP9sT+6ujgzKq
|
31
|
+
5auy0GPORUTtUsJvnKFhq2sAWImuEBtZVjIHKCqv904VYs2/be3x5t8dJnESGUBG
|
32
|
+
CEiUbFhKr7jZg5+TnMHzc07yOXCy+NZGIVndVarmb28E4XJPkNRkHKc284h/Mb17
|
33
|
+
VPMXE4MU8bguMLEooVoFEedqbE4s0mvWxZBNsBuqGj/avmeixntjK4wZYxaWHkPJ
|
34
|
+
9KyJ4D6tpRJdvPjvqeYYvWN2DtPOjqk=
|
35
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,51 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
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
|
51
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
echo "ssl_enable=YES" >> /etc/vsftpd/vsftpd.conf
|
4
|
+
echo "rsa_cert_file=/etc/pki/tls/certs/vsftpd.cert.pem" >> /etc/vsftpd/vsftpd.conf
|
5
|
+
echo "rsa_private_key_file=/etc/pki/tls/private/vsftpd.key.pem" >> /etc/vsftpd/vsftpd.conf
|
6
|
+
echo "ssl_sslv2=NO" >> /etc/vsftpd/vsftpd.conf
|
7
|
+
echo "ssl_sslv3=NO" >> /etc/vsftpd/vsftpd.conf
|
8
|
+
echo "ssl_tlsv1=YES" >> /etc/vsftpd/vsftpd.conf
|
9
|
+
echo "force_local_data_ssl=YES" >> /etc/vsftpd/vsftpd.conf
|
10
|
+
echo "force_local_logins_ssl=YES" >> /etc/vsftpd/vsftpd.conf
|
11
|
+
|
12
|
+
/usr/sbin/run-vsftpd.sh
|
@@ -1,6 +1,5 @@
|
|
1
1
|
package org.embulk.output.ftp;
|
2
2
|
|
3
|
-
import com.google.common.base.Optional;
|
4
3
|
import com.google.common.base.Throwables;
|
5
4
|
import it.sauronsoftware.ftp4j.FTPAbortedException;
|
6
5
|
import it.sauronsoftware.ftp4j.FTPClient;
|
@@ -41,6 +40,7 @@ import java.net.ConnectException;
|
|
41
40
|
import java.nio.file.Path;
|
42
41
|
import java.nio.file.Paths;
|
43
42
|
import java.util.List;
|
43
|
+
import java.util.Optional;
|
44
44
|
|
45
45
|
public class FtpFileOutputPlugin implements FileOutputPlugin
|
46
46
|
{
|
@@ -405,7 +405,7 @@ public class FtpFileOutputPlugin implements FileOutputPlugin
|
|
405
405
|
|
406
406
|
if (task.getUser().isPresent()) {
|
407
407
|
log.info("Logging in with user {}", task.getUser().get());
|
408
|
-
client.login(task.getUser().get(), task.getPassword().
|
408
|
+
client.login(task.getUser().get(), task.getPassword().orElse(""));
|
409
409
|
}
|
410
410
|
|
411
411
|
log.info("Using passive mode");
|
@@ -21,7 +21,6 @@ import org.embulk.spi.Schema;
|
|
21
21
|
import org.embulk.spi.TransactionalFileOutput;
|
22
22
|
import org.embulk.standards.CsvParserPlugin;
|
23
23
|
import org.embulk.util.ftp.SSLPlugins;
|
24
|
-
import org.embulk.util.ftp.SSLPlugins.SSLPluginConfig;
|
25
24
|
|
26
25
|
import org.junit.Before;
|
27
26
|
import org.junit.BeforeClass;
|
@@ -30,7 +29,6 @@ import org.junit.Test;
|
|
30
29
|
import org.slf4j.Logger;
|
31
30
|
|
32
31
|
import static org.junit.Assert.assertEquals;
|
33
|
-
import static org.junit.Assume.assumeNotNull;
|
34
32
|
|
35
33
|
import java.io.BufferedInputStream;
|
36
34
|
import java.io.BufferedReader;
|
@@ -44,6 +42,7 @@ import java.lang.reflect.Method;
|
|
44
42
|
import java.security.GeneralSecurityException;
|
45
43
|
import java.util.Arrays;
|
46
44
|
import java.util.List;
|
45
|
+
import java.util.Map;
|
47
46
|
|
48
47
|
public class TestFtpFileOutputPlugin
|
49
48
|
{
|
@@ -67,19 +66,20 @@ public class TestFtpFileOutputPlugin
|
|
67
66
|
* FTP_TEST_SSL_TRUSTED_CA_CERT_FILE
|
68
67
|
*/
|
69
68
|
@BeforeClass
|
70
|
-
public static void initializeConstant()
|
69
|
+
public static void initializeConstant() throws Exception
|
71
70
|
{
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
71
|
+
final Map<String, String> env = System.getenv();
|
72
|
+
FTP_TEST_HOST = env.getOrDefault("FTP_TEST_HOST", "localhost");
|
73
|
+
FTP_TEST_PORT = Integer.valueOf(env.getOrDefault("FTP_TEST_PORT", "11021"));
|
74
|
+
FTP_TEST_SSL_PORT = Integer.valueOf(env.getOrDefault("FTP_TEST_SSL_PORT", "990"));
|
75
|
+
FTP_TEST_USER = env.getOrDefault("FTP_TEST_USER", "scott");
|
76
|
+
FTP_TEST_PASSWORD = env.getOrDefault("FTP_TEST_PASSWORD", "tiger");
|
77
|
+
FTP_TEST_SSL_TRUSTED_CA_CERT_FILE = env.getOrDefault("FTP_TEST_SSL_TRUSTED_CA_CERT_FILE",
|
78
|
+
"./docker-ftps/ca.cert.pem");
|
79
|
+
FTP_TEST_SSL_TRUSTED_CA_CERT_DATA = env.getOrDefault("FTP_TEST_SSL_TRUSTED_CA_CERT_DATA",
|
80
|
+
getFileContents("./docker-ftps/ca.cert.pem"));
|
81
|
+
|
82
|
+
FTP_TEST_DIRECTORY = getDirectory(env.getOrDefault("FTP_TEST_DIRECTORY", "/unittest/"));
|
83
83
|
FTP_TEST_PATH_PREFIX = FTP_TEST_DIRECTORY + "sample_";
|
84
84
|
LOCAL_PATH_PREFIX = Resources.getResource("sample_01.csv").getPath();
|
85
85
|
}
|
@@ -287,7 +287,7 @@ public class TestFtpFileOutputPlugin
|
|
287
287
|
.set("parser", parserConfig(schemaConfig()))
|
288
288
|
.set("type", "ftp")
|
289
289
|
.set("host", FTP_TEST_HOST)
|
290
|
-
.set("port",
|
290
|
+
.set("port", FTP_TEST_PORT)
|
291
291
|
.set("user", FTP_TEST_USER)
|
292
292
|
.set("password", FTP_TEST_PASSWORD)
|
293
293
|
.set("path_prefix", FTP_TEST_PATH_PREFIX)
|
@@ -435,4 +435,19 @@ public class TestFtpFileOutputPlugin
|
|
435
435
|
}
|
436
436
|
return bo.toByteArray();
|
437
437
|
}
|
438
|
+
|
439
|
+
private static String getFileContents(String path) throws Exception
|
440
|
+
{
|
441
|
+
StringBuilder sb = new StringBuilder();
|
442
|
+
try (InputStream is = new FileInputStream(new File(path))) {
|
443
|
+
BufferedReader br = new BufferedReader(new InputStreamReader(is));
|
444
|
+
String line = br.readLine();
|
445
|
+
|
446
|
+
while (line != null) {
|
447
|
+
sb.append(line).append("\n");
|
448
|
+
line = br.readLine();
|
449
|
+
}
|
450
|
+
}
|
451
|
+
return sb.toString();
|
452
|
+
}
|
438
453
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: embulk-output-ftp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Satoshi Akama
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +52,11 @@ files:
|
|
52
52
|
- build.gradle
|
53
53
|
- config/checkstyle/checkstyle.xml
|
54
54
|
- config/checkstyle/default.xml
|
55
|
+
- docker-compose.yml
|
56
|
+
- docker-ftps/Dockerfile
|
57
|
+
- docker-ftps/ca.cert.pem
|
58
|
+
- docker-ftps/ca.key.pem
|
59
|
+
- docker-ftps/run-vsftpd-with-ssl.sh
|
55
60
|
- embulk-output-ftp.gemspec
|
56
61
|
- gradle/wrapper/gradle-wrapper.jar
|
57
62
|
- gradle/wrapper/gradle-wrapper.properties
|
@@ -67,7 +72,7 @@ files:
|
|
67
72
|
- classpath/bcprov-jdk15on-1.52.jar
|
68
73
|
- classpath/ftp4j-1.7.2.jar
|
69
74
|
- classpath/embulk-util-ftp-0.1.6.jar
|
70
|
-
- classpath/embulk-output-ftp-0.2.
|
75
|
+
- classpath/embulk-output-ftp-0.2.1.jar
|
71
76
|
homepage: https://github.com/embulk/embulk-output-ftp
|
72
77
|
licenses:
|
73
78
|
- Apache 2.0
|