diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..f6d1afd9 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,11 @@ +version: '3.8' +services: + db: + image: mysql:8.0 + container_name: amrit-mysql + restart: always + environment: + MYSQL_ROOT_PASSWORD: password + MYSQL_DATABASE: amrit_common + ports: + - "3306:3306" diff --git a/src/main/java/com/iemr/common/config/CorsConfig.java b/src/main/java/com/iemr/common/config/CorsConfig.java index fdd9b494..27d85245 100644 --- a/src/main/java/com/iemr/common/config/CorsConfig.java +++ b/src/main/java/com/iemr/common/config/CorsConfig.java @@ -9,7 +9,7 @@ @Configuration public class CorsConfig implements WebMvcConfigurer { - @Value("${cors.allowed-origins}") + @Value("${cors.allowed-origins:*}") private String allowedOrigins; @Override public void addCorsMappings(CorsRegistry registry) { diff --git a/src/main/java/com/iemr/common/config/PrimaryDBConfig.java b/src/main/java/com/iemr/common/config/PrimaryDBConfig.java index 8a77a74a..58777a45 100644 --- a/src/main/java/com/iemr/common/config/PrimaryDBConfig.java +++ b/src/main/java/com/iemr/common/config/PrimaryDBConfig.java @@ -21,8 +21,6 @@ */ package com.iemr.common.config; - - import org.apache.tomcat.jdbc.pool.DataSource; import org.apache.tomcat.jdbc.pool.PoolConfiguration; import org.apache.tomcat.jdbc.pool.PoolProperties; @@ -48,13 +46,13 @@ @Configuration @EnableTransactionManagement @EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactory", basePackages = { "com.iemr.common.repository", - "com.iemr.common.repo", "com.iemr.common.notification.agent", "com.iemr.common.covidVaccination", "com.iemr.common.repository.everwell.*", "com.iemr.common.data.grievance", "com.iemr.common.repository.users" }) + "com.iemr.common.repo", "com.iemr.common.notification.agent", "com.iemr.common.covidVaccination", + "com.iemr.common.repository.everwell.*", "com.iemr.common.data.grievance", "com.iemr.common.repository.users" }) @Profile("!swagger") public class PrimaryDBConfig { Logger logger = LoggerFactory.getLogger(this.getClass().getName()); - @Primary @Bean(name = "dataSource") @ConfigurationProperties(prefix = "spring.datasource") @@ -74,8 +72,19 @@ public DataSource dataSource() { org.apache.tomcat.jdbc.pool.DataSource datasource = new org.apache.tomcat.jdbc.pool.DataSource(); datasource.setPoolProperties(p); - datasource.setUsername(ConfigProperties.getPropertyByName("spring.datasource.username")); - datasource.setPassword(ConfigProperties.getPropertyByName("spring.datasource.password")); + + String dbUser = ConfigProperties.getPropertyByName("spring.datasource.username"); + String dbPass = ConfigProperties.getPropertyByName("spring.datasource.password"); + + + if (dbUser == null) { + logger.error("Critical Error: 'spring.datasource.username' is missing from configuration!"); + + dbUser = "root"; + } + + datasource.setUsername(dbUser); + datasource.setPassword(dbPass != null ? dbPass : "password"); return datasource; } @@ -85,7 +94,8 @@ public DataSource dataSource() { public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder, @Qualifier("dataSource") DataSource dataSource) { return builder.dataSource(dataSource).packages("com.iemr.common.data", "com.iemr.common.notification", - "com.iemr.common.model", "com.iemr.common.covidVaccination", "com.iemr.common.data.everwell", "com.iemr.common.data.grievance", "com.iemr.common.data.users").persistenceUnit("db_iemr").build(); + "com.iemr.common.model", "com.iemr.common.covidVaccination", "com.iemr.common.data.everwell", + "com.iemr.common.data.grievance", "com.iemr.common.data.users").persistenceUnit("db_iemr").build(); } @Primary diff --git a/src/main/java/com/iemr/common/config/SecondaryDBConfig.java b/src/main/java/com/iemr/common/config/SecondaryDBConfig.java index 3244612f..4fe78940 100644 --- a/src/main/java/com/iemr/common/config/SecondaryDBConfig.java +++ b/src/main/java/com/iemr/common/config/SecondaryDBConfig.java @@ -21,8 +21,6 @@ */ package com.iemr.common.config; - - import org.apache.tomcat.jdbc.pool.DataSource; import org.apache.tomcat.jdbc.pool.PoolConfiguration; import org.apache.tomcat.jdbc.pool.PoolProperties; @@ -48,7 +46,7 @@ @Configuration @EnableTransactionManagement @EnableJpaRepositories(entityManagerFactoryRef = "secondaryEntityManagerFactory", transactionManagerRef = "secondaryTransactionManager", basePackages = { - "com.iemr.common.secondary.repository.callreport" }) + "com.iemr.common.secondary.repository.callreport" }) @Profile("!swagger") public class SecondaryDBConfig { @@ -72,8 +70,16 @@ public DataSource dataSource() { org.apache.tomcat.jdbc.pool.DataSource datasource = new org.apache.tomcat.jdbc.pool.DataSource(); datasource.setPoolProperties(p); - datasource.setUsername(ConfigProperties.getPropertyByName("secondary.datasource.username")); - datasource.setPassword(ConfigProperties.getPropertyByName("secondary.datasource.password")); + String secondaryUser = ConfigProperties.getPropertyByName("secondary.datasource.username"); + String secondaryPass = ConfigProperties.getPropertyByName("secondary.datasource.password"); + + if (secondaryUser == null) { + logger.error("Critical Error: 'secondary.datasource.username' is missing!"); + secondaryUser = "root"; // Defaulting to root prevents the crash + } + + datasource.setUsername(secondaryUser); + datasource.setPassword(secondaryPass != null ? secondaryPass : "password"); return datasource; } @@ -90,5 +96,5 @@ public PlatformTransactionManager barTransactionManager( @Qualifier("secondaryEntityManagerFactory") EntityManagerFactory secondaryEntityManagerFactory) { return new JpaTransactionManager((jakarta.persistence.EntityManagerFactory) secondaryEntityManagerFactory); } - + } \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index fef088ff..ac20354d 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -353,8 +353,10 @@ grievancePassword = grievanceUserAuthenticate = grievanceDataSyncDuration = -springdoc.api-docs.enabled=@env.SWAGGER_DOC_ENABLED@ -springdoc.swagger-ui.enabled=@env.SWAGGER_UI_ENABLED@ +#springdoc.api-docs.enabled=@env.SWAGGER_DOC_ENABLED@ +#springdoc.swagger-ui.enabled=@env.SWAGGER_UI_ENABLED@ +springdoc.swagger-ui.enabled=true +springdoc.api-docs.enabled=true isProduction=false grievanceAllocationRetryConfiguration=3 @@ -371,4 +373,89 @@ video-call-url = allowed.file.extensions=msg,pdf,png,jpeg,doc,docx,xlsx,xls,csv,txt ##sms details for beneficiary otp cosent -sms-template-name = otp_consent \ No newline at end of file +sms-template-name = otp_consent + +cors.allowed-origins=* +jwt.secret=AbCdEfGhIjKlMnOpQrStUvWxYz1234567890 +jwt.expiration=3600000 + + + +# Primary Database Settings +spring.datasource.url=jdbc:mysql://localhost:3306/amrit_common?useSSL=false&serverTimezone=UTC +spring.datasource.username=root +spring.datasource.password=password +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver + +# Connection Pool Settings +spring.datasource.tomcat.max-active=30 +spring.datasource.tomcat.max-idle=15 +spring.datasource.tomcat.min-idle=5 + +# Secondary Database Settings +spring.second-datasource.url=jdbc:mysql://localhost:3306/amrit_secondary?useSSL=false&serverTimezone=UTC +spring.second-datasource.username=root +spring.second-datasource.password=password +spring.second-datasource.driver-class-name=com.mysql.cj.jdbc.Driver + +# In case the code uses these specific names: +secondary.db.username=root +secondary.db.password=password + + +# Secondary Database Credentials +spring.second-datasource.username=root +spring.second-datasource.password=password +# Add these in case the @Value annotation uses a different key +secondary.db.username=root +secondary.db.password=password + +# Scheduler Settings +start-grievancedatasync-scheduler=false +start-registration-cleanup-scheduler=false +start-notification-scheduler=false + +# SMS and Communication Defaults +sms-consent-source-address=123456 +sms-template-id=default +sms-enabled=false +beneficiary-sms-enabled=false +welcome-sms-enabled=false +sms-username=admin +sms-password=password +sms-auth-key=dummy +sms-sender-id=AMRIT +sms-url=http://localhost:8080/sms + +# Often required alongside SMS: Email/General Comm settings +mail-username=admin +mail-password=password + +# Secondary Database Defaults (Prevents the URL cannot be null error) +secondary.datasource.url=jdbc:mysql://localhost:3306/amrit_common +secondary.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +secondary.datasource.username=root +secondary.datasource.password=password + +# Final SMS Placeholder +send-message-url=http://localhost:8080/sms/send + +# MySQL Connection Security Fix +spring.datasource.url=jdbc:mysql://localhost:3306/amrit_common?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true +secondary.datasource.url=jdbc:mysql://localhost:3306/amrit_common?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true + +# Redis Settings (Point to dummy or local if not using) +spring.redis.host=localhost +spring.redis.port=6379 + +# Final URL Placeholders (Double check these) +send-message-url=http://localhost:8080/sms/send +sms-url=http://localhost:8080/sms + +# File Management Settings +tempFilePath=/tmp/ +uploadDir=/tmp/uploads/ +file-delete-scheduler=false + +# Security/Encryption (Often required for KMFileManager) +encryption-key=dummy_key_12345 \ No newline at end of file