Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: alicesimu on December 01, 2016, 08:24:34 PM

Title: Ayuda, como se usa mod_curl??
Post by: alicesimu on December 01, 2016, 08:24:34 PM
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
Title: Re:Ayuda, como se usa mod_curl??
Post by: Yawin on December 02, 2016, 10:54:16 AM
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.
Title: Re:Ayuda, como se usa mod_curl??
Post by: l1nk3rn3l on December 02, 2016, 02:42:07 PM
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   ),





Title: Re:Ayuda, como se usa mod_curl??
Post by: alicesimu on December 03, 2016, 07:44:14 PM
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.
Title: Re:Ayuda, como se usa mod_curl??
Post by: l1nk3rn3l on December 04, 2016, 01:57:18 AM
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/
(http://coldev.co.nf/)
Title: Re:Ayuda, como se usa mod_curl??
Post by: alicesimu on December 12, 2016, 11:51:10 PM
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???