[REPO REFACTOR]: changed to a better git repository structure with branches
This commit is contained in:
75
bootstrap/src/main/java/net/miarma/api/AppInitializer.java
Normal file
75
bootstrap/src/main/java/net/miarma/api/AppInitializer.java
Normal file
@@ -0,0 +1,75 @@
|
||||
package net.miarma.api;
|
||||
|
||||
import net.miarma.api.backlib.ConfigManager;
|
||||
import net.miarma.api.backlib.Constants;
|
||||
import net.miarma.api.backlib.security.SecretManager;
|
||||
import net.miarma.api.backlib.vertx.VertxJacksonConfig;
|
||||
import net.miarma.api.backlib.util.MessageUtil;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
|
||||
import io.vertx.core.Launcher;
|
||||
|
||||
/**
|
||||
* Punto de entrada para inicializar la aplicación.
|
||||
* Se encarga de:
|
||||
* - Crear directorios base si no existen
|
||||
* - Copiar el fichero default.properties
|
||||
* - Inicializar ConfigManager y secretos
|
||||
* - Configurar Jackson para Vert.x
|
||||
* - Desplegar el Verticle Master
|
||||
*/
|
||||
public class AppInitializer {
|
||||
|
||||
public static void main(String[] args) {
|
||||
AppInitializer initializer = new AppInitializer();
|
||||
initializer.init();
|
||||
initializer.deployMaster();
|
||||
Constants.LOGGER.info("✅ App initialized successfully!");
|
||||
}
|
||||
|
||||
private final ConfigManager configManager;
|
||||
|
||||
public AppInitializer() {
|
||||
this.configManager = ConfigManager.getInstance();
|
||||
}
|
||||
|
||||
public void init() {
|
||||
initializeDirectories();
|
||||
copyDefaultConfig();
|
||||
configManager.loadConfig();
|
||||
SecretManager.getOrCreateSecret();
|
||||
VertxJacksonConfig.configure();
|
||||
}
|
||||
|
||||
private void initializeDirectories() {
|
||||
File baseDir = new File(configManager.getBaseDir());
|
||||
if (!baseDir.exists() && baseDir.mkdirs()) {
|
||||
Constants.LOGGER.info("Created base directory: " + baseDir.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
|
||||
private void copyDefaultConfig() {
|
||||
File configFile = configManager.getConfigFile();
|
||||
if (!configFile.exists()) {
|
||||
try (InputStream in = getClass().getClassLoader().getResourceAsStream("default.properties")) {
|
||||
if (in != null) {
|
||||
Files.copy(in, configFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
|
||||
Constants.LOGGER.info("Copied default.properties to: " + configFile.getAbsolutePath());
|
||||
} else {
|
||||
Constants.LOGGER.error(MessageUtil.notFound("Default config", "resources"));
|
||||
}
|
||||
} catch (IOException e) {
|
||||
Constants.LOGGER.error(MessageUtil.failedTo("copy", "default config", e));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void deployMaster() {
|
||||
Launcher.executeCommand("run", MasterVerticle.class.getName());
|
||||
}
|
||||
}
|
||||
66
bootstrap/src/main/java/net/miarma/api/MasterVerticle.java
Normal file
66
bootstrap/src/main/java/net/miarma/api/MasterVerticle.java
Normal file
@@ -0,0 +1,66 @@
|
||||
package net.miarma.api;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import io.vertx.core.AbstractVerticle;
|
||||
import io.vertx.core.Future;
|
||||
import io.vertx.core.Promise;
|
||||
import net.miarma.api.backlib.Constants;
|
||||
import net.miarma.api.backlib.LogAccumulator;
|
||||
import net.miarma.api.backlib.util.DeploymentUtil;
|
||||
import net.miarma.api.microservices.core.verticles.CoreMainVerticle;
|
||||
import net.miarma.api.microservices.huertos.verticles.HuertosMainVerticle;
|
||||
import net.miarma.api.microservices.huertosdecine.verticles.CineMainVerticle;
|
||||
import net.miarma.api.microservices.miarmacraft.verticles.MMCMainVerticle;
|
||||
import net.miarma.api.microservices.mpaste.verticles.MPasteMainVerticle;
|
||||
|
||||
public class MasterVerticle extends AbstractVerticle {
|
||||
@Override
|
||||
public void start(Promise<Void> startPromise) {
|
||||
deploy()
|
||||
.onSuccess(v -> {
|
||||
vertx.setTimer(300, id -> {
|
||||
LogAccumulator.flushToLogger(Constants.LOGGER);
|
||||
startPromise.complete();
|
||||
});
|
||||
})
|
||||
.onFailure(startPromise::fail);
|
||||
}
|
||||
|
||||
private Future<Void> deploy() {
|
||||
Promise<Void> promise = Promise.promise();
|
||||
|
||||
Future<String> core = vertx.deployVerticle(new CoreMainVerticle())
|
||||
.onSuccess(id -> LogAccumulator.add(DeploymentUtil.successMessage(CoreMainVerticle.class)))
|
||||
.onFailure(err -> LogAccumulator.add(DeploymentUtil.failMessage(CoreMainVerticle.class, err)));
|
||||
|
||||
Future<String> huertos = vertx.deployVerticle(new HuertosMainVerticle())
|
||||
.onSuccess(id -> LogAccumulator.add(DeploymentUtil.successMessage(HuertosMainVerticle.class)))
|
||||
.onFailure(err -> LogAccumulator.add(DeploymentUtil.failMessage(HuertosMainVerticle.class, err)));
|
||||
|
||||
Future<String> mmc = vertx.deployVerticle(new MMCMainVerticle())
|
||||
.onSuccess(id -> LogAccumulator.add(DeploymentUtil.successMessage(MMCMainVerticle.class)))
|
||||
.onFailure(err -> LogAccumulator.add(DeploymentUtil.failMessage(MMCMainVerticle.class, err)));
|
||||
|
||||
Future<String> cine = vertx.deployVerticle(new CineMainVerticle())
|
||||
.onSuccess(id -> LogAccumulator.add(DeploymentUtil.successMessage(CineMainVerticle.class)))
|
||||
.onFailure(err -> LogAccumulator.add(DeploymentUtil.failMessage(CineMainVerticle.class, err)));
|
||||
|
||||
Future<String> mpaste = vertx.deployVerticle(new MPasteMainVerticle())
|
||||
.onSuccess(id -> LogAccumulator.add(DeploymentUtil.successMessage(MPasteMainVerticle.class)))
|
||||
.onFailure(err -> LogAccumulator.add(DeploymentUtil.failMessage(MPasteMainVerticle.class, err)));
|
||||
|
||||
Future.all(core, huertos, mmc, cine, mpaste)
|
||||
.onSuccess(_ -> promise.complete())
|
||||
.onFailure(promise::fail);
|
||||
|
||||
return promise.future();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void stop(Promise<Void> stopPromise) {
|
||||
vertx.deploymentIDs().forEach(id -> vertx.undeploy(id));
|
||||
stopPromise.complete();
|
||||
}
|
||||
}
|
||||
41
bootstrap/src/main/resources/default.properties
Normal file
41
bootstrap/src/main/resources/default.properties
Normal file
@@ -0,0 +1,41 @@
|
||||
# DB Configuration
|
||||
db.protocol=jdbc:mariadb
|
||||
db.host=localhost
|
||||
db.port=3306
|
||||
db.name=miarma
|
||||
db.user=root
|
||||
db.password=root
|
||||
dp.poolSize=5
|
||||
|
||||
# HTTP Server Configuration
|
||||
inet.host=localhost
|
||||
sso.logic.port=8080
|
||||
sso.data.port=8081
|
||||
mmc.logic.port=8100
|
||||
mmc.data.port=8101
|
||||
huertos.logic.port=8120
|
||||
huertos.data.port=8121
|
||||
cine.data.port = 8140
|
||||
cine.logic.port = 8141
|
||||
mpaste.data.port = 8160
|
||||
mpaste.logic.port = 8161
|
||||
|
||||
# Security Configuration
|
||||
jwt.secret=
|
||||
jwt.expiration=604800
|
||||
jwt.expiration.short=3600
|
||||
|
||||
# Mail Configuration
|
||||
smtp.server=
|
||||
smtp.port=
|
||||
imap.server=
|
||||
imap.port=
|
||||
|
||||
smtp.password.presidente=
|
||||
smtp.password.secretaria=
|
||||
smtp.password.tesoreria=
|
||||
smtp.password.admin=
|
||||
smtp.password.noreply=
|
||||
|
||||
# Discord Configuration
|
||||
discord.webhook=
|
||||
20
bootstrap/src/main/resources/logback.xml
Normal file
20
bootstrap/src/main/resources/logback.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<configuration>
|
||||
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>
|
||||
%cyan([%d{HH:mm:ss}]) %highlight(%-5level) %green(%logger{20}) - %msg%n
|
||||
</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<root level="INFO">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
</root>
|
||||
|
||||
<logger name="io.netty" level="WARN"/>
|
||||
<logger name="io.vertx" level="INFO"/>
|
||||
<logger name="io.vertx.core.impl.launcher" level="INFO"/>
|
||||
<logger name="io.vertx.core.logging" level="INFO"/>
|
||||
|
||||
</configuration>
|
||||
Reference in New Issue
Block a user