Local stuff I hadn't committed yet from like a month ago.

This commit is contained in:
flash 2024-11-04 19:44:42 +01:00
parent 3fb853d7b7
commit 7620bf42b2
3 changed files with 116 additions and 25 deletions

29
mikoto.cfg Normal file
View file

@ -0,0 +1,29 @@
# and ; can be used at the start of a line for comments.
# General Configuration
#chat:port 6770
#chat:msgMaxLength 5000
#chat:connMaxCount 5
#chat:floodKickLength 30
chat:floodKickExemptRank 10
# Channels
chat:channels lounge staff
# Lounge channel settings
chat:channels:lounge:name Lounge
chat:channels:lounge:autoJoin true
# Staff channel settings
chat:channels:staff:name Staff
chat:channels:staff:minRank 5
# Misuzu integration settings
msz:secret veemo57c092d519d6764ebe2afe6207fa403f47885627a61e
#msz:url https://flashii.net/_sockchat
# MariaDB configuration
mariadb:host localhost
mariadb:user chat
mariadb:pass F5o6AVpWYe9K3qQphldxw9NAlpmrINAF
mariadb:db chat

View file

@ -1,41 +1,25 @@
import std.stdio;
import core.thread;
import core.stdc.signal;
import core.sys.windows.windows;
enum CONFIG_PATH = "mikoto.cfg";
__gshared bool hasCancelled;
version(Posix) {
extern(C) void signalHander(int num) nothrow @nogc @system {
if(num == SIGINT)
hasCancelled = true;
}
}
version(Windows) {
extern(Windows) BOOL ctrlHandler(DWORD fdwCtrlType) nothrow @nogc @system {
switch(fdwCtrlType) {
case CTRL_C_EVENT:
case CTRL_CLOSE_EVENT:
hasCancelled = true;
return TRUE;
default:
return FALSE;
}
}
}
void main() {
import std.file : exists;
import std.range : padLeft;
import std.string : format;
version(Windows)
version(Windows) {
import core.sys.windows.windows : SetConsoleCtrlHandler, TRUE;
if(!SetConsoleCtrlHandler(&ctrlHandler, TRUE))
stderr.writeln("Failed to register Windows CTRL handler.");
}
version(Posix)
version(Posix) {
import core.stdc.signal : signal, SIGINT;
signal(SIGINT, &signalHander);
}
if(hasCancelled) return;
@ -50,6 +34,13 @@ void main() {
if(hasCancelled) return;
string configPath = CONFIG_PATH;
if(!configPath.exists && configPath == CONFIG_PATH)
createExampleConfig(configPath);
if(hasCancelled) return;
for(;;) {
Thread.sleep(1.seconds);
if(hasCancelled)
@ -58,3 +49,68 @@ void main() {
writeln("Exiting!");
}
void createExampleConfig(string path) {
auto cfg = File(path, "wb+");
cfg.writeln("# and ; can be used at the start of a line for comments.");
cfg.writeln();
cfg.writeln("# General Configuration");
cfg.writeln(";chat:port {SockChatServer.DEFAULT_PORT}");
cfg.writeln(";chat:msgMaxLength {SockChatServer.DEFAULT_MSG_LENGTH_MAX}");
cfg.writeln(";chat:connMaxCount {SockChatServer.DEFAULT_MAX_CONNECTIONS}");
cfg.writeln(";chat:floodKickLength {SockChatServer.DEFAULT_FLOOD_KICK_LENGTH}");
cfg.writeln();
cfg.writeln("# Channels");
cfg.writeln("chat:channels lounge staff");
cfg.writeln();
cfg.writeln("# Lounge channel settings");
cfg.writeln("chat:channels:lounge:name Lounge");
cfg.writeln("chat:channels:lounge:autoJoin true");
cfg.writeln();
cfg.writeln("# Staff channel settings");
cfg.writeln("chat:channels:staff:name Staff");
cfg.writeln("chat:channels:staff:minRank 5");
cfg.writeln();
cfg.writeln("# Misuzu integration settings");
cfg.writeln(";msz:secret woomy");
cfg.writeln(";msz:url https://flashii.net/_sockchat");
cfg.writeln();
cfg.writeln("# MariaDB configuration");
cfg.writeln(";mariadb:host <host>");
cfg.writeln(";mariadb:user <username>");
cfg.writeln(";mariadb:pass <password>");
cfg.writeln(";mariadb:db <database>");
}
version(Posix) {
extern(C) void signalHander(int num) nothrow @nogc @system {
import core.stdc.signal : SIGINT;
if(num == SIGINT)
hasCancelled = true;
}
}
version(Windows) {
import core.sys.windows.windows : BOOL, DWORD;
extern(Windows) BOOL ctrlHandler(DWORD fdwCtrlType) nothrow @nogc @system {
import core.sys.windows.windows : CTRL_C_EVENT, CTRL_CLOSE_EVENT, TRUE, FALSE;
switch(fdwCtrlType) {
case CTRL_C_EVENT:
case CTRL_CLOSE_EVENT:
hasCancelled = true;
return TRUE;
default:
return FALSE;
}
}
}

6
source/config/config.d Normal file
View file

@ -0,0 +1,6 @@
module mikoto.config;
interface Config {
Config scopeTo(string prefix);
string readValue(string name, string fallback = null);
}