# Description This pull request includes several changes aimed at improving the code structure and removing redundant code. The most significant changes involve reordering methods, removing unnecessary annotations, and refactoring constructors to use dependency injection. Autowired now comes via constructor (which also doesn't need autowired annotation as its done by default for configuration) ## Checklist - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have performed a self-review of my own code - [ ] I have attached images of the change if it is UI based - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] If my code has heavily changed functionality I have updated relevant docs on [Stirling-PDFs doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) - [ ] My changes generate no new warnings - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only)
102 lines
4.0 KiB
Java
102 lines
4.0 KiB
Java
package stirling.software.SPDF.config;
|
|
|
|
import java.io.IOException;
|
|
import java.util.Properties;
|
|
import java.util.UUID;
|
|
|
|
import org.springframework.core.Ordered;
|
|
import org.springframework.core.annotation.Order;
|
|
import org.springframework.core.io.ClassPathResource;
|
|
import org.springframework.core.io.Resource;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import io.micrometer.common.util.StringUtils;
|
|
|
|
import jakarta.annotation.PostConstruct;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import stirling.software.SPDF.model.ApplicationProperties;
|
|
import stirling.software.SPDF.utils.GeneralUtils;
|
|
|
|
@Component
|
|
@Slf4j
|
|
@Order(Ordered.HIGHEST_PRECEDENCE + 1)
|
|
public class InitialSetup {
|
|
|
|
private final ApplicationProperties applicationProperties;
|
|
|
|
public InitialSetup(ApplicationProperties applicationProperties) {
|
|
this.applicationProperties = applicationProperties;
|
|
}
|
|
|
|
@PostConstruct
|
|
public void init() throws IOException {
|
|
initUUIDKey();
|
|
initSecretKey();
|
|
initEnableCSRFSecurity();
|
|
initLegalUrls();
|
|
initSetAppVersion();
|
|
}
|
|
|
|
public void initUUIDKey() throws IOException {
|
|
String uuid = applicationProperties.getAutomaticallyGenerated().getUUID();
|
|
if (!GeneralUtils.isValidUUID(uuid)) {
|
|
// Generating a random UUID as the secret key
|
|
uuid = UUID.randomUUID().toString();
|
|
GeneralUtils.saveKeyToConfig("AutomaticallyGenerated.UUID", uuid);
|
|
applicationProperties.getAutomaticallyGenerated().setUUID(uuid);
|
|
}
|
|
}
|
|
|
|
public void initSecretKey() throws IOException {
|
|
String secretKey = applicationProperties.getAutomaticallyGenerated().getKey();
|
|
if (!GeneralUtils.isValidUUID(secretKey)) {
|
|
// Generating a random UUID as the secret key
|
|
secretKey = UUID.randomUUID().toString();
|
|
GeneralUtils.saveKeyToConfig("AutomaticallyGenerated.key", secretKey);
|
|
applicationProperties.getAutomaticallyGenerated().setKey(secretKey);
|
|
}
|
|
}
|
|
|
|
public void initEnableCSRFSecurity() throws IOException {
|
|
if (GeneralUtils.isVersionHigher(
|
|
"0.36.0", applicationProperties.getAutomaticallyGenerated().getAppVersion())) {
|
|
Boolean csrf = applicationProperties.getSecurity().getCsrfDisabled();
|
|
if (!csrf) {
|
|
GeneralUtils.saveKeyToConfig("security.csrfDisabled", false, false);
|
|
GeneralUtils.saveKeyToConfig("system.enableAnalytics", "true", false);
|
|
applicationProperties.getSecurity().setCsrfDisabled(false);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void initLegalUrls() throws IOException {
|
|
// Initialize Terms and Conditions
|
|
String termsUrl = applicationProperties.getLegal().getTermsAndConditions();
|
|
if (StringUtils.isEmpty(termsUrl)) {
|
|
String defaultTermsUrl = "https://www.stirlingpdf.com/terms-and-conditions";
|
|
GeneralUtils.saveKeyToConfig("legal.termsAndConditions", defaultTermsUrl, false);
|
|
applicationProperties.getLegal().setTermsAndConditions(defaultTermsUrl);
|
|
}
|
|
// Initialize Privacy Policy
|
|
String privacyUrl = applicationProperties.getLegal().getPrivacyPolicy();
|
|
if (StringUtils.isEmpty(privacyUrl)) {
|
|
String defaultPrivacyUrl = "https://www.stirlingpdf.com/privacy-policy";
|
|
GeneralUtils.saveKeyToConfig("legal.privacyPolicy", defaultPrivacyUrl, false);
|
|
applicationProperties.getLegal().setPrivacyPolicy(defaultPrivacyUrl);
|
|
}
|
|
}
|
|
|
|
public void initSetAppVersion() throws IOException {
|
|
String appVersion = "0.0.0";
|
|
Resource resource = new ClassPathResource("version.properties");
|
|
Properties props = new Properties();
|
|
try {
|
|
props.load(resource.getInputStream());
|
|
appVersion = props.getProperty("version");
|
|
} catch (Exception e) {
|
|
}
|
|
applicationProperties.getAutomaticallyGenerated().setAppVersion(appVersion);
|
|
GeneralUtils.saveKeyToConfig("AutomaticallyGenerated.appVersion", appVersion, false);
|
|
}
|
|
}
|