CINXE.COM
secGear 标签 - Gitee.com
<!DOCTYPE html> <html lang='zh-CN'> <head> <link rel="alternate" type="application/atom+xml" title="Recent Releases to secGear" href="https://gitee.com/openeuler/secGear/releases.atom" /> <link rel="alternate" type="application/atom+xml" title="Recent Tags to secGear" href="https://gitee.com/openeuler/secGear/tags.atom" /> <title>secGear 标签 - Gitee.com</title> <meta content='on' http-equiv='x-dns-prefetch-control'> <link href='//e.gitee.com' rel='dns-prefetch'> <link href='//files.gitee.com' rel='dns-prefetch'> <link href='//toscode.gitee.com' rel='dns-prefetch'> <link href='https://cn-assets.gitee.com' rel='dns-prefetch'> <link href='https://portrait.gitee.com' rel='dns-prefetch'> <link rel="shortcut icon" type="image/vnd.microsoft.icon" href="https://cn-assets.gitee.com/assets/favicon-9007bd527d8a7851c8330e783151df58.ico" /> <link rel="canonical" href="https://gitee.com/openeuler/secGear" /> <meta content='gitee.com/openeuler/secGear git https://gitee.com/openeuler/secGear.git' name='go-import'> <meta charset='utf-8'> <meta content='always' name='referrer'> <meta content='Gitee' property='og:site_name'> <meta content='Object' property='og:type'> <meta content='https://gitee.com/openeuler/secGear/tags' property='og:url'> <meta content='https://gitee.com/static/images/logo_themecolor.png' itemprop='image' property='og:image'> <meta content='secGear 标签 - Gitee.com' itemprop='name' property='og:title'> <meta content='仓库 openEuler/secGear 的 Tags' property='og:description'> <meta content='码云,Gitee,代码托管,Git,Git@OSC,Gitee.com,开源,内源,项目管理,版本控制,开源代码,代码分享,项目协作,开源项目托管,免费代码托管,Git代码托管,Git托管服务' name='Keywords'> <meta content='仓库 openEuler/secGear 的 Tags' itemprop='description' name='Description'> <meta content='pc,mobile' name='applicable-device'> <meta content="IE=edge" http-equiv="X-UA-Compatible" /> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="1HjaA9fl4h7hdVssK4iBrGyQQexFYZiIzR/vxGyyz88e10s27uDHBIWT05gPq05FjK5eK9gFjdfp8lizy6kMiQ==" /> <link rel="stylesheet" media="all" href="https://cn-assets.gitee.com/assets/application-dd3fda160256112913699f4fc9a0b540.css" /> <script> //<![CDATA[ window.gon = {};gon.locale="zh-CN";gon.sentry_dsn=null;gon.baidu_register_hm_push=null;gon.info={"controller_path":"taggeds","action_name":"index","current_user":false};gon.tour_env={"current_user":null,"action_name":"index","original_url":"https://gitee.com/openeuler/secGear/tags","controller_path":"taggeds"};gon.http_clone="https://gitee.com/openeuler/secGear.git";gon.user_project="openeuler/secGear";gon.manage_branch="管理分支";gon.manage_tag="管理标签";gon.enterprise_id=5292411;gon.create_reaction_path="/openeuler/secGear/reactions";gon.ipipe_base_url="https://go-api.gitee.com";gon.artifact_base_url="https://go-repo.gitee.com";gon.gitee_go_remote_url="https://go.gitee.com/assets";gon.gitee_go_active=false;gon.current_project_is_mirror=false;gon.show_repo_comment=false;gon.diagram_viewer_path="https://diagram-viewer.giteeusercontent.com";gon.ent_host="e.gitee.com"; //]]> </script> <script src="https://cn-assets.gitee.com/assets/application-1a4bf2ba7b1e19f0f3f7b1bf63122b0b.js"></script> <script src="https://cn-assets.gitee.com/assets/lib/jquery.timeago.zh-CN-4a4818e98c1978d2419ab19fabcba740.js"></script> <link rel="stylesheet" media="all" href="https://cn-assets.gitee.com/assets/projects/application-46b94c31ba11ae8c37eacce2bdb5603e.css" /> <script src="https://cn-assets.gitee.com/assets/projects/app-7ece8b97f8abb02ddf4a8d6d72a4ed2d.js"></script> <script type='text/x-mathjax-config'> MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [["$$","$$"],["\\[","\\]"]], processEscapes: true, skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code'], ignoreClass: "container|files", processClass: "markdown-body" } }); </script> <script src="https://cn-assets.gitee.com/uploads/resources/MathJax-2.7.2/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script> (function () { var messages = { 'zh-CN': { addResult: '增加 <b>{term}</b>', count: '已选择 {count}', maxSelections: '最多 {maxCount} 个选择', noResults: '未找到结果', serverError: '连接服务器时发生错误' }, 'zh-TW': { addResult: '增加 <b>{term}</b>', count: '已選擇 {count}', maxSelections: '最多 {maxCount} 個選擇', noResults: '未找到結果', serverError: '連接服務器時發生錯誤' } } if (messages[gon.locale]) { $.fn.dropdown.settings.message = messages[gon.locale] } }()); </script> <script> var userAgent = navigator.userAgent; var isLessIE11 = userAgent.indexOf('compatible') > -1 && userAgent.indexOf('MSIE') > -1; if(isLessIE11){ var can_access = "" if (can_access != "true"){ window.location.href = "/incompatible.html"; } } document.addEventListener("error", function (ev) { var elem = ev.target; if (elem.tagName.toLowerCase() === 'img') { elem.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAAAAACIM/FCAAACh0lEQVR4Ae3ch5W0OgyG4dt/mQJ2xgQPzJoM1m3AbALrxzrf28FzsoP0HykJEEAAAUQTBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEkKK0789+GK/I2ezfQB522PnS1qc8pGgXvr4tE4aY0XOUWlGImThWgyCk6DleixzE7qwBkg/MGiDPlVVAyp1VQGrPKiACDhFI6VkF5LmzCki+sg7IwDoglnVAil0IMkeG9CyUiwsxLFUVFzJJOQaKCjFCDN9RXMjIX7W6ztZXZDKKCyn8sWJvH+nca7WHDN9lROlAliPH9iRKCPI4cswFJQWxB46toLQgQ9jhn5QYZA9DOkoMUoQde5YapAxDWkoNYsOQR3KQd9CxUnIQF4S49CB9ENKlBxmDEKsFUgMCCCCAAHIrSF61f6153Ajy8nyiPr8L5MXnmm4CyT2fzN4DUvHZ+ntA2tOQBRBAAAEEEEAAAQQQ7ZBaC6TwSiDUaYHQ2yuB0MN+ft+43whyrs4rgVCjBUKTFshLC6TUAjGA3AxSaYFYLZBOC2RUAsk8h5qTg9QcbEoOsoQhQ2qQhsO5xCD5dgB5JQaZ+KBKGtKecvR81Ic0ZDjByKdDx0rSEDZ/djQbH+bkIdvfJFm98BfV8hD2zprfVdlu9PxVeyYAkciREohRAplJCaRSAplJCcQogTjSAdlyHRBvSAekJR0QRzogA+mADJkOiCPSAPEtqYBshlRAXC43hxix2QiOuEZkVERykGyNo9idIZKE0HO7XrG6OiMShlDWjstVzdPgXtUH9v0CEidAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQP4HgjZxTpdEii0AAAAASUVORK5CYII="; } }, true); </script> </head> <script src="//res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> <script> var title = document.title.replace(/( - Gitee| - 码云)$/, '') imgUrl = ''; document.addEventListener('DOMContentLoaded', function(event) { var imgUrlEl = document.querySelector('.readme-box .markdown-body > img, .readme-box .markdown-body :not(a) > img'); imgUrl = imgUrlEl && imgUrlEl.getAttribute('src'); if (!imgUrl) { imgUrlEl = document.querySelector('meta[itemprop=image]'); imgUrl = imgUrlEl && imgUrlEl.getAttribute('content'); imgUrl = imgUrl || "https://gitee.com/static/images/logo_themecolor.png"; } wx.config({ debug: false, appId: "wxff219d611a159737", timestamp: "1742595858", nonceStr: "808e7b6a10b5da9c4c10f169ecfd224a", signature: "8a0d0eba429c1bfcd288c78357d6e811f5762a92", jsApiList: [ 'onMenuShareTimeline', 'onMenuShareAppMessage' ] }); wx.ready(function () { wx.onMenuShareTimeline({ title: title, // 分享标题 link: "https://gitee.com/openeuler/secGear/tags", // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致 imgUrl: imgUrl // 分享图标 }); wx.onMenuShareAppMessage({ title: title, // 分享标题 link: "https://gitee.com/openeuler/secGear/tags", // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致 desc: document.querySelector('meta[name=Description]').getAttribute('content'), imgUrl: imgUrl // 分享图标 }); }); wx.error(function(res){ console.error('err', res) }); }) </script> <body class='git-project lang-zh-CN'> <header class='common-header fixed noborder' id='git-header-nav'> <div class='ui container'> <div class='ui menu header-menu header-container'> <div class='git-nav-expand-bar'> <i class='iconfont icon-mode-table'></i> </div> <div class='gitee-nav__sidebar'> <div class='gitee-nav__sidebar-container'> <div class='gitee-nav__sidebar-top'> <div class='gitee-nav__avatar-box'></div> <div class='gitee-nav__buttons-box'> <a class="ui button small fluid orange" href="/login">登录</a> <a class="ui button small fluid basic is-register" href="/signup">注册</a> </div> </div> <div class='gitee-nav__sidebar-middle'> <div class='gitee-nav__sidebar-list'> <ul> <li class='gitee-nav__sidebar-item'> <a href="/explore"><i class='iconfont icon-ic-discover'></i> <span class='gitee-nav__sidebar-name'>开源</span> </a></li> <li class='gitee-nav__sidebar-item'> <a href="/enterprises"><i class='iconfont icon-ic-enterprise'></i> <span class='gitee-nav__sidebar-name'>企业版</span> </a></li> <li class='gitee-nav__sidebar-item'> <a href="/education"><i class='iconfont icon-ic-education'></i> <span class='gitee-nav__sidebar-name'>高校版</span> </a></li> <li class='gitee-nav__sidebar-item split-line'></li> <li class='gitee-nav__sidebar-item'> <a href="/search"><i class='iconfont icon-ic-search'></i> <span class='gitee-nav__sidebar-name'>搜索</span> </a></li> <li class='gitee-nav__sidebar-item'> <a href="/help"><i class='iconfont icon-help-circle'></i> <span class='gitee-nav__sidebar-name'>帮助中心</span> </a></li> <li class='gitee-nav__sidebar-item'> <a href="/terms"><i class='iconfont icon-file'></i> <span class='gitee-nav__sidebar-name'>使用条款</span> </a></li> <li class='gitee-nav__sidebar-item'> <a href="/about_us"><i class='iconfont icon-issuepx'></i> <span class='gitee-nav__sidebar-name'>关于我们</span> </a></li> </ul> </div> </div> <div class='gitee-nav__sidebar-bottom'> <div class='gitee-nav__sidebar-close-button'> <i class='fa fa-angle-double-left'></i> </div> </div> </div> </div> <!-- /todo 10周年活动结束后 恢复 --> <div class='item gitosc-logo'> <a href="https://gitee.com"><img alt='Gitee - 基于 Git 的代码托管和研发协作平台' class='ui inline image' height='28' src='/static/images/logo.svg?t=158106664' title='Gitee - 基于 Git 的代码托管和研发协作平台' width='95'> <img alt='Gitee - 基于 Git 的代码托管和研发协作平台' class='ui inline black image' height='28' src='/static/images/logo-black.svg?t=158106664' title='Gitee - 基于 Git 的代码托管和研发协作平台' width='95'> </a></div> <a title="开源" class="item " href="/explore">开源 </a><a title="企业版" class="item " href="/enterprises">企业版 </a><a title="高校版" class="item " href="/education">高校版 </a><a title="私有云" class="item" target="_blank" href="https://gitee.cn?utm_source=giteecom">私有云 </a><a title="Gitee AI" class="item mr-3" id="gitee-blog" target="_blank" href="https://ai.gitee.com/?utm_sources=site_nav">模力方舟 <sup class='ui red label' style='right:-36px !important'> Gitee AI </sup> </a><div class='center responsive-logo'> <a href="https://gitee.com"><img alt='Gitee - 基于 Git 的代码托管和研发协作平台' class='ui inline image' height='24' src='/static/images/logo.svg?t=158106664' title='Gitee - 基于 Git 的代码托管和研发协作平台' width='85'> <img alt='Gitee - 基于 Git 的代码托管和研发协作平台' class='ui inline black image' height='24' src='/static/images/logo-black.svg?t=158106664' title='Gitee - 基于 Git 的代码托管和研发协作平台' width='85'> </a></div> <div class='right menu userbar right-header' id='git-nav-user-bar'> <form class="ui item" id="navbar-search-form" data-text-require="搜索关键字不能少于1个" data-text-filter="搜索格式不正确" action="/search" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="✓" /> <input type="hidden" name="type" id="navbar-search-type" /> <input type="hidden" name="fork_filter" id="fork_filter" value="on" /> <div class='ui search header-search'> <input type="text" name="q" id="navbar-search-input" value="" class="prompt" placeholder="搜开源" /> </div> </form> <script> var can_search_in_repo = 1, repo = "VFZSQk5VOVVhM2ROYWs1b1RucFplbHBuUFQxaE56WXpaZz09YTc2M2Y=", reponame = "openeuler/secGear"; $(function() { var $search = $('#navbar-search-form .ui.search'); $search.search({ apiSettings: { url: '/search/relative_project?q={query}', onResponse: function (res) { if (res && res.status === 200 && res.data) { var query = htmlSafe($search.search('get value')); res.data.map(function (item) { item.path_ns = '/' + item.path_ns; item.icon = 'iconfont icon-project-public'; }); res.data.unshift({ name_ns: "在全站搜索 <b class='hl'>" + query +"</b> 相关项目", path_ns: '/search?fork_filter=on&q=' + query, icon: 'iconfont icon-search' }); return res; } else { return { data: [] }; } } }, fields: { results: 'data', description: 'name_ns', url: 'path_ns', icon: 'icon' }, minCharacters: 1, maxResults: 10, searchDelay: 250, showNoResults: false, transition: 'fade' }); }); </script> <div class='ui item' id='feature-update-notice'> <div class='notice-update-icon'> <a class="notice-update-popup click-knowed" title="" href="javascript:void(0)"><img alt="功能更新" title="" class="bubl_icon bubl-off-icon" src="https://cn-assets.gitee.com/assets/bulb_off-24ee940be20998aace89a3f040cbc704.svg" /> <img alt="功能更新" title="" class="bubl_icon bubl-on-icon" src="https://cn-assets.gitee.com/assets/bulb_on-3986b1dc417285398e3d15671bd8f261.svg" /> </a></div> <div class='feature-update-notice-panel menu'> <div class='notice-img'> <img alt="" title="" class="notice-img-show" src="" /> </div> <div class='notice-update-title'></div> <div class='notice-update-des'></div> <div class='notice-btn-list d-flex-between'> <button name="button" type="button" class="ui basic orange button btn-notice btn-knowed click-knowed" style="margin-right: 0">我知道了</button> <a class="ui button orange btn-notice btn-details click-knowed" target="_blank" href="">查看详情</a> </div> </div> </div> <a class="item git-nav-user__login-item" href="/login">登录 </a><a class="item git-nav-user__register-item" href="/signup">注册 </a><script> $('.destroy-user-session').on('click', function() { $.cookie('access_token', null, { path: '/' }); }) </script> </div> </div> </div> </header> <script> Gitee.initNavbar() Gitee.initRepoRemoteWay() $.cookie('user_locale',null) </script> <script> var userAgent = navigator.userAgent; var isLessIE11 = userAgent.indexOf('compatible') > -1 && userAgent.indexOf('MSIE') > -1; if(isLessIE11){ var can_access = "" if (can_access != "true"){ window.location.href = "/incompatible.html"; } } </script> <div class='fixed-notice-infos'> <div class='all-messages'> <div class='ui info message' id='git-bulletin'> <a href=https://www.oschina.net/event/8595459 target='_blank'>4月12日模力方舟 AI 应用沙龙 · 杭州站报名开放,产研前线第一手干货,AI 开发者必冲!</a> <i class='icon remove' id='remove-bulletin'></i> </div> </div> <div class='ui container'> <div class='flash-messages' id='messages-container'></div> </div> <script> (function() { $(function() { var $error_box, alertTip, notify_content, notify_options, template; template = '<div data-notify="container" class="ui {0} message" role="alert">' + '<i data-notify="dismiss" class="close icon"></i>' + '<span data-notify="message">{2}</span>' + '</div>'; notify_content = null; notify_options = {}; alertTip = ''; $error_box = $(".flash_error.flash_error_box"); if (notify_options.type === 'error' && $error_box.length > 0 && !$.isEmptyObject(notify_content.message)) { if (notify_content.message === 'captcha_fail') { alertTip = "验证码不正确"; } else if (notify_content.message === 'captcha_expired') { alertTip = "验证码已过期,请点击刷新"; } else if (notify_content.message === 'not_found_in_database') { alertTip = "帐号或者密码错误"; } else if (notify_content.message === 'not_found_and_show_captcha') { alertTip = "帐号或者密码错误"; } else if (notify_content.message === 'phone_captcha_fail') { alertTip = "手机验证码不通过"; } else { alertTip = notify_content.message; } return $error_box.html(alertTip).show(); } else if (notify_content) { if ("index" === 'third_party_binding') { return $('#third_party_binding-message').html(notify_content.message).addClass('ui message red'); } notify_options.delay = 3000; notify_options.template = template; notify_options.offset = { x: 10, y: 30 }; notify_options.element = '#messages-container'; return $.notify(notify_content, notify_options); } }); }).call(this); </script> </div> <script> (function() { $(function() { var setCookie; setCookie = function(name, value) { $.cookie(name, value, { path: '/', expires: 365 }); }; $('#remove-bulletin, #remove-bulletin-dashboard').on('click', function() { setCookie('remove_bulletin', "gitee-maintain-1742526988"); $('#git-bulletin').hide(); }); $('#remove-member-bulletin').on('click', function() { setCookie('remove_member_bulletin', "gitee_member_bulletin"); $(this).parent().hide(); }); return $('#remove-gift-bulletin').on('click', function() { setCookie('remove_gift_bulletin', "gitee-gift-bulletin"); $(this).parent().hide(); }); }); }).call(this); </script> <script> function closeMessageBanner(pthis, type, val) { var json = {} val = typeof val === 'undefined' ? null : val $(pthis).parent().remove() if (type === 'out_of_enterprise_member') { json = {type: type, data: val} } else if (type === 'enterprise_overdue') { json = {type: type, data: val} } $.post('/profile/close_flash_tip', json) } </script> <div class='site-content'> <div class='git-project-header'> <div class='fixed-notice-infos'> <div class='ui info icon floating message green' id='fetch-ok' style='display: none'> <div class='content'> <div class='header status-title'> <i class='info icon status-icon'></i> 代码拉取完成,页面将自动刷新 </div> </div> </div> <div class='ui info icon floating message error' id='fetch-error' style='display: none'> <div class='content'> <div class='header status-title'> <i class='info icon status-icon'></i> <span class='error_msg'></span> </div> </div> </div> </div> <div class='ui container'> <div class='git-project-categories'> <a href="/explore">开源项目</a> <span class='symbol'>></span> <a href="/explore/program-develop">程序开发</a> <span class='symbol'>></span> <a href="/explore/security-dev">安全开发相关</a> <span class='symbol and-symbol'>&&</span> </div> <div class='git-project-header-details'> <div class='git-project-header-container'> <div class='git-project-header-actions'> <div class='ui tiny modal project-donate-modal' id='project-donate-modal'> <i class='iconfont icon-close close'></i> <div class='header'>捐赠</div> <div class='content'> 捐赠前请先登录 </div> <div class='actions'> <a class='ui blank button cancel'>取消</a> <a class='ui orange ok button' href='/login'>前往登录</a> </div> </div> <div class='ui small modal wepay-qrcode'> <i class='iconfont icon-close close'></i> <div class='header'> 扫描微信二维码支付 <span class='wepay-cash'></span> </div> <div class='content weqcode-center'> <img id='wepay-qrcode' src=''> </div> <div class='actions'> <div class='ui cancel blank button'>取消</div> <div class='ui ok orange button'>支付完成</div> </div> </div> <div class='ui mini modal' id='confirm-alipay-modal'> <div class='header'>支付提示</div> <div class='content'> 将跳转至支付宝完成支付 </div> <div class='actions'> <div class='ui approve orange button'>确定</div> <div class='ui blank cancel button'>取消</div> </div> </div> <span class='ui buttons basic watch-container'> <div class='ui dropdown button js-project-watch' data-watch-type='unwatch'> <input type='hidden' value=''> <i class='iconfont icon-watch'></i> <div class='text'> Watch </div> <i class='dropdown icon'></i> <div class='menu'> <a data-value="unwatch" class="item" rel="nofollow" data-method="post" href="/openeuler/secGear/unwatch"><i class='iconfont icon-msg-read'></i> 不关注 </a><a data-value="watching" class="item" rel="nofollow" data-method="post" href="/openeuler/secGear/watch"><i class='iconfont icon-msg-read'></i> 关注所有动态 </a><a data-value="releases_only" class="disabled item" rel="nofollow" data-method="post" href="/openeuler/secGear/release_only_watch"><i class='iconfont icon-msg-read'></i> 仅关注版本发行动态 </a><a data-value="ignoring" class="item" rel="nofollow" data-method="post" href="/openeuler/secGear/ignoring_watch"><i class='iconfont icon-msg-read'></i> 关注但不提醒动态 </a></div> </div> <style> .js-project-watch .text .iconfont { display: none; } .js-project-watch a, .js-project-watch a:hover { color: #000; } .js-project-watch .item > .iconfont { visibility: hidden; margin-left: -10px; } .js-project-watch .selected .iconfont { visibility: visible; } .js-project-watch .menu { margin-top: 4px !important; } </style> <script> $('.js-project-watch').dropdown({ action: 'select', onChange: function(value, text, $selectedItem) { var type = value === 'unwatch' ? 'Watch' : 'Watching'; $(this).children('.text').text(type); $(this).dropdown('set selected', value) } }); </script> <a class="ui button action-social-count" title="38" href="/openeuler/secGear/watchers">38 </a></span> <span class='basic buttons star-container ui'> <a class="ui button star" href="/login"><i class='iconfont icon-star'></i> Star </a><a class="ui button action-social-count " title="84" href="/openeuler/secGear/stargazers">84 </a></span> <span class='ui basic buttons fork-container' title='无权 Fork 此仓库'> <a class="ui button fork" title="你必须登录后才可以fork一个仓库" href="/login"><i class='iconfont icon-fork'></i> Fork </a><a class="ui button action-social-count disabled-style" title="98" href="/openeuler/secGear/members">98 </a></span> </div> <h2 class='git-project-title mt-0 mb-0'> <span class="project-title"><a href='/open_euler'><i class="iconfont icon-enterprise-badge" title="这是一个企业仓库"></i></a> <i class="project-icon iconfont icon-project-public" title="这是一个公开仓库"></i> <a title="openEuler" class="author" href="/openeuler">openEuler</a>/<a title="secGear" class="repository" target="" style="padding-bottom: 0px; margin-right: 4px" href="/openeuler/secGear">secGear</a></span><span class="project-badges"><a title="已被推荐" class="git-project-recommend-badge" href="/explore"><i class='iconfont icon-recommended'></i> </a><style> .gitee-modal { width: 500px !important; } </style> </span> <input type="hidden" name="recomm_at" id="recomm_at" value="2021-01-16 09:45" /> <input type="hidden" name="project_title" id="project_title" value="openEuler/secGear" /> </h2> </div> </div> </div> <script> var title_import_url = "false"; var title_post_url = "/openeuler/secGear/update_import"; var title_fork_url = "/openeuler/secGear/sync_fork"; var title_project_path = "secGear"; var title_p_name = "secGear"; var title_p_id= "10999023"; var title_description = "Confidential computing framework for developing enclave apps on top of hardware TEE"; var title_form_authenticity_token = "4277HqqWTAY/d5hbO27lFeJusSLF4rBjtE7BEx2GFLApwWork5NpHFuREO8fTSr8AlCu5ViGpTyQo3Zkup3X9g=="; var watch_type = "unwatch"; var checkFirst = false; $('.js-project-watch').dropdown('set selected', watch_type); $('.checkbox.sync-wiki').checkbox(); $('.checkbox.sync-prune').checkbox(); $('.checkbox.team-member-checkbox').checkbox(); </script> <style> i.loading, .icon-sync.loading { -webkit-animation: icon-loading 1.2s linear infinite; animation: icon-loading 1.2s linear infinite; } .qrcode_cs { float: left; } .check-sync-wiki { float: left; height: 28px; line-height: 28px; } .sync-wiki-warn { color: #e28560; } </style> <div class='git-project-nav'> <div class='ui container'> <div class='ui secondary pointing menu'> <a class="item active " href="/openeuler/secGear"><i class='iconfont icon-code'></i> 代码 </a><a class="item " href="/openeuler/secGear/issues"><i class='iconfont icon-task'></i> Issues <span class='ui mini circular label'> 4 </span> </a><a class="item " href="/openeuler/secGear/pulls"><i class='iconfont icon-pull-request'></i> Pull Requests <span class='ui mini circular label'> 3 </span> </a><a class="item " href="/openeuler/secGear/wikis"><i class='iconfont icon-wiki'></i> Wiki </a><a class="item " href="/openeuler/secGear/graph/master"><i class='iconfont icon-statistics'></i> 统计 </a><a class="item " href="/openeuler/secGear/gitee_go"><i class='iconfont icon-workflow'></i> 流水线 </a><div class='item'> <div class='ui pointing top right dropdown git-project-service'> <div> <i class='iconfont icon-service'></i> 服务 <i class='dropdown icon'></i> </div> <div class='menu' style='display:none'> <a class="item" href="/openeuler/secGear/pages"><img src="/static/images/logo-en.svg" alt="Logo en" /> <div class='item-title'> Gitee Pages </div> </a><a class="item" href="/openeuler/secGear/javadoc"><img src="https://cn-assets.gitee.com/assets/maven-bd58aee84f266d64d4b8ce5b006a9fcf.png" alt="Maven" /> <div class='item-title'> JavaDoc </div> </a><a class="item" href="/openeuler/secGear/phpdoc"><img src="https://cn-assets.gitee.com/assets/phpdoc-a99f87c2feaa2fd99e5065377a39487e.png" alt="Phpdoc" /> <div class='item-title'> PHPDoc </div> </a><a class="item" href="/openeuler/secGear/quality_analyses?platform=sonar_qube"><img src="https://cn-assets.gitee.com/assets/sonar_mini-5e1b54bb9f6c951d97fb778ef623afea.png" alt="Sonar mini" /> <div class='item-title'> 质量分析 </div> </a><a class="item" target="_blank" href="https://gitee.com/help/articles/4193"><img src="https://cn-assets.gitee.com/assets/jenkins_for_gitee-554ec65c490d0f1f18de632c48acc4e7.png" alt="Jenkins for gitee" /> <div class='item-title'> Jenkins for Gitee </div> </a><a class="item" target="_blank" href="https://gitee.com/help/articles/4318"><img src="https://cn-assets.gitee.com/assets/cloudbase-1197b95ea3398aff1df7fe17c65a6d42.png?20200925" alt="Cloudbase" /> <div class='item-title'> 腾讯云托管 </div> </a><a class="item" target="_blank" href="https://gitee.com/help/articles/4330"><img src="https://cn-assets.gitee.com/assets/cloud_serverless-686cf926ced5d6d2f1d6e606d270b81e.png" alt="Cloud serverless" /> <div class='item-title'> 腾讯云 Serverless </div> </a><a class="item" href="/openeuler/secGear/open_sca"><img src="https://cn-assets.gitee.com/assets/open_sca/logo-9049ced662b2f9936b8001e6f9cc4952.png" alt="Logo" /> <div class='item-title'> 悬镜安全 </div> </a><a class="item" target="_blank" href="https://help.gitee.com/devops/connect/Aliyun-SAE"><img src="https://cn-assets.gitee.com/assets/SAE-f3aa9366a1e2b7fff4747402eb8f10c3.png" alt="Sae" /> <div class='item-title'> 阿里云 SAE </div> </a><a class="item" id="update-codeblitz-link" target="_blank" href="https://codeblitz.cloud.alipay.com/gitee/openeuler/secGear/tree/master"><img style="width:100px;margin-top:4px" src="https://cn-assets.gitee.com/assets/Codeblitz-8824e38875a106e16e29ff57ec977b08.png" alt="Codeblitz" /> <div class='item-title'> Codeblitz </div> </a><button class='ui orange basic button quit-button' id='quiting-button'> 我知道了,不再自动展开 </button> </div> </div> </div> </div> </div> </div> <script> $('.git-project-nav .ui.dropdown').dropdown({ action: 'nothing' }); var gitee_reward_config = JSON.parse(localStorage.getItem('gitee_reward_config') || null) || false var $settingText = $('.setting-text') // 如果没有访问过 if(!gitee_reward_config) $settingText.addClass('red-dot') $('.git-project-service').dropdown({ on: 'click', action: 'nothing', onShow: function () { const branch = 'master' let newUrl = `https://codeblitz.cloud.alipay.com/gitee/openeuler/secGear/tree/` const url = decodeURIComponent(window.location.pathname); const startIndex = url.indexOf('master'); if (startIndex !== -1) { newUrl = newUrl + url.substring(startIndex); // 从分支名开始截取 }else{ newUrl = newUrl + branch } const linkElement = document.getElementById("update-codeblitz-link"); linkElement.setAttribute("href", newUrl); }, }) </script> <style> .git-project-nav i.checkmark.icon { color: green; } #quiting-button { display: none; } .git-project-nav .dropdown .menu.hidden:after { visibility: hidden !important; } </style> <script> isSignIn = false isClickGuide = false $('#git-versions.dropdown').dropdown(); $.ajax({ url:"/openeuler/secGear/access/add_access_log", type:"GET" }); $('#quiting-button').on('click',function() { $('.git-project-service').click(); if (isSignIn) { $.post("/projects/set_service_guide") } $.cookie("Serve_State", true, { expires: 3650, path: '/'}) $('#quiting-button').hide(); }); if (!(isClickGuide || $.cookie("Serve_State") == 'true')) { $('.git-project-service').click() $('#quiting-button').show() } </script> </div> <div class='ui container'> <div id='git-tags-container'> <script> $(function() { $('#new-tag').popup({ popup: $('#tags_view'), position: 'bottom right', on: 'click' }); $('#refs').click(function() { $(this).select(); }); $('.spread').on('click', function() { var prev = $(this).prev(); var text = prev.text(); prev.text(prev.attr('src_text')).attr('src_text', text); text = $(this).text(); $(this).text($(this).attr('src_text')).attr('src_text', text); }); }) </script> <!-- = render 'shared/project_statistics_item_menu' --> <div class='ui fluid text menu project-statistics-menu' id='project-item-menu'> <div class='active item'> <a href='/openeuler/secGear/tags'> 标签 </a> </div> </div> <link rel="stylesheet" media="all" href="https://cn-assets.gitee.com/assets/markdown_preview-001478f1b12f2725f1b1f76f36b9ce4e.css" /> <script src="https://cn-assets.gitee.com/assets/markdown_preview-772822b3442a45aaf94af83c38fdbaf4.js"></script> <script src="https://cn-assets.gitee.com/webpacks/markdown_render-13d3d4c9beaea8f7006b.bundle.js" defer="defer"></script> <div class='releases-tags-wrap' id='taggeds-index'> <div class='releases-tag-content'> <div class='tag-header'> <div class='item tag-name'>标签名</div> <div class='item tag-message'>描述</div> <div class='item tag-commit'>提交信息</div> <div class='item tag-actions'>操作</div> </div> <div class='tag-list'> <div class='item tag-item'> <div class='tag-item-action tag-name'> <a title="v1.0.0" href="/openeuler/secGear/tree/v1.0.0"><i class='iconfont icon-tag'></i> v1.0.0 </a> </div> <div class='tag-item-action tag-message'> <div class='markdown-body'> <rich-markdown-renderer data-enterprise-id='' data-project-id='10999023'>
<textarea class='content' style='display:none;'>## 更新内容
* 资料更新 由 @zhengxiaoxiaoGitee 贡献 https://gitee.com/openeuler/secGear/pulls/271
* 远程证明框架统一错误码 由 @xuraoqing 贡献 https://gitee.com/openeuler/secGear/pulls/251
* fix multi-thread request as generate challenge and verify report error 由 @houmingyong 贡献 https://gitee.com/openeuler/secGear/pulls/252
* add attestation readme 由 @houmingyong 贡献 https://gitee.com/openeuler/secGear/pulls/250
* register shared memory by open session 由 @zhengxiaoxiaoGitee 贡献 https://gitee.com/openeuler/secGear/pulls/233
* 【轻量级 PR】:update examples/switchless/README.md. 由 @gddddu 贡献 https://gitee.com/openeuler/secGear/pulls/258
* fix some errors 由 @baixu_yewu 贡献 https://gitee.com/openeuler/secGear/pulls/265
* 【轻量级 PR】:correct some spelling errors 由 @gddddu 贡献 https://gitee.com/openeuler/secGear/pulls/266
* Fix some errors 由 @lx1229207124 贡献 https://gitee.com/openeuler/secGear/pulls/264
* fix evidence decode typos 由 @xuraoqing 贡献 https://gitee.com/openeuler/secGear/pulls/255
* fix no_as ima reference path 由 @houmingyong 贡献 https://gitee.com/openeuler/secGear/pulls/261
* 【轻量级 PR】:Fix some document and output information errors 由 @bcsecurity 贡献 https://gitee.com/openeuler/secGear/pulls/272
* 【轻量级pr】spelling errors 由 @taruisland 贡献 https://gitee.com/openeuler/secGear/pulls/269
* add attestation service startup script 由 @xuraoqing 贡献 https://gitee.com/openeuler/secGear/pulls/256
* agent support https to access attestation service 由 @xuraoqing 贡献 https://gitee.com/openeuler/secGear/pulls/259
* ima detail result exclude boot_aggregate file 由 @houmingyong 贡献 https://gitee.com/openeuler/secGear/pulls/263
* add ima detail result in token 由 @houmingyong 贡献 https://gitee.com/openeuler/secGear/pulls/262
* 修复文档中的拼写错误 由 @kylinosZlw 贡献 https://gitee.com/openeuler/secGear/pulls/267
* as support https 由 @xuraoqing 贡献 https://gitee.com/openeuler/secGear/pulls/257
* fix concurrent request error to aa or as 由 @houmingyong 贡献 https://gitee.com/openeuler/secGear/pulls/249
* 修改switchless README 由 @zhengxiaoxiaoGitee 贡献 https://gitee.com/openeuler/secGear/pulls/253
* add parse report c interface 由 @houmingyong 贡献 https://gitee.com/openeuler/secGear/pulls/260
* use id when get policy 由 @xuraoqing 贡献 https://gitee.com/openeuler/secGear/pulls/254
* add ccatoken verify to attestation-service 由 @awsome-red 贡献 https://gitee.com/openeuler/secGear/pulls/229

