Skip to content

Commit

Permalink
Fix OSError from os.getlogin() (RhBug:1251352)
Browse files Browse the repository at this point in the history
Inspired by RhBug:843434
  • Loading branch information
FrostyX committed Aug 21, 2015
1 parent e83c08f commit 679a6de
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 6 deletions.
2 changes: 1 addition & 1 deletion tracer/controllers/default.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,5 +119,5 @@ def _restartable_applications(self, applications, args):

def _user(self, user):
if user == '*': return None
elif not user: return os.getlogin()
elif not user: return System.user()
else: return user[0]
3 changes: 1 addition & 2 deletions tracer/controllers/resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,6 @@ def render_system(self):
uptime = str(uptime).split('.')[0]

users = set([user.name for user in psutil.get_users()])
user = os.getlogin()
package_managers = System.package_manager().names()

view = SystemView()
Expand All @@ -89,7 +88,7 @@ def render_system(self):
view.assign('package_managers', package_managers)
view.assign('init', System.init_system())
view.assign('uptime', uptime)
view.assign('user', user)
view.assign('user', System.user())
view.assign('users', users)
view.assign('version', __version__)
view.assign('rules_count', len(Rules.all()))
Expand Down
6 changes: 4 additions & 2 deletions tracer/paths.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import os
from os.path import dirname, realpath, expanduser
from tracer.resources.system import System


def __(paths):
Expand Down Expand Up @@ -49,7 +50,8 @@ def __(paths):
])

try:
USER_CONFIG_DIRS.append(expanduser('~' + os.getlogin()) + '/.config/tracer')
HOOKS_DIRS.append(expanduser('~' + os.getlogin()) + '/.config/tracer/hooks')
user = System.user()
USER_CONFIG_DIRS.append(expanduser('~' + user) + '/.config/tracer')
HOOKS_DIRS.append(expanduser('~' + user) + '/.config/tracer/hooks')
except OSError:
pass
3 changes: 2 additions & 1 deletion tracer/resources/applications.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
from tracer.resources.collections import ApplicationsCollection
from tracer.resources.lang import _
from tracer.resources.processes import Processes
from tracer.resources.system import System
import os
import re

Expand Down Expand Up @@ -190,7 +191,7 @@ def has_service_file(self):
@property
def helper(self):
helper = self._attributes["helper"] if self._attributes["helper"] else Applications._helper(self)
if os.getlogin() != "root" and self.type == Applications.TYPES["DAEMON"]:
if System.user() != "root" and self.type == Applications.TYPES["DAEMON"]:
if helper and not helper.startswith("sudo "):
helper = "sudo " + helper
return helper
Expand Down
9 changes: 9 additions & 0 deletions tracer/resources/system.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
from __future__ import absolute_import

# WARNING: There are imports in package_manager()
import os
import pwd
import importlib
import platform
import psutil
Expand Down Expand Up @@ -81,3 +83,10 @@ def boot_time():
@staticmethod
def python_version():
return "{}.{}.{}".format(version_info.major, version_info.minor, version_info.micro)

@staticmethod
def user():
# getlogin is prefered because it return current username even
# if python process is executed with sudo
try: return os.getlogin()
except OSError: return pwd.getpwuid(os.getuid())[0]

0 comments on commit 679a6de

Please sign in to comment.