📄 jembossauthserver.java
字号:
/** * * Returns the results for a saved project. * @param project project directory name * @param cl unused if showing all results * otherwise this is the name of * the file to display * @param userName username * @param passwd passwd * @return saved results files * */ public Vector show_saved_results(String project, String cl, String userName, byte[] passwd) { Ajax aj = new Ajax(); Vector ssr = new Vector(); if(!verifyUser(aj,userName,passwd,ssr)) return ssr; project = tmproot.concat(userName+fs+project); if(cl.equals("")) { File projectDir = new File(project); ssr = loadFilesContent(aj,userName,passwd, projectDir,project,ssr,null); } else { byte fbuf[]=null; try { fbuf = aj.getFile(userName,passwd,environ, project+fs+cl); ssr.add(cl); ssr.add(new String(fbuf)); } catch(Exception exp){} } ssr.add("status"); ssr.add("0"); ssr.add("msg"); ssr.add("OK"); for(int i=0;i<passwd.length;i++) passwd[i] = '\0'; return ssr; } /** * * Save a file to a project directory on the server. * @return message * */ public Vector save_project_file(String project, String filename, String notes, String userName, byte[] passwd) { Ajax aj = new Ajax(); Vector v = new Vector(4); if(!verifyUser(aj,userName,passwd,v)) { v.trimToSize(); return v; } final String fn = tmproot + fs + userName+ fs + project + fs + filename; boolean ok = aj.putFile(userName,passwd,environ, fn,notes.getBytes()); v.add("status"); v.add("0"); v.add("msg"); for(int i=0;i<passwd.length;i++) passwd[i] = '\0'; if(ok) v.add("OK"); else return returnError(aj,"Failed to save file "+fn,userName); return v; } /** * * Deletes a projects saved results. * @param project project directory name * @param cl unused * @param userName username * @param passwd passwd * @return message * */ public Vector delete_saved_results(String project, String cl, String userName, byte[] passwd) { Vector dsr = new Vector(4); Ajax aj = new Ajax(); if(!verifyUser(aj,userName,passwd,dsr)) { dsr.trimToSize(); return dsr; } tmproot = tmproot.concat(userName+fs); StringTokenizer st = new StringTokenizer(project,"\n"); while(st.hasMoreTokens()) { String proj = tmproot.concat(st.nextToken()); boolean ok = aj.delDir(userName,passwd,environ,proj); if(!ok || !aj.getErrStd().equals("")) return returnError(aj,"Failed deletion of directory "+proj,userName); } dsr.add("status"); dsr.add("0"); dsr.add("msg"); dsr.add("Results deleted successfully."); for(int i=0;i<passwd.length;i++) passwd[i] = '\0'; return dsr; } /** * * List of the saved results on the server. * @param userName username * @param passwd passwd * @return list of the saved results. * */ public Vector list_saved_results(String userName, byte[] passwd) { Ajax aj = new Ajax(); Vector lsr = new Vector(); if(!verifyUser(aj,userName,passwd,lsr)) return lsr; tmproot = tmproot.concat(userName+fs); lsr.add("status"); lsr.add("0"); lsr.add("msg"); lsr.add("OK"); aj.setErrStd(); boolean lsd = aj.listDirs(userName,passwd,environ,tmproot); String outStd = aj.getOutStd(); int indStart = 0; int indEnd = 0;// StringTokenizer stok = new StringTokenizer(outStd,"\n");// while(stok.hasMoreTokens()) while((indEnd = outStd.indexOf("\n",indStart)) > -1) {// String dirname = stok.nextToken(); String dirname = outStd.substring(indStart,indEnd); indStart = indEnd+1; lsr.add(dirname); byte fbuf[] = aj.getFile(userName,passwd,environ, tmproot + dirname + fs + ".desc"); lsr.add(new String(fbuf)); if(aj.getFileok()!=1) { String dat = new Date().toString(); dat = dat.replace(':','_'); appendToLogFile(userName+":: "+dat+" Calling getFile : "+tmproot + dirname + fs + ".desc\n"+ "STDERR "+aj.getErrStd()+"\n"+ "STDOUT "+aj.getOutStd(),errorLog); } } lsr.add("list"); lsr.add(outStd); for(int i=0;i<passwd.length;i++) passwd[i] = '\0'; return lsr; } /** * * Appends a log entry to the log file * @param logEntry entry to add to log file * @param logFileName log file name * */ private void appendToLogFile(String logEntry, String logFileName) { BufferedWriter bw = null; try { bw = new BufferedWriter(new FileWriter(logFileName, true)); bw.write(logEntry); bw.newLine(); bw.flush(); } catch (Exception ioe) { System.out.println("Error writing to log file "+logFile); ioe.printStackTrace(); } finally // always close the file { if(bw != null) try { bw.close(); } catch (IOException ioe2) {} } } /** * * Reads in files from EMBOSS output * @param aj ajax/jni * @param userName username * @param passwd passwd * @param projectDir project directory * @param project project name * @param result results * @param inFiles input files * @return result * */ private Vector loadFilesContent(Ajax aj, String userName, byte[] passwd, File projectDir, String project, Vector result, Vector inFiles) { boolean ls = false; try { ls = aj.listFiles(userName,passwd,environ,project); } catch(Exception exp){} if(!ls) { String dat = new Date().toString(); dat = dat.replace(':','_'); appendToLogFile(userName+":: "+dat+ " Failed loadFilesContent\n"+ "STDERR "+aj.getErrStd()+"\n"+ "STDOUT "+aj.getOutStd(),errorLog); } StringTokenizer stok = new StringTokenizer(aj.getOutStd(),"\n"); String fn = null; while(stok.hasMoreTokens()) { fn = stok.nextToken(); if(inFiles == null || !inFiles.contains(fn)) { byte fbuf[]=null; try { fbuf = aj.getFile(userName,passwd,environ, project+fs+fn); } catch(Exception exp){} if(aj.getFileok()==1) { result.add(fn); result.add(fbuf); } else { String dat = new Date().toString(); dat = dat.replace(':','_'); appendToLogFile(userName+":: "+dat+ " Cannot getFile "+project+fs+fn,errorLog); } } } return result; } /** * * Used to provide information on the batch/background * processes. * @param prog program * @param opt options * @param resToQuery results to query * @param userName username * @param passwd passwd * */ public Vector update_result_status(String prog, String opt, Vector resToQuery,String userName, byte[] passwd) { Ajax aj = new Ajax(); Vector vans = new Vector(); if(!verifyUser(aj,userName,passwd,vans)) return vans; tmproot = tmproot.concat(userName+fs); for(Enumeration e = resToQuery.elements() ; e.hasMoreElements() ;) { String thiskey = (String)e.nextElement(); e.nextElement(); try { aj.getFile(userName,passwd,environ, tmproot+thiskey+fs+".finished"); } catch(Exception ex){} if((aj.getErrStd().indexOf("stat error") == -1) && (aj.getFileok()==1)) { vans.add(thiskey); vans.add("complete"); byte fbuf[] = aj.getFile(userName,passwd,environ, tmproot + fs + thiskey+ fs + ".desc"); if(aj.getFileok()==1) { vans.add(thiskey+"-description"); vans.add(new String(fbuf)); } } else { vans.add(thiskey); vans.add("pending"); } } for(int i=0;i<passwd.length;i++) passwd[i] = '\0'; return vans; } /** * * Verify the username/passwd * @param aj ajax/jni * @param userName username * @param passwd password * @param res results vector * @return true if authenticated ok * */ private boolean verifyUser(Ajax aj, String userName, byte[] passwd, Vector res) { if(userName == null || passwd == null) {// System.out.println("Failed Authorisation "+userName); res.add("msg"); res.add("Failed Authorisation "); res.add("status"); res.add("1"); return false; } boolean ok = false; try { ok = aj.userAuth(userName,passwd,environ); } catch(Exception exp) { ok = false; } if(!ok) { String dat = new Date().toString(); dat = dat.replace(':','_'); appendToLogFile(userName+":: "+dat+ " Failed Authorisation "+userName+"\n"+ "STDERR "+aj.getErrStd(),errorLog); res.add("msg"); res.add("Failed Authorisation "+userName); res.add("status"); res.add("1"); return false; } return true; } /** * * Report the stderr and stdout to error logs * @param aj ajax/jni * @param msg message * @return vector containing the message * */ private Vector returnError(Ajax aj, String msg, String userName) { String dat = new Date().toString(); dat = dat.replace(':','_'); appendToLogFile(userName+":: "+dat+ " STDERR "+aj.getErrStd()+"\n"+ "STDOUT "+aj.getOutStd()+"\n"+ "MSG "+msg,errorLog); Vector vans = new Vector(4); vans.add("msg"); vans.add(aj.getErrStd()); vans.add("status"); vans.add("1"); return vans; } public final Object clone() throws java.lang.CloneNotSupportedException { throw new java.lang.CloneNotSupportedException(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -