1
0
mirror of https://github.com/Stirling-Tools/Stirling-PDF.git synced 2024-11-10 18:00:11 +01:00
Stirling-PDF/src/main/java/stirling/software/SPDF/SPdfApplication.java

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

107 lines
3.7 KiB
Java
Raw Normal View History

package stirling.software.SPDF;
2024-02-23 19:31:20 +01:00
import java.io.IOException;
2024-01-03 18:59:04 +01:00
import java.nio.file.Files;
2024-02-23 19:31:20 +01:00
import java.nio.file.Path;
2024-01-03 18:59:04 +01:00
import java.nio.file.Paths;
import java.util.Collections;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
2024-01-03 18:59:04 +01:00
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.core.env.Environment;
import org.springframework.scheduling.annotation.EnableScheduling;
import io.github.pixee.security.SystemCommand;
import jakarta.annotation.PostConstruct;
import stirling.software.SPDF.config.ConfigInitializer;
import stirling.software.SPDF.model.ApplicationProperties;
2024-01-03 18:59:04 +01:00
@SpringBootApplication
@EnableScheduling
public class SPdfApplication {
2024-02-23 19:31:20 +01:00
private static final Logger logger = LoggerFactory.getLogger(SPdfApplication.class);
@Autowired private Environment env;
2024-01-03 18:59:04 +01:00
@Autowired ApplicationProperties applicationProperties;
private static String serverPortStatic;
@Value("${server.port:8080}")
public void setServerPortStatic(String port) {
SPdfApplication.serverPortStatic = port;
}
@PostConstruct
public void init() {
// Check if the BROWSER_OPEN environment variable is set to true
String browserOpenEnv = env.getProperty("BROWSER_OPEN");
boolean browserOpen = browserOpenEnv != null && "true".equalsIgnoreCase(browserOpenEnv);
2024-01-03 18:59:04 +01:00
if (browserOpen) {
try {
String url = "http://localhost:" + getNonStaticPort();
2024-01-03 18:59:04 +01:00
String os = System.getProperty("os.name").toLowerCase();
Runtime rt = Runtime.getRuntime();
if (os.contains("win")) {
// For Windows
SystemCommand.runCommand(rt, "rundll32 url.dll,FileProtocolHandler " + url);
2024-01-03 18:59:04 +01:00
}
} catch (Exception e) {
2024-02-23 19:31:20 +01:00
logger.error("Error opening browser: {}", e.getMessage());
2024-01-03 18:59:04 +01:00
}
}
logger.info("Running configs {}", applicationProperties.toString());
2024-01-03 18:59:04 +01:00
}
2024-02-23 19:31:20 +01:00
public static void main(String[] args) throws IOException, InterruptedException {
SpringApplication app = new SpringApplication(SPdfApplication.class);
app.addInitializers(new ConfigInitializer());
if (Files.exists(Paths.get("configs/settings.yml"))) {
app.setDefaultProperties(
Collections.singletonMap(
"spring.config.additional-location", "file:configs/settings.yml"));
} else {
logger.warn(
"External configuration file 'configs/settings.yml' does not exist. Using default configuration and environment configuration instead.");
}
app.run(args);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new RuntimeException("Thread interrupted while sleeping", e);
}
2024-02-23 19:31:20 +01:00
try {
Files.createDirectories(Path.of("customFiles/static/"));
Files.createDirectories(Path.of("customFiles/templates/"));
} catch (Exception e) {
logger.error("Error creating directories: {}", e.getMessage());
}
printStartupLogs();
}
2024-02-23 19:31:20 +01:00
private static void printStartupLogs() {
logger.info("Stirling-PDF Started.");
String url = "http://localhost:" + getStaticPort();
2024-02-23 19:31:20 +01:00
logger.info("Navigate to {}", url);
}
public static String getStaticPort() {
return serverPortStatic;
}
public String getNonStaticPort() {
return serverPortStatic;
}
2024-01-03 18:59:04 +01:00
}