From: hyc Date: Wed, 30 Dec 2009 06:17:36 +0000 (+0000) Subject: Prep for 2.1; use Referrer in HashSWF X-Git-Tag: v2.4~357 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=de607d7662c0b21bc5f7eed9898016a03bae1943;p=rtmpdump Prep for 2.1; use Referrer in HashSWF git-svn-id: svn://svn.mplayerhq.hu/rtmpdump/trunk@142 400ebc74-4327-4243-bc38-086b20814532 --- diff --git a/ChangeLog b/ChangeLog index 670e02b..48b4065 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,7 +3,7 @@ Copyright 2008-2009 Andrej Stepanchuk; Distributed under the GPL v2 Copyright 2009 Howard Chu Copyright 2009 The Flvstreamer Team -29 December 2009, v2.x +29 December 2009, v2.1 - AMF cleanup: bounds checking for all encoders, moved AMF_EncodeNamed* from rtmp.c - added SecureToken support - added automatic SWF hash calculation diff --git a/hashswf.c b/hashswf.c index ceb5fd0..8ad006b 100644 --- a/hashswf.c +++ b/hashswf.c @@ -151,7 +151,8 @@ http_get(const char *url, struct info *in) s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (s < 0) return -1; - i = sprintf(buf, "GET %s HTTP/1.0\r\nUser-Agent: %s\r\nHost: %s\r\n", path, AGENT, host); + i = sprintf(buf, "GET %s HTTP/1.0\r\nUser-Agent: %s\r\nHost: %s\r\nReferrer: %.*s\r\n", path, AGENT, host, + path-url+1, url); if (in->date[0]) i += sprintf(buf+i, "If-Modified-Since: %s\r\n", in->date); i += sprintf(buf+i, "\r\n"); @@ -221,7 +222,7 @@ leave: #define HEX2BIN(a) (((a)&0x40)?((a)&0xf)+9:((a)&0xf)) int -RTMP_HashSWF(const char *url, unsigned int *size, unsigned char *hash, int ask) +RTMP_HashSWF(const char *url, unsigned int *size, unsigned char *hash) { FILE *f = NULL; char *path, *home, date[64]; @@ -290,9 +291,6 @@ RTMP_HashSWF(const char *url, unsigned int *size, unsigned char *hash, int ask) } } - if (got && !ask) - return 0; - in.first = 1; in.date = date; HMAC_CTX_init(&ctx); diff --git a/rtmp.h b/rtmp.h index 9339451..c08f386 100644 --- a/rtmp.h +++ b/rtmp.h @@ -211,7 +211,7 @@ bool RTMP_FindFirstMatchingProperty(AMFObject *obj, const AVal *name, /* hashswf.c */ #define HASHLEN 32 -int RTMP_HashSWF(const char *url, unsigned int *size, unsigned char *hash, int ask); +int RTMP_HashSWF(const char *url, unsigned int *size, unsigned char *hash); #endif #endif diff --git a/rtmpdump.c b/rtmpdump.c index 2dee8bd..d27e272 100644 --- a/rtmpdump.c +++ b/rtmpdump.c @@ -45,7 +45,7 @@ #include "log.h" #include "parseurl.h" -#define RTMPDUMP_VERSION "v2.0" +#define RTMPDUMP_VERSION "v2.1" #define RD_SUCCESS 0 #define RD_FAILED 1 @@ -1284,7 +1284,7 @@ main(int argc, char **argv) } case 'W': STR2AVAL(swfUrl, optarg); - if (RTMP_HashSWF(optarg, &swfSize, hash, 1) == 0) + if (RTMP_HashSWF(optarg, &swfSize, hash) == 0) { swfHash.av_val = (char *)hash; swfHash.av_len = HASHLEN; diff --git a/rtmpsrv.c b/rtmpsrv.c index d6a6327..204e178 100644 --- a/rtmpsrv.c +++ b/rtmpsrv.c @@ -45,7 +45,7 @@ #include #endif -#define RTMPDUMP_SERVER_VERSION "v2.0" +#define RTMPDUMP_SERVER_VERSION "v2.1" #define RD_SUCCESS 0 #define RD_FAILED 1 diff --git a/rtmpsuck.c b/rtmpsuck.c index 7a841bb..ff94b36 100644 --- a/rtmpsuck.c +++ b/rtmpsuck.c @@ -45,7 +45,7 @@ #include #endif -#define RTMPDUMP_PROXY_VERSION "v2.0" +#define RTMPDUMP_PROXY_VERSION "v2.1" #define RD_SUCCESS 0 #define RD_FAILED 1 @@ -207,7 +207,7 @@ ServeInvoke(STREAMING_SERVER *server, RTMPPacket *pack, const char *body) { unsigned char hash[HASHLEN]; server->rc.Link.swfUrl = pval; - if (RTMP_HashSWF(pval.av_val, &server->rc.Link.SWFSize, hash, 0) == 0) + if (RTMP_HashSWF(pval.av_val, &server->rc.Link.SWFSize, hash, 1) == 0) { server->rc.Link.SWFHash.av_val = malloc(HASHLEN); memcpy(server->rc.Link.SWFHash.av_val, hash, HASHLEN); diff --git a/streams.c b/streams.c index 818713a..34b92c1 100644 --- a/streams.c +++ b/streams.c @@ -37,7 +37,7 @@ #include #endif -#define RTMPDUMP_STREAMS_VERSION "v2.0" +#define RTMPDUMP_STREAMS_VERSION "v2.1" #define RD_SUCCESS 0 #define RD_FAILED 1 @@ -942,7 +942,7 @@ ParseOption(char opt, char *arg, RTMP_REQUEST * req) unsigned char hash[HASHLEN]; STR2AVAL(req->swfUrl, arg); - if (RTMP_HashSWF(arg, &req->swfSize, hash, 1) == 0) + if (RTMP_HashSWF(arg, &req->swfSize, hash) == 0) { req->swfHash.av_val = malloc(HASHLEN); req->swfHash.av_len = HASHLEN;