diff --git a/packages/addons/service/softcam/oscam/changelog.txt b/packages/addons/service/softcam/oscam/changelog.txt index bb019d8601..b9bfa0daac 100644 --- a/packages/addons/service/softcam/oscam/changelog.txt +++ b/packages/addons/service/softcam/oscam/changelog.txt @@ -1,3 +1,6 @@ +2.0.2 +- add possibilty to start / stop addon from addon manager with enable / disable + 2.0.1 - enable libusb support for smartcard support diff --git a/packages/addons/service/softcam/oscam/meta b/packages/addons/service/softcam/oscam/meta index 2906771d55..69b7c24882 100644 --- a/packages/addons/service/softcam/oscam/meta +++ b/packages/addons/service/softcam/oscam/meta @@ -21,7 +21,7 @@ PKG_NAME="oscam" PKG_VERSION="6136" -PKG_REV="1" +PKG_REV="2" PKG_ARCH="any" PKG_LICENSE="GPL" PKG_SITE="http://streamboard.gmc.to/wiki/index.php/OSCam/en" diff --git a/packages/addons/service/softcam/oscam/source/bin/oscam.service b/packages/addons/service/softcam/oscam/source/bin/oscam.start similarity index 84% rename from packages/addons/service/softcam/oscam/source/bin/oscam.service rename to packages/addons/service/softcam/oscam/source/bin/oscam.start index 97c8b3c807..9f1e1946d9 100755 --- a/packages/addons/service/softcam/oscam/source/bin/oscam.service +++ b/packages/addons/service/softcam/oscam/source/bin/oscam.start @@ -21,8 +21,15 @@ # http://www.gnu.org/copyleft/gpl.html ################################################################################ +. /etc/profile + +LOCKDIR="/var/lock/" +LOCKFILE="oscam.disabled" + # Check if process is already running -if [ ! $(pidof oscam) ]; then +# use "$(pidof)" instead of $(pidof). otherwise 'if' statement will fail +# because oscam spawns at least one 'extra' process +if [ ! "$(pidof oscam)" ]; then ADDON_DIR="$HOME/.xbmc/addons/service.softcam.oscam" ADDON_HOME="$HOME/.xbmc/userdata/addon_data/service.softcam.oscam" @@ -65,10 +72,14 @@ if [ ! $(pidof oscam) ]; then touch $ADDON_CONF_USER # Restart process if it terminates. - ( - while true; do - oscam $OSCAM_ARG > /dev/null 2>&1 - usleep 250000 - done - )& + if [ -f "$LOCKDIR/$LOCKFILE" ] ; then + rm -rf "$LOCKDIR/$LOCKFILE" + fi + while [ true ] ; do + if [ -f "$LOCKDIR/$LOCKFILE" ] ; then + break + fi + oscam $OSCAM_ARG > /dev/null 2>&1 + sleep 1 + done & fi diff --git a/packages/addons/service/softcam/oscam/source/bin/oscam.stop b/packages/addons/service/softcam/oscam/source/bin/oscam.stop new file mode 100755 index 0000000000..683f6008f6 --- /dev/null +++ b/packages/addons/service/softcam/oscam/source/bin/oscam.stop @@ -0,0 +1,35 @@ +#!/bin/sh + +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +. /etc/profile + +LOCKDIR="/var/lock/" +LOCKFILE="oscam.disabled" + +# use "$(pidof)" instead of $(pidof). otherwise 'if' statement will fail +# because oscam spawns at least one 'extra' process +if [ "$(pidof oscam)" ];then + mkdir -p "$LOCKDIR" + touch "$LOCKDIR/$LOCKFILE" + killall -9 oscam +fi + diff --git a/packages/addons/service/softcam/oscam/source/default.py b/packages/addons/service/softcam/oscam/source/default.py index a4f19173ac..301f33903e 100644 --- a/packages/addons/service/softcam/oscam/source/default.py +++ b/packages/addons/service/softcam/oscam/source/default.py @@ -19,6 +19,22 @@ # http://www.gnu.org/copyleft/gpl.html ################################################################################ -import xbmc, time, os, subprocess +import xbmc, time, os, subprocess, xbmcaddon -os.system("oscam.service") +__scriptname__ = "OSCAM Service" +__author__ = "OpenELEC" +__url__ = "http://www.openelec.tv" +__settings__ = xbmcaddon.Addon(id='service.softcam.oscam') +__cwd__ = __settings__.getAddonInfo('path') +__start__ = xbmc.translatePath( os.path.join( __cwd__, 'bin', "oscam.start") ) +__stop__ = xbmc.translatePath( os.path.join( __cwd__, 'bin', "oscam.stop") ) + +#make binary files executable in adson bin folder +subprocess.Popen("chmod -R +x " + __cwd__ + "/bin/*" , shell=True, close_fds=True) + +subprocess.Popen(__start__, shell=True, close_fds=True) + +while (not xbmc.abortRequested): + time.sleep(0.250) + +subprocess.Popen(__stop__, shell=True, close_fds=True)