**完整的更新日志**: https://gitee.com/openeuler/secGear/compare/v0.2.0...v1.0.0</textarea>
<div class='loader-wrapper'>
<div class='ui inline mini active loader'></div>
</div></rich-markdown-renderer>
</div> </div> <div class='tag-item-action tag-last-commit'> <div class='tag-item-action-row'> <a href="/openeuler/secGear/commit/0452f1dc63b8c77be978a8ba83d2ff4323ee0ec4">0452f1d</a> <i class='icon green info circle tag-popup-msg' data-content='!273 release v1.0.0'></i> </div> <div class='tag-item-action-row'> 2024-11-12 11:32 </div> </div> <div class='tag-item-action actions'> <a class="download-archive" data-ref="v1.0.0" data-sha="0452f1dc63b8c77be978a8ba83d2ff4323ee0ec4" href="/openeuler/secGear/repository/archive/v1.0.0">下载 </a><a target="_blank" href="/openeuler/secGear/releases/v1.0.0">查看发行版 </a></div> </div> <div class='item tag-item'> <div class='tag-item-action tag-name'> <a title="v0.2.0" href="/openeuler/secGear/tree/v0.2.0"><i class='iconfont icon-tag'></i> v0.2.0 </a> </div> <div class='tag-item-action tag-message'> <div class='markdown-body'> <rich-markdown-renderer data-enterprise-id='' data-project-id='10999023'>
<textarea class='content' style='display:none;'>1. support switchless 2. support secure channel 3. some bugfix</textarea>
<div class='loader-wrapper'>
<div class='ui inline mini active loader'></div>
</div></rich-markdown-renderer>
</div> </div> <div class='tag-item-action tag-last-commit'> <div class='tag-item-action-row'> <a href="/openeuler/secGear/commit/b3e104fbde7e07a0878b2baa8c62701c99280502">b3e104f</a> <i class='icon green info circle tag-popup-msg' data-content='!127 release v0.2.0'></i> </div> <div class='tag-item-action-row'> 2023-04-12 09:11 </div> </div> <div class='tag-item-action actions'> <a class="download-archive" data-ref="v0.2.0" data-sha="b3e104fbde7e07a0878b2baa8c62701c99280502" href="/openeuler/secGear/repository/archive/v0.2.0">下载 </a><a target="_blank" href="/openeuler/secGear/releases/v0.2.0">查看发行版 </a></div> </div> <div class='item tag-item'> <div class='tag-item-action tag-name'> <a title="v0.1.0" href="/openeuler/secGear/tree/v0.1.0"><i class='iconfont icon-tag'></i> v0.1.0 </a> </div> <div class='tag-item-action tag-message'> <div class='markdown-body'> </div> </div> <div class='tag-item-action tag-last-commit'> <div class='tag-item-action-row'> <a href="/openeuler/secGear/commit/ae4f6b79dd41a7fc0a411cd06d26a9c95443385f">ae4f6b7</a> <i class='icon green info circle tag-popup-msg' data-content='!29 release secGear v0.1.0'></i> </div> <div class='tag-item-action-row'> 2021-02-03 15:44 </div> </div> <div class='tag-item-action actions'> <a class="download-archive" data-ref="v0.1.0" data-sha="ae4f6b79dd41a7fc0a411cd06d26a9c95443385f" href="/openeuler/secGear/repository/archive/v0.1.0">下载 </a><a target="_blank" href="/openeuler/secGear/releases/v0.1.0">查看发行版 </a></div> </div> </div> <div class='ui mini modal project-archive-modal'> <i class='iconfont icon-close close'></i> <div class='header'> <span class='title'>下载</span> <span class='name'></span> </div> <div class='content ui custom form'> <div class='ui message form-message error'></div> <div class='field'> 请输入验证码,防止盗链导致资源被占用 </div> <div class='field captcha'> <div class='input wrapper'> <div class='ui input input-content'> <input type="text" name="captcha" id="captcha" value="" placeholder="验证码" autocomplete="off" /> <img class='captcha_img' height='37'> </div> <div class='ui small error text message'></div> </div> </div> </div> <div class='actions'> <button class='ui button blank cancel'>取消</button> <button class='ui button orange download-btn disabled'>下载</button> </div> </div> <script> $(function() { var $mountedElem = $('.download-archive'), $archiveModal = $('.project-archive-modal'), $archiveName = $archiveModal.find('.header .name'), $downloadBtn = $archiveModal.find('.download-btn'), $captchaInput = $archiveModal.find('#captcha'), $captchaImg = $archiveModal.find('.captcha_img'), $message = $archiveModal.find('.form-message'), isLogin = false, loginUrl = '/login', archiveUrl = null, ref = null, sha = null, captcha = null, format = 'zip', delayTimers = {} // 下载文件 $downloadBtn.on('click', function() { captcha = $captchaInput.val() downloadArchive() return false }) function downloadArchive() { $.ajax({ type: 'POST', url: '/openeuler/secGear/repository/download', data: { sha: sha, format: format, captcha: captcha }, beforeSend: function() { $downloadBtn.addClass('loading') $message.removeClass('info error').hide() }, success: function(data) { $downloadBtn.removeClass('loading') if (data.code == 200) { location.href = archiveUrl + '&captcha=' + captcha $archiveModal.modal('hide') } else if (data.code == 201) { delayTimers['checkArchive'] = setInterval(checkArchive, 3000) $downloadBtn.addClass('disabled') $message.addClass('info').text(data.msg).show() $captchaImg.trigger('click') } else if (data.code == 401) { $message.addClass('error').text(data.msg).show() } } }) } function checkArchive() { $.get('/openeuler/secGear/repository/check_archive', { sha: sha, format: format }, function(data) { if (data.code == 200) { location.href = archiveUrl + '&captcha=' + captcha clearInterval(delayTimers['checkArchive']) $archiveModal.modal('hide') } else if (data.code == 401) { $message.removeClass('info').addClass('error').text(data.msg) clearInterval(delayTimers['checkArchive']) } }) } // 检验验证码 $captchaInput.on('keyup', function() { delayRun('captcha', checkCaptcha) }) $captchaImg.on('click', function() { $captchaInput.val('') $captchaInput.closest('.field').removeClass('error') $downloadBtn.addClass('disabled') }) function checkCaptcha() { var $field = $captchaInput.closest('.field') captcha = $captchaInput.val() if (captcha.length < 6) { $downloadBtn.addClass('disabled') $field.removeClass('error') return } $.ajax({ type: 'POST', url: '/check', data: { do: 'captcha', val: captcha }, success: function(data) { if (data == 1) { $field.removeClass('error') $downloadBtn.removeClass('disabled') } else { $field.addClass('error') $field.find('.message').text(data) $downloadBtn.addClass('disabled') } } }) } function stopDelayRun(task) { if (delayTimers[task]) { clearTimeout(delayTimers[task]) delayTimers[task] = null } } function delayRun(task, callback) { stopDelayRun(task) delayTimers[task] = setTimeout(callback, 1000) } }) </script> <script> // tag message展示按钮 function show_tag_message(event) { let $tag_message_content = $(event.target).parents('.tag-item-action.tag-message') let $tag_message_wapper = $(event.target).parents('.btn-show-tag-message-wapper') $tag_message_content.addClass('show-full-tag-message') $tag_message_wapper.remove() } // 向元素追加展开tag message背景 function add_tag_show_message_wapper(element) { let $tag_show_message_wapper = $(`<div class="btn-show-tag-message-wapper"><span class="btn-show-tag-message">展开<i class="dropdown icon"></i></span></div>`) $tag_show_message_wapper.find('.btn-show-tag-message').on('click', show_tag_message) $(element).append($tag_show_message_wapper) } setTimeout(() => { $('.tag-item-action.tag-message').each((index, element) => { let scrollWidth = element.scrollWidth let clientWidth = element.clientWidth if (scrollWidth > clientWidth) { add_tag_show_message_wapper(element) } }) }, 0) $('.js-commit-signature').popup({ inline: true, hoverable : true }); $('.tag-popup-msg').popup({ position:'right center', title: "最后提交信息为:" }); </script> </div> </div> </div> <footer class='ui grid page'> <div class='column center aligned'> </div> </footer> </div> <script> (function() { var donateModal; Gitee.modalHelper = new GiteeModalHelper({ alertText: '提示', okText: '确定' }); donateModal = new ProjectDonateModal({ el: '#project-donate-modal', alipayUrl: '/openeuler/secGear/alipay', wepayUrl: '/openeuler/secGear/wepay', nameIsBlank: '名称不能为空', nameTooLong: '名称过长(最多为 36 个字符)', modalHelper: Gitee.modalHelper }); if (null === 'true') { donateModal.show(); } $('#project-donate').on('click', function() { return donateModal.show(); }); }).call(this); </script> <script> Tree.initHighlightTheme('white') </script> </div> <div class='gitee-project-extension'> <div class='extension public'>1</div> <div class='extension https'>https://gitee.com/openeuler/secGear.git</div> <div class='extension ssh'>git@gitee.com:openeuler/secGear.git</div> <div class='extension namespace'>openeuler</div> <div class='extension repo'>secGear</div> <div class='extension name'>secGear</div> <div class='extension branch'></div> </div> <script> $(function() { GitLab.GfmAutoComplete.dataSource = "/openeuler/secGear/autocomplete_sources" GitLab.GfmAutoComplete.Emoji.assetBase = '/assets/emoji' GitLab.GfmAutoComplete.setup(); }); </script> <footer id='git-footer-main'> <div class='ui container'> <div class='logo-row'> <a href="https://gitee.com"><img alt='Gitee - 基于 Git 的代码托管和研发协作平台' class='logo-img' src='/static/images/logo-black.svg?t=158106666'> </a></div> <div class='name-important'> 深圳市奥思网络科技有限公司版权所有 </div> <div class='ui two column grid d-flex-center'> <div class='eight wide column git-footer-left'> <div class='ui four column grid' id='footer-left'> <div class='column'> <div class='ui link list'> <div class='item'> <a class="item" href="/all-about-git">Git 大全</a> </div> <div class='item'> <a class="item" rel="nofollow" href="https://help.gitee.com/learn-Git-Branching/">Git 命令学习</a> </div> <div class='item'> <a class="item" rel="nofollow" href="https://copycat.gitee.com/">CopyCat 代码克隆检测</a> </div> <div class='item'> <a class="item" href="/appclient">APP与插件下载</a> </div> </div> </div> <div class='column'> <div class='ui link list'> <div class='item'> <a class="item" href="/gitee_reward">Gitee Reward</a> </div> <div class='item'> <a class="item" href="/gitee-stars">Gitee 封面人物</a> </div> <div class='item'> <a class="item" href="/gvp">GVP 项目</a> </div> <div class='item'> <a class="item" rel="nofollow" href="https://blog.gitee.com/">Gitee 博客</a> </div> <div class='item'> <a class="item" href="/enterprises#nonprofit-plan">Gitee 公益计划</a> </div> <div class='item'> <a class="item" href="https://gitee.com/features/gitee-go">Gitee 持续集成</a> </div> </div> </div> <div class='column'> <div class='ui link list'> <div class='item'> <a class="item" href="/api/v5/swagger">OpenAPI</a> </div> <div class='item'> <a class="item" href="https://help.gitee.com">帮助文档</a> </div> <div class='item'> <a class="item" href="/self_services">在线自助服务</a> </div> <div class='item'> <a class="item" href="/help/articles/4378">更新日志</a> </div> </div> </div> <div class='column'> <div class='ui link list'> <div class='item'> <a class="item" href="/about_us">关于我们</a> </div> <div class='item'> <a class="item" rel="nofollow" href="https://www.oschina.net/news/131099/oschina-hiring">加入我们</a> </div> <div class='item'> <a class="item" href="/terms">使用条款</a> </div> <div class='item'> <a class="item" href="/oschina/git-osc/issues">意见建议</a> </div> <div class='item'> <a class="item" href="/links.html">合作伙伴</a> </div> </div> </div> </div> </div> <div class='eight wide column right aligned followus git-footer-right'> <div class='qrcode mr-1'> <div class='qrcode-box'> <img alt="技术交流QQ群" src="https://cn-assets.gitee.com/assets/contact_qr-5e2c2a8da453396590e56a545bce4974.jpg" /> </div> <p class='mt-1 mini_app-text'>技术交流QQ群</p> </div> <div class='qrcode'> <div class='qrcode-box'> <img alt="微信服务号" class="weixin-qr" src="https://cn-assets.gitee.com/assets/qrcode-weixin@2x-b74cc97a2ea80123ea53a737f709836d.png" /> </div> <p class='mt-1 weixin-text'>微信服务号</p> </div> <div class='phone-and-qq column'> <div class='ui list official-support-container'> <div class='item'></div> <div class='item mail-and-zhihu'> <a rel="nofollow" href="mailto: client@oschina.cn"><i class='iconfont icon-msg-mail'></i> <span id='git-footer-email'>client#oschina.cn</span> </a></div> <div class='item tel'> <a> <i class='iconfont icon-tel'></i> <span>企业版在线使用:400-606-0201</span> </a> </div> <div class='item tel'> <a class='d-flex'> <i class='iconfont icon-tel mt-05 mr-05'></i> <span>专业版私有部署:</span> <div> <div>13670252304</div> <div>13352947997</div> </div> </a> </div> </div> </div> </div> </div> </div> <div class='bottombar'> <div class='ui container'> <div class='ui d-flex d-flex-between'> <div class='seven wide column partner d-flex'> <div class='open-atom d-flex-center'> <img class="logo-openatom mr-1" alt="开放原子开源基金会" src="https://cn-assets.gitee.com/assets/logo-openatom-d083391cc8a54e283529f3fc11cc38ca.svg" /> <a target="_blank" rel="nofollow" href="https://www.openatom.org/">开放原子开源基金会</a> <div class='sub-title ml-1'>合作代码托管平台</div> </div> <div class='report-12377 d-flex-center ml-3'> <img class="report-12377__logo mr-1" alt="违法和不良信息举报中心" src="https://cn-assets.gitee.com/assets/12377@2x-1aa42ed2d2256f82a61ecf57be1ec244.png" /> <a target="_blank" rel="nofollow" href="https://12377.cn">违法和不良信息举报中心</a> </div> <div class='copyright ml-3'> <a rel="nofollow" href="http://beian.miit.gov.cn/">粤ICP备12009483号</a> </div> </div> <div class='nine wide column right aligned'> <i class='icon world'></i> <a href="/language/zh-CN">简 体</a> / <a href="/language/zh-TW">繁 體</a> / <a href="/language/en">English</a> </div> </div> </div> </div> </footer> <script> var officialEmail = $('#git-footer-email').text() $('#git-footer-main .icon-popup').popup({ position: 'bottom center' }) $('#git-footer-email').text(officialEmail.replace('#', '@')) window.gon.popover_card_locale = { follow:"关注", unfollow:"已关注", gvp_title: "GVP - Gitee 最有价值开源项目", project: "项目", org: "开源组织", member: "", author: "作者", user_blocked: "该用户已被屏蔽或已注销", net_error: "网络错误", unknown_exception: "未知异常" } window.gon.select_message = { placeholder: "请输入个人空间地址或完整的邮箱地址" } </script> <script src="https://cn-assets.gitee.com/webpacks/popover_card-ca6b9a20ba5353733d61.bundle.js"></script> <link rel="stylesheet" media="all" href="https://cn-assets.gitee.com/webpacks/css/gitee_nps-ae0dbee40f6ddc72015a.css" /> <script src="https://cn-assets.gitee.com/webpacks/gitee_nps-30c2a3673b61c539fcf7.bundle.js"></script> <script src="https://cn-assets.gitee.com/webpacks/gitee_icons-0340f9dc8fc1dfbb9937.bundle.js"></script> <div class='side-toolbar'> <div class='button toolbar-help'> <i class='iconfont icon-help'></i> </div> <div class='ui popup left center dark'>点此查找更多帮助</div> <div class='toolbar-help-dialog'> <div class='toolbar-dialog-header'> <h3 class='toolbar-dialog-title'>搜索帮助</h3> <form class="toolbar-help-search-form" action="/help/load_keywords_data" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="✓" /> <div class='ui icon input fluid toolbar-help-search'> <input name='keywords' placeholder='请输入产品名称或问题' type='text'> <i class='icon search'></i> </div> </form> <i class='iconfont icon-close toolbar-dialog-close-icon'></i> </div> <div class='toolbar-dialog-content'> <div class='toolbar-help-hot-search'> <div class='toolbar-roll'> <a class="init active" title="Git 命令在线学习" href="https://oschina.gitee.io/learn-git-branching/?utm_source==gitee-help-widget"><i class='Blue icon icon-command iconfont'></i> <span>Git 命令在线学习</span> </a><a class="init " title="如何在 Gitee 导入 GitHub 仓库" href="https://gitee.com/help/articles/4261?utm_source==gitee-help-widget"><i class='icon icon-clipboard iconfont orange'></i> <span>如何在 Gitee 导入 GitHub 仓库</span> </a></div> <div class='toolbar-list'> <div class='toolbar-list-item'> <a href="/help/articles/4114">Git 仓库基础操作</a> </div> <div class='toolbar-list-item'> <a href="/help/articles/4166">企业版和社区版功能对比</a> </div> <div class='toolbar-list-item'> <a href="/help/articles/4191">SSH 公钥设置</a> </div> <div class='toolbar-list-item'> <a href="/help/articles/4194">如何处理代码冲突</a> </div> <div class='toolbar-list-item'> <a href="/help/articles/4232">仓库体积过大,如何减小?</a> </div> <div class='toolbar-list-item'> <a href="/help/articles/4279">如何找回被删除的仓库数据</a> </div> <div class='toolbar-list-item'> <a href="/help/articles/4283">Gitee 产品配额说明</a> </div> <div class='toolbar-list-item'> <a href="/help/articles/4284">GitHub仓库快速导入Gitee及同步更新</a> </div> <div class='toolbar-list-item'> <a href="/help/articles/4328">什么是 Release(发行版)</a> </div> <div class='toolbar-list-item'> <a href="/help/articles/4354">将 PHP 项目自动发布到 packagist.org</a> </div> </div> </div> <div class='toolbar-help-search-reseult'></div> </div> </div> <script> var opt = { position: 'left center'}; var $helpSideToolbar = $('.button.toolbar-help'); var $toolbarRoll = $('.toolbar-roll'); $(function() { if (false) { $helpSideToolbar.popup(opt).popup({lastResort:'left center'}) } else { $helpSideToolbar.popup({lastResort:'left center'}).popup('show', opt); setTimeout(function() { $helpSideToolbar.popup('hide', opt); }, 3000); } if ($toolbarRoll.length) { setInterval(function() { var $nextActiveLink = $toolbarRoll.find('a.active').next(); if (!$nextActiveLink.length) { $nextActiveLink = $toolbarRoll.find('a:first-child'); } $nextActiveLink.attr('class', 'active').siblings().removeClass('active init'); }, 5000); } }) </script> <div class='toolbar-appeal popup button'> <i class='iconfont icon-report'></i> </div> <div class='ui popup dark'> 仓库举报 </div> <script> $('.toolbar-appeal').popup({ position: 'left center' }); </script> <div class='button gotop popup' id='gotop'> <i class='iconfont icon-top'></i> </div> <div class='ui popup dark'>回到顶部</div> </div> <div class='form modal normal-modal tiny ui' id='unlanding-complaint-modal'> <i class='iconfont icon-close close'></i> <div class='header'> 登录提示 </div> <div class='container actions'> <div class='content'> 该操作需登录 Gitee 帐号,请先登录后再操作。 </div> <div class='ui orange icon large button ok'> 立即登录 </div> <div class='ui button blank cancel'> 没有帐号,去注册 </div> </div> </div> <script> var $elm = $('.toolbar-appeal'); $elm.on('click', function() { var modals = $("#unlanding-complaint-modal.normal-modal"); if (modals.length > 1) { modals.eq(0).modal('show'); } else { modals.modal('show'); } }) $("#unlanding-complaint-modal.normal-modal").modal({ onDeny: function() { window.location.href = "/signup?from="; }, onApprove: function() { window.location.href = "/login?from="; } }) </script> <style> .side-toolbar .bdsharebuttonbox a { font-size: 24px; color: white !important; opacity: 0.9; margin: 6px 6px 0px 6px; background-image: none; text-indent: 0; height: auto; width: auto; } </style> <style> #udesk_btn a { margin: 0px 20px 167px 0px !important; } </style> <script> (function() { $('#project-user-message').popup({ position: 'left center' }); }).call(this); </script> <script> Gitee.initSideToolbar({}) </script> <style> .gitee-stars-main-widget { display: none; position: fixed; left: 0; bottom: 0; z-index: 106; } .gitee-stars-main-widget .close-icon { width: 20px; right: 10px; position: absolute; top: 0px; cursor: pointer; } .gitee-stars-main-widget .people-image { width: 200px; margin: 0 10px; } .gitee-stars-main-widget.gitee-stars-widget .close-icon { left: 20px; } </style> <div class='gitee-stars-main-widget pendan-widget'> <a target="_blank" href="https://www.oschina.net/event/8595459"><img class="people-image" src="https://foruda.gitee.com/images/1742526660229750692/371d5123_14472233.png" alt="371d5123 14472233" /> <img class="close-icon" src="https://foruda.gitee.com/images/1742526663983648370/46e8bd33_14472233.png" alt="46e8bd33 14472233" /> </a></div> <script> $(function () { var $giteeStarsWidget = $('.gitee-stars-main-widget') var cookieKey = "visit-gitee--2025-03-21" if ($.cookie(cookieKey) == 1) { $giteeStarsWidget.hide() } else { $giteeStarsWidget.show() } $giteeStarsWidget.on('click', '.close-icon', function (e) { e.preventDefault() $.cookie(cookieKey, 1, {path: '/', expires: 60}) $giteeStarsWidget.hide() }) }) </script> <script> (function() { this.__gac = { domain: 'www.oschina.net' }; }).call(this); </script> <script src="https://cn-assets.gitee.com/assets/bdstatic/app-070a9e339ac82bf2bf7ef20375cd4121.js"></script> <script src="https://hm.baidu.com/hm.js?6bc840df1e0b2cbbd5d0aab3e06b2610" async="async"></script> <script src="https://cn-assets.gitee.com/webpacks/build_status-7effc7b22ddf8e90b34c.bundle.js"></script> <script src="https://cn-assets.gitee.com/webpacks/scan_status-7a19032286b03591b228.bundle.js"></script> <script src="https://cn-assets.gitee.com/webpacks/mermaid_render-669e055f02596b5d8886.bundle.js"></script> <script src="https://cn-assets.gitee.com/webpacks/check_runs-19ec228348982570119a.bundle.js"></script> </body> </html>