Exemplo n.º 1
0
 /// <summary>
 /// Constructor to create a new ftp item.
 /// </summary>
 /// <param name="name">Name of the item.</param>
 /// <param name="modified">Modified date and/or time of the item.</param>
 /// <param name="size">Number of bytes or size of the item.</param>
 /// <param name="itemType">Type of the item.</param>
 /// <param name="attributes">UNIX style attributes value.</param>
 /// <param name="mode">UNIX style mode value</param>
 /// <param name="rawText">The raw text of the item.</param>
 /// <param name="created">Created date.</param>
 /// <param name="uniqueId">Unique identifier.</param>
 /// <param name="permissions">File action permissions.</param>
 /// <param name="language">File language.</param>
 /// <param name="mediaType">MIME file type.</param>
 /// <param name="characterSet">Character set of the file.</param>
 /// <param name="group">UNIX style group value.</param>
 /// <param name="owner">UNIX style owner value.</param>
 public FtpsMlsxItem(string name,
                     DateTime?modified,
                     long size,
                     FtpItemType itemType,
                     string attributes,
                     Int32?mode,
                     string rawText,
                     DateTime?created,
                     string uniqueId,
                     MlsxPerm permissions,
                     string language,
                     string mediaType,
                     string characterSet,
                     string group,
                     string owner
                     ) : base(name, modified, size, itemType, attributes, mode, String.Empty, rawText)
 {
     _created      = created;
     _uniqueId     = uniqueId;
     _permissions  = permissions;
     _language     = language;
     _mediaType    = mediaType;
     _characterSet = characterSet;
     _group        = group;
     _owner        = owner;
 }
Exemplo n.º 2
0
        private MlsxPerm ParsePerm(string v)
        {
            if (String.IsNullOrEmpty(v))
            {
                return(MlsxPerm.None);
            }

            char[] pary;

            v = v.ToLower();

            // Wing FTP Server returns POSIX-style permissions. So just pull out the user read and write permissions and parse those.
            if (v.Length == 10 && (v.Contains("-") || v == "drwxrwxrwx"))
            {
                pary = new[] { v[1], v[2] };
            }
            else
            {
                pary = v.ToCharArray();
            }

            MlsxPerm pem = MlsxPerm.None;

            foreach (char pchar in pary)
            {
                switch (pchar)
                {
                case PERM_CAN_APPENDED_FILE:
                    pem = pem | MlsxPerm.CanAppendFile;
                    break;

                case PERM_CAN_CHANGE_DIRECTORY:
                    pem = pem | MlsxPerm.CanChangeDirectory;
                    break;

                case PERM_CAN_CREATE_DIRECTORY:
                    pem = pem | MlsxPerm.CanCreateDirectory;
                    break;

                case PERM_CAN_CREATE_FILE:
                    pem = pem | MlsxPerm.CanCreateFile;
                    break;

                case PERM_CAN_DELETE_DIRECTORY:
                    pem = pem | MlsxPerm.CanDeleteDirectory;
                    break;

                case PERM_CAN_DELETE_FILE:
                    pem = pem | MlsxPerm.CanDeleteFile;
                    break;

                case PERM_CAN_LIST_FILES:
                    pem = pem | MlsxPerm.CanListFiles;
                    break;

                case PERM_CAN_RENAME:
                    pem = pem | MlsxPerm.CanRename;
                    break;

                case PERM_CAN_RETRIEVE_FILE:
                    pem = pem | MlsxPerm.CanRetrieveFile;
                    break;

                case PERM_CAN_STORE_FILE:
                    pem = pem | MlsxPerm.CanStoreFile;
                    break;

                case PERM_NOT_SET:
                    break;

                default:
                    throw new FtpsItemParsingException(String.Format("unknown MLSx 'perm' value '{0}' encountered", pchar));
                }
            }

            return(pem);
        }
Exemplo n.º 3
0
        private void ParseField(string field)
        {
            if (String.IsNullOrEmpty(field))
            {
                throw new FtpsItemParsingException("field cannot be a null or empty value");
            }

            if (field.IndexOf('=') == -1)
            {
                throw new FtpsItemParsingException("field must contain equals '=' value");
            }

            // split the field fact
            string[] fact = field.Split('=');

            if (fact.Length != 2)
            {
                throw new FtpsItemParsingException("field must contain equals '=' value with only a name and value");
            }

            string name  = fact[0].Trim().ToLower();
            string value = fact[1].Trim();

            if (name.Length == 0)
            {
                throw new FtpsItemParsingException("field fact name cannot be empty");
            }

            switch (name)
            {
            case FACT_CHAR_SET:
                _charSet = value;
                break;

            case FACT_CREATE:
                _create = ParseDateTime(value);
                break;

            case FACT_LANG:
                _lang = value;
                break;

            case FACT_MEDIA_TYPE:
                _mediaType = value;
                break;

            case FACT_MODIFY:
                _modified = ParseDateTime(value);
                break;

            case FACT_PERM:
                _perm = ParsePerm(value);
                break;

            case FACT_SIZE:
                _size = ParseSize(value);
                break;

            case FACT_TYPE:
                _itemType = ParseType(value);
                break;

            case FACT_UNIQUE:
                _unique = value;
                break;

            case FACT_EXT_UNIX_GROUP:
                _unixGroup = value;
                break;

            case FACT_EXT_UNIX_MODE:
                _unixMode = ParseInt32(value);
                if (_unixMode != null)
                {
                    _attributes = FtpsUtilities.ModeToAttribute(_unixMode.Value);
                }
                break;

            case FACT_EXT_UNIX_OWNER:
                _unixOwner = value;
                break;

            default:
                break;
            }
        }
