Example #1
0
eString eMountPoint::tryCifsMount(const eString& cmd, int linuxExt)
{
	eString rc;
	
	if(linuxExt == 0)
	{
		// If we don't want linux extensions on cifs, disable it first
		eDebug("[MOUNT] disabling linux extensions");
		eString procCommand = "echo 0 > /proc/fs/cifs/LinuxExtensionsEnabled";
		system(procCommand.c_str());
	}
						
	// Execute the mount command
	eDebug("[MOUNT] mounting: %s", cmd.c_str());
	if(system(cmd.c_str()) != 0)
	{
		rc = _("Mount failed");
	}

	if(linuxExt == 0)
	{
		// Enable linux extensions afterwards
		eDebug("[MOUNT] enabling linux extensions");
		eString procCommand = "echo 1 > /proc/fs/cifs/LinuxExtensionsEnabled";
		system(procCommand.c_str());
	}
	
	return rc;
}
Example #2
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;
}
Example #3
0
eString readFile(eString filename)
{
	eString result;
	eString line;
	
	if (strstr(filename.c_str(), (TEMPLATE_DIR).c_str()) != 0)
	{
		const char *pch = strrchr(filename.c_str(), '/');
		eString filename2 = TEMPLATE_DIR2 + eString(strdup(pch + 1));
		if (access(filename2.c_str(), R_OK) == 0)
			filename = filename2;
	}	
			
	if (strstr(filename.c_str(), (HTDOCS_DIR).c_str()) != 0)
	{
		const char *pch = strrchr(filename.c_str(), '/');
		eString filename2 = HTDOCS_DIR2 + eString(strdup(pch + 1));
		if (access(filename2.c_str(), R_OK) == 0)
			filename = filename2;
	}

	ifstream infile(filename.c_str());
	if (infile)
		while (getline(infile, line, '\n'))
			result += line + "\n";

	return result;
}
Example #4
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;
}
Example #5
0
eString filter_string(eString string)
{
	string.strReplace("\xc2\x86","");
	string.strReplace("\xc2\x87","");
	string.strReplace("\xc2\x8a"," ");
	string.strReplace("\"", "'");
	return string;
}
Example #6
0
void FileMap::updateNameIdPair(const eString& chanId, const eString& name)
{
    if (chanId.length() > 0 && name.length() > 0)
    {
        channelId2Names[chanId] = name;
        channelName2Id[name] = chanId;
    }

}
Example #7
0
static void updatePPPConfig( const eString &secrets, int flags )
{
	char sourceA[8192];  // source buffer
	char destA[8192]; // dest buffer
	char *source = sourceA;
	char *dest = destA;

	FILE *f = fopen("/etc/ppp/pppoe.conf", "r" );
	if ( !f )
	{
		eDebug("couldn't open '/etc/ppp/pppoe.conf' for read");
		return;
	}
	size_t readed = fread(source, 1, sizeof(sourceA), f );
	if ( !readed )
	{
		eDebug("couldn't read '/etc/ppp/pppoe.conf'");
		return;
	}

	uint spos = 0;
	uint dpos = 0;
	uint ppos = secrets.find('*');

	if ( ppos != eString::npos )
	{
		eString strUser = '******'' + secrets.left(ppos) + "\'\n";
		helper( source, dest, spos, dpos, "USER="******"/elitedvb/network/webifport", webifport);
	eString s;
	s.sprintf("%d\n", webifport);
	helper( source, dest, spos, dpos, "ENIGMA_WEB_IF_PORT=", s.c_str() );
	helper( source, dest, spos, dpos, "REJECT_WWW=", flags&1?"yes\n":"no\n" );
	helper( source, dest, spos, dpos, "REJECT_TELNET=", flags&2?"yes\n":"no\n" );
	helper( source, dest, spos, dpos, "REJECT_SAMBA=", flags&4?"yes\n":"no\n" );
	helper( source, dest, spos, dpos, "REJECT_FTP=", flags&8?"yes\n":"no\n" );

	memcpy( dest+dpos, source+spos, readed - spos );
	dpos += readed-spos;

	fclose(f);
	f = fopen("/etc/ppp/pppoe.conf", "w");
	if ( !f )
	{
		eDebug("couldn't open '/etc/ppp/pppoe.conf' for write");
		return;
	}
	unsigned int written;
	if ( (written = fwrite( dest, 1, dpos, f )) != dpos )
		eDebug("couldn't write correct count of bytes...\n%d bytes written %d should be written", written, dpos );
	fclose(f);
}
Example #8
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;
}
Example #9
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;
	}
}
Example #10
0
		// we got (http) metadata.
