aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019, 2021 Leo Famulari <leo@famulari.name>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix 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 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix 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 GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu packages rsync)
  #:use-module (gnu packages)
  #:use-module (gnu packages acl)
  #:use-module (gnu packages base)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages digest)
  #:use-module (gnu packages perl)
  #:use-module (gnu packages popt)
  #:use-module (gnu packages tls)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix git-download)
  #:use-module (guix build-system cmake)
  #:use-module (guix build-system gnu))

(define-public rsync
  (package
   (name "rsync")
   (version "3.3.0")
   (source (origin
            (method url-fetch)
            (uri (string-append "https://rsync.samba.org/ftp/rsync/src/rsync-"
                                version ".tar.gz"))
            (sha256
             (base32
              "146z85qd16446k8hzr9n4fzf0fzjjsg22qralxwdcclcf2kfk6bk"))))
   (build-system gnu-build-system)
   (arguments
    `(#:configure-flags
      ;; The bundled copies are preferred by default.
      (list "--without-included-zlib"
            "--without-included-popt")))
   (native-inputs
    (list perl))
   (inputs
    (list acl
          lz4
          openssl
          popt
          xxhash
          zlib
          `(,zstd "lib")))
   (synopsis "Remote (and local) file copying tool")
   (description
    "Rsync is a fast and versatile file copying tool.  It can copy locally,
to/from another host over any remote shell, or to/from a remote rsync daemon.
Its delta-transfer algorithm reduces the amount of data sent over the network
by sending only the differences between the source files and the existing
files in the destination.")
   (license license:gpl3+)
   (home-page "https://rsync.samba.org/")))

(define-public librsync
  (package
    (name "librsync")
    (version "2.3.2")
       (source (origin
            (method git-fetch)
            (uri (git-reference
                   (url "https://github.com/librsync/librsync")
                   (commit (string-append "v" version))))
            (file-name (git-file-name name version))
            (sha256
             (base32
              "0bn29npmbw26akc6y54661irpdh6qcivcs6q48cgp3llklhhxp0q"))))
   (build-system cmake-build-system)
   (inputs
    (list popt))
   (native-inputs
    (list which perl))
   (home-page "https://librsync.sourceforge.net/")
   (synopsis "Implementation of the rsync remote-delta algorithm")
   (description
    "Librsync is a free software library that implements the rsync
remote-delta algorithm.  This algorithm allows efficient remote updates of a
file, without requiring the old and new versions to both be present at the
sending end.  The library uses a \"streaming\" design similar to that of zlib
with the aim of allowing it to be embedded into many different applications.")
   (license license:lgpl2.1+)))

(define-public librsync-0.9
  (package
    (inherit librsync)
    (version "0.9.7")
        (source (origin
             (method url-fetch)
            (uri (string-append "mirror://sourceforge/librsync/librsync/"
                                version "/librsync-" version ".tar.gz"))
             (sha256
              (base32
              "1mj1pj99mgf1a59q9f2mxjli2fzxpnf55233pc1klxk2arhf8cv6"))))
    (build-system gnu-build-system)
    (arguments '(#:configure-flags '("--enable-shared")))
    (inputs '())))
/>
2 files changed, 48 insertions, 10 deletions
diff --git a/html/display-panel.html b/html/display-panel.html
index 9b6d619..d8d7f5d 100644
--- a/html/display-panel.html
+++ b/html/display-panel.html
@@ -21,6 +21,14 @@
display: none;
}
+ .show_hide_next2:not(:checked)+* {
+ display: none;
+ }
+
+ .show_hide_next2:checked+*+* {
+ display: none;
+ }
+
.hide {
display: none;
}
@@ -34,10 +42,6 @@
#container_for_injected>#none_injected:not(:last-child) {
display: none;
}
-
- input#connected_chbx:checked+div+h3 {
- display: none;
- }
</style>
</head>
<body>
@@ -65,12 +69,19 @@
</label>
<ul id="possible_patterns"></ul>
- <input id="connected_chbx" type="checkbox" class="show_next"></input>
+ <input id="connected_chbx" type="checkbox" class="show_hide_next2"></input>
<div>
<h3>
Matched pattern: <span id="pattern">...</span>
<button id="view_pattern" class="hide">
- View in settings
+ View in settings
+ </button>
+ <input id="query_started_chbx" type="checkbox" class="show_hide_next2"></input>
+ <div id="container_for_repo_responses">
+ <h3>Queried from repositories</h3>
+ </div>
+ <button id="query_pattern">
+ Search for matching patterns
</button>
</h3>
<h3>
diff --git a/html/display-panel.js b/html/display-panel.js
index 650c234..1693182 100644
--- a/html/display-panel.js
+++ b/html/display-panel.js
@@ -144,6 +144,7 @@ function handle_page_info(message)
}
const connected_chbx = by_id("connected_chbx");
+const query_pattern_but = by_id("query_pattern");
function try_to_connect(tab_id)
{
@@ -151,21 +152,35 @@ function try_to_connect(tab_id)
const connect_info = {name: CONNECTION_TYPE.ACTIVITY_INFO, frameId: 0};
const port = browser.tabs.connect(tab_id, connect_info);
- port.onDisconnect.addListener(port => handle_disconnect(tab_id));
+ const button_cb = (e) => start_querying_repos(port);
+
+ port.onDisconnect.addListener(port => handle_disconnect(tab_id, button_cb));
port.onMessage.addListener(handle_activity_report);
+ query_pattern_but.addEventListener("click", button_cb);
+
if (is_mozilla)
setTimeout(() => monitor_connecting(port, tab_id), 1000);
}
+const query_started_chbx = by_id("query_started_chbx");
+
+function start_querying_repos(port)
+{
+ port.postMessage("dummy (trigger repo querying)");
+ query_started_chbx.checked = true;
+}
+
const loading_chbx = by_id("loading_chbx");
-function handle_disconnect(tab_id)
+function handle_disconnect(tab_id, button_cb)
{
+ query_pattern_but.removeEventListener("click", button_cb);
+
if (is_chrome && !browser.runtime.lastError)
return;
- /* return if there was no connection initialization failure */
+ /* return if error was not during connection initialization */
if (connected_chbx.checked)
return;
@@ -189,6 +204,7 @@ const blocked_span = by_id("blocked");
const payload_span = by_id("payload");
const view_payload_but = by_id("view_payload");
const container_for_injected = by_id("container_for_injected");
+const container_for_repo_responses = by_id("container_for_repo_responses");
function handle_activity_report(message)
{
@@ -197,7 +213,7 @@ function handle_activity_report(message)
const [type, data] = message;
if (type === "settings") {
- let [pattern, settings] = data;
+ let [pattern, settings, repos] = data;
settings = settings || {};
blocked_span.textContent = settings.allow ? "no" : "yes";
@@ -231,6 +247,17 @@ function handle_activity_report(message)
container_for_injected.appendChild(h4);
container_for_injected.appendChild(pre);
}
+ if (type === "repo_query_result") {
+ const [repo_url, response_text] = data;
+
+ const h4 = document.createElement("h4");
+ const pre = document.createElement("pre");
+ h4.textContent = repo_url;
+ pre.textContent = response_text;
+
+ container_for_repo_responses.appendChild(h4);
+ container_for_repo_responses.appendChild(pre);
+ }
}
by_id("settings_but")