const process_args = require('minimist')(process.argv);
var is_development = !process_args.docker;
register_rest_route('nv','get-plugin-list',{
methods: 'post',
callback(data,req) {
return {
list: nv_plugin_list(),
enabled: global.nv_enabled_plugin_folders,
selected_plugins: get_option('_nv_selected_plugin_folders',[]),
}
},
permission_callback: power=>power >= 10,
});
register_rest_route('nv','enable-plugins',{
methods: 'post',
callback(data,req) {
var {folderNames} = data;
if (!Array.isArray(folderNames)) {
return new NV_Error('参数类型错误');
}
var selected_plugins = get_option('_nv_selected_plugin_folders',[]);
folderNames.forEach(folder=>{
if (!selected_plugins.includes(folder) && typeof(folder) == 'string') {
selected_plugins.push(folder)
}
})
set_option('_nv_selected_plugin_folders',selected_plugins);
return {selected_plugins}
},
permission_callback: power=>power >= 10,
});
register_rest_route('nv','disable-plugins',{
methods: 'post',
callback(data,req) {
var {folderNames} = data;
if (!Array.isArray(folderNames)) {
return new NV_Error('参数类型错误');
}
var selected_plugins = get_option('_nv_selected_plugin_folders',[]);
folderNames.forEach(folder=>{
var index = selected_plugins.indexOf(folder);
if (index >= 0) {
selected_plugins.splice(index,1);
}
})
set_option('_nv_selected_plugin_folders',selected_plugins);
return {selected_plugins}
},
permission_callback: power=>power >= 10,
});
register_rest_route('nv','delete-plugins',{
methods: 'post',
callback(data,req) {
var {folderNames} = data;
if (!folderNames) {
return new NV_Error('参数错误');
}
if (is_development) {
return new NV_Error('开发模式禁止删除!请手动在插件文件夹操作');
}
var everySuccess = folderNames.map(name=> nv_remove_folder(`./nv-plugins/${name}`) )
.every(i=>i);
return everySuccess ? {} : new NV_Error(`${folderNames.length > 1 ? '部分' : ''}删除失败,请关闭服务后手动删除`);
},
permission_callback: power=>power >= 10,
});