Add socks proxy support

This commit is contained in:
2025-01-02 16:01:42 +03:30
parent 798a80e820
commit 153d9c577b
3 changed files with 23 additions and 4 deletions

1
.gitignore vendored
View File

@@ -6,3 +6,4 @@ obj/
.env
data/
Folder.DotSettings.user
docker-compose.yaml

View File

@@ -19,10 +19,11 @@ public class ConfigData
var adminNumId = DotNetEnv.Env.GetString("ADMIN_NUMID") ?? Environment.GetEnvironmentVariable("ADMIN_NUMID");
var instance = DotNetEnv.Env.GetString("CUSTOM_INSTANCE") ??
Environment.GetEnvironmentVariable("CUSTOM_INSTANCE") ?? "https://haminoa.net";
var socksProxy = DotNetEnv.Env.GetString("SOCKS_PROXY") ?? Environment.GetEnvironmentVariable("SOCKS_PROXY") ?? String.Empty;
// Check if any of the values are still null or empty
if (string.IsNullOrEmpty(botToken) || string.IsNullOrEmpty(tag)
|| string.IsNullOrEmpty(channelNumId) || string.IsNullOrEmpty(adminNumId))
|| string.IsNullOrEmpty(channelNumId) || string.IsNullOrEmpty(adminNumId) || string.IsNullOrEmpty(mongoDbConnectionString))
return null; // Failure if any are missing
// If all required variables are present, assign to the config
@@ -34,7 +35,8 @@ public class ConfigData
TAG = tag,
CHANNEL_NUMID = channelNumId,
ADMIN_NUMID = adminNumId,
INSTANCE = instance
INSTANCE = instance,
SOCKS_PROXY = socksProxy
};
return config; // Success
@@ -49,5 +51,6 @@ public class ConfigData
public string ADMIN_NUMID { get; set; }
public string INSTANCE { get; set; }
public string MONGODB_CONNECTION_STRING { get; set; }
public string SOCKS_PROXY { get; set; }
}
}

View File

@@ -1,4 +1,5 @@
using CatsOfMastodonBot.Models;
using System.Net;
using CatsOfMastodonBot.Models;
using CatsOfMastodonBot.Services;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
@@ -48,7 +49,21 @@ public class MastodonBot
// Setup bot
var bot = new TelegramBotClient(config.BOT_TOKEN);
TelegramBotClient bot;
if (!String.IsNullOrEmpty(config.SOCKS_PROXY))
{
WebProxy proxy = new (config.SOCKS_PROXY);
HttpClient httpClient = new (
new SocketsHttpHandler { Proxy = proxy, UseProxy = true }
);
bot = new TelegramBotClient(config.BOT_TOKEN, httpClient);
}
else
{
bot = new TelegramBotClient(config.BOT_TOKEN);
}
var me = await bot.GetMe();
await bot.DropPendingUpdates();