void eMP3Decoder::metaDataUpdated(eString meta)
{
	{
		singleLock s(lock);  // must protect access on metadata array
		eString streamTitle, streamUrl;
		if (meta.left(6) == "Stream")
			while (!meta.empty())
			{
				unsigned int eq=meta.find('=');
				if (eq == eString::npos)
						break;
				eString left=meta.left(eq);
				meta=meta.mid(eq+1); // skip until =
				eq=meta.find(';');
				if (eq == eString::npos)
					break;
				eString right=meta.left(eq);
				meta=meta.mid(eq+1);
				if (left=="StreamTitle")
					streamTitle=right;
				else if (left == "StreamUrl")
					streamUrl=right;
				else
					eDebug("unknown tag: %s = %s", left.c_str(), right.c_str());			
			}
		else
			streamTitle=meta;

		metadata[0]=streamTitle;
		metadata[1]=streamUrl;
	}

	handler->messages.send(eServiceHandlerMP3::eMP3DecoderMessage(eServiceHandlerMP3::eMP3DecoderMessage::infoUpdated));
}
Example #11
0
static eString wapEPGDetails(eString serviceRef, eString eventID)
{
	eString result;
	eService *current = NULL;
	eString ext_description;
	std::stringstream record;
	int eventid;
	eString description = "No description available";

	sscanf(eventID.c_str(), "%x", &eventid);
	eDebug("[ENIGMA_DYN] getEPGDetails: serviceRef = %s, ID = %04x", serviceRef.c_str(), eventid);

	// search for the event... to get the description...
	eDVBServiceController *sapi=eDVB::getInstance()->getServiceAPI();
	if (sapi)
	{
		eServiceReference ref(string2ref(serviceRef));
		current = eDVB::getInstance()->settings->getTransponders()->searchService((eServiceReferenceDVB&)ref);
		if (current)
		{
			EITEvent *event = eEPGCache::getInstance()->lookupEvent((eServiceReferenceDVB&)ref, eventid);
			if (event)
			{
				LocalEventData led;
				led.getLocalData(event, &description, &ext_description);
				ext_description.strReplace("\n", "<br/>");
				if (!ext_description)
					ext_description = "No detailed information available";
#ifndef DISABLE_FILE
				record << "<a href=\"/wap?mode=addTimerEvent"
					<< ",path=" << ref2string(ref)
					<< ",ID=" << std::hex << event->event_id << std::dec
					<< ",start=" << event->start_time
					<< ",duration=" << event->duration
					<< ",descr=" << filter_string(description)
					<< ",channel=" << filter_string(current->service_name)
					<< "\">Record</a>";
#endif
				delete event;
			}
		}
	}

	result = readFile(TEMPLATE_DIR + "wapEPGDetails.tmp");
	result.strReplace("#EVENT#", filter_string(description));
	result.strReplace("#RECORD#", record.str());
	result.strReplace("#BODY#", filter_string(ext_description));

	return result;
}
void eServiceHandlerExternal::addDirectory(void *node, const eString &filename)
{
	for (unsigned int i = 0; i < extensionDirectoryList.size(); i++)
	{
		int matchsize = extensionDirectoryList[i].pattern.length();
		if (filename.right(matchsize).upper() == extensionDirectoryList[i].pattern.upper())
		{
			eServiceReference ref(id, 0, filename);
			ref.descr = _("Start player");
			eServiceFileHandler::getInstance()->addReference(node, ref);
			eDebug("Add directory: %s", filename.c_str());
			return;
		}
	}
}
Example #13
0
int eSocket::connectToHost(eString hostname, int port)
{
	sockaddr_in  serv_addr;
	struct hostent *server;
	int res;

	if (mystate == Invalid)
	{
		/* the socket has been closed, create a new socket descriptor */
		int s=socket(AF_INET, SOCK_STREAM, 0);
		mystate=Idle;
		setSocket(s, 1, mainloop);
	}
	
	if(socketdesc < 0){
		error_(errno);
		return(-1);
	}
	server=gethostbyname(hostname.c_str());
	if(server==NULL)
	{
		eDebug("can't resolve %s", hostname.c_str());
		error_(errno);
		return(-2);
	}
	memset(&serv_addr, 0, sizeof(serv_addr));
	serv_addr.sin_family=AF_INET;
	memmove(&serv_addr.sin_addr.s_addr, server->h_addr, server->h_length);
	serv_addr.sin_port=htons(port);
	res=::connect(socketdesc, (const sockaddr*)&serv_addr, sizeof(serv_addr));
	if ((res < 0) && (errno != EINPROGRESS) && (errno != EINTR))
	{
		eDebug("can't connect to host: %s", hostname.c_str());
		close();
		error_(errno);
		return(-3);
	}
	if (res < 0)	// EINPROGRESS or EINTR
	{
		rsn->setRequested(rsn->getRequested()|eSocketNotifier::Write);
		mystate=Connecting;
	} else
	{
		mystate=Connection;
		connected_();
	}
	return(0);
}
Example #14
0
struct videoTypeParms eMPConfig::getVideoParms(eString name, eString extension)
{
	struct videoTypeParms vparms;
	
