Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

104 lines
3.9 KiB
Java
Raw Normal View History

2024-10-14 22:34:41 +01:00
package stirling.software.SPDF.config;
import java.io.IOException;
2024-12-10 11:17:50 +00:00
import java.util.Properties;
2024-10-14 22:34:41 +01:00
import java.util.UUID;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
2024-12-10 11:17:50 +00:00
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
2024-10-14 22:34:41 +01:00
import org.springframework.stereotype.Component;
import io.micrometer.common.util.StringUtils;
2024-10-14 22:34:41 +01:00
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 {
@Autowired private ApplicationProperties applicationProperties;
@PostConstruct
2024-12-10 11:17:50 +00:00
public void init() throws IOException {
initUUIDKey();
2024-12-10 20:39:24 +00:00
2024-12-10 11:17:50 +00:00
initSecretKey();
2024-12-10 20:39:24 +00:00
2024-12-10 11:17:50 +00:00
initEnableCSRFSecurity();
2024-12-10 20:39:24 +00:00
2024-12-10 11:17:50 +00:00
initLegalUrls();
2024-12-10 20:39:24 +00:00
2024-12-10 11:17:50 +00:00
initSetAppVersion();
}
2024-12-10 20:39:24 +00:00
2024-10-14 22:34:41 +01:00
public void initUUIDKey() throws IOException {
String uuid = applicationProperties.getAutomaticallyGenerated().getUUID();
if (!GeneralUtils.isValidUUID(uuid)) {
uuid = UUID.randomUUID().toString(); // Generating a random UUID as the secret key
GeneralUtils.saveKeyToConfig("AutomaticallyGenerated.UUID", uuid);
applicationProperties.getAutomaticallyGenerated().setUUID(uuid);
}
}
public void initSecretKey() throws IOException {
String secretKey = applicationProperties.getAutomaticallyGenerated().getKey();
if (!GeneralUtils.isValidUUID(secretKey)) {
secretKey = UUID.randomUUID().toString(); // Generating a random UUID as the secret key
GeneralUtils.saveKeyToConfig("AutomaticallyGenerated.key", secretKey);
applicationProperties.getAutomaticallyGenerated().setKey(secretKey);
}
}
2024-12-10 11:17:50 +00:00
public void initEnableCSRFSecurity() throws IOException {
2024-12-10 20:39:24 +00:00
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);
}
}
2024-12-10 11:17:50 +00:00
}
2024-12-10 20:39:24 +00:00
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";
2024-12-10 11:17:50 +00:00
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";
2024-12-10 11:17:50 +00:00
GeneralUtils.saveKeyToConfig("legal.privacyPolicy", defaultPrivacyUrl, false);
applicationProperties.getLegal().setPrivacyPolicy(defaultPrivacyUrl);
}
}
2024-12-10 20:39:24 +00:00
2024-12-10 11:17:50 +00:00
public void initSetAppVersion() throws IOException {
2024-12-10 20:39:24 +00:00
String appVersion = "0.0.0";
Resource resource = new ClassPathResource("version.properties");
2024-12-10 11:17:50 +00:00
Properties props = new Properties();
try {
props.load(resource.getInputStream());
2024-12-10 20:39:24 +00:00
appVersion = props.getProperty("version");
} catch (Exception e) {
2024-12-10 11:17:50 +00:00
}
applicationProperties.getAutomaticallyGenerated().setAppVersion(appVersion);
2024-12-10 20:39:24 +00:00
GeneralUtils.saveKeyToConfig("AutomaticallyGenerated.appVersion", appVersion, false);
}
2024-10-14 22:34:41 +01:00
}