void CopyApp::startAsSudo() { QProcess sudo(this); QString sudoApp; sudo.start("which", QStringList() << "gksudo"); sudo.waitForFinished(); sudoApp = QString(sudo.readAllStandardOutput()); if(sudoApp.isEmpty()) { qDebug() << "empty"; sudo.start("which", QStringList() << "kdesudo"); sudo.waitForFinished(); sudoApp = QString(sudo.readAllStandardOutput()); } if(sudoApp.isEmpty()) { QMessageBox::critical(this, tr("Wrong permissions"), tr("The target directory permissions require administrator privileges but neither kdesudo or gksudo was found. Try running the application you want to update as sudo. Quiting now!")); QApplication::quit(); } QMessageBox::critical(this, tr("Wrong permissions"), tr("The target directory permissions requires this application to restart with administrator privileges!")); QProcess::startDetached(sudoApp.simplified(), QStringList() << QString("%0 %1 %2 %4 -w=0").arg(QApplication::applicationFilePath()).arg(origin).arg(destination).arg(appToRun)); }
int main(int argc, char **argv) { sudo(argc, argv); message_init(*argv); const char *optstring = "qh"; static struct option longopts[] = { {"quiet", 0, 0, 0}, {"help", 0, 0, 0}, {0, 0, 0, 0} }; int c = -1, longindex = 0; while (-1 != (c = getopt_long( argc, argv, optstring, longopts, &longindex ))) { switch (c) { case 0: switch (longindex) { case 0: /* --quiet */ message_quiet_default(1); message_quiet(1); break; case 1: /* --help */ usage(*argv); help(); exit(0); } break; case 'q': /* -q */ message_quiet_default(1); message_quiet(1); break; case 'h': /* -h */ usage(*argv); help(); exit(0); break; case '?': usage(*argv); exit(1); break; } } char *name; switch (argc - optind) { case 1: name = argv[optind]; break; default: usage(*argv); exit(1); break; } if (!sandbox_valid(name)) { message_loud("invalid sandbox name %s\n", name); exit(1); } int result = sandbox_destroy(name); message_free(); return result; }
bool WebPage::puppetUpdate() { QString output; QStringList arguments; arguments << "/usr/local/bin/puppet-manual.sh"; return sudo(arguments, output); }
bool WebPage::reboot() { QString output; QStringList arguments; arguments << "/sbin/reboot"; return sudo(arguments, output); }