	extension = extension.upper();
	
//	eDebug("[MPCONFIG] name = %s, extension = %s", name.c_str(), extension.c_str());
	
	vparms.name = "default";
	vparms.extension = extension;
	vparms.videoRate = "1024";
	vparms.audioRate = "192";
	vparms.videoCodec = "mpeg2";
	vparms.videoRatio = "704x576";
	vparms.transcodeVideo = false;
	vparms.transcodeAudio = false;
	vparms.fps = "25";
	vparms.soutadd = false;

	for ( unsigned int i = 0; i < videoParmList.size(); i++)
	{
		if ((videoParmList[i].extension == extension) && (videoParmList[i].name == name))
		{
			vparms = videoParmList[i];
			break;
		}
	}
//	eDebug("[MPCONFIG] vparms.extension: %s",vparms.extension.c_str());
	return vparms;
}
Example #15
0
int eEPGSearch::EPGSearching(eString title, int ExactMatch, int CaseSensitive, int TimeSpanSearch, tm beginTime, tm endTime, int Days, int Max_Duration )
{
	eString search;
	eString current;
	int intFound = 0;
	search = title;

	
	if (!ExactMatch && !CaseSensitive)
		search = title.upper();

	SearchResultsEPG.clear();
	current = "1:15:fffffffe:12:ffffffff:0:0:0:0:0:";
	eServiceInterface *iface=eServiceInterface::getInstance();
	if (iface)
	{		
		if (search != "")
		{
			eServiceReference current_service=string2ref(current);
			eSearchAllTVServices2 conv( *iface, search,ExactMatch, CaseSensitive, TimeSpanSearch, beginTime, endTime, Days, Max_Duration);
			Signal1<void,const eServiceReference&> signal;
			signal.connect(slot(conv, &eSearchAllTVServices2::addEntry));
			iface->enterDirectory(current_service, signal);
			iface->leaveDirectory(current_service);
		}
	}
	if (SearchResultsEPG.size() )
		intFound = 1;
	return intFound;
}
Example #16
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));
    }
}
Example #17
0
int eListBoxBase::setProperty(const eString &prop, const eString &value)
{
	if (prop == "noPageMovement")
	{
		if (value == "off")
			flags &= ~flagNoPageMovement;
		else
			flags |= flagNoPageMovement;
	}
	else if (prop == "noUpDownMovement")
	{
		if (value == "off")
			flags &= ~flagNoUpDownMovement;
		else
			flags |= flagNoUpDownMovement;
	}
	else if (prop=="activeForegroundColor")
		colorActiveF=eSkin::getActive()->queryScheme(value);
	else if (prop=="activeBackgroundColor")
		colorActiveB=eSkin::getActive()->queryScheme(value);
	else if (prop=="showEntryHelp")
		setFlags( flagShowEntryHelp );
	else if (prop=="columns")
		setColumns( value?atoi(value.c_str()):1 );
	else
		return eDecoWidget::setProperty(prop, value);

	return 0;
}
Example #18
0
int tcpOpen(eString serverIP, int serverPort, int i)
{
	struct sockaddr_in ads;
	socklen_t adsLen;
	int fd = -1;
	int rc = -1;
	int retry = 0;

	memset((char *)&ads, 0, sizeof(ads));
	ads.sin_family = AF_INET;
	ads.sin_addr.s_addr = inet_addr(serverIP.c_str());
	ads.sin_port = htons(serverPort);
	adsLen = sizeof(ads);

	if ((fd = socket(AF_INET, SOCK_STREAM, 0)) != -1)
	{
		fcntl(fd, F_SETFL, O_NONBLOCK);
		retry = 100 * i;
		while (retry-- > 0 && rc < 0)
		{
			if ((rc = connect(fd, (struct sockaddr *)&ads, adsLen)) < 0)
				usleep(10000); // 10 milliseconds
		}
		if (rc < 0)
		{
			close(fd);
			fd = -1;
		}
	}
	eDebug("[MOVIEPLAYER] tcpOpen: socket fd = %d, waited %d milliseconds", fd, (100 * i - retry) * 10);

	return fd;
}
Example #19
0
bool eMountPoint::isIdentical(eString mountOn, eString mountDev)
{
	bool found = false;
	
	if ((mountOn == localDir) || (mountOn.strReplace("/media/", "/mnt/") == localDir))
	{
		switch (fstype)
		{
			case nfsMount:
				found =	(eString().sprintf("%s:%s", remoteHost.c_str(), mountDir.c_str()) == mountDev);
				if (!found)
					found =	(eString().sprintf("%s:/%s", remoteHost.c_str(), mountDir.c_str()) == mountDev);
				break;
			case cifsMount:
				found =	(eString().sprintf("//%s/%s", remoteHost.c_str(), mountDir.c_str()) == mountDev);
				if (!found)
					found =	(eString().sprintf("//%s/%s", remoteIP.c_str(), mountDir.c_str()) == mountDev);
				break;
			case smbMount:
				found =	(eString().sprintf("//%s/%s", remoteHost.upper().c_str(), mountDir.upper().c_str()) == mountDev.upper());
				if (!found)
					found =	(eString().sprintf("//%s/%s", remoteIP.c_str(), mountDir.upper().c_str()) == mountDev.upper());
				break;
	#ifdef ENABLE_DEVMOUNTS
			case deviceMount:
				found = ((mountOn == localDir) && (mountDev == mountDir) && remoteHost == (eString) "");
				break;
	#endif
			default:
				break;
		}
	}

	return found;
}
Example #20
0
const eString& eListBoxEntryTransponder::redraw(gPainter *rc, const eRect& rect, gColor coActiveB, gColor coActiveF, gColor coNormalB, gColor coNormalF, int state)
{
    bool b = (state == 2);

    drawEntryRect( rc, rect, coActiveB, coActiveF, coNormalB, coNormalF, b?0:state );

    static eString text;
    text.sprintf("%d / %d / %c", tp->satellite.frequency/1000, tp->satellite.symbol_rate/1000, tp->satellite.polarisation?'V':'H' );
    rc->setFont(font);
    rc->renderText( rect, text );

    if ( b )
        drawEntryBorder( rc, rect, coActiveB, coActiveF, coNormalB, coNormalF );

    return text;
}
Example #21
0
void eServicePlaylistHandler::addFile(void *node, const eString &filename)
{
	if (filename.right(4).upper()==".M3U")
		eServiceFileHandler::getInstance()->addReference(node, eServiceReference(id,
			eServiceReference::mustDescent|
			eServiceReference::canDescent|
			eServiceReference::sort1, filename));
}
Example #22
0
void eWidget::setShortcut(const eString &shortcutname)
{
	if (shortcut)
		getTLW()->actionListener.remove(this);
	shortcut=i_shortcutActions->map.findAction(shortcutname.c_str());
	if (shortcut)
		getTLW()->actionListener.push_back(this);
}
Example #23
0
eString buildShortServiceName( const eString &str )
{
	eString tmp;
	static char stropen[3] = { 0xc2, 0x86, 0x00 };
	static char strclose[3] = { 0xc2, 0x87, 0x00 };
	unsigned int open=eString::npos-1;

	while ( (open = str.find(stropen, open+2)) != eString::npos ) {
	        unsigned int close = str.find(strclose, open);
	        if ( close != eString::npos )
			tmp += str.mid( open+2, close-(open+2) );
	}
	if ( tmp == "" )
		tmp = str;

	return tmp;
}
Example #24
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);
}
Example #25
0
	eLanguageEntry(eListBox<eLanguageEntry>* lb, eString id, eString name)
		: eListBoxEntry( (eListBox<eListBoxEntry>*)lb), id(id), name(name)
	{
		eString language=id;
		if (id.find('_') != eString::npos)
			id=id.left(id.find('_'));
		eString str("country_");
		str+=getCountry(id.c_str());
		pixmap=eSkin::getActive()->queryImage(str);
		if (!pixmap)
		{
			eDebug("dont find %s use country_missing", str.c_str() );
			pixmap=eSkin::getActive()->queryImage(eString("country_missing"));
		}
		if (!font.pointSize)
			font = eSkin::getActive()->queryFont("eListBox.EntryText.normal");
		para=0;
	}
