diff options
Diffstat (limited to 'src/pedro/pedroconfig.cpp')
| -rw-r--r-- | src/pedro/pedroconfig.cpp | 406 |
1 files changed, 0 insertions, 406 deletions
diff --git a/src/pedro/pedroconfig.cpp b/src/pedro/pedroconfig.cpp deleted file mode 100644 index 250674477..000000000 --- a/src/pedro/pedroconfig.cpp +++ /dev/null @@ -1,406 +0,0 @@ -/* - * Implementation the Pedro mini-XMPP client - * - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2007 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -/* -==================================================== -We are expecting an xml file with this format: - -<pedro> - - <!-- zero to many of these --> - <account> - <name>Jabber's Main Server</name> - <host>jabber.org</host> - <port>5222</port> - <username>myname</username> - <password>mypassword</password> - </account> - -</pedro> - - -==================================================== -*/ - - - -#include "pedroconfig.h" -#include "pedrodom.h" - -#include <stdio.h> -#include <cstring> -#include <string> -#include <cstdlib> -#include <stdlib.h> -#include <string.h> - -namespace Pedro -{ - - -static long getInt(const DOMString &s) -{ - char *start = (char *) s.c_str(); - char *end; - long val = strtol(start, &end, 10); - if (end == start) // did we read more than 1 digit? - val = 0L; - return val; -} - - - -bool XmppConfig::read(const DOMString &buffer) -{ - Parser parser; - - Element *root = parser.parse(buffer); - - if (!root) - { - error("Error in configuration syntax"); - return false; - } - - accounts.clear(); - - std::vector<Element *> mucElems = root->findElements("muc"); - if (mucElems.size() > 0) - { - Element *elem = mucElems[0]; - mucGroup = elem->getTagValue("group"); - mucHost = elem->getTagValue("host"); - mucNick = elem->getTagValue("nick"); - mucPassword = elem->getTagValue("password"); - } - - std::vector<Element *> accountElems = root->findElements("account"); - - for (unsigned int i=0 ; i<accountElems .size() ; i++) - { - XmppAccount account; - Element *elem = accountElems [i]; - - DOMString str = elem->getTagValue("name"); - if (str.size()==0) - str = "unnamed account"; - account.setName(str); - - str = elem->getTagValue("host"); - if (str.size()==0) - str = "jabber.org"; - account.setHost(str); - - str = elem->getTagValue("port"); - int port = (int) getInt(str); - if (port == 0) - port = 5222; - account.setPort(port); - - str = elem->getTagValue("username"); - if (str.size()==0) - str = "noname"; - account.setUsername(str); - - str = elem->getTagValue("password"); - if (str.size()==0) - str = "nopass"; - account.setPassword(str); - - accounts.push_back(account); - } - - - delete root; - - return true; -} - - - - - - -bool XmppConfig::readFile(const DOMString &fileName) -{ - - FILE *f = fopen(fileName.c_str(), "rb"); - if (!f) - { - error("Could not open configuration file '%s' for reading", - fileName.c_str()); - return false; - } - - DOMString buffer; - while (!feof(f)) - { - char ch = (char) fgetc(f); - buffer.push_back(ch); - } - fclose(f); - - if (!read(buffer)) - return false; - - return true; -} - - -DOMString XmppConfig::toXmlBuffer() -{ - - DOMString buf; - - char fmtbuf[32]; - - buf.append("<pedro>\n"); - buf.append(" <muc>\n"); - buf.append(" <group>"); - buf.append(mucGroup); - buf.append("</group>\n"); - buf.append(" <host>"); - buf.append(mucHost); - buf.append("</host>\n"); - buf.append(" <nick>"); - buf.append(mucNick); - buf.append("</nick>\n"); - buf.append(" <password>"); - buf.append(mucPassword); - buf.append("</password>\n"); - buf.append(" </muc>\n"); - - for (unsigned int i = 0 ; i<accounts.size() ; i++) - { - XmppAccount acc = accounts[i]; - buf.append(" <account>\n"); - buf.append(" <name>"); - buf.append(acc.getName()); - buf.append("</name>\n"); - buf.append(" <host>"); - buf.append(acc.getHost()); - buf.append("</host>\n"); - buf.append(" <port>"); - snprintf(fmtbuf, 31, "%d", acc.getPort()); - buf.append(fmtbuf); - buf.append("</port>\n"); - buf.append(" <username>"); - buf.append(acc.getUsername()); - buf.append("</username>\n"); - buf.append(" <password>"); - buf.append(acc.getPassword()); - buf.append("</password>\n"); - buf.append(" </account>\n"); - } - - buf.append("</pedro>\n"); - - return buf; -} - - - - -bool XmppConfig::writeFile(const DOMString &fileName) -{ - - FILE *f = fopen(fileName.c_str(), "wb"); - if (!f) - { - error("Could not open configuration file '%s' for writing", - fileName.c_str()); - return false; - } - - DOMString buffer = toXmlBuffer(); - char *s = (char *)buffer.c_str(); - size_t len = (size_t) strlen(s); //in case we have wide chars - - if (fwrite(s, 1, len, f) != len) - { - return false; - } - fclose(f); - - if (!read(buffer)) - return false; - - return true; -} - - -/** - * - */ -DOMString XmppConfig::getMucGroup() -{ - return mucGroup; -} - -/** - * - */ -void XmppConfig::setMucGroup(const DOMString &val) -{ - mucGroup = val; -} - -/** - * - */ -DOMString XmppConfig::getMucHost() -{ - return mucHost; -} - -/** - * - */ -void XmppConfig::setMucHost(const DOMString &val) -{ - mucHost = val; -} - -/** - * - */ -DOMString XmppConfig::getMucNick() -{ - return mucNick; -} - -/** - * - */ -void XmppConfig::setMucNick(const DOMString &val) -{ - mucNick = val; -} - -/** - * - */ -DOMString XmppConfig::getMucPassword() -{ - return mucPassword; -} - -/** - * - */ -void XmppConfig::setMucPassword(const DOMString &val) -{ - mucPassword = val; -} - - - -/** - * - */ -std::vector<XmppAccount> &XmppConfig::getAccounts() -{ - return accounts; -} - - -/** - * - */ -bool XmppConfig::accountAdd(const XmppAccount &account) -{ - DOMString name = account.getName(); - if (name.size() < 1) - return false; - if (accountExists(name)) - return false; - accounts.push_back(account); - return true; -} - - -/** - * - */ -bool XmppConfig::accountExists(const DOMString &accountName) -{ - if (accountName.size() < 1) - return false; - std::vector<XmppAccount>::iterator iter; - for (iter = accounts.begin() ; iter!= accounts.end() ; iter++) - { - if (iter->getName() == accountName) - return true; - } - return false; -} - - - -/** - * - */ -void XmppConfig::accountRemove(const DOMString &accountName) -{ - if (accountName.size() < 1) - return; - std::vector<XmppAccount>::iterator iter; - for (iter = accounts.begin() ; iter!= accounts.end() ; ) - { - if (iter->getName() == accountName) - iter = accounts.erase(iter); - else - iter++; - } -} - - -/** - * - */ -bool XmppConfig::accountFind(const DOMString &accountName, - XmppAccount &retVal) -{ - if (accountName.size() < 1) - return false; - std::vector<XmppAccount>::iterator iter; - for (iter = accounts.begin() ; iter!= accounts.end() ; iter++) - { - if (iter->getName() == accountName) - { - retVal = (*iter); - return true; - } - } - return false; -} - - - - - -} //namespace Pedro -//######################################################################## -//# E N D O F F I L E -//######################################################################## |
