diff --git a/.env b/.env
new file mode 100644
index 0000000..60f84bf
--- /dev/null
+++ b/.env
@@ -0,0 +1,13 @@
+DB_HOST=localhost # Имя базы данных
+DB_PORT=5432 # Порт для подключения к базе данных
+DB_USER=your_user # Имя пользователя базы данных
+DB_PASSWORD=your_password # Пароль для доступа к базе данных
+DB_NAME=your_database # Имя базы данных
+
+PORT=3000 # Порт, на котором будет работать сервер
+
+# Список серверов CDN и SDU. Разделяются запятой если их несколько
+# Без пробелов
+CDN_SERVERS=http://10.211.55.2:7789
+#SDU - Server Delivery Updates
+SDU_SERVERS=http://10.211.55.2:7777
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 0705691..443d950 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,3 +35,6 @@ target
.project
.classpath
+build/.env
+build/.env*
+
diff --git a/build/docker-compose.prod.yml b/build/docker-compose.prod.yml
deleted file mode 100644
index 4966d7b..0000000
--- a/build/docker-compose.prod.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-version: '3.8'
-
-services:
- app:
- build:
- context: .
- dockerfile: Dockerfile
- container_name: rosetta-server
- ports:
- - "${PORT:-3000}:${PORT:-3000}"
- environment:
- - PORT=${PORT:-3000} # Устанавливаем порт по умолчанию 3000, может быть переопределён через переменную окружения
- depends_on:
- - db
-
- db:
- image: postgres:latest
- environment:
- POSTGRES_DB: your_database
- POSTGRES_USER: your_user
- POSTGRES_PASSWORD: your_password
- ports:
- - "5432:5432"
\ No newline at end of file
diff --git a/build/docker-compose.yml b/build/docker-compose.yml
new file mode 100644
index 0000000..b1a7831
--- /dev/null
+++ b/build/docker-compose.yml
@@ -0,0 +1,28 @@
+version: '3.8'
+
+services:
+ app:
+ build:
+ context: .
+ dockerfile: Dockerfile
+ container_name: rosetta-server
+ ports:
+ - "${PORT:-3000}:${PORT:-3000}"
+ env_file:
+ - .env
+ depends_on:
+ - db
+
+ db:
+ image: postgres:latest
+ environment:
+ POSTGRES_DB: ${DB_NAME:-rosetta}
+ POSTGRES_USER: ${DB_USER:-rosetta}
+ POSTGRES_PASSWORD: ${DB_PASSWORD:-password}
+ ports:
+ - "5432:5432"
+ volumes:
+ - db_data:/var/lib/postgresql/data
+
+volumes:
+ db_data:
\ No newline at end of file
diff --git a/build/docker-compose.dev.yml b/docker-compose.yml
similarity index 63%
rename from build/docker-compose.dev.yml
rename to docker-compose.yml
index d40619c..2996f24 100644
--- a/build/docker-compose.dev.yml
+++ b/docker-compose.yml
@@ -1,3 +1,6 @@
+#Это docker compose файл для разработки
+#Он запускает базу и Adminer для управления базой данных
+
version: '3.8'
services:
diff --git a/pom.xml b/pom.xml
index eee9f12..447d2b3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,13 +40,6 @@
jakarta.persistence-api
3.1.0
-
-
-
- org.yaml
- snakeyaml
- 2.5
-
diff --git a/server.yml b/server.yml
deleted file mode 100644
index ebed09a..0000000
--- a/server.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-#Подключение к БД
-database:
- host: db
- user: your_user
- password: your_password
- db: your_database
-#CDN (транспортные) серверы
-transport_servers:
- - http://10.211.55.2:7789
-#Серверы доставки обновлений (SDU Servers Delivery Updates)
-update_servers:
- - http://10.211.55.2:7777
diff --git a/src/main/java/com/rosetta/im/Boot.java b/src/main/java/com/rosetta/im/Boot.java
index c1c7220..bc8e289 100644
--- a/src/main/java/com/rosetta/im/Boot.java
+++ b/src/main/java/com/rosetta/im/Boot.java
@@ -2,8 +2,6 @@ package com.rosetta.im;
import com.rosetta.im.client.ClientManager;
import com.rosetta.im.client.OnlineManager;
-import com.rosetta.im.config.Configuration;
-import com.rosetta.im.config.ServerConfiguration;
import com.rosetta.im.event.EventManager;
import com.rosetta.im.executors.Executor0Handshake;
import com.rosetta.im.executors.Executor10RequestUpdate;
@@ -73,8 +71,6 @@ public class Boot {
private ServerAdapter serverAdapter;
private ClientManager clientManager;
private OnlineManager onlineManager;
- private Configuration configuration;
- private ServerConfiguration serverConfiguration;
/**
* Конструктор по умолчанию, использует порт 3000 для сервера
@@ -98,7 +94,6 @@ public class Boot {
30
), packetManager, this.serverAdapter);
this.clientManager = new ClientManager(server);
- this.configuration = new Configuration("server.yml");
}
/**
@@ -139,7 +134,6 @@ public class Boot {
*/
public Boot bootstrap() {
try{
- this.serverConfiguration = this.configuration.loadConfiguration();
this.server.start();
this.registerAllPackets();
this.registerAllExecutors();
@@ -196,9 +190,9 @@ public class Boot {
this.packetManager.registerExecutor(4, new Executor4OnlineState(this.onlineManager, this.clientManager));
this.packetManager.registerExecutor(6, new Executor6Message(this.clientManager, this.packetManager));
this.packetManager.registerExecutor(7, new Executor7Read(this.clientManager, this.packetManager));
- this.packetManager.registerExecutor(10, new Executor10RequestUpdate(this.serverConfiguration));
+ this.packetManager.registerExecutor(10, new Executor10RequestUpdate());
this.packetManager.registerExecutor(11, new Executor11Typeing(this.clientManager, this.packetManager));
- this.packetManager.registerExecutor(15, new Executor15RequestTransport(this.serverConfiguration));
+ this.packetManager.registerExecutor(15, new Executor15RequestTransport());
this.packetManager.registerExecutor(16, new Executor16PushNotification());
this.packetManager.registerExecutor(17, new Executor17GroupCreate());
this.packetManager.registerExecutor(18, new Executor18GroupInfo());
diff --git a/src/main/java/com/rosetta/im/config/Configuration.java b/src/main/java/com/rosetta/im/config/Configuration.java
deleted file mode 100644
index 2d5ae4b..0000000
--- a/src/main/java/com/rosetta/im/config/Configuration.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.rosetta.im.config;
-
-import java.io.InputStream;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-
-import org.yaml.snakeyaml.LoaderOptions;
-import org.yaml.snakeyaml.Yaml;
-
-import com.rosetta.im.exception.ConfigurationException;
-
-public class Configuration {
-
- private String serverConfigName;
-
- public Configuration(String serverConfigName) {
- this.serverConfigName = serverConfigName;
- }
-
- public ServerConfiguration loadConfiguration() throws ConfigurationException, Exception {
- if(!Files.exists(Paths.get(this.serverConfigName))){
- /**
- * Файл конфигурации с переданным названием не найден
- */
- throw new ConfigurationException(this.serverConfigName + " is missing");
- }
-
- LoaderOptions options = new LoaderOptions();
- Yaml yaml = new Yaml(options);
-
- InputStream inputStream = Files.newInputStream(Paths.get(this.serverConfigName));
- /**
- * SnakeYAML автоматически загрузит обьект ServerConfiguration через рефлексию
- * обратите внимание название полей в ServerConfiguration должны совпадать с названиями в
- * server.yml
- */
- ServerConfiguration serverConfiguration = yaml.loadAs(inputStream, ServerConfiguration.class);
- return serverConfiguration;
- }
-
-}
diff --git a/src/main/java/com/rosetta/im/config/DatabaseConfiguration.java b/src/main/java/com/rosetta/im/config/DatabaseConfiguration.java
deleted file mode 100644
index 558d403..0000000
--- a/src/main/java/com/rosetta/im/config/DatabaseConfiguration.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.rosetta.im.config;
-
-public class DatabaseConfiguration {
-
- public String host;
- public String user;
- public String password;
- public String db;
-
- public String getHost() {
- return host;
- }
-
- public void setHost(String host) {
- this.host = host;
- }
-
- public String getUser() {
- return user;
- }
-
- public void setUser(String user) {
- this.user = user;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
- public String getDb() {
- return db;
- }
-
- public void setDb(String db) {
- this.db = db;
- }
-
-}
diff --git a/src/main/java/com/rosetta/im/config/ServerConfiguration.java b/src/main/java/com/rosetta/im/config/ServerConfiguration.java
deleted file mode 100644
index d400017..0000000
--- a/src/main/java/com/rosetta/im/config/ServerConfiguration.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.rosetta.im.config;
-
-import java.util.List;
-
-/**
- * Этот файл отвечает за конфигурацию которая хранится в файле server.yml
- */
-public class ServerConfiguration {
-
- public DatabaseConfiguration database;
-
- public List transport_servers;
-
- public List update_servers;
-
- public List getUpdateServers() {
- return update_servers;
- }
-
- public void setUpdateServers(List update_servers) {
- this.update_servers = update_servers;
- }
-
- public DatabaseConfiguration getDatabase() {
- return database;
- }
-
- public void setDatabase(DatabaseConfiguration database) {
- this.database = database;
- }
-
- public List getTransportServers() {
- return transport_servers;
- }
-
- public void setTransportServers(List transport_servers) {
- this.transport_servers = transport_servers;
- }
-
-
-}
diff --git a/src/main/java/com/rosetta/im/database/HibernateUtil.java b/src/main/java/com/rosetta/im/database/HibernateUtil.java
index a1596de..feb87ca 100644
--- a/src/main/java/com/rosetta/im/database/HibernateUtil.java
+++ b/src/main/java/com/rosetta/im/database/HibernateUtil.java
@@ -9,8 +9,21 @@ public class HibernateUtil {
static {
try {
- sessionFactory = new Configuration().configure().buildSessionFactory();
+ Configuration cfg = new Configuration().configure();
+
+ String host = System.getenv("DB_HOST");
+ String port = System.getenv("DB_PORT");
+ String user = System.getenv("DB_USER");
+ String pass = System.getenv("DB_PASSWORD");
+ String name = System.getenv("DB_NAME");
+ String url = String.format("jdbc:postgresql://%s:%s/%s", host, port, name);
+ cfg.setProperty("hibernate.connection.url", url);
+ cfg.setProperty("hibernate.connection.username", user);
+ cfg.setProperty("hibernate.connection.password", pass);
+
+ sessionFactory = cfg.buildSessionFactory();
} catch (Exception e) {
+ e.printStackTrace();
throw new ExceptionInInitializerError("Error initializing Hibernate: " + e.getMessage());
}
}
diff --git a/src/main/java/com/rosetta/im/executors/Executor10RequestUpdate.java b/src/main/java/com/rosetta/im/executors/Executor10RequestUpdate.java
index e7e612c..d2c2dda 100644
--- a/src/main/java/com/rosetta/im/executors/Executor10RequestUpdate.java
+++ b/src/main/java/com/rosetta/im/executors/Executor10RequestUpdate.java
@@ -1,8 +1,8 @@
package com.rosetta.im.executors;
+import java.util.Arrays;
import java.util.List;
-import com.rosetta.im.config.ServerConfiguration;
import com.rosetta.im.packet.Packet10RequestUpdate;
import com.rosetta.im.util.RandomUtil;
@@ -17,12 +17,6 @@ import io.orprotocol.packet.PacketExecutor;
*/
public class Executor10RequestUpdate extends PacketExecutor {
- private ServerConfiguration serverConfiguration;
-
- public Executor10RequestUpdate(ServerConfiguration serverConfiguration) {
- this.serverConfiguration = serverConfiguration;
- }
-
@Override
public void onPacketReceived(Packet10RequestUpdate packet, Client client) throws Exception, ProtocolException {
/**
@@ -37,7 +31,7 @@ public class Executor10RequestUpdate extends PacketExecutor cdnServers = this.serverConfiguration.getUpdateServers();
+ List cdnServers = Arrays.asList(System.getenv("SDU_SERVERS").split(","));
String selectedServer = cdnServers.get(RandomUtil.randomBetween(0, cdnServers.size() - 1));
packet.setServer(selectedServer);
/**
diff --git a/src/main/java/com/rosetta/im/executors/Executor15RequestTransport.java b/src/main/java/com/rosetta/im/executors/Executor15RequestTransport.java
index d0ee7e6..249e490 100644
--- a/src/main/java/com/rosetta/im/executors/Executor15RequestTransport.java
+++ b/src/main/java/com/rosetta/im/executors/Executor15RequestTransport.java
@@ -1,10 +1,10 @@
package com.rosetta.im.executors;
+import java.util.Arrays;
import java.util.List;
import com.rosetta.im.Failures;
import com.rosetta.im.client.tags.ECIAuthentificate;
-import com.rosetta.im.config.ServerConfiguration;
import com.rosetta.im.packet.Packet15RequestTransport;
import com.rosetta.im.util.RandomUtil;
@@ -14,12 +14,6 @@ import io.orprotocol.packet.PacketExecutor;
public class Executor15RequestTransport extends PacketExecutor {
- private ServerConfiguration serverConfiguration;
-
- public Executor15RequestTransport(ServerConfiguration serverConfiguration){
- this.serverConfiguration = serverConfiguration;
- }
-
@Override
public void onPacketReceived(Packet15RequestTransport packet, Client client) throws Exception, ProtocolException {
ECIAuthentificate eciAuthentificate = client.getTag(ECIAuthentificate.class);
@@ -36,7 +30,7 @@ public class Executor15RequestTransport extends PacketExecutor cdnServers = this.serverConfiguration.getTransportServers();
+ List cdnServers = Arrays.asList(System.getenv("CDN_SERVERS").split(","));
String selectedServer = cdnServers.get(RandomUtil.randomBetween(0, cdnServers.size() - 1));
packet.setServer(selectedServer);
/**
diff --git a/src/main/resources/hibernate.cfg.xml b/src/main/resources/hibernate.cfg.xml
index edad6db..dcc88de 100644
--- a/src/main/resources/hibernate.cfg.xml
+++ b/src/main/resources/hibernate.cfg.xml
@@ -3,10 +3,6 @@
org.postgresql.Driver
- jdbc:postgresql://localhost:5432/your_database
- your_user
- your_password
-
update