/*
    SPDX-License-Identifier: GPL-2.0-or-later
    SPDX-FileCopyrightText: 2000 Caldera Systems, Inc.
    SPDX-FileContributor: Matthew Peterson <mpeterson@caldera.com>
*/

#include "kio_smb.h"
#include "smburl.h"
#include <kconfig.h>
#include <kconfiggroup.h>

#include <QTextCodec>

void SMBSlave::reparseConfiguration()
{
    KConfig cfg("kioslaverc", KConfig::NoGlobals);
    const KConfigGroup group = cfg.group("Browser Settings/SMBro");
    m_default_user = group.readEntry("User");
    //  m_default_workgroup=group.readEntry("Workgroup");
    //  m_showHiddenShares=group.readEntry("ShowHiddenShares", QVariant(false)).toBool();

    QString m_encoding = QTextCodec::codecForLocale()->name();
    m_default_encoding = group.readEntry("Encoding", m_encoding.toLower());

    // unscramble, taken from Nicola Brodu's smb ioslave
    // not really secure, but better than storing the plain password
    QString scrambled = group.readEntry("Password");
    m_default_password = "";
    for (int i = 0; i < scrambled.length() / 3; i++) {
        QChar qc1 = scrambled[i * 3];
        QChar qc2 = scrambled[i * 3 + 1];
        QChar qc3 = scrambled[i * 3 + 2];
        unsigned int a1 = qc1.toLatin1() - '0';
        unsigned int a2 = qc2.toLatin1() - 'A';
        unsigned int a3 = qc3.toLatin1() - '0';
        unsigned int num = ((a1 & 0x3F) << 10) | ((a2 & 0x1F) << 5) | (a3 & 0x1F);
        m_default_password[i] = QChar((uchar)((num - 17) ^ 173)); // restore
    }
}
