From ff07ea1e7d14d576771abdab0ca68b28685079e5 Mon Sep 17 00:00:00 2001 From: Derek Hulley Date: Mon, 18 Dec 2006 11:58:55 +0000 Subject: [PATCH] Merged 1.4 to HEAD svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4192 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4197 . svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4205 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4206 . svn resolved root\projects\repository\source\java\org\alfresco\filesys\server\config\ServerConfiguration.java svn revert root\projects\repository\config\alfresco\version.properties svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4219 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4224 . git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4631 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/desktop/Alfresco.exe | Bin 327680 -> 393216 bytes .../alfresco/domain/hibernate-cfg.properties | 2 +- config/alfresco/scheduled-jobs-context.xml | 33 - .../parallelreview_processdefinition.xml | 17 +- .../workflow/workflow-messages.properties | 4 + source/cpp/CAlfrescoApp/CAlfrescoApp.cpp | 90 +- source/cpp/CAlfrescoApp/includes/util/Debug.h | 74 ++ source/cpp/CAlfrescoApp/source/util/Debug.cpp | 83 ++ .../org/alfresco/filesys/ftp/FTPCommand.java | 6 +- .../org/alfresco/filesys/ftp/FTPDate.java | 28 + .../filesys/ftp/FTPNetworkServer.java | 59 +- .../filesys/ftp/FTPSiteInterface.java | 34 + .../alfresco/filesys/ftp/FTPSrvSession.java | 1033 +++++++++++++++-- .../server/config/ServerConfiguration.java | 50 + .../repo/desk/JavaScriptDesktopAction.java | 39 +- .../repo/node/BaseNodeServiceTest.java | 5 + .../repo/template/NodeSearchResultsMap.java | 2 +- .../counter/VersionCounterServiceTest.java | 1 + 18 files changed, 1411 insertions(+), 149 deletions(-) create mode 100755 source/cpp/CAlfrescoApp/includes/util/Debug.h create mode 100755 source/cpp/CAlfrescoApp/source/util/Debug.cpp create mode 100644 source/java/org/alfresco/filesys/ftp/FTPSiteInterface.java diff --git a/config/alfresco/desktop/Alfresco.exe b/config/alfresco/desktop/Alfresco.exe index 1b2dfaf2058dbbbff957b5bd628e8ee0bc4a1e8a..df18004bab7527d9bae7064f8b24f5bb2f3fb7ba 100644 GIT binary patch delta 195128 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 *e5bDK{zWjnW>l2irhT{?3Yfi&f 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 XV{PBzLtwsys@lWu?QouFjrRWww({*F delta 131806 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%0D8V4t}a1J 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%0DP(RwZUAANT?e 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 diff --git a/config/alfresco/domain/hibernate-cfg.properties b/config/alfresco/domain/hibernate-cfg.properties index 5da910a9cd..275d4fedf4 100644 --- a/config/alfresco/domain/hibernate-cfg.properties +++ b/config/alfresco/domain/hibernate-cfg.properties @@ -12,4 +12,4 @@ hibernate.cache.use_second_level_cache=true hibernate.default_batch_fetch_size=1 hibernate.jdbc.batch_size=32 hibernate.connection.release_mode=auto -hibernate.connection.isolation=4 \ No newline at end of file +hibernate.connection.isolation=2 \ No newline at end of file diff --git a/config/alfresco/scheduled-jobs-context.xml b/config/alfresco/scheduled-jobs-context.xml index 294215a324..612be30dc9 100644 --- a/config/alfresco/scheduled-jobs-context.xml +++ b/config/alfresco/scheduled-jobs-context.xml @@ -40,7 +40,6 @@ - 1 @@ -49,38 +48,6 @@ - - - - - - - org.alfresco.repo.node.index.IndexRecoveryJob - - - - - - - - - - - - - - - - 5 - - - 0 - - - diff --git a/config/alfresco/workflow/parallelreview_processdefinition.xml b/config/alfresco/workflow/parallelreview_processdefinition.xml index 2ccbae432b..13b80f9955 100644 --- a/config/alfresco/workflow/parallelreview_processdefinition.xml +++ b/config/alfresco/workflow/parallelreview_processdefinition.xml @@ -6,14 +6,7 @@ - - - + @@ -21,6 +14,14 @@ #{bpm_assignees} reviewer + + + diff --git a/config/alfresco/workflow/workflow-messages.properties b/config/alfresco/workflow/workflow-messages.properties index 32aba2a288..297cebe529 100644 --- a/config/alfresco/workflow/workflow-messages.properties +++ b/config/alfresco/workflow/workflow-messages.properties @@ -13,6 +13,10 @@ wf_workflowmodel.type.wf_submitReviewTask.title=Start Review wf_workflowmodel.type.wf_submitReviewTask.description=Submit documents for review & approval wf_workflowmodel.type.wf_reviewTask.title=Review wf_workflowmodel.type.wf_reviewTask.description=Review Documents to Approve or Reject them +wf_workflowmodel.type.wf_rejectedTask.title=Rejected +wf_workflowmodel.type.wf_rejectedTask.description=Rejected +wf_workflowmodel.type.wf_approvedTask.title=Approved +wf_workflowmodel.type.wf_approvedTask.description=Approved # Review & Approve Process Definitions diff --git a/source/cpp/CAlfrescoApp/CAlfrescoApp.cpp b/source/cpp/CAlfrescoApp/CAlfrescoApp.cpp index 94aa66b959..276faa7484 100644 --- a/source/cpp/CAlfrescoApp/CAlfrescoApp.cpp +++ b/source/cpp/CAlfrescoApp/CAlfrescoApp.cpp @@ -25,6 +25,7 @@ #include "util\DataBuffer.h" #include "util\FileName.h" #include "util\Integer.h" +#include "util\Debug.h" #include @@ -68,6 +69,22 @@ BOOL CAlfrescoApp::InitInstance() CWinApp::InitInstance(); AfxEnableControlContainer(); + // Check if debug logging is enabled + + char dbgLogName[MAX_PATH]; + size_t dbgLogSize; + + if ( getenv_s( &dbgLogSize, dbgLogName, sizeof( dbgLogName), "ALFDEBUG") == 0) { + + // Enable debug output + + Debug::openLog( dbgLogName); + + // Log the application startup + + DBGOUT_TS << "---------- Desktop client app started ----------" << endl; + } + // Get the application path String appPath = __wargv[0]; @@ -76,6 +93,7 @@ BOOL CAlfrescoApp::InitInstance() if ( pos < 0) { AfxMessageBox( L"Invalid application path", MB_OK | MB_ICONSTOP); + DBGOUT_TS << "Error, bad application path, " << appPath << endl; return 1; } @@ -91,10 +109,29 @@ BOOL CAlfrescoApp::InitInstance() try { + // DEBUG + + DBGOUT_TS << "Using folder " << folderPath << endl; + // Get the action information AlfrescoActionInfo actionInfo = alfresco.getActionInformation(exeName); + // DEBUG + + if ( HAS_DEBUG) { + DBGOUT_TS << "Action " << actionInfo.getName() << endl; + DBGOUT_TS << " PreProcess: "; + + if ( actionInfo.hasPreProcessAction( PreConfirmAction)) + DBGOUT << "Confirm "; + if ( actionInfo.hasPreProcessAction( PreCopyToTarget)) + DBGOUT << "CopyToTarget "; + if ( actionInfo.hasPreProcessAction( PreLocalToWorkingCopy)) + DBGOUT << "LocalToWorkingCopy"; + DBGOUT << endl; + } + // Check if the action should be confirmed if ( actionInfo.hasPreProcessAction(PreConfirmAction)) { @@ -105,10 +142,16 @@ BOOL CAlfrescoApp::InitInstance() if ( confirmMsg.length() == 0) confirmMsg = L"Run action ?"; + // DEBUG + + DBGOUT_TS << "Confirm action, message = " << confirmMsg << endl; + // Display a confirmation dialog - if ( AfxMessageBox( confirmMsg, MB_OKCANCEL | MB_ICONQUESTION) == IDCANCEL) + if ( AfxMessageBox( confirmMsg, MB_OKCANCEL | MB_ICONQUESTION) == IDCANCEL) { + DBGOUT_TS << "User cancelled action" << endl; return FALSE; + } } // Check if the action supports multiple paths, if not then call the action once for each supplied path @@ -164,6 +207,7 @@ BOOL CAlfrescoApp::InitInstance() } else { AfxMessageBox( L"Not a valid Alfresco CIFS folder", MB_OK | MB_ICONSTOP); + DBGOUT_TS << "Error, not a valid Alfresco CIFS folder, " << folderPath << endl; return 1; } @@ -198,6 +242,10 @@ bool CAlfrescoApp::buildDesktopParameters( AlfrescoInterface& alfresco, StringLi String curFile = paths.getStringAt( i); + // DEBUG + + DBGOUT_TS << "Parameter: " << curFile << endl; + // Check if the path is on an Alfresco mapped drive if ( alfresco.isMappedDrive() && curFile.startsWithIgnoreCase( alfresco.getDrivePath())) { @@ -223,10 +271,12 @@ bool CAlfrescoApp::buildDesktopParameters( AlfrescoInterface& alfresco, StringLi if ( isDir && actionInfo.supportsFolders() == false) { AfxMessageBox(L"Action does not support folders", MB_OK | MB_ICONSTOP); + DBGOUT_TS << "Error, action does not support folders" << endl; return false; } else if ( actionInfo.supportsFiles() == false) { AfxMessageBox(L"Action does not support files", MB_OK | MB_ICONSTOP); + DBGOUT_TS << "Error, action does not support files" << endl; return false; } @@ -244,10 +294,12 @@ bool CAlfrescoApp::buildDesktopParameters( AlfrescoInterface& alfresco, StringLi if ( isDir == false && actionInfo.hasAttribute(AttrClientFiles) == false) { AfxMessageBox(L"Action does not support local files", MB_OK | MB_ICONSTOP); + DBGOUT_TS << "Error, action does not support local files" << endl; return false; } else if ( isDir == true && actionInfo.hasAttribute(AttrClientFolders) == false) { AfxMessageBox(L"Action does not support local folders", MB_OK | MB_ICONSTOP); + DBGOUT_TS << "Error, action does not support local folders" << endl; return false; } @@ -260,10 +312,12 @@ bool CAlfrescoApp::buildDesktopParameters( AlfrescoInterface& alfresco, StringLi if ( fInfo->getLockType() != LockNone) { AfxMessageBox( L"Cannot copy file to Alfresco folder, destination file is locked", MB_OK | MB_ICONEXCLAMATION); + DBGOUT_TS << "Error, cannot copy to Alfresco folder, destination file is locked" << endl; return false; } else if ( actionInfo.hasPreProcessAction(PreLocalToWorkingCopy) == true && fInfo->isWorkingCopy() == false) { AfxMessageBox( L"Cannot copy to Alfresco folder, destination must overwrite a working copy", MB_OK | MB_ICONEXCLAMATION); + DBGOUT_TS << "Error, cannot copy to Alfresco folder, destination must overwrite a working copy" << endl; return false; } } @@ -274,6 +328,7 @@ bool CAlfrescoApp::buildDesktopParameters( AlfrescoInterface& alfresco, StringLi CString msg; msg.FormatMessage( L"No matching working copy for %1", curName.data()); AfxMessageBox( msg, MB_OK | MB_ICONEXCLAMATION); + DBGOUT_TS << "Error, no matching working copy for " << curName << endl; return false; } @@ -293,6 +348,7 @@ bool CAlfrescoApp::buildDesktopParameters( AlfrescoInterface& alfresco, StringLi msg.FormatMessage( isDir ? L"Failed to copy folder %1" : L"Failed to copy file %1", curFile.data()); AfxMessageBox( msg, MB_OK | MB_ICONSTOP); + DBGOUT_TS << "Error, copy failed for " << curName << endl; return false; } else { @@ -302,10 +358,15 @@ bool CAlfrescoApp::buildDesktopParameters( AlfrescoInterface& alfresco, StringLi CString msg; msg.FormatMessage( L"Copy aborted for %1", curFile.data()); AfxMessageBox( msg, MB_OK | MB_ICONSTOP); + DBGOUT_TS << "Error, copy aborted by user, " << curName << endl; return false; } } + // DEBUG + + DBGOUT_TS << "Added target " << curName << endl; + // Add a desktop target for the copied file params.addTarget( new DesktopTarget(isDir ? TargetCopiedFolder : TargetCopiedFile, curName)); @@ -355,6 +416,7 @@ bool CAlfrescoApp::buildDesktopParameters( AlfrescoInterface& alfresco, StringLi msg.FormatMessage( isDir ? L"Failed to copy folder %1" : L"Failed to copy file %1", curFile.data()); AfxMessageBox( msg, MB_OK | MB_ICONSTOP); + DBGOUT_TS << "Error, copy failed for " << curName << endl; return false; } else { @@ -364,6 +426,7 @@ bool CAlfrescoApp::buildDesktopParameters( AlfrescoInterface& alfresco, StringLi CString msg; msg.FormatMessage( L"Copy aborted for %1", curFile.data()); AfxMessageBox( msg, MB_OK | MB_ICONSTOP); + DBGOUT_TS << "Error, copy aborted for " << curName << endl; return false; } } @@ -381,6 +444,10 @@ bool CAlfrescoApp::buildDesktopParameters( AlfrescoInterface& alfresco, StringLi } } + // DEBUG + + DBGOUT_TS << "Added target " << pTarget->getTarget() << endl; + // Add the desktop target params.addTarget( pTarget); @@ -403,6 +470,10 @@ bool CAlfrescoApp::buildDesktopParameters( AlfrescoInterface& alfresco, StringLi */ bool CAlfrescoApp::copyFilesUsingShell(const String& fromFileFolder, const String& toFolder, bool& aborted) { + // DEBUG + + DBGOUT_TS << "Copy from " << fromFileFolder << " to " << toFolder << endl; + // Build the from/to paths, must be double null terminated wchar_t fromPath[MAX_PATH + 1]; @@ -469,6 +540,7 @@ bool CAlfrescoApp::runAction( AlfrescoInterface& alfresco, StringList& pathList, if ( actionInfo.allowsNoParameters() == false && desktopParams.numberOfTargets() == 0) { AfxMessageBox( L"No parameters for action", MB_OK | MB_ICONEXCLAMATION); + DBGOUT_TS << "Error, no parameters for action" << endl; return false; } @@ -484,6 +556,10 @@ bool CAlfrescoApp::runAction( AlfrescoInterface& alfresco, StringList& pathList, if ( response.getStatus() == StsCommandLine) { + // DEBUG + + DBGOUT_TS << "Action returned command line, " << response.getStatusMessage() << endl; + // Launch a process using the command line sts = doCommandLine( alfresco, response.getStatusMessage()); @@ -493,6 +569,10 @@ bool CAlfrescoApp::runAction( AlfrescoInterface& alfresco, StringList& pathList, else if ( response.getStatus() == StsLaunchURL) { + // DEBUG + + DBGOUT_TS << "Action returned URL, " << response.getStatusMessage() << endl; + // Use the Windows shell to open the URL sts = doURL( alfresco, response.getStatusMessage()); @@ -534,6 +614,8 @@ bool CAlfrescoApp::runAction( AlfrescoInterface& alfresco, StringList& pathList, msg = errMsg.data(); AfxMessageBox( msg, MB_OK | MB_ICONERROR); + + DBGOUT_TS << "Action returned error status, " << msg << endl; } } else if ( response.hasStatusMessage()) { @@ -543,6 +625,8 @@ bool CAlfrescoApp::runAction( AlfrescoInterface& alfresco, StringList& pathList, CString msg; msg.FormatMessage( L"Action returned message\n\n%1", response.getStatusMessage().data()); AfxMessageBox( msg, MB_OK | MB_ICONINFORMATION); + + DBGOUT_TS << "Action returned error message, " << msg << endl; } } @@ -684,6 +768,10 @@ bool CAlfrescoApp::doCommandLine( AlfrescoInterface& alfresco, const String& cmd CString msg; msg.FormatMessage( L"Failed to launch command line\n\n%1\n\nError %2!d!", cmdLine.data(), GetLastError()); AfxMessageBox( msg, MB_OK | MB_ICONERROR); + + // DEBUG + + DBGOUT_TS << "Error, failed to launch command line, status " << GetLastError() << endl; } else sts = true; diff --git a/source/cpp/CAlfrescoApp/includes/util/Debug.h b/source/cpp/CAlfrescoApp/includes/util/Debug.h new file mode 100755 index 0000000000..b2990e5b7b --- /dev/null +++ b/source/cpp/CAlfrescoApp/includes/util/Debug.h @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2005-2006 Alfresco, Inc. + * + * Licensed under the Mozilla Public License version 1.1 + * with a permitted attribution clause. You may obtain a + * copy of the License at + * + * http://www.alfresco.org/legal/license.txt + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the + * License. + */ + +#ifndef _Debug_H +#define _Debug_H + +// Includes + +#include "util\String.h" +#include +#include + +// Classes defined in this header file + +namespace Alfresco { + class Debug; + + // Macro to access to the debug output stream + + #define HAS_DEBUG Debug::hasOutputStream() == true + #define DBGOUT if ( Debug::hasOutputStream()) Debug::getOutputStream() + #define TIMESTAMP Debug::timeStamp(); + #define DBGOUT_TS TIMESTAMP DBGOUT +} + +/** + * Debug Logging Class + * + * Outputs debugging information to a file on the local filesystem. + */ +class Alfresco::Debug { +public: + + // Open/close the debug log + + static void openLog( const char* logName, bool append = true); + static void closeLog( void); + + // Check if the output stream is valid, return the output stream + + static bool hasOutputStream( void) { return _debugOut.is_open() ? true : false; } + static std::ofstream& getOutputStream( void) { return _debugOut; } + + // Output a timestamp to the debug log + + static void timeStamp( void); + +private: + // Debug output log file + + static std::ofstream _debugOut; + +private: + // Hide constructors, static only class + + Debug( void) {}; + Debug( const Debug& dbg) {}; +}; + +#endif \ No newline at end of file diff --git a/source/cpp/CAlfrescoApp/source/util/Debug.cpp b/source/cpp/CAlfrescoApp/source/util/Debug.cpp new file mode 100755 index 0000000000..2b793b6088 --- /dev/null +++ b/source/cpp/CAlfrescoApp/source/util/Debug.cpp @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2005-2006 Alfresco, Inc. + * + * Licensed under the Mozilla Public License version 1.1 + * with a permitted attribution clause. You may obtain a + * copy of the License at + * + * http://www.alfresco.org/legal/license.txt + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the + * License. + */ + +#include +#include "util\Debug.h" + +using namespace std; +using namespace Alfresco; + +// Global debug output stream + +ofstream Debug::_debugOut; + +/** + * Open the debug output file + * + * @param logName const char* + * @param append bool + */ +void Debug::openLog(const char *logName, bool append) { + + // Check if the log is already open + + if ( Debug::hasOutputStream()) + Debug::closeLog(); + + // Open the debug log file + + unsigned int openMode = append ? ios::app : ios::out; + _debugOut.open( logName, openMode); +} + +/** + * Close the debug output file + */ +void Debug::closeLog( void) { + + // Close the debug log + + if ( Debug::hasOutputStream()) { + + // Close the debug log file + + _debugOut.close(); + } +} + +/** + * Output the current date/time to the debug log + */ +void Debug::timeStamp( void) { + + if ( Debug::hasOutputStream()) { + + // Get the time in seconds and convert to a structure + + char timeBuf[32]; + __time32_t timeNow; + struct tm timeTm; + + _time32( &timeNow); + _localtime32_s( &timeTm, &timeNow); + + sprintf_s( timeBuf, sizeof( timeBuf), "%02d/%02d/%04d %02d:%02d:%02d ", + timeTm.tm_mday, timeTm.tm_mon, timeTm.tm_year + 1900, timeTm.tm_hour, timeTm.tm_min, timeTm.tm_sec); + Debug::getOutputStream() << timeBuf; + } +} + diff --git a/source/java/org/alfresco/filesys/ftp/FTPCommand.java b/source/java/org/alfresco/filesys/ftp/FTPCommand.java index ab39eea915..8eeb859e32 100644 --- a/source/java/org/alfresco/filesys/ftp/FTPCommand.java +++ b/source/java/org/alfresco/filesys/ftp/FTPCommand.java @@ -68,8 +68,10 @@ public class FTPCommand public final static int XRmd = 39; public final static int XCup = 40; public final static int XCwd = 41; + public final static int MLst = 42; + public final static int MLsd = 43; - public final static int MaxId = 41; + public final static int MaxId = 43; public final static int InvalidCmd = -1; @@ -78,7 +80,7 @@ public class FTPCommand private static final String[] _cmds = { "USER", "PASS", "ACCT", "CWD", "CDUP", "SMNT", "REIN", "QUIT", "PORT", "PASV", "TYPE", "STRU", "MODE", "RETR", "STOR", "STOU", "APPE", "ALLO", "REST", "RNFR", "RNTO", "ABOR", "DELE", "RMD", "MKD", "PWD", "LIST", "NLST", "SITE", "SYST", "STAT", "HELP", "NOOP", "MDTM", "SIZE", - "OPTS", "FEAT", "XPWD", "XMKD", "XRMD", "XCUP", "XCWD" }; + "OPTS", "FEAT", "XPWD", "XMKD", "XRMD", "XCUP", "XCWD", "MLST", "MLSD" }; /** * Convert an FTP command to an id diff --git a/source/java/org/alfresco/filesys/ftp/FTPDate.java b/source/java/org/alfresco/filesys/ftp/FTPDate.java index c43a561e67..7e0f4edead 100644 --- a/source/java/org/alfresco/filesys/ftp/FTPDate.java +++ b/source/java/org/alfresco/filesys/ftp/FTPDate.java @@ -16,6 +16,7 @@ */ package org.alfresco.filesys.ftp; +import java.text.SimpleDateFormat; import java.util.*; /** @@ -37,6 +38,11 @@ public class FTPDate protected final static String[] _months = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; + // Machine listing date/time formatters + + protected final static SimpleDateFormat _mlstFormat = new SimpleDateFormat( "yyyyMMddHHmmss"); + protected final static SimpleDateFormat _mlstFormatLong = new SimpleDateFormat( "yyyyMMddHHmmss.SSS"); + /** * Pack a date string in Unix format The format is 'Mmm dd hh:mm' if the file is less than six * months old, else the format is 'Mmm dd yyyy'. @@ -104,4 +110,26 @@ public class FTPDate buf.append(min); } } + + /** + * Return a machine listing date/time, in the format 'YYYYMMDDHHSS'. + * + * @param dateTime long + * @return String + */ + public final static String packMlstDateTime( long dateTime) + { + return _mlstFormat.format( new Date( dateTime)); + } + + /** + * Return a machine listing date/time, in the format 'YYYYMMDDHHSS.sss'. + * + * @param dateTime long + * @return String + */ + public final static String packMlstDateTimeLong( long dateTime) + { + return _mlstFormatLong.format( new Date( dateTime)); + } } diff --git a/source/java/org/alfresco/filesys/ftp/FTPNetworkServer.java b/source/java/org/alfresco/filesys/ftp/FTPNetworkServer.java index d13bd4bb71..3e9865fbb0 100644 --- a/source/java/org/alfresco/filesys/ftp/FTPNetworkServer.java +++ b/source/java/org/alfresco/filesys/ftp/FTPNetworkServer.java @@ -21,6 +21,7 @@ import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import java.net.SocketException; +import java.nio.charset.Charset; import java.util.Enumeration; import org.alfresco.filesys.server.ServerListener; @@ -46,8 +47,8 @@ public class FTPNetworkServer extends NetworkFileServer implements Runnable // Constants // - // Session Thread group + private static final ThreadGroup THREAD_GROUP_SESSION = new ThreadGroup("FTP_SESSION_GROUP"); // Listen backlog for the server socket @@ -86,6 +87,14 @@ public class FTPNetworkServer extends NetworkFileServer implements Runnable private String m_localFTPaddress; + // SITE command interface + + private FTPSiteInterface m_siteInterface; + + // Default character encoding to use for file names + + private String m_charSet; + /** * Class constructor * @@ -122,6 +131,12 @@ public class FTPNetworkServer extends NetworkFileServer implements Runnable logger.error(ex); } } + + // Set the default character set + + m_charSet = config.getFTPCharacterSet(); + if ( m_charSet == null) + m_charSet = Charset.defaultCharset().name(); } /** @@ -333,6 +348,16 @@ public class FTPNetworkServer extends NetworkFileServer implements Runnable return m_rootPath; } + /** + * Get the character set to use for file name encoding/decoding + * + * @return String + */ + public final String getCharacterSet() + { + return m_charSet; + } + /** * Notify the server that a user has logged on. * @@ -357,6 +382,8 @@ public class FTPNetworkServer extends NetworkFileServer implements Runnable if (logger.isDebugEnabled() && hasDebug()) { logger.debug("FTP Server starting on port " + getPort()); + if ( getCharacterSet() != null) + logger.debug( "Using character set " + getCharacterSet()); } // Create a server socket to listen for incoming FTP session requests @@ -582,4 +609,34 @@ public class FTPNetworkServer extends NetworkFileServer implements Runnable fireServerEvent(ServerListener.ServerStartup); } + + /** + * Check if the site interface is valid + * + * @return boolean + */ + public final boolean hasSiteInterface() + { + return m_siteInterface != null ? true : false; + } + + /** + * Return the site interface + * + * @return FTPSiteInterface + */ + public final FTPSiteInterface getSiteInterface() + { + return m_siteInterface; + } + + /** + * Set the site specific commands interface + * + * @param siteInterface FTPSiteInterface + */ + public final void setSiteInterface( FTPSiteInterface siteInterface) + { + m_siteInterface = siteInterface; + } } diff --git a/source/java/org/alfresco/filesys/ftp/FTPSiteInterface.java b/source/java/org/alfresco/filesys/ftp/FTPSiteInterface.java new file mode 100644 index 0000000000..c121cb99c8 --- /dev/null +++ b/source/java/org/alfresco/filesys/ftp/FTPSiteInterface.java @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2005 Alfresco, Inc. + * + * Licensed under the Mozilla Public License version 1.1 + * with a permitted attribution clause. You may obtain a + * copy of the License at + * + * http://www.alfresco.org/legal/license.txt + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the + * License. + */ + +package org.alfresco.filesys.ftp; + +/** + * FTP SITE Command Interface + * + *

Optional interface that is used to provide processing for the FTP SITE command. + */ +public interface FTPSiteInterface { + + /** + * Process an FTP SITE specific command + * + * @param sess FTPSrvSession + * @param req FTPRequest + */ + void processFTPSiteCommand( FTPSrvSession sess, FTPRequest req); +} diff --git a/source/java/org/alfresco/filesys/ftp/FTPSrvSession.java b/source/java/org/alfresco/filesys/ftp/FTPSrvSession.java index db56f00801..540afa1106 100644 --- a/source/java/org/alfresco/filesys/ftp/FTPSrvSession.java +++ b/source/java/org/alfresco/filesys/ftp/FTPSrvSession.java @@ -26,9 +26,11 @@ import java.net.InetAddress; import java.net.Socket; import java.net.SocketException; import java.net.UnknownHostException; +import java.util.Calendar; import java.util.Date; import java.util.Enumeration; import java.util.StringTokenizer; +import java.util.TimeZone; import java.util.Vector; import javax.transaction.UserTransaction; @@ -57,6 +59,7 @@ import org.alfresco.filesys.server.filesys.SrvDiskInfo; import org.alfresco.filesys.server.filesys.TreeConnection; import org.alfresco.filesys.server.filesys.TreeConnectionHash; import org.alfresco.filesys.smb.server.repo.ContentContext; +import org.alfresco.filesys.util.HexDump; import org.alfresco.model.ContentModel; import org.alfresco.repo.security.authentication.AuthenticationComponent; import org.alfresco.service.cmr.repository.NodeRef; @@ -105,6 +108,13 @@ public class FTPSrvSession extends SrvSession implements Runnable public static final int DBG_DIRECTORY = 0x00000200; // Directory commands + // Enabled features + + protected static boolean FeatureUTF8 = false; + protected static boolean FeatureMDTM = true; + protected static boolean FeatureSIZE = true; + protected static boolean FeatureMLST = true; + // Anonymous user name private static final String USER_ANONYMOUS = "anonymous"; @@ -133,8 +143,36 @@ public class FTPSrvSession extends SrvSession implements Runnable // LIST command options - protected final static String LIST_OPTION_HIDDEN = "-a"; + protected final static String LIST_OPTION_PREFIX = "-"; + protected final static char LIST_OPTION_HIDDEN = 'a'; + + // Machine listing fact ids + + protected static final int MLST_SIZE = 0x0001; + protected static final int MLST_MODIFY = 0x0002; + protected static final int MLST_CREATE = 0x0004; + protected static final int MLST_TYPE = 0x0008; + protected static final int MLST_UNIQUE = 0x0010; + protected static final int MLST_PERM = 0x0020; + protected static final int MLST_MEDIATYPE = 0x0040; + + // Default fact list to use for machine listing commands + + protected static final int MLST_DEFAULT = MLST_SIZE + MLST_MODIFY + MLST_CREATE + MLST_TYPE + MLST_UNIQUE + MLST_PERM + MLST_MEDIATYPE; + + // Machine listing fact names + + protected static final String _factNames[] = { "size", "modify", "create", "type", "unique", "perm", "media-type" }; + + // MLSD buffer size to allocate + + protected static final int MLSD_BUFFER_SIZE = 4096; + + // Modify date/time minimum date/time argument length + + protected static final int MDTM_DATETIME_MINLEN = 14; // YYYYMMDDHHMMSS + // Flag to control whether data transfers use a seperate thread private static boolean UseThreadedDataTransfer = false; @@ -145,12 +183,12 @@ public class FTPSrvSession extends SrvSession implements Runnable // Input/output streams to remote client - private InputStreamReader m_in; - - private char[] m_inbuf; + private InputStream m_in; + private byte[] m_inbuf; +// private InputStreamReader m_in; +// private char[] m_inbuf; private OutputStreamWriter m_out; - private StringBuffer m_outbuf; // Data connection @@ -171,6 +209,14 @@ public class FTPSrvSession extends SrvSession implements Runnable private long m_restartPos = 0; + // Flag to indicate if UTF-8 paths are enabled + + private boolean m_utf8Paths = false; + + // Machine listing fact list + + private int m_mlstFacts = MLST_DEFAULT; + // Rename from path details private FTPPath m_renameFrom; @@ -183,6 +229,26 @@ public class FTPSrvSession extends SrvSession implements Runnable private TreeConnectionHash m_connections; + /** + * Static initializer + */ + static + { + try + { + // Check if the sun.text classes are available for UTF-8 conversion + + Class.forName( "sun.text.Normalizer"); + + // Enable UTF-8 support + + FeatureUTF8 = true; + } + catch ( Exception ex) + { + } + } + /** * Class constructor * @@ -338,6 +404,16 @@ public class FTPSrvSession extends SrvSession implements Runnable return m_cwd != null ? true : false; } + /** + * Check if UTF-8 filenames are enabled + * + * @return boolean + */ + public final boolean isUTF8Enabled() + { + return m_utf8Paths; + } + /** * Set the default path for the session * @@ -388,7 +464,7 @@ public class FTPSrvSession extends SrvSession implements Runnable // Convert the path to an FTP format path - String path = convertToFTPSeperators(req.getArgument()); + String path = convertToFTPSeperators( req.getArgument()); // Check if the path is the root directory and there is a default root // path configured @@ -1205,23 +1281,28 @@ public class FTPSrvSession extends SrvSession implements Runnable boolean hidden = false; - if (req.hasArgument() && req.getArgument().startsWith(LIST_OPTION_HIDDEN)) + if (req.hasArgument() && req.getArgument().startsWith(LIST_OPTION_PREFIX)) { - // Indicate that we want hidden files in the listing - - hidden = true; - - // Remove the option from the command argument, and update the - // request - - String arg = req.getArgument(); - int pos = arg.indexOf(" "); - if (pos > 0) - arg = arg.substring(pos + 1); - else - arg = null; - - req.updateArgument(arg); + // We only support the hidden files option + + String arg = req.getArgument(); + if ( arg.indexOf( LIST_OPTION_HIDDEN) != -1) + { + // Indicate that we want hidden files in the listing + + hidden = true; + } + + // Remove the option from the command argument, and update the + // request + + int pos = arg.indexOf(" "); + if (pos > 0) + arg = arg.substring(pos + 1); + else + arg = null; + + req.updateArgument(arg); } // Create the path for the file listing @@ -1294,7 +1375,10 @@ public class FTPSrvSession extends SrvSession implements Runnable // Open an output stream to the client - dataWrt = new OutputStreamWriter(dataSock.getOutputStream()); + if ( isUTF8Enabled()) + dataWrt = new OutputStreamWriter(dataSock.getOutputStream(), "UTF-8"); + else + dataWrt = new OutputStreamWriter(dataSock.getOutputStream()); // Check if a path has been specified to list @@ -1472,7 +1556,10 @@ public class FTPSrvSession extends SrvSession implements Runnable // Open an output stream to the client - dataWrt = new OutputStreamWriter(dataSock.getOutputStream()); + if ( isUTF8Enabled()) + dataWrt = new OutputStreamWriter(dataSock.getOutputStream(), "UTF-8"); + else + dataWrt = new OutputStreamWriter(dataSock.getOutputStream()); // Check if a path has been specified to list @@ -1593,11 +1680,177 @@ public class FTPSrvSession extends SrvSession implements Runnable } /** - * Process a quit command - * - * @param req FTPRequest - * @exception IOException - */ + * Process an options request + * + * @param req + * FTPRequest + * @exception IOException + */ + protected final void procOptions(FTPRequest req) throws IOException { + + // Check if the user is logged in + + if (isLoggedOn() == false) + { + sendFTPResponse(500, ""); + return; + } + + // Check if the parameter has been specified + + if (req.hasArgument() == false) + { + sendFTPResponse(501, "Required argument missing"); + return; + } + + // Parse the argument to get the sub-command and arguments + + StringTokenizer token = new StringTokenizer(req.getArgument(), " "); + if (token.hasMoreTokens() == false) + { + sendFTPResponse(501, "Invalid argument"); + return; + } + + // Get the sub-command + + String optsCmd = token.nextToken(); + + // UTF8 enable/disable command + + if (FeatureUTF8 && optsCmd.equalsIgnoreCase("UTF8")) + { + + // Get the next argument + + if (token.hasMoreTokens()) + { + String optsArg = token.nextToken(); + if (optsArg.equalsIgnoreCase("ON")) + { + + // Enable UTF-8 file names + + m_utf8Paths = true; + } + else if (optsArg.equalsIgnoreCase("OFF")) + { + + // Disable UTF-8 file names + + m_utf8Paths = false; + } + else + { + + // Invalid argument + + sendFTPResponse(501, "OPTS UTF8 Invalid argument"); + return; + } + + // Report the new setting back to the client + + sendFTPResponse(200, "OPTS UTF8 " + (isUTF8Enabled() ? "ON" : "OFF")); + + // DEBUG + + if (logger.isDebugEnabled() && hasDebug(DBG_FILE)) + logger.debug("UTF8 options utf8=" + (isUTF8Enabled() ? "ON" : "OFF")); + } + } + + // MLST/MLSD fact list command + + else if (FeatureMLST && optsCmd.equalsIgnoreCase("MLST")) + { + + // Check if the fact list argument is valid + + if (token.hasMoreTokens() == false) + { + + // Invalid fact list argument + + sendFTPResponse(501, "OPTS MLST Invalid argument"); + return; + } + + // Parse the supplied fact names + + int mlstFacts = 0; + StringTokenizer factTokens = new StringTokenizer(token.nextToken(), + ";"); + StringBuffer factStr = new StringBuffer(); + + while (factTokens.hasMoreTokens()) + { + // Get the current fact name and validate + + String factName = factTokens.nextToken(); + int factIdx = -1; + int idx = 0; + + while (idx < _factNames.length && factIdx == -1) + { + if (_factNames[idx].equalsIgnoreCase(factName)) + factIdx = idx; + else + idx++; + } + + // Check if the fact name is valid, ignore invalid names + + if (factIdx != -1) + { + // Add the fact name to the reply tring + + factStr.append(_factNames[factIdx]); + factStr.append(";"); + + // Add the fact to the fact bit mask + + mlstFacts += (1 << factIdx); + } + } + + // check if any valid fact names were found + + if (mlstFacts == 0) + { + sendFTPResponse(501, "OPTS MLST Invalid Argument"); + return; + } + + // Update the MLST enabled fact list for this session + + m_mlstFacts = mlstFacts; + + // Send the response + + sendFTPResponse(200, "MLST OPTS " + factStr.toString()); + + // DEBUG + + if (logger.isDebugEnabled() && hasDebug(DBG_SEARCH)) + logger.debug("MLst options facts=" + factStr.toString()); + } + else + { + // Invalid options command, or feature not enabled + + sendFTPResponse(501, "Invalid options commands"); + } + } + + /** + * Process a quit command + * + * @param req + * FTPRequest + * @exception IOException + */ protected final void procQuit(FTPRequest req) throws IOException { @@ -1616,11 +1869,12 @@ public class FTPSrvSession extends SrvSession implements Runnable } /** - * Process a type command - * - * @param req FTPRequest - * @exception IOException - */ + * Process a type command + * + * @param req + * FTPRequest + * @exception IOException + */ protected final void procType(FTPRequest req) throws IOException { @@ -1984,9 +2238,10 @@ public class FTPSrvSession extends SrvSession implements Runnable * Process a store file command * * @param req FTPRequest + * @param append boolean * @exception IOException */ - protected final void procStoreFile(FTPRequest req) throws IOException + protected final void procStoreFile(FTPRequest req, boolean append) throws IOException { // Check if the user is logged in @@ -2072,9 +2327,11 @@ public class FTPSrvSession extends SrvSession implements Runnable // Create the file open parameters - FileOpenParams params = new FileOpenParams(ftpPath.getSharePath(), - sts == FileStatus.FileExists ? FileAction.TruncateExisting : FileAction.CreateNotExist, - AccessMode.ReadWrite, 0); + int openAction = FileAction.CreateNotExist; + if ( sts == FileStatus.FileExists) + openAction = append == false ? FileAction.TruncateExisting : FileAction.OpenIfExists; + + FileOpenParams params = new FileOpenParams(ftpPath.getSharePath(), openAction, AccessMode.ReadWrite, 0); // Create a new file to receive the data @@ -2163,6 +2420,11 @@ public class FTPSrvSession extends SrvSession implements Runnable long filePos = 0; int len = is.read(buf, 0, buf.length); + // If the data is to be appended then set the starting file position to the end of the file + + if ( append == true) + filePos = netFile.getFileSize(); + while (len > 0) { @@ -2775,9 +3037,7 @@ public class FTPSrvSession extends SrvSession implements Runnable } // Check if the path is the root directory, cannot delete directories - // from the root - // directory - // as it maps to the list of available disk shares. + // from the root directory as it maps to the list of available disk shares. if (ftpPath.isRootPath() || ftpPath.isRootSharePath()) { @@ -2820,8 +3080,7 @@ public class FTPSrvSession extends SrvSession implements Runnable disk.deleteDirectory(this, tree, ftpPath.getSharePath()); - // Check if there are any file/directory change notify requests - // active + // Check if there are any file/directory change notify requests active DiskDeviceContext diskCtx = (DiskDeviceContext) tree.getContext(); if (diskCtx.hasChangeHandler()) @@ -2857,48 +3116,474 @@ public class FTPSrvSession extends SrvSession implements Runnable } /** - * Process a modify date/time command - * - * @param req FTPRequest - * @exception IOException - */ - protected final void procModifyDateTime(FTPRequest req) throws IOException - { + * Process a machine listing request, single folder + * + * @param req + * FTPRequest + * @exception IOException + */ + protected final void procMachineListing(FTPRequest req) throws IOException { - // Return a success response + // Check if the user is logged in - sendFTPResponse(550, "Not implemented yet"); - } + if (isLoggedOn() == false) { + sendFTPResponse(500, "Not logged in"); + return; + } - /** - * Process a features command - * - * @param req FTPRequest - * @exception IOException - */ - protected final void procFeatures(FTPRequest req) throws IOException - { - // Check if the user is logged in + // Check if an argument has been specified - if (isLoggedOn() == false) - { - sendFTPResponse(500, ""); - return; - } + if (req.hasArgument() == false) { + sendFTPResponse(501, "Syntax error, parameter required"); + return; + } - // Send back the list of features supported by this FTP server - - sendFTPResponse( 211, "Features"); - sendFTPResponse( "SIZE"); - sendFTPResponse( 211, "End"); - } + // Create the path to be listed + + FTPPath ftpPath = generatePathForRequest(req, false, true); + if (ftpPath == null) { + sendFTPResponse(500, "Invalid path"); + return; + } + + // Get the file information + + DiskInterface disk = null; + TreeConnection tree = null; + + try { + + // Create a temporary tree connection + + tree = getTreeConnection(ftpPath.getSharedDevice()); + + // Access the virtual filesystem driver + + disk = (DiskInterface) ftpPath.getSharedDevice().getInterface(); + + // Get the file information + + FileInfo finfo = disk.getFileInformation(this, tree, ftpPath + .getSharePath()); + + if (finfo == null) { + sendFTPResponse(550, "Path " + req.getArgument() + " not available"); + return; + } else if (finfo.isDirectory() == false) { + sendFTPResponse(501, "Path " + req.getArgument() + " is not a directory"); + return; + } + + // Return the folder details + + sendFTPResponse("250- Listing " + req.getArgument()); + + StringBuffer mlstStr = new StringBuffer(80); + mlstStr.append(" "); + + generateMlstString(finfo, m_mlstFacts, mlstStr, true); + mlstStr.append(CRLF); + + sendFTPResponse(mlstStr.toString()); + sendFTPResponse("250 End"); + + // DEBUG + + if ( logger.isDebugEnabled() && hasDebug(DBG_FILE)) + logger.debug("Mlst ftp=" + ftpPath.getFTPPath() + ", share=" + ftpPath.getShareName() + ", info=" + finfo); + } catch (Exception ex) { + sendFTPResponse(550, "Error retrieving file information"); + } + } + + /** + * Process a machine listing request, folder contents + * + * @param req + * FTPRequest + * @exception IOException + */ + protected final void procMachineListingContents(FTPRequest req) + throws IOException { + + // Check if the user is logged in + + if (isLoggedOn() == false) { + sendFTPResponse(500, ""); + return; + } + + // Check if the request has an argument, if not then use the current + // working directory + + if (req.hasArgument() == false) + req.updateArgument("."); + + // Create the path for the file listing + + FTPPath ftpPath = m_cwd; + if (req.hasArgument()) + ftpPath = generatePathForRequest(req, true); + + if (ftpPath == null) { + sendFTPResponse(500, "Invalid path"); + return; + } + + // Check if the session has the required access + + if (ftpPath.isRootPath() == false) { + + // Check if the session has access to the filesystem + + TreeConnection tree = getTreeConnection(ftpPath.getSharedDevice()); + if (tree == null || tree.hasReadAccess() == false) { + + // Session does not have access to the filesystem + + sendFTPResponse(550, "Access denied"); + return; + } + } + + // Send the intermediate response + + sendFTPResponse(150, "File status okay, about to open data connection"); + + // Check if there is an active data session + + if (m_dataSess == null) { + sendFTPResponse(425, "Can't open data connection"); + return; + } + + // Get the data connection socket + + Socket dataSock = null; + + try { + dataSock = m_dataSess.getSocket(); + } catch (Exception ex) { + logger.error(ex); + } + + if (dataSock == null) { + sendFTPResponse(426, "Connection closed; transfer aborted"); + return; + } + + // Output the directory listing to the client + + Writer dataWrt = null; + + try { + + // Open an output stream to the client + + if ( isUTF8Enabled()) + dataWrt = new OutputStreamWriter(dataSock.getOutputStream(), "UTF-8"); + else + dataWrt = new OutputStreamWriter(dataSock.getOutputStream()); + + // Get a list of file information objects for the current directory + + Vector files = null; + + files = listFilesForPath(ftpPath, false, false); + + // Output the file list to the client + + if (files != null) { + + // DEBUG + + if (logger.isDebugEnabled() && hasDebug(DBG_SEARCH)) + logger.debug("MLsd found " + files.size() + " files in " + ftpPath.getFTPPath()); + + // Output the file information to the client + + StringBuffer str = new StringBuffer(MLSD_BUFFER_SIZE); + + for (int i = 0; i < files.size(); i++) { + + // Get the current file information + + FileInfo finfo = (FileInfo) files.elementAt(i); + + generateMlstString(finfo, m_mlstFacts, str, false); + str.append(CRLF); + + // Output the file information record when the buffer is + // full + + if (str.length() >= MLSD_BUFFER_SIZE) { + + // Output the file data records + + dataWrt.write(str.toString()); + + // Reset the buffer + + str.setLength(0); + } + } + + // Flush any remaining file record data + + if (str.length() > 0) + dataWrt.write(str.toString()); + } + + // End of file list transmission + + sendFTPResponse(226, "Closing data connection"); + } catch (Exception ex) { + + // Failed to send file listing + + sendFTPResponse(451, "Error reading file list"); + } finally { + + // Close the data stream to the client + + if (dataWrt != null) + dataWrt.close(); + + // Close the data connection to the client + + if (m_dataSess != null) { + getFTPServer().releaseDataSession(m_dataSess); + m_dataSess = null; + } + } + } + + /** + * Process a modify date/time command + * + * @param req + * FTPRequest + * @exception IOException + */ + protected final void procModifyDateTime(FTPRequest req) throws IOException { + + // Check if the user is logged in + + if (isLoggedOn() == false) { + sendFTPResponse(500, ""); + return; + } + + // Check if an argument has been specified + + if (req.hasArgument() == false) { + sendFTPResponse(501, "Syntax error, parameter required"); + return; + } + + // Check the format of the argument to detemine if this is a get or set + // modify date/time request + // + // Get format is just the filename/path + // Set format is YYYYMMDDHHMMSS + + String path = req.getArgument(); + long modifyDateTime = 0L; + + if (path.length() > MDTM_DATETIME_MINLEN && path.indexOf(' ') != -1) { + + // Check if the first argument looks like a date/time value + + boolean settime = true; + for (int i = 0; i < MDTM_DATETIME_MINLEN; i++) { + if (Character.isDigit(path.charAt(i)) == false) + settime = false; + } + + // Looks like a date/time value + + if (settime == true) { + + try { + + // Parse the various fields + + int year = Integer.valueOf(path.substring(0, 4)).intValue(); + int month = Integer.valueOf(path.substring(4, 6)).intValue(); + int day = Integer.valueOf(path.substring(6, 8)).intValue(); + + int hours = Integer.valueOf(path.substring(8, 10)).intValue(); + int mins = Integer.valueOf(path.substring(10, 12)).intValue(); + int secs = Integer.valueOf(path.substring(12, 14)).intValue(); + + // Check if the date/time includes milliseconds + + int millis = 0; + int sep = path.indexOf(' ', MDTM_DATETIME_MINLEN); + + if (path.charAt(MDTM_DATETIME_MINLEN) == '.') { + + // Find the seperator between the date/time and path + + millis = Integer.valueOf(path.substring(MDTM_DATETIME_MINLEN + 1, sep)) + .intValue(); + } + + // Create the modify date/time + + Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); + + cal.set(year, month, day, hours, mins, secs); + if (millis != 0) + cal.set(Calendar.MILLISECOND, millis); + + // Get the modify date/time + + modifyDateTime = cal.getTimeInMillis(); + + // Remove the date/time from the request argument + + path = path.substring(sep + 1); + req.updateArgument(path); + + // DEBUG + + if (logger.isDebugEnabled() && hasDebug(DBG_FILE)) + logger.debug("Modify date/time arg=" + path + ", utcTime=" + modifyDateTime); + } catch (NumberFormatException ex) { + } + } + } + + // Create the path for the file listing + + FTPPath ftpPath = generatePathForRequest(req, true); + if (ftpPath == null) { + sendFTPResponse(550, "Invalid path"); + return; + } + + // Get the file information + + DiskInterface disk = null; + TreeConnection tree = null; + + try { + + // Create a temporary tree connection + + tree = getTreeConnection(ftpPath.getSharedDevice()); + + // Access the virtual filesystem driver + + disk = (DiskInterface) ftpPath.getSharedDevice().getInterface(); + + // Check if the modify date/time should be set + + if (modifyDateTime != 0L) { + + // Set the file/folder modification date/time + + FileInfo finfo = new FileInfo(); + finfo.setModifyDateTime(modifyDateTime); + finfo.setFileInformationFlags(FileInfo.SetModifyDate); + + disk.setFileInformation(this, tree, ftpPath.getSharePath(), + finfo); + } + + // Get the file information + + FileInfo finfo = disk.getFileInformation(this, tree, ftpPath + .getSharePath()); + + if (finfo == null) { + sendFTPResponse(550, "File " + req.getArgument() + + " not available"); + return; + } + + // Return the file modification date/time + + if (finfo.hasModifyDateTime()) + sendFTPResponse(213, FTPDate.packMlstDateTime(finfo + .getModifyDateTime())); + else + sendFTPResponse(550, + "Modification date/time not available for " + + finfo.getFileName()); + + // DEBUG + + if (logger.isDebugEnabled() && hasDebug(DBG_FILE)) + logger.debug("File modify date/time ftp=" + + ftpPath.getFTPPath() + ", share=" + + ftpPath.getShareName() + ", modified=" + + finfo.getModifyDateTime()); + } catch (Exception ex) { + sendFTPResponse(550, "Error retrieving file modification date/time"); + } + } + + /** + * Process a server features request + * + * @param req + * FTPRequest + * @exception IOException + */ + protected final void procFeatures(FTPRequest req) throws IOException { + + // Return the list of supported server features + + sendFTPResponse("211-Features supported"); + + // MOdify date/time and size commands supported + + if ( FeatureMDTM) + sendFTPResponse(" MDTM"); + + if ( FeatureSIZE) + sendFTPResponse(" SIZE"); + + if ( FeatureUTF8) + sendFTPResponse(" UTF8"); + + // Machine listing supported, build the fact list + + if ( FeatureMLST) + { + StringBuffer mlstStr = new StringBuffer(); + + mlstStr.append(" MLST "); + + for (int i = 0; i < _factNames.length; i++) { + + // Output the fact name + + mlstStr.append(_factNames[i]); + + // Check if the fact is enabled by default + + if ((MLST_DEFAULT & (1 << i)) != 0) + mlstStr.append("*"); + mlstStr.append(";"); + } + + sendFTPResponse(mlstStr.toString()); + sendFTPResponse(" MLSD"); + } + + sendFTPResponse(211, "END"); + } /** - * Process a file size command - * - * @param req FTPRequest - * @exception IOException - */ + * Process a file size command + * + * @param req + * FTPRequest + * @exception IOException + */ protected final void procFileSize(FTPRequest req) throws IOException { @@ -2969,6 +3654,40 @@ public class FTPSrvSession extends SrvSession implements Runnable } } + /** + * Process a site specific command + * + * @param req FTPRequest + * @exception IOException + */ + protected final void procSite(FTPRequest req) + throws IOException + { + // Check if the user is logged in + + if (isLoggedOn() == false) { + sendFTPResponse(500, ""); + return; + } + + // Check if the FTP server has a site interface + + if ( getFTPServer().hasSiteInterface()) { + + // Pass the request to the site interface + + FTPSiteInterface siteInterface = getFTPServer().getSiteInterface(); + + siteInterface.processFTPSiteCommand( this, req); + } + else { + + // SITE command not implemented + + sendFTPResponse( 501, "SITE commands not implemented"); + } + } + /** * Process a structure command. This command is obsolete. * @@ -3379,10 +4098,10 @@ public class FTPSrvSession extends SrvSession implements Runnable // Create the input/output streams - m_in = new InputStreamReader(m_sock.getInputStream()); + m_in = m_sock.getInputStream(); m_out = new OutputStreamWriter(m_sock.getOutputStream()); - m_inbuf = new char[512]; + m_inbuf = new byte[512]; m_outbuf = new StringBuffer(256); // Return the initial response @@ -3427,10 +4146,21 @@ public class FTPSrvSession extends SrvSession implements Runnable rdlen--; } - // Get the command string + // Get the command string, decode as UTF-8 if enabled - cmd = new String(m_inbuf, 0, rdlen); + if ( isUTF8Enabled()) + { + // Convert the string from UTF-8 + + cmd = sun.text.Normalizer.compose( new String(m_inbuf, 0, rdlen, "UTF-8"), false, 0); + } + else + { + // Convert the request using the configured character set + cmd = new String(m_inbuf, 0, rdlen, getFTPServer().getCharacterSet()); + } + // Debug if (logger.isDebugEnabled() && hasDebug(DBG_TIMING)) @@ -3501,9 +4231,15 @@ public class FTPSrvSession extends SrvSession implements Runnable // Store file command case FTPCommand.Stor: - procStoreFile(ftpReq); + procStoreFile(ftpReq, false); break; + // Append file command + + case FTPCommand.Appe: + procStoreFile(ftpReq, true); + break; + // Print working directory command case FTPCommand.Pwd: @@ -3635,6 +4371,30 @@ public class FTPSrvSession extends SrvSession implements Runnable procFeatures(ftpReq); break; + // Options command + + case FTPCommand.Opts: + procOptions(ftpReq); + break; + + // Machine listing, single folder + + case FTPCommand.MLst: + procMachineListing(ftpReq); + break; + + // Machine listing, folder contents + + case FTPCommand.MLsd: + procMachineListingContents(ftpReq); + break; + + // Site specific commands + + case FTPCommand.Site: + procSite( ftpReq); + break; + // Unknown/unimplemented command default: @@ -3748,4 +4508,111 @@ public class FTPSrvSession extends SrvSession implements Runnable authService.authenticate( cInfo.getUserName(), cInfo.getPasswordAsCharArray()); } } + + /** + * Generate a machine listing string for the specified file/folder information + * + * @param finfo FileInfo + * @param mlstFlags int + * @param buf StringBuffer + * @param isMlsd boolean + */ + protected final void generateMlstString(FileInfo finfo, int mlstFlags, StringBuffer buf, boolean isMlsd) + { + // Create the machine listing record + + for (int i = 0; i < _factNames.length; i++) { + + // Check if the current fact is enabled + + int curFact = 1 << i; + + if ((mlstFlags & curFact) != 0) { + + // Output the fact value + + switch (curFact) { + + // File size + + case MLST_SIZE: + buf.append(_factNames[i]); + buf.append("="); + buf.append(finfo.getSize()); + buf.append(";"); + break; + + // Modify date/time + + case MLST_MODIFY: + if (finfo.hasModifyDateTime()) { + buf.append(_factNames[i]); + buf.append("="); + buf.append(FTPDate.packMlstDateTime(finfo + .getModifyDateTime())); + buf.append(";"); + } + break; + + // Creation date/time + + case MLST_CREATE: + if (finfo.hasCreationDateTime()) { + buf.append(_factNames[i]); + buf.append("="); + buf.append(FTPDate.packMlstDateTime(finfo + .getCreationDateTime())); + buf.append(";"); + } + break; + + // Type + + case MLST_TYPE: + buf.append(_factNames[i]); + + if (finfo.isDirectory() == false) { + buf.append("=file;"); + } else { + buf.append("=dir;"); + } + break; + + // Unique identifier + + case MLST_UNIQUE: + if (finfo.getFileId() != -1) { + buf.append(_factNames[i]); + buf.append("="); + buf.append(finfo.getFileId()); + buf.append(";"); + } + break; + + // Permissions + + case MLST_PERM: + buf.append(_factNames[i]); + buf.append("="); + if (finfo.isDirectory()) { + buf.append(finfo.isReadOnly() ? "el" : "ceflmp"); + } else { + buf.append(finfo.isReadOnly() ? "r" : "rwadf"); + } + buf.append(";"); + break; + + // Media-type + + case MLST_MEDIATYPE: + break; + } + } + } + + // Add the file name + + buf.append(" "); + buf.append(finfo.getFileName()); + } } \ No newline at end of file diff --git a/source/java/org/alfresco/filesys/server/config/ServerConfiguration.java b/source/java/org/alfresco/filesys/server/config/ServerConfiguration.java index 912f24acef..e78e98cb3c 100644 --- a/source/java/org/alfresco/filesys/server/config/ServerConfiguration.java +++ b/source/java/org/alfresco/filesys/server/config/ServerConfiguration.java @@ -23,6 +23,9 @@ import java.net.NetworkInterface; import java.net.Socket; import java.net.SocketException; import java.net.UnknownHostException; +import java.nio.charset.Charset; +import java.nio.charset.IllegalCharsetNameException; +import java.nio.charset.UnsupportedCharsetException; import java.security.Provider; import java.security.Security; import java.util.ArrayList; @@ -315,6 +318,10 @@ public class ServerConfiguration extends AbstractLifecycleBean private int m_ftpDebug; + // FTP character set + + private String m_ftpCharSet; + //-------------------------------------------------------------------------------- // NFS specific configuration parameters // @@ -1660,6 +1667,29 @@ public class ServerConfiguration extends AbstractLifecycleBean setFTPDebug(ftpDbg); } + + // Check if a character set has been specified + + elem = config.getConfigElement( "charSet"); + if ( elem != null) { + + try { + + // Validate the character set name + + Charset.forName( elem.getValue()); + + // Set the FTP character set + + setFTPCharacterSet( elem.getValue()); + } + catch ( IllegalCharsetNameException ex) { + throw new AlfrescoRuntimeException("Illegal character set name, " + elem.getValue()); + } + catch ( UnsupportedCharsetException ex) { + throw new AlfrescoRuntimeException("Unsupported character set name, " + elem.getValue()); + } + } } /** @@ -3639,6 +3669,16 @@ public class ServerConfiguration extends AbstractLifecycleBean m_ftpBindAddress = addr; } + /** + * Return the FTP character set + * + * @return String + */ + public final String getFTPCharacterSet() + { + return m_ftpCharSet; + } + /** * Set the FTP server port to use for incoming connections, -1 indicates disable the FTP server * @@ -3688,6 +3728,16 @@ public class ServerConfiguration extends AbstractLifecycleBean { m_ftpDebug = dbg; } + + /** + * Set the FTP character set + * + * @param charSet String + */ + public final void setFTPCharacterSet( String charSet) + { + m_ftpCharSet = charSet; + } /** * Check if the NFS server is enabled diff --git a/source/java/org/alfresco/filesys/smb/server/repo/desk/JavaScriptDesktopAction.java b/source/java/org/alfresco/filesys/smb/server/repo/desk/JavaScriptDesktopAction.java index c3d2bc20ec..b3036e4645 100644 --- a/source/java/org/alfresco/filesys/smb/server/repo/desk/JavaScriptDesktopAction.java +++ b/source/java/org/alfresco/filesys/smb/server/repo/desk/JavaScriptDesktopAction.java @@ -69,7 +69,7 @@ public class JavaScriptDesktopAction extends DesktopAction { */ public JavaScriptDesktopAction() { - super( DesktopAction.AttrAnyFiles, DesktopAction.PreConfirmAction + DesktopAction.PreCopyToTarget); + super( 0, 0); } /** @@ -209,30 +209,31 @@ public class JavaScriptDesktopAction extends DesktopAction { { // Check if the pre-process string is empty - if ( elem.getValue().length() == 0) - throw new DesktopActionException("Empty desktop action pre-processing flags"); - - // Parse the pre-process string - int pre = 0; - StringTokenizer tokens = new StringTokenizer( elem.getValue(), ","); - while ( tokens.hasMoreTokens()) + if ( elem.getValue() != null && elem.getValue().length() > 0) { - // Get the current pre-process token and validate + // Parse the pre-process string - String token = tokens.nextToken().trim(); + StringTokenizer tokens = new StringTokenizer( elem.getValue(), ","); - if ( token.equalsIgnoreCase( "copyToTarget")) - pre |= PreCopyToTarget; - else if ( token.equalsIgnoreCase( "confirm")) - pre |= PreConfirmAction; - else if ( token.equalsIgnoreCase( "localToWorkingCopy")) - pre |= PreLocalToWorkingCopy; - else - throw new DesktopActionException("Unknown pre-processing flag, " + token); + while ( tokens.hasMoreTokens()) + { + // Get the current pre-process token and validate + + String token = tokens.nextToken().trim(); + + if ( token.equalsIgnoreCase( "copyToTarget")) + pre |= PreCopyToTarget; + else if ( token.equalsIgnoreCase( "confirm")) + pre |= PreConfirmAction; + else if ( token.equalsIgnoreCase( "localToWorkingCopy")) + pre |= PreLocalToWorkingCopy; + else + throw new DesktopActionException("Unknown pre-processing flag, " + token); + } } - + // Set the action pre-processing flags setPreProcessActions( pre); diff --git a/source/java/org/alfresco/repo/node/BaseNodeServiceTest.java b/source/java/org/alfresco/repo/node/BaseNodeServiceTest.java index 646921d296..7c616bba95 100644 --- a/source/java/org/alfresco/repo/node/BaseNodeServiceTest.java +++ b/source/java/org/alfresco/repo/node/BaseNodeServiceTest.java @@ -645,12 +645,17 @@ public abstract class BaseNodeServiceTest extends BaseSpringTest // control checks assertEquals("n6 not present", 1, countNodesByReference(n6Ref)); assertEquals("n8 not present", 1, countNodesByReference(n8Ref)); + assertTrue("n8 exists failure", nodeService.exists(n8Ref)); assertEquals("n6 primary parent association not present on n3", 1, countChildrenOfNode(n3Ref)); assertEquals("n6 secondary parent association not present on n4", 1, countChildrenOfNode(n4Ref)); assertEquals("n8 secondary parent association not present on n7", 1, countChildrenOfNode(n7Ref)); // delete n6 nodeService.deleteNode(n6Ref); + + // ensure that we can't see cascaded nodes in-transaction + assertFalse("n8 not cascade deleted in-transaction", nodeService.exists(n8Ref)); + // commit to check setComplete(); endTransaction(); diff --git a/source/java/org/alfresco/repo/template/NodeSearchResultsMap.java b/source/java/org/alfresco/repo/template/NodeSearchResultsMap.java index 2ae5213683..30b642f7e7 100644 --- a/source/java/org/alfresco/repo/template/NodeSearchResultsMap.java +++ b/source/java/org/alfresco/repo/template/NodeSearchResultsMap.java @@ -48,7 +48,7 @@ public class NodeSearchResultsMap extends BaseSearchResultsMap if (key != null) { String ref = key.toString().replace(":", "\\:"); - ref = ref.replace("/", "\\/"); + ref = "ID:" + ref.replace("/", "\\/"); List results = query(ref); diff --git a/source/java/org/alfresco/repo/version/common/counter/VersionCounterServiceTest.java b/source/java/org/alfresco/repo/version/common/counter/VersionCounterServiceTest.java index a9c34e9d63..7cd3dca989 100644 --- a/source/java/org/alfresco/repo/version/common/counter/VersionCounterServiceTest.java +++ b/source/java/org/alfresco/repo/version/common/counter/VersionCounterServiceTest.java @@ -112,6 +112,7 @@ public class VersionCounterServiceTest extends TestCase public void testConcurrentVersionNumber() throws Throwable { + counter.currentVersionNumber(storeRef1); VersionCounterThread[] threads = new VersionCounterThread[threadCount]; for (int i = 0; i < threadCount; i++) {