summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-07-01foreign-menu: Avoid leaking 'name' variable in error pathHEADmasterEduardo Lima (Etrunko)1-0/+1
Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2020-06-26gitlab: add coverage of mingw buildsDaniel P. Berrangé4-0/+285
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-06-26gitlab: add builds on CentOS 8 StreamDaniel P. Berrangé2-0/+85
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-06-26gitlab: refactor recipe for native buildsDaniel P. Berrangé13-194/+139
Currently on every distro we build against the latest git libvirt and related deps. We need to test multiple axis: - A variety of libvirt versions - A variety of distro versions So this changes most jobs to build against the distro provided libvirt and related deps. The CentOS 8 job is kept building against latest git master libvirt and deps. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-06-26data: replace unix2dos with sedDaniel P. Berrangé1-1/+1
This avoids needing to install extra packages in the CI system Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-06-26rpm: add missing rest dep to RPM specDaniel P. Berrangé1-0/+1
We get this indirectly via govirt, but since we directly use its APIs, we should list it as an explicit dep too. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-06-26src: remove trailing whitespaceDaniel P. Berrangé2-3/+3
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-06-26gitlab: ensure "make syntax-check" is run during CIDaniel P. Berrangé1-0/+1
This will stop style errors creeping in via merge requests Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-06-26src: remove tab characters from indentDaniel P. Berrangé3-83/+83
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-06-25ovirt-foreign-menu: Take into account StorageDomains of type DATAEduardo Lima (Etrunko)1-14/+18
Now that we support both ISO and DATA storage domain types, we need to make sure that the files are listed correctly. In this case we give the domains of ISO type the precedence over DATA ones. This change extends previous commit bbda3aa which made it possible for storage domains of type DATA to be considered valid. Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2020-06-25ovirt-foreign-menu: Use proper function in the case of DATA StorageDomainsEduardo Lima (Etrunko)2-2/+34
Unlike the StorageDomain objects of ISO type, the DATA ones require a specific API recently added to libgovirt to support them. This commit makes use of those new functions under #ifdef guards and adds proper a check to configure.ac. Related: https://bugzilla.redhat.com/show_bug.cgi?id=1847223 Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2020-06-09Rather than adding a default extension to screenshots, display an error ↵Julien Ropé1-5/+10
message to make the user add it. This prevents the silent overwriting of the file, and still makes sure the user knows why we don't proceed. Fix BZ#1752514 Signed-off-by: Julien Ropé <jrope@redhat.com>
2020-06-05Added -K --keymap commandline option that allows user to block certain ↵Stephen Thom5-5/+207
keypresses or to remap keypresses being sent to the underlying spice or vnc widget Signed-off-by: Stephen Thom <sthom@williamhill.co.uk>
2020-05-22gitlab: introduce CI jobs for building on multiple distrosDaniel P. Berrangé13-3/+1005
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-05-22gitlab: convert to use the common DCO check imageDaniel P. Berrangé2-110/+15
Instead of building our own DCO check image, just reuse the common image provided by the libvirt-ci project. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-05-19fix handling of enter/leave events in full screen revealerDaniel P. Berrangé1-20/+21
The current code is using a single event handler for leave/enter and looking at the mouse coordinates to decide whether it entered or left the widget. This logic is completely broken when the window is mimimized, because the mouse coordinates of the leave event are still within the window boundary. Switch to just have a separate handler for enter/leave events and stop looking at mouse coordinates entirely. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-05-19ovirt: Do not filter out DATA storage domainsEduardo Lima (Etrunko)1-2/+2
Since ovirt 4.2 it is acceptable to have ISO images in storage domains of DATA type, while the usage of ISO type is about to be deprecated. The code now allow both types of storage domains when looking up for ISO images. https://access.redhat.com/documentation/en-us/red_hat_virtualization/4.2/html/release_notes/deprecated_features_rhv https://access.redhat.com/documentation/en-us/red_hat_virtualization/4.4-beta/html/release_notes/deprecated_features_rhv Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1835640 Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2020-05-07Add minimize button to toolbarJames Le Cuirot1-0/+14
Signed-off-by: James Le Cuirot <chewi@gentoo.org>
2020-05-01Update NEWS for 9.0 releaseDaniel P. Berrangé1-0/+17
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-04-09README: prefer https over httpJán Tomko1-3/+3
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2020-04-03gitlab: introduce minimal CI job for checking DCO signoffDaniel P. Berrangé2-0/+116
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-04-03docs: update to point users to gitlab.com projectDaniel P. Berrangé10-23/+18
The project primary git repo has moved from pagure.io to gitlab.com/virt-viewer/virt-viewer. We want users to submit code contributions, bug reports and support questions to the gitlab project, not the mailing list, nor bugzilla, nor the virt-manager.org site. We're still using virt-manager.org for hosting downloads of source and pagure.io for MSIs, but we'll aim to change that too. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-04-03Fix potential file descriptor leaks found by Coverity.Julien Ropé1-2/+9
The error code returned by virt_viewer_session_open_fd() and virt_viewer_session_channel_open_fd() were not checked. The file descriptor passed to them could then be left opened even if the function failed, causing a leak of resources. This was reported by a Coverity scan, logged under https://bugzilla.redhat.com/show_bug.cgi?id=1655792 Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Signed-off-by: Julien Ropé <jrope@redhat.com>
2020-02-19remote-viewer: add a default extension to screenshot filenamesJulien ROPE1-0/+8
When doing a screenshot, if the user provides a filename without a file extension, an error occurs because the image format could not be determined. This patch adds a .png extension to such filenames, so that there is a default file format for screenshots. Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1752514 Reviewed-by: Victor Toso <victortoso@redhat.com> Signed-off-by: Julien Ropé <jrope@redhat.com>
2020-02-07Remember monitor mapping on close.Julien Ropé1-0/+120
When the application is stopped, if the windows are in fullscreen, their position on the client will be remembered. This change uses the existing option 'monitor-mapping' in the settings file to save the position and reuse it on next launch. This implements part of the requirement from https://bugzilla.redhat.com/show_bug.cgi?id=1179070 NOTE: this feature is effective only with GTK >= 3.22 Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Signed-off-by: Julien Ropé <jrope@redhat.com>
2020-01-17remote-viewer: add handler for SIGINT signalFrancesco Giudici1-0/+25
When remote-viewer is started from terminal, CTRL-C sends a SIGINT signal to the program causing immediate termination. On linux clients usb redirected devices are left without any kernel driver attached, causing them to appear as no more available to the host. Add a SIGINT handler to allow a clean exit, in particular to allow the kernel to attach back the host driver. The issue is present on linux only. To perform usb device redirection, virt-viewer leverages spice-gtk library, which in turn relies on usbredir library, which uses libusb. In order to take control of the usb device the auto-loaded kernel driver must be detached. This is achieved (in the very end) with libusb_detach_kernel_driver(). Then the device interfaces can be claimed with libusb_claim_interface() and get in control to the application. During normal application termination, the usb channel is teared down, performing a reset of the usb device and giving back the control of the device to the kernel (libusb_attach_kernel_driver()). If the application quits without doing this, the device interfaces will end up with no driver attached, making them not usable in the host system. Note that enabling libusb_set_auto_detach_kernel_driver() does not solve the issue, as this is just a convenient API from libusb: libusb will take care of detaching/attaching the driver to the interfaces of the usb device each time a call to libusb_release_interface() and libusb_claim_interface() is performed. An unexpected quit of the application will skip the libusb_release_interface() call too, leaving the interfaces without any driver attached. Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1713311 Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Signed-off-by: Francesco Giudici <fgiudici@redhat.com>
2019-12-16po: refresh translations from zanataDaniel P. Berrangé95-441/+1026
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-11remote-viewer: Prefer ca-cert from display instead of proxyEduardo Lima (Etrunko)1-2/+10
Since oVirt engine version 4.3.2.1, the API returns certificate data for display connection in the VM XML, so users do not need to specify it from the command line anymore. The certificate obtained from the XML gets precedence over the one from the command line, which is still kept to keep compatibility of older versions of oVirt. Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1402909 Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-10-04remote-viewer: fix free on dangling pointerVictor Toso1-7/+3
On remote_viewer_session_connected() we are passing a dup of URI of connection and freeing it afterwards. Problem is, we don't disconnect from listening "session-connected" and on an eventual second emission of this signal, remote-viewer crashes as seen in the backtrace below. This can happen over switch-host migration message from SpiceMainChannel. A fix trying to use VirtViewerApp URI avoid the crash but introduces regression while running remote-viewer with ovirt so, keeping the changes to a minimum to avoid it, just use g_intern_string() for now. Found it while improving migrate.py from spice/tests (server): | Invalid free() / delete / delete[] / realloc() | at 0x4839A0C: free (vg_replace_malloc.c:540) | by 0x56EBD8C: g_free (in /usr/lib64/libglib-2.0.so.0.6000.6) | by 0x11DED0: remote_viewer_session_connected (remote-viewer.c:658) | by 0x564D741: g_closure_invoke (in /usr/lib64/libgobject-2.0.so.0.6000.6) | by 0x56614F3: ??? (in /usr/lib64/libgobject-2.0.so.0.6000.6) | by 0x566A34D: g_signal_emit_valist (in /usr/lib64/libgobject-2.0.so.0.6000.6) | by 0x566AF68: g_signal_emit_by_name (in /usr/lib64/libgobject-2.0.so.0.6000.6) | by 0x135E5D: virt_viewer_session_spice_main_channel_event (virt-viewer-session-spice.c:699) | by 0x564D741: g_closure_invoke (in /usr/lib64/libgobject-2.0.so.0.6000.6) | by 0x56614F3: ??? (in /usr/lib64/libgobject-2.0.so.0.6000.6) | by 0x566A34D: g_signal_emit_valist (in /usr/lib64/libgobject-2.0.so.0.6000.6) | by 0x53149E3: emit_main_context (gio-coroutine.c:198) | Address 0x18f1ecc0 is 0 bytes inside a block of size 23 free'd | at 0x4839A0C: free (vg_replace_malloc.c:540) | by 0x56EBD8C: g_free (in /usr/lib64/libglib-2.0.so.0.6000.6) | by 0x11DED0: remote_viewer_session_connected (remote-viewer.c:658) | by 0x564D741: g_closure_invoke (in /usr/lib64/libgobject-2.0.so.0.6000.6) | by 0x56614F3: ??? (in /usr/lib64/libgobject-2.0.so.0.6000.6) | by 0x566A34D: g_signal_emit_valist (in /usr/lib64/libgobject-2.0.so.0.6000.6) | by 0x566AF68: g_signal_emit_by_name (in /usr/lib64/libgobject-2.0.so.0.6000.6) | by 0x135E5D: virt_viewer_session_spice_main_channel_event (virt-viewer-session-spice.c:699) | by 0x564D741: g_closure_invoke (in /usr/lib64/libgobject-2.0.so.0.6000.6) | by 0x56614F3: ??? (in /usr/lib64/libgobject-2.0.so.0.6000.6) | by 0x566A34D: g_signal_emit_valist (in /usr/lib64/libgobject-2.0.so.0.6000.6) | by 0x53149E3: emit_main_context (gio-coroutine.c:198) | Block was alloc'd at | at 0x483880B: malloc (vg_replace_malloc.c:309) | by 0x56EBC98: g_malloc (in /usr/lib64/libglib-2.0.so.0.6000.6) | by 0x5705C43: g_strdup (in /usr/lib64/libglib-2.0.so.0.6000.6) | by 0x11EB80: remote_viewer_initial_connect (remote-viewer.c:696) | by 0x11EB80: remote_viewer_start (remote-viewer.c:790) | by 0x1250D3: virt_viewer_app_start (virt-viewer-app.c:1727) | by 0x127108: virt_viewer_app_on_application_startup (virt-viewer-app.c:1870) | by 0x564D741: g_closure_invoke (in /usr/lib64/libgobject-2.0.so.0.6000.6) | by 0x5661638: ??? (in /usr/lib64/libgobject-2.0.so.0.6000.6) | by 0x566A34D: g_signal_emit_valist (in /usr/lib64/libgobject-2.0.so.0.6000.6) | by 0x566A972: g_signal_emit (in /usr/lib64/libgobject-2.0.so.0.6000.6) | by 0x553ECA1: g_application_register (in /usr/lib64/libgio-2.0.so.0.6000.6) | by 0x553F41D: g_application_run (in /usr/lib64/libgio-2.0.so.0.6000.6) Signed-off-by: Victor Toso <victortoso@redhat.com> Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-08-30ovirt-foreign-menu: Plug memory leakEduardo Lima (Etrunko)1-1/+4
Error caught by valgrind, the OvirtCollection object created in function ovirt_foreign_menu_fetch_vm_async() was never freed. 433 (40 direct, 393 indirect) bytes in 1 blocks are definitely lost in loss record 16,708 of 17,677 at 0x5868FDF: g_type_create_instance (in /usr/lib64/libgobject-2.0.so.0.6000.6) by 0x584B42C: ??? (in /usr/lib64/libgobject-2.0.so.0.6000.6) by 0x584D347: g_object_new_valist (in /usr/lib64/libgobject-2.0.so.0.6000.6) by 0x584D69C: g_object_new (in /usr/lib64/libgobject-2.0.so.0.6000.6) by 0x558E823: ovirt_collection_new (ovirt-collection.c:304) by 0x558E98C: ovirt_sub_collection_new_from_resource_search (ovirt-collection.c:375) by 0x42D510: ovirt_foreign_menu_fetch_vm_async (ovirt-foreign-menu.c:994) by 0x42D510: ovirt_foreign_menu_next_async_step (ovirt-foreign-menu.c:316) by 0x42D70D: api_fetched_cb (ovirt-foreign-menu.c:1025) by 0x570BC19: ??? (in /usr/lib64/libgio-2.0.so.0.6000.6) by 0x570C7EC: ??? (in /usr/lib64/libgio-2.0.so.0.6000.6) by 0x559005D: call_async_cb (ovirt-proxy.c:279) by 0x55B5A07: ??? (in /usr/lib64/librest-0.7.so.0.0.0) Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com> Acked-by: Victor Toso <victortoso@redhat.com>
2019-08-26ovirt-foreign-menu: Factor out code to set file collectionEduardo Lima (Etrunko)1-8/+17
Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com> Acked-by: Victor Toso <victortoso@redhat.com>
2019-08-21ovirt-foreign-menu: Only set domain_valid onceEduardo Lima (Etrunko)1-2/+5
In the case of having a valid storage domain without any ISO files, this variable can be reset to FALSE again in the next iteration of the loop, resulting in a misleading error message presented to the user. Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com> Acked-by: Victor Toso <victortoso@redhat.com>
2019-08-15ovirt-foreign-menu: Fix warnings on RawhideFabiano Fidêncio1-2/+2
gmaovirt-foreign-menu.c: In function 'storage_domains_fetched_cb': ovirt-foreign-menu.c:721:9: error: format not a string literal and no format arguments [-Werror=format-security] 721 | g_debug(msg); | ^~~~~~~ ovirt-foreign-menu.c:722:9: error: format not a string literal and no format arguments [-Werror=format-security] 722 | g_task_return_new_error(task, OVIRT_ERROR, OVIRT_ERROR_FAILED, msg); | ^~~~~~~~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors gmake[3]: *** [Makefile:963: libvirt_viewer_la-ovirt-foreign-menu.lo] Error 1 gmake[2]: *** [Makefile:647: all] Error 2 gmake[1]: *** [Makefile:482: all-recursive] Error 1 make: *** [Makefile:410: all] Error 2 error: Bad exit status from /var/tmp/rpm-tmp.f14Lmj (%build) Errors have been caught by https://ci.centos.org/job/virt-viewer-rpm/systems=libvirt-fedora-rawhide/589/ Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com> Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-08-12ovirt-foreign-menu: Fix endpoint for storage domains queryEduardo Lima (Etrunko)1-6/+20
Instead of fetching toplevel REST API query, we use the one relative from the data center, which returns more detailed information, especially the status of the storage domain. This fixes https://bugzilla.redhat.com/show_bug.cgi?id=1427467 Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com> Acked-by: Victor Toso <victortoso@redhat.com>
2019-08-08virt-viewer-file-transfer-dialog: improve error messageKevin Pouget1-4/+22
This patch improves the error shown to the user when a file transfer fails. The previous behavior was to create a simple message dialog box, with the error description and the full list of the files that failed to be transferred. When the list of files was long, the dialog box would grow bigger than the screen. Now, the file list is inserted inside a scrollable widget, whose height is limited to 170px. NB: these two calls would be more adapted, but they require GTK >= 3.22: > gtk_scrolled_window_set_max_content_height(GTK_SCROLLED_WINDOW(scrolled_window), 170); > gtk_scrolled_window_set_propagate_natural_height(GTK_SCROLLED_WINDOW(scrolled_window), TRUE); Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1496356 Signed-off-by: Kevin Pouget <kpouget@redhat.com> Acked-by: Victor Toso <victortoso@redhat.com>
2019-06-19Introduce bash completionMichal Privoznik6-2/+235
With this change one can get list of domains on the command line: $ virt-viewer -c qemu:///system <TAB><TAB> dom1 dom2 ... domN The list of domains is fetched using virsh, hence the dependency on libvirt-client recorded in the spec file. I think it's fair to assume that Linux hosts with virt-viewer will have virsh available too. If they don't, nothing breaks and no error message is printed. The completer script is inspired by libvirt. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Fabiano Fidêncio <fidencio@redhat.com> Reviewed-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-05-31configure: Fix check for govirt functionsEduardo Lima (Etrunko)1-2/+2
Use saved CFLAGS and LIBS to avoid errors in the check programs. Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com> Acked-by: Victor Toso <victortoso@redhat.com>
2019-05-28virt-viewer add translatable stringPavel Moseev1-1/+1
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-04-16Fix a regression when initial connection failsJonathon Jongsma1-9/+10
Due to changes in commit 65ef66e4, when the initial connection fails, virt-viewer just sat quietly and didn't indicate what was wrong. It also did not exit as it did before. This is because we were using virt_viewer_session_spice_channel_destroy() incorrectly. This function was intended to be a callback that is called to clean up the VV session when the SpiceSession tells us that a channel has been destroyed. It does not actually destroy the channel, it only cleans up references to that channel within virt-viewer. After calling this function, the channel is not affected in any way. If the channel object was valid before calling the function, it will be valid and unchanged after calling the function as well. The problem is that before commit 65ef66e4, this function (_channel_destroy()) also had a side-effect of emitting a signal that made us think that the SpiceSession was disconnected when it was not. The application responded to this signal by exiting even though the session was not properly disconnected and cleaned up. We now no longer exit the application until the SpiceSession is properly disconnected and cleaned up. So we need to make sure that this happens when our initial connection fails. Therefore, when the main channel receives an error channel-event, we should not call virt_viewer_session_spice_channel_destroy(). This function should only be called when a channel has actually been destroyed, and the channel is not destroyed at this point. We should instead explicitly disconnect the session, which will result in the channels being destroyed properly. After the session destroys all of the channels, the 'channel-destroy' signal will be emitted by SpiceSession, so the _channel_destroy() function will eventually get called by the signal handler. To make the proper use of the function more obvious, I also changed the function name from _channel_destroy() to _channel_destroyed() and added a comment. Fixes: rhbz#1666869 Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com> Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-03-15Mark PrintScreen as translatableChristophe Fergeau1-1/+1
It's for example ImprÉcran on French keyboards. Signed-off-by: Christophe Fergeau <cfergeau@redhat.com> https://bugzilla.redhat.com/show_bug.cgi?id=1510411 Fabiano Fidêncio <fidencio@redhat.com>
2019-03-12po: refresh translations from zanataDaniel P. Berrangé95-390/+1520
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-03-12po: minimize uk ur vi wba yo zh_CN zh_HK zh_TW zuDaniel P. Berrangé17-7632/+1471
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-03-12po: minimize sq sr@latin sr sv ta te tg th tr twDaniel P. Berrangé19-8494/+1235
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-03-12po: minimize or pa pl pt_BR pt ro ru si sk slDaniel P. Berrangé17-8143/+1909
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-03-12po: minimize mn mr ms nb nds ne nl nn nsoDaniel P. Berrangé18-7812/+841
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-03-12po: minimize kw_GB kw@kkcor kw kw@uccor ky lt lv mai mk mlDaniel P. Berrangé19-8518/+348
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-03-12po: minimize id ilo is it ja ka kk km kn koDaniel P. Berrangé18-8310/+1433
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-03-12po: minimize fr gl gu he hi hr hu iaDaniel P. Berrangé14-6596/+1302
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-03-12po: minimize de_CH de el en_GB eo es et eu fa fiDaniel P. Berrangé18-8262/+947
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-03-12po: minimize bn_IN bn bo br brx bs ca cs cy daDaniel P. Berrangé19-8537/+1273
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>