Example #26
0
void eServiceHandlerDVB::addFile(void *node, const eString &filename)
{
	if (filename.right(3).upper()==".TS")
	{
//		struct stat64 s;
//		if (::stat64(filename.c_str(), &s))
//			return;
		eServiceFileHandler::getInstance()->addReference(node, eServiceReference(id, 0, filename));
	}
}
Example #27
0
static bool fileSystemIsSupported(eString fsname)
{
	eString s;
	bool found = false;
	fsname = fsname.upper();
	std::ifstream in("/proc/filesystems", std::ifstream::in);

	// Note /proc/filesystems has two columns, first column could be "nodev",
	// the second the real fs. We check both here which doesn't harm
	eDebug("[MOUNT] looking for %s", fsname.c_str());
	while (in >> s)
	{
		if (found = (s.upper() == fsname))
			break;
	}
			
	in.close();
	return found;
}
Example #28
0
eS32 readValInstanciation(const eString& s, int start, int end, eU32* parMap, eF32* params, const eF32* prevParams) {
	int pos = start;
	int v = 0;

	if((pos >= end) || (s.at(pos) != '(')) {
		return pos;
	} else {
		pos++;
		while((pos < end) && (s.at(pos) != ')')) {
			if(s.at(pos) == ',') {
				pos++;
				continue;
			}
			pos = calculateTerm(s, pos, end, parMap, prevParams, params[v++]); 
			eASSERT(pos != -1);
		}
	}
	return pos + 1;
}
Example #29
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;
}
Example #30
0
// Converts non recommended mountpoints like /mnt/server to /media/server and so on
eString eNetworkMountMgr::fixNonRecommendedMountpoint(const eString& _mountpoint)
{
	eString fixedMountpoint;
	eString mountpoint = _mountpoint;

	// Add leading slash
	if(mountpoint.left(1) != "/")
	{
		// xxx -> /xxx
		mountpoint = "/" + mountpoint;
	}
	
	// Remove trailing slash
	if(mountpoint.right(1) == "/")
	{
		// /xxx/ -> /xxx
		mountpoint = mountpoint.left(mountpoint.length() - 1);
	}
	
	if(mountpoint.left(9) == "/var/mnt/")
	{
		// /var/mnt/xxx -> /media/xxx
		fixedMountpoint = "/media/" + mountpoint.mid(9);
	}
	else if(mountpoint == "/hdd")
	{
		// /hdd -> /media/hdd
		fixedMountpoint = "/media/hdd";
	}
	else if((mountpoint == "/mnt") || (mountpoint == "/media") || (mountpoint == "/var/mnt"))
	{
		// /mnt, /media, /var/mnt -> /media/server1
		// Yes, I've seen people mounting on /mnt or /media
		fixedMountpoint = "/media/server1";
	}
	else if(mountpoint.left(5) == "/hdd/")
	{
		// /hdd/xxx -> /media/hdd/xxx
		fixedMountpoint = "/media/hdd/" + mountpoint.mid(5);
	}
	else if(mountpoint.left(5) == "/mnt/")
	{
		// /mnt/xxx -> /media/xxx
		fixedMountpoint = "/media/" + mountpoint.mid(5);
	}
	else
	{
		// All other mountpoints are right
		fixedMountpoint = mountpoint;
	}
	
	eDebug("[MOUNT] original mountpoint '%s' -> recommended '%s'", _mountpoint.c_str(), fixedMountpoint.c_str());
	return fixedMountpoint;
}