📄 emailservice.java
字号:
{ return handleList(info); } else if (lowerRequest.startsWith("set")) { return handleSet(info); } else if (lowerRequest.startsWith("help")) { return handleHelp(info); } else if (lowerRequest.startsWith("version")) { return handleVersion(info); } else { return new STAFResult(STAFResult.InvalidRequestString, "Unknown Email Request: " + lowerRequest); } } private STAFResult handleHelp(STAFServiceInterfaceLevel30.RequestInfo info) { // Verify the requester has at least trust level 1 STAFResult trustResult = STAFUtil.validateTrust( 1, fServiceName, "HELP", fLocalMachineName, info); if (trustResult.rc != STAFResult.Ok) return trustResult; return new STAFResult(STAFResult.Ok, "EMAIL Service Help" + fLineSep + fLineSep + "SEND TO <Address>... [FROM <user@company.com>] [CONTENTTYPE <contenttype>]" + fLineSep + " < MESSAGE <Message> | FILE <File> [MACHINE <Machine>] >" + fLineSep + " [SUBJECT <Subject>] [NOHEADER] [TEXTATTACHMENT <file>]..." + fLineSep + " [BINARYATTACHMENT <file>]... [ATTACHMENTMACHINE <machine>]" + fLineSep + " [RESOLVEMESSAGE | NORESOLVEMESSAGE]" + fLineSep + fLineSep + "LIST SETTINGS" + fLineSep + fLineSep + "SET [MAILSERVER <mailserver>]" + fLineSep + " [PORT <mailport>]" + fLineSep + " [CONTENTTYPE <contenttype>]" + fLineSep + " [RESOLVEMESSAGE | NORESOLVEMESSAGE]" + fLineSep + " [LINEEND <lineend>]" + fLineSep + fLineSep + "VERSION" + fLineSep + fLineSep + "HELP"); } private STAFResult handleVersion(STAFServiceInterfaceLevel30.RequestInfo info) { // Verify the requester has at least trust level 1 STAFResult trustResult = STAFUtil.validateTrust( 1, fServiceName, "VERSION", fLocalMachineName, info); if (trustResult.rc != STAFResult.Ok) return trustResult; return new STAFResult(STAFResult.Ok, kVersion); } private STAFResult handleList(STAFServiceInterfaceLevel30.RequestInfo info) { // Verify the requester has at least trust level 2 STAFResult trustResult = STAFUtil.validateTrust( 2, fServiceName, "LIST", fLocalMachineName, info); if (trustResult.rc != STAFResult.Ok) return trustResult; // Parse the result STAFCommandParseResult parsedRequest = fListParser.parse(info.request); if (parsedRequest.rc != STAFResult.Ok) { return new STAFResult(STAFResult.InvalidRequestString, parsedRequest.errorBuffer); } // LIST SETTINGS // Create the marshalling context STAFMarshallingContext mc = new STAFMarshallingContext(); mc.setMapClassDefinition(fSettingsMapClass); Map outputMap = fSettingsMapClass.createInstance(); outputMap.put("mailServer", fMailserver); outputMap.put("port", new Integer(fMailport)); outputMap.put("contentType", fContentType); if (fResolveMessage) { outputMap.put("resolveMessage", "Enabled"); } else { outputMap.put("resolveMessage", "Disabled"); } mc.setRootObject(outputMap); return new STAFResult(STAFResult.Ok, mc.marshall()); } private STAFResult handleSet(STAFServiceInterfaceLevel30.RequestInfo info) { // Verify the requester has at least trust level 5 STAFResult trustResult = STAFUtil.validateTrust( 5, fServiceName, "SET", fLocalMachineName, info); if (trustResult.rc != STAFResult.Ok) return trustResult; // Parse the result STAFCommandParseResult parsedRequest = fSetParser.parse(info.request); if (parsedRequest.rc != STAFResult.Ok) { return new STAFResult(STAFResult.InvalidRequestString, parsedRequest.errorBuffer); } STAFResult resolvedValue = null; fHandle.submit2( "local", "LOG", "LOG MACHINE LOGNAME " + fServiceName + " LEVEL info MESSAGE " + STAFUtil.wrapData(info.request)); if (parsedRequest.optionTimes("mailserver") > 0) { resolvedValue = STAFUtil.resolveRequestVar( parsedRequest.optionValue("mailserver"), fHandle, info.requestNumber); if (resolvedValue.rc != 0) return resolvedValue; fMailserver = resolvedValue.result; } if (parsedRequest.optionTimes("mailport") > 0) { resolvedValue = STAFUtil.resolveRequestVar( parsedRequest.optionValue("mailport"), fHandle, info.requestNumber); if (resolvedValue.rc != 0) return resolvedValue; fMailport = (new Integer(resolvedValue.result).intValue()); } if (parsedRequest.optionTimes("CONTENTTYPE") > 0) { STAFResult resolvedResult = STAFUtil.resolveInitVar( parsedRequest.optionValue("CONTENTTYPE"), fHandle); if (resolvedResult.rc != STAFResult.Ok) { return resolvedResult; } if (!(resolvedResult.result.equals(sTextPlainContentType)) && !(resolvedResult.result.equals(sTextHtmlContentType))) { return new STAFResult(STAFResult.InvalidValue, resolvedResult.result); } fContentType = resolvedResult.result; } if (parsedRequest.optionTimes("RESOLVEMESSAGE") > 0) { fResolveMessage = true; } else if (parsedRequest.optionTimes("NORESOLVEMESSAGE") > 0) { fResolveMessage = false; } if (parsedRequest.optionTimes("lineend") > 0) { resolvedValue = STAFUtil.resolveRequestVar( parsedRequest.optionValue("lineend"), fHandle, info.requestNumber); if (resolvedValue.rc != 0) return resolvedValue; fLineEnd = resolvedValue.result; } return new STAFResult(STAFResult.Ok, ""); } private synchronized STAFResult handleSend( STAFServiceInterfaceLevel30.RequestInfo info) { // Verify the requester has at least trust level 3 STAFResult trustResult = STAFUtil.validateTrust( 3, fServiceName, "SEND", fLocalMachineName, info); if (trustResult.rc != STAFResult.Ok) return trustResult; STAFResult result = new STAFResult(STAFResult.Ok, ""); String resultString = ""; Vector toList = new Vector(); String messageOption = ""; String contentType = fContentType; String subjectOption = ""; STAFResult resolvedValue = null; Vector textAttachments = new Vector(); Vector binaryAttachments = new Vector(); String attachmentMachine = info.endpoint; boolean includeHeader = true; try { STAFCommandParseResult parsedRequest = fSendParser.parse( info.request); if (parsedRequest.rc != STAFResult.Ok) { return new STAFResult(STAFResult.InvalidRequestString, parsedRequest.errorBuffer); } int toTimes = parsedRequest.optionTimes("to"); for (int i = 0; i < toTimes; i++) { resolvedValue = STAFUtil.resolveRequestVar( parsedRequest.optionValue("to", i + 1), fHandle, info.requestNumber); if (resolvedValue.rc != 0) return resolvedValue; toList.add(resolvedValue.result); } if (parsedRequest.optionTimes("subject") > 0) { resolvedValue = STAFUtil.resolveRequestVar( parsedRequest.optionValue("subject"), fHandle, info.requestNumber); if (resolvedValue.rc != 0) return resolvedValue; subjectOption = resolvedValue.result; } if (parsedRequest.optionTimes("noheader") > 0) { includeHeader = false; } boolean resolveCurrentMessage = fResolveMessage; if (parsedRequest.optionTimes("resolvemessage") > 0) { resolveCurrentMessage = true; } else if (parsedRequest.optionTimes("noresolvemessage") > 0) { resolveCurrentMessage = false; } if (parsedRequest.optionTimes("message") == 1) { if (resolveCurrentMessage) { resolvedValue = STAFUtil.resolveRequestVar( parsedRequest.optionValue("message"), fHandle, info.requestNumber); if (resolvedValue.rc != 0) return resolvedValue; messageOption = resolvedValue.result; } else { messageOption = parsedRequest.optionValue("message"); } } else if (parsedRequest.optionTimes("file") == 1) { String fileMachine = info.endpoint; if (parsedRequest.optionTimes("machine") == 1) { resolvedValue = STAFUtil.resolveRequestVar( parsedRequest.optionValue("machine"), fHandle, info.requestNumber); if (resolvedValue.rc != 0) return resolvedValue; fileMachine = resolvedValue.result;; } STAFResult fsGetResult = fHandle.submit2( fileMachine, "FS", "GET FILE " + parsedRequest.optionValue("file")); if (fsGetResult.rc == 0) { messageOption = fsGetResult.result; } else { return fsGetResult; } } if (parsedRequest.optionTimes("contenttype") == 1) { resolvedValue = STAFUtil.resolveRequestVar( parsedRequest.optionValue("contenttype"), fHandle, info.requestNumber); if (resolvedValue.rc != 0) return resolvedValue; contentType = resolvedValue.result; if (!(contentType.equals(sTextPlainContentType)) && !(contentType.equals(sTextHtmlContentType))) { return new STAFResult(STAFResult.InvalidValue, contentType); } } String reply; try { try { InetAddress ipaddress = InetAddress.getLocalHost(); if ((fHostname = ipaddress.getHostName()) == null) { fHostname = "localhost"; } else { ipaddress = InetAddress.getByName( ipaddress.getHostAddress()); fHostname = ipaddress.getHostName(); } } catch (UnknownHostException uhe) { fHostname = "localhost"; } String from = "STAFEmailService@" + fHostname; if (parsedRequest.optionTimes("from") > 0) { resolvedValue = STAFUtil.resolveRequestVar( parsedRequest.optionValue("from"), fHandle, info.requestNumber); if (resolvedValue.rc != 0) return resolvedValue; from = resolvedValue.result; } int index = messageOption.indexOf("\\n"); String tmpStr = ""; String CR = ""; while (index >= 0) { tmpStr = tmpStr + CR + messageOption.substring(0, index); CR = "\n"; messageOption = messageOption.substring(index+2); index = messageOption.indexOf("\\n"); } tmpStr = tmpStr + CR + messageOption; messageOption = tmpStr; if (parsedRequest.optionTimes("attachmentmachine") > 0) { resolvedValue = STAFUtil.resolveRequestVar( parsedRequest.optionValue("attachmentmachine"), fHandle, info.requestNumber); if (resolvedValue.rc != 0) return resolvedValue; attachmentMachine = resolvedValue.result; } if (parsedRequest.optionTimes("textattachment") > 0) { int textAttachmentCount = parsedRequest.optionTimes("textattachment"); for (int i = 0; i < textAttachmentCount; i++) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -