Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 23 additions & 22 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,29 +1,30 @@
host = "0.0.0.0"
oneme_tcp_port = "443"
tamtam_tcp_port = "4433"
host="0.0.0.0"
oneme_tcp_port="443"
tamtam_tcp_port="4433"

oneme_ws_port = "81"
tamtam_ws_port = "82"
oneme_ws_port="81"
tamtam_ws_port="82"

log_level = "debug"
log_level="debug"

db_type = "mysql"
db_type="mysql"

db_host = "localhost"
db_port = "3306"
db_user = "root"
db_password = "password"
db_name = "openmax"
db_host="localhost"
db_port="3306"
db_user="openmax"
db_password="password"
db_name="openmax"

db_file = ""
db_file=""

certfile = "/certs/cert.pem"
keyfile = "/certs/key.pem"
domain = "openmax.su"
certfile="/certs/cert.pem"
keyfile="/certs/key.pem"
domain="openmax.su"

avatar_base_url = "http://127.0.0.1/avatar/"
telegram_bot_token = "123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ"
telegram_bot_enabled = "1"
telegram_whitelist_ids = "1,2,3"
origins="http://127.0.0.1,https://web.openmax.su"
sms_gateway_url = "http://127.0.0.1:8100/sms-gateway"
avatar_base_url=http://127.0.0.1/avatar/
telegram_bot_token=123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ
telegram_bot_enabled=1
telegram_whitelist_ids=1,2,3

