feat: 后端全量更新 - 含所有本次需求

- Contract.php: 返回合约账户余额(balance_contract)
- My.php: 地址管理增加BTC/ETH
- AppContract.php: 一键平仓(closeall)
- AppProxy.php: 代理专属注册链接 + 分级权限(L1/L2)
- site.php: 手续费减半(0.018→0.009)
- agent_permission_setup.sql: 代理权限SQL
- crypto_news_crawler.py: 新闻自动采集脚本
This commit is contained in:
li
2026-03-30 20:16:32 +08:00
commit 1b24994e74
6721 changed files with 1308571 additions and 0 deletions
@@ -0,0 +1,26 @@
<div class="common-footer aero">
<?php
$settings = $GLOBALS['config']['settings'];
$settingSystem = $GLOBALS['config']['settingSystem'];
$copyrightInfo = LNG('copyright_info',APP_HOST);
if(is_wap()){
echo '<span class="pr-10"><a href="javascript:void(0);" forceWap="1">'.LNG('wap_page_phone').'</a> | '.
'<a href="javascript:void(0);" forceWap="0">'.LNG('wap_page_pc').'</a></span> ';
echo $copyrightInfo.' v'.KOD_VERSION;
}else{
echo '<span class="copyright-content">';
if(isset($settings['copyright'])){
echo $settings['copyright'];
}else{
echo LNG('copyright_pre').' v'.KOD_VERSION.' | '.$copyrightInfo;
}
echo '<a href="javascript:core.copyright();" class="icon-info-sign copyright-bottom pl-5"></a>';
if(isset($settingSystem['globalIcp'])){
echo "&nbsp;&nbsp; ".$settingSystem['globalIcp'];
}
echo '</span>';
}
?>
</div>
<!-- https://getfirebug.com/firebuglite -->
<?php include(TEMPLATE.'common/footerCommon.html');?>
@@ -0,0 +1,44 @@
<script type="text/javascript" src="<?php echo STATIC_PATH;?>js/lib/seajs/sea.js?ver=<?php echo KOD_VERSION;?>"></script>
<?php
//commonjs
if(ST == 'share' || isset($GLOBALS['loadCommonJs'])){
if(isset($_GET['user'])){
$userInfo = '&user='.clear_html($_GET['user']).'&sid='.clear_html($_GET['sid']);
}else{//login...
$userInfo = "";
}
echo '<script type="text/javascript" src="./index.php?share/commonJs&st='.ST.'&act='.ACT.$userInfo.'#id='.rand_string(4).'"></script>';
}else{
echo '<script type="text/javascript" src="./index.php?user/commonJs&st='.ST.'&act='.ACT.'#id='.rand_string(4).'"></script>';
}
$settings = $GLOBALS['config']['settings'];
$settingSystem = $GLOBALS['config']['settingSystem'];
if(isset($settings['globalJs'])){
echo "\n ".'<script type="text/javascript" id="settings-global-js">'.$settings['globalJs'].'</script>';
}
if(isset($settings['globalCss'])){
echo "\n ".'<style type="text/css" id="settings-global-css">'.$settings['globalCss'].'</style>';
}
if(isset($settingSystem['globalCss'])){
echo "\n ".'<style type="text/css" id="setting-system-global-css">'.$settingSystem['globalCss'].'</style>';
}
if(isset($settingSystem['globalHtml'])){
echo "\n ".$settingSystem['globalHtml']."\n";
}
?>
<script type="text/javascript">
<?php
if(defined('INSTALL_CHANNEL')){
echo "var installChannel='".INSTALL_CHANNEL."';\n";
}
?>
seajs.config({
base: "<?php echo STATIC_PATH;?>js/",
preload: ["lib/jquery-1.8.0.min"],
map:[[/^(.*\.(?:css|js|html|htm|json|text))([\?|#].*)$/i,'$1$2?ver='+G.version]]
});
if(navigator.serviceWorker){navigator.serviceWorker.register('./?share/manifestJS');}
</script>
<?php Hook::trigger('templateCommonFooter');?>
@@ -0,0 +1,39 @@
<?php Hook::trigger('templateCommonHeaderStart'); ?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Cache-Control" content="no-transform">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<meta name="renderer" content="webkit">
<meta name="description" itemprop="description" content="<?php echo LNG('kod_meta_description');?>">
<meta name="keywords" content="<?php echo LNG('kod_meta_keywords');?>" />
<meta name="generator" content="<?php echo LNG('kod_meta_name').' '.KOD_VERSION;?>"/>
<meta name="author" content="<?php echo LNG('kod_meta_name');?>" />
<meta name="copyright" content="<?php echo LNG('kod_meta_copyright');?>" />
<meta itemprop="image" content="<?php echo STATIC_PATH;?>images/common/ico.png?ver=<?php echo KOD_VERSION;?>" />
<link href="<?php echo STATIC_PATH;?>images/common/ico.png?ver=<?php echo KOD_VERSION;?>" rel="Shortcut Icon" type="image/x-icon">
<link href="<?php echo STATIC_PATH;?>images/common/ico.png?ver=<?php echo KOD_VERSION;?>" rel="icon" type="image/x-icon">
<link href="<?php echo STATIC_PATH;?>style/common.css?ver=<?php echo KOD_VERSION;?>" rel="stylesheet"/>
<link href="./static/style/font-awesome/css/font-awesome.css?ver=<?php echo KOD_VERSION;?>" rel="stylesheet">
<link href="./?share/manifest" rel="manifest" />
<!--[if IE 7]>
<link rel="stylesheet" href="./static/style/font-awesome/css/font-awesome-ie7.css">
<![endif]-->
<?php
Hook::trigger('templateCommonHeader');
function pageBackground(){
$arr = explode(',',$GLOBALS['config']['settingSystem']['wallpageLogin']);
$background = $arr[mt_rand(0,count($arr)-1)];
if(!$background){
$background = 'linear-gradient(160deg, #5648c1, #6fe3e7)';
}else if(!strstr($background,'/')){
$background = "url('./static/images/wall_page/{$background}.jpg')";
}else{
$background = "url('{$background}')";
}
return "<style type='text/css'>.aero:before,.aero:after,.background{background-color:#bbb;background-image:{$background};}</style>\n";
}
?>
@@ -0,0 +1,118 @@
<div class="full-background"></div>
<div class="init-loading">
<div><img src="<?php echo STATIC_PATH;?>images/common/loading_simple.gif?v=<?php echo KOD_VERSION;?>"/></div>
</div>
<div class="topbar aero">
<div class="content">
<button class="btn btn-wap-menu hidden"
data-toggle="collapse" data-target="#top-menu-left"
><i class="font-icon icon-reorder"></i></button>
<div class="top-left collapse" id="top-menu-left">
<?php
$config = $GLOBALS['config'];
$html = '<a href="./" class="topbar-menu title">';
$subMenu = '';
$isWap = is_wap();
if(substr(LNG('kod_name'),0,4) == '<img'){
$html .= LNG('kod_name').'</a>';
}else{
$html .= '<i class="icon-cloud"></i>'.LNG('kod_name').'</a>';
}
foreach ($config['settingSystem']['menu'] as $key=>$value) {
if ($value['use']!='1') continue;
$has = ST==$value['name']?'this':'';
$target = " target='_self'" ;
if($value['target']=='1' || $value['target'] == '_blank'){
$target = " target='_blank'" ;
}
$name = rawurldecode($value['name']);
if(LNG('ui_'.$name) != 'ui_'.$name){
$name = "<i class='font-icon menu-".$name."'></i><span>".LNG('ui_'.$name).'</span>';
}else if($value['icon']){
$name = $value['icon'].'<span>'.LNG($name).'</span>';
}else if(!strstr($name,'<') && $value['subMenu']){
$name = "<i class='font-icon words'><em>".$name."</em></i><span>".LNG($name).'</span>';
}
if($value['subMenu'] && !$isWap){
$subMenu .= "<li><a class='topbar-menu-sub ".$has."' href='".urldecode($value['url'])."'"
.$target.">".urldecode($name)."</a></li>";
}else{
$html .= "<a class='topbar-menu ".$has."' href='".urldecode($value['url'])."'"
.$target.">".urldecode($name)."</a>";
}
}
echo $html;
?>
<?php if($subMenu){?>
<div class="menu-group fl">
<a class="topbar-menu" id="topbar-submenu"
data-toggle="dropdown" href="#" title="<?php echo LNG('menu_sub_menu');?>">
<i class="icon-th-large"></i>
</a>
<ul class="dropdown-menu topbar-submenu pull-left animated menuShow" role="menu" aria-labelledby="topbar-submenu">
<?php echo $subMenu;?>
</ul>
</div>
<?php } ?>
</div>
<div class="top-right">
<?php if(!isset($config['settings']['language'])){ ?>
<div class="menu-group">
<a id='topbar-language' data-toggle="dropdown" href="#" class="topbar-menu">
<i class='font-icon icon-flag'></i>&nbsp;<b class="caret"></b>
</a>
<ul class="dropdown-menu topbar-language pull-right animated menuShow" role="menu" aria-labelledby="topbar-language">
<?php
$tpl = "";
foreach ($config['settingAll']['language'] as $key => $value) {
$name = $value[0];
$select = I18n::getType() == $key ? "this":"";
$tpl .= "<li><a href='javascript:core.language(\"{$key}\");' title=\"{$key}/{$value[1]}/{$value[2]}\" class='{$select}'><i class='lang-flag flag-{$key}'></i>{$name}</a></li>";
}
echo $tpl;
?>
</ul>
</div>
<?php } ?>
<!-- 全局设置语言则不再显示 -->
<div class="menu-group">
<a href="#" id='topbar-user' data-toggle="dropdown" class="topbar-menu">
<i class="font-icon icon-user"></i>
<?php
$user = $_SESSION['kodUser'];
$name = $user['nickName']?$user['nickName']:$user['name'];
echo clear_html($name);
?>&nbsp;
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-topbar-user pull-right animated menuShow" role="menu" aria-labelledby="topbar-user">
<?php if($GLOBALS['isRoot']){ ?>
<li class="menu-system-setting"><a href="#" onclick="core.setting('system');"><i class="font-icon icon-cog"></i><?php echo LNG('system_setting');?></a></li>
<?php } ?>
<?php if($GLOBALS['isRoot'] || $GLOBALS['auth']['systemMember.get']){ ?>
<li class="menu-system-group"><a href="#" onclick="core.setting('member');"><i class="font-icon icon-group"></i><?php echo LNG('setting_member');?></a></li>
<?php } ?>
<?php if($GLOBALS['isRoot'] || $GLOBALS['auth']['pluginApp.index']){ ?>
<li class="menu-system-plugin">
<a href="#" onclick="core.openWindowBig('./index.php?pluginApp/index','<?php echo LNG('PluginCenter');?>');"><i class="font-icon icon-puzzle-piece"></i><?php echo LNG('PluginCenter');?></a></li>
<li role="presentation" class="divider"></li>
<?php } ?>
<li class="menu-system-user"><a href="#" onclick="core.setting('user');"><i class="font-icon icon-user"></i><?php echo LNG('setting_user');?></a></li>
<li class="menu-system-theme"><a href="#" onclick="core.setting('theme');"><i class="font-icon icon-dashboard"></i><?php echo LNG('setting_theme');?></a></li>
<li class="menu-system-full"><a href="#" onclick="core.fullScreen();"><i class="font-icon icon-fullscreen"></i><?php echo LNG('full_screen');?></a></li>
<li class="menu-system-help"><a href="#" onclick="core.setting('help');"><i class="font-icon icon-question"></i><?php echo LNG('setting_help');?></a></li>
<li class="menu-system-about"><a href="#" onclick="core.setting('about');"><i class="font-icon icon-info-sign"></i><?php echo LNG('setting_about');?></a></li>
<li role="presentation" class="divider"></li>
<li class="menu-system-logout"><a href="./index.php?user/logout"><i class="font-icon icon-signout"></i><?php echo LNG('ui_logout');?></a></li>
</ul>
</div>
</div>
<div style="clear:both"></div>
</div>
</div>
@@ -0,0 +1,67 @@
<div class="full-background"></div>
<div class="init-loading"><div>
<img src="<?php echo STATIC_PATH;?>images/common/loading_simple.gif?v=<?php echo KOD_VERSION;?>"/></div>
</div>
<div class="topbar share-page-topbar">
<div class="content">
<div class="top-left">
<a href="./" class="topbar-menu title">
<?php
if(substr(LNG('kod_name'),0,4) == '<img'){
echo LNG('kod_name');
}else{
echo '<i class="icon-cloud"></i>'.LNG('kod_name');
}
?>
</a>
<div class="share-info">
<span class="share-title">
<b class="share-title-info">
<?php clear_html($shareInfo['showName']);?>
</b>
</span>
<span class="size"></span>
<span class="time"></span>
</div>
<div style="clear:both;"></div>
</div>
<div class="top-right">
<div class="share-info-user hidden menu-group" style="z-index:9999;">
<span class="info"></span>
<div class="btn-group">
<a type="button" class="btn btn-primary btn-download" target="_blank" href=""><?php echo LNG('download');?></a>
</div>
</div>
<?php if(!isset($config['settings']['language'])){ ?>
<div class="menu-group">
<a id='topbar-language' data-toggle="dropdown" href="#" class="topbar-menu">
<i class='font-icon icon-flag'></i>&nbsp;<b class="caret"></b>
</a>
<a href="#" onclick="core.qrcode(window.location.href);" title="<?php echo LNG('qrcode');?>" class="topbar-menu" style="padding: 0 15px;margin-left: -2px;">
<i class="font-icon icon-qrcode"></i>
</a>
<ul class="dropdown-menu topbar-language pull-right animated menuShow" role="menu" aria-labelledby="topbar-language">
<?php
$tpl = "";
foreach ($config['settingAll']['language'] as $key => $value) {
$name = $value[0];
$select = I18n::getType() == $key ? "this":"";
$tpl .= "<li><a href='javascript:core.language(\"{$key}\");' title=\"{$key}/{$value[1]}/{$value[2]}\" class='{$select}'><i class='lang-flag flag-{$key}'></i>{$name}</a></li>";
}
echo $tpl;
?>
</ul>
</div>
<?php } ?>
<div class="menu-group">
<a href="#" id='topbar-user' class="topbar-menu" data-toggle="dropdown"><i class="font-icon icon-user"></i><?php echo $_SESSION['kodUser']['name'];?>&nbsp;<b class="caret"></b></a>
<ul class="dropdown-menu menu-topbar-user pull-right animated menuShow" role="menu" aria-labelledby="topbar-user">
<li><a href="#" onclick="core.fullScreen();"><i class="font-icon icon-fullscreen"></i><?php echo LNG('full_screen');?></a></li>
<li class="version_vip_free"><a href="http://kodcloud.com" target="_blank"><i class="font-icon icon-code-fork"></i><?php echo LNG('ui_project_home');?></a></li>
</ul>
</div>
</div>
<div style="clear:both"></div>
</div>
</div>
@@ -0,0 +1,103 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<link href="<?php echo STATIC_PATH;?>style/common.css?ver=<?php echo KOD_VERSION;?>" rel="stylesheet"/>
<link href="./static/style/font-awesome/css/font-awesome.css?ver=<?php echo KOD_VERSION;?>" rel="stylesheet">
<title><?php echo $title;?></title>
<script type="text/javascript" src="<?php echo STATIC_PATH;?>js/lib/jquery-1.8.0.min.js?ver=<?php echo KOD_VERSION;?>"></script>
<style type="text/css">
body{
background-color:#f0f2f5;
font-family: Verdana,"Lantinghei SC","Hiragino Sans GB","Microsoft Yahei",Helvetica,arial,sans-serif;
line-height: 1.5em;
}
body a,body a:hover{color: #1890ff;}
.body-panel{
width:70%;margin:10% auto 5% auto;
font-size: 13px;
color:#666;
background:#fff;border-radius:4px;
padding-top:50px;padding-bottom:100px;
box-shadow: 0 5px 20px rgba(0,0,0,0.05);
}
.body-panel .check-result{text-align: center;color:#000;}
.body-panel .check-result .icon{width:70px;height:70px;line-height:70px;font-size:30px;}
.check-result-title{font-size: 24px;line-height: 32px;margin:20px 0;}
.check-result-desc{
color: #333;
margin: 0 0 20px 0;
background: #fafafa;
font-size: 16px;
width: 80%;
margin: 0 auto;
border-radius: 2px;
padding: 24px 40px;
text-align: left;
}
.error-info{
border-left: 5px solid #1890ff;
display: block;
padding: 5px 10px;
background: #fcfcfc;
color: #666;
word-break: break-all;
font-family: monospace;
}
.location-to{padding: 10px 0;color: #888;font-size: 13px;font-style: italic;}
.icon{
font-family: FontAwesome;
display: inline-block;
width: 20px;
height: 20px;
background: rgba(0, 0, 0, 0.02);
text-align: center;
color: #666;
border-radius: 50%;
line-height: 20px;
font-size: 12px;
}
.icon.icon-loading{
-webkit-animation: moveCircleLoopRight 1.4s infinite linear;
animation: moveCircleLoopRight 1.4s infinite linear;
}
.icon.icon-loading:before{content:"\f110";}
.icon.icon-success{background:#52c41a;color:#fff;}
.icon.icon-success:before{content:"\f00c";}
.icon.icon-error{background:#f5222d;color:#fff;}
.icon.icon-error:before{content:"\f00d";}
</style>
</head>
<body>
<div class="body-panel">
<div class="check-result">
<!-- <div class="icon icon-error"></div> -->
<div class="check-result-title"><?php echo $title;?></div>
<div class="check-result-desc">
<span class="error-info"><?php echo $message;?></span>
<div class="location-to"><?php echo $info;?></div>
</div>
</div>
</div>
<?php if($url){ ?>
<script>
var timeout = parseInt("<?php echo $time;?>");
var link = "<?php echo $url;?>";
var loop = setInterval(function(){
timeout --;
var info = timeout + "s 后自动跳转, <a href='"+link+"'>立即跳转</a>";
$('.location-to').html(info);
if(timeout<=0){
clearInterval(loop);
window.location.href = link;
}
},1000);
</script>
<?php } ?>
</body>
</html>