Skip to content

Commit

Permalink
Merge layer 179 code
Browse files Browse the repository at this point in the history
  • Loading branch information
loyldg committed Jun 15, 2024
2 parents 262fd9d + c891355 commit d274d9d
Show file tree
Hide file tree
Showing 677 changed files with 9,910 additions and 5,378 deletions.
18 changes: 4 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# MyTelegram

[![API Layer](https://img.shields.io/badge/API_Layer-177-blueviolet)](https://corefork.telegram.org/methods)
[![API Layer](https://img.shields.io/badge/API_Layer-179-blueviolet)](https://corefork.telegram.org/methods)
[![MTProto](https://img.shields.io/badge/MTProto_Protocol-2.0-green)](https://corefork.telegram.org/mtproto/)
[![Support Chat](https://img.shields.io/badge/Chat_with_us-on_Telegram-0088cc)](https://t.me/+S-aNBoRvCRpPyXrR)

MyTelegram is telegram server side api implementation written in c#,support private deployment

## Features

- API Layer: **`177`**
- API Layer: **`179`**
- [MTProto transports](https://corefork.telegram.org/mtproto/mtproto-transports): **`Abridged`**,**`Intermediate`**
- Private chat
- Group chat
Expand All @@ -25,7 +25,7 @@ MyTelegram is telegram server side api implementation written in c#,support priv
## Build MyTelegram Server

1. Install [.NET SDK 8.0](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)
2. Run `build/build.ps1` ([PowerShell7+](https://github.com/PowerShell/PowerShell))
2. Run `build/build.ps1` or `build/build.sh`
3. Build output folder is `out/{version}`

## Build docker images
Expand All @@ -47,6 +47,7 @@ build\docker\5.build-gateway-server.sh
1. Download docker-compose configuration files
```
https://raw.githubusercontent.com/loyldg/mytelegram/dev/docker/compose/docker-compose.yml
https://raw.githubusercontent.com/loyldg/mytelegram/dev/docker/compose/.env
```
2. Replace `192.168.1.100` with your own server IP in `.env`
Expand All @@ -55,17 +56,6 @@ build\docker\5.build-gateway-server.sh
Linux: docker compose up
Windows: docker-compose --env-file .env up
```

- ### Run MyTelegram manually

1. Download mytelegram server from [https://github.com/loyldg/mytelegram/releases](https://github.com/loyldg/mytelegram/releases)
2. Install Redis
3. Install MongoDB
4. Intall RabbitMQ
5. Install Minio
6. Replace `192.168.1.100` with your own server IP in `start-all.bat`
7. Run `start-all.bat`
8. Run telegram client
4. Default verification code is `22222`

## MyTelegram clients
Expand Down
33 changes: 18 additions & 15 deletions build/build.ps1
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
$version="0.20.420"
$version=Get-Content "./version.txt"
$date = Get-Date -Format "Mdd"
$version = $version+$date

$currentDir=(Get-Item .).FullName
$parentFolder=(Get-Item $currentDir).Parent
$outputRootFolder=Join-Path $parentFolder "out" $version
$outputRootFolder=Join-Path $parentFolder "out/local" $version
$sourceRootFolder=Join-Path $parentFolder "./source/src"

$gatewayServerOutputFolder=Join-Path $outputRootFolder "gateway"
$messengerCommandServerOutputFolder=Join-Path $outputRootFolder "messenger-command"
$messengerQueryServerOutputFolder=Join-Path $outputRootFolder "messenger-query"
$messengerGrpcServiceOutputFolder=Join-Path $outputRootFolder "messenger-grpc-service"
$smsSenderOutputFolder=Join-Path $outputRootFolder "sms-sender"
$gatewayOutputFolder=Join-Path $outputRootFolder "gateway"
$messengerProCommandOutputFolder=Join-Path $outputRootFolder "command-server"
$messengerProQueryOutputFolder=Join-Path $outputRootFolder "query-server"
$messengerGrpcOutputFolder=Join-Path $outputRootFolder "messenger-grpc"
$smsOutputFolder=Join-Path $outputRootFolder "sms"

Write-Output "Current dir:$currentDir"
Write-Output "OutputFolder is:$outputRootFolder"
Expand All @@ -20,19 +23,19 @@ function CreateFolderIfNotExists([System.String] $folder){
}
}

function Build-Server([System.String]$srcFolder,[System.String] $outputFolder) {
$sourceFolder = Join-Path $sourceRootFolder $srcFolder
function Build-Server([System.String]$srcFolder,[System.String] $outputFolder) {
$sourceFolder=Join-Path $sourceRootFolder $srcFolder
dotnet publish $sourceFolder -c Release -o $outputFolder
Get-ChildItem -Path $outputFolder *.pdb | ForEach-Object { Remove-Item -Path $_.FullName }
}

# Set-Location ../source/
#dotnet restore ./MyTelegram.sln
Build-Server "./MyTelegram.GatewayServer" $gatewayServerOutputFolder
Build-Server "./MyTelegram.Messenger.CommandServer" $messengerCommandServerOutputFolder
Build-Server "./MyTelegram.Messenger.QueryServer" $messengerQueryServerOutputFolder
Build-Server "./MyTelegram.MessengerServer.GrpcService" $messengerGrpcServiceOutputFolder
Build-Server "./MyTelegram.SmsSender" $smsSenderOutputFolder
Build-Server "./MyTelegram.GatewayServer" $gatewayOutputFolder
Build-Server "./MyTelegram.Messenger.CommandServer" $messengerProCommandOutputFolder
Build-Server "./MyTelegram.Messenger.QueryServer" $messengerProQueryOutputFolder
Build-Server "./MyTelegram.MessengerServer.GrpcService" $messengerGrpcOutputFolder
Build-Server "./MyTelegram.SmsSender" $smsOutputFolder

Set-Location $currentDir


41 changes: 41 additions & 0 deletions build/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#!/bin/bash
v=$(head -n 1 ./version.txt)
currentDate=`date +%-m%d`
version=$v.$currentDate

currentDir=$(pwd)
parentFolder=$(dirname "$currentDir")
outputRootFolder="$parentFolder/out/local/$version"
sourceRootFolder="$parentFolder/source/src"

gatewayOutputFolder="$outputRootFolder/gateway"
messengerProCommandOutputFolder="$outputRootFolder/command-server"
messengerProQueryOutputFolder="$outputRootFolder/query-server"
messengerGrpcOutputFolder="$outputRootFolder/messenger-grpc"
smsOutputFolder="$outputRootFolder/sms"

echo "Current dir: $currentDir"
echo "OutputFolder is: $outputRootFolder"

CreateFolderIfNotExists() {
folder="$1"
if [ ! -d "$folder" ]; then
echo "Create new folder: $folder"
mkdir -p "$folder"
fi
}

Build-Server() {
srcFolder="$1"
outputFolder="$2"
sourceFolder="$sourceRootFolder/$srcFolder"
dotnet publish "$sourceFolder" -c Release -o "$outputFolder"
}

Build-Server "./MyTelegram.GatewayServer" "$gatewayOutputFolder"
Build-Server "./MyTelegram.Messenger.CommandServer" "$messengerProCommandOutputFolder"
Build-Server "./MyTelegram.Messenger.QueryServer" "$messengerProQueryOutputFolder"
Build-Server "./MyTelegram.MessengerServer.GrpcService" "$messengerGrpcOutputFolder"
Build-Server "./MyTelegram.SmsSender" "$smsOutputFolder"

cd "$currentDir"
8 changes: 0 additions & 8 deletions build/docker/5.build-gateway-server-linux-musl-x64.sh

This file was deleted.

12 changes: 10 additions & 2 deletions build/docker/Dockerfile-gateway-server
Original file line number Diff line number Diff line change
@@ -1,19 +1,25 @@
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
# See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.

# This stage is used when running from VS in fast mode (Default for Debug configuration)
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER app
WORKDIR /app

# TCP
EXPOSE 20443
EXPOSE 20543
EXPOSE 20643
EXPOSE 20644
# WebSocket(HTTPS)
EXPOSE 30443
# WebSocket(HTTP)
EXPOSE 30444

# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["Directory.Packages.props", "."]
COPY ["Directory.Build.props", "."]
COPY ["src/MyTelegram.GatewayServer/MyTelegram.GatewayServer.csproj", "src/MyTelegram.GatewayServer/"]
COPY ["src/MyTelegram.Core/MyTelegram.Core.csproj", "src/MyTelegram.Core/"]
COPY ["src/MyTelegram.Domain.Shared/MyTelegram.Domain.Shared.csproj", "src/MyTelegram.Domain.Shared/"]
Expand All @@ -25,10 +31,12 @@ COPY . .
WORKDIR "/src/src/MyTelegram.GatewayServer"
RUN dotnet build "./MyTelegram.GatewayServer.csproj" -c $BUILD_CONFIGURATION -o /app/build

# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./MyTelegram.GatewayServer.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false

# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
Expand Down
43 changes: 0 additions & 43 deletions build/docker/Dockerfile-linux-musl-x64-gateway-server

This file was deleted.

19 changes: 9 additions & 10 deletions build/docker/Dockerfile-messenger-command-server
Original file line number Diff line number Diff line change
@@ -1,26 +1,23 @@
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
# See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/runtime:8.0-alpine AS base
# This stage is used when running from VS in fast mode (Default for Debug configuration)
FROM mcr.microsoft.com/dotnet/runtime:8.0 AS base
USER app
WORKDIR /app

FROM mcr.microsoft.com/dotnet/sdk:8.0-alpine AS build
# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
ARG PROTOBUF_PROTOC=/usr/bin/protoc
ARG GRPC_PROTOC_PLUGIN=/usr/bin/grpc_csharp_plugin
WORKDIR /src
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories &&\
apk add --no-cache grpc-plugins

COPY ["Directory.Packages.props", "."]
COPY ["Directory.Build.props", "."]
COPY ["nuget.config", "."]
COPY ["src/MyTelegram.Messenger.CommandServer/MyTelegram.Messenger.CommandServer.csproj", "src/MyTelegram.Messenger.CommandServer/"]
COPY ["src/Microsoft.Cuckoo/Microsoft.Cuckoo.csproj", "src/Microsoft.Cuckoo/"]
COPY ["src/MyTelegram.Caching.Redis/MyTelegram.Caching.Redis.csproj", "src/MyTelegram.Caching.Redis/"]
COPY ["src/MyTelegram.Core/MyTelegram.Core.csproj", "src/MyTelegram.Core/"]
COPY ["src/MyTelegram.Domain.Shared/MyTelegram.Domain.Shared.csproj", "src/MyTelegram.Domain.Shared/"]
COPY ["src/MyTelegram.Domain/MyTelegram.Domain.csproj", "src/MyTelegram.Domain/"]
COPY ["src/MyTelegram.EventFlow/MyTelegram.EventFlow.csproj", "src/MyTelegram.EventFlow/"]
COPY ["src/MyTelegram.Schema/MyTelegram.Schema.csproj", "src/MyTelegram.Schema/"]
COPY ["src/MyTelegram.GrpcService/MyTelegram.GrpcService.csproj", "src/MyTelegram.GrpcService/"]
COPY ["src/MyTelegram.EventBus.Rebus/MyTelegram.EventBus.Rebus.csproj", "src/MyTelegram.EventBus.Rebus/"]
Expand All @@ -33,15 +30,17 @@ COPY ["src/MyTelegram.ReadModel.MongoDB/MyTelegram.ReadModel.MongoDB.csproj", "s
COPY ["src/MyTelegram.EventFlow.MongoDB/MyTelegram.EventFlow.MongoDB.csproj", "src/MyTelegram.EventFlow.MongoDB/"]
COPY ["src/MyTelegram.ReadModel.InMemory/MyTelegram.ReadModel.InMemory.csproj", "src/MyTelegram.ReadModel.InMemory/"]
COPY ["src/MyTelegram.Services/MyTelegram.Services.csproj", "src/MyTelegram.Services/"]
RUN dotnet restore "./src/MyTelegram.Messenger.CommandServer/./MyTelegram.Messenger.CommandServer.csproj"
RUN dotnet restore "./src/MyTelegram.Messenger.CommandServer/MyTelegram.Messenger.CommandServer.csproj"
COPY . .
WORKDIR "/src/src/MyTelegram.Messenger.CommandServer"
RUN dotnet build "./MyTelegram.Messenger.CommandServer.csproj" -c $BUILD_CONFIGURATION -o /app/build

# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./MyTelegram.Messenger.CommandServer.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false

# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
Expand Down
54 changes: 0 additions & 54 deletions build/docker/Dockerfile-messenger-command-server-linux-musl-x64

This file was deleted.

Loading

0 comments on commit d274d9d

Please sign in to comment.