26 #include <tdeconfig.h>
27 #include <kstaticdeleter.h>
28 #include <kprotocolinfo.h>
29 #include <tdeprotocolmanager.h>
31 #include "slaveconfig.h"
33 using namespace TDEIO;
37 class SlaveConfigProtocol
40 SlaveConfigProtocol() { host.setAutoDelete(
true); }
41 ~SlaveConfigProtocol()
48 TQDict<MetaData> host;
49 TDEConfig *configFile;
52 static void readConfig(TDEConfig *config,
const TQString & group,
MetaData *metaData)
54 *metaData += config->entryMap(group);
57 class SlaveConfigPrivate
60 void readGlobalConfig();
61 SlaveConfigProtocol *readProtocolConfig(
const TQString &_protocol);
62 SlaveConfigProtocol *findProtocolConfig(
const TQString &_protocol);
63 void readConfigProtocolHost(
const TQString &_protocol, SlaveConfigProtocol *scp,
const TQString &host);
66 TQDict<SlaveConfigProtocol> protocol;
69 void SlaveConfigPrivate::readGlobalConfig()
73 TDEConfig *config = KProtocolManager::config();
74 readConfig(TDEGlobal::config(),
"Socks", &global);
76 readConfig(config,
"<default>", &global);
79 SlaveConfigProtocol* SlaveConfigPrivate::readProtocolConfig(
const TQString &_protocol)
81 SlaveConfigProtocol *scp = protocol.find(_protocol);
85 scp =
new SlaveConfigProtocol;
86 scp->configFile =
new TDEConfig(filename,
true,
false);
87 protocol.insert(_protocol, scp);
90 readConfig(scp->configFile,
"<default>", &(scp->global));
94 SlaveConfigProtocol* SlaveConfigPrivate::findProtocolConfig(
const TQString &_protocol)
96 SlaveConfigProtocol *scp = protocol.find(_protocol);
98 scp = readProtocolConfig(_protocol);
102 void SlaveConfigPrivate::readConfigProtocolHost(
const TQString &, SlaveConfigProtocol *scp,
const TQString &host)
105 scp->host.replace(host, metaData);
109 TQString domain = host;
111 if (!domain.contains(
'.'))
114 if (scp->configFile->hasGroup(
"<local>"))
115 readConfig(scp->configFile,
"<local>", metaData);
121 pos = host.findRev(
'.', pos-1);
126 domain = host.mid(pos+1);
128 if (scp->configFile->hasGroup(domain))
129 readConfig(scp->configFile, domain.lower(), metaData);
136 static KStaticDeleter<SlaveConfig> slaveconfigsd;
141 _self = slaveconfigsd.setObject(_self,
new SlaveConfig);
145 SlaveConfig::SlaveConfig()
147 d =
new SlaveConfigPrivate;
148 d->protocol.setAutoDelete(
true);
149 d->readGlobalConfig();
152 SlaveConfig::~SlaveConfig()
159 const TQString &host,
161 const TQString &value )
164 config.insert(key, value);
170 if (protocol.isEmpty())
173 SlaveConfigProtocol *scp = d->findProtocolConfig(protocol);
176 scp->global += config;
180 MetaData *hostConfig = scp->host.find(host);
183 d->readConfigProtocolHost(protocol, scp, host);
184 hostConfig = scp->host.find(host);
187 *hostConfig += config;
195 SlaveConfigProtocol *scp = d->findProtocolConfig(protocol);
196 config += scp->global;
199 MetaData *hostConfig = scp->host.find(host);
202 d->readConfigProtocolHost(protocol, scp, host);
204 hostConfig = scp->host.find(host);
207 config += *hostConfig;
219 d->readGlobalConfig();
224 #include "slaveconfig.moc"
static TQString config(const TQString &protocol)
Returns the name of the config file associated with the specified protocol.
MetaData configData(const TQString &protocol, const TQString &host)
Query slave configuration for slaves of type protocol when dealing with host.
void reset()
Undo any changes made by calls to setConfigData.
void configNeeded(const TQString &protocol, const TQString &host)
This signal is raised when a slave of type protocol deals with host for the first time.
void setConfigData(const TQString &protocol, const TQString &host, const TQString &key, const TQString &value)
Configure slaves of type protocol by setting key to value.
A namespace for TDEIO globals.