diff options
author | Tobias C. Berner <tcberner@FreeBSD.org> | 2018-02-22 19:03:17 +0000 |
---|---|---|
committer | Tobias C. Berner <tcberner@FreeBSD.org> | 2018-02-22 19:03:17 +0000 |
commit | a4a7daf069cba3ae4b90d832aa9df7624b4626a3 (patch) | |
tree | 3aad51132f546ad79059b32784badc3f6a42c8ff /net/krdc-kde4 | |
parent | 7ff2d6435675b95623ce40a15abfc2c3f3ef4a74 (diff) | |
download | ports-a4a7daf069cba3ae4b90d832aa9df7624b4626a3.tar.gz ports-a4a7daf069cba3ae4b90d832aa9df7624b4626a3.zip |
Notes
Diffstat (limited to 'net/krdc-kde4')
-rw-r--r-- | net/krdc-kde4/Makefile | 23 | ||||
-rw-r--r-- | net/krdc-kde4/distinfo | 2 | ||||
-rw-r--r-- | net/krdc-kde4/files/patch-git8436cc62 | 317 | ||||
-rw-r--r-- | net/krdc-kde4/pkg-descr | 5 | ||||
-rw-r--r-- | net/krdc-kde4/pkg-plist | 45 |
5 files changed, 392 insertions, 0 deletions
diff --git a/net/krdc-kde4/Makefile b/net/krdc-kde4/Makefile new file mode 100644 index 000000000000..f3ef0f6507e0 --- /dev/null +++ b/net/krdc-kde4/Makefile @@ -0,0 +1,23 @@ +# $FreeBSD$ + +PORTNAME= krdc +PORTVERSION= ${KDE4_VERSION} +PORTREVISION= 6 +CATEGORIES= net kde kde-kde4 + +MAINTAINER= kde@FreeBSD.org +COMMENT= RDP and VNC client for KDE + +LIB_DEPENDS= libvncserver.so:net/libvncserver \ + libtelepathy-qt4.so:net-im/telepathy-qt4 + +USES= cmake:outsource kde:4 tar:xz +USE_KDE= kdelibs automoc4 +USE_QT4= moc_build qmake_build rcc_build uic_build +USE_LDCONFIG= yes + +OPTIONS_DEFINE= FREERDP +FREERDP_DESC= Remote Desktop support via FreeRDP +FREERDP_RUN_DEPENDS= xfreerdp:net/freerdp + +.include <bsd.port.mk> diff --git a/net/krdc-kde4/distinfo b/net/krdc-kde4/distinfo new file mode 100644 index 000000000000..63df5b10eff4 --- /dev/null +++ b/net/krdc-kde4/distinfo @@ -0,0 +1,2 @@ +SHA256 (KDE/4.14.3/krdc-4.14.3.tar.xz) = 86dbd710db5f64f59d9879e1630e13821f10a779c8cb194eb6b627f8d03fe61e +SIZE (KDE/4.14.3/krdc-4.14.3.tar.xz) = 398048 diff --git a/net/krdc-kde4/files/patch-git8436cc62 b/net/krdc-kde4/files/patch-git8436cc62 new file mode 100644 index 000000000000..d568be962d4a --- /dev/null +++ b/net/krdc-kde4/files/patch-git8436cc62 @@ -0,0 +1,317 @@ +--- rdp/rdpview.cpp ++++ rdp/rdpview.cpp +@@ -146,102 +146,205 @@ bool RdpView::start() + } + } + ++ // Check the version of FreeRDP so we can use pre-1.1 switches if needed ++ QProcess *xfreeRDPVersionCheck = new QProcess(this); ++ xfreeRDPVersionCheck->start("xfreerdp", QStringList("--version")); ++ xfreeRDPVersionCheck->waitForFinished(); ++ QString versionOutput = xfreeRDPVersionCheck->readAllStandardOutput(); ++ xfreeRDPVersionCheck->deleteLater(); ++ + m_process = new QProcess(m_container); + + QStringList arguments; + +- int width, height; +- if (m_hostPreferences->width() > 0) { +- width = m_hostPreferences->width(); +- height = m_hostPreferences->height(); +- } else { +- width = this->parentWidget()->size().width(); +- height = this->parentWidget()->size().height(); +- } +- arguments << "-g" << QString::number(width) + 'x' + QString::number(height); +- +- arguments << "-k" << keymapToXfreerdp(m_hostPreferences->keyboardLayout()); ++ if (versionOutput.contains(QLatin1String(" 1.0"))) { ++ kDebug(5012) << "Use FreeRDP 1.0 compatible arguments"; + +- if (!m_url.userName().isEmpty()) { +- // if username contains a domain, it needs to be set with another parameter +- if (m_url.userName().contains('\\')) { +- const QStringList splittedName = m_url.userName().split('\\'); +- arguments << "-d" << splittedName.at(0); +- arguments << "-u" << splittedName.at(1); ++ int width, height; ++ if (m_hostPreferences->width() > 0) { ++ width = m_hostPreferences->width(); ++ height = m_hostPreferences->height(); + } else { +- arguments << "-u" << m_url.userName(); ++ width = this->parentWidget()->size().width(); ++ height = this->parentWidget()->size().height(); + } ++ arguments << "-g" << QString::number(width) + 'x' + QString::number(height); ++ ++ arguments << "-k" << keymapToXfreerdp(m_hostPreferences->keyboardLayout()); ++ ++ if (!m_url.userName().isEmpty()) { ++ // if username contains a domain, it needs to be set with another parameter ++ if (m_url.userName().contains('\\')) { ++ const QStringList splittedName = m_url.userName().split('\\'); ++ arguments << "-d" << splittedName.at(0); ++ arguments << "-u" << splittedName.at(1); ++ } else { ++ arguments << "-u" << m_url.userName(); ++ } ++ } else { ++ arguments << "-u" << ""; ++ } ++ ++ arguments << "-D"; // request the window has no decorations ++ arguments << "-X" << QString::number(m_container->winId()); ++ arguments << "-a" << QString::number((m_hostPreferences->colorDepth() + 1) * 8); ++ ++ switch (m_hostPreferences->sound()) { ++ case 1: ++ arguments << "-o"; ++ break; ++ case 0: ++ arguments << "--plugin" << "rdpsnd"; ++ break; ++ case 2: ++ default: ++ break; ++ } ++ ++ if (!m_hostPreferences->shareMedia().isEmpty()) { ++ QStringList shareMedia; ++ shareMedia << "--plugin" << "rdpdr" << "--data" << "disk:media:" + m_hostPreferences->shareMedia() << "--"; ++ arguments += shareMedia; ++ } ++ ++ QString performance; ++ switch (m_hostPreferences->performance()) { ++ case 0: ++ performance = 'm'; ++ break; ++ case 1: ++ performance = 'b'; ++ break; ++ case 2: ++ performance = 'l'; ++ break; ++ default: ++ break; ++ } ++ ++ arguments << "-x" << performance; ++ ++ if (m_hostPreferences->console()) { ++ arguments << "-0"; ++ } ++ ++ if (m_hostPreferences->remoteFX()) { ++ arguments << "--rfx"; ++ } ++ ++ if (!m_hostPreferences->extraOptions().isEmpty()) { ++ const QStringList additionalArguments = KShell::splitArgs(m_hostPreferences->extraOptions()); ++ arguments += additionalArguments; ++ } ++ ++ // krdc has no support for certificate management yet; it would not be possbile to connect to any host: ++ // "The host key for example.com has changed" ... ++ // "Add correct host key in ~/.freerdp/known_hosts to get rid of this message." ++ arguments << "--ignore-certificate"; ++ ++ // clipboard sharing is activated in KRDC; user can disable it at runtime ++ arguments << "--plugin" << "cliprdr"; ++ ++ arguments << "-t" << QString::number(m_port); ++ arguments << m_host; ++ ++ kDebug(5012) << "Starting xfreerdp with arguments: " << arguments.join(" "); ++ ++ arguments.removeLast(); // host must be last, remove and re-add it after the password ++ if (!m_url.password().isNull()) ++ arguments << "-p" << m_url.password(); ++ arguments << m_host; ++ + } else { +- arguments << "-u" << ""; +- } ++ kDebug(5012) << "Use FreeRDP 1.1+ compatible arguments"; + +- if (!m_url.password().isNull()) +- arguments << "-p" << m_url.password(); +- +- arguments << "-D"; // request the window has no decorations +- arguments << "-X" << QString::number(m_container->winId()); +- arguments << "-a" << QString::number((m_hostPreferences->colorDepth() + 1) * 8); +- +- switch (m_hostPreferences->sound()) { +- case 1: +- arguments << "-o"; +- break; +- case 0: +- arguments << "--plugin" << "rdpsnd"; +- break; +- case 2: +- default: +- break; +- } ++ int width, height; ++ if (m_hostPreferences->width() > 0) { ++ width = m_hostPreferences->width(); ++ height = m_hostPreferences->height(); ++ } else { ++ width = this->parentWidget()->size().width(); ++ height = this->parentWidget()->size().height(); ++ } ++ arguments << "-decorations"; ++ arguments << "/w:" + QString::number(width); ++ arguments << "/h:" + QString::number(height); ++ ++ arguments << "/kbd:" + keymapToXfreerdp(m_hostPreferences->keyboardLayout()); ++ ++ if (!m_url.userName().isEmpty()) { ++ // if username contains a domain, it needs to be set with another parameter ++ if (m_url.userName().contains('\\')) { ++ const QStringList splittedName = m_url.userName().split('\\'); ++ arguments << "/d:" + splittedName.at(0); ++ arguments << "/u:" + splittedName.at(1); ++ } else { ++ arguments << "/u:" + m_url.userName(); ++ } ++ } else { ++ arguments << "/u:"; ++ } + +- if (!m_hostPreferences->shareMedia().isEmpty()) { +- QStringList shareMedia; +- shareMedia << "--plugin" << "rdpdr" << "--data" << "disk:media:" + m_hostPreferences->shareMedia() << "--"; +- arguments += shareMedia; +- } ++ arguments << "/parent-window:" + QString::number(m_container->winId()); ++ arguments << "/bpp:" + QString::number((m_hostPreferences->colorDepth() + 1) * 8); ++ arguments << "/audio-mode:" + QString::number(m_hostPreferences->sound()); + +- QString performance; +- switch (m_hostPreferences->performance()) { +- case 0: +- performance = 'm'; +- break; +- case 1: +- performance = 'b'; +- break; +- case 2: +- performance = 'l'; +- break; +- default: +- break; +- } ++ if (!m_hostPreferences->shareMedia().isEmpty()) { ++ QStringList shareMedia; ++ shareMedia << "/drive:media," + m_hostPreferences->shareMedia(); ++ arguments += shareMedia; ++ } + +- arguments << "-x" << performance; ++ QString performance; ++ switch (m_hostPreferences->performance()) { ++ case 0: ++ performance = "modem"; ++ break; ++ case 1: ++ performance = "broadband"; ++ break; ++ case 2: ++ performance = "lan"; ++ break; ++ default: ++ break; ++ } + +- if (m_hostPreferences->console()) { +- arguments << "-0"; +- } ++ arguments << "/network:" + performance; + +- if (m_hostPreferences->remoteFX()) { +- arguments << "--rfx"; +- } ++ if (m_hostPreferences->console()) { ++ arguments << "/admin"; ++ } + +- if (!m_hostPreferences->extraOptions().isEmpty()) { +- const QStringList additionalArguments = KShell::splitArgs(m_hostPreferences->extraOptions()); +- arguments += additionalArguments; +- } ++ if (m_hostPreferences->remoteFX()) { ++ arguments << "/rfx"; ++ } ++ ++ if (!m_hostPreferences->extraOptions().isEmpty()) { ++ const QStringList additionalArguments = KShell::splitArgs(m_hostPreferences->extraOptions()); ++ arguments += additionalArguments; ++ } ++ ++ // krdc has no support for certificate management yet; it would not be possbile to connect to any host: ++ // "The host key for example.com has changed" ... ++ // "Add correct host key in ~/.freerdp/known_hosts to get rid of this message." ++ arguments << "/cert-ignore"; ++ ++ // clipboard sharing is activated in KRDC; user can disable it at runtime ++ arguments << "+clipboard"; + +- // krdc has no support for certificate management yet; it would not be possbile to connect to any host: +- // "The host key for example.com has changed" ... +- // "Add correct host key in ~/.freerdp/known_hosts to get rid of this message." +- arguments << "--ignore-certificate"; ++ arguments << "/port:" + QString::number(m_port); ++ arguments << "/v:" + m_host; + +- // clipboard sharing is activated in KRDC; user can disable it at runtime +- arguments << "--plugin" << "cliprdr"; ++ kDebug(5012) << "Starting xfreerdp with arguments: " << arguments.join(" "); + +- arguments << "-t" << QString::number(m_port); +- arguments << m_host; ++ //avoid printing the password in debug ++ if (!m_url.password().isNull()) { ++ arguments << "/p:" + m_url.password(); ++ } ++ kDebug(5012) << "Starting xfreerdp with arguments: " << arguments.join(" "); + +- kDebug(5012) << "Starting xfreerdp with arguments:" << arguments; ++ } + + setStatus(Connecting); + +@@ -302,7 +405,7 @@ void RdpView::connectionError() + + void RdpView::processError(QProcess::ProcessError error) + { +- kDebug(5012) << "processError:" << error; ++ kDebug(5012) << error; + if (m_quitFlag) // do not try to show error messages while quitting (prevent crashes) + return; + +@@ -319,11 +422,11 @@ void RdpView::processError(QProcess::ProcessError error) + void RdpView::receivedStandardError() + { + const QString output(m_process->readAllStandardError()); +- kDebug(5012) << "receivedStandardError:" << output; ++ kDebug(5012) << output; + QString line; + int i = 0; + while (!(line = output.section('\n', i, i)).isEmpty()) { +- ++ + // the following error is issued by freerdp because of a bug in freerdp 1.0.1 and below; + // see: https://github.com/FreeRDP/FreeRDP/pull/576 + //"X Error of failed request: BadWindow (invalid Window parameter) +@@ -345,7 +448,7 @@ void RdpView::receivedStandardError() + void RdpView::receivedStandardOutput() + { + const QString output(m_process->readAllStandardOutput()); +- kDebug(5012) << "receivedStandardOutput:" << output; ++ kDebug(5012) << output; + QString line; + int i = 0; + while (!(line = output.section('\n', i, i)).isEmpty()) { diff --git a/net/krdc-kde4/pkg-descr b/net/krdc-kde4/pkg-descr new file mode 100644 index 000000000000..360d78fcf4c1 --- /dev/null +++ b/net/krdc-kde4/pkg-descr @@ -0,0 +1,5 @@ +KRDC is a client application that allows you to view or even control +the desktop session on another machine that is running a compatible +server. VNC and RDP is supported. + +WWW: http://kde.org/applications/internet/krdc/ diff --git a/net/krdc-kde4/pkg-plist b/net/krdc-kde4/pkg-plist new file mode 100644 index 000000000000..9a06ab48eadf --- /dev/null +++ b/net/krdc-kde4/pkg-plist @@ -0,0 +1,45 @@ +bin/krdc +bin/krdc_rfb_approver +include/kde4/krdc/hostpreferences.h +include/kde4/krdc/remoteview.h +include/kde4/krdc/remoteviewfactory.h +lib/kde4/kcm_krdc_rdpplugin.so +lib/kde4/kcm_krdc_vncplugin.so +lib/kde4/krdc_rdpplugin.so +lib/kde4/krdc_testplugin.so +lib/kde4/krdc_vncplugin.so +lib/libkrdccore.so +lib/libkrdccore.so.4 +lib/libkrdccore.so.%%KDE4_GENERIC_LIB_VERSION%% +share/applications/kde4/krdc.desktop +share/apps/krdc/krdcui.rc +share/apps/krdc/pics/pointcursor.png +share/apps/krdc/pics/pointcursormask.png +share/apps/krdc_rfb_approver/krdc_rfb_approver.notifyrc +share/config.kcfg/krdc.kcfg +share/dbus-1/services/org.freedesktop.Telepathy.Client.krdc_rfb_approver.service +share/dbus-1/services/org.freedesktop.Telepathy.Client.krdc_rfb_handler.service +share/doc/HTML/en/krdc/address_input.png +share/doc/HTML/en/krdc/bookmarks_menu.png +share/doc/HTML/en/krdc/common +share/doc/HTML/en/krdc/general_preferences.png +share/doc/HTML/en/krdc/index.cache.bz2 +share/doc/HTML/en/krdc/index.docbook +share/doc/HTML/en/krdc/krdc_mainwindow.png +share/doc/HTML/en/krdc/password_entry.png +share/doc/HTML/en/krdc/rdp_preferences.png +share/doc/HTML/en/krdc/view-fullscreen.png +share/doc/HTML/en/krdc/view-restore.png +share/doc/HTML/en/krdc/vnc_host_configuration.png +share/doc/HTML/en/krdc/vnc_preferences.png +share/kde4/services/ServiceMenus/smb2rdc.desktop +share/kde4/services/krdc_rdp.desktop +share/kde4/services/krdc_rdp_config.desktop +share/kde4/services/krdc_test.desktop +share/kde4/services/krdc_vnc.desktop +share/kde4/services/krdc_vnc_config.desktop +share/kde4/services/rdp.protocol +share/kde4/services/vnc.protocol +share/kde4/servicetypes/krdc_plugin.desktop +share/telepathy/clients/krdc_rfb_approver.client +share/telepathy/clients/krdc_rfb_handler.client |