Browse Source

Remove qubesd-query-fast

Since qubesd is connected directly as a socket-based qrexec service, the
qubesd-query-fast tool isn't needed anymore.
Marek Marczykowski-Górecki 4 years ago
parent
commit
61143a99a5
5 changed files with 1 additions and 127 deletions
  1. 0 2
      Makefile
  2. 0 1
      qubes-rpc/.gitignore
  3. 0 8
      qubes-rpc/Makefile
  4. 0 112
      qubes-rpc/qubesd-query-fast.c
  5. 1 4
      rpm_spec/core-dom0.spec.in

+ 0 - 2
Makefile

@@ -147,7 +147,6 @@ rpms-dom0:
 
 all:
 	$(PYTHON) setup.py build
-	$(MAKE) -C qubes-rpc all
 	# Currently supported only on xen
 
 install:
@@ -201,7 +200,6 @@ endif
 	cp qubes-rpc/qubes.NotifyTools $(DESTDIR)/etc/qubes-rpc/
 	cp qubes-rpc/qubes.NotifyUpdates $(DESTDIR)/etc/qubes-rpc/
 	cp qubes-rpc/qubes.ConnectTCP $(DESTDIR)/etc/qubes-rpc/
-	install qubes-rpc/qubesd-query-fast $(DESTDIR)/usr/libexec/qubes/
 	install -m 0755 qvm-tools/qubes-bug-report $(DESTDIR)/usr/bin/qubes-bug-report
 	install -m 0755 qvm-tools/qubes-hcl-report $(DESTDIR)/usr/bin/qubes-hcl-report
 	install -m 0755 qvm-tools/qvm-sync-clock $(DESTDIR)/usr/bin/qvm-sync-clock

+ 0 - 1
qubes-rpc/.gitignore

@@ -1,2 +1 @@
 qfile-dom0-unpacker
-qubesd-query-fast

+ 0 - 8
qubes-rpc/Makefile

@@ -1,8 +0,0 @@
-CFLAGS=-O2 -g -Wall -Werror -Wextra
-
-all: qubesd-query-fast
-
-qubesd-query-fast: qubesd-query-fast.c
-
-clean:
-	rm -f qubesd-query-fast

+ 0 - 112
qubes-rpc/qubesd-query-fast.c

@@ -1,112 +0,0 @@
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-
-
-#define QUBESD_SOCKET "/var/run/qubesd.sock"
-
-void write_wrapper(int fd, char *data, size_t len) {
-    size_t written = 0;
-    int ret;
-    while (written < len) {
-        ret = write(fd, data+written, len-written);
-        if (ret == -1) {
-            perror("write");
-            exit(1);
-        }
-        written += ret;
-    }
-}
-
-int main(int argc, char **argv) {
-    char *source_domain = getenv("QREXEC_REMOTE_DOMAIN");
-    char *target_domain = NULL;
-    char *target_domain_type = getenv("QREXEC_REQUESTED_TARGET_TYPE");
-    char *target_domain_name = getenv("QREXEC_REQUESTED_TARGET");
-    char *target_domain_keyword = getenv("QREXEC_REQUESTED_TARGET_KEYWORD");
-    char *service_name = strrchr(argv[0], '/');
-    int fd;
-    char buf[4096];
-    int read_ret;
-    struct sockaddr_un qubesd_addr = {
-        .sun_family = AF_UNIX,
-        .sun_path = QUBESD_SOCKET,
-    };
-
-    if (service_name)
-        service_name++;
-
-    if (!source_domain || !target_domain_type || !service_name || argc > 2) {
-        fprintf(stderr, "Usage: %s [service-argument]\n", argv[0]);
-        fprintf(stderr, "\n");
-        fprintf(stderr, "Expected environment variables:\n");
-        fprintf(stderr, " - QREXEC_REMOTE_DOMAIN - source domain for the call\n");
-        fprintf(stderr, " - QREXEC_REQUESTED_TARGET_TYPE - target domain for the call\n");
-        fprintf(stderr, "\n");
-        fprintf(stderr, "Additionally, this program assumes being called with desired service name as argv[0] (use symlink)\n");
-        return 1;
-    }
-
-    fd = socket(AF_UNIX, SOCK_STREAM, 0);
-    if (fd == -1) {
-        perror("socket");
-        return 1;
-    }
-
-    if (connect(fd, (struct sockaddr *)&qubesd_addr, sizeof(qubesd_addr)) == -1) {
-        perror("connect to qubesd");
-        return 1;
-    }
-
-    if (strcmp(target_domain_type, "keyword") == 0) {
-        // translate @adminvm back to dom0
-        if (strcmp(target_domain_keyword, "adminvm") == 0)
-            target_domain = "dom0";
-        else if (strcmp(target_domain_keyword, "default") == 0)
-            target_domain = "";
-        else {
-            fprintf(stderr, "Unsupported keyword: %s", target_domain_keyword);
-            return 1;
-        }
-    } else
-        target_domain = target_domain_name;
-
-    assert(target_domain);
-
-    // write parameters, including trailing zero as separator
-    write_wrapper(fd, source_domain, strlen(source_domain) + 1);
-    write_wrapper(fd, service_name, strlen(service_name) + 1);
-    write_wrapper(fd, target_domain, strlen(target_domain) + 1);
-    if (argc == 2)
-        write_wrapper(fd, argv[1], strlen(argv[1]) + 1);
-    else
-        // empty argument
-        write_wrapper(fd, "\0", 1);
-
-    // now, read from stdin and write it to qubesd
-    while ((read_ret = read(0, buf, sizeof(buf))) > 0)
-        write_wrapper(fd, buf, read_ret);
-
-    if (read_ret == -1) {
-        perror("read from stdin");
-        return 1;
-    }
-
-	// end of request, now let qubesd execute the action and return response
-    shutdown(fd, SHUT_WR);
-
-    // then, retrieve the response from qubesd and send it to stdout
-    while ((read_ret = read(fd, buf, sizeof(buf))) > 0)
-        write_wrapper(1, buf, read_ret);
-
-    if (read_ret == -1) {
-        perror("read from qubesd");
-        return 1;
-    }
-
-    return 0;
-}
-

+ 1 - 4
rpm_spec/core-dom0.spec.in

@@ -41,13 +41,11 @@ URL:		http://www.qubes-os.org
 # /bin -> usr/bin symlink). python*.rpm provides only /usr/bin/python.
 AutoReq:	no
 
-# FIXME: Enable this and disable debug_package
-#BuildArch: noarch
+BuildArch: noarch
 
 BuildRequires:  ImageMagick
 BuildRequires:	systemd-units
 BuildRequires:  systemd
-BuildRequires:  gcc
 
 BuildRequires:  python3-devel
 
@@ -364,7 +362,6 @@ fi
 /usr/lib/qubes/cleanup-dispvms
 /usr/lib/qubes/fix-dir-perms.sh
 /usr/lib/qubes/startup-misc.sh
-/usr/libexec/qubes/qubesd-query-fast
 %{_unitdir}/lvm2-pvscan@.service.d/30_qubes.conf
 %{_unitdir}/qubes-core.service
 %{_unitdir}/qubes-qmemman.service