def get(cls, name): with DB() as db: try: return db['user.%s' % name] except KeyError: u = cls(name) db['user.%s' % name] = u return u
def get(cls, id, name=None): with DB() as db: try: return db['controlpoint.%s' % id] except KeyError: logging.error('new ControlPoint %s %s', id, name) cp = cls(id, name) db['controlpoint.%s' % id] = cp return cp
def __getattr__(self, attr): if attr == 'UDN': from persist import DB with DB() as db: try: self.UDN = db['udn.%s' % self._id] except KeyError: self.UDN = db['udn.%s' % self._id] = utils.genUUID() return self.UDN elif attr == 'friendlyName': self.friendlyName = self._id return self.friendlyName return super(BaseDevice, self).__getattr__(attr)
def certificate(type): with DB() as db: try: pem = db['certfile.%s' % type] cert = crypto.load_certificate(crypto.FILETYPE_PEM, pem) key = crypto.load_privatekey(crypto.FILETYPE_PEM, pem) except KeyError: cert, key = _gen_certificate(type) pem = crypto.dump_certificate(crypto.FILETYPE_PEM, cert)\ + crypto.dump_privatekey(crypto.FILETYPE_PEM, key) db['certfile.%s' % type] = pem return (cert, key)
def certificate_file(type): if type in _CERTFILES: return _CERTFILES[type].name with DB() as db: try: pem = db['certfile.%s' % type] except KeyError: cert, key = _gen_certificate(type) pem = db['certfile.%s' % type] = cert.as_pem() + key.as_pem(cipher=None) from tempfile import NamedTemporaryFile temp = _CERTFILES[type] = NamedTemporaryFile('w', bufsize=0, suffix='.pem') temp.write(pem) return temp.name
def all(cls): with DB(False) as db: return [db[key] for key in db if key.startswith('controlpoint.')]
def all(cls): with DB(False) as db: return [db[key] for key in db if key.startswith('user.')]