mirror of
https://bitbucket.org/smil3y/kdelibs.git
synced 2025-02-23 10:22:48 +00:00

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>
100 lines
2.8 KiB
C++
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;
|
|
}
|