summary refs log tree commit diff
path: root/gnu/packages/ftp.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/ftp.scm')
-rw-r--r--gnu/packages/ftp.scm139
1 files changed, 55 insertions, 84 deletions
diff --git a/gnu/packages/ftp.scm b/gnu/packages/ftp.scm
index 880eaee9f6..81dc58dadc 100644
--- a/gnu/packages/ftp.scm
+++ b/gnu/packages/ftp.scm
@@ -26,10 +26,10 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix download)
   #:use-module (guix packages)
+  #:use-module (guix utils)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages check)
-  #:use-module (gnu packages cpio)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gcc)
@@ -176,14 +176,14 @@ as required.")
 (define-public libfilezilla
   (package
     (name "libfilezilla")
-    (version "0.28.0")
+    (version "0.30.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://download.filezilla-project.org/"
                            "libfilezilla/libfilezilla-" version ".tar.bz2"))
        (sha256
-        (base32 "0f0n0kkhclp387glmc758134z4l0qk8935mi523q60b11q3j3h77"))))
+        (base32 "0h6wa1dfd14z9ai00a85pahsb4fs3rlb8haiw3vd9pmjrpdgcvf1"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -220,14 +220,14 @@ output.
 (define-public filezilla
   (package
     (name "filezilla")
-    (version "3.54.1")
+    (version "3.55.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://download.filezilla-project.org/client/"
                            "FileZilla_" version "_src.tar.bz2"))
        (sha256
-        (base32 "0smayigsk8hjplk7pm6dd80r1dnhr4f6xzp3n1p1ss5v2ff1jfkh"))))
+        (base32 "10lwmf6cvryw2gja6vj1zh2y55z4i38wsvxdpclvwdnih10ynw5f"))))
     (build-system gnu-build-system)
     (arguments
       ;; Don't let filezilla phone home to check for updates.
@@ -258,82 +258,53 @@ directory comparison and more.")
     (properties '((upstream-name . "FileZilla")))))
 
 (define-public vsftpd
-  ;; Use a significantly patched CentOS variant with TLSv1.2 support and
-  ;; further bug and security fixes.
-  (let ((upstream-version "3.0.3")
-        (centos-version "8.3.2011")
-        (revision "32.el8"))
-    (package
-      (name "vsftpd")
-      (version (string-append upstream-version "-" revision))
-      (source
-       (origin
-         (method url-fetch)
-         (uri (string-append
-               "https://vault.centos.org/centos/" centos-version
-               "/AppStream/Source/SPackages/vsftpd-" upstream-version "-"
-               revision ".src.rpm"))
-         (sha256
-          (base32 "1xl0kqcismf82hl99klqbvvpylpyk1yr1qjy5hd8f80cj4lyl0f4"))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:make-flags '("LDFLAGS=-lcrypt -lssl -pie")
-         #:tests? #f                    ; no tests exist
-         #:phases
-         (modify-phases %standard-phases
-           (replace 'unpack
-             (lambda* (#:key source #:allow-other-keys)
-               (invoke "7z" "e" source "-ocpio")
-               (invoke "cpio" "-idmv"
-                       (string-append "--file=cpio/vsftpd-"
-                                      ,upstream-version "-" ,revision
-                                      ".src.cpio"))
-               (invoke "tar" "xvf"
-                       (string-append "vsftpd-" ,upstream-version ".tar.gz"))
-               (chdir (string-append "vsftpd-" ,upstream-version))))
-           (add-after 'unpack 'apply-CentOS-patches
-             ;; Apply all patches as enumerated in vsftpd.spec, in order:
-             ;; simply using FIND-FILES would silently corrupt the result.
-             (lambda _
-               (call-with-input-file "../vsftpd.spec"
-                 (lambda (port)
-                   (use-modules (ice-9 rdelim))
-                   (let loop ()
-                     (let ((line (read-line port)))
-                       (unless (eof-object? line)
-                         (when (string-prefix? "Patch" line)
-                           (let* ((space (string-rindex line #\space))
-                                  (patch (string-drop line (+ 1 space))))
-                             (format #t "Applying '~a'.\n" patch)
-                             (invoke "patch" "-Np1"
-                                     "-i" (string-append "../" patch))))
-                         (loop))))))))
-           (add-after 'unpack 'patch-installation-directory
-             (lambda* (#:key outputs #:allow-other-keys)
-               (substitute* "Makefile"
-                 (("/usr") (assoc-ref outputs "out")))
-               #t))
-           (add-before 'install 'mkdir
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out")))
-                 (mkdir-p out)
-                 (mkdir (string-append out "/sbin"))
-                 (mkdir (string-append out "/man"))
-                 (mkdir (string-append out "/man/man5"))
-                 (mkdir (string-append out "/man/man8"))
-                 #t)))
-           (delete 'configure))))
-      (native-inputs
-       ;; Used to unpack the source RPM.
-       `(("p7zip" ,p7zip)
-         ("cpio" ,cpio)))
-      (inputs
-       `(("libcap" ,libcap)
-         ("linux-pam" ,linux-pam)
-         ("openssl" ,openssl)))
-      (home-page "https://security.appspot.com/vsftpd.html")
-      (synopsis "Share files securely over FTP or FTPS")
-      (description "@command{vsftpd} is a daemon that listens on a TCP socket
-for clients and gives them access to local files via File Transfer
-Protocol.")
-      (license gpl2))))
+  (package
+    (name "vsftpd")
+    (version "3.0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://security.appspot.com/downloads/"
+                           "vsftpd-" version ".tar.gz"))
+       (sha256
+        (base32 "09kap2qsd80m0x80jv5224x002x2jkr584dksppcv9p84yyj353b"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags
+       (list (string-append "CC=" ,(cc-for-target))
+             ;; vsf_findlibs.sh looks only for hard-coded {/usr,}/lib file names
+             ;; that will never exist on Guix.  Manage libraries ourselves.
+             "LDFLAGS=-lcap -lpam"
+             "INSTALL=install -D")
+       #:tests? #f                      ; no test suite
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'build-SSL
+           (lambda _
+             (substitute* "builddefs.h"
+               (("#undef (VSF_BUILD_SSL)" _ symbol)
+                (string-append "#define " symbol)))))
+         (add-after 'unpack 'append-make-flags
+           (lambda _
+             (substitute* "Makefile"
+               (("(CFLAGS|LDFLAGS)[[:blank:]]*=" _ variable)
+                (format #f "UPSTREAM_~a +=" variable))
+               (("\\$\\((CFLAGS|LDFLAGS)\\)" _ variable)
+                (format #f "$(UPSTREAM_~a) $(~@*~a)" variable)))))
+         (add-after 'unpack 'patch-installation-directory
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "Makefile"
+               (("/usr") (assoc-ref outputs "out")))))
+         (delete 'configure))))         ; no configure script
+    (inputs
+     `(("libcap" ,libcap)
+       ("linux-pam" ,linux-pam)
+       ("openssl" ,openssl)))
+    (synopsis "Small FTP server with a focus on security")
+    (description
+     "The Very Secure File Transfer Protocol Daemon or @command{vsftpd} is a
+server that listens on a TCP socket for clients and gives them access to local
+files via @acronym{FTP, the File Transfer Protocol}.  Security is a goal; not a
+guarantee.")
+    (home-page "https://security.appspot.com/vsftpd.html")
+    (license gpl2)))                    ; with OpenSSL exception