var soft = { is_install: false, trail: 0, //是否试用 is_setup: false, is_setup_name: '', refresh_data: [], get_list: function (page, type, search) { if (page == undefined || page == 'null' || page == 'undefined') page = 0; if (type == undefined || type == 'null' || type == 'undefined') type = 0; if (!search) search = $('#SearchValue').val(); if (search == undefined || search == 'null' || search == 'undefined' || search == '') search = undefined; var _this = this, commonly_software = $('#commonly_software'); var istype = getCookie('softType'); if (istype == 'undefined' || istype == 'null' || !istype) { istype = 0; } if (type == 0) type = bt.get_cookie('softType'); if (page == 0) page = bt.get_cookie('p' + type); if (type == '11') { soft.get_dep_list(1); commonly_software.hide(); return; } soft.is_install = false; bt.soft.get_soft_list(page, type, search, function (rdata) { _this.trail = rdata.trail; // if (rdata.pro < 0) { // // $("#updata_pro_info").html(''); // } else // if (rdata.pro === -2) { // $("#updata_pro_info").html('
' + item.title + ' ' + version + '';
},
},
{
field: 'price',
title: 'Developer',
width: 110,
templet: function (item) {
if (!item.author) return 'official';
return item.author;
},
},
{
field: 'ps',
title: lan.soft.instructions,
templet: function (item) {
var ps = item.ps;
var is_php = item.name.indexOf('php-') >= 0;
if (is_php && item.setup) {
if (rdata.apache22 && $.inArray(item.name, phps) >= 0) {
if (item.fpm) {
ps += " (" + lan.soft.apache22 + ')';
}
} else if (!rdata.apache22) {
if (!item.fpm) {
ps += " (" + lan.soft.apache24 + ')';
}
}
}
return '' + ps + '';
},
},
{
field: 'price',
title: lan.soft.price,
width: 92,
templet: function (item) {
var price = lan.soft.free;
if (item.price > 0) {
price = '$' + item.price + '';
}
return price;
},
},
type == 10
? {
field: 'sort',
width: 80,
title: 'Rated',
templet: function (item) {
return item.sort !== undefined
? '' +
(item.sort <= 0 || item.sort > 5 ? lan.soft.not_rated : item.sort.toFixed(1)) +
''
: '--';
},
}
: '',
{
field: 'endtime',
width: 120,
title: lan.soft.expire_time,
templet: function (item) {
var endtime = '--';
if (item.pid > 0) {
if (item.endtime > 0) {
if (item.type != 10) {
endtime = bt.format_data(item.endtime, 'yyyy/MM/dd');
} else {
endtime = bt.format_data(item.endtime, 'yyyy/MM/dd');
}
} else if (item.endtime === 0) {
endtime = lan.soft.permanent;
} else if (item.endtime === -1) {
endtime = lan.soft.not_open;
} else if (item.endtime === -2) {
if (item.type != 10) {
endtime = lan.soft.already_expire;
} else {
endtime = lan.soft.already_expire;
}
}
}
return endtime;
},
},
{
field: 'path',
width: 40,
title: lan.soft.location,
templet: function (item) {
var path = '';
if (item.setup) {
path = '';
}
return path;
},
},
type != 10
? {
field: 'status',
width: 40,
title: lan.soft.status1,
templet: function (item) {
var status = '';
if (item.setup) {
if (item.status) {
status = '';
} else {
status = '';
}
}
return status;
},
}
: '',
{
field: 'index',
width: 100,
title: lan.soft.display_at_homepage,
templet: function (item) {
var to_index = '';
if (item.setup) {
var checked = '';
if (item.index_display) checked = 'checked';
var item_id = item.name.replace(/\./, '');
to_index =
'';
}
return to_index;
},
},
{
field: 'opt',
width: 190,
title: lan.soft.operate,
align: 'right',
templet: function (item) {
var option = '';
var pay_opt = '';
if (item.endtime < 0 && item.pid > 0) {
var re_msg = '';
var re_status = 0;
var buy_type = 0;
switch (item.endtime) {
case -1:
re_msg = lan.soft.buy_now;
buy_type = 31;
break;
case -2:
re_msg = lan.soft.renew_now;
re_status = 1;
buy_type = 32;
break;
}
if (item.type != 10) {
pay_opt =
'" +
re_msg +
'';
} else {
pay_opt = '' + re_msg + '';
}
}
var is_php = item.name.indexOf('php-') >= 0,
is_php5 = item.name.indexOf('php-5') >= 0,
webcache = bt.get_cookie('serverType') == 'openlitespeed' ? true : false,
distribution = bt.get_cookie('distribution');
if (webcache && is_php) {
if ((is_php5 || item.name == 'php-7.0') && distribution == 'centos8') {
option = '' + lan.soft.not_comp + '';
} else if (distribution == 'centos7' && item.name == 'php-5.2') {
option = '' + lan.soft.not_comp + '';
} else {
if (distribution != 'centos7' && is_php5) {
option = '' + lan.soft.not_comp + '';
} else {
if (item.setup && item.task == '1') {
if (pay_opt == '') {
if (item.versions.length > 1) {
for (var i = 0; i < item.versions.length; i++) {
var min_version = item.versions[i];
var ret = bt.check_version(item.version, min_version.m_version + '.' + min_version.version);
if (ret > 0) {
if (ret == 2)
option +=
'' +
lan.soft.update +
' | ';
break;
}
}
} else {
var min_version = item.versions[0];
var cloud_version = min_version.m_version + '.' + min_version.version;
if (item.version != cloud_version)
option +=
'' +
lan.soft.update +
' | ';
}
if (item.admin) {
option += '' + lan.soft.setup + ' | ';
} else {
option += '' + lan.soft.setup + ' | ';
}
} else {
option = pay_opt + ' | ' + option;
}
option += '' + lan.soft.uninstall + '';
} else if (item.task == '-1') {
option = '' + lan.soft.installing + '';
soft.is_install = true;
} else if (item.task == '0') {
option = '' + lan.soft.wait_install + '';
soft.is_install = true;
} else if (item.task == '-2') {
option = 'Updating';
soft.is_install = true;
} else {
if (pay_opt) {
option = pay_opt;
} else {
option = '' + lan.soft.install + '';
}
}
}
}
} else {
if (rdata.apache22 && is_php && $.inArray(item.name, phps) == -1) {
if (item.setup) {
option = '' + lan.soft.uninstall + '';
} else {
option = '' + lan.soft.not_comp + '';
}
} else if (rdata.apache24 && item.name == 'php-5.2') {
if (item.setup) {
option = '' + lan.soft.uninstall + '';
} else {
option = '' + lan.soft.not_comp + '';
}
} else {
if (item.setup && item.task == '1') {
if (pay_opt == '') {
if (item.versions.length > 1) {
for (var i = 0; i < item.versions.length; i++) {
var min_version = item.versions[i];
var ret = bt.check_version(item.version, min_version.m_version + '.' + min_version.version);
if (ret > 0) {
if (ret == 2)
option +=
'' +
lan.soft.update +
' | ';
break;
}
}
} else {
var min_version = item.versions[0];
var cloud_version = min_version.m_version + '.' + min_version.version;
if (item.version != cloud_version)
option +=
'' +
lan.soft.update +
' | ';
}
if (item.admin) {
option += '' + lan.soft.setup + ' | ';
} else {
option += '' + lan.soft.setup + ' | ';
}
} else {
option = pay_opt + ' | ' + option;
}
option += '' + lan.soft.uninstall + '';
} else if (item.task == '-1') {
option = '' + lan.soft.installing + '';
soft.is_install = true;
} else if (item.task == '0') {
option = '' + lan.soft.wait_install + '';
soft.is_install = true;
} else if (item.task == '-2') {
option = 'Updating';
soft.is_install = true;
} else {
if (pay_opt) {
option = pay_opt;
} else {
option = '' + lan.soft.install + '';
}
}
}
}
return option;
},
},
],
data: data,
empty:
'If the search content is not found, submit the demand feedback',
});
// 需求反馈
if (data.length == 0) {
$('.feedback-btn').remove();
$('.soft-filter-box .soft-search').after(
'Feedback'
);
}
},
// 渲染列表
render_promote_list: function (data) {
if ($('#soft_recom_list').length > 0) $('#soft_recom_list').remove();
var html = $(' +
'/ico-' +
item.name +
'.png)
' +
item.title +
'
', {
icon: 16,
time: 0,
shade: [0.3, '#000'],
});
var pdata = {};
var search = $('#SearchValue').val();
if (search != '') {
pdata['search'] = search;
}
var type = '';
var istype = getCookie('depType');
if (istype == 'undefined' || istype == 'null' || !istype) {
istype = '0';
}
pdata['type'] = istype;
var force = bt.get_cookie('force');
if (force === '1') {
pdata['force'] = force;
}
bt.set_cookie('force', 0);
$.post('/deployment?action=GetList', pdata, function (rdata) {
layer.close(loadT);
var tBody = '';
soft.set_soft_tips(rdata, 11);
rdata.type.unshift(
{
icon: 'icon',
id: 0,
ps: 'All',
sort: 1,
title: 'All',
},
{
icon: 'icon',
id: -1,
ps: 'Installed',
sort: 1,
title: 'Installed',
}
);
for (var i = 0; i < rdata.type.length; i++) {
var c = '';
if ('11' == rdata.type[i].id) {
c = 'class="on"';
}
tBody += '' + rdata.type[i].title + '';
}
$('.softtype').html(tBody);
$('.menu-sub span').click(function () {
var _type = $(this).attr('typeid');
bt.set_cookie('softType', _type);
$(this).addClass('on').siblings().removeClass('on');
if (_type !== '11') {
soft.get_list(0, _type);
} else {
soft.get_dep_list(1);
}
});
if ($('.onekey-type').attr('class') === undefined) {
tbody =
'' + lan.soft.status + ':' + (data.status ? lan.soft.running : lan.soft.stop) + '
\ \Public access address: ' + data.ext.url + '
\ ' ); tabCon.append( '' + lan.bt.edit_ps + '
'); tabCon.append(''); tabCon.append(''); tabCon.append(bt.render_help([lan.get('config_edit_ps', [version])])); var fileName = bt.soft.get_config_path(version); if (data.php_ini) fileName = data.php_ini; var loadT = bt.load(lan.soft.get); bt.send( 'GetFileBody', 'files/GetFileBody', { path: fileName, }, function (rdata) { loadT.close(); $('#textBody').text(rdata.data); $('.CodeMirror').remove(); var editor = CodeMirror.fromTextArea(document.getElementById('textBody'), { extraKeys: { 'Ctrl-Space': 'autocomplete', }, lineNumbers: true, matchBrackets: true, }); editor.focus(); $('.CodeMirror-scroll').css({ height: '510px', margin: 0, padding: 0, }); $('#OnlineEditFileBtn').click(function () { $('#textBody').text(editor.getValue()); bt.soft.save_config(fileName, editor.getValue()); }); } ); break; case 'fpm_config': var tabCon = $('.soft-man-con').empty(); tabCon.append('' + lan.bt.edit_ps + '
'); tabCon.append(''); tabCon.append(''); var _arry = ['If you do not understand the php-fpm configuration file, please do not modify it!']; tabCon.append(bt.render_help(_arry)); $('.return_php_info').click(function () { $('.bt-soft-menu p:eq(12)').click(); }); var fileName = bt.soft.get_config_path(version).replace('php.ini', 'php-fpm.conf'); var loadT = bt.load(lan.soft.get); var config = bt.aceEditor({ el: 'textBody', path: fileName }); $('#OnlineEditFileBtn').click(function () { bt.saveEditor(config); }); break; case 'change_version': var _list = []; var opt_version = ''; for (var i = 0; i < data.versions.length; i++) { if (data.versions[i].setup) opt_version = data.name + ' ' + data.versions[i].m_version; _list.push({ value: data.name + ' ' + data.versions[i].m_version, title: data.name + ' ' + data.versions[i].m_version, }); } var _form_data = { title: lan.soft.select_version, items: [ { name: 'phpVersion', width: '160px', type: 'select', value: opt_version, items: _list, }, { name: 'btn_change_version', type: 'button', text: lan.soft.version_to, callback: function (ldata) { if (ldata.phpVersion == opt_version) { bt.msg({ msg: 'Is already[' + opt_version + ']', icon: 2, }); return; } if (data.name == 'mysql') { var ver = ldata.phpVersion.split('mysql '), pdata = { sName: 'mysql', version: ver[1], type: 0 }; $.post('/plugin?action=check_install_limit', pdata, function (rdata) { if (rdata !== null && rdata.status == false) { bt.msg({ msg: rdata.msg, icon: 2, time: 3000 }); return false; } bt.database.get_list(1, '', function (ddata) { if (ddata.data.length > 0) { bt.msg({ msg: lan.soft.mysql_d, icon: 5, time: 5000, }); return; } bt.soft.install_soft(data, ldata.phpVersion.split(' ')[1], 0); }); }); } else { bt.soft.install_soft(data, ldata.phpVersion.split(' ')[1], 0); } }, }, ], }; bt.render_form_line(_form_data, '', $('.soft-man-con').empty()); break; case 'change_data_path': bt.send('GetMySQLInfo', 'database/GetMySQLInfo', {}, function (rdata) { var form_data = { items: [ { type: 'text', name: 'datadir', value: rdata.datadir, event: { css: 'glyphicon-folder-open', callback: function (obj) { bt.select_path(obj); }, }, }, { name: 'btn_change_path', type: 'button', text: lan.soft.mysql_to, callback: function (ldata) { var loadT = bt.load(lan.soft.mysql_to_msg1); bt.send( 'SetDataDir', 'database/SetDataDir', { datadir: ldata.datadir, }, function (rdata) { loadT.close(); bt.msg(rdata); } ); }, }, ], }; bt.render_form_line(form_data, '', $('.soft-man-con').empty()); }); break; case 'change_mysql_port': bt.send('GetMySQLInfo', 'database/GetMySQLInfo', {}, function (rdata) { var form_data = { items: [ { type: 'text', width: '100px', name: 'port', value: rdata.port, }, { name: 'btn_change_port', type: 'button', text: lan.public.edit, callback: function (ldata) { var loadT = bt.load(); bt.send( 'SetMySQLPort', 'database/SetMySQLPort', { port: ldata.port, }, function (rdata) { loadT.close(); bt.msg(rdata); } ); }, }, ], }; bt.render_form_line(form_data, '', $('.soft-man-con').empty()); }); break; case 'change_mysql_ssl': bt.send('check_mysql_ssl_status', 'database/check_mysql_ssl_status', {}, function (rdata) { var form_data = { title: 'Mysql SSL', items: [ { type: 'switch', name: 'write_ssl', value: rdata, }, ], }; bt.render_form_line(form_data, '', $('.soft-man-con').empty()); var downssl = '/www/server/data/ssl.zip'; $('.soft-man-con').append( bt.render_help(['After setting, manually restart the database to take effect', "Download Mysql SSL self-signed certificate【SSL.zip】"]) ); $('a.downssl').click(function () { window.open('/download?filename=' + encodeURIComponent(downssl)); }); $('#write_ssl').change(function () { var loadT = bt.load(); $.post('/database?action=write_ssl_to_mysql', function (rdata) { loadT.close(loadT); var open_type = $('#write_ssl').prop('checked') ? 'turned on' : 'turned off', loadP = layer.confirm( 'The SSL setting is ' + open_type + ' successfully.| ' + lan.soft.mysql_status_title1 + ' | ' + getLocalTime(rdata.Run) + ' | ' + lan.soft.mysql_status_title5 + ' | ' + parseInt(rdata.Questions / rdata.Uptime) + ' |
|---|---|---|---|
| ' + lan.soft.mysql_status_title2 + ' | ' + rdata.Connections + ' | ' + lan.soft.mysql_status_title6 + ' | ' + parseInt((parseInt(rdata.Com_commit) + parseInt(rdata.Com_rollback)) / rdata.Uptime) + ' |
| ' + lan.soft.mysql_status_title3 + ' | ' + ToSize(rdata.Bytes_sent) + ' | ' + lan.soft.mysql_status_title7 + ' | ' + rdata.File + ' |
| ' + lan.soft.mysql_status_title4 + ' | ' + ToSize(rdata.Bytes_received) + ' | ' + lan.soft.mysql_status_title8 + ' | ' + rdata.Position + ' |
| \ \ | ||
|---|---|---|
| ' + lan.soft.mysql_status_title9 + ' | ' + rdata.Threads_running + '/' + rdata.Max_used_connections + ' | ' + lan.soft.mysql_status_ps1 + ' |
| ' + lan.soft.mysql_status_title10 + ' | ' + (!isNaN(title10) ? title10 : '0') + '% | ' + lan.soft.mysql_status_ps2 + ' |
| ' + lan.soft.mysql_status_title11 + ' | ' + (!isNaN(title11) ? title11 : '0') + '% | ' + lan.soft.mysql_status_ps3 + ' |
| ' + lan.soft.mysql_status_title12 + ' | ' + (!isNaN(title12) ? title12 : '0') + '% | ' + lan.soft.mysql_status_ps4 + ' |
| ' + lan.soft.mysql_status_title13 + ' | ' + cache_size + ' | ' + lan.soft.mysql_status_ps5 + ' |
| ' + lan.soft.mysql_status_title14 + ' | ' + (!isNaN(title14) ? title14 : '0') + '% | ' + lan.soft.mysql_status_ps6 + ' |
| ' + lan.soft.mysql_status_title15 + ' | ' + rdata.Open_tables + ' | ' + lan.soft.mysql_status_ps7 + ' |
| ' + lan.soft.mysql_status_title16 + ' | ' + rdata.Select_full_join + ' | ' + lan.soft.mysql_status_ps8 + ' |
| ' + lan.soft.mysql_status_title17 + ' | ' + rdata.Select_range_check + ' | ' + lan.soft.mysql_status_ps9 + ' |
| ' + lan.soft.mysql_status_title18 + ' | ' + rdata.Sort_merge_passes + ' | ' + lan.soft.mysql_status_ps10 + ' |
| ' + lan.soft.mysql_status_title19 + ' | ' + rdata.Table_locks_waited + ' | ' + lan.soft.mysql_status_ps11 + ' |
\ ' + lan.soft.mysql_log_bin + ' ' + ToSize(rdata.msg) + '\ \
' + lan.soft.mysql_log_err + '
\ \ '; $('.soft-man-con').html(limitCon); //设置二进制日志 $('.btn-bin').click(function () { var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: 0.3, }); $.post('/database?action=BinLog', '', function (rdata) { layer.close(loadT); layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5, }); soft.get_tab_contents('mysql_log'); }); }); //清空日志 $('.btn-clear').click(function () { var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: 0.3, }); $.post('/database?action=GetErrorLog', 'close=1', function (rdata) { layer.close(loadT); layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5, }); soft.get_tab_contents('mysql_log'); }); }); bt.send('GetErrorLog', 'database/GetErrorLog', {}, function (error_body) { if (error_body.status === false) { layer.msg(error_body.msg, { icon: 5, }); error_body = lan.soft.mysql_log_ps1; } if (error_body == '') error_body = lan.soft.mysql_log_ps1; $('#error_log').text(error_body); var ob = document.getElementById('error_log'); ob.scrollTop = ob.scrollHeight; }); } ); break; case 'mysql_slow_log': var loadT = bt.load(); bt.send('GetSlowLogs', 'database/GetSlowLogs', {}, function (logs) { loadT.close(); if (!logs.status) { logs.msg = ''; } if (logs.msg == '') logs.msg = lan.soft.no_slow_log; var phpCon = ''; $('.soft-man-con').html(phpCon); var ob = document.getElementById('error_log'); ob.scrollTop = ob.scrollHeight; }); break; case 'log': var loadT = bt.load(lan.public.the_get); bt.send( 'GetOpeLogs', 'ajax/GetOpeLogs', { path: '/www/wwwlogs/nginx_error.log', }, function (rdata) { loadT.close(); if (rdata.msg == '') rdata.msg = lan.soft.no_log; var ebody = ''; $('.soft-man-con').html(ebody); var ob = document.getElementById('error_log'); ob.scrollTop = ob.scrollHeight; } ); break; case 'nginx_status': var loadT = bt.load(); bt.send('GetNginxStatus', 'ajax/GetNginxStatus', {}, function (rdata) { loadT.close(); $('.soft-man-con').html("| Name | Format | Opt |
|---|
| Name | Format | Opt |
|---|
| ' + lan.soft.field + ' | ' + lan.soft.curr_val + ' | ' + lan.soft.instructions + ' |
|---|
' + lan.soft.pma_user + '
\' + lan.soft.pma_pass1 + '
\' + lan.soft.pma_pass2 + '
\ \| ' + lan.soft.version + ' | ' + php_info.phpinfo.php_version + ' | ' + lan.soft.install_path + ' | ' + php_info.phpinfo.php_path + ' |
| php.ini | ' + php_info.phpinfo.php_ini + ' | ||
| ' + lan.soft.loaded + ' | ' + php_info.phpinfo.modules + ' | ||
' + php_info.phpinfo.keys[k] + '
'; con += '| ' + key + ' | ' + p_status[php_info[k][key]] + ' | '; nkey++; if (nkey >= 3) { nkey = 0; con += '
' + rdata[i].name + '' + ibody + ', ' + rdata[i].ps + '
'; } var tabCon = $('.soft-man-con').empty(); tabCon.append('| ' + lan.soft.field + ' | ' + lan.soft.curr_val + ' | ' + lan.soft.instructions + ' |
|---|
' + lan.soft.name + ':' + data.title + '
\' + lan.soft.version + ':' + data.versions + '
\' + lan.soft.ps + ':' + data.ps + '
\' + lan.soft.size + ':' + bt.format_size(data.size, true) + '
\' + lan.soft.author + ':' + data.author + '
\' + lan.soft.source + ':' + data.home + '
\
', {
icon: 16,
time: 0,
shade: [0.3, '#000'],
});
$.post('/deployment?action=AddPackage', pdata, function (rdata) {
layer.close(loadT);
layer.msg(rdata.msg, {
icon: rdata.status ? 1 : 5,
});
if (rdata.status) {
GetSrcList();
layer.close(openId);
}
});
return;
}
openId = layer.open({
type: 1,
skin: 'demo-class',
area: '480px',
title: '添加源码包',
closeBtn: 2,
shift: 5,
shadeClose: false,
content:
'Title:
', {
icon: 16,
time: 0,
shade: [0.3, '#000'],
});
var data = $('#addweb').serialize() + '&port=' + Webport + '&webname=' + domain + '&ftp=false&sql=true&address=localhost&codeing=utf8&version=' + php_version;
$.post('/site?action=AddSite', data, function (ret) {
layer.close(loadT);
if (!ret.siteStatus) {
layer.msg(ret.msg, {
icon: 5,
});
return;
}
layer.close(add);
var sqlData = '';
if (ret.databaseStatus) {
sqlData =
"Database account information
\Database name:" + ret.databaseUser + '
\User:' + ret.databaseUser + '
\Password:' + ret.databasePass + '
\ '; } var pdata = 'dname=' + codename + '&site_name=' + mainDomain + '&php_version=' + php_version; var loadT = layer.msg('
Successfully deployed, no need to install, please login to modify the default account password.
\User:" + rdata.msg.admin_username + '
\Password:' + rdata.msg.admin_password + '
\ '; } sqlData += "Visit site:http://" + mainDomain + rdata.msg.success_url + '
'; layer.open({ type: 1, area: '600px', title: 'Successfully deployed [' + title + ']', closeBtn: 2, shadeClose: false, content: "
正在' +
speed.name +
' 
' + ToSize(speed.used) + '/' + ToSize(speed.total) + '' + ToSize(speed.speed) + '/s
'; $('.depSpeed').prev().hide(); $('.depSpeed').css({ 'margin-left': '-37px', width: '380px', }); $('.depSpeed').parents('.layui-layer').css({ 'margin-left': '-100px', }); } else { speed = '' + speed.name + '
'; $('.depSpeed').prev().show(); $('.depSpeed').removeAttr('style'); $('.depSpeed').parents('.layui-layer').css({ 'margin-left': '0', }); } $('.depSpeed').html(speed); setTimeout(function () { GetSpeed(); }, 1000); }); } function onekeyCodeSite(codename, versions, title, enable_functions) { $.post('/site?action=GetPHPVersion', function (rdata) { var php_version = ''; var n = 0; for (var i = rdata.length - 1; i >= 0; i--) { if (versions.indexOf(rdata[i].version) != -1) { php_version += "'; n++; } } if (n == 0) { layer.msg('Missing supported PHP version, please install!', { icon: 5, }); return; } var default_path = bt.get_cookie('sites_path'); if (!default_path) default_path = '/www/wwwroot'; var con = '