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