Exemplo n.º 4
0
 /// <summary>
 /// Constructor to create a new ftp item.
 /// </summary>
 /// <param name="name">Name of the item.</param>
 /// <param name="modified">Modified date and/or time of the item.</param>
 /// <param name="size">Number of bytes or size of the item.</param>
 /// <param name="itemType">Type of the item.</param>
 /// <param name="attributes">UNIX style attributes value.</param>
 /// <param name="mode">UNIX style mode value</param>
 /// <param name="rawText">The raw text of the item.</param>
 /// <param name="created">Created date.</param>
 /// <param name="uniqueId">Unique identifier.</param>
 /// <param name="permissions">File action permissions.</param>
 /// <param name="language">File language.</param>
 /// <param name="mediaType">MIME file type.</param>
 /// <param name="characterSet">Character set of the file.</param>
 /// <param name="group">UNIX style group value.</param>
 /// <param name="owner">UNIX style owner value.</param>
 public FtpsMlsxItem(string name, 
                DateTime? modified, 
                long size, 
                FtpItemType itemType, 
                string attributes, 
                Int32? mode,
                string rawText,
                DateTime? created,
                string uniqueId,
                MlsxPerm permissions,
                string language,
                string mediaType,
                string characterSet,
                Int32? group,
                Int32? owner
              ) : base(name, modified, size, itemType, attributes, mode, String.Empty, rawText)
 {
     _created = created;
     _uniqueId = uniqueId;
     _permissions = permissions;
     _language = language;
     _mediaType = mediaType;
     _characterSet = characterSet;
     _group = group;
     _owner = owner;
 }
Exemplo n.º 5
0
        private MlsxPerm ParsePerm(string v)
        {
            if (String.IsNullOrEmpty(v))
            {
                return(MlsxPerm.None);
            }

            char[] pary = v.ToLower().ToCharArray();

            MlsxPerm pem = MlsxPerm.None;

            foreach (char pchar in pary)
            {
                switch (pchar)
                {
                case PERM_CAN_APPENDED_FILE:
                    pem = pem | MlsxPerm.CanAppendFile;
                    break;

                case PERM_CAN_CHANGE_DIRECTORY:
                    pem = pem | MlsxPerm.CanChangeDirectory;
                    break;

                case PERM_CAN_CREATE_DIRECTORY:
                    pem = pem | MlsxPerm.CanCreateDirectory;
                    break;

                case PERM_CAN_CREATE_FILE:
                    pem = pem | MlsxPerm.CanCreateFile;
                    break;

                case PERM_CAN_DELETE_DIRECTORY:
                    pem = pem | MlsxPerm.CanDeleteDirectory;
                    break;

                case PERM_CAN_DELETE_FILE:
                    pem = pem | MlsxPerm.CanDeleteFile;
                    break;

                case PERM_CAN_LIST_FILES:
                    pem = pem | MlsxPerm.CanListFiles;
                    break;

                case PERM_CAN_RENAME:
                    pem = pem | MlsxPerm.CanRename;
                    break;

                case PERM_CAN_RETRIEVE_FILE:
                    pem = pem | MlsxPerm.CanRetrieveFile;
                    break;

                case PERM_CAN_STORE_FILE:
                    pem = pem | MlsxPerm.CanStoreFile;
                    break;

                default:
                    throw new FtpsItemParsingException(String.Format("unknown MLSx 'perm' value '{0}' encountered", pchar));
                }
            }

            return(pem);
        }
        private void ParseField(string field)
        {
            if (String.IsNullOrEmpty(field))
                throw new FtpsItemParsingException("field cannot be a null or empty value");

            if (field.IndexOf('=') == -1)
                throw new FtpsItemParsingException("field must contain equals '=' value");

            // split the field fact
            string[] fact = field.Split('=');

            if (fact.Length != 2)
                throw new FtpsItemParsingException("field must contain equals '=' value with only a name and value");

            string name = fact[0].Trim().ToLower();
            string value = fact[1].Trim();

            if (name.Length == 0)
                throw new FtpsItemParsingException("field fact name cannot be empty");

            switch (name)
            {
                case FACT_CHAR_SET:
                    _charSet = value;
                    break;
                case FACT_CREATE:
                    _create = ParseDateTime(value);
                    break;
                case FACT_LANG:
                    _lang = value;
                    break;
                case FACT_MEDIA_TYPE:
                    _mediaType = value;
                    break;
                case FACT_MODIFY:
                    _modified = ParseDateTime(value);
                    break;
                case FACT_PERM:
                    _perm = ParsePerm(value);
                    break;
                case FACT_SIZE:
                    _size = ParseSize(value);
                    break;
                case FACT_TYPE:
                    _itemType = ParseType(value);
                    break;
                case FACT_UNIQUE:
                    _unique = value;
                    break;
                case FACT_EXT_UNIX_GROUP:
                    _unixGroup = ParseInt32(value);
                    break;
                case FACT_EXT_UNIX_MODE:
                    _unixMode = ParseInt32(value);
                    if (_unixMode != null)
                        _attributes = FtpsUtilities.ModeToAttribute(_unixMode.Value);
                    break;
                case FACT_EXT_UNIX_OWNER:
                    _unixOwner = ParseInt32(value);
                    break;
                default:
                    break;
            }
        }