kdelibs/kio/misc/ktelnetservice.cpp
Ivailo Monev b90f90905b kio: move most of the KRun bits to KLauncher
two things doing the same thing - one has to go away. also KRun does not
fork and the launched service/application lifetime was bound to the
process launching it, that is not the case with klauncher - it is bound
to the session (in the usual case)

a few things on the TODO list but mostly for services/applications
lacking features

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-05-12 03:21:17 +03:00

100 lines
2.8 KiB
C++

//krazy:excludeall=license (it's a program, not a library)
/*
Copyright (c) 2001 Malte Starostik <malte@kde.org>
based on kmailservice.cpp,
Copyright (c) 2000 Simon Hausmann <hausmann@kde.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include <kapplication.h>
#include <ktoolinvocation.h>
#include <kmessagebox.h>
#include <kcmdlineargs.h>
#include <kdebug.h>
#include <klocale.h>
#include <kconfig.h>
#include <kconfiggroup.h>
#include <kurl.h>
int main(int argc, char **argv)
{
KCmdLineOptions options;
options.add("+url");
KCmdLineArgs::init(argc, argv, "ktelnetservice", "kdelibs4", ki18n("telnet service"),
"unknown", ki18n("telnet protocol handler"));
KCmdLineArgs::addCmdLineOptions(options);
KApplication app;
KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
if (args->count() != 1)
return 1;
KConfig config("kdeglobals");
KConfigGroup cg(&config, "General");
QString terminal = cg.readPathEntry("TerminalApplication", "konsole");
KUrl url(args->arg(0));
QStringList cmd;
if (terminal == "konsole")
cmd << "--noclose";
cmd << "-e";
if ( url.protocol() == "telnet" )
cmd << "telnet";
else if ( url.protocol() == "ssh" )
cmd << "ssh";
else if ( url.protocol() == "rlogin" )
cmd << "rlogin";
else {
kError() << "Invalid protocol " << url.protocol();
return 2;
}
if (!url.userName().isEmpty())
{
cmd << "-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('-'))
{
kError() << "Invalid hostname " << host;
return 2;
}
cmd << host;
if (url.port() > 0){
if ( url.protocol() == "ssh" )
cmd << "-p" << QString::number(url.port());
else
cmd << QString::number(url.port());
}
KToolInvocation::self()->startProgram(terminal, cmd);
return 0;
}