diff options
author | Xavier Roche <xroche@users.noreply.github.com> | 2014-06-08 13:02:43 +0000 |
---|---|---|
committer | Xavier Roche <xroche@users.noreply.github.com> | 2014-06-08 13:02:43 +0000 |
commit | 6d1544383e5c6cbf33dab7526e489a7bf58aacd3 (patch) | |
tree | 1e09d693337a6bedde4a15d6afa1f2c83e65a345 /src/htsopt.h | |
parent | cd268fd39ed5c64dd1c6b16e3284f10b79bf982b (diff) |
Public definitions cleanup (especially for httraqt)
htsopt.h now has the following definitions:
* struct htsrequest_proxy
* struct htsrequest
* struct htsblk
* struct lien_url
* struct lien_back
Diffstat (limited to 'src/htsopt.h')
-rw-r--r-- | src/htsopt.h | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/src/htsopt.h b/src/htsopt.h index fc7a4cc..5c2e35e 100644 --- a/src/htsopt.h +++ b/src/htsopt.h @@ -35,7 +35,13 @@ Please visit our Website: http://www.httrack.com #define HTTRACK_DEFOPT #include <stdio.h> + #include "htsglobal.h" +#include "htsnet.h" + +#ifdef __cplusplus +extern "C" { +#endif /* Forward definitions */ #ifndef HTS_DEF_FWSTRUCT_t_hts_htmlcheck_callbacks @@ -439,4 +445,162 @@ struct hts_stat_struct { TStamp last_request; // last request issued }; +// structure pour paramètres supplémentaires lors de la requête +#ifndef HTS_DEF_FWSTRUCT_htsrequest_proxy +#define HTS_DEF_FWSTRUCT_htsrequest_proxy +typedef struct htsrequest_proxy htsrequest_proxy; +#endif +struct htsrequest_proxy { + int active; + const char* name; + int port; + const char* bindhost; // bind this host +}; + +#ifndef HTS_DEF_FWSTRUCT_htsrequest +#define HTS_DEF_FWSTRUCT_htsrequest +typedef struct htsrequest htsrequest; +#endif +struct htsrequest { + short int user_agent_send; // user agent (ex: httrack/1.0 [sun]) + short int http11; // l'en tête peut (doit) être signé HTTP/1.1 et non HTTP/1.0 + short int nokeepalive; // pas de keep-alive + short int range_used; // Range utilisé + short int nocompression; // Pas de compression + short int flush_garbage; // recycled + const char* user_agent; + const char* referer; + const char* from; + const char* lang_iso; + const char* accept; + const char* headers; + htsrequest_proxy proxy; // proxy +}; + +// structure pour retour d'une connexion/prise d'en tête +#ifndef HTS_DEF_FWSTRUCT_htsblk +#define HTS_DEF_FWSTRUCT_htsblk +typedef struct htsblk htsblk; +#endif +struct htsblk { + int statuscode; // status-code, -1=erreur, 200=OK,201=..etc (cf RFC1945) + short int notmodified; // page ou fichier NON modifié (transféré) + short int is_write; // sortie sur disque (out) ou en mémoire (adr) + short int is_chunk; // mode chunk + short int compressed; // compressé? + short int empty; // vide? + short int keep_alive; // Keep-Alive? + short int keep_alive_trailers; // ..with trailers extension + int keep_alive_t; // KA timeout + int keep_alive_max; // KA number of requests + char *adr; // adresse du bloc de mémoire, NULL=vide + char *headers; // adresse des en têtes si présents + FILE *out; // écriture directe sur disque (si is_write=1) + LLint size; // taille fichier + char msg[80]; // message éventuel si échec ("\0"=non précisé) + char contenttype[64]; // content-type ("text/html" par exemple) + char charset[64]; // charset ("iso-8859-1" par exemple) + char contentencoding[64]; // content-encoding ("gzip" par exemple) + char *location; // on copie dedans éventuellement la véritable 'location' + LLint totalsize; // taille totale à télécharger (-1=inconnue) + short int is_file; // ce n'est pas une socket mais un descripteur de fichier si 1 + T_SOC soc; // ID socket + SOCaddr address; // IP address + int address_size; // IP address structure length (unused internally) + FILE *fp; // fichier pour file:// +#if HTS_USEOPENSSL + short int ssl; // is this connection a SSL one? (https) + // BIO* ssl_soc; // SSL structure + SSL *ssl_con; // connection structure +#endif + char lastmodified[64]; // Last-Modified + char etag[256]; // Etag + char cdispo[256]; // Content-Disposition coupé + LLint crange; // Content-Range + LLint crange_start; // Content-Range + LLint crange_end; // Content-Range + int debugid; // debug connection + /* */ + htsrequest req; // paramètres pour la requête + /*char digest[32+2]; // digest md5 généré par le moteur ("" si non généré) */ +}; + +// structure d'un lien +#ifndef HTS_DEF_FWSTRUCT_lien_url +#define HTS_DEF_FWSTRUCT_lien_url +typedef struct lien_url lien_url; +#endif +struct lien_url { + char *adr; // adresse + char *fil; // nom du fichier distant + char *sav; // nom à sauver sur disque (avec chemin éventuel) + char *cod; // chemin codebase éventuel si classe java + char *former_adr; // adresse initiale (avant éventuel moved), peut être nulle + char *former_fil; // nom du fichier distant initial (avant éventuel moved), peut être nul + + int premier; // pointeur sur le premier lien qui a donné lieu aux autres liens du domaine + int precedent; // pointeur sur le lien qui a donné lieu à ce lien précis + int depth; // profondeur autorisée lien ; >0 forte 0=faible + int pass2; // traiter après les autres, seconde passe. si == -1, lien traité en background + char link_import; // lien importé à la suite d'un moved - ne pas appliquer les règles classiques up/down + //int moved; // pointeur sur moved + int retry; // nombre de retry restants + int testmode; // mode test uniquement, envoyer juste un head! +}; + +// chargement de fichiers en 'arrière plan' +#ifndef HTS_DEF_FWSTRUCT_lien_back +#define HTS_DEF_FWSTRUCT_lien_back +typedef struct lien_back lien_back; +#endif +struct lien_back { +#if DEBUG_CHECKINT + char magic; +#endif + char url_adr[HTS_URLMAXSIZE * 2]; // adresse + char url_fil[HTS_URLMAXSIZE * 2]; // nom du fichier distant + char url_sav[HTS_URLMAXSIZE * 2]; // nom à sauver sur disque (avec chemin éventuel) + char referer_adr[HTS_URLMAXSIZE * 2]; // adresse host page referer + char referer_fil[HTS_URLMAXSIZE * 2]; // fichier page referer + char location_buffer[HTS_URLMAXSIZE * 2]; // "location" en cas de "moved" (302,..) + char *tmpfile; // nom à sauver temporairement (compressé) + char tmpfile_buffer[HTS_URLMAXSIZE * 2]; // buffer pour le nom à sauver temporairement + char send_too[1024]; // données à envoyer en même temps que le header + int status; // status (-1=non utilisé, 0: prêt, >0: opération en cours) + int locked; // locked (to be used soon) + int testmode; // mode de test + int timeout; // gérer des timeouts? (!=0 : nombre de secondes) + TStamp timeout_refresh; // si oui, time refresh + int rateout; // timeout refresh? (!=0 : taux minimum toléré en octets/s) + TStamp rateout_time; // si oui, date de départ + LLint maxfile_nonhtml; // taille max d'un fichier non html + LLint maxfile_html; // idem pour un ficheir html + htsblk r; // structure htsblk de chaque objet en background + int is_update; // mode update + int head_request; // requète HEAD? + LLint range_req_size; // range utilisé + TStamp ka_time_start; // refresh time for KA + // + int http11; // L'en tête doit être signé HTTP/1.1 et non HTTP/1.0 + int is_chunk; // chunk? + char *chunk_adr; // adresse chunk en cours de chargement + LLint chunk_size; // taille chunk en cours de chargement + LLint chunk_blocksize; // taille data declaree par le chunk + LLint compressed_size; // taille compressés (stats uniquement) + // + //int links_index; // to access liens[links_index] + // + char info[256]; // éventuel status pour le ftp + int stop_ftp; // flag stop pour ftp + int finalized; // finalized (optim memory) + int early_add; // was added before link heap saw it +#if DEBUG_CHECKINT + char magic2; +#endif +}; + +#ifdef __cplusplus +} +#endif + #endif |