Ayuda, como se usa mod_curl??

Started by alicesimu, December 01, 2016, 08:24:34 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

alicesimu

hola a todos

alguien a practicado con cURL??

solo he encontrado un ejemplo dentro del pixtudio: 08_mod_curl.prg
y esta documentacion:
http://dacucar.com/pixtudiodocs/mod_curl_symbols/

en ese ejemplo lo unico que hace es descargar un fichero por protocolo HTTP

Me gustaria usar cURL para usar el protocolo FTP para mi host.
Lo basico:
-Descargar fichero
-Subir fichero
-Crear carpeta
-Listar directorio

Alguien sabe donde puedo encontrar documentacion sobre ello?

Solo encontre esto:
https://curl.haxx.se/libcurl/c/ftpget.html
https://curl.haxx.se/libcurl/c/ftpupload.html

Yawin

Pues la verdad es que nunca he usado esa librería pero en el Bennupack es muy posible que tengas algún ejemplo de uso.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

l1nk3rn3l

#2
Lo mejor para descargar un archivo de un servidor es con http como en el ejemplo de curl

08_mod_curl.prg

para subir un fichero lo mejor seria usar el estandard json y subirlo mediante php

pero bueno haber si alguien hace un ejemplo de ftp en bennu...

creo que es posible meteer en la URL la clave y usuario .. ftp://username:password@hostname/

o mediante la funcion setopt

curl_easy_setopt( curl, CURLOPT_USERPWD, "username:password" );

que en bennu seria...

CURL_SETOPT(curl, CURLOPT_USERPWD, "username:password" );
curl_setopt(curl, CURLOPT_URL, "ftp.miservidor.com");

el resto tocaria probar... y que alguien se haga el ejemplo..

http://stackoverflow.com/questions/10448035/authenticating-libcurl-ftp-download-in-c
http://stackoverflow.com/questions/2162022/downloading-all-files-in-directory-using-libcurl

asi que se podria hacer un ejemplo con la curl de bennu   ;D

como aqui que especifica el directorio donde esta el fic hero

https://curl.haxx.se/libcurl/c/ftpsget.html


creo que podrias adaptatr los ejemplos facil, usando setopt para la clave y usuario
https://curl.haxx.se/libcurl/c/ftpget.html
https://curl.haxx.se/libcurl/c/ftpupload.html



aqui te dejo las declaraciones del mod_curl ...