origins=http://127.0.0.1,https://web.openmax.su
sms_gateway_url=http://127.0.0.1:8100/sms-gateway
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,7 @@ __pycache__
.env
*.pem
*.sqlite
*.crt
*.crt
tmp/**
certs
.DS_Store
13 changes: 5 additions & 8 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,12 @@ FROM python:3.12-slim

WORKDIR /app

RUN apt-get update && apt-get install -y --no-install-recommends \
gcc \
&& rm -rf /var/lib/apt/lists/*

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY src/ ./src/
RUN --mount=type=cache,target=/root/.cache/pip \
pip install --upgrade pip && \
pip install -r requirements.txt

WORKDIR /app/src
COPY src /app/src

CMD ["python", "main.py"]
CMD ["python", "src/main.py"]
84 changes: 55 additions & 29 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,39 +1,65 @@
services:
app:
build: .
restart: unless-stopped
ports:
- "${oneme_tcp_port:-443}:443"
- "${tamtam_tcp_port:-4433}:4433"
- "${oneme_ws_port:-81}:81"
- "${tamtam_ws_port:-82}:82"
volumes:
- /etc/letsencrypt/live/${domain}/fullchain.pem:/certs/cert.pem:ro
- /etc/letsencrypt/live/${domain}/privkey.pem:/certs/key.pem:ro
env_file:
- .env
environment:
- db_host=db
depends_on:
db:
condition: service_healthy

db:
image: mysql:8.0
mysql:
image: mysql:8.4
container_name: openmax-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${db_password:-openmax}
MYSQL_DATABASE: ${db_name:-openmax}
MYSQL_USER: ${db_user:-openmax}
MYSQL_PASSWORD: ${db_password:-openmax}
MYSQL_ROOT_PASSWORD: ${db_password}
MYSQL_DATABASE: ${db_name}
MYSQL_USER: ${db_user}
MYSQL_PASSWORD: ${db_password}
MYSQL_ROOT_HOST: "%"
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
volumes:
- mysql_data:/var/lib/mysql
- ./tables.sql:/docker-entrypoint-initdb.d/tables.sql:ro
- ./tables.sql:/docker-entrypoint-initdb.d/01-tables.sql:ro
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
test:
- CMD-SHELL
- mysql -h127.0.0.1 -uroot -p$${MYSQL_ROOT_PASSWORD} -e 'SELECT 1;'
interval: 10s
timeout: 5s
retries: 5
retries: 20
start_period: 30s

openmax:
build:
context: .
image: openmax-server:latest
container_name: openmax-server
restart: unless-stopped
depends_on:
mysql:
condition: service_healthy
environment:
host: ${host}
oneme_tcp_port: ${oneme_tcp_port}
tamtam_tcp_port: ${tamtam_tcp_port}
oneme_ws_port: ${oneme_ws_port}
tamtam_ws_port: ${tamtam_ws_port}
log_level: ${log_level}
db_type: ${db_type}
db_host: mysql
db_port: ${db_port}
db_user: ${db_user}
db_password: ${db_password}
db_name: ${db_name}
certfile: /app/certs/cert.pem
keyfile: /app/certs/key.pem
avatar_base_url: ${avatar_base_url}
telegram_bot_token: ${telegram_bot_token}
telegram_bot_enabled: ${telegram_bot_enabled}
telegram_whitelist_ids: ${telegram_whitelist_ids}
volumes:
- ${certfile}:/app/certs/cert.pem:ro
- ${keyfile}:/app/certs/key.pem:ro
ports:
- "${oneme_tcp_port}:443"
- "${tamtam_tcp_port}:4433"
- "${oneme_ws_port}:81"
- "${tamtam_ws_port}:82"

volumes:
mysql_data:
mysql_data:
7 changes: 5 additions & 2 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
> Проект находится на ранней стадии разработки и вероятно полон багов.
>
> Использование в профессиональных средах не рекомендовано.

>
# OpenMAX

Эмулятор сервера MAX и ТамТам
Expand All @@ -22,4 +22,7 @@ https://t.me/openmax_alerts
Клиент может быть практически любым, главное условие - чтобы он был совместим с официальным сервером (`api.oneme.ru` / `api.tamtam.chat`).

# Дополнительная информация
[Faq](faq/readme.md)

- [FAQ](faq/readme.md)
- [Документация проекта](https://github.com/openmax-server/docs)
- [Публичные сервера](faq/servers.md)
14 changes: 7 additions & 7 deletions tables.sql
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
CREATE TABLE `users` (
CREATE TABLE IF NOT EXISTS `users` (
`id` INT PRIMARY KEY,
`phone` VARCHAR(20) UNIQUE,
`telegram_id` VARCHAR(64) UNIQUE,
Expand All @@ -15,7 +15,7 @@ CREATE TABLE `users` (
`username` VARCHAR(60) UNIQUE
);

CREATE TABLE `tokens` (
CREATE TABLE IF NOT EXISTS `tokens` (
`phone` VARCHAR(20) NOT NULL,
`token_hash` VARCHAR(64) NOT NULL,
`device_type` VARCHAR(256) NOT NULL,
Expand All @@ -24,29 +24,29 @@ CREATE TABLE `tokens` (
`time` VARCHAR(16) NOT NULL
);

CREATE TABLE `auth_tokens` (
CREATE TABLE IF NOT EXISTS `auth_tokens` (
`phone` VARCHAR(20) NOT NULL,
`token_hash` VARCHAR(64) NOT NULL,
`code_hash` VARCHAR(64) NOT NULL,
`expires` VARCHAR(16) NOT NULL,
`state` VARCHAR(16)
);

CREATE TABLE `user_data` (
CREATE TABLE IF NOT EXISTS `user_data` (
`phone` VARCHAR(20) NOT NULL UNIQUE PRIMARY KEY,
`contacts` JSON NOT NULL,
`folders` JSON NOT NULL,
`user_config` JSON NOT NULL,
`chat_config` JSON NOT NULL
);

CREATE TABLE `chats` (
CREATE TABLE IF NOT EXISTS `chats` (
`id` INT NOT NULL PRIMARY KEY,
`owner` INT NOT NULL,
`type` VARCHAR(16) NOT NULL
);

CREATE TABLE `messages` (
CREATE TABLE IF NOT EXISTS `messages` (
`id` INT NOT NULL PRIMARY KEY,
`chat_id` INT NOT NULL,
`sender` INT NOT NULL,
Expand All @@ -58,7 +58,7 @@ CREATE TABLE `messages` (
`type` VARCHAR(16) NOT NULL
);

CREATE TABLE `chat_participants` (
CREATE TABLE IF NOT EXISTS `chat_participants` (
`chat_id` INT NOT NULL,
`user_id` INT NOT NULL,
`joined_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
Expand Down