xref: /aosp_15_r20/external/curl/tests/data/test1405 (revision 6236dae45794135f37c4eb022389c904c8b0090d)
1*6236dae4SAndroid Build Coastguard Worker<testcase>
2*6236dae4SAndroid Build Coastguard Worker# Derived from test227
3*6236dae4SAndroid Build Coastguard Worker<info>
4*6236dae4SAndroid Build Coastguard Worker<keywords>
5*6236dae4SAndroid Build Coastguard WorkerFTP
6*6236dae4SAndroid Build Coastguard Workerpost-quote
7*6236dae4SAndroid Build Coastguard Workerpre-quote
8*6236dae4SAndroid Build Coastguard Worker--libcurl
9*6236dae4SAndroid Build Coastguard Worker</keywords>
10*6236dae4SAndroid Build Coastguard Worker</info>
11*6236dae4SAndroid Build Coastguard Worker# Server-side
12*6236dae4SAndroid Build Coastguard Worker<reply>
13*6236dae4SAndroid Build Coastguard Worker<data>
14*6236dae4SAndroid Build Coastguard Workerdata
15*6236dae4SAndroid Build Coastguard Worker    to
16*6236dae4SAndroid Build Coastguard Worker      see
17*6236dae4SAndroid Build Coastguard Workerthat FTP
18*6236dae4SAndroid Build Coastguard Workerworks
19*6236dae4SAndroid Build Coastguard Worker  so does it?
20*6236dae4SAndroid Build Coastguard Worker</data>
21*6236dae4SAndroid Build Coastguard Worker<servercmd>
22*6236dae4SAndroid Build Coastguard WorkerREPLY EPSV 500 no such command
23*6236dae4SAndroid Build Coastguard WorkerREPLY FAIL 500 this might not be a failure!
24*6236dae4SAndroid Build Coastguard Worker</servercmd>
25*6236dae4SAndroid Build Coastguard Worker</reply>
26*6236dae4SAndroid Build Coastguard Worker
27*6236dae4SAndroid Build Coastguard Worker# Client-side
28*6236dae4SAndroid Build Coastguard Worker<client>
29*6236dae4SAndroid Build Coastguard Worker<server>
30*6236dae4SAndroid Build Coastguard Workerftp
31*6236dae4SAndroid Build Coastguard Worker</server>
32*6236dae4SAndroid Build Coastguard Worker<name>
33*6236dae4SAndroid Build Coastguard Worker--libcurl for FTP with quote ops
34*6236dae4SAndroid Build Coastguard Worker</name>
35*6236dae4SAndroid Build Coastguard Worker<setenv>
36*6236dae4SAndroid Build Coastguard WorkerSSL_CERT_FILE=
37*6236dae4SAndroid Build Coastguard Worker</setenv>
38*6236dae4SAndroid Build Coastguard Worker<command>
39*6236dae4SAndroid Build Coastguard Workerftp://%HOSTIP:%FTPPORT/%TESTNUMBER -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" --libcurl %LOGDIR/test%TESTNUMBER.c
40*6236dae4SAndroid Build Coastguard Worker</command>
41*6236dae4SAndroid Build Coastguard Worker</client>
42*6236dae4SAndroid Build Coastguard Worker
43*6236dae4SAndroid Build Coastguard Worker# Verify data after the test has been "shot"
44*6236dae4SAndroid Build Coastguard Worker<verify>
45*6236dae4SAndroid Build Coastguard Worker<strip>
46*6236dae4SAndroid Build Coastguard WorkerQUIT
47*6236dae4SAndroid Build Coastguard Worker</strip>
48*6236dae4SAndroid Build Coastguard Worker<protocol>
49*6236dae4SAndroid Build Coastguard WorkerUSER anonymous
50*6236dae4SAndroid Build Coastguard WorkerPASS [email protected]
51*6236dae4SAndroid Build Coastguard WorkerPWD
52*6236dae4SAndroid Build Coastguard WorkerNOOP 1
53*6236dae4SAndroid Build Coastguard WorkerFAIL
54*6236dae4SAndroid Build Coastguard WorkerEPSV
55*6236dae4SAndroid Build Coastguard WorkerPASV
56*6236dae4SAndroid Build Coastguard WorkerTYPE I
57*6236dae4SAndroid Build Coastguard WorkerNOOP 2
58*6236dae4SAndroid Build Coastguard WorkerFAIL HARD
59*6236dae4SAndroid Build Coastguard WorkerSIZE %TESTNUMBER
60*6236dae4SAndroid Build Coastguard WorkerRETR %TESTNUMBER
61*6236dae4SAndroid Build Coastguard WorkerNOOP 3
62*6236dae4SAndroid Build Coastguard WorkerQUIT
63*6236dae4SAndroid Build Coastguard Worker</protocol>
64*6236dae4SAndroid Build Coastguard Worker<file name="%LOGDIR/test%TESTNUMBER.c" mode="text">
65*6236dae4SAndroid Build Coastguard Worker/********* Sample code generated by the curl command line tool **********
66*6236dae4SAndroid Build Coastguard Worker * All curl_easy_setopt() options are documented at:
67*6236dae4SAndroid Build Coastguard Worker * https://curl.se/libcurl/c/curl_easy_setopt.html
68*6236dae4SAndroid Build Coastguard Worker ************************************************************************/
69*6236dae4SAndroid Build Coastguard Worker#include <curl/curl.h>
70*6236dae4SAndroid Build Coastguard Worker
71*6236dae4SAndroid Build Coastguard Workerint main(int argc, char *argv[])
72*6236dae4SAndroid Build Coastguard Worker{
73*6236dae4SAndroid Build Coastguard Worker  CURLcode ret;
74*6236dae4SAndroid Build Coastguard Worker  CURL *hnd;
75*6236dae4SAndroid Build Coastguard Worker  struct curl_slist *slist1;
76*6236dae4SAndroid Build Coastguard Worker  struct curl_slist *slist2;
77*6236dae4SAndroid Build Coastguard Worker  struct curl_slist *slist3;
78*6236dae4SAndroid Build Coastguard Worker
79*6236dae4SAndroid Build Coastguard Worker  slist1 = NULL;
80*6236dae4SAndroid Build Coastguard Worker  slist1 = curl_slist_append(slist1, "NOOP 1");
81*6236dae4SAndroid Build Coastguard Worker  slist1 = curl_slist_append(slist1, "*FAIL");
82*6236dae4SAndroid Build Coastguard Worker  slist2 = NULL;
83*6236dae4SAndroid Build Coastguard Worker  slist2 = curl_slist_append(slist2, "NOOP 3");
84*6236dae4SAndroid Build Coastguard Worker  slist3 = NULL;
85*6236dae4SAndroid Build Coastguard Worker  slist3 = curl_slist_append(slist3, "NOOP 2");
86*6236dae4SAndroid Build Coastguard Worker  slist3 = curl_slist_append(slist3, "*FAIL HARD");
87*6236dae4SAndroid Build Coastguard Worker
88*6236dae4SAndroid Build Coastguard Worker  hnd = curl_easy_init();
89*6236dae4SAndroid Build Coastguard Worker  curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
90*6236dae4SAndroid Build Coastguard Worker  curl_easy_setopt(hnd, CURLOPT_URL, "ftp://%HOSTIP:%FTPPORT/%TESTNUMBER");
91*6236dae4SAndroid Build Coastguard Worker  curl_easy_setopt(hnd, CURLOPT_QUOTE, slist1);
92*6236dae4SAndroid Build Coastguard Worker  curl_easy_setopt(hnd, CURLOPT_POSTQUOTE, slist2);
93*6236dae4SAndroid Build Coastguard Worker  curl_easy_setopt(hnd, CURLOPT_PREQUOTE, slist3);
94*6236dae4SAndroid Build Coastguard Worker  curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
95*6236dae4SAndroid Build Coastguard Worker  curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
96*6236dae4SAndroid Build Coastguard Worker  curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
97*6236dae4SAndroid Build Coastguard Worker
98*6236dae4SAndroid Build Coastguard Worker  /* Here is a list of options the curl code used that cannot get generated
99*6236dae4SAndroid Build Coastguard Worker     as source easily. You may choose to either not use them or implement
100*6236dae4SAndroid Build Coastguard Worker     them yourself.
101*6236dae4SAndroid Build Coastguard Worker
102*6236dae4SAndroid Build Coastguard Worker  CURLOPT_WRITEDATA was set to an object pointer
103*6236dae4SAndroid Build Coastguard Worker  CURLOPT_WRITEFUNCTION was set to a function pointer
104*6236dae4SAndroid Build Coastguard Worker  CURLOPT_READDATA was set to an object pointer
105*6236dae4SAndroid Build Coastguard Worker  CURLOPT_READFUNCTION was set to a function pointer
106*6236dae4SAndroid Build Coastguard Worker  CURLOPT_SEEKDATA was set to an object pointer
107*6236dae4SAndroid Build Coastguard Worker  CURLOPT_SEEKFUNCTION was set to a function pointer
108*6236dae4SAndroid Build Coastguard Worker  CURLOPT_ERRORBUFFER was set to an object pointer
109*6236dae4SAndroid Build Coastguard Worker  CURLOPT_STDERR was set to an object pointer
110*6236dae4SAndroid Build Coastguard Worker  CURLOPT_DEBUGFUNCTION was set to a function pointer
111*6236dae4SAndroid Build Coastguard Worker  CURLOPT_DEBUGDATA was set to an object pointer
112*6236dae4SAndroid Build Coastguard Worker  CURLOPT_HEADERFUNCTION was set to a function pointer
113*6236dae4SAndroid Build Coastguard Worker  CURLOPT_HEADERDATA was set to an object pointer
114*6236dae4SAndroid Build Coastguard Worker
115*6236dae4SAndroid Build Coastguard Worker  */
116*6236dae4SAndroid Build Coastguard Worker
117*6236dae4SAndroid Build Coastguard Worker  ret = curl_easy_perform(hnd);
118*6236dae4SAndroid Build Coastguard Worker
119*6236dae4SAndroid Build Coastguard Worker  curl_easy_cleanup(hnd);
120*6236dae4SAndroid Build Coastguard Worker  hnd = NULL;
121*6236dae4SAndroid Build Coastguard Worker  curl_slist_free_all(slist1);
122*6236dae4SAndroid Build Coastguard Worker  slist1 = NULL;
123*6236dae4SAndroid Build Coastguard Worker  curl_slist_free_all(slist2);
124*6236dae4SAndroid Build Coastguard Worker  slist2 = NULL;
125*6236dae4SAndroid Build Coastguard Worker  curl_slist_free_all(slist3);
126*6236dae4SAndroid Build Coastguard Worker  slist3 = NULL;
127*6236dae4SAndroid Build Coastguard Worker
128*6236dae4SAndroid Build Coastguard Worker  return (int)ret;
129*6236dae4SAndroid Build Coastguard Worker}
130*6236dae4SAndroid Build Coastguard Worker/**** End of sample code ****/
131*6236dae4SAndroid Build Coastguard Worker</file>
132*6236dae4SAndroid Build Coastguard Worker<stripfile>
133*6236dae4SAndroid Build Coastguard Worker# CURLOPT_USERAGENT and CURLOPT_MAXREDIRS requires HTTP protocol
134*6236dae4SAndroid Build Coastguard Worker# CURLOPT_INTERLEAVEDATA requires RTSP (HTTP) protocol
135*6236dae4SAndroid Build Coastguard Worker# support, IOW depends on configuration - just ignore these.
136*6236dae4SAndroid Build Coastguard Worker$_ = '' if /CURLOPT_USERAGENT/
137*6236dae4SAndroid Build Coastguard Worker$_ = '' if /CURLOPT_MAXREDIRS/
138*6236dae4SAndroid Build Coastguard Worker# CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with
139*6236dae4SAndroid Build Coastguard Worker# configurations - just ignore them
140*6236dae4SAndroid Build Coastguard Worker$_ = '' if /CURLOPT_SSL_VERIFYPEER/
141*6236dae4SAndroid Build Coastguard Worker$_ = '' if /CURLOPT_SSH_KNOWNHOSTS/
142*6236dae4SAndroid Build Coastguard Worker$_ = '' if /CURLOPT_HTTP_VERSION/
143*6236dae4SAndroid Build Coastguard Worker$_ = '' if /CURLOPT_HTTP09_ALLOWED/
144*6236dae4SAndroid Build Coastguard Worker$_ = '' if /CURLOPT_INTERLEAVEDATA/
145*6236dae4SAndroid Build Coastguard Worker</stripfile>
146*6236dae4SAndroid Build Coastguard Worker</verify>
147*6236dae4SAndroid Build Coastguard Worker</testcase>
148