diff options
author | Luke Bratch <luke@bratch.co.uk> | 2019-05-12 19:11:30 +0100 |
---|---|---|
committer | Luke Bratch <luke@bratch.co.uk> | 2019-05-12 19:11:30 +0100 |
commit | 34836ab2c9124e17d80bd8e8a1601398297391a8 (patch) | |
tree | 3079a0db3bc95c105c04b7730ef0d4c2c4af29c4 /config.c | |
parent | 62fe87f6052dc28e38f2edc940b2002ede087277 (diff) |
Make client port configurable and move settings structure to be initialised in main() instead of dochat().
Diffstat (limited to 'config.c')
-rw-r--r-- | config.c | 42 |
1 files changed, 42 insertions, 0 deletions
@@ -183,3 +183,45 @@ int checkpassword(char *password) { printf("No password read from configuration file, quitting.\n"); exit(1); } + +int confclientport(char *clientport) { + FILE *fp; + char str[MAXCHAR]; + char* filename = "blabouncer.conf"; + + // Set all strings to zero-length to begin + clientport[0] = '\0'; + + fp = fopen(filename, "r"); + + if (fp == NULL) { + printf("error: could not open configuration file '%s'.\n", filename); + exit(1); + } + + while (fgets(str, MAXCHAR, fp) != NULL) { + long int len; + if ((len = isconf(str, "clientport"))) { + getconf(str, len); + strncpy(clientport, str, strlen(str)); + clientport[strlen(str)] = '\0'; + printf("clientport is: '%s', length '%ld'.\n", clientport, strlen(clientport)); + } + } + + // Ensure we have everything required + if (!strlen(clientport)) { + printf("Failed to read clientport from configuration file.\n"); + exit(1); + } + + int portint = strtol(clientport, NULL, 10); // Convert resulting string to an integer, base 10 + // Ensure port is valid + if (portint < 1 || portint > 65535) { + printf("Invalid clientport value in configuration file.\n"); + exit(1); + } + + fclose(fp); + return 1; +} |