Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
antSword
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
HuangJunbo
antSword
Commits
6431e477
Commit
6431e477
authored
Apr 30, 2016
by
antoor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Reconstruction of optimized code
重构优化代码
parent
c03f6d26
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
474 additions
and
364 deletions
+474
-364
cache.js
modules/cache.js
+127
-109
config.js
modules/config.js
+47
-0
database.js
modules/database.js
+288
-244
menubar.js
modules/menubar.js
+12
-11
No files found.
modules/cache.js
View file @
6431e477
//
// 缓存管理模块
//
/**
* 缓存管理模块
* 更新:2016/04/28
* 作者:蚁逅 <https://github.com/antoor>
*/
'use strict'
;
const
fs
=
require
(
'fs'
);
const
path
=
require
(
'path'
);
const
log4js
=
require
(
'log4js'
);
const
Datastore
=
require
(
'nedb'
);
const
logger
=
log4js
.
getLogger
(
'Cache'
);
const
fs
=
require
(
'fs'
),
path
=
require
(
'path'
),
CONF
=
require
(
'./config'
),
logger
=
require
(
'log4js'
).
getLogger
(
'Cache'
),
Datastore
=
require
(
'nedb'
);
class
Cache
{
/**
* 初始化监听事件
* @param {Object} electron electron对象
* @return {[type]} [description]
*/
constructor
(
electron
)
{
// 创建数据库
// 获取用户保存目录(mac&&*unix=/home/path/,win=c:/path/appdata
let
dbPath
=
''
;
if
(
process
.
env
.
HOME
)
{
dbPath
=
path
.
join
(
process
.
env
.
HOME
,
'.antSword'
);
}
else
if
(
process
.
env
.
LOCALAPPPATH
)
{
dbPath
=
path
.
join
(
process
.
env
.
LOCALAPPPATH
,
'.antSword'
);
}
else
{
dbPath
=
'database'
;
};
// 创建数据目录
if
(
!
fs
.
existsSync
(
dbPath
))
{
fs
.
mkdirSync
(
dbPath
);
};
// 创建缓存目录
const
cachePath
=
path
.
join
(
dbPath
,
'cache'
);
if
(
!
fs
.
existsSync
(
cachePath
))
{
fs
.
mkdirSync
(
cachePath
);
};
this
.
dbPath
=
dbPath
;
this
.
cachePath
=
cachePath
;
// 监听数据请求
this
.
listenHandle
(
electron
.
ipcMain
);
electron
.
ipcMain
.
on
(
'cache-add'
,
this
.
addCache
.
bind
(
this
))
.
on
(
'cache-set'
,
this
.
setCache
.
bind
(
this
))
.
on
(
'cache-get'
,
this
.
getCache
.
bind
(
this
))
.
on
(
'cache-del'
,
this
.
delCache
.
bind
(
this
))
.
on
(
'cache-clear'
,
this
.
clearCache
.
bind
(
this
))
.
on
(
'cache-clearAll'
,
this
.
clearAllCache
.
bind
(
this
));
}
/**
* 创建nedb数据库文件
* @param {String} id 数据存储文件名
* @return {[type]} [description]
*/
createDB
(
id
=
String
(
+
new
Date
))
{
return
new
Datastore
({
filename
:
path
.
join
(
CONF
.
cachePath
,
id
),
autoload
:
true
});
}
listenHandle
(
ipcMain
)
{
logger
.
info
(
'listenHandle'
);
ipcMain
// 添加缓存
// arg={id="shellID",tag="存储标识",cache="存储内容"}
.
on
(
'cache-add'
,
(
event
,
arg
)
=>
{
logger
.
debug
(
'cache-add'
,
arg
);
this
.
createDB
(
arg
[
'id'
]).
insert
({
tag
:
arg
[
'tag'
],
cache
:
arg
[
'cache'
]
/**
* 添加缓存数据
* @param {Object} event ipcMain对象
* @param {Object} opts 缓存配置(id,tag,cache
*/
addCache
(
event
,
opts
)
{
logger
.
debug
(
'addCache'
,
opts
);
this
.
createDB
(
opts
[
'id'
]).
insert
({
tag
:
opts
[
'tag'
],
cache
:
opts
[
'cache'
]
},
(
err
,
ret
)
=>
{
event
.
returnValue
=
err
||
ret
;
});
})
// 更新缓存
// arg = {id, tag, cache}
.
on
(
'cache-set'
,
(
event
,
arg
)
=>
{
logger
.
debug
(
'cache-set'
,
arg
);
this
.
createDB
(
arg
[
'id'
]).
update
({
tag
:
arg
[
'tag'
]
}
/**
* 设置缓存数据
* @param {Object} event ipcMain对象
* @param {Object} opts 缓存配置(id,tag,cache
*/
setCache
(
event
,
opts
)
{
logger
.
debug
(
'setCache'
,
opts
);
this
.
createDB
(
opts
[
'id'
]).
update
({
tag
:
opts
[
'tag'
]
},
{
$set
:
{
cache
:
arg
[
'cache'
]
cache
:
opts
[
'cache'
]
}
},
(
err
,
ret
)
=>
{
event
.
returnValue
=
err
||
ret
;
});
})
// 查询缓存
// arg={id="shellID", tag="存储标识"}
.
on
(
'cache-get'
,
(
event
,
arg
)
=>
{
logger
.
debug
(
'cache-get'
,
arg
);
this
.
createDB
(
arg
[
'id'
]).
findOne
({
tag
:
arg
[
'tag'
]
}
/**
* 获取缓存数据
* @param {Object} event ipcMain对象
* @param {Object} opts 缓存配置(id,tag)
* @return {[type]} [description]
*/
getCache
(
event
,
opts
)
{
logger
.
debug
(
'getCache'
,
opts
);
this
.
createDB
(
opts
[
'id'
]).
findOne
({
tag
:
opts
[
'tag'
]
},
(
err
,
ret
)
=>
{
event
.
returnValue
=
err
||
ret
;
})
})
// 删除缓存
// arg = {id: 'SHELL-ID', tag: 'SAVE-TAG'}
.
on
(
'cache-del'
,
(
event
,
arg
)
=>
{
logger
.
warn
(
'cache-del'
,
arg
);
this
.
createDB
(
arg
[
'id'
]).
remove
({
tag
:
arg
[
'tag'
]
}
/**
* 删除缓存
* @param {Object} event ipcMain对象
* @param {Object} opts 缓存配置(id,tag)
* @return {[type]} [description]
*/
delCache
(
event
,
opts
)
{
logger
.
warn
(
'delCache'
,
opts
);
this
.
createDB
(
opts
[
'id'
]).
remove
({
tag
:
opts
[
'tag'
]
},
(
err
,
ret
)
=>
{
event
.
returnValue
=
err
||
ret
;
})
})
// 清空缓存
// arg = {id: 'SHELL-ID'}
.
on
(
'cache-clear'
,
(
event
,
arg
)
=>
{
logger
.
fatal
(
'cache-clear'
,
arg
);
});
}
/**
* 清空缓存数据
* @param {Object} event ipcMain对象
* @param {Object} opts 缓存配置(id)
* @return {[type]} [description]
*/
clearCache
(
event
,
opts
)
{
logger
.
fatal
(
'clearCache'
,
opts
);
try
{
fs
.
unlinkSync
(
path
.
join
(
this
.
cachePath
,
arg
[
'id'
]));
fs
.
unlinkSync
(
path
.
join
(
CONF
.
cachePath
,
opts
[
'id'
]));
event
.
returnValue
=
true
;
}
catch
(
e
)
{
event
.
returnValue
=
e
;
}
})
// 清空所有缓存
.
on
(
'cache-clearAll'
,
(
event
,
arg
)
=>
{
logger
.
fatal
(
'cache-clearAll'
,
arg
);
}
/**
* 清空所有缓存数据
* @param {Object} event ipcMain对象
* @param {Object} opts 缓存配置(null)
* @return {[type]} [description]
*/
clearAllCache
(
event
,
opts
)
{
logger
.
fatal
(
'clearAllCache'
,
opts
);
try
{
fs
.
readdirSync
(
this
.
cachePath
).
map
((
_
)
=>
{
fs
.
unlinkSync
(
path
.
join
(
this
.
cachePath
,
_
));
fs
.
readdirSync
(
CONF
.
cachePath
).
map
((
_
)
=>
{
fs
.
unlinkSync
(
path
.
join
(
CONF
.
cachePath
,
_
));
});
event
.
returnValue
=
true
;
}
catch
(
e
)
{
event
.
returnValue
=
e
;
}
})
}
createDB
(
id
)
{
// 创建数据库
return
new
Datastore
({
filename
:
path
.
join
(
this
.
cachePath
,
id
),
autoload
:
true
});
}
}
module
.
exports
=
Cache
;
modules/config.js
0 → 100644
View file @
6431e477
/**
* 中国蚁剑::后端配置模块
* ? 用于进行一些通用的变量如初始化目录等设置
* 开写:2016/04/26
* 更新:2016/04/28
* 作者:蚁逅 <https://github.com/antoor>
*/
'use strict'
;
const
fs
=
require
(
'fs'
),
path
=
require
(
'path'
);
class
Conf
{
constructor
()
{
// 获取数据存储目录
this
.
basePath
=
path
.
join
(
process
.
env
.
HOME
||
process
.
env
.
LOCALAPPPATH
||
process
.
cwd
()
||
'.'
,
'.antSword'
);
// 创建.antSword目录
!
fs
.
existsSync
(
this
.
basePath
)
?
fs
.
mkdirSync
(
this
.
basePath
)
:
null
;
}
/**
* 获取数据存储路径
* @return {String} file-path
*/
get
dataPath
()
{
return
path
.
join
(
this
.
basePath
,
'shell.db'
);
}
/**
* 获取缓存目录
* @return {String} dir-path
*/
get
cachePath
()
{
let
_
=
path
.
join
(
this
.
basePath
,
'/cache/'
);
// 创建缓存目录
!
fs
.
existsSync
(
_
)
?
fs
.
mkdirSync
(
_
)
:
null
;
return
_
;
}
}
module
.
exports
=
new
Conf
();
modules/database.js
View file @
6431e477
//
// shell数据管理模块
//
/**
* Shell数据库管理模块
* 更新:2016/04/28
* 作者:蚁逅 <https://github.com/antoor>
*/
'use strict'
;
const
fs
=
require
(
'fs'
);
const
dns
=
require
(
'dns'
);
const
path
=
require
(
'path'
);
const
log4js
=
require
(
'log4js'
);
const
Datastore
=
require
(
'nedb'
);
const
qqwry
=
require
(
"lib-qqwry"
).
info
();
const
logger
=
log4js
.
getLogger
(
'Database'
);
const
fs
=
require
(
'fs'
),
dns
=
require
(
'dns'
),
path
=
require
(
'path'
),
CONF
=
require
(
'./config'
),
logger
=
require
(
'log4js'
).
getLogger
(
'Database'
),
Datastore
=
require
(
'nedb'
),
qqwry
=
require
(
"lib-qqwry"
).
info
();
class
Database
{
/**
* 初始化数据库
* @param {electron} electron electron对象
* @return {[type]} [description]
*/
constructor
(
electron
)
{
this
.
cursor
=
this
.
createDB
();
// 监听数据请求
const
ipcMain
=
electron
.
ipcMain
;
this
.
listenHandle
(
ipcMain
);
}
createDB
()
{
// 创建数据库
// 获取用户保存目录(mac&&*unix=/home/path/,win=c:/path/appdata
let
dbPath
=
''
;
if
(
process
.
env
.
HOME
)
{
dbPath
=
path
.
join
(
process
.
env
.
HOME
,
'.antSword'
);
}
else
if
(
process
.
env
.
LOCALAPPPATH
)
{
dbPath
=
path
.
join
(
process
.
env
.
LOCALAPPPATH
,
'.antSword'
);
}
else
{
dbPath
=
'database'
;
};
// 创建目录
if
(
!
fs
.
existsSync
(
dbPath
))
{
fs
.
mkdirSync
(
dbPath
);
};
// 创建数据库
return
new
Datastore
({
filename
:
path
.
join
(
dbPath
,
'shell.db'
),
this
.
cursor
=
new
Datastore
({
filename
:
CONF
.
dataPath
,
autoload
:
true
});
// 监听事件
electron
.
ipcMain
.
on
(
'shell-add'
,
this
.
addShell
.
bind
(
this
))
.
on
(
'shell-del'
,
this
.
delShell
.
bind
(
this
))
.
on
(
'shell-edit'
,
this
.
editShell
.
bind
(
this
))
.
on
(
'shell-move'
,
this
.
moveShell
.
bind
(
this
))
.
on
(
'shell-find'
,
this
.
findShell
.
bind
(
this
))
.
on
(
'shell-clear'
,
this
.
clearShell
.
bind
(
this
))
.
on
(
'shell-findOne'
,
this
.
findOneShell
.
bind
(
this
))
.
on
(
'shell-addDataConf'
,
this
.
addDataConf
.
bind
(
this
))
.
on
(
'shell-delDataConf'
,
this
.
delDataConf
.
bind
(
this
))
.
on
(
'shell-getDataConf'
,
this
.
getDataConf
.
bind
(
this
))
.
on
(
'shell-renameCategory'
,
this
.
renameShellCategory
.
bind
(
this
));
}
listenHandle
(
ipcMain
)
{
ipcMain
// 查询数据数据,arg=find条件,比如arg={category:'test'}
.
on
(
'shell-find'
,
(
event
,
arg
)
=>
{
logger
.
debug
(
'shell-find'
,
arg
);
/**
* 查询shell数据
* @param {Object} event ipcMain对象
* @param {Object} opts 查询配置
* @return {[type]} [description]
*/
findShell
(
event
,
opts
=
{})
{
logger
.
debug
(
'findShell'
,
opts
);
this
.
cursor
.
find
(
arg
||
{}
)
.
find
(
opts
)
.
sort
({
utime
:
-
1
})
.
exec
((
err
,
ret
)
=>
{
event
.
returnValue
=
ret
||
[];
});
})
// 查询单数据
.
on
(
'shell-findOne'
,
(
event
,
id
)
=>
{
logger
.
debug
(
'shell-findOne'
,
id
);
}
/**
* 查询单一shell数据
* @param {Object} event ipcMain对象
* @param {String} opts shell id
* @return {[type]} [description]
*/
findOneShell
(
event
,
opts
)
{
logger
.
debug
(
'findOneShell'
,
opts
);
this
.
cursor
.
findOne
({
_id
:
id
_id
:
opts
},
(
err
,
ret
)
=>
{
event
.
returnValue
=
err
||
ret
;
});
})
// 插入数据
// arg={category,url,pwd,ip,addr,type,encode,encoder,ctime,utime}
.
on
(
'shell-add'
,
(
event
,
arg
)
=>
{
logger
.
info
(
'shell-add
\
n'
,
arg
);
}
/**
* 添加shell数据
* @param {Object} event ipcMain对象
* @param {Object} opts 数据(url,category,pwd,type,encode,encoder
*/
addShell
(
event
,
opts
)
{
logger
.
info
(
'addShell'
,
opts
);
// 获取目标IP以及地理位置
// 1. 获取域名
const
parse
=
arg
[
'url'
].
match
(
/
(\w
+
)
:
\/\/([\w\.\-]
+
)[
:
]?([\d]
*
)([\s\S]
*
)
/i
);
let
parse
=
opts
[
'url'
].
match
(
/
(\w
+
)
:
\/\/([\w\.\-]
+
)[
:
]?([\d]
*
)([\s\S]
*
)
/i
);
if
(
!
parse
||
parse
.
length
<
3
)
{
return
event
.
returnValue
=
'Unable to resolve domain name from URL'
};
// 2. 获取域名IP
dns
.
lookup
(
parse
[
2
],
(
err
,
ip
)
=>
{
...
...
@@ -82,30 +92,33 @@ class Database {
const
addr
=
qqwry
.
searchIP
(
ip
);
// 插入数据库
this
.
cursor
.
insert
({
category
:
arg
[
'category'
]
||
'default'
,
url
:
arg
[
'url'
],
pwd
:
arg
[
'pwd'
],
type
:
arg
[
'type'
],
category
:
opts
[
'category'
]
||
'default'
,
url
:
opts
[
'url'
],
pwd
:
opts
[
'pwd'
],
type
:
opts
[
'type'
],
ip
:
ip
,
addr
:
`
${
addr
.
Country
}
${
addr
.
Area
}
`
,
encode
:
arg
[
'encode'
],
encoder
:
arg
[
'encoder'
],
encode
:
opts
[
'encode'
],
encoder
:
opts
[
'encoder'
],
ctime
:
+
new
Date
,
utime
:
+
new
Date
},
(
err
,
ret
)
=>
{
event
.
returnValue
=
err
||
ret
;
});
});
})
/*
// 编辑数据
// {url,pwd,encode,type,encoder,utime}
}
/**
* 编辑shell数据
* @param {Object} event ipcMain对象
* @param {Object} opts 数据(url,_id,pwd,type,encode,encoder
* @return {[type]} [description]
*/
.
on
(
'shell-edit'
,
(
event
,
arg
)
=>
{
logger
.
warn
(
'shell-edit
\
n'
,
arg
);
editShell
(
event
,
opts
)
{
logger
.
warn
(
'editShell'
,
opts
);
// 获取目标IP以及地理位置
// 1. 获取域名
const
parse
=
arg
[
'url'
].
match
(
/
(\w
+
)
:
\/\/([\w\.\-]
+
)[
:
]?([\d]
*
)([\s\S]
*
)
/i
);
let
parse
=
opts
[
'url'
].
match
(
/
(\w
+
)
:
\/\/([\w\.\-]
+
)[
:
]?([\d]
*
)([\s\S]
*
)
/i
);
if
(
!
parse
||
parse
.
length
<
3
)
{
return
event
.
returnValue
=
'Unable to resolve domain name from URL'
};
// 2. 获取域名IP
dns
.
lookup
(
parse
[
2
],
(
err
,
ip
)
=>
{
...
...
@@ -114,73 +127,96 @@ class Database {
const
addr
=
qqwry
.
searchIP
(
ip
);
// 更新数据库
this
.
cursor
.
update
({
_id
:
arg
[
'_id'
]
_id
:
opts
[
'_id'
]
},
{
$set
:
{
ip
:
ip
,
addr
:
`
${
addr
.
Country
}
${
addr
.
Area
}
`
,
url
:
arg
[
'url'
],
pwd
:
arg
[
'pwd'
],
type
:
arg
[
'type'
],
encode
:
arg
[
'encode'
],
encoder
:
arg
[
'encoder'
],
url
:
opts
[
'url'
],
pwd
:
opts
[
'pwd'
],
type
:
opts
[
'type'
],
encode
:
opts
[
'encode'
],
encoder
:
opts
[
'encoder'
],
utime
:
+
new
Date
}
},
(
err
,
num
)
=>
{
event
.
returnValue
=
err
||
num
;
})
});
})
// 删除数据
.
on
(
'shell-del'
,
(
event
,
ids
)
=>
{
logger
.
warn
(
'shell-del'
,
ids
);
}
/**
* 删除shell数据
* @param {Object} event ipcMain对象
* @param {Array} opts 要删除的shell-id列表
* @return {[type]} [description]
*/
delShell
(
event
,
opts
)
{
logger
.
warn
(
'delShell'
,
opts
);
this
.
cursor
.
remove
({
_id
:
{
$in
:
id
s
$in
:
opt
s
}
},
{
multi
:
true
},
(
err
,
num
)
=>
{
event
.
returnValue
=
err
||
num
;
})
})
// 清空分类数据
.
on
(
'shell-clear'
,
(
event
,
category
)
=>
{
logger
.
fatal
(
'shell-clear'
,
category
);
}
/**
* 删除分类shell数据
* @param {Object} event ipcMain对象
* @param {String} opts shell分类名
* @return {[type]} [description]
*/
clearShell
(
event
,
opts
)
{
logger
.
fatal
(
'clearShell'
,
opts
);
this
.
cursor
.
remove
({
category
:
category
category
:
opts
},
{
multi
:
true
},
(
err
,
num
)
=>
{
event
.
returnValue
=
err
||
num
;
})
})
// 重命名分类
// {oldName, newName}
.
on
(
'shell-renameCategory'
,
(
event
,
arg
)
=>
{
logger
.
warn
(
'shell-renameCategory'
,
arg
);
}
/**
* 重命名shell分类
* @param {Object} event ipcMain对象
* @param {Object} opts 配置(oldName,newName
* @return {[type]} [description]
*/
renameShellCategory
(
event
,
opts
)
{
logger
.
warn
(
'renameShellCategory'
,
opts
);
this
.
cursor
.
update
({
category
:
arg
[
'oldName'
]
category
:
opts
[
'oldName'
]
},
{
$set
:
{
category
:
arg
[
'newName'
]
category
:
opts
[
'newName'
]
}
},
{
multi
:
true
},
(
err
,
num
)
=>
{
event
.
returnValue
=
err
||
num
;
})
})
// 移动数据
.
on
(
'shell-move'
,
(
event
,
arg
)
=>
{
logger
.
info
(
'shell-move'
,
arg
);
}
/**
* 移动shell数据分类
* @param {Object} event ipcMain对象
* @param {Object} opts 配置(ids,category
* @return {[type]} [description]
*/
moveShell
(
event
,
opts
)
{
logger
.
info
(
'moveShell'
,
opts
);
this
.
cursor
.
update
({
_id
:
{
$in
:
arg
[
'ids'
]
||
[]
$in
:
opts
[
'ids'
]
||
[]
}
},
{
$set
:
{
category
:
arg
[
'category'
]
||
'default'
,
category
:
opts
[
'category'
]
||
'default'
,
utime
:
+
new
Date
}
},
{
...
...
@@ -188,24 +224,27 @@ class Database {
},
(
err
,
num
)
=>
{
event
.
returnValue
=
err
||
num
;
})
})
//
// 添加数据库配置
//
.
on
(
'shell-addDataConf'
,
(
event
,
arg
)
=>
{
logger
.
info
(
'shell-addDataConf'
,
arg
);
}
/**
* 添加数据库配置
* @param {Object} event ipcMain对象
* @param {Object} opts 配置(_id,data
*/
addDataConf
(
event
,
opts
)
{
logger
.
info
(
'addDataConf'
,
opts
);
// 1. 获取原配置列表
this
.
cursor
.
findOne
({
_id
:
arg
[
'_id'
]
_id
:
opts
[
'_id'
]
},
(
err
,
ret
)
=>
{
let
confs
=
ret
[
'database'
]
||
{};
// 随机Id(顺序增长
const
random_id
=
parseInt
(
+
new
Date
+
Math
.
random
()
*
1000
).
toString
(
16
);
// 添加到配置
confs
[
random_id
]
=
arg
[
'data'
];
confs
[
random_id
]
=
opts
[
'data'
];
// 更新数据库
this
.
cursor
.
update
({
_id
:
arg
[
'_id'
]
_id
:
opts
[
'_id'
]
},
{
$set
:
{
database
:
confs
,
...
...
@@ -215,23 +254,26 @@ class Database {
event
.
returnValue
=
random_id
;
});
});
})
//
// 删除数据库配置
// arg={_id: 'shell-ID',id: 'data-id'}
//
.
on
(
'shell-delDataConf'
,
(
event
,
arg
)
=>
{
logger
.
info
(
'shell-delDataConf'
,
arg
);
}
/**
* 删除数据库配置
* @param {Object} event ipcMain对象
* @param {Object} opts 配置(_id,id
* @return {[type]} [description]
*/
delDataConf
(
event
,
opts
)
{
logger
.
info
(
'delDataConf'
,
opts
);
// 1. 获取原配置
this
.
cursor
.
findOne
({
_id
:
arg
[
'_id'
]
_id
:
opts
[
'_id'
]
},
(
err
,
ret
)
=>
{
let
confs
=
ret
[
'database'
]
||
{};
// 2. 删除配置
delete
confs
[
arg
[
'id'
]];
delete
confs
[
opts
[
'id'
]];
// 3. 更新数据库
this
.
cursor
.
update
({
_id
:
arg
[
'_id'
]
_id
:
opts
[
'_id'
]
},
{
$set
:
{
database
:
confs
,
...
...
@@ -241,21 +283,23 @@ class Database {
event
.
returnValue
=
_err
||
_ret
;
});
})
})
//
// 获取数据库单个配置信息
//
.
on
(
'shell-getDataConf'
,
(
event
,
arg
)
=>
{
logger
.
info
(
'shell-getDataConf'
,
arg
);
}
/**
* 获取单个数据库配置
* @param {Object} event ipcMain对象
* @param {Object} opts 配置(_id,id
* @return {[type]} [description]
*/
getDataConf
(
event
,
opts
)
{
logger
.
info
(
'getDatConf'
,
opts
);
this
.
cursor
.
findOne
({
_id
:
arg
[
'_id'
]
_id
:
opts
[
'_id'
]
},
(
err
,
ret
)
=>
{
const
confs
=
ret
[
'database'
]
||
{};
event
.
returnValue
=
err
||
confs
[
arg
[
'id'
]];
event
.
returnValue
=
err
||
confs
[
opts
[
'id'
]];
});
})
}
}
module
.
exports
=
Database
;
modules/menubar.js
View file @
6431e477
...
...
@@ -4,20 +4,18 @@
'use strict'
;
// 读取package.json信息
const
info
=
require
(
'../package'
);
class
Menubar
{
constructor
(
electron
,
app
,
mainWindow
)
{
const
Menu
=
electron
.
Menu
;
const
ipcMain
=
electron
.
ipcMain
;
// 清空菜单栏
Menu
.
setApplicationMenu
(
Menu
.
buildFromTemplate
([]));
// 监听重载菜单事件
ipcMain
.
on
(
'menubar'
,
this
.
reload
.
bind
(
this
));
ipcMain
.
on
(
'quit'
,
app
.
quit
.
bind
(
app
));
electron
.
ipcMain
.
on
(
'quit'
,
app
.
quit
.
bind
(
app
))
.
on
(
'menubar'
,
this
.
reload
.
bind
(
this
));
this
.
electron
=
electron
;
this
.
app
=
app
;
...
...
@@ -25,7 +23,12 @@ class Menubar {
this
.
mainWindow
=
mainWindow
;
}
// 刷新菜单
/**
* 重新载入菜单
* @param {Object} event ipcMain对象
* @param {Object} LANG 语言模板
* @return {[type]} [description]
*/
reload
(
event
,
LANG
)
{
// 菜单模板
const
template
=
[
...
...
@@ -36,9 +39,7 @@ class Menubar {
{
label
:
LANG
[
'shell'
][
'add'
],
accelerator
:
'Shift+A'
,
click
:
()
=>
{
event
.
sender
.
send
(
'menubar'
,
'shell-add'
);
}
click
:
event
.
sender
.
send
.
bind
(
event
.
sender
,
'menubar'
,
'shell-add'
)
},
{
label
:
LANG
[
'shell'
][
'search'
],
accelerator
:
'Shift+S'
,
...
...
@@ -99,7 +100,7 @@ class Menubar {
}
];
// 调试菜单
if
(
info
[
'
debug'
])
{
if
(
process
.
env
[
'npm_package_
debug'
])
{
template
.
push
({
label
:
LANG
[
'debug'
][
'title'
],
submenu
:
[
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment