]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - src/clients/forward.h
Source Format Enforcement (#1234)
[thirdparty/squid.git] / src / clients / forward.h
index d32c4612dd957f037b24f6996d30091271822f36..74799268edfd235d324388c3f06acf74bfd34fee 100644 (file)
@@ -1,6 +1,16 @@
+/*
+ * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
+ *
+ * Squid software is distributed under GPLv2+ license and includes
+ * contributions from numerous individuals and organizations.
+ * Please see the COPYING and CONTRIBUTORS files for details.
+ */
+
 #ifndef SQUID_CLIENTS_FORWARD_H
 #define SQUID_CLIENTS_FORWARD_H
 
+#include "sbuf/forward.h"
+
 class FwdState;
 class HttpRequest;
 
@@ -8,22 +18,34 @@ class AsyncJob;
 template <class Cbc> class CbcPointer;
 typedef CbcPointer<AsyncJob> AsyncJobPointer;
 
-namespace Ftp {
+namespace Http
+{
+class Tunneler;
+class TunnelerAnswer;
+}
+
+namespace Ftp
+{
 
 /// A new FTP Gateway job
-AsyncJobPointer StartGateway(FwdState *const fwdState);
+void StartGateway(FwdState *const fwdState);
 
 /// A new FTP Relay job
-AsyncJobPointer StartRelay(FwdState *const fwdState);
-
-/**
- * \defgroup ServerProtocolFTPAPI Server-Side FTP API
- * \ingroup ServerProtocol
+void StartRelay(FwdState *const fwdState);
+
+/** Construct an URI with leading / in PATH portion for use by CWD command
+ *  possibly others. FTP encodes absolute paths as beginning with '/'
+ *  after the initial URI path delimiter, which happens to be / itself.
+ *  This makes FTP absolute URI appear as:  ftp:host:port//root/path
+ *  To encompass older software which compacts multiple // to / in transit
+ *  We use standard URI-encoding on the second / making it
+ *  ftp:host:port/%2froot/path  AKA 'the FTP %2f hack'.
+ *
+ * TODO: Should be an AnyP::Uri member
  */
-
-/// \ingroup ServerProtocolFTPAPI
-const char *UrlWith2f(HttpRequest *);
+const SBuf &UrlWith2f(HttpRequest *);
 
 } // namespace Ftp
 
 #endif /* SQUID_CLIENTS_FORWARD_H */
+