恢复为OSCM系统

This commit is contained in:
yuxin-pc 2025-06-07 13:35:04 +08:00
parent 3e500afd15
commit 7404ea6191
14 changed files with 70 additions and 80 deletions

View File

@ -3,7 +3,7 @@ FROM nginx
# 定义作者 # 定义作者
MAINTAINER jsc MAINTAINER jsc
# 将dist文件中的内容复制到 /usr/share/nginx/html/ 这个目录下面 # 将dist文件中的内容复制到 /usr/share/nginx/html/ 这个目录下面
COPY dist/ /usr/share/nginx/html/secworld/ COPY dist/ /usr/share/nginx/html/oscm/
COPY nginx.conf /etc/nginx/nginx.conf COPY nginx.conf /etc/nginx/nginx.conf
# COPY default.conf /etc/nginx/conf.d/default.conf # COPY default.conf /etc/nginx/conf.d/default.conf
RUN echo 'echo init ok!!' RUN echo 'echo init ok!!'

View File

@ -42,7 +42,7 @@ http {
index index.html index.htm; index index.html index.htm;
} }
location /secworld { location /oscm {
root /usr/share/nginx/html; root /usr/share/nginx/html;
index index.html index.htm; index index.html index.htm;
try_files $uri $uri/ oscm/index.html; try_files $uri $uri/ oscm/index.html;
@ -50,7 +50,7 @@ http {
} }
location /api { location /api {
proxy_pass http://secworld:8081; proxy_pass http://oscm:8081;
proxy_set_header Connection ""; proxy_set_header Connection "";
proxy_http_version 1.1; proxy_http_version 1.1;
proxy_set_header Host $host; proxy_set_header Host $host;

View File

@ -63,7 +63,7 @@ axios.interceptors.response.use(
// console.log('拦截器响应成功') // console.log('拦截器响应成功')
if (response.data.code == 401) { if (response.data.code == 401) {
cookieUtil.setCookie('oscm_user', {}, 0); cookieUtil.setCookie('oscm_user', {}, 0);
window.location = '/secworld/login' window.location = '/oscm/login'
return; return;
} }
return response return response

View File

@ -101,7 +101,7 @@ axios.interceptors.response.use(
// console.log('拦截器响应成功') // console.log('拦截器响应成功')
if (response.data.code == 401) { if (response.data.code == 401) {
cookieUtil.setCookie('oscm_user', {}, 0) cookieUtil.setCookie('oscm_user', {}, 0)
window.location = '/secworld/login' window.location = '/oscm/login'
return return
} }
return response return response

View File

@ -41,7 +41,7 @@ Vue.use(VueRouter)
Vue.config.productionTip = false Vue.config.productionTip = false
const routes = [ const routes = [
{ {
path: '/secworld', component: Index, path: '/oscm', component: Index,
children: [ children: [
{path: '', component: OverView, meta: {keepAlive: true}}, {path: '', component: OverView, meta: {keepAlive: true}},
{path: 'home', component: OverView, meta: {keepAlive: true}}, {path: 'home', component: OverView, meta: {keepAlive: true}},
@ -69,7 +69,7 @@ const routes = [
{path: 'settings/wordBank', component: WordBankTab, meta: {keepAlive: true}} {path: 'settings/wordBank', component: WordBankTab, meta: {keepAlive: true}}
] ]
}, },
{path: '/secworld/login', component: login} {path: '/oscm/login', component: login}
] ]
const router = new VueRouter({ const router = new VueRouter({
mode: 'history', mode: 'history',
@ -82,28 +82,28 @@ router.beforeEach((to, from, next) => {
if (userInfo && userInfo.length > 0) { if (userInfo && userInfo.length > 0) {
isLogin = true isLogin = true
} }
if (to.path === '/secworld/login') { if (to.path === '/oscm/login') {
next(); next();
return; return;
} }
if (isLogin) { if (isLogin) {
next() next()
} else { } else {
next({path: '/secworld/login'}); next({path: '/oscm/login'});
} }
// if(isLogin){ // if(isLogin){
// if(to.path == '/secworld/login'){ // if(to.path == '/oscm/login'){
// next({ path: '/secworld/' }) // next({ path: '/oscm/' })
// }else{ // }else{
// next() // next()
// } // }
// }else{ // }else{
// if(to.path == '/secworld/login'){ // if(to.path == '/oscm/login'){
// next() // next()
// }else{ // }else{
// next({ path: '/secworld/login' }) // next({ path: '/oscm/login' })
// } // }
// } // }
}) })

View File

@ -14,60 +14,50 @@
style="height:100%" style="height:100%"
:router="true" :router="true"
> >
<el-menu-item index="/secworld/home" class="menu_item"> <el-menu-item index="/oscm/home" class="menu_item">
<h1 style="color: white;text-align: center;line-height:60px"> <h1 style="color: white;text-align: center;line-height:60px">
安全运营管理平台 采集管理平台
</h1> </h1>
</el-menu-item> </el-menu-item>
<el-submenu index="/secworld/node"> <el-submenu index="/oscm/node">
<template slot="title"> <template slot="title">
<span slot="title">资产管理</span> <span slot="title">采集节点</span>
</template> </template>
<el-menu-item index="/secworld/server">云服务器</el-menu-item> <el-menu-item index="/oscm/server">云服务器</el-menu-item>
<el-menu-item index="/secworld/project">漏洞扫描引擎</el-menu-item> <el-menu-item index="/oscm/project">采集引擎</el-menu-item>
</el-submenu> </el-submenu>
<el-submenu index="/secworld/target"> <el-submenu index="/oscm/target">
<template slot="title"> <template slot="title">
<span slot="title">目标漏洞网站</span> <span slot="title">采集目标</span>
</template> </template>
<el-menu-item index="/secworld/target/website">网站目标</el-menu-item> <el-menu-item index="/oscm/target/website">网站</el-menu-item>
<el-menu-item index="/secworld/target/social">社媒目标</el-menu-item> <el-menu-item index="/oscm/target/social">社交帐号</el-menu-item>
<el-menu-item index="/secworld/target/sensitive">高敏目标</el-menu-item> <el-menu-item index="/oscm/target/sensitive">高敏目标</el-menu-item>
<!-- <el-menu-item index="/secworld/target/api">API</el-menu-item>--> <el-menu-item index="/oscm/target/api">API</el-menu-item>
<el-submenu index="/secworld/rules"> <el-submenu index="/oscm/rules">
<template slot="title"> <template slot="title">
<span slot="title">策略管理</span> <span slot="title">规则模板</span>
</template> </template>
<el-menu-item index="/secworld/rules/parser">策略模板</el-menu-item> <el-menu-item index="/oscm/rules/parser">解析模板</el-menu-item>
<el-menu-item index="/secworld/rules/filter">过滤配置</el-menu-item> <el-menu-item index="/oscm/rules/filter">过滤配置</el-menu-item>
</el-submenu> </el-submenu>
</el-submenu> </el-submenu>
<el-submenu index="/secworld/task"> <el-submenu index="/oscm/task">
<template slot="title"> <template slot="title">
<span slot="title">漏洞扫描任务</span> <span slot="title">采集任务</span>
</template> </template>
<el-menu-item index="/secworld/task/common">任务管理</el-menu-item> <el-menu-item index="/oscm/task/common">普通任务</el-menu-item>
<el-menu-item index="/secworld/task/single">漏洞扫描</el-menu-item> <el-menu-item index="/oscm/task/single">单站点任务</el-menu-item>
</el-submenu> </el-submenu>
<el-submenu index="/secworld/settings"> <el-submenu index="/oscm/settings">
<template slot="title"> <template slot="title">
<span slot="title">响应管理</span> <span slot="title">系统管理</span>
</template> </template>
<el-menu-item index="/secworld/log">扫描任务日志</el-menu-item> <el-menu-item index="/oscm/log">运行日志</el-menu-item>
<el-menu-item index="/secworld/settings/wordBank">扫描任务规则</el-menu-item> <el-menu-item index="/oscm/settings/wordBank">词库管理</el-menu-item>
<el-menu-item index="/secworld/settings/metaData">元数据表格</el-menu-item> <el-menu-item index="/oscm/settings/metaData">元数据表格</el-menu-item>
<el-menu-item index="/secworld/settings/metaDict">元数据字典</el-menu-item> <el-menu-item index="/oscm/settings/metaDict">元数据字典</el-menu-item>
</el-submenu> </el-submenu>
<el-menu-item index="" class="menu_item">
<a class="menu-link" href="http://47.115.228.133:28086/dash/main" target="_blank">
<span>资源运行管理</span>
</a>
</el-menu-item>
<el-menu-item index="" class="menu_item">
<a class="menu-link" href="http://ops.dfhsbj.net:38082/" target="_blank">
<span>漏洞挖掘利用</span>
</a>
</el-menu-item>
</el-menu> </el-menu>
</el-col> </el-col>
<el-col :span="2" :offset="2"> <el-col :span="2" :offset="2">
@ -179,7 +169,7 @@ export default {
userApi.logout((response) => { userApi.logout((response) => {
this.setUserInfo({}); this.setUserInfo({});
cookieUtil.setCookie('oscm_user', {}, 0); cookieUtil.setCookie('oscm_user', {}, 0);
this.$router.push("/secworld/login"); this.$router.push("/oscm/login");
if (response.data.result) { if (response.data.result) {
console.log("out"); console.log("out");
} }
@ -188,7 +178,7 @@ export default {
}, },
mounted: function () { mounted: function () {
if (this.user === {}) { if (this.user === {}) {
this.$router.push('/secworld/login'); this.$router.push('/oscm/login');
return; return;
} }
this.getUserInfo(); this.getUserInfo();
@ -203,7 +193,7 @@ export default {
let pathList = to.path.split('/'); let pathList = to.path.split('/');
let activeMenu = ''; let activeMenu = '';
if (pathList.length < 3 || pathList[2] === undefined || pathList[2] === '') { if (pathList.length < 3 || pathList[2] === undefined || pathList[2] === '') {
activeMenu = "/secworld/overview"; activeMenu = "/oscm/overview";
} else { } else {
activeMenu = to.path; activeMenu = to.path;
} }

View File

@ -247,7 +247,7 @@ export default {
this.multipleSelection = val; this.multipleSelection = val;
}, },
viewProject(index, table) { viewProject(index, table) {
this.$router.push('/secworld/log/detail/' + table[index].id); this.$router.push('/oscm/log/detail/' + table[index].id);
}, },
jumpToScrapydLog(index, table) { jumpToScrapydLog(index, table) {
logApi.getScrapydLogURL(table[index], (response) => { logApi.getScrapydLogURL(table[index], (response) => {

View File

@ -2,7 +2,7 @@
<div id="login_form" :style="'height:'+windowHeight+'px'"> <div id="login_form" :style="'height:'+windowHeight+'px'">
<el-row style="height:100%;"> <el-row style="height:100%;">
<el-col id="login_inner"> <el-col id="login_inner">
<h1 style="text-align:center;margin:25px;">安全运营管理平台</h1> <h1 style="text-align:center;margin:25px;">采集管理平台</h1>
<el-form ref="form" :model="form" label-position="left" > <el-form ref="form" :model="form" label-position="left" >
<el-form-item> <el-form-item>
<el-input class="login_input" clearable v-model="form.username" placeholder="用户名"></el-input> <el-input class="login_input" clearable v-model="form.username" placeholder="用户名"></el-input>
@ -55,7 +55,7 @@ export default {
var result = response.data; var result = response.data;
if(result.code == 200){ if(result.code == 200){
cookieUtil.setCookie('oscm_user', result.content, -1) cookieUtil.setCookie('oscm_user', result.content, -1)
window.location = "/secworld/" window.location = "/oscm/"
}else{ }else{
alert("登录失败") alert("登录失败")
} }
@ -65,7 +65,7 @@ export default {
mounted(){ mounted(){
this.windowHeight = window.innerHeight; this.windowHeight = window.innerHeight;
if(cookieUtil.getCookie('oscm_user') != {}){ if(cookieUtil.getCookie('oscm_user') != {}){
this.$router.push('/secworld/') this.$router.push('/oscm/')
} }
} }
} }
@ -90,7 +90,7 @@ export default {
color: #999999; color: #999999;
} }
#login_form{ #login_form{
background: url("/secworld/img/login.jpg"); background: url("/oscm/img/login.jpg");
background-size: contain; background-size: contain;
} }

View File

@ -6,7 +6,7 @@
<el-card class="overview_block_item_card" style="background-color: #a66dd4"> <el-card class="overview_block_item_card" style="background-color: #a66dd4">
<el-row> <el-row>
<el-col :span="18"> <el-col :span="18">
<h1 class="card_title">资产管理</h1> <h1 class="card_title">采集节点</h1>
</el-col> </el-col>
<el-col :span="6" class="card_number"> <el-col :span="6" class="card_number">
<i class="el-icon-cpu"></i> <i class="el-icon-cpu"></i>
@ -17,7 +17,7 @@
:show-text="false" color="#e83e8c"></el-progress> :show-text="false" color="#e83e8c"></el-progress>
<el-row style="margin-top: 10px"> <el-row style="margin-top: 10px">
<el-col :span="12"> <el-col :span="12">
<span class="card_subtitle" @click="jumpTo('/secworld/server')">服务器在线</span> <span class="card_subtitle" @click="jumpTo('/oscm/server')">服务器在线</span>
</el-col> </el-col>
<el-col class="card_text" :span="12" style="text-align: right">{{ numberStats.server.positive }} <el-col class="card_text" :span="12" style="text-align: right">{{ numberStats.server.positive }}
</el-col> </el-col>
@ -28,7 +28,7 @@
:show-text="false" color="#e83e8c"></el-progress> :show-text="false" color="#e83e8c"></el-progress>
<el-row style="margin-top: 10px"> <el-row style="margin-top: 10px">
<el-col :span="12"> <el-col :span="12">
<span class="card_subtitle" @click="jumpTo('/secworld/project')">漏洞扫描引擎启用</span> <span class="card_subtitle" @click="jumpTo('/oscm/project')">采集引擎启用</span>
</el-col> </el-col>
<el-col class="card_text" :span="12" style="text-align: right">{{ numberStats.project.positive }} <el-col class="card_text" :span="12" style="text-align: right">{{ numberStats.project.positive }}
</el-col> </el-col>
@ -40,7 +40,7 @@
<el-card class="overview_block_item_card" style="background-color: #6dd4b1"> <el-card class="overview_block_item_card" style="background-color: #6dd4b1">
<el-row> <el-row>
<el-col :span="18"> <el-col :span="18">
<h1 class="card_title">目标漏洞网站</h1> <h1 class="card_title">监控目标</h1>
</el-col> </el-col>
<el-col :span="6" class="card_number"> <el-col :span="6" class="card_number">
<i class="el-icon-aim"></i> <i class="el-icon-aim"></i>
@ -53,7 +53,7 @@
color="#e83e8c"></el-progress> color="#e83e8c"></el-progress>
<el-row style="margin-top: 10px"> <el-row style="margin-top: 10px">
<el-col :span="12"> <el-col :span="12">
<span class="card_subtitle" @click="jumpTo('/secworld/target/website')">网站目标</span> <span class="card_subtitle" @click="jumpTo('/oscm/target/website')">网站目标</span>
</el-col> </el-col>
<el-col class="card_text" :span="12" style="text-align: right">{{ numberStats.targetWebsite.positive }} <el-col class="card_text" :span="12" style="text-align: right">{{ numberStats.targetWebsite.positive }}
@ -67,7 +67,7 @@
color="#e83e8c"></el-progress> color="#e83e8c"></el-progress>
<el-row style="margin-top: 10px"> <el-row style="margin-top: 10px">
<el-col :span="12"> <el-col :span="12">
<span class="card_subtitle" @click="jumpTo('/secworld/target/social')">社媒目标</span> <span class="card_subtitle" @click="jumpTo('/oscm/target/social')">社交帐号</span>
</el-col> </el-col>
<el-col class="card_text" :span="12" style="text-align: right">{{ numberStats.targetSocial.positive }} <el-col class="card_text" :span="12" style="text-align: right">{{ numberStats.targetSocial.positive }}
</el-col> </el-col>
@ -79,7 +79,7 @@
<el-card class="overview_block_item_card" style="background-color: #34caca"> <el-card class="overview_block_item_card" style="background-color: #34caca">
<el-row> <el-row>
<el-col :span="18"> <el-col :span="18">
<h1 class="card_title">漏洞扫描任务</h1> <h1 class="card_title">采集任务</h1>
</el-col> </el-col>
<el-col :span="6" class="card_number"> <el-col :span="6" class="card_number">
<i class="el-icon-document"></i> <i class="el-icon-document"></i>
@ -91,7 +91,7 @@
:show-text="false" :show-text="false"
color="#e83e8c"></el-progress> color="#e83e8c"></el-progress>
<el-row style="margin-top: 10px"> <el-row style="margin-top: 10px">
<el-col :span="12"><span class="card_subtitle" @click="jumpTo('/secworld/task/common')">任务管理</span> <el-col :span="12"><span class="card_subtitle" @click="jumpTo('/oscm/task/common')">普通任务</span>
</el-col> </el-col>
<el-col class="card_text" :span="12" style="text-align: right">{{ numberStats.taskCommon.positive }} <el-col class="card_text" :span="12" style="text-align: right">{{ numberStats.taskCommon.positive }}
</el-col> </el-col>
@ -102,7 +102,7 @@
color="#e83e8c"></el-progress> color="#e83e8c"></el-progress>
<el-row style="margin-top: 10px"> <el-row style="margin-top: 10px">
<el-col :span="12"> <el-col :span="12">
<span class="card_subtitle" @click="jumpTo('/secworld/task/single')">漏洞扫描</span> <span class="card_subtitle" @click="jumpTo('/oscm/task/single')">单站点任务</span>
</el-col> </el-col>
<el-col class="card_text" :span="12" style="text-align: right">{{ numberStats.taskSingle.all }} <el-col class="card_text" :span="12" style="text-align: right">{{ numberStats.taskSingle.all }}
</el-col> </el-col>
@ -114,7 +114,7 @@
<el-card class="overview_block_item_card" style="background-color: #63c7ff"> <el-card class="overview_block_item_card" style="background-color: #63c7ff">
<el-row> <el-row>
<el-col :span="18"> <el-col :span="18">
<h1 class="card_title">响应管理</h1> <h1 class="card_title">运行日志</h1>
</el-col> </el-col>
<el-col :span="6" class="card_number"> <el-col :span="6" class="card_number">
<i class="el-icon-date"></i> <i class="el-icon-date"></i>
@ -125,7 +125,7 @@
:show-text="false" :show-text="false"
color="#e83e8c"></el-progress> color="#e83e8c"></el-progress>
<el-row style="margin-top: 10px"> <el-row style="margin-top: 10px">
<el-col class="card_text" :span="12">扫描任务完成</el-col> <el-col class="card_text" :span="12">采集成功率</el-col>
<el-col class="card_text" :span="12" style="text-align: right"> <el-col class="card_text" :span="12" style="text-align: right">
{{ Math.floor(numberStats.log.positive / numberStats.log.all * 100) + '%' }} {{ Math.floor(numberStats.log.positive / numberStats.log.all * 100) + '%' }}
</el-col> </el-col>
@ -136,7 +136,7 @@
color="#e83e8c"></el-progress> color="#e83e8c"></el-progress>
<el-row style="margin-top: 10px"> <el-row style="margin-top: 10px">
<el-col class="card_text" :span="12"> <el-col class="card_text" :span="12">
<span class="card_subtitle" @click="jumpTo('/secworld/log')">扫描任务日志</span> <span class="card_subtitle" @click="jumpTo('/oscm/log')">所有日志</span>
</el-col> </el-col>
<el-col class="card_text" :span="12" style="text-align: right"> <el-col class="card_text" :span="12" style="text-align: right">
{{ numberStats.log.all }} {{ numberStats.log.all }}

View File

@ -141,7 +141,7 @@ export default {
}); });
}, },
add() { add() {
this.$router.push({path: '/secworld/target/api/settings'}); this.$router.push({path: '/oscm/target/api/settings'});
}, },
edit(index) { edit(index) {
this.showCronList = true; this.showCronList = true;
@ -149,7 +149,7 @@ export default {
let editParam = {}; let editParam = {};
editParam.data = this.copyFormData.table[index] editParam.data = this.copyFormData.table[index]
editParam.isEdit = true; editParam.isEdit = true;
this.$router.push({path: '/secworld/target/api/settings', query: editParam}); this.$router.push({path: '/oscm/target/api/settings', query: editParam});
}, },
deleteOne(dataBody) { deleteOne(dataBody) {
MessageBox.confirm("是否删除?", "提示", { MessageBox.confirm("是否删除?", "提示", {

View File

@ -226,7 +226,7 @@ export default {
tempData.loginType = tempData.loginType.constructor === Array ? tempData.loginType[tempData.loginType.length - 1] : tempData.loginType; tempData.loginType = tempData.loginType.constructor === Array ? tempData.loginType[tempData.loginType.length - 1] : tempData.loginType;
apiRulesApi.save(tempData, (response) => { apiRulesApi.save(tempData, (response) => {
if (response.data.message === 'success') { if (response.data.message === 'success') {
this.$router.push({path: '/secworld/target'}); this.$router.push({path: '/oscm/target'});
Message({ Message({
message: '保存成功', message: '保存成功',
type: 'success' type: 'success'
@ -241,7 +241,7 @@ export default {
}) })
}, },
cancelSave() { cancelSave() {
this.$router.push({path: '/secworld/target'}) this.$router.push({path: '/oscm/target'})
// this.$router.go(-1); // this.$router.go(-1);
} }
}, },

View File

@ -241,10 +241,10 @@ export default {
let editParam = {}; let editParam = {};
editParam.data = this.formData; editParam.data = this.formData;
editParam.isEdit = true; editParam.isEdit = true;
this.$router.push({path: '/secworld/target/website/settings', query: editParam}); this.$router.push({path: '/oscm/target/website/settings', query: editParam});
}, },
addCrawlRule() { addCrawlRule() {
this.$router.push({path: '/secworld/target/website/settings'}) this.$router.push({path: '/oscm/target/website/settings'})
}, },
deleteCrawlRuleChild(index, tableData, handscope) { deleteCrawlRuleChild(index, tableData, handscope) {
MessageBox.confirm("是否删除?", "提示", { MessageBox.confirm("是否删除?", "提示", {

View File

@ -706,7 +706,7 @@ export default {
tempData.storageOption = tempData.storageOption.constructor === Array ? JSON.stringify(tempData.storageOption) : tempData.storageOption tempData.storageOption = tempData.storageOption.constructor === Array ? JSON.stringify(tempData.storageOption) : tempData.storageOption
targetWebsiteApi.update(tempData, (response) => { targetWebsiteApi.update(tempData, (response) => {
if (response.data.code === 200) { if (response.data.code === 200) {
this.$router.push({path: '/secworld/target/website'}); this.$router.push({path: '/oscm/target/website'});
Message({ Message({
message: '保存成功', message: '保存成功',
type: 'success' type: 'success'
@ -721,7 +721,7 @@ export default {
}) })
}, },
cancelSave() { cancelSave() {
this.$router.push({path: '/secworld/target/website'}) this.$router.push({path: '/oscm/target/website'})
// this.$router.go(-1); // this.$router.go(-1);
} }
}, },

View File

@ -1,15 +1,15 @@
module.exports = { module.exports = {
publicPath: '/secworld', publicPath: '/oscm',
devServer: { devServer: {
host: '0.0.0.0', host: '0.0.0.0',
port: 8080, port: 8080,
// proxy: 'http://127.0.0.1:8081' // proxy: 'http://127.0.0.1:8081'
proxy: 'http://47.115.228.133:28081' proxy: 'http://38.54.94.107:28081'
}, },
chainWebpack: config => { chainWebpack: config => {
config.plugin('html') config.plugin('html')
.tap(args => { .tap(args => {
args[0].title = "安全运营管理平台"; args[0].title = "采集管理平台";
return args; return args;
}) })
} }