constantes numericas:


    { "CURLOPT_VERBOSE"               , TYPE_DWORD, CURLOPT_VERBOSE                },
    { "CURLOPT_HEADER"                , TYPE_DWORD, CURLOPT_HEADER                 },
    { "CURLOPT_NOPROGRESS"            , TYPE_DWORD, CURLOPT_NOPROGRESS             },
    { "CURLOPT_NOSIGNAL"              , TYPE_DWORD, CURLOPT_NOSIGNAL               },
    { "CURLOPT_WILDCARDMATCH"         , TYPE_DWORD, CURLOPT_WILDCARDMATCH          },
    { "CURLOPT_WRITEDATA"             , TYPE_DWORD, CURLOPT_WRITEDATA              },
    { "CURLOPT_READDATA"              , TYPE_DWORD, CURLOPT_READDATA               },
    { "CURLOPT_WRITEHEADER"           , TYPE_DWORD, CURLOPT_WRITEHEADER            },
    { "CURLOPT_FAILONERROR"           , TYPE_DWORD, CURLOPT_FAILONERROR            },
    { "CURLOPT_URL"                   , TYPE_DWORD, CURLOPT_URL                    },
    { "CURLOPT_PROTOCOLS"             , TYPE_DWORD, CURLOPT_PROTOCOLS              },
    { "CURLOPT_REDIR_PROTOCOLS"       , TYPE_DWORD, CURLOPT_REDIR_PROTOCOLS        },
    { "CURLOPT_PROXY"                 , TYPE_DWORD, CURLOPT_PROXY                  },
    { "CURLOPT_PROXYPORT"             , TYPE_DWORD, CURLOPT_PROXYPORT              },
    { "CURLOPT_PROXYTYPE"             , TYPE_DWORD, CURLOPT_PROXYTYPE              },
    { "CURLOPT_NOPROXY"               , TYPE_DWORD, CURLOPT_NOPROXY                },
    { "CURLOPT_HTTPPROXYTUNNEL"       , TYPE_DWORD, CURLOPT_HTTPPROXYTUNNEL        },
    { "CURLOPT_SOCKS5_GSSAPI_SERVICE" , TYPE_DWORD, CURLOPT_SOCKS5_GSSAPI_SERVICE  },
    { "CURLOPT_SOCKS5_GSSAPI_NEC"     , TYPE_DWORD, CURLOPT_SOCKS5_GSSAPI_NEC      },
    { "CURLOPT_INTERFACE"             , TYPE_DWORD, CURLOPT_INTERFACE              },
    { "CURLOPT_LOCALPORT"             , TYPE_DWORD, CURLOPT_LOCALPORT              },
    { "CURLOPT_LOCALPORTRANGE"        , TYPE_DWORD, CURLOPT_LOCALPORTRANGE         },
    { "CURLOPT_DNS_CACHE_TIMEOUT"     , TYPE_DWORD, CURLOPT_DNS_CACHE_TIMEOUT      },
    { "CURLOPT_DNS_USE_GLOBAL_CACHE"  , TYPE_DWORD, CURLOPT_DNS_USE_GLOBAL_CACHE   },
    { "CURLOPT_BUFFERSIZE"            , TYPE_DWORD, CURLOPT_BUFFERSIZE             },
    { "CURLOPT_PORT"                  , TYPE_DWORD, CURLOPT_PORT                   },
    { "CURLOPT_TCP_NODELAY"           , TYPE_DWORD, CURLOPT_TCP_NODELAY            },
    { "CURLOPT_ADDRESS_SCOPE"         , TYPE_DWORD, CURLOPT_ADDRESS_SCOPE          },
    { "CURLOPT_NETRC"                 , TYPE_DWORD, CURLOPT_NETRC                  },
    { "CURL_NETRC_OPTIONAL"           , TYPE_DWORD, CURL_NETRC_OPTIONAL            },
    { "CURL_NETRC_IGNORED"            , TYPE_DWORD, CURL_NETRC_IGNORED             },
    { "CURL_NETRC_REQUIRED"           , TYPE_DWORD, CURL_NETRC_REQUIRED            },
    { "CURLOPT_NETRC_FILE"            , TYPE_DWORD, CURLOPT_NETRC_FILE             },
    { "CURLOPT_USERPWD"               , TYPE_DWORD, CURLOPT_USERPWD                },
    { "CURLOPT_PROXYUSERPWD"          , TYPE_DWORD, CURLOPT_PROXYUSERPWD           },
    { "CURLOPT_USERNAME"              , TYPE_DWORD, CURLOPT_USERNAME               },
    { "CURLOPT_PASSWORD"              , TYPE_DWORD, CURLOPT_PASSWORD               },
    { "CURLOPT_PROXYUSERNAME"         , TYPE_DWORD, CURLOPT_PROXYUSERNAME          },
    { "CURLOPT_PROXYPASSWORD"         , TYPE_DWORD, CURLOPT_PROXYPASSWORD          },
    { "CURLOPT_HTTPAUTH"              , TYPE_DWORD, CURLOPT_HTTPAUTH               },
    { "CURLAUTH_BASIC"                , TYPE_DWORD, CURLAUTH_BASIC                 },
    { "CURLAUTH_DIGEST"               , TYPE_DWORD, CURLAUTH_DIGEST                },
    { "CURLAUTH_DIGEST_IE"            , TYPE_DWORD, CURLAUTH_DIGEST_IE             },
    { "CURLAUTH_GSSNEGOTIATE"         , TYPE_DWORD, CURLAUTH_GSSNEGOTIATE          },
    { "CURLAUTH_NTLM"                 , TYPE_DWORD, CURLAUTH_NTLM                  },
    { "CURLAUTH_ANY"                  , TYPE_DWORD, CURLAUTH_ANY                   },
    { "CURLAUTH_ANYSAFE"              , TYPE_DWORD, CURLAUTH_ANYSAFE               },
    { "CURLAUTH_ONLY"                 , TYPE_DWORD, CURLAUTH_ONLY                  },
    { "CURLOPT_TLSAUTH_TYPE"          , TYPE_DWORD, CURLOPT_TLSAUTH_TYPE           },
    { "CURLOPT_TLSAUTH_USERNAME"      , TYPE_DWORD, CURLOPT_TLSAUTH_USERNAME       },
    { "CURLOPT_TLSAUTH_PASSWORD"      , TYPE_DWORD, CURLOPT_TLSAUTH_PASSWORD       },
    { "CURLOPT_PROXYAUTH"             , TYPE_DWORD, CURLOPT_PROXYAUTH              },
    { "CURLOPT_AUTOREFERER"           , TYPE_DWORD, CURLOPT_AUTOREFERER            },
    { "CURLOPT_FOLLOWLOCATION"        , TYPE_DWORD, CURLOPT_FOLLOWLOCATION         },
    { "CURLOPT_UNRESTRICTED_AUTH"     , TYPE_DWORD, CURLOPT_UNRESTRICTED_AUTH      },
    { "CURLOPT_MAXREDIRS"             , TYPE_DWORD, CURLOPT_MAXREDIRS              },
    { "CURLOPT_POSTREDIR"             , TYPE_DWORD, CURLOPT_POSTREDIR              },
    { "CURLOPT_PUT"                   , TYPE_DWORD, CURLOPT_PUT                    },
    { "CURLOPT_POST"                  , TYPE_DWORD, CURLOPT_POST                   },
    { "CURLOPT_POSTFIELDS"            , TYPE_DWORD, CURLOPT_POSTFIELDS             },
    { "CURLOPT_COPYPOSTFIELDS"        , TYPE_DWORD, CURLOPT_COPYPOSTFIELDS         },
    { "CURLOPT_HTTPPOST"              , TYPE_DWORD, CURLOPT_HTTPPOST               },
    { "CURLOPT_REFERER"               , TYPE_DWORD, CURLOPT_REFERER                },
    { "CURLOPT_USERAGENT"             , TYPE_DWORD, CURLOPT_USERAGENT              },
    { "CURLOPT_HTTPHEADER"            , TYPE_DWORD, CURLOPT_HTTPHEADER             },
    { "CURLOPT_COOKIE"                , TYPE_DWORD, CURLOPT_COOKIE                 },
    { "CURLOPT_COOKIEFILE"            , TYPE_DWORD, CURLOPT_COOKIEFILE             },
    { "CURLOPT_COOKIEJAR"             , TYPE_DWORD, CURLOPT_COOKIEJAR              },
    { "CURLOPT_COOKIESESSION"         , TYPE_DWORD, CURLOPT_COOKIESESSION          },
    { "CURLOPT_COOKIELIST"            , TYPE_DWORD, CURLOPT_COOKIELIST             },
    { "CURLOPT_HTTPGET"               , TYPE_DWORD, CURLOPT_HTTPGET                },
    { "CURLOPT_HTTP_VERSION"          , TYPE_DWORD, CURLOPT_HTTP_VERSION           },
    { "CURL_HTTP_VERSION_NONE"        , TYPE_DWORD, CURL_HTTP_VERSION_NONE         },
    { "CURL_HTTP_VERSION_1_0"         , TYPE_DWORD, CURL_HTTP_VERSION_1_0          },
    { "CURL_HTTP_VERSION_1_1"         , TYPE_DWORD, CURL_HTTP_VERSION_1_1          },
    { "CURLOPT_IGNORE_CONTENT_LENGTH" , TYPE_DWORD, CURLOPT_IGNORE_CONTENT_LENGTH  },
    { "CURLOPT_HTTP_CONTENT_DECODING" , TYPE_DWORD, CURLOPT_HTTP_CONTENT_DECODING  },
    { "CURLOPT_HTTP_TRANSFER_DECODING", TYPE_DWORD, CURLOPT_HTTP_TRANSFER_DECODING },

