__init__.py 文件源码

python
阅读 21 收藏 0 点赞 0 评论 0

项目:OctoPrint-PolarCloud 作者: markwal 项目源码 文件源码
def _get_keys(self):
        data_folder = self.get_plugin_data_folder()
        key_filename = os.path.join(data_folder, 'p3d_key')
        self._logger.debug('key_filename: {}'.format(key_filename))
        if not os.path.isfile(key_filename):
            self._logger.debug('Generating key pair')
            key = crypto.PKey()
            key.generate_key(crypto.TYPE_RSA, 2048)
            with open(key_filename, 'w') as f:
                f.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, key))
            if sys.platform != 'win32':
                os.chmod(key_filename, stat.S_IRUSR | stat.S_IWUSR)
        try:
            with open(key_filename) as f:
                key = f.read()
            self._key = crypto.load_privatekey(crypto.FILETYPE_PEM, key)
        except:
            self._key = None
            self._logger.error("Unable to generate or access key.")
            return

        if hasattr(self._key, 'dump_publickey'):
            self._public_key = crypto.dump_publickey(crypto.FILETYPE_PEM, self._key)
        else:
            pubkey_filename = key_filename + ".pub"
            if not os.path.isfile(pubkey_filename) or os.path.getsize(pubkey_filename) == 0:
                if sys.platform != 'win32':
                    os.chmod(key_filename, stat.S_IRUSR | stat.S_IWUSR)
                command_line = "ssh-keygen -e -m PEM -f {key_filename} > {pubkey_filename}".format(key_filename=key_filename, pubkey_filename=pubkey_filename)
                returncode, stderr_text = self._system(command_line)
                if returncode != 0:
                    self._logger.error("Unable to generate public key (may need to manually upgrade pyOpenSSL, see README) {}: {}".format(returncode, stderr_text))
                    self._key = None
                    try:
                        os.remove(pubkey_filename)
                    except OSError:
                        pass
                    return
            with open(pubkey_filename) as f:
                self._public_key = f.read()
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号