You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tde-packaging/ubuntu/_base/applications/settings/kiosktool/debian/patches/kubuntu_03_sudo_support.diff

158 lines
4.9 KiB

--- kiosktool/kiosktool/kioskrun.h 2005-04-25 10:46:33.000000000 +0100
+++ kiosktool/kiosktool/kioskrun.h 2007-07-18 17:47:04.000000000 +0100
@@ -37,6 +37,18 @@
class KioskGui;
+class NETACCESS {
+ public:
+ static bool exists(const KURL &url, bool source, TQWidget *window);
+ static bool mkdir(const KURL &url, TQWidget *window, int permissions=-1);
+ static TQString lastErrorString();
+ static int lastError();
+ static bool file_copy (const KURL &src, const KURL &dest, int permissions=-1, bool overwrite=false, bool resume=false, TQWidget *window=0L);
+ static bool del(const KURL &url, TQWidget *window);
+ static bool file_move(const KURL &src, const KURL &target, int permissions=-1, bool overwrite=false, bool resume=false, TQWidget *window=0L);
+ static bool copy(const KURL &src, const KURL &target, TQWidget *window);
+};
+
class KioskRun : public TQObject
{
friend class KioskGui;
--- kiosktool/kiosktool/kioskrun.cpp 2005-04-25 10:46:33.000000000 +0100
+++ kiosktool/kiosktool/kioskrun.cpp 2007-07-20 16:56:07.000000000 +0100
@@ -28,6 +28,7 @@
#include <tqdir.h>
#include <tqfile.h>
+#include <tqprocess.h>
#include <tdeapplication.h>
#include <tdecmdlineargs.h>
@@ -45,10 +46,124 @@
#include "kiosksync.h"
#include <tdeio/netaccess.h>
-#define NETACCESS TDEIO::NetAccess
+// Kiosktool wants to use fish://root@localhost/... which won't work on Kubuntu because we don't run ssh by default, we don't allow ssh to do root logins and root doesn't even have a password, so implement the functions here for local copies using tdesu instead
+// #define NETACCESS TDEIO::NetAccess
#undef DEBUG_ENTRIES
+bool NETACCESS::exists(const KURL &url, bool source, TQWidget *window)
+{
+ if (url.protocol() == "fish" && url.host() == "localhost") {
+ bool exists = TQFile::exists(url.path());
+ return exists;
+ } else {
+ bool result = TDEIO::NetAccess::exists(url, source, window);
+ return result;
+ }
+}
+
+bool NETACCESS::mkdir(const KURL &url, TQWidget *window, int permissions)
+{
+ if (url.protocol() == "fish" && url.host() == "localhost") {
+ TQProcess proc;
+ proc.addArgument("tdesudo");
+ proc.addArgument("mkdir " + url.path());
+ TQByteArray buffer;
+ proc.launch(buffer);
+ while (!proc.normalExit()) {
+ TDEApplication::kapp->processEvents();
+ }
+ bool exists = TQFile::exists(url.path());
+ return exists;
+ } else {
+ bool result = TDEIO::NetAccess::mkdir(url, window, permissions);
+ return result;
+ }
+}
+
+TQString NETACCESS::lastErrorString()
+{
+ return "Error in Kiosktool Kubuntu modifications";
+}
+
+int NETACCESS::lastError()
+{
+ return 0;
+}
+
+bool NETACCESS::file_copy(const KURL &src, const KURL &dest, int permissions, bool overwrite, bool resume, TQWidget *window)
+{
+ if (dest.protocol() == "fish" && dest.host() == "localhost") {
+ TQProcess proc;
+ proc.addArgument("tdesudo");
+ proc.addArgument("cp " + src.path() + " " + dest.path());
+ TQByteArray buffer;
+ proc.launch(buffer);
+ while (!proc.normalExit()) {
+ TDEApplication::kapp->processEvents();
+ }
+
+ TQProcess proc2;
+ proc2.addArgument("tdesudo");
+ proc2.addArgument("chmod 0644 " + dest.path());
+ proc2.launch(buffer);
+ while (!proc2.normalExit()) {
+ TDEApplication::kapp->processEvents();
+ }
+
+ bool exists = TQFile::exists(dest.path());
+ return exists;
+ } else {
+ bool result = TDEIO::NetAccess::file_copy(src, dest, permissions, overwrite, resume, window);
+ return result;
+ }
+}
+
+bool NETACCESS::del(const KURL &url, TQWidget *window)
+{
+ if (url.protocol() == "fish" && url.host() == "localhost") {
+ TQProcess proc;
+ proc.addArgument("tdesudo");
+ proc.addArgument("rm " + url.path());
+ TQByteArray buffer;
+ proc.launch(buffer);
+ while (!proc.normalExit()) {
+ TDEApplication::kapp->processEvents();
+ }
+ bool exists = !TQFile::exists(url.path());
+ return exists;
+ } else {
+ bool result = TDEIO::NetAccess::del(url, window);
+ return result;
+ }
+}
+
+bool NETACCESS::file_move(const KURL &src, const KURL &target, int permissions, bool overwrite, bool resume, TQWidget *window)
+{
+ if (target.protocol() == "fish" && target.host() == "localhost") {
+ TQProcess proc;
+ proc.addArgument("tdesudo");
+ proc.addArgument("mv " + src.path() + " " + target.path());
+ TQByteArray buffer;
+ proc.launch(buffer);
+ while (!proc.normalExit()) {
+ TDEApplication::kapp->processEvents();
+ }
+
+ bool exists = TQFile::exists(target.path());
+ return exists;
+ } else {
+ bool result = TDEIO::NetAccess::file_move(src, target, permissions, overwrite, resume, window);
+ return result;
+ }
+}
+
+//only used for local files
+bool NETACCESS::copy(const KURL &src, const KURL &target, TQWidget *window)
+{
+ return TDEIO::NetAccess::copy(src, target, window);
+}
+
KioskRun *KioskRun::s_self = 0;
KioskRun::KioskRun( TQObject* parent, const char* name)