Skip to content

Commit 20aa4f3

Browse files
authored
Merge pull request #25 from Axway-API-Management-Plus/smtp
Support SMTP Connection Security
2 parents f051e2c + 965b85a commit 20aa4f3

File tree

3 files changed

+48
-48
lines changed

3 files changed

+48
-48
lines changed

README.md

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
# APIM Environmentalization
22

3-
Axway APIM supports environmentalization through Configuration Studio and envSettings.props file, it does partially support environment variables.
3+
Axway APIM supports environmentalization through Configuration Studio and envSettings.props file, it does partially support environment variables.
44

5-
Main objective of the project is to support environmentalization for EMT ( externally managed topology ) to reuse the container in upstream environments ( QA, Production, etc..). The same approach could be used for classic deployment as well.
5+
Main objective of the project is to support environmentalization for EMT ( externally managed topology ) to reuse the container in upstream environments ( QA, Production, etc..). The same approach could be used for classic deployment as well.
66

77
List of supported environment listed in EMT ( externally managed topology ) - [APIM Runtime Parameters](https://docs.axway.com/bundle/axway-open-docs/page/docs/apim_installation/apigw_containers/container_env_variables/index.html)
88

9-
Environment variables should be prefixed with **environment** for APIM. The **environment** prefix could be used in most of the filters and connections, [ Refer database connection environment prefix Usage](#database-environmentalization-example-with-environment-prefix).
9+
Environment variables should be prefixed with **environment** for APIM. The **environment** prefix could be used in most of the filters and connections, [ Refer database connection environment prefix Usage](#database-environmentalization-example-with-environment-prefix).
1010

1111
## Advantages of using environment variables
1212

13-
- Securly store credentilas (password and certificate) using Kubernetes secrets.
13+
- Securly store credentilas (password and certificate) using Kubernetes secrets.
1414
- Adhere to The Twelve-Factor App rule **Store config in the environment** - https://12factor.net/config
1515

1616

17-
## Database Environmentalization example with **environment** prefix.
17+
## Database Environmentalization example with **environment** prefix.
1818
- Database connection URL is environmentalized with environment variable db_url
1919

2020
![Database Connection](images/db.png)
2121

22-
- Database password should use the option Wildcard Password for environmentalization
22+
- Database password should use the option Wildcard Password for environmentalization
2323

2424
#### Environmentalization Classic APIM example
2525
**Remove "environment" prefix when referening environment variable**
@@ -65,9 +65,11 @@ environment:
6565
|smtp_manager_password|SMTP Server|Enables environmentalization of API manager SMTP and Alert Email **Password** field|
6666
|smtp_manager_username|SMTP Server|Enables environmentalization of API manager SMTP and Alert Email **Username** field|
6767
|smtp_manager_url|SMTP Server|Enables environmentalization of API manager SMTP and Alert Email **SMTP Server Hostname** field|
68+
|smtp_manager_connectionType|SMTP Server|Enables environmentalization of API manager SMTP and Alert Email **SMTP Connection Connection Security** field, possible values ** NONE, SSL, TLS**, default value **NONE** |
6869
|smtp_servername_password|SMTP Server|Enables environmentalization of **Password** field|
6970
|smtp_servername_username|SMTP Server|Enables environmentalization of **Username** field|
7071
|smtp_servername_url|SMTP Server|Enables environmentalization of **SMTP Server Hostname** field|
72+
|smtp_servername_connectionType|SMTP Server|Enables environmentalization of **SMTP Server Connection Security** field, possible values ** NONE, SSL, TLS**, default value **NONE** |
7173
|httpbasic_profilename_password|Client Authentication - Http Basic|Enables environmentalization of **Password** field|
7274
|disablehttps_portname|Client Authentication - Http Basic|Disables HTTPS Listener Interface, possible values true and false|
7375
|disablehttp_portname|Client Authentication - Http Basic|Disables HTTP Listener Interface, possible values true and false|
@@ -81,7 +83,7 @@ environment:
8183

8284
### Example
8385

84-
LDAP Connections, JMS, SMTP does not support environment variables.
86+
LDAP Connections, JMS, SMTP does not support environment variables.
8587

8688
For example LDAP environment variable follows a format **ldap_axway_username**
8789

@@ -142,7 +144,7 @@ $export disablehttps_portname=true
142144
$export disablehttp_portname=true
143145
```
144146

145-
- Radius
147+
- Radius
146148
```bash
147149
```
148150
### Cassandra
@@ -246,13 +248,13 @@ s2+QnHEKNi5n6eyF81l1X3AGOMp2uUF4CfU=
246248
-----END CERTIFICATE-----"
247249
```
248250
249-
- Connect to URL 2-Way SSL / Mutual SSL Authentication
250-
251-
To update Connect to URL SSL certificate, there are two environment variables used to set up certificate for SSL Authentication
251+
- Connect to URL 2-Way SSL / Mutual SSL Authentication
252252
253-
-- connecttourl_certandkey_sslauth
253+
To update Connect to URL SSL certificate, there are two environment variables used to set up certificate for SSL Authentication
254254
255-
-- connecttourlcertandkeypassword_sslauth
255+
-- connecttourl_certandkey_sslauth
256+
257+
-- connecttourlcertandkeypassword_sslauth
256258
257259
```bash
258260
$export connecttourl_certandkey_sslauth="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"
@@ -263,16 +265,16 @@ $export connecttourlcertandkey_sslauth = /opt/Axway/apigateway/certs/cert.p12
263265
# Use k8s secret to manage password
264266
$export connecttourlcertandkeypassword_sslauth=changeit
265267
```
266-
**sslauth** is the name of Connect to URL filter **WARNING**: Do not use blank spaces in Connect to URL filter name.
268+
**sslauth** is the name of Connect to URL filter **WARNING**: Do not use blank spaces in Connect to URL filter name.
267269

268270
![connect_to_url client_auth](images/connect2urlsslauth.PNG)
269271

270272
### Https Listener
271273

272274
- PKCS12 - To update the https listener certificate. There are two environment variables used to set up certificate on Listener interface
273-
275+
274276
-- certandkey_secureport
275-
277+
276278
-- certandkeypassword_secureport
277279

278280
```bash
@@ -284,13 +286,13 @@ $export certandkey_secureport = /opt/Axway/apigateway/certs/cert.p12
284286
# Use k8s secret to manage password
285287
$export certandkeypassword_secureport=changeit
286288
```
287-
**secureport** is the name of the https interface **WARNING**: Do not use blank spaces.
289+
**secureport** is the name of the https interface **WARNING**: Do not use blank spaces.
288290

289291
![secureport Interface](images/https_interface.png)
290292

291293
## Implemenation Details
292294

293-
This project uses **Loadable module** feature to support environmentalization [Refer Java interfaces for extending API Gateway for more information](https://docs.axway.com/bundle/axway-open-docs/page/docs/apigtw_devguide/java_extend_gateway/index.html).
295+
This project uses **Loadable module** feature to support environmentalization [Refer Java interfaces for extending API Gateway for more information](https://docs.axway.com/bundle/axway-open-docs/page/docs/apigtw_devguide/java_extend_gateway/index.html).
294296

295297

296298
### Build the project
@@ -320,21 +322,21 @@ $mvn clean install
320322
### Add Loadable Module to EMT Container
321323

322324
- Import Loadable Module
323-
Open Policystudio, Navigate to menu File -> Import -> Import Custom filters, select apim-policy-password-cert-env/src/main/resources/typeSet.xml. It will add Loadable module to entity store.
324-
325+
Open Policystudio, Navigate to menu File -> Import -> Import Custom filters, select apim-policy-password-cert-env/src/main/resources/typeSet.xml. It will add Loadable module to entity store.
326+
325327
- Export fed file ( e.g container_env.fed) to build container
326-
327-
- Build a container merge directory ( **--merge-dir** ) option
328328

329-
- The merge directory must be called apigateway and must have the same directory structure as in an API Gateway installation.
330-
- Copy the JAR file to a new directory /Users/axway/APIM/apigw-emt-scripts-2.1.0-SNAPSHOT/apigateway/ext/lib/ and specify /Users/axway/APIM/apigw-emt-scripts-2.1.0-SNAPSHOT/apigateway to the --merge-dir option.
331-
329+
- Build a container merge directory ( **--merge-dir** ) option
330+
331+
- The merge directory must be called apigateway and must have the same directory structure as in an API Gateway installation.
332+
- Copy the JAR file to a new directory /Users/axway/APIM/apigw-emt-scripts-2.1.0-SNAPSHOT/apigateway/ext/lib/ and specify /Users/axway/APIM/apigw-emt-scripts-2.1.0-SNAPSHOT/apigateway to the --merge-dir option.
333+
332334
```bash
333335
./build_gw_image.py --license=/Users/axway/APIM/apigw-emt-scripts-2.1.0-SNAPSHOT/licenses/apim.lic --default-cert --parent-image=apigw-base --merge-dir=/Users/axway/APIM/apigw-emt-scripts-2.1.0-SNAPSHOT/apigateway --fed=container_env.fed --out-image=apim:latest
334336
```
335-
- Push it to docker registry if needed.
337+
- Push it to docker registry if needed.
336338

337-
### Add Loadable Module to classic API Gateway
339+
### Add Loadable Module to classic API Gateway
338340

339341

340342

@@ -350,7 +352,7 @@ Guide to Externalize EMT Admin node manager and gateway domain certificates - [d
350352

351353
## Contributing
352354

353-
![Contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen)
355+
![Contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen)
354356

355357
Please read [Contributing.md](https://github.com/Axway-API-Management-Plus/Common/blob/master/Contributing.md) for details on our code of conduct, and the process for submitting pull requests to us.
356358
Also please read this page on [how to contribute](https://github.com/Axway-API-Management-Plus/apimanager-swagger-promote/wiki/7.1-Contribute-to-this-project) to this project.

pom.xml

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>com.axway</groupId>
88
<artifactId>apim-env-module</artifactId>
9-
<version>1.1.5</version>
9+
<version>1.1.6</version>
1010

1111
<name>apim-env-module</name>
1212
<url>https://axway.com</url>
@@ -15,9 +15,7 @@
1515
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1616
<maven.compiler.source>1.8</maven.compiler.source>
1717
<maven.compiler.target>1.8</maven.compiler.target>
18-
<api.version>7.7</api.version>
19-
<!--apim.lib.path>/Users/rnatarajan/AxwayProducts/apim_7_7_nov/lib</apim.lib.path-->
20-
<apim.lib.path>C:\Axway\Axway77March2021\apigateway\system\lib</apim.lib.path>
18+
<api.version>7.7.0.20210830-2</api.version>
2119
</properties>
2220

2321
<dependencies>
@@ -30,58 +28,42 @@
3028
<dependency>
3129
<groupId>apigw-common</groupId>
3230
<artifactId>apigw-common</artifactId>
33-
<scope>system</scope>
3431
<version>${api.version}</version>
35-
<systemPath>${apim.lib.path}/plugins/apigw-common-2.0.1.jar</systemPath>
3632
</dependency>
3733
<dependency>
3834
<groupId>vordel-trace</groupId>
3935
<artifactId>vordel-trace</artifactId>
40-
<scope>system</scope>
4136
<version>${api.version}</version>
42-
<systemPath>${apim.lib.path}/plugins/vordel-trace-7.7.0.20210330-6.jar</systemPath>
4337
</dependency>
4438
<dependency>
4539
<groupId>vordel-apigateway</groupId>
4640
<artifactId>vordel-apigateway</artifactId>
47-
<scope>system</scope>
4841
<version>${api.version}</version>
49-
<systemPath>${apim.lib.path}/vordel-apigateway-7.7.0.20210330-6.jar</systemPath>
5042
</dependency>
5143
<dependency>
5244
<groupId>vordel-core-runtime</groupId>
5345
<artifactId>vordel-core-runtime</artifactId>
54-
<scope>system</scope>
5546
<version>${api.version}</version>
56-
<systemPath>${apim.lib.path}/vordel-core-runtime-7.7.0.20210330-6.jar</systemPath>
5747
</dependency>
5848
<dependency>
5949
<groupId>es-core</groupId>
6050
<artifactId>es-core</artifactId>
61-
<scope>system</scope>
6251
<version>${api.version}</version>
63-
<systemPath>${apim.lib.path}/plugins/es-core-2.0.11.jar</systemPath>
6452
</dependency>
6553
<dependency>
6654
<groupId>vordel-common</groupId>
6755
<artifactId>vordel-common</artifactId>
68-
<scope>system</scope>
6956
<version>${api.version}</version>
70-
<systemPath>${apim.lib.path}/plugins/vordel-common-7.7.0.20210330-6.jar</systemPath>
7157
</dependency>
7258
<dependency>
7359
<groupId>vordel-system</groupId>
7460
<artifactId>vordel-system</artifactId>
75-
<scope>system</scope>
7661
<version>${api.version}</version>
77-
<systemPath>${apim.lib.path}/plugins/vordel-system-7.7.0.20210330-6.jar</systemPath>
7862
</dependency>
7963
<dependency>
8064
<groupId>vordel-config</groupId>
8165
<artifactId>vordel-config</artifactId>
82-
<scope>system</scope>
8366
<version>${api.version}</version>
84-
<systemPath>${apim.lib.path}/plugins/vordel-config-7.7.0.20210330-6.jar</systemPath>
8567
</dependency>
8668
<dependency>
8769
<groupId>org.apache.logging.log4j</groupId>

src/main/java/com/axway/ExternalConfigLoader.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,10 +309,12 @@ private void updateSMTP(EntityStore entityStore, Credential credential) {
309309
entity = getEntity(entityStore, "/[SMTPServerGroup]name=SMTP Servers/[SMTPServer]name=" + credential.getFilterName());
310310
}
311311
setUsernameAndPassword(credential, entity, "username");
312+
312313
String host = credential.getUrl();
313314
if (host != null) {
314315
entity.setStringField("smtpServer", host);
315316
}
317+
updateMailConnectionType(entity, credential.getFilterName());
316318
entityStore.updateEntity(entity);
317319
}
318320

@@ -327,9 +329,21 @@ private void updateAlertSMTP(EntityStore entityStore, Credential credential) {
327329
if (host != null) {
328330
entity.setStringField("smtp", host);
329331
}
332+
updateMailConnectionType(entity, credential.getFilterName());
330333
entityStore.updateEntity(entity);
331334
}
332335
}
336+
private void updateMailConnectionType(Entity entity, String filterName) {
337+
String connectionType = System.getenv("smtp_" + filterName + "_connectionType");
338+
if (connectionType != null) {
339+
// Possible Values NONE, SSL TLS
340+
if (MailConnectionTypes.valueOf(connectionType) != null) {
341+
entity.setStringField("connectionType", connectionType);
342+
} else {
343+
Trace.error("Invalid connection type : " + connectionType);
344+
}
345+
}
346+
}
333347

334348
private void updateCassandraCert(EntityStore entityStore, String alias, boolean append) {
335349
String shorthandKey = "/[CassandraSettings]name=Cassandra Settings";
@@ -602,4 +616,6 @@ private void updateCassandraConsistencyLevel(ShorthandKeyFinder shorthandKeyFind
602616
}
603617
}
604618

619+
public enum MailConnectionTypes {NONE, SSL, TLS}
620+
605621
}

0 commit comments

Comments
 (0)