// krazy:excludeall=license (it's a program, not a library) /* SPDX-FileCopyrightText: 2001 Malte Starostik based on kmailservice.cpp, SPDX-FileCopyrightText: 2000 Simon Hausmann SPDX-License-Identifier: GPL-2.0-or-later */ #include #include #include #include #include #include #include #include #include int main(int argc, char **argv) { QApplication a(argc, argv); if (argc != 2) { fprintf(stderr, "Usage: ktelnetservice6 \n"); return 1; } KConfig config(QStringLiteral("kdeglobals")); KConfigGroup cg(&config, QStringLiteral("General")); QString terminal = cg.readPathEntry("TerminalApplication", QStringLiteral("konsole")); QUrl url(QString::fromLocal8Bit(argv[1])); QStringList cmd; if (terminal == QLatin1String("konsole")) { cmd << QStringLiteral("--noclose"); } cmd << QStringLiteral("-e"); if (url.scheme() == QLatin1String("telnet")) { cmd << QStringLiteral("telnet"); } else if (url.scheme() == QLatin1String("ssh")) { cmd << QStringLiteral("ssh"); } else if (url.scheme() == QLatin1String("rlogin")) { cmd << QStringLiteral("rlogin"); } else { qCritical() << "Invalid protocol " << url.scheme(); return 2; } if (!KAuthorized::authorize(KAuthorized::SHELL_ACCESS)) { QMessageBox::critical(nullptr, i18n("Access denied"), i18n("You do not have permission to access the %1 protocol.", url.scheme())); return 3; } if (!url.userName().isEmpty()) { cmd << QStringLiteral("-l"); cmd << url.userName(); } QString host; if (!url.host().isEmpty()) { host = url.host(); // telnet://host } else if (!url.path().isEmpty()) { host = url.path(); // telnet:host } if (host.isEmpty() || host.startsWith(QLatin1Char('-'))) { qCritical() << "Invalid hostname " << host; return 2; } cmd << host; if (url.port() > 0) { if (url.scheme() == QLatin1String("ssh")) { cmd << QStringLiteral("-p") << QString::number(url.port()); } else { cmd << QString::number(url.port()); } } auto job = new KIO::CommandLauncherJob(terminal, cmd); job->start(); return 0; }