Random edits
This commit is contained in:
parent
4de7da172d
commit
67e5816cb2
1 changed files with 55 additions and 66 deletions
|
@ -155,73 +155,62 @@ int mainHandler(int CONN_fd){
|
||||||
|
|
||||||
while (!socketError && !All_Hell_Broke_Loose){
|
while (!socketError && !All_Hell_Broke_Loose){
|
||||||
//only parse input if available or not yet init'ed
|
//only parse input if available or not yet init'ed
|
||||||
retval = epoll_wait(poller, events, 1, 1);
|
if (HTTP_R.ReadSocket(CONN_fd)){
|
||||||
if ((retval > 0) || !ready4data){
|
handler = HANDLER_PROGRESSIVE;
|
||||||
if (HTTP_R.ReadSocket(CONN_fd)){
|
if ((HTTP_R.url.find("Seg") != std::string::npos) && (HTTP_R.url.find("Frag") != std::string::npos)){handler = HANDLER_FLASH;}
|
||||||
handler = HANDLER_PROGRESSIVE;
|
if (HTTP_R.url.find("f4m") != std::string::npos){handler = HANDLER_FLASH;}
|
||||||
if ((HTTP_R.url.find("Seg") != std::string::npos) && (HTTP_R.url.find("Frag") != std::string::npos)){handler = HANDLER_FLASH;}
|
if (HTTP_R.url == "/crossdomain.xml"){
|
||||||
if (HTTP_R.url.find("f4m") != std::string::npos){handler = HANDLER_FLASH;}
|
handler = HANDLER_NONE;
|
||||||
if (HTTP_R.url == "/crossdomain.xml"){
|
HTTP_S.Clean();
|
||||||
handler = HANDLER_NONE;
|
HTTP_S.SetHeader("Content-Type", "text/xml");
|
||||||
HTTP_S.Clean();
|
HTTP_S.SetBody("<?xml version=\"1.0\"?><!DOCTYPE cross-domain-policy SYSTEM \"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd\"><cross-domain-policy><allow-access-from domain=\"*\" /><site-control permitted-cross-domain-policies=\"all\"/></cross-domain-policy>");
|
||||||
HTTP_S.SetHeader("Content-Type", "text/xml");
|
HTTP_S.SendResponse(CONN_fd, "200", "OK");//geen SetBody = unknown length! Dat willen we hier.
|
||||||
HTTP_S.SetBody("<?xml version=\"1.0\"?><!DOCTYPE cross-domain-policy SYSTEM \"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd\"><cross-domain-policy><allow-access-from domain=\"*\" /><site-control permitted-cross-domain-policies=\"all\"/></cross-domain-policy>");
|
#if DEBUG >= 3
|
||||||
HTTP_S.SendResponse(CONN_fd, "200", "OK");//geen SetBody = unknown length! Dat willen we hier.
|
printf("Sending crossdomain.xml file\n");
|
||||||
#if DEBUG >= 3
|
#endif
|
||||||
printf("Sending crossdomain.xml file\n");
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
if(handler == HANDLER_FLASH){
|
|
||||||
if (HTTP_R.url.find("f4m") == std::string::npos){
|
|
||||||
Movie = HTTP_R.url.substr(1);
|
|
||||||
Movie = Movie.substr(0,Movie.find("/"));
|
|
||||||
Quality = HTTP_R.url.substr( HTTP_R.url.find("/",1)+1 );
|
|
||||||
Quality = Quality.substr(0, Quality.find("Seg"));
|
|
||||||
temp = HTTP_R.url.find("Seg") + 3;
|
|
||||||
Segment = atoi( HTTP_R.url.substr(temp,HTTP_R.url.find("-",temp)-temp).c_str());
|
|
||||||
temp = HTTP_R.url.find("Frag") + 4;
|
|
||||||
ReqFragment = atoi( HTTP_R.url.substr(temp).c_str() );
|
|
||||||
#if DEBUG >= 4
|
|
||||||
/* strftime example */
|
|
||||||
time_t rawtime;
|
|
||||||
struct tm * timeinfo;
|
|
||||||
char timebuffer [80];
|
|
||||||
time ( &rawtime );
|
|
||||||
timeinfo = localtime ( &rawtime );
|
|
||||||
strftime (timebuffer,80,"%H:%M.%S.",timeinfo);
|
|
||||||
fprintf(stderr, "< %s >\t", timebuffer );
|
|
||||||
printf( "URL: %s\n", HTTP_R.url.c_str());
|
|
||||||
printf( "Movie: %s, Quality: %s, Seg %d Frag %d\n", Movie.c_str(), Quality.c_str(), Segment, ReqFragment);
|
|
||||||
#endif
|
|
||||||
Flash_RequestPending++;
|
|
||||||
}else{
|
|
||||||
Movie = HTTP_R.url.substr(1);
|
|
||||||
Movie = Movie.substr(0,Movie.find("/"));
|
|
||||||
}
|
|
||||||
streamname = "/tmp/shared_socket_";
|
|
||||||
for (std::string::iterator i=Movie.end()-1; i>=Movie.begin(); --i){
|
|
||||||
if (!isalpha(*i) && !isdigit(*i)){
|
|
||||||
Movie.erase(i);
|
|
||||||
}else{
|
|
||||||
*i=tolower(*i);
|
|
||||||
}//strip nonalphanumeric
|
|
||||||
}
|
|
||||||
streamname += Movie;
|
|
||||||
ready4data = true;
|
|
||||||
}//FLASH handler
|
|
||||||
if (handler == HANDLER_PROGRESSIVE){
|
|
||||||
//in het geval progressive nemen we aan dat de URL de streamname is, met .flv erachter
|
|
||||||
streamname = HTTP_R.url.substr(0, HTTP_R.url.size()-4);//strip de .flv
|
|
||||||
for (std::string::iterator i=streamname.end()-1; i>=streamname.begin(); --i){
|
|
||||||
if (!isalpha(*i) && !isdigit(*i)){streamname.erase(i);}else{*i=tolower(*i);}//strip nonalphanumeric
|
|
||||||
}
|
|
||||||
streamname = "/tmp/shared_socket_" + streamname;//dit is dan onze shared_socket
|
|
||||||
//normaal zouden we ook een position uitlezen uit de URL, maar bij LIVE streams is dat zinloos
|
|
||||||
printf("Streamname: %s\n", streamname.c_str());
|
|
||||||
ready4data = true;
|
|
||||||
}//PROGRESSIVE handler
|
|
||||||
HTTP_R.CleanForNext(); //maak schoon na verwerken voor eventuele volgende requests...
|
|
||||||
}
|
}
|
||||||
|
if(handler == HANDLER_FLASH){
|
||||||
|
if (HTTP_R.url.find("f4m") == std::string::npos){
|
||||||
|
Movie = HTTP_R.url.substr(1);
|
||||||
|
Movie = Movie.substr(0,Movie.find("/"));
|
||||||
|
Quality = HTTP_R.url.substr( HTTP_R.url.find("/",1)+1 );
|
||||||
|
Quality = Quality.substr(0, Quality.find("Seg"));
|
||||||
|
temp = HTTP_R.url.find("Seg") + 3;
|
||||||
|
Segment = atoi( HTTP_R.url.substr(temp,HTTP_R.url.find("-",temp)-temp).c_str());
|
||||||
|
temp = HTTP_R.url.find("Frag") + 4;
|
||||||
|
ReqFragment = atoi( HTTP_R.url.substr(temp).c_str() );
|
||||||
|
#if DEBUG >= 4
|
||||||
|
printf( "URL: %s\n", HTTP_R.url.c_str());
|
||||||
|
printf( "Movie: %s, Quality: %s, Seg %d Frag %d\n", Movie.c_str(), Quality.c_str(), Segment, ReqFragment);
|
||||||
|
#endif
|
||||||
|
Flash_RequestPending++;
|
||||||
|
}else{
|
||||||
|
Movie = HTTP_R.url.substr(1);
|
||||||
|
Movie = Movie.substr(0,Movie.find("/"));
|
||||||
|
}
|
||||||
|
streamname = "/tmp/shared_socket_";
|
||||||
|
for (std::string::iterator i=Movie.end()-1; i>=Movie.begin(); --i){
|
||||||
|
if (!isalpha(*i) && !isdigit(*i)){
|
||||||
|
Movie.erase(i);
|
||||||
|
}else{
|
||||||
|
*i=tolower(*i);
|
||||||
|
}//strip nonalphanumeric
|
||||||
|
}
|
||||||
|
streamname += Movie;
|
||||||
|
ready4data = true;
|
||||||
|
}//FLASH handler
|
||||||
|
if (handler == HANDLER_PROGRESSIVE){
|
||||||
|
//in het geval progressive nemen we aan dat de URL de streamname is, met .flv erachter
|
||||||
|
streamname = HTTP_R.url.substr(0, HTTP_R.url.size()-4);//strip de .flv
|
||||||
|
for (std::string::iterator i=streamname.end()-1; i>=streamname.begin(); --i){
|
||||||
|
if (!isalpha(*i) && !isdigit(*i)){streamname.erase(i);}else{*i=tolower(*i);}//strip nonalphanumeric
|
||||||
|
}
|
||||||
|
streamname = "/tmp/shared_socket_" + streamname;//dit is dan onze shared_socket
|
||||||
|
//normaal zouden we ook een position uitlezen uit de URL, maar bij LIVE streams is dat zinloos
|
||||||
|
printf("Streamname: %s\n", streamname.c_str());
|
||||||
|
ready4data = true;
|
||||||
|
}//PROGRESSIVE handler
|
||||||
|
HTTP_R.CleanForNext(); //maak schoon na verwerken voor eventuele volgende requests...
|
||||||
}
|
}
|
||||||
if (ready4data){
|
if (ready4data){
|
||||||
if (!inited){
|
if (!inited){
|
||||||
|
|
Loading…
Add table
Reference in a new issue