bool Config::setCountry(std::string country) { this->country = country; std::string country_config_file = this->runtimeBaseDir + "/config/" + country + ".conf"; if (fileExists(country_config_file.c_str()) == false) { std::cerr << "--(!) Country config file '" << country_config_file << "' does not exist. Missing config for the country: '" << country<< "'!" << endl; return false; } loadCountryValues(country_config_file, country); if (fileExists((this->runtimeBaseDir + "/ocr/tessdata/" + this->ocrLanguage + ".traineddata").c_str()) == false) { std::cerr << "--(!) Runtime directory '" << this->runtimeBaseDir << "' is invalid. Missing OCR data for the country: '" << country<< "'!" << endl; return false; } return true; }
Config::Config(const std::string country, const std::string config_file, const std::string runtime_dir) { string debug_message = ""; this->loaded = false; string configFile; char* envConfigFile; envConfigFile = getenv (ENV_VARIABLE_CONFIG_FILE); if (config_file.compare("") != 0) { // User has supplied a config file. Use that. configFile = config_file; debug_message = "Config file location provided via API"; } else if (envConfigFile != NULL) { // Environment variable is non-empty. Use that. configFile = envConfigFile; debug_message = "Config file location provided via environment variable: " + string(ENV_VARIABLE_CONFIG_FILE); } else if (DirectoryExists(getExeDir().c_str()) && fileExists((getExeDir() + CONFIG_FILE).c_str())) { configFile = getExeDir() + CONFIG_FILE; debug_message = "Config file location provided via exe location"; } else { // Use the default configFile = DEFAULT_CONFIG_FILE; debug_message = "Config file location provided via default location"; } //string configFile = (this->runtimeBaseDir + CONFIG_FILE); if (fileExists(configFile.c_str()) == false) { std::cerr << "--(!) Config file '" << configFile << "' does not exist!" << endl; std::cerr << "--(!) You can specify the configuration file location via the command line " << endl; std::cerr << "--(!) or by setting the environment variable '" << ENV_VARIABLE_CONFIG_FILE << "'" << endl; return; } else if (DirectoryExists(configFile.c_str())) { std::cerr << "--(!) Config file '" << configFile << "' was specified as a directory, rather than a file!" << endl; std::cerr << "--(!) Please specify the full path to the 'openalpr.conf file'" << endl; std::cerr << "--(!) e.g., /etc/openalpr/openalpr.conf" << endl; return; } this->country = country; loadCommonValues(configFile); if (runtime_dir.compare("") != 0) { // User provided a runtime directory directly into the library. Use this. this->runtimeBaseDir = runtime_dir; } if ((DirectoryExists(this->runtimeBaseDir.c_str()) == false) && (DirectoryExists((getExeDir() + RUNTIME_DIR).c_str()))) { // Runtime dir in the config is invalid and there is a runtime dir in the same dir as the exe. this->runtimeBaseDir = getExeDir() + RUNTIME_DIR; } if (DirectoryExists(this->runtimeBaseDir.c_str()) == false) { std::cerr << "--(!) Runtime directory '" << this->runtimeBaseDir << "' does not exist!" << endl; std::cerr << "--(!) Please update the OpenALPR config file: '" << configFile << "'" << endl; std::cerr << "--(!) to point to the correct location of your runtime_dir" << endl; return; } std::string country_config_file = this->runtimeBaseDir + "/config/" + country + ".conf"; if (fileExists(country_config_file.c_str()) == false) { std::cerr << "--(!) Country config file '" << country_config_file << "' does not exist. Missing config for the country: '" << country<< "'!" << endl; return; } loadCountryValues(country_config_file, country); if (fileExists((this->runtimeBaseDir + "/ocr/tessdata/" + this->ocrLanguage + ".traineddata").c_str()) == false) { std::cerr << "--(!) Runtime directory '" << this->runtimeBaseDir << "' is invalid. Missing OCR data for the country: '" << country<< "'!" << endl; return; } if (this->debugGeneral) { std::cout << debug_message << endl; } this->loaded = true; }