mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2026-10-09 08:00:27 +00:00
Compare commits
11
Commits
v2.0.2
...
v1.10.8-lts
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b438a4483d | ||
|
|
fa00c9fadb | ||
|
|
77c73b6710 | ||
|
|
a73d13de00 | ||
|
|
5e0abeaf47 | ||
|
|
e22f1dc313 | ||
|
|
56ce7ddc88 | ||
|
|
2ec19fb7d4 | ||
|
|
b808038f37 | ||
|
|
c8154901d5 | ||
|
|
284aced52c |
@@ -849,7 +849,7 @@ func (a AppService) SyncAppListFromRemote() (err error) {
|
||||
return err
|
||||
}
|
||||
iconStr := ""
|
||||
if !strings.Contains(string(body), "xml") {
|
||||
if !strings.Contains(string(body), "<xml>") {
|
||||
iconStr = base64.StdEncoding.EncodeToString(body)
|
||||
}
|
||||
_ = iconRes.Body.Close()
|
||||
|
||||
@@ -455,7 +455,7 @@ func upgradeInstall(installID uint, detailID uint, backup, pullImage bool) error
|
||||
upErr error
|
||||
backupFile string
|
||||
)
|
||||
global.LOG.Infof(i18n.GetMsgByKey("UpgradeAppStart"))
|
||||
global.LOG.Infof(i18n.GetMsgWithName("UpgradeAppStart", install.Name, nil))
|
||||
if backup {
|
||||
backupRecord, err := NewIBackupService().AppBackup(dto.CommonBackup{Name: install.App.Key, DetailName: install.Name})
|
||||
if err == nil {
|
||||
@@ -587,7 +587,8 @@ func upgradeInstall(installID uint, detailID uint, backup, pullImage bool) error
|
||||
}
|
||||
|
||||
if pullImage {
|
||||
images, err := composeV2.GetDockerComposeImages(install.Name, content, []byte(detail.DockerCompose))
|
||||
projectName := strings.ToLower(install.Name)
|
||||
images, err := composeV2.GetDockerComposeImages(projectName, content, []byte(detail.DockerCompose))
|
||||
if err != nil {
|
||||
upErr = err
|
||||
return
|
||||
|
||||
@@ -323,6 +323,13 @@ func (u *ContainerService) Prune(req dto.ContainerPrune) (dto.ContainerPruneRepo
|
||||
}
|
||||
report.DeletedNumber = len(rep.NetworksDeleted)
|
||||
case "volume":
|
||||
versions, err := client.ServerVersion(context.Background())
|
||||
if err != nil {
|
||||
return report, err
|
||||
}
|
||||
if common.ComparePanelVersion(versions.APIVersion, "1.42") {
|
||||
pruneFilters.Add("all", "true")
|
||||
}
|
||||
rep, err := client.VolumesPrune(context.Background(), pruneFilters)
|
||||
if err != nil {
|
||||
return report, err
|
||||
|
||||
@@ -307,7 +307,7 @@ func (h *HostToolService) OperateSupervisorProcess(req request.SupervisorProcess
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, _ = section.NewKey("command", req.Command)
|
||||
_, _ = section.NewKey("command", strings.TrimSpace(req.Command))
|
||||
_, _ = section.NewKey("directory", req.Dir)
|
||||
_, _ = section.NewKey("autorestart", "true")
|
||||
_, _ = section.NewKey("startsecs", "3")
|
||||
@@ -338,7 +338,7 @@ func (h *HostToolService) OperateSupervisorProcess(req request.SupervisorProcess
|
||||
}
|
||||
|
||||
commandKey := section.Key("command")
|
||||
commandKey.SetValue(req.Command)
|
||||
commandKey.SetValue(strings.TrimSpace(req.Command))
|
||||
directoryKey := section.Key("directory")
|
||||
directoryKey.SetValue(req.Dir)
|
||||
userKey := section.Key("user")
|
||||
|
||||
@@ -431,6 +431,7 @@ func (w WebsiteSSLService) Upload(req request.WebsiteSSLUpload) error {
|
||||
websiteSSL := &model.WebsiteSSL{
|
||||
Provider: constant.Manual,
|
||||
Description: req.Description,
|
||||
Status: constant.SSLReady,
|
||||
}
|
||||
var err error
|
||||
if req.SSLID > 0 {
|
||||
|
||||
@@ -124,6 +124,9 @@ var AddTablePHPExtensions = &gormigrate.Migration{
|
||||
if err := tx.Create(&model.PHPExtensions{Name: "默认", Extensions: "bcmath,gd,gettext,intl,pcntl,shmop,soap,sockets,sysvsem,xmlrpc,zip"}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
if err := tx.Create(&model.PHPExtensions{Name: "WordPress", Extensions: "exif,igbinary,imagick,intl,zip,apcu,memcached,opcache,redis,bc,image,shmop,mysqli,pdo_mysql"}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
if err := tx.Create(&model.PHPExtensions{Name: "苹果CMS-V10", Extensions: "mysqli,pdo_mysql,zip,gd,redis,memcache,memcached"}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -125,8 +125,12 @@
|
||||
<template #body>
|
||||
<div style="position: relative; margin-top: 20px">
|
||||
<div class="monitor-tags" v-if="chartOption === 'network'">
|
||||
<el-tag>{{ $t('monitor.up') }}: {{ currentChartInfo.netBytesSent }} KB/s</el-tag>
|
||||
<el-tag>{{ $t('monitor.down') }}: {{ currentChartInfo.netBytesRecv }} KB/s</el-tag>
|
||||
<el-tag>
|
||||
{{ $t('monitor.up') }}: {{ computeSizeFromKBs(currentChartInfo.netBytesSent) }}
|
||||
</el-tag>
|
||||
<el-tag>
|
||||
{{ $t('monitor.down') }}: {{ computeSizeFromKBs(currentChartInfo.netBytesRecv) }}
|
||||
</el-tag>
|
||||
<el-tag>{{ $t('home.totalSend') }}: {{ computeSize(currentInfo.netBytesSent) }}</el-tag>
|
||||
<el-tag>{{ $t('home.totalRecv') }}: {{ computeSize(currentInfo.netBytesRecv) }}</el-tag>
|
||||
</div>
|
||||
@@ -247,7 +251,7 @@ import LicenseImport from '@/components/license-import/index.vue';
|
||||
import CardWithHeader from '@/components/card-with-header/index.vue';
|
||||
import i18n from '@/lang';
|
||||
import { Dashboard } from '@/api/interface/dashboard';
|
||||
import { dateFormatForSecond, computeSize } from '@/utils/util';
|
||||
import { dateFormatForSecond, computeSize, computeSizeFromKBs } from '@/utils/util';
|
||||
import { useRouter } from 'vue-router';
|
||||
import { loadBaseInfo, loadCurrentInfo } from '@/api/modules/dashboard';
|
||||
import { getIOOptions, getNetworkOptions } from '@/api/modules/host';
|
||||
|
||||
@@ -244,7 +244,7 @@
|
||||
</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="$t('file.group')" prop="group">
|
||||
<el-table-column :label="$t('file.group')" prop="group" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<el-link :underline="false" @click="openChown(row)">
|
||||
{{ row.group ? row.group : '-' }} ({{ row.gid }})
|
||||
@@ -863,7 +863,9 @@ const buttons = [
|
||||
},
|
||||
{
|
||||
label: i18n.global.t('file.mode'),
|
||||
click: openMode,
|
||||
click: (row: File.File) => {
|
||||
openBatchRole([row]);
|
||||
},
|
||||
},
|
||||
{
|
||||
label: i18n.global.t('file.compress'),
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('tool.supervisor.command')" prop="command">
|
||||
<el-input v-model.trim="process.command"></el-input>
|
||||
<el-input v-model="process.command"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('tool.supervisor.numprocs')" prop="numprocsNum">
|
||||
<el-input type="number" v-model.number="process.numprocsNum"></el-input>
|
||||
|
||||
@@ -33,13 +33,11 @@
|
||||
fix
|
||||
show-overflow-tooltip
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
:label="$t('tool.supervisor.dir')"
|
||||
prop="dir"
|
||||
min-width="100px"
|
||||
fix
|
||||
show-overflow-tooltip
|
||||
></el-table-column>
|
||||
<el-table-column :label="$t('tool.supervisor.dir')" prop="dir" min-width="100px" fix>
|
||||
<template #default="{ row }">
|
||||
<Tooltip @click="toFolder(row.dir)" :text="row.dir" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
:label="$t('tool.supervisor.user')"
|
||||
prop="user"
|
||||
@@ -161,6 +159,7 @@ import i18n from '@/lang';
|
||||
import { HostTool } from '@/api/interface/host-tool';
|
||||
import { MsgSuccess } from '@/utils/message';
|
||||
import { VideoPlay, VideoPause, RefreshRight } from '@element-plus/icons-vue';
|
||||
import router from '@/routers';
|
||||
const globalStore = GlobalStore();
|
||||
|
||||
const loading = ref(false);
|
||||
@@ -186,6 +185,10 @@ const getStatus = (status: any) => {
|
||||
search();
|
||||
};
|
||||
|
||||
const toFolder = (folder: string) => {
|
||||
router.push({ path: '/hosts/files', query: { path: folder } });
|
||||
};
|
||||
|
||||
const showStopped = computed((): boolean => {
|
||||
if (supervisorStatus.value.init || setSuperVisor.value) {
|
||||
return false;
|
||||
|
||||
@@ -256,7 +256,7 @@ const acceptParams = (op: string, websiteSSL: Website.SSLDTO) => {
|
||||
ssl.value.primaryDomain = websiteSSL.primaryDomain;
|
||||
ssl.value.pushDir = websiteSSL.pushDir;
|
||||
ssl.value.dir = websiteSSL.dir;
|
||||
ssl.value.otherDomains = websiteSSL.domains;
|
||||
ssl.value.otherDomains = websiteSSL.domains?.replace(/,/g, '\n');
|
||||
ssl.value.autoRenew = websiteSSL.autoRenew;
|
||||
ssl.value.description = websiteSSL.description;
|
||||
ssl.value.id = websiteSSL.id;
|
||||
|
||||
@@ -239,8 +239,8 @@ const buttons = [
|
||||
click: function (row: Website.SSLDTO) {
|
||||
onEdit(row);
|
||||
},
|
||||
disabled: function (row: Website.SSLDTO) {
|
||||
return row.provider == 'selfSigned';
|
||||
show: function (row: Website.SSLDTO) {
|
||||
return row.provider != 'manual' && row.provider != 'selfSigned';
|
||||
},
|
||||
},
|
||||
{
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
<ComplexTable
|
||||
:pagination-config="paginationConfig"
|
||||
:data="data"
|
||||
@sort-change="search"
|
||||
@sort-change="changeSort"
|
||||
@search="search()"
|
||||
:class="{ mask: nginxStatus != 'Running' }"
|
||||
>
|
||||
@@ -251,12 +251,22 @@ let req = reactive({
|
||||
const mobile = computed(() => {
|
||||
return globalStore.isMobile();
|
||||
});
|
||||
const search = async (column?: any) => {
|
||||
|
||||
const changeSort = ({ prop, order }) => {
|
||||
if (order) {
|
||||
req.orderBy = prop == 'primaryDomain' ? 'primary_domain' : prop;
|
||||
req.order = order;
|
||||
} else {
|
||||
req.orderBy = 'created_at';
|
||||
req.order = 'null';
|
||||
}
|
||||
search();
|
||||
};
|
||||
|
||||
const search = async () => {
|
||||
req.page = paginationConfig.currentPage;
|
||||
req.pageSize = paginationConfig.pageSize;
|
||||
req.orderBy = column?.order ? column.prop : 'created_at';
|
||||
req.orderBy = req.orderBy === 'primaryDomain' ? 'primary_domain' : req.orderBy;
|
||||
req.order = column?.order ? column.order : 'null';
|
||||
|
||||
loading.value = true;
|
||||
await SearchWebsites(req)
|
||||
.then((res) => {
|
||||
|
||||
Reference in New Issue
Block a user