Beispiel #1
0
std::map<eString, eString> getRequestOptions(eString opt, char delimiter)
{
	std::map<eString, eString> result;

	if (opt[0] == '?')
		opt = opt.mid(1);

	while (opt.length())
	{
		unsigned int e = opt.find("=");
		if (e == eString::npos)
			e = opt.length();
		unsigned int a = opt.find(delimiter, e);
		if (a == eString::npos)
			a = opt.length();
		eString n = opt.left(e);

		unsigned int b = opt.find(delimiter, e + 1);
		if (b == eString::npos)
			b = (unsigned)-1;
		eString r = httpUnescape(opt.mid(e + 1, b - e - 1));
		result.insert(std::pair<eString, eString>(n, r));
		opt = opt.mid(a + 1);
	}
	return result;
}
Beispiel #2
0
eString httpUnescape(const eString &string)
{
	eString result;
	for (unsigned int i = 0; i < string.length(); ++i)
	{
		int c = string[i];
		switch (c)
		{
		case '%':
		{
			int value = '%';
			if ((i + 1) < string.length())
				value = getHex(string[++i]);
			if ((i + 1) < string.length())
			{
				value <<= 4;
				value += getHex(string[++i]);
			}
			result += value;
			break;
		}
		case '+':
			result += ' ';
			break;
		default:
			result += c;
			break;
		}
	}
	return result;
}
Beispiel #3
0
void FileMap::updateNameIdPair(const eString& chanId, const eString& name)
{
    if (chanId.length() > 0 && name.length() > 0)
    {
        channelId2Names[chanId] = name;
        channelName2Id[name] = chanId;
    }

}
Beispiel #4
0
/////////////////////////////////////// eString icompare(const  eString&) /////////////////////
int eString::icompare(const eString& s)
{
//	makes a case insensitive string compare
	std::string::const_iterator p = begin(), p2 = s.begin();

	while ( p != end() && p2 != s.end() )
		if ( tolower(*p) != tolower(*p2) )
			return tolower(*p) < tolower(*p2) ? -1 : 1;
		else
			p++, p2++;

	return length() == s.length() ? 0 : length() < s.length() ? -1 : 1;
}
Beispiel #5
0
void eAllowedOpInput::parseConfig(const eString &config)
{
    _clear();

    const eU32 configLen = config.length();
    eString buffer;

    for (eU32 i=0; i<configLen; i++)
    {
        buffer = "";

        while (i < configLen && config[i] != '|')
        {
            buffer += config[i++];
        }

        eString left, right;

        if (!buffer.split(',', left, right))
        {
            eSwap(left, right);
        }

        WhereWhat *ww = new WhereWhat;
        eASSERT(ww != eNULL);
        ww->index = (left == "" ? -1 : eStrToInt(left));
        ww->what = right;

        m_allowed.append(ww);
        m_allAllowed.append(new eString(right));
    }
}
Beispiel #6
0
bool ChannelManager::matchesCurrentShowFlags( eString name )
{
	if ( name == eString( "UNKNOWN" ) )
		return ( showFlags & CM_SHOW_UNKNOWN );
	else if ( name == eString( "IGNORE" ) )
		return ( showFlags & CM_SHOW_IGNORE );
	else if ( name.length() > 0 )
                return ( showFlags & CM_SHOW_MAPPED );
	else
		return false;
}
Beispiel #7
0
int remoteType( eString spec )
{
	if ( spec.length() == 0 )
		return inputDefRemoteTypeNone;
	else {
		eString prot = spec.left(5);
		if ( prot == "http:" )
			return inputDefRemoteTypeHTTP;
		else if ( prot == "otid:" ) 
			return inputDefRemoteTypeOTV;
		else
			return inputDefRemoteTypeNone;
	}
}
Beispiel #8
0
static void writeSecretString( const eString &str )
{
	FILE *f = fopen("/etc/ppp/pap-secrets", "w");
	if (!f)
		eFatal("couldn't create /etc/ppp/pap-secrets");
	eString tmp;
	unsigned int pos =
		str.find('*');
	if ( pos != eString::npos )
	{
		tmp = '\"' + str.left(pos) + "\"\t*\t\"" +
			str.mid(pos+1, str.length()-pos ) + "\"\n";
	}
	fwrite( tmp.c_str(), 1, tmp.length(), f );

	fclose(f);
}
void eServiceHandlerExternal::addFile(void *node, const eString &filename)
{
	for (unsigned int i = 0; i < extensionFileList.size(); i++)
	{
		int matchsize = extensionFileList[i].pattern.length();
		if (filename.right(matchsize).upper() == extensionFileList[i].pattern.upper())
		{
			eServiceReference ref(id, 0, filename);
			eString filenamestripped = filename;

			uint i = filename.find_last_of('/');
			if (i != eString::npos)
			{
				filenamestripped = filename.mid(i + 1, filename.length());
			}
			ref.descr = filenamestripped.c_str();
			eServiceFileHandler::getInstance()->addReference(node, ref);
			eDebug("Add file: %s", filename.c_str());
			return;
		}
	}
}
Beispiel #10
0
eString httpEscape(const eString &string)
{
	eString result;
	for (unsigned int i = 0; i < string.length(); ++i)
	{
		int c = string[i];
		int valid = 0;
		if ((c >= 'a') && (c <= 'z'))
			valid = 1;
		else if ((c >= 'A') && (c <= 'Z'))
			valid = 1;
		else if (c == ':')
			valid = 1;
		else if ((c >= '0') && (c <= '9'))
			valid = 1;

		if (valid)
			result += c;
		else
			result += eString().sprintf("%%%x", c);
	}
	return result;
}
Beispiel #11
0
eString eMoviePlayer::sout(eString mrl)
{
	eString soutURL = "#";
	
	unsigned int pos = mrl.find_last_of('.');
	eString extension = mrl.right(mrl.length() - pos - 1);
	
	eString name = "File";
	if (mrl.find("dvdsimple:") != eString::npos)
	{
		name = "DVD";
		extension = "NONE";
	}
	else
	if (mrl.find("vcd:") != eString::npos)
	{
		name = "VCD";
		extension = "NONE";
	}
	
	struct serverConfig server = mpconfig.getServerConfig();
	struct videoTypeParms video = mpconfig.getVideoParms(name, extension);
	
	eDebug("[MOVIEPLAYER] determine ?sout for mrl: %s", mrl.c_str());
	eDebug("[MOVIEPLAYER] transcoding audio: %d, video: %d, subtitles: %d" , video.transcodeAudio, video.transcodeVideo, status.PLG ? status.SUBT : video.soutadd);

	// add sout (URL encoded)
	// example (with transcode to mpeg1):
	//  ?sout=#transcode{vcodec=mpgv,vb=2000,acodec=mpga,ab=192,channels=2}:duplicate{dst=std{access=http,mux=ts,url=:8080/dboxstream}}
	// example (without transcode to mpeg1): 
	// ?sout=#duplicate{dst=std{access=http,mux=ts,url=:8080/dboxstream}}

	pos = video.videoRatio.find("x");
	eString res_horiz = video.videoRatio.left(pos);
	eString res_vert = video.videoRatio.right(video.videoRatio.length() - pos - 1);
	eDebug("[MOVIEPLAYER] res_horiz = %s, res_vert = %s", res_horiz.c_str(), res_vert.c_str());
	
	if (video.transcodeVideo || video.transcodeAudio)
	{
		soutURL += "transcode{";
		if (video.transcodeVideo)
		{
			soutURL += "vcodec=" + video.videoCodec;
			soutURL += ",vb=" + video.videoRate;
			soutURL += ",width=" + res_horiz;
			soutURL += ",height=" + res_vert;
			soutURL += ",fps=" + video.fps;
			if(status.PLG)
			{
				if(status.SUBT)
					soutURL += ",soverlay";
			}
			else
			{
				if (video.soutadd)
					soutURL += ",soverlay";
			}
		}
		if (video.transcodeAudio)
		{
			if (video.transcodeVideo)
				soutURL += ",";
			soutURL += "acodec=mpga,ab=" + video.audioRate + ",channels=2";
		}
		if(status.PLG)
		{
			if(status.A_SYNC)
				soutURL += ",audio-sync";
		}
		else
			soutURL += ",audio-sync";
		soutURL += "}:";
	}
	
	//soutURL += "duplicate{dst=std{access=http,mux=ts,dst=:" + server.streamingPort + "/dboxstream}}";
	soutURL += "standard{access=http,mux=ts,dst=:" + server.streamingPort + "/dboxstream}";

	status.A_SYNC=true;
	status.SUBT = true;
	eDebug("[MOVIEPLAYER] sout = %s", soutURL.c_str());
	return soutURL;
}