83 lines
2.9 KiB
C#
83 lines
2.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using IniParser;
|
|
using IniParser.Model;
|
|
using NLog;
|
|
using NLog.Config;
|
|
using NLog.Targets;
|
|
using StackExchange.Redis;
|
|
|
|
namespace RSSBot {
|
|
public static class Configuration {
|
|
public static string BotToken;
|
|
private static ConnectionMultiplexer _redis;
|
|
public static IDatabase Database;
|
|
public static string RedisHash;
|
|
public static List<int> Admins;
|
|
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
|
|
|
public static void Parse()
|
|
{
|
|
if (!File.Exists("NLog.config")) {
|
|
Console.WriteLine("NLog.config nicht gefunden, setze auf INFO...");
|
|
LoggingConfiguration config = new LoggingConfiguration();
|
|
|
|
ConsoleTarget logconsole = new ConsoleTarget("logconsole");
|
|
config.AddRule(LogLevel.Info, LogLevel.Fatal, logconsole);
|
|
logconsole.Layout = "${longdate} - ${logger} - ${level:uppercase=true} - ${message}";
|
|
LogManager.Configuration = config;
|
|
} else {
|
|
LogManager.LoadConfiguration("NLog.config");
|
|
}
|
|
|
|
FileIniDataParser parser = new FileIniDataParser();
|
|
if (!File.Exists("config.ini")) {
|
|
Logger.Fatal("config.ini nicht gefunden.");
|
|
Environment.Exit(1);
|
|
}
|
|
|
|
IniData data = parser.ReadFile("config.ini");
|
|
|
|
BotToken = data["DEFAULT"]["token"];
|
|
string host = data["REDIS"]["host"] ?? "127.0.0.1";
|
|
string port = data["REDIS"]["port"] ?? "6379";
|
|
string configuration = data["REDIS"]["configuration"] ?? $"{host}:{port}";
|
|
|
|
RedisHash = data["REDIS"]["hash"] ?? "telegram:rssbot";
|
|
int db = 0;
|
|
try {
|
|
db = int.Parse(data["REDIS"]["db"] ?? "0");
|
|
} catch (FormatException) {
|
|
Logger.Fatal("Keine valide Datenbanknummer.");
|
|
Environment.Exit(1);
|
|
}
|
|
|
|
string admins = data["ADMIN"]["id"];
|
|
|
|
if (string.IsNullOrWhiteSpace(BotToken)) {
|
|
Logger.Fatal("Bitte Bot-Token in der config.ini angeben.");
|
|
Environment.Exit(1);
|
|
}
|
|
|
|
try {
|
|
Admins = admins.Split(",").Select(int.Parse).ToList();
|
|
} catch (FormatException) {
|
|
Logger.Fatal("Admin-IDs sind keine Integer.");
|
|
Environment.Exit(1);
|
|
}
|
|
|
|
Logger.Info("Verbinde mit Redis...");
|
|
// TODO: Sockets
|
|
try {
|
|
_redis = ConnectionMultiplexer.Connect(configuration);
|
|
} catch (RedisConnectionException) {
|
|
Logger.Fatal("Redis-Verbindung fehlgeschlagen.");
|
|
Environment.Exit(1);
|
|
}
|
|
|
|
Database = _redis.GetDatabase(db);
|
|
}
|
|
}
|
|
} |