Add support for setting API port from the config file

This commit is contained in:
Ted W 2025-10-22 21:00:20 -04:00 committed by Ted W.
parent 07d354fa02
commit 02b1e9d40d
2 changed files with 15 additions and 2 deletions

View File

@ -51,6 +51,7 @@ void cpuDeepSleep(uint32_t msecs)
void updateBatteryLevel(uint8_t level) NOT_IMPLEMENTED("updateBatteryLevel"); void updateBatteryLevel(uint8_t level) NOT_IMPLEMENTED("updateBatteryLevel");
int TCPPort = SERVER_API_DEFAULT_PORT; int TCPPort = SERVER_API_DEFAULT_PORT;
bool checkConfigPort = true;
static error_t parse_opt(int key, char *arg, struct argp_state *state) static error_t parse_opt(int key, char *arg, struct argp_state *state)
{ {
@ -59,6 +60,7 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state)
if (sscanf(arg, "%d", &TCPPort) < 1) if (sscanf(arg, "%d", &TCPPort) < 1)
return ARGP_ERR_UNKNOWN; return ARGP_ERR_UNKNOWN;
else else
checkConfigPort = false;
printf("Using config file %d\n", TCPPort); printf("Using config file %d\n", TCPPort);
break; break;
case 'c': case 'c':
@ -699,6 +701,14 @@ bool loadConfig(const char *configPath)
std::cout << "Cannot set both MACAddress and MACAddressSource!" << std::endl; std::cout << "Cannot set both MACAddress and MACAddressSource!" << std::endl;
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
if (checkConfigPort) {
portduino_config.api_port = (yamlConfig["General"]["APIPort"]).as<int>(-1);
if (portduino_config.api_port != -1 &&
portduino_config.api_port > 1023 &&
portduino_config._api_port < 65536) {
TCPPort = (portduino_config.api_port);
}
}
portduino_config.mac_address = (yamlConfig["General"]["MACAddress"]).as<std::string>(""); portduino_config.mac_address = (yamlConfig["General"]["MACAddress"]).as<std::string>("");
if (portduino_config.mac_address != "") { if (portduino_config.mac_address != "") {
portduino_config.mac_address_explicit = true; portduino_config.mac_address_explicit = true;
@ -769,4 +779,4 @@ void readGPIOFromYaml(YAML::Node sourceNode, pinMapping &destPin, int pinDefault
destPin.line = destPin.pin; destPin.line = destPin.pin;
destPin.gpiochip = portduino_config.lora_default_gpiochip; destPin.gpiochip = portduino_config.lora_default_gpiochip;
} }
} }

View File

@ -167,6 +167,7 @@ extern struct portduino_config_struct {
std::string mac_address = ""; std::string mac_address = "";
bool mac_address_explicit = false; bool mac_address_explicit = false;
std::string mac_address_source = ""; std::string mac_address_source = "";
int api_port = -1;
std::string config_directory = ""; std::string config_directory = "";
std::string available_directory = "/etc/meshtasticd/available.d/"; std::string available_directory = "/etc/meshtasticd/available.d/";
int maxtophone = 100; int maxtophone = 100;
@ -463,6 +464,8 @@ extern struct portduino_config_struct {
out << YAML::Key << "General" << YAML::Value << YAML::BeginMap; out << YAML::Key << "General" << YAML::Value << YAML::BeginMap;
if (config_directory != "") if (config_directory != "")
out << YAML::Key << "ConfigDirectory" << YAML::Value << config_directory; out << YAML::Key << "ConfigDirectory" << YAML::Value << config_directory;
if (api_port != -1)
out << YAML::Key << "TCPPort" << YAML::Value << api_port;
if (mac_address_explicit) if (mac_address_explicit)
out << YAML::Key << "MACAddress" << YAML::Value << mac_address; out << YAML::Key << "MACAddress" << YAML::Value << mac_address;
if (mac_address_source != "") if (mac_address_source != "")
@ -474,4 +477,4 @@ extern struct portduino_config_struct {
out << YAML::EndMap; // General out << YAML::EndMap; // General
return out.c_str(); return out.c_str();
} }
} portduino_config; } portduino_config;