int MVPClient::nr_clients = 0;
-MVPClient::MVPClient(Config* cfgBase, char* tconfigDirExtra, int tsocket)
+MVPClient::MVPClient(Config* cfgBase, char* tconfigDir, int tsocket)
: tcp(tsocket)
{
#ifndef VOMPSTANDALONE
imageFile = 0;
log = Log::getInstance();
loggedIn = false;
- configDirExtra = tconfigDirExtra;
+ configDir = tconfigDir;
baseConfig = cfgBase;
incClients();
}
// Open the config
-#ifndef VOMPSTANDALONE
- const char* configDir = cPlugin::ConfigDirectory(configDirExtra);
-#else
- const char* configDir = ".";
-#endif
- if (!configDir)
- {
- log->log("Client", Log::DEBUG, "No config dir!");
- return 0;
- }
-
char configFileName[PATH_MAX];
snprintf(configFileName, PATH_MAX, "%s/vomp-%02X-%02X-%02X-%02X-%02X-%02X.conf", configDir, buffer[0], buffer[1], buffer[2], buffer[3], buffer[4], buffer[5]);
config.init(configFileName);
class MVPClient
{
public:
- MVPClient(Config* baseConfig, char* configDirExtra, int tsocket);
+ MVPClient(Config* baseConfig, char* configDir, int tsocket);
~MVPClient();
int run();
Config config;
Config* baseConfig;
bool loggedIn;
- char* configDirExtra;
+ char* configDir;
FILE* imageFile;
#ifndef VOMPSTANDALONE
return 1;
}
-int MVPServer::run(char* tconfigDirExtra)
+int MVPServer::run(char* tconfigDir)
{
if (threadIsActive()) return 1;
- configDirExtra = tconfigDirExtra;
+ configDir = tconfigDir;
// Start config
-#ifndef VOMPSTANDALONE
- const char* configDir = cPlugin::ConfigDirectory(configDirExtra);
-#else
- const char* configDir = ".";
+#ifdef VOMPSTANDALONE
#define dsyslog(x) std::cout << x << std::endl;
#endif
- if (!configDir)
+
+ char configFileName[PATH_MAX];
+ snprintf(configFileName, PATH_MAX, "%s/vomp.conf", configDir);
+
+ if (config.init(configFileName))
{
- dsyslog("VOMP: Could not get config dir from VDR");
+ dsyslog("VOMP: Config file found");
}
else
{
- char configFileName[PATH_MAX];
- snprintf(configFileName, PATH_MAX, "%s/vomp.conf", configDir);
-
- if (config.init(configFileName))
- {
- dsyslog("VOMP: Config file found");
- }
- else
- {
- dsyslog("VOMP: Config file not found");
- }
+ dsyslog("VOMP: Config file not found");
}
// Start logging
if (tftpEnabled)
{
char tftpPath[PATH_MAX];
-// snprintf(configFileName, PATH_MAX, "%s/vomp.conf", configDir);
configString = config.getValueString("General", "TFTP directory");
if (configString)
while(1)
{
clientSocket = accept(listeningSocket,(struct sockaddr *)&address, &length);
- MVPClient* m = new MVPClient(&config, configDirExtra, clientSocket);
+ MVPClient* m = new MVPClient(&config, configDir, clientSocket);
m->run();
}
}
Tftpd tftpd;
MVPRelay mvprelay;
int listeningSocket;
- char* configDirExtra;
+ char* configDir;
};
#endif
bool cPluginVompserver::Start(void)
{
// Start any background activities the plugin shall perform.
+
+ if (!configDir)
+ {
+ const char* vdrret = cPlugin::ConfigDirectory("vompserver");
+ if (!vdrret)
+ {
+ dsyslog("VOMP: Could not get config dir from VDR");
+ return false;
+ }
+ configDir = new char[strlen(vdrret)+1];
+ strcpy(configDir, vdrret);
+ }
+
int success = mvpserver.run(configDir);
if (success) return true;
else return false;
{
// Clean up after yourself!
mvpserver.stop();
+ if (configDir) delete[] configDir;
}
const char *cPluginVompserver::CommandLineHelp(void)
{
if (c == 'c')
{
- configDir = optarg;
+ const char* vdrret = cPlugin::ConfigDirectory(optarg);
+ if (!vdrret)
+ {
+ dsyslog("VOMP: Could not get config dir from VDR");
+ return false;
+ }
+
+ configDir = new char[strlen(vdrret)+1];
+ strcpy(configDir, vdrret);
}
else
{