gnu: libfilezilla: Update to 0.39.2.
[jackhill/guix/guix.git] / gnu / packages / ftp.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2014, 2015, 2018, 2021, 2021 Ludovic Courtès <ludo@gnu.org>
3 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
4 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
5 ;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
6 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
7 ;;; Copyright © 2021 David Larsson <david.larsson@selfhosted.xyz>
8 ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
9 ;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
10 ;;;
11 ;;; This file is part of GNU Guix.
12 ;;;
13 ;;; GNU Guix is free software; you can redistribute it and/or modify it
14 ;;; under the terms of the GNU General Public License as published by
15 ;;; the Free Software Foundation; either version 3 of the License, or (at
16 ;;; your option) any later version.
17 ;;;
18 ;;; GNU Guix is distributed in the hope that it will be useful, but
19 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
20 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 ;;; GNU General Public License for more details.
22 ;;;
23 ;;; You should have received a copy of the GNU General Public License
24 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
25
26 (define-module (gnu packages ftp)
27 #:use-module ((guix licenses) #:select (gpl2 gpl2+ gpl3+ clarified-artistic))
28 #:use-module (guix build-system gnu)
29 #:use-module (guix download)
30 #:use-module (guix packages)
31 #:use-module (guix utils)
32 #:use-module (gnu packages)
33 #:use-module (gnu packages autotools)
34 #:use-module (gnu packages check)
35 #:use-module (gnu packages compression)
36 #:use-module (gnu packages freedesktop)
37 #:use-module (gnu packages gettext)
38 #:use-module (gnu packages glib)
39 #:use-module (gnu packages gtk)
40 #:use-module (gnu packages libidn)
41 #:use-module (gnu packages linux)
42 #:use-module (gnu packages ncurses)
43 #:use-module (gnu packages nettle)
44 #:use-module (gnu packages pkg-config)
45 #:use-module (gnu packages readline)
46 #:use-module (gnu packages sqlite)
47 #:use-module (gnu packages tls)
48 #:use-module (gnu packages wxwidgets)
49 #:use-module (gnu packages xml))
50
51 (define-public lftp
52 (package
53 (name "lftp")
54 (version "4.9.2")
55 (source (origin
56 (method url-fetch)
57 ;; See https://lftp.tech/get.html for mirrors.
58 (uri (list (string-append "https://lftp.tech/ftp/lftp-"
59 version ".tar.xz")
60 (string-append "https://lftp.tech/ftp/old/lftp-"
61 version ".tar.xz")
62 (string-append "ftp://ftp.st.ryukoku.ac.jp/pub/network/"
63 "ftp/lftp/lftp-" version ".tar.xz")))
64 (sha256
65 (base32
66 "03b7y0h3mf4jfq5y8zw6hv9v44z3n6i8hc1iswax96y3z7sc85y5"))))
67 (build-system gnu-build-system)
68 (native-inputs
69 (list pkg-config))
70 (inputs
71 (list zlib readline gnutls))
72 (arguments
73 `(#:phases
74 (modify-phases %standard-phases
75 ;; Disable tests that require network access, which is most of them.
76 (add-before 'check 'disable-impure-tests
77 (lambda _
78 (substitute* "tests/Makefile"
79 (("(ftp-cls-l|ftp-list|http-get)\\$\\(EXEEXT\\)") "")
80 (("lftp-https-get ") ""))
81 #t)))
82 #:configure-flags
83 (list (string-append "--with-readline="
84 (assoc-ref %build-inputs "readline")))))
85 (home-page "https://lftp.tech/")
86 (synopsis "Command-line file transfer program")
87 (description
88 "LFTP is a sophisticated FTP/HTTP client, and a file transfer program
89 supporting a number of network protocols. Like Bash, it has job control and
90 uses the Readline library for input. It has bookmarks, a built-in mirror
91 command, and can transfer several files in parallel. It was designed with
92 reliability in mind.")
93 (license gpl3+)))
94
95 (define-public ncftp
96 (package
97 (name "ncftp")
98 (version "3.2.6")
99 (source (origin
100 (method url-fetch)
101 (uri (string-append "ftp://ftp.ncftp.com/ncftp/ncftp-"
102 version "-src.tar.xz"))
103 (sha256
104 (base32
105 "1389657cwgw5a3kljnqmhvfh4vr2gcr71dwz1mlhf22xq23hc82z"))
106 (patches
107 (search-patches
108 "ncftp-reproducible.patch"))
109 (modules '((guix build utils)))
110 (snippet
111 '(begin
112 ;; Use the right 'rm' and 'ls'.
113 (substitute* (cons "configure"
114 (find-files "."
115 "^(Makefile\\.in|.*\\.sh)$"))
116 (("/bin/(rm|ls)" _ command)
117 command))
118
119 ;; This is free software, avoid any confusion.
120 (substitute* (find-files "." "\\.c$")
121 (("a freeware program")
122 "free software"))
123 #t))))
124 (properties
125 `((release-monitoring-url . "https://www.ncftp.com/download/")))
126 (build-system gnu-build-system)
127 (arguments
128 '(#:phases
129 (modify-phases %standard-phases
130 (replace 'configure
131 (lambda* (#:key outputs #:allow-other-keys)
132 ;; This is an old 'configure' script that doesn't
133 ;; understand variables passed as arguments.
134 (let ((out (assoc-ref outputs "out")))
135 (setenv "CONFIG_SHELL" (which "sh"))
136 (setenv "SHELL" (which "sh"))
137 (setenv "CFLAGS" "-fcommon")
138 (invoke "./configure"
139 (string-append "--prefix=" out))))))
140 #:tests? #f)) ;there are no tests
141 (inputs (list ncurses))
142 (home-page "https://www.ncftp.com/ncftp/")
143 (synopsis "Command-line File Transfer Protocol (FTP) client")
144 (description
145 "NcFTP Client (or just NcFTP) is a set of command-line programs to access
146 File Transfer Protocol (FTP) servers. This includes @code{ncftp}, an interactive
147 FTP browser, as well as non-interactive commands such as @code{ncftpput} and
148 @code{ncftpget}.")
149 (license clarified-artistic)))
150
151
152 (define-public weex
153 (package
154 (name "weex")
155 (version "2.8.2")
156 (source
157 (origin
158 (method url-fetch)
159 (uri
160 (string-append "mirror://sourceforge/weex/weex/"
161 "/weex_" version ".tar.gz"))
162 (sha256
163 (base32
164 "1ir761hjncr1bamaqcw9j7x57xi3s9jax3223bxwbq30a0vsw1pd"))))
165 (build-system gnu-build-system)
166 (native-inputs
167 (list automake autoconf gettext-minimal))
168 (home-page "http://weex.sourceforge.net/")
169 (synopsis "Non-interactive client for FTP synchronization")
170 (description
171 "Weex is a utility designed to automate the task of remotely
172 maintaining a web page or other FTP archive. It synchronizes a set of
173 local files to a remote server by performing uploads and remote deletes
174 as required.")
175 (license gpl2+)))
176
177 (define-public libfilezilla
178 (package
179 (name "libfilezilla")
180 (version "0.39.2")
181 (source
182 (origin
183 (method url-fetch)
184 (uri (string-append "https://download.filezilla-project.org/"
185 "libfilezilla/libfilezilla-" version ".tar.bz2"))
186 (sha256
187 (base32 "1x2rixppmvdpn9m01hmh3yqzpczxbkw301hx27n5bfq0dbnx9aar"))))
188 (build-system gnu-build-system)
189 (arguments
190 `(#:configure-flags
191 (list "--disable-static")))
192 (native-inputs
193 (list cppunit gettext-minimal pkg-config))
194 (inputs
195 (list gnutls nettle))
196 (home-page "https://lib.filezilla-project.org")
197 (synopsis "Cross-platform C++ library used by Filezilla client")
198 (description
199 "This package provides some basic functionality to build high-performing,
200 platform-independent programs.
201
202 Some of the highlights include:
203 @itemize
204 @item
205 A type-safe, multi-threaded event system that's simple to use yet efficient.
206 @item
207 Timers for periodic events.
208 @item
209 A @code{datetime} class that not only tracks timestamp but also their accuracy,
210 which simplifies dealing with timestamps originating from different sources.
211 @item
212 Simple process handling for spawning child processes with redirected input and
213 output.
214 @end itemize\n")
215 (license gpl2+)))
216
217 (define-public filezilla
218 (package
219 (name "filezilla")
220 (version "3.60.1")
221 (source
222 (origin
223 (method url-fetch)
224 (uri (string-append "https://download.filezilla-project.org/client/"
225 "FileZilla_" version "_src.tar.bz2"))
226 (sha256
227 (base32 "1bv643abf8jai552j9fqcl4i54h1yrs5hgn6w0w1ibwccdinryc1"))))
228 (build-system gnu-build-system)
229 (arguments
230 ;; Don't let filezilla phone home to check for updates.
231 '(#:configure-flags '("--disable-autoupdatecheck")))
232 (native-inputs
233 (list cppunit gettext-minimal pkg-config xdg-utils))
234 (inputs
235 (list dbus
236 gnutls
237 gtk+
238 libfilezilla
239 libidn
240 nettle
241 pugixml
242 sqlite
243 wxwidgets))
244 (home-page "https://filezilla-project.org")
245 (synopsis "Full-featured graphical FTP/FTPS/SFTP client")
246 (description
247 "Filezilla client supports FTP, FTP over SSL/TLS (FTPS),
248 SSH File Transfer Protocol (SFTP), HTTP/1.1, SOCKS5, FTP-Proxy, IPv6
249 and others features such as bookmarks, drag and drop, filename filters,
250 directory comparison and more.")
251 (license gpl2+)
252 (properties '((upstream-name . "FileZilla")))))
253
254 (define-public vsftpd
255 (package
256 (name "vsftpd")
257 (version "3.0.5")
258 (source
259 (origin
260 (method url-fetch)
261 (uri (string-append "https://security.appspot.com/downloads/"
262 "vsftpd-" version ".tar.gz"))
263 (sha256
264 (base32 "1lwipiq8q9qzvwv6f418fbvagpz0p6v0jjplkvcsc2sb8np05di6"))))
265 (build-system gnu-build-system)
266 (arguments
267 `(#:make-flags
268 (list (string-append "CC=" ,(cc-for-target))
269 ;; vsf_findlibs.sh looks only for hard-coded {/usr,}/lib file names
270 ;; that will never exist on Guix. Manage libraries ourselves.
271 "LDFLAGS=-lcap -lpam"
272 "INSTALL=install -D")
273 #:tests? #f ; no test suite
274 #:phases
275 (modify-phases %standard-phases
276 (add-after 'unpack 'build-SSL
277 (lambda _
278 (substitute* "builddefs.h"
279 (("#undef (VSF_BUILD_SSL)" _ symbol)
280 (string-append "#define " symbol)))))
281 (add-after 'unpack 'append-make-flags
282 (lambda _
283 (substitute* "Makefile"
284 (("(CFLAGS|LDFLAGS)[[:blank:]]*=" _ variable)
285 (format #f "UPSTREAM_~a +=" variable))
286 (("\\$\\((CFLAGS|LDFLAGS)\\)" _ variable)
287 (format #f "$(UPSTREAM_~a) $(~@*~a)" variable)))))
288 (add-after 'unpack 'patch-installation-directory
289 (lambda* (#:key outputs #:allow-other-keys)
290 (substitute* "Makefile"
291 (("/usr") (assoc-ref outputs "out")))))
292 (delete 'configure)))) ; no configure script
293 (inputs
294 (list libcap linux-pam openssl))
295 (synopsis "Small FTP server with a focus on security")
296 (description
297 "The Very Secure File Transfer Protocol Daemon or @command{vsftpd} is a
298 server that listens on a TCP socket for clients and gives them access to local
299 files via @acronym{FTP, the File Transfer Protocol}. Security is a goal; not a
300 guarantee.")
301 (home-page "https://security.appspot.com/vsftpd.html")
302 (license gpl2))) ; with OpenSSL exception