Server IP : 92.204.138.22 / Your IP : 18.117.172.240 Web Server : Apache System : Linux ns1009439.ip-92-204-138.us 4.18.0-553.8.1.el8_10.x86_64 #1 SMP Tue Jul 2 07:26:33 EDT 2024 x86_64 User : internationaljou ( 1019) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/self/root/usr/lib/panopta-agent/dependencies/phacter/ |
Upload File : |
# This software may be freely redistributed under the terms of the GNU # general public license. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import platform import sys import urllib try: import httplib except: import http.client as httplib from types import ModuleType class Lazy(object): ''' A decorator that sets a static function as an available property on a class and executes it lazily ''' def __init__(self, func): self._func = func def __get__(self, obj, _=None): if obj is None: return self value = self._func() setattr(obj, self._func.func_name, value) return value class Phacter(object): ''' The main Phacter class ''' __version__ = '0.2.0' __license__ = 'GPLv2' __author__ = 'Dan Radez <dradez@redhat.com>' phacts = ['kernel'] platform_name = platform.system().lower() kernel = property(lambda self: self.platform_name) phacterversion = __version__ def __init__(self): ''' load facts platform specific ''' platform_imp = __import__('phacter', None, None, [self.platform_name]) platform_obj = getattr(platform_imp, self.platform_name) for method in dir(platform_obj): if method[0] is not '_': call = getattr(platform_obj, method) if type(call) is not ModuleType: setattr(self.__class__, method, Lazy(call)) self.phacts.append(method) self.phacts.sort() def __getitem__(self, key): ''' makes me subscriptable ''' if hasattr(self, key): return getattr(self, key) else: return '' if __name__ == 'phacter': # replace the phacter module in memory with the class sys.modules[__name__] = Phacter()