Add WEB_PORTS to setupVars.conf when importing v5 Teleporter files
Signed-off-by: DL6ER <dl6er@dl6er.de>
This commit is contained in:
parent
65aef156cd
commit
2c765c94bb
|
@ -687,6 +687,16 @@ static int process_received_tar_gz(struct ftl_conn *api, struct upload_data *dat
|
|||
}
|
||||
}
|
||||
|
||||
// Append WEB_PORTS to setupVars.conf
|
||||
FILE *fp = fopen(config.files.setupVars.v.s, "a");
|
||||
if(fp == NULL)
|
||||
log_err("Unable to open file \"%s\" for appending: %s", config.files.setupVars.v.s, strerror(errno));
|
||||
else
|
||||
{
|
||||
fprintf(fp, "WEB_PORT=%s\n", config.webserver.port.v.s);
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
// Remove pihole.toml to prevent it from being imported on restart
|
||||
if(remove(GLOBALTOMLPATH) != 0)
|
||||
log_err("Unable to remove file \"%s\": %s", GLOBALTOMLPATH, strerror(errno));
|
||||
|
|
|
@ -1385,36 +1385,39 @@ void readFTLconf(struct config *conf, const bool rewrite)
|
|||
rename(GLOBALTOMLPATH, new_name);
|
||||
}
|
||||
|
||||
// Determine default webserver ports
|
||||
// Check if ports 80/TCP and 443/TCP are already in use
|
||||
const in_port_t http_port = port_in_use(80) ? 8080 : 80;
|
||||
const in_port_t https_port = port_in_use(443) ? 8443 : 443;
|
||||
|
||||
// Create a string with the default ports
|
||||
// Allocate memory for the string
|
||||
char *ports = calloc(32, sizeof(char));
|
||||
if(ports == NULL)
|
||||
// Determine default webserver ports if not imported from setupVars.conf
|
||||
if(!(config.webserver.port.f & FLAG_CONF_IMPORTED))
|
||||
{
|
||||
log_err("Unable to allocate memory for default ports string");
|
||||
return;
|
||||
// Check if ports 80/TCP and 443/TCP are already in use
|
||||
const in_port_t http_port = port_in_use(80) ? 8080 : 80;
|
||||
const in_port_t https_port = port_in_use(443) ? 8443 : 443;
|
||||
|
||||
// Create a string with the default ports
|
||||
// Allocate memory for the string
|
||||
char *ports = calloc(32, sizeof(char));
|
||||
if(ports == NULL)
|
||||
{
|
||||
log_err("Unable to allocate memory for default ports string");
|
||||
return;
|
||||
}
|
||||
// Create the string
|
||||
snprintf(ports, 32, "%d,%ds", http_port, https_port);
|
||||
|
||||
// Append IPv6 ports if IPv6 is enabled
|
||||
const bool have_ipv6 = ipv6_enabled();
|
||||
if(have_ipv6)
|
||||
snprintf(ports + strlen(ports), 32 - strlen(ports),
|
||||
",[::]:%d,[::]:%ds", http_port, https_port);
|
||||
|
||||
// Set default values for webserver ports
|
||||
if(conf->webserver.port.t == CONF_STRING_ALLOCATED)
|
||||
free(conf->webserver.port.v.s);
|
||||
conf->webserver.port.v.s = ports;
|
||||
conf->webserver.port.t = CONF_STRING_ALLOCATED;
|
||||
|
||||
log_info("Initialised webserver ports at %d (HTTP) and %d (HTTPS), IPv6 support is %s",
|
||||
http_port, https_port, have_ipv6 ? "enabled" : "disabled");
|
||||
}
|
||||
// Create the string
|
||||
snprintf(ports, 32, "%d,%ds", http_port, https_port);
|
||||
|
||||
// Append IPv6 ports if IPv6 is enabled
|
||||
const bool have_ipv6 = ipv6_enabled();
|
||||
if(have_ipv6)
|
||||
snprintf(ports + strlen(ports), 32 - strlen(ports),
|
||||
",[::]:%d,[::]:%ds", http_port, https_port);
|
||||
|
||||
// Set default values for webserver ports
|
||||
if(conf->webserver.port.t == CONF_STRING_ALLOCATED)
|
||||
free(conf->webserver.port.v.s);
|
||||
conf->webserver.port.v.s = ports;
|
||||
conf->webserver.port.t = CONF_STRING_ALLOCATED;
|
||||
|
||||
log_info("Initialised webserver ports at %d (HTTP) and %d (HTTPS), IPv6 support is %s",
|
||||
http_port, https_port, have_ipv6 ? "enabled" : "disabled");
|
||||
|
||||
// Initialize the TOML config file
|
||||
writeFTLtoml(true);
|
||||
|
|
|
@ -97,6 +97,7 @@ enum conf_type {
|
|||
#define FLAG_INVALIDATE_SESSIONS (1 << 3)
|
||||
#define FLAG_WRITE_ONLY (1 << 4)
|
||||
#define FLAG_ENV_VAR (1 << 5)
|
||||
#define FLAG_CONF_IMPORTED (1 << 6)
|
||||
|
||||
struct conf_item {
|
||||
const char *k; // item Key
|
||||
|
|
|
@ -185,7 +185,7 @@ int main (int argc, char *argv[])
|
|||
cleanup(exit_code);
|
||||
|
||||
if(exit_code == RESTART_FTL_CODE)
|
||||
execv(argv[0], argv);
|
||||
execvp(argv[0], argv);
|
||||
|
||||
return exit_code;
|
||||
}
|
||||
|
|
|
@ -35,6 +35,7 @@ static void get_conf_string_from_setupVars(const char *key, struct conf_item *co
|
|||
free(conf_item->v.s);
|
||||
conf_item->v.s = strdup(setupVarsValue);
|
||||
conf_item->t = CONF_STRING_ALLOCATED;
|
||||
conf_item->f |= FLAG_CONF_IMPORTED;
|
||||
|
||||
// Free memory, harmless to call if read_setupVarsconf() didn't return a result
|
||||
clearSetupVarsArray();
|
||||
|
@ -380,6 +381,9 @@ void importsetupVarsConf(void)
|
|||
get_conf_bool_from_setupVars("DHCP_RAPID_COMMIT", &config.dhcp.rapidCommit);
|
||||
|
||||
get_conf_bool_from_setupVars("queryLogging", &config.dns.queryLogging);
|
||||
|
||||
// Ports may be temporarily stored when importing a legacy Teleporter v5 file
|
||||
get_conf_string_from_setupVars("WEB_PORTS", &config.webserver.port);
|
||||
}
|
||||
|
||||
char* __attribute__((pure)) find_equals(char *s)
|
||||
|
|
Loading…
Reference in New Issue