==================================================

funciones


    FUNC( "CURL_INIT"           , ""      , TYPE_INT    , bgd_curl_easy_init      ),
    FUNC( "CURL_CLEANUP"        , "I"     , TYPE_INT    , bgd_curl_easy_cleanup   ),
    FUNC( "CURL_FORMADD"        , "IISIS" , TYPE_INT    , bgd_curl_formadd        ),
    FUNC( "CURL_FORMFREE"       , "I"     , TYPE_INT    , bgd_curl_formfree       ),
    FUNC( "CURL_SETOPT"         , "III"   , TYPE_INT    , bgd_curl_easy_setopt    ),
    FUNC( "CURL_SETOPT"         , "IIS"   , TYPE_INT    , bgd_curl_easy_setopt2   ),
    FUNC( "CURL_SETOPT"         , "IIP"   , TYPE_INT    , bgd_curl_easy_setopt3   ),
    FUNC( "CURL_PERFORM"        , "IP"    , TYPE_INT    , bgd_curl_easy_perform   ),






alicesimu

Genial!!

cuando tenga un buen rato, trasteo, y te confirmo (estas pruebas las hago bajo Windows 10).

Gracias por darme toda la informacion!

hare pruebas con mi host. La pega de mi host que no permite descarga de ficheros por http, pide autenticación usuario ftp.

