📄 extendsaction.java
字号:
for(Map<String,String> var:pluginvars){
var.remove("pluginvarid");
var.remove("pluginid");
Map<Integer,Map<String,String>> vars=(Map<Integer,Map<String,String>>)pluginMap.get("vars");
if(vars==null){
vars=new HashMap<Integer,Map<String,String>>();
pluginMap.put("vars", vars);
}
vars.put(vars.size(), var);
}
HttpSession session = request.getSession();
String dateformat= (String)session.getAttribute("dateformat");
String timeformat=(String)session.getAttribute("timeformat");
int timeoffset=(int)((Float)session.getAttribute("timeoffset")*3600);
String bbname=((Map<String,String>)servlet.getServletContext().getAttribute("fsmap")).get("bbname");
String boardurl=(String)session.getAttribute("boardurl");
int timestamp = (Integer)(request.getAttribute("timestamp"));
String time = Common.gmdate(dateformat+" "+timeformat, timestamp+timeoffset);
String plugin_export="# JspRun! Plugin Dump\n# Version: JspRun! "+JspRunConfig.version+"\n# Time: "+time+"\n# From: "+bbname+" ("+boardurl+")\n#\n# JspRun! Community: http://www.jsprun.net\n# Please visit our website for latest news about JspRun!\n# --------------------------------------------------------\n\n\n"+Base64Encoder.encode(dataParse.combinationChar(pluginMap), JspRunConfig.charset);
response.setHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT");
response.setHeader("Last-Modified", Common.gmdate("EEE, d MMM yyyy HH:mm:ss", timestamp)+" GMT");
response.setHeader("Cache-Control", "no-cache, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setHeader("Content-Encoding", "none");
response.setHeader("Content-Disposition","attachment; filename=JspRun_plugin_"+plugin.get("identifier")+".txt");
response.setHeader("Content-Type",request.getHeader("User-Agent").indexOf("MSIE")>=0?"application/octetstream":"application/octet-stream");
try {
byte[] content=plugin_export.getBytes(JspRunConfig.charset);
response.setHeader("Content-Length", String.valueOf(content.length));
OutputStream os=response.getOutputStream();
os.write(content);
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
String configsubmit=request.getParameter("configsubmit");
String importsubmit=request.getParameter("importsubmit");
if(configsubmit==null&&importsubmit==null){
List<Map<String,String>> plugins=dataBaseService.executeQuery("SELECT * FROM jrun_plugins order by pluginid");
request.setAttribute("plugins", plugins);
return mapping.findForward("topluginsconfig");
}
else if(configsubmit!=null){
String[] delete=request.getParameterValues("delete");
if(delete!=null){
String ids=Common.implodeids(delete);
dataBaseService.runQuery("DELETE FROM jrun_plugins WHERE pluginid IN ("+ids+")");
dataBaseService.runQuery("DELETE FROM jrun_pluginvars WHERE pluginid IN ("+ids+")");
}
List<Map<String,String>> plugins=dataBaseService.executeQuery("SELECT pluginid FROM jrun_plugins");
if(plugins!=null&&plugins.size()>0){
for (Map<String, String> plugin : plugins) {
String pluginid=plugin.get("pluginid");
dataBaseService.runQuery("UPDATE jrun_plugins SET available='"+Common.toDigit(request.getParameter("availablenew["+pluginid+"]"))+"' WHERE pluginid='"+pluginid+"'",true);
}
}
String newname=request.getParameter("newname").trim();
String newidentifier=request.getParameter("newidentifier").trim();
if(newname.length()>0||newidentifier.length()>0){
if(newname.length()==0){
request.setAttribute("errorInfo", "您没有输入插件名称,请返回修改。");
return mapping.findForward("error");
}
plugins=dataBaseService.executeQuery("SELECT pluginid FROM jrun_plugins WHERE identifier='"+newidentifier+"' LIMIT 1");
if(plugins!=null&&plugins.size()>0||!this.ispluginkey(newidentifier)){
request.setAttribute("errorInfo", "您输入的唯一标识符不合法或与现有插件重复,请返回修改。");
return mapping.findForward("error");
}
dataBaseService.runQuery("INSERT INTO jrun_plugins (name, identifier, available,description,datatables,directory,copyright,modules) VALUES ('"+Common.dhtmlspecialchars(newname)+"', '"+newidentifier+"', '0','','','','','')", true);
}
String realPath=servlet.getServletContext().getRealPath("/");
Cache cache=new Cache(realPath);
try {
cache.updatecache("plugins");
cache.updatecache("settings");
} catch (Exception e) {
e.printStackTrace();
}
request.setAttribute("successInfo","插件配置成功更新。");
request.setAttribute("requestPath", "admincp.jsp?action=pluginsconfig");
return mapping.findForward("success");
}
else if(importsubmit!=null){
String ignoreversion=request.getParameter("ignoreversion");
String plugindata=request.getParameter("plugindata");
plugindata=plugindata.replaceAll("(#.*\\s+)*", "");
Map pluginMap=dataParse.characterParse(Base64Decoder.decode(plugindata, JspRunConfig.charset),false);
if(pluginMap==null||pluginMap.size()==0||pluginMap.get("plugin")==null){
request.setAttribute("errorInfo", "插件数据文件已损坏,无法导入,请返回。");
return mapping.findForward("error");
}
else if(ignoreversion==null&&!pluginMap.get("version").toString().equals(JspRunConfig.version)){
request.setAttribute("errorInfo", "导出插件所用 JspRun! ("+pluginMap.get("version")+")与当前版本("+JspRunConfig.version+")不一致,请返回。");
return mapping.findForward("error");
}
Map<String,String> plugin=(Map<String,String>)pluginMap.get("plugin");
String identifier=plugin.get("identifier");
List<Map<String,String>> plugins=dataBaseService.executeQuery("SELECT pluginid FROM jrun_plugins WHERE identifier='"+identifier+"' LIMIT 1");
if(plugins!=null&&plugins.size()>0){
request.setAttribute("errorInfo", "您要导入插件的唯一标识符与现有插件重复,可能您已安装过此插件。如确认仍需导入此插件,请返回先删除唯一标识符为 “"+identifier+"” 的现有插件后再试。");
return mapping.findForward("error");
}
StringBuffer sql1=new StringBuffer();
StringBuffer sql2=new StringBuffer();
Set<String> keys=plugin.keySet();
for(String key:keys){
sql1.append(","+key);
sql2.append(",'"+plugin.get(key)+"'");
}
int pluginid=dataBaseService.insert("INSERT INTO jrun_plugins ("+sql1.substring(1)+") VALUES ("+sql2.substring(1)+")", true);
String[] temp={"hooks","vars"};
for (String str : temp) {
Map<Integer,Map<String,String>> pluginconfig=(Map<Integer,Map<String,String>>)pluginMap.get(str);
if(pluginconfig!=null){
Set<Integer> configKeys=pluginconfig.keySet();
for(Integer configkey:configKeys){
sql1=new StringBuffer("pluginid");
sql2=new StringBuffer("'"+pluginid+"'");
Map<String,String> config=pluginconfig.get(configkey);
keys=config.keySet();
for (String key : keys) {
sql1.append(","+key);
sql2.append(",'"+config.get(key)+"'");
}
dataBaseService.runQuery("INSERT INTO jrun_plugin"+str+" ("+sql1+") VALUES ("+sql2+")");
}
}
}
String realPath=servlet.getServletContext().getRealPath("/");
Cache cache=new Cache(realPath);
try {
cache.updatecache("plugins");
cache.updatecache("settings");
} catch (Exception e) {
e.printStackTrace();
}
request.setAttribute("successInfo","插件数据成功导入,为了正常使用此插件,您可能还需要上传或修改相应的文件或模板,详情请查看本插件的安装说明。");
request.setAttribute("requestPath", "admincp.jsp?action=pluginsconfig");
return mapping.findForward("success");
}else{
request.setAttribute("errorInfo", "未定义的操作!");
return mapping.findForward("error");
}
}
@SuppressWarnings("unchecked")
public ActionForward showSearchEngine(ActionMapping mapping,
ActionForm actionForm, HttpServletRequest request,
HttpServletResponse response){
String action = request.getParameter("do");
if(action==null){
request.setAttribute("resultInfo", "请确保正常操作!");
return mapping.findForward("result");
}
SearchEngineVO searchEngineVO = new SearchEngineVO();
String variable = null;
if(action.equals("google_config")){
searchEngineVO.setEngineName("Google");
variable = "google";
}else if(action.equals("baidu_config")){
searchEngineVO.setEngineName("Baidu");
variable = "baidu";
}else{
request.setAttribute("resultInfo", "请确保正常操作!");
return mapping.findForward("result");
}
Map<String,String> tempMap = ((DataParse)BeanFactory.getBean("dataParse")).characterParse(ForumInit.settings.get(variable),false);
searchEngineVO.setLanguage(tempMap.get("lang")==null?"":(String)tempMap.get("lang"));
searchEngineVO.setShow(tempMap.get("searchbox")==null?0:Integer.valueOf(tempMap.get("searchbox")));
searchEngineVO.setStatus(tempMap.get("status")==null?0:Integer.valueOf(tempMap.get("status")));
request.setAttribute("valueObject", searchEngineVO);
return mapping.findForward("go_searchEngine");
}
public ActionForward searchEngine(ActionMapping mapping,
ActionForm actionForm, HttpServletRequest request,
HttpServletResponse response){
String engineName = request.getParameter("engineName");
String status = request.getParameter("googlenew[status]");
String lang = request.getParameter("googlenew[lang]");
String[] searchboxArray = request.getParameterValues("googlenew[searchbox]");
if(engineName==null||status==null||(engineName.equals("Google")&&lang==null)){
request.setAttribute("resultInfo", "请确保正常操作!");
return mapping.findForward("result");
}
Integer searchbox = 0;
if(searchboxArray!=null){
for(int i = 0;i<searchboxArray.length;i++){
try{
searchbox += Integer.valueOf(searchboxArray[i]);
}catch(NumberFormatException exception){
request.setAttribute("resultInfo", "请确保正常操作!");
return mapping.findForward("result");
}
}
}
Map<String,String> maptemp = new HashMap<String,String>();
maptemp.put("status", status);
maptemp.put("lang", lang);
maptemp.put("searchbox", String.valueOf(searchbox));
String value = ((DataParse)BeanFactory.getBean("dataParse")).combinationChar(maptemp);
String variable = null;
if(engineName.equals("Google")){
variable = "google";
}else if(engineName.equals("Baidu")){
variable= "baidu";
}else{
request.setAttribute("resultInfo", "请确保正常操作!");
return mapping.findForward("result");
}
Map<String,String> oldSettingMap = ForumInit.settings;
Map<String,String> newSettingMap = new HashMap<String, String>();
putValue(variable, value, oldSettingMap, newSettingMap);
updateSettings(newSettingMap, oldSettingMap);
Cache cache = new Cache(servlet.getServletContext().getRealPath("/"),request);
try {
cache.updatecache(variable);
cache.updatecache("settings");
} catch (Exception e) {
e.printStackTrace();
}
request.setAttribute("resultInfo", engineName+" 搜索设置成功更新。");
return mapping.findForward("result");
}
public ActionForward tenpay(ActionMapping mapping,
ActionForm actionForm, HttpServletRequest request,
HttpServletResponse response){
String tenpaysubmit=request.getParameter("tenpaysubmit");
if(tenpaysubmit!=null){
String variables[] = {"ec_account","ec_key"};
Map<String,String> oldSettings=ForumInit.settings;
Map<String,String> settings=new HashMap<String,String>();
for (String variable: variables) {
String value =request.getParameter(variable);
this.putValue(variable, value, oldSettings, settings);
}
this.updateSettings(settings,oldSettings);
request.setAttribute("resultInfo", "财付通功能成功设定。");
return mapping.findForward("result");
}
return mapping.findForward("totenpay");
}
@SuppressWarnings("unchecked")
public ActionForward ec_credit(ActionMapping mapping,
ActionForm actionForm, HttpServletRequest request,
HttpServletResponse response){
Map<String,String> oldSettings=ForumInit.settings;
String creditsubmit=request.getParameter("creditsubmit");
if(creditsubmit==null){
String ec_credit=oldSettings.get("ec_credit");
Map<String,Object> ec_credits=new HashMap<String,Object>();
Map<Object,Object> ranks=null;
int maxcreditspermonth=6;
if(ec_credit!=null&&ec_credit.length()>0){
ec_credits=dataParse.characterParse(ec_credit, true);
maxcreditspermonth=(Byte)ec_credits.get("maxcreditspermonth");
ranks=(Map<Object,Object>)ec_credits.get("rank");
}else {
ranks=new TreeMap<Object,Object>();
ranks.put(1, 4);
ranks.put(2, 11);
ranks.put(3, 41);
ranks.put(4, 91);
ranks.put(5, 151);
ranks.put(6, 251);
ranks.put(7, 501);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -