From 8d6d0f43c5b9f377f9eb081423ca89f5d4bf0920 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Thu, 1 Jun 2023 19:58:42 +0530 Subject: [PATCH 1/4] Vulnerability fixes --- .../controller/users/IEMRAdminController.java | 17 +- .../iemr/common/utils/encryption/AESUtil.java | 156 ++++++++++++++++++ src/main/resources/application.properties | 104 ------------ 3 files changed, 170 insertions(+), 107 deletions(-) create mode 100644 src/main/java/com/iemr/common/utils/encryption/AESUtil.java diff --git a/src/main/java/com/iemr/common/controller/users/IEMRAdminController.java b/src/main/java/com/iemr/common/controller/users/IEMRAdminController.java index e52ff406..aa506495 100644 --- a/src/main/java/com/iemr/common/controller/users/IEMRAdminController.java +++ b/src/main/java/com/iemr/common/controller/users/IEMRAdminController.java @@ -36,6 +36,7 @@ import com.iemr.common.model.user.LoginRequestModel; import com.iemr.common.model.user.LoginResponseModel; import com.iemr.common.service.users.IEMRAdminUserService; +import com.iemr.common.utils.encryption.AESUtil; import com.iemr.common.utils.exception.IEMRException; import com.iemr.common.utils.mapper.InputMapper; import com.iemr.common.utils.mapper.OutputMapper; @@ -54,6 +55,13 @@ public class IEMRAdminController { private InputMapper inputMapper = new InputMapper(); private IEMRAdminUserService iemrAdminUserServiceImpl; + + private AESUtil aesUtil; + + @Autowired + public void setAesUtil(AESUtil aesUtil) { + this.aesUtil = aesUtil; + } @Autowired public void setIemrAdminUserService(IEMRAdminUserService iemrAdminUserService) { @@ -92,7 +100,9 @@ public String userAuthenticate( OutputResponse response = new OutputResponse(); logger.info("userAuthenticate request - " + m_User + " " + m_User.getUserName() + " " + m_User.getPassword()); try { - List mUser = iemrAdminUserServiceImpl.userAuthenticate(m_User.getUserName(), m_User.getPassword()); + String decryptPassword = aesUtil.decrypt("Piramal12Piramal", m_User.getPassword()); + logger.info("decryptPassword : " + decryptPassword); + List mUser = iemrAdminUserServiceImpl.userAuthenticate(m_User.getUserName(), decryptPassword); JSONObject resMap = new JSONObject(); JSONObject serviceRoleMultiMap = new JSONObject(); JSONObject serviceRoleMap = new JSONObject(); @@ -429,8 +439,9 @@ public String setPassword( } User mUser = mUsers.get(0); String setStatus; - noOfRowModified = iemrAdminUserServiceImpl.setForgetPassword(mUser, m_user.getPassword(), - m_user.getTransactionId(),m_user.getIsAdmin()); + String decryptPassword = aesUtil.decrypt("Piramal12Piramal", m_user.getPassword()); + noOfRowModified = iemrAdminUserServiceImpl.setForgetPassword(mUser, decryptPassword, + m_user.getTransactionId(), m_user.getIsAdmin()); if (noOfRowModified > 0) { setStatus = "Password Changed"; } else { diff --git a/src/main/java/com/iemr/common/utils/encryption/AESUtil.java b/src/main/java/com/iemr/common/utils/encryption/AESUtil.java new file mode 100644 index 00000000..64aa9abf --- /dev/null +++ b/src/main/java/com/iemr/common/utils/encryption/AESUtil.java @@ -0,0 +1,156 @@ +package com.iemr.common.utils.encryption; +import java.nio.charset.StandardCharsets; +import java.security.InvalidAlgorithmParameterException; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.security.spec.InvalidKeySpecException; +import java.security.spec.KeySpec; +import java.util.Objects; + +import javax.crypto.BadPaddingException; +import javax.crypto.Cipher; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.SecretKey; +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.PBEKeySpec; +import javax.crypto.spec.SecretKeySpec; +import javax.xml.bind.DatatypeConverter; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +@Component +public class AESUtil { + public enum DataType { + HEX, + BASE64 + } + + private static final Logger logger = LoggerFactory.getLogger(AESUtil.class); + private static final String CIPHER_ALGORITHM = "AES/CBC/PKCS5Padding"; + private static final String SECRET_KEY_ALGORITHM = "PBKDF2WithHmacSHA1"; + private static final String KEY_ALGORITHM = "AES"; + + private final int IV_SIZE = 128; + + private int iterationCount = 1989; + private int keySize = 256; + + private int saltLength; + + private final DataType dataType = DataType.BASE64; + + private Cipher cipher; + + public AESUtil() { + try { + cipher = Cipher.getInstance(CIPHER_ALGORITHM); + saltLength = this.keySize / 4; + } catch (NoSuchPaddingException | NoSuchAlgorithmException e) { + logger.info(e.getMessage()); + } + } + + public AESUtil(int keySize, int iterationCount) { + this.keySize = keySize; + this.iterationCount = iterationCount; + try { + cipher = Cipher.getInstance(CIPHER_ALGORITHM); + saltLength = this.keySize / 4; + } catch (NoSuchPaddingException | NoSuchAlgorithmException e) { + logger.info(e.getMessage()); + } + } + + public String decrypt(String salt, String iv, String passPhrase, String cipherText) { + try { + logger.info("passPhrase : " + passPhrase); + SecretKey key = generateKey(salt, passPhrase); + logger.info("key : " + key); + byte[] encrypted; + if (dataType.equals(DataType.HEX)) { + encrypted = fromHex(cipherText); + logger.info("encrypted 1 : " + encrypted); + } else { + encrypted = fromBase64(cipherText); + logger.info("encrypted 2 : " + encrypted); + } + byte[] decrypted = doFinal(Cipher.DECRYPT_MODE, key, iv, encrypted); + logger.info("decrypted : " + decrypted); + return new String(Objects.requireNonNull(decrypted), StandardCharsets.UTF_8); + } catch (Exception e) { + return null; + } + } + + public String decrypt(String passPhrase, String cipherText) { + try { + logger.info("cipherText : " + cipherText); + String salt = cipherText.substring(0, saltLength); + logger.info("salt : " + salt); + int ivLength = IV_SIZE / 4; + logger.info("ivLength : " + ivLength); + String iv = cipherText.substring(saltLength, saltLength + ivLength); + logger.info("iv : " + iv); + String ct = cipherText.substring(saltLength + ivLength); + logger.info("ct : " + ct); + return decrypt(salt, iv, passPhrase, ct); + } catch (Exception e) { + return null; + } + } + + private SecretKey generateKey(String salt, String passPhrase) { + try { + SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance(SECRET_KEY_ALGORITHM); + KeySpec keySpec = new PBEKeySpec(passPhrase.toCharArray(), fromHex(salt), iterationCount, keySize); + return new SecretKeySpec(secretKeyFactory.generateSecret(keySpec).getEncoded(), KEY_ALGORITHM); + } catch (NoSuchAlgorithmException | InvalidKeySpecException e) { + logger.info(e.getMessage()); + } + return null; + } + + private static byte[] fromBase64(String str) { + return DatatypeConverter.parseBase64Binary(str.trim()); + } + + private static String toBase64(byte[] ba) { + return DatatypeConverter.printBase64Binary(ba); + } + + private static byte[] fromHex(String str) { + logger.info("fromHex " + str); + return DatatypeConverter.parseHexBinary(str); + } + + private static String toHex(byte[] ba) { + logger.info("toHex " + ba); + return DatatypeConverter.printHexBinary(ba); + } + + private byte[] doFinal(int mode, SecretKey secretKey, String iv, byte[] bytes) throws IllegalBlockSizeException, BadPaddingException { + try { + logger.info("Indide do finel method "); + cipher.init(mode, secretKey, new IvParameterSpec(fromHex(iv))); + logger.info("Indide do finel method 2 : "+bytes); + return cipher.doFinal(bytes); + } catch (InvalidAlgorithmParameterException | IllegalBlockSizeException | BadPaddingException + | InvalidKeyException e) { + logger.info(e.getMessage()); + } + logger.info("outside of dofinal : "+ bytes); + return cipher.doFinal(bytes); + } + + private static byte[] generateRandom(int length) { + SecureRandom random = new SecureRandom(); + byte[] randomBytes = new byte[length]; + random.nextBytes(randomBytes); + return randomBytes; + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 44f44555..da2efd7c 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -224,107 +224,3 @@ failedLoginAttempt=5 # always press enter after last line -# Test env -# DB Connections -spring.jpa.database=default - -##--------------------------------------------## Primary db------------------------------------------------------------------- - -spring.datasource.username=piramaldev -spring.datasource.password=Piramal@2017 -spring.datasource.url=jdbc:mysql://10.208.122.38:3306/db_iemr?autoReconnect=true&useSSL=false -spring.datasource.driver-class-name=com.mysql.jdbc.Driver - - -secondary.datasource.username=piramaldev -secondary.datasource.password=Piramal@2017 -secondary.datasource.url=jdbc:mysql://10.208.122.38:3306/db_reporting?autoReconnect=true&useSSL=false -secondary.datasource.driver-class-name=com.mysql.jdbc.Driver -##-------------------------------------------------------------# KM config-------------------------------------------------- - -km-base-url=http://10.208.122.38:8084/OpenKM -km-base-path=10.208.122.38:8084/OpenKM -##----------------------------------------------# CTI Config----------------------------------------------------------------- - -cti-server-ip=10.208.122.99 -cti-logger_base_url=http://10.208.122.99/logger -##-------------------------------------------------#### Identity Config-------------------------------------------------------------- - -identity-api-url=http://10.208.122.38:8080/identity-0.0.1 -identity-1097-api-url=http://10.208.122.38:8080/1097identityapi-v1.0 - -### generate Beneficiary Config -genben-api=http://10.208.122.38:8080/bengenapi-v1.0 - -##---------------------------------------------#### SMS Configuration------------------------------------------------------------------ - -send-sms=false - -###SMS Scheduler configurations -start-sms-scheduler=true -cron-scheduler-sms=0 0/1 * * * ? * -##----------------------------------------------#### Email Configuration----------------------------------------------------------------- - -send-email=false - -###Email Scheduler configurations -start-email-scheduler=true -cron-scheduler-email=0 0/1 * * * ? * -##-------------------------------###cti data sync Scheduler configurations------------------------------------------------------ - -start-ctidatasync-scheduler=false -cron-scheduler-ctidatasync=0 00 01 * * ? * -##---------------------------------#### Registration schedular for Avni------------------------------------------------------------------------------ - -start-avni-scheduler=false -cron-avni-registration=0 0/1 * * * ? * -##------------------------------------------------#### Everwell Regsitration Scheduler--------------------------------------------------------------- - -start-registration-scheduler=false -cron-scheduler-registration=0 34 19 * * ? * -##----------------------------------------------------#everwell data sync----------------------------------------------------------- - -start-everwelldatasync-scheduler=false -cron-scheduler-everwelldatasync=0 0/5 * * * ? * -##-----------------------------------------------#NHM data dashboard schedular---------------------------------------------------------------- -#run in every 2 hrs -start-nhmdashboard-scheduler=true -cron-scheduler-nhmdashboard=0 0 0/2 * * ? * - - -## how much old data it should fetch -## n day / n hour // n min -get-agent-summary-report-job=2 hour -## n day / n hour // n min -get-details-call-report-job=2 hour -##-------------------------------------------------### Redis IP-------------------------------------------------------------- - -spring.redis.host=localhost - -##--------------------------------------------------------------------------------------------------------------- -###CTI data sync schedular -cz-duration=40 -##--------------------------------------------------------------------------------------------------------------- -## prescription template -TMprescriptionTemplate=TMPrescription -##--------------------------------------------------------------------------------------------------------------- -##duration for everwell calender -everwellCalendarDuration=15 - ##--------------------------------------------------------------------------------------------------------------- -##lonic variables -lonicPageSize=10 - ##--------------------------------------------------------------------------------------------------------------- -#snomedcti -snomedCTPageSize=10 -##--------------------------------------------------------------------------------------------------------------- -#call retry count -callRetryConfiguration=3 -##--------------------------------------------------------------------------------------------------------------- -#avni registration Duration -avniRegistrationLimit=7 - - - - - - From 78bfc7fd09e54cb0f39cb33d4dad06aad54cad5d Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Thu, 1 Jun 2023 20:06:23 +0530 Subject: [PATCH 2/4] removed unwanted loggers --- .../iemr/common/utils/encryption/AESUtil.java | 25 ++++--------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/iemr/common/utils/encryption/AESUtil.java b/src/main/java/com/iemr/common/utils/encryption/AESUtil.java index 64aa9abf..534a25ac 100644 --- a/src/main/java/com/iemr/common/utils/encryption/AESUtil.java +++ b/src/main/java/com/iemr/common/utils/encryption/AESUtil.java @@ -68,19 +68,14 @@ public AESUtil(int keySize, int iterationCount) { public String decrypt(String salt, String iv, String passPhrase, String cipherText) { try { - logger.info("passPhrase : " + passPhrase); - SecretKey key = generateKey(salt, passPhrase); - logger.info("key : " + key); + SecretKey key = generateKey(salt, passPhrase); byte[] encrypted; if (dataType.equals(DataType.HEX)) { encrypted = fromHex(cipherText); - logger.info("encrypted 1 : " + encrypted); } else { encrypted = fromBase64(cipherText); - logger.info("encrypted 2 : " + encrypted); } byte[] decrypted = doFinal(Cipher.DECRYPT_MODE, key, iv, encrypted); - logger.info("decrypted : " + decrypted); return new String(Objects.requireNonNull(decrypted), StandardCharsets.UTF_8); } catch (Exception e) { return null; @@ -89,15 +84,10 @@ public String decrypt(String salt, String iv, String passPhrase, String cipherTe public String decrypt(String passPhrase, String cipherText) { try { - logger.info("cipherText : " + cipherText); - String salt = cipherText.substring(0, saltLength); - logger.info("salt : " + salt); + String salt = cipherText.substring(0, saltLength); int ivLength = IV_SIZE / 4; - logger.info("ivLength : " + ivLength); String iv = cipherText.substring(saltLength, saltLength + ivLength); - logger.info("iv : " + iv); String ct = cipherText.substring(saltLength + ivLength); - logger.info("ct : " + ct); return decrypt(salt, iv, passPhrase, ct); } catch (Exception e) { return null; @@ -124,26 +114,21 @@ private static String toBase64(byte[] ba) { } private static byte[] fromHex(String str) { - logger.info("fromHex " + str); - return DatatypeConverter.parseHexBinary(str); + return DatatypeConverter.parseHexBinary(str); } private static String toHex(byte[] ba) { - logger.info("toHex " + ba); - return DatatypeConverter.printHexBinary(ba); + return DatatypeConverter.printHexBinary(ba); } private byte[] doFinal(int mode, SecretKey secretKey, String iv, byte[] bytes) throws IllegalBlockSizeException, BadPaddingException { try { - logger.info("Indide do finel method "); - cipher.init(mode, secretKey, new IvParameterSpec(fromHex(iv))); - logger.info("Indide do finel method 2 : "+bytes); + cipher.init(mode, secretKey, new IvParameterSpec(fromHex(iv))); return cipher.doFinal(bytes); } catch (InvalidAlgorithmParameterException | IllegalBlockSizeException | BadPaddingException | InvalidKeyException e) { logger.info(e.getMessage()); } - logger.info("outside of dofinal : "+ bytes); return cipher.doFinal(bytes); } From d17c64a17b326f8329923fb9eb9daf3bc86b73d6 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Wed, 7 Jun 2023 19:21:41 +0530 Subject: [PATCH 3/4] super Admin User Authenticate Changes --- .../com/iemr/common/controller/users/IEMRAdminController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/iemr/common/controller/users/IEMRAdminController.java b/src/main/java/com/iemr/common/controller/users/IEMRAdminController.java index aa506495..a2869673 100644 --- a/src/main/java/com/iemr/common/controller/users/IEMRAdminController.java +++ b/src/main/java/com/iemr/common/controller/users/IEMRAdminController.java @@ -285,7 +285,8 @@ public String superUserAuthenticate( if (!m_User.getUserName().equalsIgnoreCase("SuperAdmin")) { throw new IEMRException("Please log with admin credentials"); } - User mUser = iemrAdminUserServiceImpl.superUserAuthenticate(m_User.getUserName(), m_User.getPassword()); + String decryptPassword = aesUtil.decrypt("Piramal12Piramal", m_User.getPassword()); + User mUser = iemrAdminUserServiceImpl.superUserAuthenticate(m_User.getUserName(), decryptPassword); JSONObject resMap = new JSONObject(); JSONObject previlegeObj = new JSONObject(); //condition added to check for concurrent login From f6d0c651dede763c067c8b6f9dda71cbd07fb443 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Thu, 8 Jun 2023 18:24:47 +0530 Subject: [PATCH 4/4] Password Encryption Changes --- pom.xml | 6 +- src/main/environment/common_dev.properties | 8 +- src/main/environment/common_local.properties | 4 +- src/main/environment/common_test.properties | 8 +- src/main/environment/common_uat.properties | 4 +- .../iemr/common/config/PrimaryDBConfig.java | 18 ++- .../iemr/common/config/SecondaryDBConfig.java | 21 +-- .../DoorToDoorServiceImpl.java | 18 ++- .../service/email/EmailServiceImpl.java | 15 ++- .../EverwellRegistrationServiceImpl.java | 12 +- .../common/service/otp/OTPHandlerImpl.java | 15 ++- .../common/service/sms/SMSServiceImpl.java | 15 ++- .../service/swaasa/SwassaServiceImpl.java | 28 ++-- .../com/iemr/common/utils/CryptoUtil.java | 55 ++++++++ src/main/resources/application.properties | 124 ++++++++++++++++-- 15 files changed, 257 insertions(+), 94 deletions(-) create mode 100644 src/main/java/com/iemr/common/utils/CryptoUtil.java diff --git a/pom.xml b/pom.xml index bf93b282..900e401d 100644 --- a/pom.xml +++ b/pom.xml @@ -330,11 +330,7 @@ - - com.github.ulisesbocchio - jasypt-spring-boot-starter - 2.0.0 - + org.apache.poi diff --git a/src/main/environment/common_dev.properties b/src/main/environment/common_dev.properties index 6f5527f8..dd232803 100644 --- a/src/main/environment/common_dev.properties +++ b/src/main/environment/common_dev.properties @@ -3,14 +3,14 @@ spring.jpa.database=default ## Primary db -encDbUserName=0YaEPoKpzM3TrEAHTLYQaf+DfR4mdaeP -encDbPass=V+g/nL6/+ely0bgD7Du0yX83xNRl1H9Y +encDbUserName=zFlYsp9Z0s+lRvLM15A3g/Ba0w8VGs/1usuW7EsGF3k= +encDbPass=JGGAGn5wTlrbTLUHY+5BzfBa0w8VGs/1usuW7EsGF3k= spring.datasource.url=jdbc:mysql://10.208.122.32:3306/db_iemr?autoReconnect=true&useSSL=false spring.datasource.driver-class-name=com.mysql.jdbc.Driver ## Secondary db -encDbUserNameSec=0YaEPoKpzM3TrEAHTLYQaf+DfR4mdaeP -encDbPassSec=V+g/nL6/+ely0bgD7Du0yX83xNRl1H9Y +encDbUserNameSec=zFlYsp9Z0s+lRvLM15A3g/Ba0w8VGs/1usuW7EsGF3k= +encDbPassSec=JGGAGn5wTlrbTLUHY+5BzfBa0w8VGs/1usuW7EsGF3k= secondary.datasource.url=jdbc:mysql://10.208.122.32:3306/db_reporting?autoReconnect=true&useSSL=false secondary.datasource.driver-class-name=com.mysql.jdbc.Driver diff --git a/src/main/environment/common_local.properties b/src/main/environment/common_local.properties index aa905ffe..8f19692b 100644 --- a/src/main/environment/common_local.properties +++ b/src/main/environment/common_local.properties @@ -1,8 +1,8 @@ # dev env # DB Connections spring.datasource.url=jdbc:mysql://localhost:3306/db_iemr?autoReconnect=true&useSSL=false -encDbUserName=0YaEPoKpzM3TrEAHTLYQaf+DfR4mdaeP -encDbPass=V+g/nL6/+ely0bgD7Du0yX83xNRl1H9Y +encDbUserName=zFlYsp9Z0s+lRvLM15A3g/Ba0w8VGs/1usuW7EsGF3k= +encDbPass=JGGAGn5wTlrbTLUHY+5BzfBa0w8VGs/1usuW7EsGF3k= spring.datasource.driver-class-name=com.mysql.jdbc.Driver # KM config diff --git a/src/main/environment/common_test.properties b/src/main/environment/common_test.properties index c846541d..f089c3fb 100644 --- a/src/main/environment/common_test.properties +++ b/src/main/environment/common_test.properties @@ -5,15 +5,15 @@ spring.jpa.database=default ##--------------------------------------------## Primary db------------------------------------------------------------------- -encDbUserName=0YaEPoKpzM3TrEAHTLYQaf+DfR4mdaeP -encDbPass=V+g/nL6/+ely0bgD7Du0yX83xNRl1H9Y +encDbUserName=zFlYsp9Z0s+lRvLM15A3g/Ba0w8VGs/1usuW7EsGF3k= +encDbPass=JGGAGn5wTlrbTLUHY+5BzfBa0w8VGs/1usuW7EsGF3k= spring.datasource.url=jdbc:mysql://10.208.122.38:3306/db_iemr?autoReconnect=true&useSSL=false spring.datasource.driver-class-name=com.mysql.jdbc.Driver -encDbUserNameSec=0YaEPoKpzM3TrEAHTLYQaf+DfR4mdaeP -encDbPassSec=V+g/nL6/+ely0bgD7Du0yX83xNRl1H9Y +encDbUserNameSec=zFlYsp9Z0s+lRvLM15A3g/Ba0w8VGs/1usuW7EsGF3k= +encDbPassSec=JGGAGn5wTlrbTLUHY+5BzfBa0w8VGs/1usuW7EsGF3k= secondary.datasource.url=jdbc:mysql://10.208.122.38:3306/db_reporting?autoReconnect=true&useSSL=false secondary.datasource.driver-class-name=com.mysql.jdbc.Driver ##-------------------------------------------------------------# KM config-------------------------------------------------- diff --git a/src/main/environment/common_uat.properties b/src/main/environment/common_uat.properties index 5d6c8af7..f666ef81 100644 --- a/src/main/environment/common_uat.properties +++ b/src/main/environment/common_uat.properties @@ -2,8 +2,8 @@ # UAT env # DB Connections spring.datasource.url=jdbc:mysql://172.16.19.43:3306/db_iemr?autoReconnect=true&useSSL=false -encDbUserName=0YaEPoKpzM3TrEAHTLYQaf+DfR4mdaeP -encDbPass=V+g/nL6/+ely0bgD7Du0yX83xNRl1H9Y +encDbUserName=zFlYsp9Z0s+lRvLM15A3g/Ba0w8VGs/1usuW7EsGF3k= +encDbPass=JGGAGn5wTlrbTLUHY+5BzfBa0w8VGs/1usuW7EsGF3k= spring.datasource.driver-class-name=com.mysql.jdbc.Driver # KM config diff --git a/src/main/java/com/iemr/common/config/PrimaryDBConfig.java b/src/main/java/com/iemr/common/config/PrimaryDBConfig.java index e63549cf..ef07fabb 100644 --- a/src/main/java/com/iemr/common/config/PrimaryDBConfig.java +++ b/src/main/java/com/iemr/common/config/PrimaryDBConfig.java @@ -5,9 +5,9 @@ import org.apache.tomcat.jdbc.pool.PoolConfiguration; import org.apache.tomcat.jdbc.pool.PoolProperties; -import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; @@ -20,6 +20,7 @@ import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; +import com.iemr.common.utils.CryptoUtil; import com.iemr.common.utils.config.ConfigProperties; @Configuration @@ -27,6 +28,9 @@ @EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactory", basePackages = { "com.iemr.common.repository", "com.iemr.common.repo", "com.iemr.common.notification.agent", "com.iemr.common.covidVaccination" }) public class PrimaryDBConfig { + + @Autowired + private CryptoUtil cryptoUtil; Logger logger = LoggerFactory.getLogger(this.getClass().getName()); @Primary @@ -48,16 +52,10 @@ public DataSource dataSource() { org.apache.tomcat.jdbc.pool.DataSource datasource = new org.apache.tomcat.jdbc.pool.DataSource(); datasource.setPoolProperties(p); - StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); - encryptor.setAlgorithm("PBEWithMD5AndDES"); + - encryptor.setPassword("dev-env-secret"); - -// logger.info(encryptor.decrypt(ConfigProperties.getPropertyByName("encDbUserName"))); -// logger.info(encryptor.decrypt(ConfigProperties.getPropertyByName("encDbPass"))); - - datasource.setUsername(encryptor.decrypt(ConfigProperties.getPropertyByName("encDbUserName"))); - datasource.setPassword(encryptor.decrypt(ConfigProperties.getPropertyByName("encDbPass"))); + datasource.setUsername(cryptoUtil.decrypt(ConfigProperties.getPropertyByName("encDbUserName"))); + datasource.setPassword(cryptoUtil.decrypt(ConfigProperties.getPropertyByName("encDbPass"))); return datasource; } diff --git a/src/main/java/com/iemr/common/config/SecondaryDBConfig.java b/src/main/java/com/iemr/common/config/SecondaryDBConfig.java index 74008130..980da8b4 100644 --- a/src/main/java/com/iemr/common/config/SecondaryDBConfig.java +++ b/src/main/java/com/iemr/common/config/SecondaryDBConfig.java @@ -5,7 +5,9 @@ import org.apache.tomcat.jdbc.pool.PoolConfiguration; import org.apache.tomcat.jdbc.pool.PoolProperties; -import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -18,6 +20,7 @@ import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; +import com.iemr.common.utils.CryptoUtil; import com.iemr.common.utils.config.ConfigProperties; @Configuration @@ -28,6 +31,11 @@ basePackages = { "com.iemr.common.secondary.repository.callreport" } ) public class SecondaryDBConfig { + + @Autowired + private CryptoUtil cryptoUtil; + + Logger logger = LoggerFactory.getLogger(this.getClass().getName()); @Bean(name = "secondaryDataSource") @ConfigurationProperties(prefix = "secondary.datasource") public DataSource dataSource() { @@ -46,16 +54,9 @@ public DataSource dataSource() { org.apache.tomcat.jdbc.pool.DataSource datasource = new org.apache.tomcat.jdbc.pool.DataSource(); datasource.setPoolProperties(p); - StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); - encryptor.setAlgorithm("PBEWithMD5AndDES"); - encryptor.setPassword("dev-env-secret"); - -// logger.info(encryptor.decrypt(ConfigProperties.getPropertyByName("encDbUserNameSec"))); -// logger.info(encryptor.decrypt(ConfigProperties.getPropertyByName("encDbPassSec"))); - - datasource.setUsername(encryptor.decrypt(ConfigProperties.getPropertyByName("encDbUserNameSec"))); - datasource.setPassword(encryptor.decrypt(ConfigProperties.getPropertyByName("encDbPassSec"))); + datasource.setUsername(cryptoUtil.decrypt(ConfigProperties.getPropertyByName("encDbUserNameSec"))); + datasource.setPassword(cryptoUtil.decrypt(ConfigProperties.getPropertyByName("encDbPassSec"))); return datasource; } diff --git a/src/main/java/com/iemr/common/service/door_to_door_app/DoorToDoorServiceImpl.java b/src/main/java/com/iemr/common/service/door_to_door_app/DoorToDoorServiceImpl.java index cb3a9df1..5e73b3ec 100644 --- a/src/main/java/com/iemr/common/service/door_to_door_app/DoorToDoorServiceImpl.java +++ b/src/main/java/com/iemr/common/service/door_to_door_app/DoorToDoorServiceImpl.java @@ -8,7 +8,7 @@ import java.util.HashMap; import java.util.Map; -import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -30,11 +30,15 @@ import com.iemr.common.data.door_to_door_app.V_doortodooruserdetails; import com.iemr.common.model.user.LoginRequestModel; import com.iemr.common.repo.door_to_door_app.V_doortodooruserdetailsRepo; +import com.iemr.common.utils.CryptoUtil; import com.iemr.common.utils.mapper.InputMapper; @Service @PropertySource("classpath:application.properties") public class DoorToDoorServiceImpl implements DoorToDoorService { + + @Autowired + private CryptoUtil cryptoUtil; @Value("${avniRegistrationLimit}") private String avniRegistrationLimit; @@ -264,11 +268,13 @@ public void scheduleJobForRegisterAvniBeneficiary() throws Exception { public String amritUserAuthenticate() { String authorization = ""; - StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); - encryptor.setAlgorithm("PBEWithMD5AndDES"); - encryptor.setPassword("dev-env-secret"); - String amritUser = encryptor.decrypt(amritUserName); - String amritPass = encryptor.decrypt(amritPassword); + /* + * StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); + * encryptor.setAlgorithm("PBEWithMD5AndDES"); + * encryptor.setPassword("dev-env-secret"); + */ + String amritUser = cryptoUtil.decrypt(amritUserName); + String amritPass = cryptoUtil.decrypt(amritPassword); LoginRequestModel loginCredentials = new LoginRequestModel(amritUser, amritPass); loginCredentials.setDoLogout(true); MultiValueMap headersLogin = new LinkedMultiValueMap(); diff --git a/src/main/java/com/iemr/common/service/email/EmailServiceImpl.java b/src/main/java/com/iemr/common/service/email/EmailServiceImpl.java index a0e3d7c8..830e5ef4 100644 --- a/src/main/java/com/iemr/common/service/email/EmailServiceImpl.java +++ b/src/main/java/com/iemr/common/service/email/EmailServiceImpl.java @@ -11,7 +11,6 @@ import javax.mail.internet.MimeMessage; import javax.mail.util.ByteArrayDataSource; -import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -36,13 +35,17 @@ import com.iemr.common.repository.email.StockAlertDataRepo; import com.iemr.common.repository.feedback.FeedbackRepository; import com.iemr.common.service.beneficiary.IEMRSearchUserService; +import com.iemr.common.utils.CryptoUtil; import com.iemr.common.utils.config.ConfigProperties; import com.iemr.common.utils.http.HttpUtils; import com.iemr.common.utils.mapper.InputMapper; @Service public class EmailServiceImpl implements EmailService { - + + @Autowired + private CryptoUtil cryptoUtil; + private InputMapper inputMapper = new InputMapper(); @Autowired private JavaMailSender javaMailSender; @@ -485,11 +488,9 @@ int sendEmailWithAttachment(String recipient, ByteArrayDataSource attachment) th JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); mailSender.setHost(host); mailSender.setPort(Integer.parseInt(port)); - StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); - encryptor.setAlgorithm("PBEWithMD5AndDES"); - encryptor.setPassword("dev-env-secret"); - String decryptSender = encryptor.decrypt(sender); - String decryptPass = encryptor.decrypt(password); + + String decryptSender = cryptoUtil.decrypt(sender); + String decryptPass = cryptoUtil.decrypt(password); mailSender.setUsername(decryptSender); mailSender.setPassword(decryptPass); diff --git a/src/main/java/com/iemr/common/service/everwell/EverwellRegistrationServiceImpl.java b/src/main/java/com/iemr/common/service/everwell/EverwellRegistrationServiceImpl.java index 76753140..7acb7342 100644 --- a/src/main/java/com/iemr/common/service/everwell/EverwellRegistrationServiceImpl.java +++ b/src/main/java/com/iemr/common/service/everwell/EverwellRegistrationServiceImpl.java @@ -8,7 +8,6 @@ import java.util.Date; import java.util.List; -import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -36,12 +35,15 @@ import com.iemr.common.repository.everwell.EverwellFetchAndSync; import com.iemr.common.repository.location.LocationDistrictRepository; import com.iemr.common.repository.location.LocationStateRepository; +import com.iemr.common.utils.CryptoUtil; import com.iemr.common.utils.mapper.InputMapper; import com.iemr.common.utils.response.OutputResponse; @Service @PropertySource("classpath:application.properties") public class EverwellRegistrationServiceImpl implements EverwellRegistrationService { + @Autowired + private CryptoUtil cryptoUtil; private InputMapper inputMapper = new InputMapper(); @@ -124,11 +126,9 @@ public void registerBeneficiary() { try { // 1097 user authentication - StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); - encryptor.setAlgorithm("PBEWithMD5AndDES"); - encryptor.setPassword("dev-env-secret"); - String amritUser = encryptor.decrypt(amritUserName); - String amritPass = encryptor.decrypt(amritPassword); + + String amritUser = cryptoUtil.decrypt(amritUserName); + String amritPass = cryptoUtil.decrypt(amritPassword); LoginRequestModel loginCredentials1097 = new LoginRequestModel(amritUser, amritPass); MultiValueMap headersLogin = new LinkedMultiValueMap(); diff --git a/src/main/java/com/iemr/common/service/otp/OTPHandlerImpl.java b/src/main/java/com/iemr/common/service/otp/OTPHandlerImpl.java index c8fd9151..6cad3416 100644 --- a/src/main/java/com/iemr/common/service/otp/OTPHandlerImpl.java +++ b/src/main/java/com/iemr/common/service/otp/OTPHandlerImpl.java @@ -5,7 +5,6 @@ import java.util.Random; import java.util.concurrent.TimeUnit; -import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -19,6 +18,7 @@ import com.google.common.primitives.Ints; import com.iemr.common.data.otp.OTPRequestParsor; import com.iemr.common.service.users.IEMRAdminUserServiceImpl; +import com.iemr.common.utils.CryptoUtil; import com.iemr.common.utils.config.ConfigProperties; import com.iemr.common.utils.http.HttpUtils; @@ -32,7 +32,10 @@ @Service public class OTPHandlerImpl implements OTPHandler { - + + @Autowired + private CryptoUtil cryptoUtil; + @Autowired HttpUtils httpUtils; @Autowired @@ -135,13 +138,11 @@ private String getEncryptedOTP(int otp) throws Exception { // send SMS to user private void sendSMS(int otp, String phoneNo, String msgText) throws Exception { // Boolean doSendSMS = ConfigProperties.getBoolean("send-sms"); - StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); - encryptor.setAlgorithm("PBEWithMD5AndDES"); - encryptor.setPassword("dev-env-secret"); + String sendSMSURL = ConfigProperties.getPropertyByName("send-message-url"); String sendSMSAPI = OTPHandlerImpl.SMS_GATEWAY_URL + "/" + sendSMSURL; - String senderName = encryptor.decrypt(ConfigProperties.getPropertyByName("sms-username")); - String senderPassword = encryptor.decrypt(ConfigProperties.getPropertyByName("sms-password")); + String senderName = cryptoUtil.decrypt(ConfigProperties.getPropertyByName("sms-username")); + String senderPassword = cryptoUtil.decrypt(ConfigProperties.getPropertyByName("sms-password")); String senderNumber = ConfigProperties.getPropertyByName("sms-sender-number"); sendSMSAPI = sendSMSAPI.replace("USERNAME", senderName).replace("PASSWORD", senderPassword) diff --git a/src/main/java/com/iemr/common/service/sms/SMSServiceImpl.java b/src/main/java/com/iemr/common/service/sms/SMSServiceImpl.java index 609f063b..3b7400d5 100644 --- a/src/main/java/com/iemr/common/service/sms/SMSServiceImpl.java +++ b/src/main/java/com/iemr/common/service/sms/SMSServiceImpl.java @@ -13,7 +13,6 @@ import java.util.Set; import java.util.stream.Collectors; -import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; import org.json.JSONArray; import org.json.JSONObject; import org.slf4j.Logger; @@ -74,6 +73,7 @@ import com.iemr.common.repository.sms.SMSTypeRepository; import com.iemr.common.repository.users.IEMRUserRepositoryCustom; import com.iemr.common.service.beneficiary.IEMRSearchUserService; +import com.iemr.common.utils.CryptoUtil; import com.iemr.common.utils.config.ConfigProperties; import com.iemr.common.utils.http.HttpUtils; import com.iemr.common.utils.mapper.OutputMapper; @@ -86,7 +86,10 @@ public class SMSServiceImpl implements SMSService { private String prescription; @Autowired SMSMapper smsMapper; - + + @Autowired + private CryptoUtil cryptoUtil; + @Autowired SMSTemplateRepository smsTemplateRepository; @@ -873,15 +876,13 @@ private String getInstituteData(String className, String methodName, SMSRequest public void publishSMS() { if (!SMSServiceImpl.publishingSMS) { try { - StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); - encryptor.setAlgorithm("PBEWithMD5AndDES"); - encryptor.setPassword("dev-env-secret"); + SMSServiceImpl.publishingSMS = true; Boolean doSendSMS = ConfigProperties.getBoolean("send-sms"); String sendSMSURL = ConfigProperties.getPropertyByName("send-message-url"); String sendSMSAPI = SMSServiceImpl.SMS_GATEWAY_URL + "/" + sendSMSURL; - String senderName = encryptor.decrypt(ConfigProperties.getPropertyByName("sms-username")); - String senderPassword = encryptor.decrypt(ConfigProperties.getPropertyByName("sms-password")); + String senderName = cryptoUtil.decrypt(ConfigProperties.getPropertyByName("sms-username")); + String senderPassword = cryptoUtil.decrypt(ConfigProperties.getPropertyByName("sms-password")); String senderNumber = ConfigProperties.getPropertyByName("sms-sender-number"); sendSMSAPI = sendSMSAPI.replace("USERNAME", senderName).replace("PASSWORD", senderPassword) .replace("SENDER_NUMBER", senderNumber); diff --git a/src/main/java/com/iemr/common/service/swaasa/SwassaServiceImpl.java b/src/main/java/com/iemr/common/service/swaasa/SwassaServiceImpl.java index f6d6fa5c..4b84453f 100644 --- a/src/main/java/com/iemr/common/service/swaasa/SwassaServiceImpl.java +++ b/src/main/java/com/iemr/common/service/swaasa/SwassaServiceImpl.java @@ -7,7 +7,6 @@ import javax.xml.ws.http.HTTPException; -import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -32,6 +31,7 @@ import com.iemr.common.data.swaasa.SwaasaAuthenticateResponse; import com.iemr.common.data.swaasa.SwaasaValidateCoughReponseDTO; import com.iemr.common.repo.swaasa.SwaasaRepository; +import com.iemr.common.utils.CryptoUtil; import com.iemr.common.utils.http.HttpUtils; import com.iemr.common.utils.mapper.InputMapper; @@ -43,6 +43,9 @@ public class SwassaServiceImpl implements SwaasaService { private static long authCreatedAt; private static HttpUtils httpUtils = new HttpUtils(); + + @Autowired + private CryptoUtil cryptoUtil; private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); @@ -134,11 +137,9 @@ public Boolean verifyCough(MultipartFile file, String authToken, Long patientId) throw new Exception("file is missing,please pass a cough recording file"); long currTime = System.currentTimeMillis(); - StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); - encryptor.setAlgorithm("PBEWithMD5AndDES"); - encryptor.setPassword("dev-env-secret"); - String decryptswaasaEmail = encryptor.decrypt(swassaEmail); - String decryptswaasaPassword = encryptor.decrypt(swaasaPassword); + + String decryptswaasaEmail = cryptoUtil.decrypt(swassaEmail); + String decryptswaasaPassword = cryptoUtil.decrypt(swaasaPassword); if (swaasaToken == null || (((currTime - authCreatedAt) / (60 * 1000))) > 110) swaasaToken = getSwaasaAdminLogin(decryptswaasaEmail, decryptswaasaPassword); @@ -219,11 +220,8 @@ public String initiateAssesment(String request, MultipartFile file) throws Excep // check if swaasa session is active long currTime = System.currentTimeMillis(); - StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); - encryptor.setAlgorithm("PBEWithMD5AndDES"); - encryptor.setPassword("dev-env-secret"); - String decryptswaasaEmail = encryptor.decrypt(swassaEmail); - String decryptswaasaPassword = encryptor.decrypt(swaasaPassword); + String decryptswaasaEmail = cryptoUtil.decrypt(swassaEmail); + String decryptswaasaPassword = cryptoUtil.decrypt(swaasaPassword); if (swaasaToken == null || (((currTime - authCreatedAt) / (60 * 1000))) > 110) swaasaToken = getSwaasaAdminLogin(decryptswaasaEmail, decryptswaasaPassword); @@ -322,11 +320,9 @@ public String getAssesment(String assessmentId) throws Exception { return new Gson().toJson(swaasaEntity); } else { long currTime = System.currentTimeMillis(); - StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); - encryptor.setAlgorithm("PBEWithMD5AndDES"); - encryptor.setPassword("dev-env-secret"); - String decryptswaasaEmail = encryptor.decrypt(swassaEmail); - String decryptswaasaPassword = encryptor.decrypt(swaasaPassword); + + String decryptswaasaEmail = cryptoUtil.decrypt(swassaEmail); + String decryptswaasaPassword = cryptoUtil.decrypt(swaasaPassword); if (swaasaToken == null || (((currTime - authCreatedAt) / (60 * 1000))) > 110) swaasaToken = getSwaasaAdminLogin(decryptswaasaEmail, decryptswaasaPassword); diff --git a/src/main/java/com/iemr/common/utils/CryptoUtil.java b/src/main/java/com/iemr/common/utils/CryptoUtil.java new file mode 100644 index 00000000..bdfbcfcd --- /dev/null +++ b/src/main/java/com/iemr/common/utils/CryptoUtil.java @@ -0,0 +1,55 @@ +package com.iemr.common.utils; + +import java.nio.charset.StandardCharsets; +import java.util.Base64; + +import javax.crypto.Cipher; +import javax.crypto.SecretKey; +import javax.crypto.spec.SecretKeySpec; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +@Service +public class CryptoUtil { + + private static final Logger logger = LoggerFactory.getLogger(CryptoUtil.class); + private static final String ALGORITHM = "AES"; + private static final String SECRET_KEY = "dev-envro-secret"; + + public String encrypt(String value) throws Exception { + SecretKey secretKey = new SecretKeySpec(SECRET_KEY.getBytes(StandardCharsets.UTF_8), ALGORITHM); + Cipher cipher = Cipher.getInstance(ALGORITHM + "/ECB/PKCS5Padding"); + cipher.init(Cipher.ENCRYPT_MODE, secretKey); + byte[] encryptedBytes = cipher.doFinal(addPadding(value).getBytes(StandardCharsets.UTF_8)); + return Base64.getEncoder().encodeToString(encryptedBytes); + } + + public String decrypt(String encryptedValue) { + try { + SecretKey secretKey = new SecretKeySpec(SECRET_KEY.getBytes(StandardCharsets.UTF_8), ALGORITHM); + Cipher cipher = Cipher.getInstance(ALGORITHM + "/ECB/PKCS5Padding"); + cipher.init(Cipher.DECRYPT_MODE, secretKey); + byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedValue)); + return removePadding(new String(decryptedBytes, StandardCharsets.UTF_8)); + } catch (Exception e) { + logger.error("Exception while decrypting string. Intentionally throwing null pointer", e); + return null; + } + } + + private String addPadding(String value) { + int paddingLength = 16 - (value.length() % 16); + StringBuilder paddedValue = new StringBuilder(value); + for (int i = 0; i < paddingLength; i++) { + paddedValue.append((char) paddingLength); + } + return paddedValue.toString(); + } + + private String removePadding(String value) { + int paddingLength = value.charAt(value.length() - 1); + return value.substring(0, value.length() - paddingLength); + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index da2efd7c..8e026dfc 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -108,8 +108,8 @@ cron-scheduler-unblock=0 0 0 * * ? * spring.mail.host=smtp.gmail.com spring.mail.port=587 -spring.mail.username=NkYpYVHF66V2gHnu40pahZtnmGrOZdc0Q0gS5lF0rCYPQK093LSEyw== -spring.mail.password=KJIyYWFoNBKAKhCsNt+8AgqfQNupI6x0OqIak8V2Ywg= +spring.mail.username=aaHXGrs9rQvATAgeH/7GDf7sXkJqElxGvEHYCxA25iLwWtMPFRrP9brLluxLBhd5 +spring.mail.password=K9QfHpyJYHkY5UruzThjhvBa0w8VGs/1usuW7EsGF3nwWtMPFRrP9brLluxLBhd5 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true mail-subject=Inventory alert!! @@ -161,8 +161,8 @@ logging.logback.rollingpolicy.max-history=1 ### SMS Gateway URL details sms-gateway-url=http://sms.smsjosh.com -sms-username=uS4PUpKAh7L6TL+6ayM4lg== -sms-password=OaroRlV1Re7tpuKq5p/7rDfOH9lxnef7 +sms-username=cQXj/cvwruBg24NQd8Bv0/Ba0w8VGs/1usuW7EsGF3k= +sms-password=5o4ctqHfM1DNYxG3+WNYVvBa0w8VGs/1usuW7EsGF3k= send-message-url=api/mt/SendSMS?user=USERNAME&password=PASSWORD&senderid=iAMRIT&channel=Trans&DCS=0&flashsms=0&number=91RECEIVER_NUMBER&text=SMS_TEXT&route=9 sms-sender-number=DOCTOR @@ -187,8 +187,8 @@ queue-capacity=500 ## everwell variables everwellUserName = Demo_API_SVA everwellPassword = Demo_API_SVA -amritUserName = tYjQj6MgoSuJfGpXZURmU8/nYk+PNSfx -amritPassword = JsIMz4z+J4fMTlZrSkGSa2gvuvddV03y +amritUserName = oLRC5amRa12f2l4um4BXQfBa0w8VGs/1usuW7EsGF3k= +amritPassword = qLr/xepKic9bbwXt8atLjfBa0w8VGs/1usuW7EsGF3k= everwellVanID = 1 everwellProviderServiceMapID = 1761 everwellgovtIdentityNo = 2 @@ -208,8 +208,8 @@ everwelluserAuthenticate = https://beta-hub.everwell.org/token everwellRegisterBenficiary = http://10.208.122.38:8080/commonapi-v1.0/beneficiary/create ## SWAASA credentials -swaasaEmail = js10kCVIVQoVo271vP6Ll62wclSSABj4fsEP9i03Ptkx6moas9xghA== -swaasaPassword = EcPvUbEmDVxZEaxhGb42SPzprZCSjYT1 +swaasaEmail = nbfJjsrz8Uz1+AbBpX4fOFiJiNXbfZ98WCsKjvCFvk/wWtMPFRrP9brLluxLBhd5 +swaasaPassword = 4HOXNVjATlzYZuQObN36svBa0w8VGs/1usuW7EsGF3k= ## SWASSA APIs swaasaAdminLogin = http://swaasa.sandbox.swaasa.ai/api/adminLogin @@ -224,3 +224,111 @@ failedLoginAttempt=5 # always press enter after last line + + + +# Test env +# DB Connections +spring.jpa.database=default + +##--------------------------------------------## Primary db------------------------------------------------------------------- + + +encDbUserName=zFlYsp9Z0s+lRvLM15A3g/Ba0w8VGs/1usuW7EsGF3k= +encDbPass=JGGAGn5wTlrbTLUHY+5BzfBa0w8VGs/1usuW7EsGF3k= +spring.datasource.url=jdbc:mysql://10.208.122.38:3306/db_iemr?autoReconnect=true&useSSL=false +spring.datasource.driver-class-name=com.mysql.jdbc.Driver + + + +encDbUserNameSec=zFlYsp9Z0s+lRvLM15A3g/Ba0w8VGs/1usuW7EsGF3k= +encDbPassSec=JGGAGn5wTlrbTLUHY+5BzfBa0w8VGs/1usuW7EsGF3k= +secondary.datasource.url=jdbc:mysql://10.208.122.38:3306/db_reporting?autoReconnect=true&useSSL=false +secondary.datasource.driver-class-name=com.mysql.jdbc.Driver +##-------------------------------------------------------------# KM config-------------------------------------------------- + +km-base-url=http://10.208.122.38:8084/OpenKM +km-base-path=10.208.122.38:8084/OpenKM +##----------------------------------------------# CTI Config----------------------------------------------------------------- + +cti-server-ip=10.208.122.99 +cti-logger_base_url=http://10.208.122.99/logger +##-------------------------------------------------#### Identity Config-------------------------------------------------------------- + +identity-api-url=http://10.208.122.38:8080/identity-0.0.1 +identity-1097-api-url=http://10.208.122.38:8080/1097identityapi-v1.0 + +### generate Beneficiary Config +genben-api=http://10.208.122.38:8080/bengenapi-v1.0 + +##---------------------------------------------#### SMS Configuration------------------------------------------------------------------ + +send-sms=false + +###SMS Scheduler configurations +start-sms-scheduler=false +cron-scheduler-sms=0 0/1 * * * ? * +##----------------------------------------------#### Email Configuration----------------------------------------------------------------- + +send-email=false + +###Email Scheduler configurations +start-email-scheduler=false +cron-scheduler-email=0 0/1 * * * ? * +##-------------------------------###cti data sync Scheduler configurations------------------------------------------------------ + +start-ctidatasync-scheduler=false +cron-scheduler-ctidatasync=0 00 01 * * ? * +##---------------------------------#### Registration schedular for Avni------------------------------------------------------------------------------ + +start-avni-scheduler=false +cron-avni-registration=0 0/1 * * * ? * +##------------------------------------------------#### Everwell Regsitration Scheduler--------------------------------------------------------------- + +start-registration-scheduler=false +cron-scheduler-registration=0 34 19 * * ? * +##----------------------------------------------------#everwell data sync----------------------------------------------------------- + +start-everwelldatasync-scheduler=false +cron-scheduler-everwelldatasync=0 0/5 * * * ? * +##-----------------------------------------------#NHM data dashboard schedular---------------------------------------------------------------- +#run in every 2 hrs +start-nhmdashboard-scheduler=true +cron-scheduler-nhmdashboard=0 0 0/2 * * ? * + + +## how much old data it should fetch +## n day / n hour // n min +get-agent-summary-report-job=2 hour +## n day / n hour // n min +get-details-call-report-job=2 hour +##-------------------------------------------------### Redis IP-------------------------------------------------------------- + +spring.redis.host=localhost + +##--------------------------------------------------------------------------------------------------------------- +###CTI data sync schedular +cz-duration=40 +##--------------------------------------------------------------------------------------------------------------- +## prescription template +TMprescriptionTemplate=TMPrescription +##--------------------------------------------------------------------------------------------------------------- +##duration for everwell calender +everwellCalendarDuration=15 + ##--------------------------------------------------------------------------------------------------------------- +##lonic variables +lonicPageSize=10 + ##--------------------------------------------------------------------------------------------------------------- +#snomedcti +snomedCTPageSize=10 +##--------------------------------------------------------------------------------------------------------------- +#call retry count +callRetryConfiguration=3 +##--------------------------------------------------------------------------------------------------------------- +#avni registration Duration +avniRegistrationLimit=7 + + + + +