Пример #1
0
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));
}
Пример #2
0
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;
}
Пример #3
0
bool WebPage::puppetUpdate() {
    QString output;
    QStringList arguments;
    arguments << "/usr/local/bin/puppet-manual.sh";
    return sudo(arguments, output);
}
Пример #4
0
bool WebPage::reboot() {
    QString output;
    QStringList arguments;
    arguments << "/sbin/reboot";
    return sudo(arguments, output);
}