File indexing completed on 2024-04-21 15:42:45
0001 /*************************************************************************** 0002 This class carries custom options 0003 ------------------- 0004 begin : Fr 29 Apr 2011 0005 copyright : (C) 2011-2019 by Alexander Reinholdt 0006 email : alexander.reinholdt@kdemail.net 0007 ***************************************************************************/ 0008 0009 /*************************************************************************** 0010 * This program is free software; you can redistribute it and/or modify * 0011 * it under the terms of the GNU General Public License as published by * 0012 * the Free Software Foundation; either version 2 of the License, or * 0013 * (at your option) any later version. * 0014 * * 0015 * This program is distributed in the hope that it will be useful, but * 0016 * WITHOUT ANY WARRANTY; without even the implied warranty of * 0017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 0018 * General Public License for more details. * 0019 * * 0020 * You should have received a copy of the GNU General Public License * 0021 * along with this program; if not, write to the * 0022 * Free Software Foundation, Inc., 51 Franklin Street, Suite 500, Boston,* 0023 * MA 02110-1335, USA * 0024 ***************************************************************************/ 0025 0026 #ifdef HAVE_CONFIG_H 0027 #include <config.h> 0028 #endif 0029 0030 // application specific includes 0031 #include "smb4kcustomoptions.h" 0032 #include "smb4ksettings.h" 0033 0034 #if defined(Q_OS_LINUX) 0035 #include "smb4kmountsettings_linux.h" 0036 #elif defined(Q_OS_FREEBSD) || defined(Q_OS_NETBSD) 0037 #include "smb4kmountsettings_bsd.h" 0038 #endif 0039 0040 // Qt includes 0041 #include <QDebug> 0042 #include <QHostAddress> 0043 0044 // KDE includes 0045 #include <KCoreAddons/KUser> 0046 #include <KI18n/KLocalizedString> 0047 0048 0049 class Smb4KCustomOptionsPrivate 0050 { 0051 public: 0052 QString workgroup; 0053 QUrl url; 0054 QHostAddress ip; 0055 NetworkItem type; 0056 Smb4KCustomOptions::Remount remount; 0057 bool useUser; 0058 KUser user; 0059 bool useGroup; 0060 KUserGroup group; 0061 bool useFileMode; 0062 QString fileMode; 0063 bool useDirectoryMode; 0064 QString directoryMode; 0065 #if defined(Q_OS_LINUX) 0066 bool cifsUnixExtensionsSupport; 0067 bool useFileSystemPort; 0068 int fileSystemPort; 0069 bool useSecurityMode; 0070 int securityMode; 0071 bool useWriteAccess; 0072 int writeAccess; 0073 #endif 0074 QString profile; 0075 bool useSmbPort; 0076 int smbPort; 0077 bool useKerberos; 0078 QString mac; 0079 bool wakeOnLanBeforeFirstScan; 0080 bool wakeOnLanBeforeMount; 0081 }; 0082 0083 0084 Smb4KCustomOptions::Smb4KCustomOptions(Smb4KHost *host) 0085 : d(new Smb4KCustomOptionsPrivate) 0086 { 0087 d->workgroup = host->workgroupName(); 0088 d->url = host->url(); 0089 d->type = Host; 0090 d->remount = UndefinedRemount; 0091 d->useUser = Smb4KMountSettings::useUserId(); 0092 d->user = KUser((K_UID)Smb4KMountSettings::userId().toInt()); 0093 d->useGroup = Smb4KMountSettings::useGroupId(); 0094 d->group = KUserGroup((K_GID)Smb4KMountSettings::groupId().toInt()); 0095 d->useFileMode = Smb4KMountSettings::useFileMode(); 0096 d->fileMode = Smb4KMountSettings::fileMode(); 0097 d->useDirectoryMode = Smb4KMountSettings::useDirectoryMode(); 0098 d->directoryMode = Smb4KMountSettings::directoryMode(); 0099 #if defined(Q_OS_LINUX) 0100 d->cifsUnixExtensionsSupport = Smb4KMountSettings::cifsUnixExtensionsSupport(); 0101 d->useFileSystemPort = Smb4KMountSettings::useRemoteFileSystemPort(); 0102 d->fileSystemPort = Smb4KMountSettings::remoteFileSystemPort(); 0103 d->useSecurityMode = Smb4KMountSettings::useSecurityMode(); 0104 d->securityMode = Smb4KMountSettings::securityMode(); 0105 d->useWriteAccess = Smb4KMountSettings::useWriteAccess(); 0106 d->writeAccess = Smb4KMountSettings::writeAccess(); 0107 #endif 0108 d->useSmbPort = Smb4KSettings::useRemoteSmbPort(); 0109 d->smbPort = host->port() != -1 ? host->port() : Smb4KSettings::remoteSmbPort(); 0110 d->useKerberos = Smb4KSettings::useKerberos(); 0111 d->ip.setAddress(host->ipAddress()); 0112 d->wakeOnLanBeforeFirstScan = false; 0113 d->wakeOnLanBeforeMount = false; 0114 } 0115 0116 Smb4KCustomOptions::Smb4KCustomOptions(Smb4KShare *share) 0117 : d(new Smb4KCustomOptionsPrivate) 0118 { 0119 d->url = share->url(); 0120 d->workgroup = share->workgroupName(); 0121 d->type = Share; 0122 d->remount = UndefinedRemount; 0123 d->useUser = Smb4KMountSettings::useUserId(); 0124 d->user = share->user(); 0125 d->useGroup = Smb4KMountSettings::useGroupId(); 0126 d->group = share->group(); 0127 d->useFileMode = Smb4KMountSettings::useFileMode(); 0128 d->fileMode = Smb4KMountSettings::fileMode(); 0129 d->useDirectoryMode = Smb4KMountSettings::useDirectoryMode(); 0130 d->directoryMode = Smb4KMountSettings::directoryMode(); 0131 #if defined(Q_OS_LINUX) 0132 d->cifsUnixExtensionsSupport = Smb4KMountSettings::cifsUnixExtensionsSupport(); 0133 d->useFileSystemPort = Smb4KMountSettings::useRemoteFileSystemPort(); 0134 d->fileSystemPort = share->port() != -1 ? share->port() : Smb4KMountSettings::remoteFileSystemPort(); 0135 d->useSecurityMode = Smb4KMountSettings::useSecurityMode(); 0136 d->securityMode = Smb4KMountSettings::securityMode(); 0137 d->useWriteAccess = Smb4KMountSettings::useWriteAccess(); 0138 d->writeAccess = Smb4KMountSettings::writeAccess(); 0139 #endif 0140 d->useSmbPort = Smb4KSettings::useRemoteSmbPort(); 0141 d->smbPort = Smb4KSettings::remoteSmbPort(); 0142 d->useKerberos = Smb4KSettings::useKerberos(); 0143 d->ip.setAddress(share->hostIpAddress()); 0144 d->wakeOnLanBeforeFirstScan = false; 0145 d->wakeOnLanBeforeMount = false; 0146 } 0147 0148 0149 Smb4KCustomOptions::Smb4KCustomOptions(const Smb4KCustomOptions &o) 0150 : d(new Smb4KCustomOptionsPrivate) 0151 { 0152 *d = *o.d; 0153 } 0154 0155 0156 Smb4KCustomOptions::Smb4KCustomOptions() 0157 : d(new Smb4KCustomOptionsPrivate) 0158 { 0159 d->type = UnknownNetworkItem; 0160 d->remount = UndefinedRemount; 0161 d->useUser = Smb4KMountSettings::useUserId(); 0162 d->user = KUser((K_UID)Smb4KMountSettings::userId().toInt()); 0163 d->useGroup = Smb4KMountSettings::useGroupId(); 0164 d->group = KUserGroup((K_GID)Smb4KMountSettings::groupId().toInt()); 0165 d->useFileMode = Smb4KMountSettings::useFileMode(); 0166 d->fileMode = Smb4KMountSettings::fileMode(); 0167 d->useDirectoryMode = Smb4KMountSettings::useDirectoryMode(); 0168 d->directoryMode = Smb4KMountSettings::directoryMode(); 0169 #if defined(Q_OS_LINUX) 0170 d->cifsUnixExtensionsSupport = Smb4KMountSettings::cifsUnixExtensionsSupport(); 0171 d->useFileSystemPort = Smb4KMountSettings::useRemoteFileSystemPort(); 0172 d->fileSystemPort = Smb4KMountSettings::remoteFileSystemPort(); 0173 d->useSecurityMode = Smb4KMountSettings::useSecurityMode(); 0174 d->securityMode = Smb4KMountSettings::securityMode(); 0175 d->useWriteAccess = Smb4KMountSettings::useWriteAccess(); 0176 d->writeAccess = Smb4KMountSettings::writeAccess(); 0177 #endif 0178 d->useSmbPort = Smb4KSettings::useRemoteSmbPort(); 0179 d->smbPort = Smb4KSettings::remoteSmbPort(); 0180 d->useKerberos = Smb4KSettings::useKerberos(); 0181 d->wakeOnLanBeforeFirstScan = false; 0182 d->wakeOnLanBeforeMount = false; 0183 } 0184 0185 0186 Smb4KCustomOptions::~Smb4KCustomOptions() 0187 { 0188 } 0189 0190 0191 void Smb4KCustomOptions::setHost(Smb4KHost *host) 0192 { 0193 // 0194 // Set all variables that can be extracted from the host item 0195 // 0196 if (host) 0197 { 0198 switch (d->type) 0199 { 0200 case UnknownNetworkItem: 0201 { 0202 d->workgroup = host->workgroupName(); 0203 d->url = host->url(); 0204 d->type = Host; 0205 d->smbPort = host->port() != -1 ? host->port() : d->smbPort; 0206 d->ip.setAddress(host->ipAddress()); 0207 break; 0208 } 0209 default: 0210 { 0211 break; 0212 } 0213 } 0214 } 0215 } 0216 0217 0218 void Smb4KCustomOptions::setShare(Smb4KShare *share) 0219 { 0220 // 0221 // Set all variables that can be extracted from the share item 0222 // 0223 if (share) 0224 { 0225 switch (d->type) 0226 { 0227 case UnknownNetworkItem: 0228 { 0229 d->url = share->url(); 0230 d->workgroup = share->workgroupName(); 0231 d->type = Share; 0232 #if defined(Q_OS_LINUX) 0233 d->fileSystemPort = share->port() != -1 ? share->port() : d->fileSystemPort; 0234 #endif 0235 d->user = share->user(); 0236 d->group = share->group(); 0237 d->ip.setAddress(share->hostIpAddress()); 0238 break; 0239 } 0240 case Host: 0241 { 0242 if (QString::compare(d->url.toString(QUrl::RemoveUserInfo|QUrl::RemovePort|QUrl::RemovePath), 0243 share->url().toString(QUrl::RemoveUserInfo|QUrl::RemovePort|QUrl::RemovePath), 0244 Qt::CaseInsensitive) == 0) 0245 { 0246 d->url = share->url(); 0247 d->type = Share; 0248 #if defined(Q_OS_LINUX) 0249 d->fileSystemPort = share->port() != -1 ? share->port() : d->fileSystemPort; 0250 #endif 0251 d->user = share->user(); 0252 d->group = share->group(); 0253 d->ip.setAddress(share->hostIpAddress()); 0254 } 0255 break; 0256 } 0257 default: 0258 { 0259 break; 0260 } 0261 } 0262 } 0263 } 0264 0265 0266 Smb4KGlobal::NetworkItem Smb4KCustomOptions::type() const 0267 { 0268 return d->type; 0269 } 0270 0271 0272 void Smb4KCustomOptions::setWorkgroupName(const QString &workgroup) 0273 { 0274 d->workgroup = workgroup; 0275 } 0276 0277 0278 QString Smb4KCustomOptions::workgroupName() const 0279 { 0280 return d->workgroup; 0281 } 0282 0283 0284 void Smb4KCustomOptions::setUrl(const QUrl &url) 0285 { 0286 d->url = url; 0287 } 0288 0289 0290 QUrl Smb4KCustomOptions::url() const 0291 { 0292 return d->url; 0293 } 0294 0295 0296 QString Smb4KCustomOptions::hostName() const 0297 { 0298 return d->url.host().toUpper(); 0299 } 0300 0301 0302 QString Smb4KCustomOptions::shareName() const 0303 { 0304 if (d->url.path().startsWith('/')) 0305 { 0306 return d->url.path().remove(0, 1); 0307 } 0308 0309 return d->url.path(); 0310 } 0311 0312 0313 void Smb4KCustomOptions::setIpAddress(const QString &ip) 0314 { 0315 d->ip.setAddress(ip); 0316 } 0317 0318 0319 QString Smb4KCustomOptions::ipAddress() const 0320 { 0321 return d->ip.toString(); 0322 } 0323 0324 0325 bool Smb4KCustomOptions::hasIpAddress() const 0326 { 0327 return !d->ip.isNull(); 0328 } 0329 0330 0331 QString Smb4KCustomOptions::displayString() const 0332 { 0333 QString string; 0334 0335 switch (d->type) 0336 { 0337 case Host: 0338 { 0339 string = hostName(); 0340 break; 0341 } 0342 case Share: 0343 { 0344 string = i18n("%1 on %2", shareName(), hostName()); 0345 break; 0346 } 0347 default: 0348 { 0349 break; 0350 } 0351 } 0352 0353 return string; 0354 } 0355 0356 0357 void Smb4KCustomOptions::setRemount(Smb4KCustomOptions::Remount remount) 0358 { 0359 switch (d->type) 0360 { 0361 case Share: 0362 { 0363 d->remount = remount; 0364 break; 0365 } 0366 default: 0367 { 0368 d->remount = UndefinedRemount; 0369 break; 0370 } 0371 } 0372 } 0373 0374 0375 Smb4KCustomOptions::Remount Smb4KCustomOptions::remount() const 0376 { 0377 return d->remount; 0378 } 0379 0380 0381 void Smb4KCustomOptions::setUseUser(bool use) 0382 { 0383 d->useUser = use; 0384 } 0385 0386 0387 bool Smb4KCustomOptions::useUser() const 0388 { 0389 return d->useUser; 0390 } 0391 0392 0393 void Smb4KCustomOptions::setUser(const KUser &user) 0394 { 0395 d->user = user; 0396 } 0397 0398 0399 KUser Smb4KCustomOptions::user() const 0400 { 0401 return d->user; 0402 } 0403 0404 0405 void Smb4KCustomOptions::setUseGroup(bool use) 0406 { 0407 d->useGroup = use; 0408 } 0409 0410 0411 bool Smb4KCustomOptions::useGroup() const 0412 { 0413 return d->useGroup; 0414 } 0415 0416 0417 void Smb4KCustomOptions::setGroup(const KUserGroup& group) 0418 { 0419 d->group = group; 0420 } 0421 0422 0423 KUserGroup Smb4KCustomOptions::group() const 0424 { 0425 return d->group; 0426 } 0427 0428 0429 void Smb4KCustomOptions::setUseFileMode(bool use) 0430 { 0431 d->useFileMode = use; 0432 } 0433 0434 0435 bool Smb4KCustomOptions::useFileMode() const 0436 { 0437 return d->useFileMode; 0438 } 0439 0440 0441 void Smb4KCustomOptions::setFileMode(const QString& mode) 0442 { 0443 d->fileMode = mode; 0444 } 0445 0446 0447 QString Smb4KCustomOptions::fileMode() const 0448 { 0449 return d->fileMode; 0450 } 0451 0452 0453 void Smb4KCustomOptions::setUseDirectoryMode(bool use) 0454 { 0455 d->useDirectoryMode = use; 0456 } 0457 0458 0459 bool Smb4KCustomOptions::useDirectoryMode() const 0460 { 0461 return d->useDirectoryMode; 0462 } 0463 0464 0465 void Smb4KCustomOptions::setDirectoryMode(const QString& mode) 0466 { 0467 d->directoryMode = mode; 0468 } 0469 0470 0471 QString Smb4KCustomOptions::directoryMode() const 0472 { 0473 return d->directoryMode; 0474 } 0475 0476 0477 #if defined(Q_OS_LINUX) 0478 void Smb4KCustomOptions::setCifsUnixExtensionsSupport(bool support) 0479 { 0480 d->cifsUnixExtensionsSupport = support; 0481 } 0482 0483 0484 bool Smb4KCustomOptions::cifsUnixExtensionsSupport() const 0485 { 0486 return d->cifsUnixExtensionsSupport; 0487 } 0488 0489 0490 void Smb4KCustomOptions::setUseFileSystemPort(bool use) 0491 { 0492 d->useFileSystemPort = use; 0493 } 0494 0495 0496 bool Smb4KCustomOptions::useFileSystemPort() const 0497 { 0498 return d->useFileSystemPort; 0499 } 0500 0501 0502 void Smb4KCustomOptions::setFileSystemPort(int port) 0503 { 0504 d->fileSystemPort = port; 0505 0506 switch (d->type) 0507 { 0508 case Share: 0509 { 0510 d->url.setPort(port); 0511 break; 0512 } 0513 default: 0514 { 0515 break; 0516 } 0517 } 0518 } 0519 0520 0521 int Smb4KCustomOptions::fileSystemPort() const 0522 { 0523 return d->fileSystemPort; 0524 } 0525 0526 0527 void Smb4KCustomOptions::setUseSecurityMode(bool use) 0528 { 0529 d->useSecurityMode = use; 0530 } 0531 0532 0533 bool Smb4KCustomOptions::useSecurityMode() const 0534 { 0535 return d->useSecurityMode; 0536 } 0537 0538 0539 void Smb4KCustomOptions::setSecurityMode(int mode) 0540 { 0541 d->securityMode = mode; 0542 } 0543 0544 0545 int Smb4KCustomOptions::securityMode() const 0546 { 0547 return d->securityMode; 0548 } 0549 0550 0551 void Smb4KCustomOptions::setUseWriteAccess(bool use) 0552 { 0553 d->useWriteAccess = use; 0554 } 0555 0556 0557 bool Smb4KCustomOptions::useWriteAccess() const 0558 { 0559 return d->useWriteAccess; 0560 } 0561 0562 0563 void Smb4KCustomOptions::setWriteAccess(int access) 0564 { 0565 d->writeAccess = access; 0566 } 0567 0568 0569 int Smb4KCustomOptions::writeAccess() const 0570 { 0571 return d->writeAccess; 0572 } 0573 #endif 0574 0575 0576 void Smb4KCustomOptions::setProfile(const QString &profile) 0577 { 0578 d->profile = profile; 0579 } 0580 0581 0582 QString Smb4KCustomOptions::profile() const 0583 { 0584 return d->profile; 0585 } 0586 0587 0588 void Smb4KCustomOptions::setUseSmbPort(bool use) 0589 { 0590 d->useSmbPort = use; 0591 } 0592 0593 0594 bool Smb4KCustomOptions::useSmbPort() const 0595 { 0596 return d->useSmbPort; 0597 } 0598 0599 0600 void Smb4KCustomOptions::setSmbPort(int port) 0601 { 0602 d->smbPort = port; 0603 0604 switch (d->type) 0605 { 0606 case Host: 0607 { 0608 d->url.setPort(port); 0609 break; 0610 } 0611 default: 0612 { 0613 break; 0614 } 0615 } 0616 } 0617 0618 0619 int Smb4KCustomOptions::smbPort() const 0620 { 0621 return d->smbPort; 0622 } 0623 0624 0625 void Smb4KCustomOptions::setUseKerberos(bool use) 0626 { 0627 d->useKerberos = use; 0628 } 0629 0630 0631 bool Smb4KCustomOptions::useKerberos() const 0632 { 0633 return d->useKerberos; 0634 } 0635 0636 0637 void Smb4KCustomOptions::setMACAddress(const QString &macAddress) 0638 { 0639 QRegExp exp("..\\:..\\:..\\:..\\:..\\:.."); 0640 0641 if (exp.exactMatch(macAddress)) 0642 { 0643 d->mac = macAddress; 0644 } 0645 } 0646 0647 0648 QString Smb4KCustomOptions::macAddress() const 0649 { 0650 return d->mac; 0651 } 0652 0653 0654 void Smb4KCustomOptions::setWOLSendBeforeNetworkScan(bool send) 0655 { 0656 d->wakeOnLanBeforeFirstScan = send; 0657 } 0658 0659 0660 bool Smb4KCustomOptions::wolSendBeforeNetworkScan() const 0661 { 0662 return d->wakeOnLanBeforeFirstScan; 0663 } 0664 0665 0666 void Smb4KCustomOptions::setWOLSendBeforeMount(bool send) 0667 { 0668 d->wakeOnLanBeforeMount = send; 0669 } 0670 0671 0672 bool Smb4KCustomOptions::wolSendBeforeMount() const 0673 { 0674 return d->wakeOnLanBeforeMount; 0675 } 0676 0677 0678 QMap<QString, QString> Smb4KCustomOptions::customOptions() const 0679 { 0680 QMap<QString,QString> entries; 0681 0682 switch (d->remount) 0683 { 0684 case RemountOnce: 0685 { 0686 entries.insert("remount", "once"); 0687 break; 0688 } 0689 case RemountAlways: 0690 { 0691 entries.insert("remount", "always"); 0692 break; 0693 } 0694 case UndefinedRemount: 0695 { 0696 entries.insert("remount", QString()); 0697 break; 0698 } 0699 default: 0700 { 0701 break; 0702 } 0703 } 0704 0705 entries.insert("use_user", d->useUser ? "true" : "false"); 0706 entries.insert("uid", QString("%1").arg(d->user.userId().toString())); 0707 entries.insert("owner", d->user.loginName()); 0708 entries.insert("use_group", d->useGroup ? "true" : "false"); 0709 entries.insert("gid", QString("%1").arg(d->group.groupId().toString())); 0710 entries.insert("group", d->group.name()); 0711 entries.insert("use_file_mode", d->useFileMode ? "true" : "false"); 0712 entries.insert("file_mode", d->fileMode); 0713 entries.insert("use_directory_mode", d->useDirectoryMode ? "true" : "false"); 0714 entries.insert("directory_mode", d->directoryMode); 0715 0716 #if defined(Q_OS_LINUX) 0717 entries.insert("cifs_unix_extensions_support", d->cifsUnixExtensionsSupport ? "true" : "false"); 0718 entries.insert("use_filesystem_port", d->useFileSystemPort ? "true" : "false"); 0719 entries.insert("filesystem_port", QString("%1").arg(fileSystemPort())); 0720 entries.insert("use_security_mode", d->useSecurityMode ? "true" : "false"); 0721 0722 switch (d->securityMode) 0723 { 0724 case Smb4KMountSettings::EnumSecurityMode::None: 0725 { 0726 entries.insert("security_mode", "none"); 0727 break; 0728 } 0729 case Smb4KMountSettings::EnumSecurityMode::Krb5: 0730 { 0731 entries.insert("security_mode", "krb5"); 0732 break; 0733 } 0734 case Smb4KMountSettings::EnumSecurityMode::Krb5i: 0735 { 0736 entries.insert("security_mode", "krb5i"); 0737 break; 0738 } 0739 case Smb4KMountSettings::EnumSecurityMode::Ntlm: 0740 { 0741 entries.insert("security_mode", "ntlm"); 0742 break; 0743 } 0744 case Smb4KMountSettings::EnumSecurityMode::Ntlmi: 0745 { 0746 entries.insert("security_mode", "ntlmi"); 0747 break; 0748 } 0749 case Smb4KMountSettings::EnumSecurityMode::Ntlmv2: 0750 { 0751 entries.insert("security_mode", "ntlmv2"); 0752 break; 0753 } 0754 case Smb4KMountSettings::EnumSecurityMode::Ntlmv2i: 0755 { 0756 entries.insert("security_mode", "ntlmv2i"); 0757 break; 0758 } 0759 case Smb4KMountSettings::EnumSecurityMode::Ntlmssp: 0760 { 0761 entries.insert("security_mode", "ntlmssp"); 0762 break; 0763 } 0764 case Smb4KMountSettings::EnumSecurityMode::Ntlmsspi: 0765 { 0766 entries.insert("security_mode", "ntlmsspi"); 0767 break; 0768 } 0769 default: 0770 { 0771 break; 0772 } 0773 } 0774 0775 entries.insert("use_write_access", d->useWriteAccess ? "true" : "false"); 0776 0777 switch (d->writeAccess) 0778 { 0779 case Smb4KMountSettings::EnumWriteAccess::ReadWrite: 0780 { 0781 entries.insert("write_access", "true"); 0782 break; 0783 } 0784 case Smb4KMountSettings::EnumWriteAccess::ReadOnly: 0785 { 0786 entries.insert("write_access", "false"); 0787 break; 0788 } 0789 default: 0790 { 0791 break; 0792 } 0793 } 0794 #endif 0795 entries.insert("use_smb_port", d->useSmbPort ? "true" : "false"); 0796 entries.insert("smb_port", QString("%1").arg(smbPort())); 0797 entries.insert("kerberos", d->useKerberos ? "true" : "false"); 0798 entries.insert("mac_address", d->mac); 0799 entries.insert("wol_send_before_first_scan", d->wakeOnLanBeforeFirstScan ? "true" : "false"); 0800 entries.insert("wol_send_before_mount", d->wakeOnLanBeforeMount ? "true" : "false"); 0801 0802 return entries; 0803 } 0804 0805 0806 bool Smb4KCustomOptions::hasOptions() const 0807 { 0808 // 0809 // NOTE: This function does not honor the workgroup, the url, 0810 // the ip address, the type and the profile, because these things 0811 // are not custom options. 0812 // 0813 // Perform remount 0814 if (d->remount != Smb4KCustomOptions::UndefinedRemount) 0815 { 0816 return true; 0817 } 0818 0819 // Use user information 0820 if (d->useUser != Smb4KMountSettings::useUserId()) 0821 { 0822 return true; 0823 } 0824 0825 // User information 0826 if (d->user.userId().toString() != Smb4KMountSettings::userId()) 0827 { 0828 return true; 0829 } 0830 0831 // Use group information 0832 if (d->useGroup != Smb4KMountSettings::useGroupId()) 0833 { 0834 return true; 0835 } 0836 0837 // Group information 0838 if (d->group.groupId().toString() != Smb4KMountSettings::groupId()) 0839 { 0840 return true; 0841 } 0842 0843 // Use file mask 0844 if (d->useFileMode != Smb4KMountSettings::useFileMode()) 0845 { 0846 return true; 0847 } 0848 0849 if (d->fileMode != Smb4KMountSettings::fileMode()) 0850 { 0851 return true; 0852 } 0853 0854 if (d->useDirectoryMode != Smb4KMountSettings::useDirectoryMode()) 0855 { 0856 return true; 0857 } 0858 0859 if (d->directoryMode != Smb4KMountSettings::directoryMode()) 0860 { 0861 return true; 0862 } 0863 #if defined(Q_OS_LINUX) 0864 // CIFS Unix extension support 0865 if (d->cifsUnixExtensionsSupport != Smb4KMountSettings::cifsUnixExtensionsSupport()) 0866 { 0867 return true; 0868 } 0869 0870 // Use filesystem port 0871 if (d->useFileSystemPort != Smb4KMountSettings::useRemoteFileSystemPort()) 0872 { 0873 return true; 0874 } 0875 0876 // File system port (used for mounting) 0877 if (d->fileSystemPort != Smb4KMountSettings::remoteFileSystemPort()) 0878 { 0879 return true; 0880 } 0881 0882 // Use security mode 0883 if (d->useSecurityMode != Smb4KMountSettings::useSecurityMode()) 0884 { 0885 return true; 0886 } 0887 0888 // Security mode 0889 if (d->securityMode != Smb4KMountSettings::securityMode()) 0890 { 0891 return true; 0892 } 0893 0894 // Use write access 0895 if (d->useWriteAccess != Smb4KMountSettings::useWriteAccess()) 0896 { 0897 return true; 0898 } 0899 0900 // Write access 0901 if (d->writeAccess != Smb4KMountSettings::writeAccess()) 0902 { 0903 return true; 0904 } 0905 #endif 0906 0907 // Use SMB port 0908 if (d->useSmbPort != Smb4KSettings::useRemoteSmbPort()) 0909 { 0910 return true; 0911 } 0912 0913 // SMB port 0914 if (d->smbPort != Smb4KSettings::remoteSmbPort()) 0915 { 0916 return true; 0917 } 0918 0919 // Kerberos 0920 if (d->useKerberos != Smb4KSettings::useKerberos()) 0921 { 0922 return true; 0923 } 0924 0925 // MAC address 0926 if (!d->mac.isEmpty()) 0927 { 0928 return true; 0929 } 0930 0931 // Send WOL packages before first scan 0932 if (d->wakeOnLanBeforeFirstScan) 0933 { 0934 return true; 0935 } 0936 0937 // Send WOL packages before mount 0938 if (d->wakeOnLanBeforeMount) 0939 { 0940 return true; 0941 } 0942 0943 return false; 0944 } 0945 0946 0947 0948 void Smb4KCustomOptions::update(Smb4KCustomOptions *options) 0949 { 0950 d->ip.setAddress(options->ipAddress()); 0951 d->remount = options->remount(); 0952 d->useUser = options->useUser(); 0953 d->user = options->user(); 0954 d->useGroup = options->useGroup(); 0955 d->group = options->group(); 0956 d->useFileMode = options->useFileMode(); 0957 d->fileMode = options->fileMode(); 0958 d->useDirectoryMode = options->useDirectoryMode(); 0959 d->directoryMode = options->directoryMode(); 0960 #if defined(Q_OS_LINUX) 0961 d->cifsUnixExtensionsSupport = options->cifsUnixExtensionsSupport(); 0962 d->useFileSystemPort = options->useFileSystemPort(); 0963 d->fileSystemPort = options->fileSystemPort(); 0964 d->useSecurityMode = options->useSecurityMode(); 0965 d->securityMode = options->securityMode(); 0966 d->useWriteAccess = options->useWriteAccess(); 0967 d->writeAccess = options->writeAccess(); 0968 #endif 0969 d->profile = options->profile(); 0970 d->useSmbPort = options->useSmbPort(); 0971 d->smbPort = options->smbPort(); 0972 d->useKerberos = options->useKerberos(); 0973 d->mac = options->macAddress(); 0974 d->wakeOnLanBeforeFirstScan = options->wolSendBeforeNetworkScan(); 0975 d->wakeOnLanBeforeMount = options->wolSendBeforeMount(); 0976 } 0977