aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/traccar/Context.java4
-rw-r--r--src/main/java/org/traccar/config/Keys.java8
-rw-r--r--src/main/java/org/traccar/sms/SnsSmsClient.java50
3 files changed, 34 insertions, 28 deletions
diff --git a/src/main/java/org/traccar/Context.java b/src/main/java/org/traccar/Context.java
index 0dce70b93..40340b1f0 100644
--- a/src/main/java/org/traccar/Context.java
+++ b/src/main/java/org/traccar/Context.java
@@ -318,9 +318,7 @@ public final class Context {
if (config.hasKey(Keys.SMS_HTTP_URL)) {
smsManager = new HttpSmsClient();
- }
-
- if (config.hasKey(Keys.AWS_SNS_ENABLED)) {
+ } else if (config.hasKey(Keys.AWS_SNS_ENABLED)) {
smsManager = new SnsSmsClient();
}
diff --git a/src/main/java/org/traccar/config/Keys.java b/src/main/java/org/traccar/config/Keys.java
index 937510f10..ac105b99c 100644
--- a/src/main/java/org/traccar/config/Keys.java
+++ b/src/main/java/org/traccar/config/Keys.java
@@ -691,14 +691,14 @@ public final class Keys {
* AWS Access Key with SNS permission.
*/
public static final ConfigKey<String> AWS_ACCESS_KEY = new ConfigKey<>(
- "aws.access",
+ "sms.aws.access",
Collections.singletonList(KeyType.GLOBAL));
/**
* AWS Secret Access Key with SNS permission.
*/
public static final ConfigKey<String> AWS_SECRET_KEY = new ConfigKey<>(
- "aws.secret",
+ "sms.aws.secret",
Collections.singletonList(KeyType.GLOBAL));
/**
@@ -706,7 +706,7 @@ public final class Keys {
* Use 'enable' to send message with SNS or 'disable' to stop using SNS
*/
public static final ConfigKey<String> AWS_SNS_ENABLED = new ConfigKey<>(
- "aws.sns.enabled",
+ "sms.sns.enabled",
Collections.singletonList(KeyType.GLOBAL));
/**
@@ -714,7 +714,7 @@ public final class Keys {
* Make sure to use regions that are supported for messaging.
*/
public static final ConfigKey<String> AWS_REGION = new ConfigKey<>(
- "aws.region",
+ "sms.aws.region",
Collections.singletonList(KeyType.GLOBAL));
/**
diff --git a/src/main/java/org/traccar/sms/SnsSmsClient.java b/src/main/java/org/traccar/sms/SnsSmsClient.java
index 8ac234605..f8b05b1ce 100644
--- a/src/main/java/org/traccar/sms/SnsSmsClient.java
+++ b/src/main/java/org/traccar/sms/SnsSmsClient.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2021 Anton Tananaev (anton@traccar.org)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.traccar.sms;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
@@ -20,29 +35,23 @@ import java.util.Map;
public class SnsSmsClient implements SmsManager {
private static final Logger LOGGER = LoggerFactory.getLogger(SnsSmsClient.class);
- private final String accessKey;
- private final String secretKey;
- private final String region;
-
- private final String snsStatus;
private final AmazonSNS snsClient;
public SnsSmsClient() {
- accessKey = Context.getConfig().getString(Keys.AWS_ACCESS_KEY);
- secretKey = Context.getConfig().getString(Keys.AWS_SECRET_KEY);
- snsStatus = Context.getConfig().getString(Keys.AWS_SNS_ENABLED);
- region = Context.getConfig().getString(Keys.AWS_REGION);
- snsClient = awsSNSClient(accessKey, secretKey, region);
-
- if (!snsStatus.equals("true") || accessKey == null || secretKey == null || region == null) {
- LOGGER.error("SNS Not Configured Properly. Please provide valid config.");
+ if (!Context.getConfig().getString(Keys.AWS_SNS_ENABLED).equals("true") ||
+ Context.getConfig().getString(Keys.AWS_ACCESS_KEY) == null ||
+ Context.getConfig().getString(Keys.AWS_SECRET_KEY) == null ||
+ Context.getConfig().getString(Keys.AWS_REGION) == null) {
+ throw new RuntimeException("SNS Not Configured Properly. Please provide valid config.");
}
+ snsClient = awsSNSClient();
}
- public AmazonSNS awsSNSClient(String accessKey, String secretKey, String region) {
- BasicAWSCredentials awsCreds = new BasicAWSCredentials(accessKey, secretKey);
- return AmazonSNSClientBuilder.standard().withRegion(region)
- .withCredentials(new AWSStaticCredentialsProvider(awsCreds)).build();
+ public AmazonSNS awsSNSClient() {
+ BasicAWSCredentials awsCredentials = new BasicAWSCredentials(Context.getConfig().getString(Keys.AWS_ACCESS_KEY),
+ Context.getConfig().getString(Keys.AWS_SECRET_KEY));
+ return AmazonSNSClientBuilder.standard().withRegion(Context.getConfig().getString(Keys.AWS_REGION))
+ .withCredentials(new AWSStaticCredentialsProvider(awsCredentials)).build();
}
public void sendSNSMessage(String message, String destAddress) {
@@ -51,18 +60,17 @@ public class SnsSmsClient implements SmsManager {
new MessageAttributeValue().withStringValue("SNS").withDataType("String"));
smsAttributes.put("AWS.SNS.SMS.SMSType",
new MessageAttributeValue().withStringValue("Transactional").withDataType("String"));
-
- PublishResult result = this.snsClient.publish(new PublishRequest().withMessage(message)
+ snsClient.publish(new PublishRequest().withMessage(message)
.withPhoneNumber(destAddress).withMessageAttributes(smsAttributes));
}
- @java.lang.Override
+ @Override
public void sendMessageSync(String destAddress, String message, boolean command)
throws InterruptedException, MessageException {
sendSNSMessage(message, destAddress);
}
- @java.lang.Override
+ @Override
public void sendMessageAsync(String destAddress, String message, boolean command) {
sendSNSMessage(message, destAddress);
}