X-Git-Url: http://deadsoftware.ru/gitweb?p=d2df-sdl.git;a=blobdiff_plain;f=src%2Fmastersrv%2Fmaster.c;h=9745694cef8c88a08005f5833e314cfab92d8298;hp=7f476c17ce1a2f7c825a21e96eeb62268074bb8b;hb=a49e32f2040ac79644fabdfa629cd4fd4750c515;hpb=f0703eae1c66566c95d11bf44ff4560be416b971 diff --git a/src/mastersrv/master.c b/src/mastersrv/master.c index 7f476c1..9745694 100644 --- a/src/mastersrv/master.c +++ b/src/mastersrv/master.c @@ -27,7 +27,11 @@ #define LC_MS_LIST "\nSent server list to %x:%u (ver. %s).\n" #define LC_MS_DIE "\nD2DF master server shutting down...\n" #define LC_MS_CONN "\nIncoming connection from %x:%u...\n" +#define LC_MS_MOTD "\nMOTD: %s\n" +#define LC_MS_URGENT "\nURGENT: %s\n" +#define MS_URGENT_FILE "urgent.txt" +#define MS_MOTD_FILE "motd.txt" struct ms_server_s { enet_uint8 used; @@ -46,6 +50,9 @@ struct ms_server_s { typedef struct ms_server_s ms_server; const char ms_game_ver[] = "0.63"; +char ms_motd[256] = ""; +char ms_urgent[256] = ""; + int ms_port = 25660; int ms_timeout = 100000; @@ -132,7 +139,18 @@ void d_getargs (int argc, char *argv[]) { } -enet_uint8 b_read_uint8 (enet_uint8 buf[], size_t *pos) { +int d_readtextfile (const char *fname, char *buf, size_t max) { + FILE *f = fopen(fname, "r"); + if (f) { + fgets(buf, max, f); + fclose(f); + return 0; + } + return 1; +} + + +enet_uint8 b_read_uint8 (enet_uint8 buf[], size_t *pos) { return buf[(*pos)++]; } @@ -205,6 +223,12 @@ int main (int argc, char *argv[]) { printf(LC_MS_INIT, ms_port); + d_readtextfile(MS_MOTD_FILE, ms_motd, sizeof(ms_motd)); + d_readtextfile(MS_URGENT_FILE, ms_urgent, sizeof(ms_urgent)); + + if (ms_motd[0]) printf(LC_MS_MOTD, ms_motd); + if (ms_urgent[0]) printf(LC_MS_URGENT, ms_urgent); + for (int i = 0; i < NET_MAXCLIENTS; ++i) ms_peers[i] = NULL; for (int i = 0; i < MS_MAXSRVS; ++i) { @@ -347,6 +371,9 @@ int main (int argc, char *argv[]) { // TODO: check if this client is outdated (?) and send back new verstring // for now just write the same shit back b_write_dstring(b_send, &b_write, clientver); + // write the motd and urgent message + b_write_dstring(b_send, &b_write, ms_motd); + b_write_dstring(b_send, &b_write, ms_urgent); } ENetPacket *p = enet_packet_create(b_send, b_write, ENET_PACKET_FLAG_RELIABLE);