l1nk3rn3l

#4
Podrias usar este para probar

https://www.biz.nf/web-hosting.php

es el que usamos para los ejemplos

ademas te dan un dominio corto como

http://coldev.co.nf/

alicesimu

Probando en android, por que no puede almacenar lo descargado en la memoria de "Data"?
debe ser si o si, en el almacenamiento externo? como tu ejemplo

Asi que copie tu ejemplo, para guardarlo en el AlmacenamientoExterno

12-13 00:35:20.693  8921  8946 E SDL/APP :  SDL msg: PixTudio init
12-13 00:35:20.772   584   605 E WindowManager: Performed 6 layouts in a row. Skipping
12-13 00:35:20.812   584  3070 E WindowManager: Performed 6 layouts in a row. Skipping
12-13 00:35:21.109  8921  8946 E SDL/APP :  SDL msg: Inicio Bennu -> Java AlmacenamientoExternoListo
12-13 00:35:21.110  8921  8946 E SDL/APP :  SDL msg: Retorno Bennu -> Java AlmacenamientoExternoListo
12-13 00:35:21.114  8921  8921 E Pixtudio: Get Android External Storage Ready: 1
12-13 00:35:22.135  8921  8946 E SDL/APP :  SDL msg: Inicio Bennu -> Java ObtenerRutaAlmacenamientoExterno
12-13 00:35:22.135  8921  8946 E SDL/APP :  SDL msg: Retorno Bennu -> Java ObtenerRutaAlmacenamientoExterno
12-13 00:35:22.141  8921  8921 E Pixtudio: Get Android External Storage Path: /storage/emulated/0
12-13 00:35:22.144  8921  8921 E SDL/APP :  SDL msg: Java->Bennu /storage/emulated/0
12-13 00:35:22.144  8921  8921 E SDL/APP :  SDL msg: Java->Bennu fase 1
12-13 00:35:22.144  8921  8921 E SDL/APP :  SDL msg: Java->Bennu fase 2 final
12-13 00:35:22.144  8921  8921 E Pixtudio: Get Android External Storage Path: FINAL
12-13 00:35:23.162  8921  8946 E SDL/APP :  SDL msg: /storage/emulated/0/4.zon
12-13 00:35:23.165  8921  8946 E SDL/APP :  SDL msg: Removed existing
12-13 00:35:24.524  8921  8946 E SDL/APP :  SDL msg: Download done!
12-13 00:35:24.527  8921  8946 E SDL/APP :  SDL msg: /storage/emulated/0/4.zon


y puede descargarlo por protocolo FTP, con usuario, contraseña:
curl_setopt(curl, CURLOPT_URL, "ftp://<user>:<passwd>@penguinpush.co.nf/penguinpush.co.nf/EDIT_ZON/"+FICHERO);

por ejemplo...

Hasta ahora es la prueba que echo bajo android, y si funciona asi.

aun no he probado que se pueda Subir un fichero.

Existe alguna manera de leer un fichero de texto ASCII linea x linea de forma directa, sin descargar todo el fichero entero???