Source code for himbeerecouch.util

import hashlib
import threading
import time
import sys
import traceback

[docs]def getmacid(interface=None): """ Get MAC id of interface :param interface: which interface to check, (if None, then 'etho') :type interface: str :rtype: int """ if interface is None: interface = "eth0" return int( open('/sys/class/net/{}/address'.format(interface)).read() .rstrip() .replace(':',''), 16)
[docs]def getipaddr(interface=None): """ Get ip address of interface :param interface: which interface to check, (if None, then 'etho') :type interface: str :rtype: str """ import netifaces as ni if interface is None: interface = "eth0" return ni.ifaddresses(interface)[ni.AF_INET][0]['addr']
[docs]def getserial(): """ Return serial number of RaspPi :rtype: str """ # Extract serial from cpuinfo file cpuserial = "ERROR000000000" try: f = open('/proc/cpuinfo','r') for line in f: if line[0:6]=='Serial': cpuserial = line[10:26] break f.close() except: pass return cpuserial
[docs]def getpassword(): """ Get password, which is a combination of mac id and serial number :rtype: str """ return str(hashlib.sha1(str(getmacid()) + getserial()).hexdigest())
[docs]def stop_blinking(v): """ stop blinking the leds """ t, o = v o.clear() t.join()
[docs]def stack_trace(ignore_from=None): """ Return stack trace as list of strings, ignoring beginning at the function given (ignore_from). See usage in :func:`himbeerecouch.rpc.RPCObject.output_handler` """ code = [] if ignore_from is None: ignore_from = stack_trace try: ignore_from = ignore_from.__name__ except: ignore_from = str(ignore_from) all_items = sys._current_frames().items() code.append("# Total threads: {}".format(len(all_items))) for threadId, stack in all_items: code.append("\n") code.append("# ThreadID: {}".format(threadId)) for filename, lineno, name, line in traceback.extract_stack(stack): if name == ignore_from: break code.append(' File: "{}", line {}, in {}'.format(filename, lineno, name)) if line: code.append(" {}".format(line.strip())) return code