Skip to content

Commit

Permalink
add sudo password. Fixes #1588
Browse files Browse the repository at this point in the history
  • Loading branch information
clinton-hall committed Apr 6, 2019
1 parent 13523ea commit d45bc20
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 8 deletions.
2 changes: 2 additions & 0 deletions autoProcessMedia.cfg.spec
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@
safe_mode = 1
# Turn this on to disable additional extraction attempts for failed downloads. Default = 0 will attempt to extract and verify if media is present.
no_extract_failed = 0
# Set the sudo password for any functions that require root permissions (e.g. mounting .iso images for transcoding)
sudo_password =

[Posix]
### Process priority setting for External commands (Extractor and Transcoder) on Posix (Unix/Linux/OSX) systems.
Expand Down
3 changes: 3 additions & 0 deletions core/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@
LOG_GIT = None
SYS_ENCODING = None
FAILED = False
SUDO_PASS = None

AUTO_UPDATE = None
NZBTOMEDIA_VERSION = __version__
Expand Down Expand Up @@ -365,6 +366,7 @@ def configure_general():
global CHECK_MEDIA
global SAFE_MODE
global NOEXTRACTFAILED
global SUDO_PASS

# Set Version and GIT variables
VERSION_NOTIFY = int(CFG['General']['version_notify'])
Expand All @@ -378,6 +380,7 @@ def configure_general():
CHECK_MEDIA = int(CFG['General']['check_media'])
SAFE_MODE = int(CFG['General']['safe_mode'])
NOEXTRACTFAILED = int(CFG['General']['no_extract_failed'])
SUDO_PASS = CFG['General']['sudo_password']


def configure_updates():
Expand Down
28 changes: 20 additions & 8 deletions core/transcoder.py
Original file line number Diff line number Diff line change
Expand Up @@ -678,10 +678,16 @@ def mount_iso(item, new_dir, bitbucket): #Currently only supports Linux Mount wh
return []
mount_point = os.path.join(os.path.dirname(os.path.abspath(item)),'temp')
make_dir(mount_point)
cmd = ['mount', '-o', 'loop', item, mount_point]
print_cmd(cmd)
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=bitbucket)
out, err = proc.communicate()
if core.SUDO_PASS:
cmd = ['sudo', '-S', 'mount', '-o', 'loop', item, mount_point]
print_cmd(cmd)
proc = subprocess.Popen(cmd, stdin=subprocess.PIPE, stderr=bitbucket)
out, err = proc.communicate(core.SUDO_PASS + '\n')
else:
cmd = ['mount', '-o', 'loop', item, mount_point]
print_cmd(cmd)
proc = subprocess.Popen(cmd, stdin=subprocess.PIPE, stderr=bitbucket)
out, err = proc.communicate()
core.MOUNTED = mount_point # Allows us to verify this has been done and then cleanup.
for root, dirs, files in os.walk(mount_point):
for file in files:
Expand Down Expand Up @@ -962,11 +968,17 @@ def transcode_directory(dir_name):
# this will be 0 (successful) it all are successful, else will return a positive integer for failure.
final_result = final_result + result
if core.MOUNTED: # In case we mounted an .iso file, unmount here.
cmd = ['umount', '-l', core.MOUNTED] # currently for Linux only.
print_cmd(cmd)
time.sleep(5) # play it safe and avoid failing to unmount.
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=bitbucket)
out, err = proc.communicate()
if core.SUDO_PASS:
cmd = ['sudo', '-S', 'umount', '-l', core.MOUNTED]
print_cmd(cmd)
proc = subprocess.Popen(cmd, stdin=subprocess.PIPE, stderr=bitbucket)
out, err = proc.communicate(core.SUDO_PASS + '\n')
else:
cmd = ['umount', '-l', core.MOUNTED]
print_cmd(cmd)
proc = subprocess.Popen(cmd, stdin=subprocess.PIPE, stderr=bitbucket)
out, err = proc.communicate()
time.sleep(5)
os.rmdir(core.MOUNTED)
core.MOUNTED = None
Expand Down

0 comments on commit d45bc20

Please sign in to comment.