This page lists files in the current directory. You can view content, get download/execute commands for Wget, Curl, or PowerShell, or filter the list using wildcards (e.g., `*.sh`).
wget 'https://sme10.lists2.roe3.org/kodbox/app/controller/install/static/index.html'
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link head-type='kod' href="<?php echo STATIC_PATH;?>images/icon/fav.png" rel="icon" type="image/x-icon">
<title><?php echo LNG('common.copyright.name');?>-<?php echo LNG('common.install'); ?></title>
<link href="<?php echo STATIC_PATH;?>style/lib/main.css" rel='stylesheet'>
<link href="<?php echo STATIC_PATH;?>style/dist/main.css" rel='stylesheet'>
<link href="<?php echo $installPath;?>static/index.css" rel='stylesheet'>
<?php Hook::trigger('template.commonHeader');?>
</head>
<body>
<div id="app">
<div class="install-box">
<div class="content-main-message">
<div class="header">
<img src="<?php echo $installPath;?>static/logo.png">
</div>
<div class="body">
<div class="content-main">
<?php $hide = $installFast ? 'hidden' : '';?>
<div class="install-fast hidden" fast="<?php echo $installFast; ?>" auto="<?php echo $installAuto; ?>"></div>
<div class="check-result">
<div class="title-box"><?php echo $installFast ? LNG('admin.setting.system') : LNG('admin.install.install'); ?></div>
<div class="progress-box">
<!-- <div class="active"><span>使用协议</span><span class="btm-line"></span></div> -->
<div class="active <?php echo $hide;?>" data="env"><span><?php echo LNG('common.env.check');?></span><span class="btm-line"></span></div>
<div class="<?php echo $hide;?>" data="db"><span><?php echo LNG('admin.install.databaseSet'); ?></span><span class="btm-line"></span></div>
<div class="<?php echo $installFast ? 'active' : '';?>" data="user">
<span><?php echo LNG('admin.setting.account'); ?></span>
<span class="btm-line"></span>
</div>
</div>
<!-- <div class="step-box agreement">
<div class="message-content">
<div class=""></div>
</div>
</div> -->
<div class="step-box env <?php echo $hide; ?>">
<div class="message-content form-box">
<div class="env-table">
<div class="env-item-list">
<?php foreach($envList as $key => $opt){
echo '<p class="'.$key.'"><span class="w30 row-title">'.$opt['title'].'</span><span class="w20 row-value"></span><span class="w40 row-desc">'.$opt['text'].'</span><span class="w10 row-state"><i class="icon icon-loading"></i></span><span class="clear"></span></p>';
} ?>
</div>
<div class="form-row panel-form-body clear"><hr></div>
<div class="form-row form-target-save hidden">
<div class="setting-title"></div>
<div class="setting-content">
<button class="form-save-button"><?php echo LNG('common.ok'); ?></button>
<a class="help hidden" target="_blank" href="http://doc.kodcloud.com/v2/#/help/install"><?php echo LNG('explorer.editor.help'); ?></a>
</div>
</div>
</div>
</div>
</div>
<div class="step-box db hidden">
<div class="message-content">
<p class="info-alert info-alert-yellow hidden"><?php echo LNG('admin.install.dbWasSet'); ?></p>
<div class="db-table"></div>
</div>
</div>
<div class="step-box user <?php echo $installFast ? '' : 'hidden';?>" style="min-height:274px">
<div class="message-content">
<div class="user-table"></div>
</div>
</div>
<div class="step-box msg hidden">
<i class="font-icon success"></i>
<div class="message-content">
<div class='title'><?php echo LNG('admin.install.success'); ?></div>
<div class='desc'></div>
</div>
</div>
</div>
<div class="link hidden">
<?php echo str_replace('5s', '<em class="delay">5</em>s', sprintf(LNG('explorer.jumpAfterWhile'), 5, './')); ?>
</div>
</div>
</div>
</div>
<div class="common-footer aero"></div>
</div>
</div>
<script type="text/javascript">
window.API_HOST = "<?php echo appHostGet();?>";
window.STATIC_PATH = "<?php echo STATIC_PATH;?>";
</script>
<script src="<?php echo STATIC_PATH;?>app/vender/es3-profill.js"></script>
<script src="<?php echo STATIC_PATH;?>app/dist/vendor.js"></script>
<script src="<?php echo STATIC_PATH;?>app/dist/api.js"></script>
<script src="<?php echo $installPath;?>index.js"></script>
<?php Hook::trigger('templateCommonFooter');?>
</body>
</html>
wget 'https://sme10.lists2.roe3.org/kodbox/app/controller/install/static/index.js'
(function(){
// 比较版本号:7.1.19 >= 5.3
var compareVers = function (ver1, ver2) {
ver1 = ver1.toString();
ver2 = ver2.toString();
const pVer1 = ver1.split('.').map(Number);
const pVer2 = ver2.split('.').map(Number);
const mxLen = Math.max(pVer1.length, pVer2.length);
for (var i = 0; i < mxLen; i++) {
const v1 = pVer1[i] || 0;
const v2 = pVer2[i] || 0;
if (v1 > v2) return 1;
if (v1 < v2) return -1;
}
return 0;
}
// 环境检测项赋值
var envView = function(){
var errList = [];
var chkList = ['path_writable', 'php_version', 'allow_url_fopen']; // 检查项
var $table = $(".step-box.env .env-table");
request('install/index/env', {}, function(result){
tips && tips.close();
if (!result || !result.code) {
Tips.tips(LNG['admin.install.envReqErr'], 'warning', 3000);
$table.find('.row-state .icon').removeClass().addClass('icon icon-warn ri-more-fill');
return false;
}
var data = result.data;
$table.find('.env-item-list>p').each(function(){
var key = $(this).attr('class');
var val = data[key];
var txt = '';
switch (key) {
case 'path_writable':
if (val !== true) {
txt = '<span title-timeout="100" title="sudo chmod -Rf 777 '+val+'">'+val+'</span>';
val = false;
}
break;
case 'php_version':
txt = val;
val = compareVers(val, 5.3) > 0 ? true : false;
break;
case 'php_bit':
txt = val;
val = val == 64 ? true : false;
break;
default:break;
}
if (txt) $(this).find('.row-value').html(txt);
var state = val === true ? 'success' : 'error';
$(this).find('.row-state .icon').removeClass().addClass('icon icon-'+state);
if (val !== true) errList.push(key);
});
var button = errList.length ? LNG['common.skip'] : LNG['common.nextStep'];
$table.find(".form-target-save").removeClass('hidden');
$table.find(".form-save-button").text(button);
// 使用帮助
if(errList.length) $table.find("a.help").removeClass('hidden');
});
// 绑定点击事件
$table.delegate('.form-save-button', 'click', function(){
var errs = _.intersection(errList, chkList);
if(!errs.length) return stepNext(this, 1);
var errMsg = [LNG['admin.install.ensureNoError']];
_.each(errs, function(value, i){
errMsg.push((i+1)+'.'+$table.find("."+value+">span:eq(0)").text());
});
Tips.tips(errMsg.join('<br/>'), false, 3000);
});
}
// 数据库配置提交
var dbSave = function(FormData, update){
var update = update || false;
var formMaker = new kodApi.formMaker({formData:FormData });
formMaker.renderTarget($(".step-box.db .db-table"));
if(update) {
$(".step-box.db .db-table").find('button,input').prop('disabled', true);
$(".step-box.db .info-alert").removeClass('hidden');
}
$(".step-box.db .form-save-button").text(LNG['common.ok']);
$(".step-box.db .form-save-button").click(function(){
var data = formMaker.getValue();
if(!data) return false;
var _this = this;
data = $.extend({}, {action: 'db'}, data);
var tips = Tips.loadingMask($('.content-main'),false,0.2);
request('install/index/save', data, function(result){
tips.close();
// 是否删除已存在数据库
if(result.info && result.info == '10001'){
$.dialog.confirm(result.data,function(){
data.del = 1;
dbSaveSet(_this, data);
});
return false;
}
var delay = null;
if(!result.code || (result.info && result.info == '10000')) delay = 5000;
var msg = result.data || (LNG['explorer.error']+', '+LNG['admin.install.setPathWrt']);
Tips.close(msg, result.code, delay);
if(!result.code) return;
stepNext(_this, 2);
}, function(){
tips.close();
});
});
}
/**
* 数据库配置(删除旧数据)提交
* @param {*} _this
* @param {*} data
*/
var dbSaveSet = function(_this, data){
var tips = Tips.loadingMask($('.content-main'),false,0.2);
request('install/index/save', data, function(result){
tips.close();
var delay = !result.code ? 5000 : null;
var msg = result.data || (LNG['explorer.error']+', '+LNG['admin.install.setPathWrt']);
Tips.close(msg, result.code, delay);
if(!result.code) return;
stepNext(_this, 2);
}, function(){
tips.close();
});
}
/**
* 管理员账号提交
* @param {*} formMaker
* @returns
*/
var userSave = function (formMaker) {
var data = formMaker.getValue();
Events.trigger('install.userSetStart',data);
if(!data || !data.name || !data.password || !data.password2) return false;
if (data.password != data.password2) {
formMaker.setValue('password2', '');
Tips.tips(LNG['user.rootPwdEqual'], 'warning');
return false;
}
delete data.password2;
// var _this = this;
var _this = '.step-box.user .form-save-button'; // 为了和旧版统一,实际没有必要
data = $.extend({}, {action: 'user'}, data);
var tips = Tips.loadingMask($('.content-main'),false,0.2);
request('install/index/save', data, function(result){
tips.close();
var delay = !result.code ? 5000 : null;
var msg = result.data || (LNG['explorer.error']+', '+LNG['admin.install.setPathWrt']);
Tips.close(msg, result.code, delay);
if(!result.code) return;
// 显示admin账号密码
name = data.name;
password = data.password;
LocalData.del('fileHistoryLastPath-1');
var update = result.info || 0;
stepLast(_this, update); // 安装成功,提示登录
}, function(){
tips.close();
});
}
/**
* 数据库、缓存配置
*/
var dbView = function(){
var package = './app/controller/install/static/package.html'
requireAsync(package, function(FormData){
// 获取json数据
FormData = FormData.replace(/\n/g,"").replace(/\r/g,""); //去掉字符串中的换行符
FormData = FormData.replace(/\n/g,"").replace(/\s|\xA0/g,""); //去掉字符串中的所有空格
FormData = eval('(' + FormData + ')'); //将字符串解析成json对象
FormData.redisMore.info.openMore.display = LNG['common.more']+' <b class="caret"></b>';
FormData.redisMore.info.openMore.className = 'btn btn-default btn-sm';
request('install/index/env', {db: 1}, function(result){
if(_.isEmpty(result.data)) return dbSave(FormData);
_.each(FormData, function(value, key){
if(result.data[key]) value.value = result.data[key];
});
dbSave(FormData, true);
});
});
}
/**
* 管理员账号配置
*/
var name = '';
var password = '';
var userView = function(fast){
var auto = $('.install-box .install-fast').attr('auto');
var formData = {
"name":{
"type":"input",
"value":auto || 'admin',
// "display":"<i class='font-icon ri-user-line-3'></i>",
"display":LNG['user.account'],
"attr":{"placeholder":LNG['user.inputName']},
"desc":LNG['user.rootName'],
"require":"1"
},
"password":{
"type":"password",
"value":'',
// "display":"<i class='font-icon ri-key-line'></i>",
"display":LNG['common.password'],
"attr":{"placeholder":LNG['user.inputPwd']},
"desc":LNG['user.rootPwd'],
"require":"1"
},
"password2":{
"type":"password",
"value":'',
// "display":"<i class='font-icon ri-key-line'></i>",
"display":LNG['common.password'],
"attr":{"placeholder":LNG['user.inputPwd']},
"desc":LNG['user.rootPwdRepeat'],
"require":"1"
},
};
var formMaker = new kodApi.formMaker({formData:formData });
formMaker.renderTarget($(".step-box.user .user-table"));
Events.trigger('install.userSetReady',formMaker);
tips && tips.close();
$(".step-box.user .form-save-button").text(LNG['common.ok']);
$('.step-box.user .form-box input').keyEnter(function(){userSave(formMaker);});
$(".step-box.user .form-save-button").click(function(){userSave(formMaker);});
}
// 下一步
var stepNext = function(_this, index){
$(_this).parents('.check-result').find('.progress-box>div:eq('+index+')').addClass('active');
$(_this).parents('.check-result').find('.step-box').addClass('hidden');
$(_this).parents('.step-box').next().removeClass('hidden');
}
// 最后一步
var stepLast = function(_this, update){
$(_this).parents('.check-result').find('.title-box,.progress-box').addClass('hidden');
$(_this).parents('.content-main').children('.link').removeClass('hidden');
$(_this).parents('.check-result').find('.step-box').addClass('hidden');
$(_this).parents('.step-box').next().removeClass('hidden');
// 跳转登录
if(update) $(".step-box.msg .title").text(LNG['admin.install.updateSuccess']);
var text = LNG['user.account']+": "+name+" "+LNG['common.password']+": "+password;
$(".step-box.msg .desc").html(text);
var count = 5;
var timer = null;
timer = setInterval(function () {
if (count > 0) {
count = count - 1;
$('.content-main .link .delay').text(count);
} else {
clearInterval(timer);
window.location.href = $('.content-main .link a').attr('href');
}
}, 1000);
}
var request = function(url, data, callback, callbackError){
// 兼容处理: https://qastack.cn/programming/26261001/warning-about-http-raw-post-data-being-deprecated
data = data || {};
data._installTime = time();
$.ajax({
url:API_HOST + url,
data:data,
type: 'POST',
dataType:'json',
error: function (xhr, textStatus, errorThrown) {
if(callbackError) callbackError();
var error = xhr.responseText;
var dialog = $.dialog.list['ajaxErrorDialog'];
if(error && !_.trim(error)) return;// 有内容,但内容为空白则不处理;
Tips.close(LNG['explorer.systemError'], false);
if (xhr.status == 0 && error == '') {
error = LNG['explorer.networkError'];
}
error = '<div class="ajaxError" style="font-size:14px;padding:40px;color:#FF9800;">' + error + '</div>';
if (!dialog) {
$.dialog({
id: 'ajaxErrorDialog',
padding: 0,
width: '60%',
height: '65%',
fixed: true,
resize: true,
title: 'Ajax Error',
content: ''
});
}
$.iframeHtml($(".ajaxErrorDialog .aui-content"), error);
},
success: function(data) {
callback(data);
}
});
}
var tips = window.Tips ? window.Tips.loadingMask() : null;
Events.bind('windowReady',function(){
try {
// 检测是否为一键安装,一键安装直接展示账号界面
var fast = parseInt($('.install-box .install-fast').attr('fast'));
if(!fast) {
envView(); // 1.环境配置
dbView(); // 2.数据库配置
}
userView(fast); // 3.管理员账号配置
new kodApi.copyright();
$(".content-main-message .body").perfectScroll();
} catch(e) {
tips && tips.close();
console.error(e);
var msg = LNG['admin.install.pageError']+'<hr>'+e;
Tips.notify({icon:"error",title:LNG['common.tips'],content:msg});
_.delay(function(){
if ($('.progress-box>.active:last').attr('data') == 'env') {
var $env = $(".step-box.env");
if (!$env.hasClass('hidden') && $env.find('.form-target-save').hasClass('hidden')) {
$env.find('.env-table .row-state .icon').removeClass().addClass('icon icon-warn ri-more-fill');
}
}
}, 1000);
}
});
})();
wget 'https://sme10.lists2.roe3.org/kodbox/app/controller/install/static/package.html'
{
"dbType": {
"type": "segment",
"value": "sqlite",
"display": LNG['admin.install.dbType'],
"info": {
"sqlite": "SQLite",
"mysql": "MySQL",
"pdo": "PDO"
},
"switchItem": {
"sqlite": "dbDescSqlite",
"mysql": "dbDescMysql,dbHost,dbUser,dbPwd,dbName,dbEngine",
"pdo": "dbDescPDO,pdoType"
}
},
"dbDescSqlite": {
"type": "html","display": "",
"value": LNG['admin.install.sqliteDesc']
},
"dbDescMysql": {
"type": "html","display": "",
"value": LNG['admin.install.mysqlDesc']
},
"dbDescPDO": {
"type": "html","display": "",
"value": LNG['admin.install.pdoDesc']
},
"pdoType": {
"type": "segment",
"value": "sqlite",
"display": LNG['common.type'],
"info": {
"sqlite": "SQLite",
"mysql": "MySQL"
},
"switchItem": {
"sqlite": "",
"mysql": "pdoDbHost,pdoDbUser,pdoDbPwd,pdoDbName,pdoDbEngine"
}
},
"dbHost": {
"type": "input",
"value": "127.0.0.1",
"attr": {
"placeholder": "127.0.0.1"
},
"display": LNG['common.server'],
"desc": '<br>'+LNG['admin.install.dbPortDesc'],
"require": "1"
},
"dbUser": {
"type": "input",
"value": "root",
"display": LNG['admin.install.userName'],
"desc": "",
"require": "1"
},
"dbPwd": {
"type": "password",
"value": "",
"display": LNG['common.password'],
"desc": ""
},
"dbName": {
"type": "input",
"value": "kodbox",
"display": LNG['admin.install.database'],
"desc": "",
"require": "1"
},
"dbEngine": {
"type":"select",
"value":"innodb",
"display":LNG['admin.install.dbEngine'],
"info":{"innodb":"InnoDB","myisam":"MyISAM"},
},
"pdoDbHost": {
"type": "input",
"value": "127.0.0.1",
"attr": {
"placeholder": "127.0.0.1"
},
"display": LNG['common.server'],
"desc": '<br>'+LNG['admin.install.dbPortDesc'],
"require": "1"
},
"pdoDbUser": {
"type": "input",
"value": "root",
"display": LNG['admin.install.userName'],
"desc": "",
"require": "1"
},
"pdoDbPwd": {
"type": "password",
"value": "",
"display": LNG['common.password'],
"desc": ""
},
"pdoDbName": {
"type": "input",
"value": "kodbox",
"display": LNG['admin.install.dbName'],
"require": "1"
},
"pdoDbEngine": {
"type":"select",
"value":"innodb",
"display":LNG['admin.install.dbEngine'],
"info":{"innodb":"InnoDB","myisam":"MyISAM"},
},
"step0": "<hr/>",
"cacheType": {
"type": "segment",
"value": "file",
"display": LNG['admin.install.cacheType'],
"desc":"<br/>"+LNG['admin.install.cacheTypeDesc'],
"info": {
"file": LNG['admin.install.fileCache'],
"redis": "Redis",
"memcached": "Memcached"
},
"switchItem": {
"file": "",
"redis": "redisHost,redisMore,redisPort",
"memcached": "memcachedHost,memcachedPort"
}
},
"redisHost": {
"type": "input",
"value": "127.0.0.1",
"attr": {
"placeholder": "127.0.0.1"
},
"display": LNG['common.server'],
"desc": '',
"require": "1"
},
"redisPort": {
"type": "input",
"value": "6379",
"attr": {
"placeholder": "6379"
},
"display": LNG['admin.install.dbPort'],
"desc": "",
"require": "1"
},
"redisMore":{
"type":"button",
"info":{
'openMore':{
"display":LNG['common.more']+" <b class='caret'></b>",
"className":"btn btn-default btn-sm",
},
},
"switchItem":{
'openMore':"redisAuth",
}
},
"redisAuth": {
"type": "password",
"value": "",
"attr": {"placeholder": LNG['common.password']},
"desc": LNG['explorer.share.timeDesc'],
"display": LNG['common.password'],
},
"memcachedHost": {
"type": "input",
"value": "127.0.0.1",
"attr": {
"placeholder": "127.0.0.1"
},
"display": LNG['common.server'],
"desc": "",
"require": "1"
},
"memcachedPort": {
"type": "input",
"value": "11211",
"attr": {
"placeholder": "11211"
},
"display": LNG['admin.install.dbPort'],
"desc": "",
"require": "1"
}
}