Secure Downloads 

Extension key

secure_downloads

Classification

Frontend

Version

5.0

Language

en

Copyright

since 2006 by the authors

Author

Leuchtfeuer Digital Marketing

Email

dev@Leuchtfeuer.com

License

This extension documentation is published under the CC BY-NC-SA 4.0 (Creative Commons) license.

TYPO3

The content of this document is related to TYPO3, a GNU/GPL CMS/Framework available from www.typo3.org.

Community documentation:

This document is not official TYPO3 documentation.

It is maintained as part of a third party extension.

If you find an error or something is missing, please: Report a problem

Extension Manual

This documentation is for the TYPO3 extension secure_downloads.

For Contributors

You are welcome to help improve this guide. Just click on "Edit me on GitHub" on the top right to submit your change request.

Sitemap

For Administrators 

This chapter describes how to install and how to configure this extension within the settings module of your TYPO3 instance.

Installation 

There are several ways to require and install this extension. We recommend getting this extension via composer.

Via Composer 

If your TYPO3 instance is running in composer mode, you can simply require the extension by running:

composer req leuchtfeuer/secure-downloads:>=5.0
Copied!

Via Extension Manager 

Open the extension manager module of your TYPO3 instance and select "Get Extensions" in the select menu above the upload button. There you can search for secure_downlaods and simply install the extension. Please make sure you are using the latest version of the extension by updating the extension list before installing the Secure Downloads extension.

Via ZIP File 

You need to download the Secure Downloads extension from the TYPO3 Extension Repository and upload the ZIP file to the extension manager of your TYPO3 instance and activate the extension afterwards. You can also download an archive from GitHub and put its content directly into the typo3conf/ext directory of your TYPO3 instance. But please keep in mind, that the name of the folder must be secure_downloads (the repository name will be default).

Best Practices 

You can configure this extension to fit your specific needs. However, here are some "best practices" that may help you when first using Secure Downloads:

  • Install this extension as described above
  • Enable the create file storage option
  • Put your files into that storage

If you need to secure files outside of that directory, you still can adapt the securedDirs and securedFiletypes options.

The "Secure Downloads" file storage in the file list module

All files of the newly create "Secure Downloads" file storage are protected by default.

Access Configuration 

You need to secure all the directories and file types by your server configuration. This can be done with .htaccess files. You find some example .htaccess files below and in the Resources/Private/Examples directory of this extension.

Example Configuration 

Please make sure to adapt the file match pattern as configured in securedFiletypes.

.htaccess deny 

# Apache 2.4
<IfModule mod_authz_core.c>
<FilesMatch ".([pP][dD][fF]|[jJ][pP][eE]?[gG]|[gG][iI][fF]|[pP][nN][gG]|[oO][dD][tT]|[pP][pP][tT][xX]?|[dD][oO][cC][xX]?|[xX][lL][sS][xX]?|[zZ][iI][pP]|[rR][aA][rR]|[tT][gG][zZ]|[tT][aA][rR]|[gG][zZ])$">
Require all denied

</FilesMatch>

</IfModule>

# Apache 2.2 <IfModule !mod_authz_core.c> <FilesMatch ".([pP][dD][fF]|[jJ][pP][eE]?[gG]|[gG][iI][fF]|[pP][nN][gG]|[oO][dD][tT]|[pP][pP][tT][xX]?|[dD][oO][cC][xX]?|[xX][lL][sS][xX]?|[zZ][iI][pP]|[rR][aA][rR]|[tT][gG][zZ]|[tT][aA][rR]|[gG][zZ])$"> Order Allow,Deny Deny from all </FilesMatch> </IfModule>

.htaccess allow 

# Apache 2.4
<IfModule mod_authz_core.c>
<FilesMatch ".([pP][dD][fF]|[jJ][pP][eE]?[gG]|[gG][iI][fF]|[pP][nN][gG]|[oO][dD][tT]|[pP][pP][tT][xX]?|[dD][oO][cC][xX]?|[xX][lL][sS][xX]?|[zZ][iI][pP]|[rR][aA][rR]|[tT][gG][zZ]|[tT][aA][rR]|[gG][zZ])$">
Require all granted

</FilesMatch>

</IfModule>

# Apache 2.2 <IfModule !mod_authz_core.c> <FilesMatch ".([pP][dD][fF]|[jJ][pP][eE]?[gG]|[gG][iI][fF]|[pP][nN][gG]|[oO][dD][tT]|[pP][pP][tT][xX]?|[dD][oO][cC][xX]?|[xX][lL][sS][xX]?|[zZ][iI][pP]|[rR][aA][rR]|[tT][gG][zZ]|[tT][aA][rR]|[gG][zZ])$"> Order Deny,Allow Allow from all </FilesMatch> </IfModule>

Extension Configuration 

All configuration is made in the "Extension Configuration" section of the "Settings" module beneath the "Admin Tools".

Extension Configuration

The extension configuration can be found in the admin tools.

Properties 

Property Tab Type
checkAccess Parsing user
checkDirs Parsing user
createFileStorage Parsing boolean
securedDirs Parsing string
securedFiletypes Parsing string
linkPrefix Link Generation string
tokenPrefix Link Generation string
cachetimeadd Link Generation positive integer
documentRootPath Link Generation string
enableGroupCheck Group Check boolean
groupCheckDirs Group Check string
excludeGroups Group Check string
strictGroupCheck Group Check boolean
outputFunction File Delivery options
protectedPath File Delivery string
forcedownload File Delivery boolean
forcedownloadtype File Delivery string
allowPublicAccess File Delivery boolean
log Module boolean
skipCheckConfiguration Backend boolean

checkAccess 

Property
checkAccess
Data type
user
Default
0
Description
Used internally for rendering the "Check Direct File Access" section in the extension's configuration module. The configured value has no impact.

checkDirs 

Property
checkDirs
Data type
user
Default
0
Description
Used internally for rendering the "Checks directories matching the pattern" section in the extension's configuration module. The configured value has no impact.

createFileStorage 

Property
createFileStorage
Data type
boolean
Default
false
Description
If enabled, a secure downloads file storage is created and automatically added to your system. Also, an .htaccess file will be put into that directory. If you are using an nginx web server, you have to deny the access to this path manually. Please note, that this configuration will be set to true by default in upcoming versions.

securedDirs 

Property
securedDirs
Data type
string
Default
typo3temp|fileadmin
Description
List of directories of your TYPO3 Server in that files should be secured, separated by pipe (|). Files in subdirectories will also be secured. You can use regular expressions for this option.

securedFiletypes 

Property
securedFiletypes
Data type
string
Default
pdf|jpe?g|gif|png|odt|pptx?|docx?|xlsx?|zip|rar|tgz|tar|gz
Description
List of file types (file extensions) that should be protected. Multiple file extension patterns can be separated by a pipe (|). You can use an asterisk (*) if you want to protect all files within configured directories. You can use regular expressions for this option.

linkPrefix 

Property
linkPrefix
Data type
string
Default
securedl
Description
Prefix for generated links (the "securedl" part in "https://example.com/securedl/sdl-[JWT]/image.png").

tokenPrefix 

Property
linkPrefix
Data type
string
Default
sdl-
Description
Prefix for generated token (the "sdl-" part in "https://example.com/securedl/sdl-[JWT]/image.png").

cachetimeadd 

Property
cachetimeadd
Data type
positive integer
Default
3600
Description
The secure link is only valid for a limited time, which is calculated from the cache time that is used for the page that carries the link plus this value (in seconds).

documentRootPath 

Property
documentRootPath
Data type
string
Default
/
Description
Do only change this configuration option, if your TYPO3 instance is running in a subfolder or you are using a SSL reverse proxy to map TYPO3 into a virtual subfolder. This configuration must start and end with a slash (e.g. "/proxy-typo3/").

enableGroupCheck 

Property
enableGroupCheck
Data type
boolean
Default
false
Description
Allows forwarding a secure download link to others, who can access that file if they have at least one front-end user group in common. Enabling this makes the checks less restrictive!

groupCheckDirs 

Property
groupCheckDirs
Data type
string
Default
unset
Description
A list of directories for the less restrictive group check, separated by a pipe (|). Leave empty if you want to enable the group check for all directories. You can use regular expressions for this option.

excludeGroups 

Property
excludeGroups
Data type
string
Default
-1,0
Description
A comma separated list of groups that are excluded from the group check feature (if enabled).

strictGroupCheck 

Property
strictGroupCheck
Data type
boolean
Default
false
Description
If enabled, files are only delivered if the user groups exactly match those of the secured link.

outputFunction 

Property
outputFunction
Data type
options
Default
stream
Description
Files are delivered as a file stream to the browser. For nginx web servers, there is the possibility to deliver the file directly from the server by setting this property to "x-accel-redirect".

protectedPath 

Property
protectedPath
Data type
string
Default
unset
Description
Only applicable if you use x-accel-redirect (see: outputFunction_). Specify the protected path used in your nginx location directive. A matching nginx location directive needs to be added.
Example
location /internal {
    internal;
    alias /path/to/your/protected/storage;
}
Copied!

forcedownload 

Property
forcedownload
Data type
boolean
Default
false
Description
If this is checked some file types are forced to be downloaded (see: forcedownloadtype_) in contrast of being embedded in the browser window.

forcedownloadtype 

Property
forcedownloadtype
Data type
string
Default
odt|pptx?|docx?|xlsx?|zip|rar|tgz|tar|gz
Description
A list of file types that should not be opened inline in a browser, separated by a pipe. Only used if "forcedownload" (see: forcedownload_) is enabled. You can use an asterisk (*) if you want to force download for all file types. You can use regular expressions for this option.

allowPublicAccess 

Property
allowPublicAccess
Data type
boolean
Default
true
Description
If this option is activated, valid links are generated for users who are not logged in. If this option is deactivated, unregistered users (user ID = 0) will not be able to access secured files.

log 

Property
log
Data type
boolean
Default
false
Description
Each file access will be logged to database, this could be a performance issue, if you have a high traffic site. If you decide to turn it on, a backend module will be activated to see the traffic caused by user/ file

skipCheckConfiguration 

Property
skipCheckConfiguration
Data type
boolean
Default
false
Description
Skip checking the secured files and directories in the extension's configuration module. The sections "Check Direct File Access" and "Checks directories matching the pattern" will not be rendered. This option may be useful if you have many or large secured directories.

Regular Expressions 

The configuration values of securedDirs, securedFiletypes, forcedownloadtype and groupCheckDirs allow regular expressions. All expressions will be handled case insensitive.

Examples 

The following are a few examples of the securedDirs configuration option:

For example, if you need to secure the fileadmin and the typo3temp directory, but not an uploads directory, you can simply write:

fileadmin|typo3temp
Copied!

To secure files underneath of fileadmin/secure or typo3temp, you need to write:

fileadmin/secure|typo3temp
Copied!

You also can group some elements with regular expression, but you should be careful with grouping, because complex regular expressions in the extension does not work if some other matches occur by the expression.

For grouping ( ) is used, but in our case you need to exclude the result of this ( ). This can be done with (?: )

For example, we want to secure files underneath fileadmin/secure1, fileadmin/secure2, fileadmin/secure3 and typo3temp:

fileadmin/secure(?:1|2|3)|typo3temp
Copied!

You can achive the same result be using square brackets [ ], but keep in mind that all characters between the brackets are allowed here:

fileadmin/secure[123]|typo3temp
Copied!

If you need to exclude some subdirectories within a secured directory, you can use the Elvis Operator (?! ):

(?!fileadmin/unsecured)fileadmin
Copied!

Last but not least, you can store all your protected files within different subdirectories having the same name. In this example we use "secure" as directory name:

fileadmin/(.*)/secure
Copied!

This will secure files within fileadmin/foo/secure and also within fileadmin/bar/secure.

For Editors 

This extension comes with a backend module showing the access log to secured files. The module has to be enabled by setting the log to true.

Backend Module 

With the backend module you can show the summarized download traffic by a given time frame for all users or by a specific frontend user. You can get an overview of all downloaded files or of downloaded files per page only.

The module must be enabled in the extension configuration.

Example view of the backend module.

Example view of the backend module.

Identify protected files 

You can easily identify protected files in the file list, because all protected files and directories are marked with a dedicated icon:

Identify protected files within the "Filelist" module.

Identify protected files within the "Filelist" module.

For Developers 

Version 5 of this extension comes up with a lot of "microservices" that allows you to add your own security checks and to generate your own tokens. Older and deprecated Hooks are now available as PSR-14 Event where you can listen to. In addition, a powerful API allows you to generate secured links in your own extension.

Events 

This extension comes up with two different categories of PSR-14 Events you can listen to. The first category deals with the generation of token and payload, the second one with the retrieval of assets.

File Retrieving 

These events are executed in the FileDelivery class.

Output Initialization 

This event is executed after the JSON Web Token has been decoded and before the access checks take place. The name of the event is Leuchtfeuer\SecureDownloads\Resource\Event\OutputInitializationEvent.

Property
token
Data Type
AbstractToken
Description
This property contains the decoded token object. You can manipulate the properties. The edited token is then used in the further process.

After File Retrieved 

This event is executed after the access checks has been performed and both the file and the file name have been read from the token. Afterwards, the check is made whether the file is available on the file system. The name of the event is Leuchtfeuer\SecureDownloads\Resource\Event\AfterFileRetrievedEvent.

Property
file
Data Type
string
Description
Contains the absolute path to the file on the file system. You can change this property.
Property
fileName
Data Type
string
Description
Contains the name of the file. You can change this so that another file name is used when downloading this file.

Before Read Deliver 

This event is executed just before the file is sent to the browser. It is the last chance to influence both the output function and the headers sent. The name of the event is Leuchtfeuer\SecureDownloads\Resource\Event\BeforeReadDeliverEvent.

Property
outputFunction (deprecated)
Data Type
string
Description
Contains the output function as string. This property is deprecated and will be removed in further releases since the output function can only be one of x-accel-redirect or stream.
Property
header
Data Type
array
Description
An array of header which will be sent to the browser. You can add your own headers or remove default ones.
Property
fileName
Data Type
string
Description
The name of the file. This property is read-only.
Property
mimeType
Data Type
string
Description
The mime type of the file. This property is read-only.
Property
forceDownload
Data Type
boolean
Description
Information whether the file should be forced to download or not. This property is read-only.

Token 

You can simply add your own token or override existing ones and change their priorities. Your token has to extend the AbstractToken class.

Register Token 

You can add following method call to your ext_localconf.php file:

\Leuchtfeuer\SecureDownloads\Registry\TokenRegistry::register(
    'tx_securedownloads_default',
    \Leuchtfeuer\SecureDownloads\Domain\Transfer\Token\DefaultToken::class,
    0,
    false
);
Copied!

Instead of tx_securedownloads_default you can use your own unique identifier. The second argument of that method contains the class of your token. The third one mirrors the priority of your token and you can override existing tokens when you set the fourth argument of this method to true.

Example 

An example of how to register your own token can be found in the example extension. This example token uses an RSA key pair to sign the token.

Register the Token 

ext_localconf.php

\Leuchtfeuer\SecureDownloads\Registry\TokenRegistry::register(
    'tx_evenmoresecuredownloads_rsa',
    \Flossels\EvenMoreSecureDownloads\Domain\Transfer\Token\RsaToken::class,
    50,
    false
);
Copied!

The Token 

Classes/Domain/Transfer/Token/RsaToken.php

class RsaToken extends AbstractToken
{
    const PRIVATE_KEY_FILE = 'EXT:secure_downloads_example/Resources/Private/Keys/private.key';

    const PUBLIC_KEY_FILE = 'EXT:secure_downloads_example/Resources/Private/Keys/public.key';

    const CLAIMS = ['user', 'groups', 'file', 'page'];

    protected $extensionConfiguration;

    public function __construct()
    {
        parent::__construct();

        $this->extensionConfiguration = GeneralUtility::makeInstance(ExtensionConfiguration::class);
    }

    public function encode(?array $payload = null): string
    {
        $builder = new Builder();
        $builder->issuedBy($this->getIssuer());
        $builder->permittedFor($this->getPermittedFor());
        $builder->issuedAt($this->getIat());
        $builder->canOnlyBeUsedAfter($this->getIat());
        $builder->expiresAt($this->getExp());

        foreach (self::CLAIMS as $claim) {
            $getter = 'get' . ucfirst($claim);
            $builder->withClaim($claim, $this->$getter());
        }

        $signer = new Sha256();
        $key = new Key('file://' . GeneralUtility::getFileAbsFileName(self::PRIVATE_KEY_FILE));
        (new ClaimRepository())->addClaim($this);

        return (string)$builder->getToken($signer, $key);
    }

    public function getHash(): string
    {
        return md5(parent::getHash() . $this->getExp());
    }

    public function log(array $parameters = []): void
    {
        // TODO: Implement log() method.
    }

    public function decode(string $jsonWebToken): void
    {
        if (empty($jsonWebToken)) {
            throw new \Exception('Token is empty.', 1588852881);
        }

        $parsedToken = (new Parser())->parse($jsonWebToken);

        if (!$parsedToken->validate($this->getValidationData())) {
            throw new \Exception('Could not validate data.', 1588852940);
        }

        $signer = new Sha256();
        $key = new Key('file://' . GeneralUtility::getFileAbsFileName(self::PUBLIC_KEY_FILE));

        if (!$parsedToken->verify($signer, $key)) {
            throw new \Exception('Could not verify data.', 1588852970);
        }

        foreach ($parsedToken->getClaims() ?? [] as $claim) {
            /** @var $value Claim */
            if (property_exists(__CLASS__, $claim->getName())) {
                $property = $claim->getName();
                $this->$property = $claim->getValue();
            }
        }
    }

    protected function getIssuer(): string
    {
        $environmentService = GeneralUtility::makeInstance(EnvironmentService::class);

        if ($environmentService->isEnvironmentInFrontendMode()) {
            try {
                $pageId = (int)$GLOBALS['TSFE']->id;
                $base = GeneralUtility::makeInstance(SiteFinder::class)->getSiteByPageId($pageId)->getBase();

                if ($base->getScheme() !== null) {
                    $issuer = sprintf('%s://%s', $base->getScheme(), $base->getHost());
                } else {
                    // Base of site configuration might be "/" so we have to retrieve the domain from the ENV
                    $issuer = GeneralUtility::getIndpEnv('TYPO3_REQUEST_HOST');
                }
            } catch (SiteNotFoundException $exception) {
                $issuer = GeneralUtility::getIndpEnv('TYPO3_REQUEST_HOST');
            }
        } elseif ($environmentService->isEnvironmentInBackendMode()) {
            $issuer = GeneralUtility::getIndpEnv('TYPO3_REQUEST_HOST');
        }

        return $issuer ?? '';
    }

    protected function getPermittedFor(): string
    {
        return $this->extensionConfiguration->getDocumentRootPath() . $this->extensionConfiguration->getLinkPrefix();
    }

    protected function getValidationData(): ValidationData
    {
        $validationData = new ValidationData();
        $validationData->setIssuer($this->getIssuer());
        $validationData->setAudience($this->getPermittedFor());

        return $validationData;
    }
}
Copied!

Security Checks 

You can simply add your own security check or override existing ones and change their priorities. Your check has to extend the AbstractCheck class.

Register Security Check 

You can add following method call to your ext_localconf.php file:

\Leuchtfeuer\SecureDownloads\Registry\CheckRegistry::register(
    'tx_securedownloads_group',
    \Leuchtfeuer\SecureDownloads\Security\UserGroupCheck::class,
    10,
    true
);
Copied!

Instead of tx_securedownloads_group you can use your own unique identifier. The second argument of that method contains the class of your check. The third one mirrors the priority of your check and you can override existing checks when you set the fourth argument of that method to true.

Example 

An example of how to register your own security check can be found in the example extension. This example check allows only a single access to a file. On the second call, the link is identified as invalid and the server returns a 403 status code.

Register the Check 

ext_localconf.php

\Leuchtfeuer\SecureDownloads\Registry\CheckRegistry::register(
    'tx_evenmoresecuredownloads_once',
    \Flossels\EvenMoreSecureDownloads\Security\OneTimeCheck::class,
    50,
    true
);
Copied!

The Security Check 

Classes/Security/OneTimeCheck.php

class OneTimeCheck extends AbstractCheck
{
    /**
     * @var RsaToken
     */
    protected $token;

    public function hasAccess(): bool
    {
        $claimRepository = new ClaimRepository();

        if (!$claimRepository->isClaimed($this->token)) {
            $claimRepository->setClaimed($this->token);

            return true;
        }

        return false;
    }
}
Copied!

About 

In TYPO3, assets like PDFs, TGZs or JPGs etc. are normally just referenced by a URL e.g. to fileadmin/.... The file itself is delivered directly by the web server, and is therefore not part of the TYPO3 access control scheme – files remain unprotected, since URLs can be re-used, emailed, Search engine included or even guessed.

The "Secure Downloads" extension (EXT:secure_downloads) changes this behavior: Files will now be accessed through a script that honors TYPO3 access rights. The converted URL's will then look like this:

/seduredl/sdl-eyJ0eXAiOiJKV1QiLCJhbGciO[...]vcM5rWxIulg5tQ/protected_image.jpg
Copied!

This works regardless of where the files come from and is not limited to special plugins, etc.

Since in most cases you will not want to protect everything (which means that everything undergoes rather performance-consuming access right checking), Secure Downloads is highly configurable. You may choose:

  • what directories to protect (e.g. you can include typo3temp or not)
  • what file types to protect (do you want to protect JPGs or not? etc.)

As a complementary measure, you will of course need to configure your web server not to deliver these things directly (e.g. using .htaccess settings).

Compatibility 

We are currently supporting following TYPO3 versions:<br><br>

Extension Version TYPO3 v11 Support TYPO3 v10 Support TYPO3 v9 Support
5.x Yes Yes️ No
4.x No Yes Yes

Version 5 is an upcoming release. Its package name has been changed to leuchtfeuer/secure-downloads.

Outdated Versions 

For the following versions no more free bug fixes and new features will be provided by the authors:

Extension Version TYPO3 v9 TYPO3 v8 TYPO3 v7 TYPO3 v6.2 TYPO3 v4.5
3.x Yes Yes️ No️ No️ No️️
2.0.4 - 2.x No️ Yes️ Yes️ No️ No️
2.0.0 - 2.0.3 No️️ No️️ Yes Yes️ No️
1.x No️ No️ No️ Yes Yes

Version 1 was released as EXT:naw_securedl or typo3-ter/naw-securedl.

Known Limitations 

  • Files inside Direct Mail newsletters do not work correctly with this extension 🥺

Changelog 

This chapter provides an overview of changes. Take a deeper look on a version listed below, to see which bugs have been fixed, which new features have been introduced, and what you should not use anymore.

List of versions 

Version 5.0.7 - 2025/10/29 

Maintenance release

Download 

Download this version from the TYPO3 extension repository or from GitHub.

Added 

Changed 

  • Fix typo in documentation

Deprecated 

Removed 

All Changes 

This is a list of all changes in this release:

2025-10-21 [DOCS] Fix incorrect URL encoding function in example [TER-330] (#248) (Commit 148943a by Oliver Heins)

Contributors 

Following people have contributed to this release:

  • Oliver Heins

Thank you very much for your support. The next drink is on us! 🍻

Version 5.0.6 - 2024/09/23 

Bugfix and maintenance release

Download 

Download this version from the TYPO3 extension repository or from GitHub.

Added 

Changed 

  • Stop misuse of TYPO3's fileExtensionToMimeType list

Deprecated 

Removed 

All Changes 

This is a list of all changes in this release:

2024-09-23 [BUGFIX] Remove PHP 8.x style return type declaration (fixes #212) (Commit 372a9fe by Oliver Heins)

Contributors 

Following people have contributed to this release:

  • Oliver Heins

Thank you very much for your support. The next drink is on us! 🍻

Version 5.0.5 - 2024/09/17 

Bugfix and maintenance release

Download 

Download this version from the TYPO3 extension repository or from GitHub.

Added 

Changed 

  • Stop misuse of TYPO3's fileExtensionToMimeType list

Deprecated 

Removed 

All Changes 

This is a list of all changes in this release:

2024-09-16 [BUGFIX] Do not override internal TYPO3 list [TER-236] (#208) (Commit 075ac4a by bmheins)
2024-05-20 [BUGFIX] Allow custom filename from Event (Commit e19f38c by Benni Mack)
Copied!

Contributors 

Following people have contributed to this release:

  • Oliver Heins
  • Benni Mack
  • Sybille Peters

Thank you very much for your support. The next drink is on us! 🍻

Version 5.0.4 - 2023/03/22 

Bugfix and maintenance release

Download 

Download this version from the TYPO3 extension repository or from GitHub.

Added 

Changed 

  • Improve performance of backend module with many log entries

Deprecated 

Removed 

All Changes 

This is a list of all changes in this release:

2024-03-22 Merge branch 'release-5.x' into feature/TER-187 (Commit cdcf70c by Niklas Grieger)
2024-03-20 [TASK] Performance improvement for backend module with many download … (#197) (Commit 4c0f7b0 by Niklas Grieger)
2024-03-20 [BUGFIX] Use \PDO::PARAM_INT instead of \PDO::INT #151 [TER-187] [TER-188] (Commit 9bfb867 by Niklas Grieger)
2024-03-20 [TASK] Add second parameter for integer values in createNamedParameter #151 [TER-187] [TER-188] (Commit d063e05 by Niklas Grieger)
2024-03-19 [TASK] Performance improvement for backend module with many download log entries #151 [TER-187] [TER-188] (Commit d6e875c by Niklas Grieger)
2023-11-07 [BUGFIX] Fix wrong markup in documentation [TER-137] [TER-158] (#191) (Commit 38435e0 by Niklas Grieger)

Copied!

Contributors 

Following people have contributed to this release:

  • Niklas Grieger

Thank you very much for your support. The next drink is on us! 🍻

Version 5.0.3 - 2023/10/27 

Bugfix and maintenance release

Download 

Download this version from the TYPO3 extension repository or from GitHub.

Added 

Changed 

  • Add: Extend documentation for extension configuration
  • Bugfix: Files from secure_downloads file storage are no longer delivered via dumpFile eID
  • Bugfix: If securedDirs in extension configuration is empty, no folders instead of all folders are considered to be secure
  • Bugfix: Secured icons from files do not break list view anymore if editor has no access to parent folder
  • Bugfix: Consider global SSL setting set by TYPO3

Deprecated 

Removed 

All Changes 

This is a list of all changes in this release:

2023-10-27 Bugfix/ter 144 (#187) (Commit d3394f5 by Niklas Grieger)
2023-10-12 [BUGFIX] Filter global SSL setting to boolean first [TER-133] [TER-142] (#180) (Commit 111a95f by Niklas Grieger)
2023-10-11 [BUGFIX] Fix list module if icons from files in secured directories are displayed and the editor has no access to the parent folder [TER-139] [TER-140] (#181) (Commit 43a31c1 by Niklas Grieger)
2023-10-06 Merge pull request #177 from Leuchtfeuer/bugfix/TER-124 (Commit 59d4f4f by Marcus Balasch)
2023-10-06 [BUGFIX] Considers the SSL setting of the global setting (Commit 29a836a by Marcus Balasch)

Copied!

Contributors 

Following people have contributed to this release:

  • Marcus Balasch
  • Niklas Grieger

Thank you very much for your support. The next drink is on us! 🍻

Version 5.0.2 - 2023/06/30 

Bugfix and maintenance release

Download 

Download this version from the TYPO3 extension repository or from GitHub.

Added 

Changed 

  • Some branches cleanups
  • Bugfix JWT::decode method signature

Deprecated 

Removed 

All Changes 

This is a list of all changes in this release:

2023-06-30 Merge branch 'master' into release-5.x (Commit db25b11 by Marcus Balasch)
2023-06-29 [BUGFIX] PHP 7.4 compatibility for test. TER-118 TER-120 (#168) (Commit f23876c by Sebastian Afeldt)
2023-06-27 [BUGFIX] JWT::decode method signature not respected (#163) (Commit d287211 by J. Peter M. Schuler)
2023-05-26 Featue/newrelease 5.0.1 (#160) (Commit 8e0e340 by Marcus Balasch)
2023-05-26 Release 5.0.1 (#156) (Commit 3aebabc by Marcus Balasch)
2023-05-08 [RELEASE] Release of version 5.0.0 (#153) (Commit 312766c by bitmotionAE)
Copied!

Contributors 

Following people have contributed to this release:

    1. Peter M. Schuler
  • Marcus Balasch
  • Niklas Grieger
  • Sebastian Afeldt

Thank you very much for your support. The next drink is on us! 🍻

Version 5.0.1 - 2023/05/26 

This release is a new major release. It introduces support for TYPO3 11 LTS as well as for PHP 8.1. TYPO3 9 LTS is not supported anymore.

Download 

Download this version from the TYPO3 extension repository or from GitHub.

Added 

  • Pagination in backend module
  • Add skipConfiguration im backend

Changed 

  • Replace author
  • Upgrade PHP-JWT to V6.4

Deprecated 

Removed 

  • Amazon wish list

All Changes 

This is a list of all changes in this release:

2023-05-26 [TASK] Update authors and funding links. (#155) (Commit 449a779 by Sebastian Afeldt)
2023-03-17 [TASK] Update firebase/jwt library from ^5.0 to ^6.0 (#149) (Commit 146b7e7 by Niklas Grieger)
2023-03-16 bugfix/TERROAD-74 (#150) (Commit e82f3ca by Sebastian Afeldt)
2023-03-08 [BUGFIX] Fix "Create a Secure Downloads File Storage" extension configuration functionality (#147) (Commit 6426fab by Niklas Grieger)
2023-03-08 bugfix/TERROAD-74 (#146) (Commit bd0935b by Niklas Grieger)
2023-01-12 [REGRESSION] backend.skipConfiguration doesn't skip new check (#143) (Commit c04c52f by J. Peter M. Schuler)
2022-12-15 [TASK] some rector updates (Commit 68c6782 by Marcus Balasch)
Copied!

Contributors 

Following people have contributed to this release:

    1. Peter M. Schuler
  • Marcus Balasch
  • Niklas Grieger
  • Sebastian Afeldt

Thank you very much for your support. The next drink is on us! 🍻

Version 5.0.0 - 2023/05/05 

This release is a new major release. It introduces support for TYPO3 11 LTS as well as for PHP 8.1. TYPO3 9 LTS is not supported anymore.

Download 

Download this version from the TYPO3 extension repository or from GitHub.

Added 

  • Support for TYPO3 version 11
  • Support for PHP 8.1
  • Checking of the configuration via real HTTP(S) accesses, optionally deactivatable
  • Option to protect file links without logged-in users
  • Option for fully protected FileStorage
  • New configurable access model with the possibility to include own checks.

Changed 

  • Renaming “Bitmotion” to ”Leuchtfeuer”
  • Upgrade PHP-JWT to V6.1

Deprecated 

Removed 

  • Support for TYPO3 version 9

All Changes 

This is a list of all changes in this release:

2022-12-15 [TASK] Optimization in CheckConfiguration (max 20) (#132) (Commit 392f745 by Sybille Peters)
2022-12-15 [TASK] a little makeover (Commit 4c75d19 by Marcus Balasch)
2022-12-13 [TASK] raise php-jwt to V6.1 or higher (Commit e9b9d75 by Marcus Balasch)
2022-12-12 [BUGFIX] access for backend users (Commit 9bd7764 by Marcus Balasch)
2022-12-12 [FEATURE] add option to skip checkConfiguration (#139) (Commit 8bea4da by J. Peter M. Schuler)
2022-12-12 [TASK] Check for correct value in CheckConfiguration (#131) (Commit 0007195 by Sybille Peters)
2022-12-12 Backport v4 (#142) (Commit ff8e484 by Marcus Balasch)
2022-12-09 PHP 8.1 compatibility (#137) (Commit 76f5db8 by J. Peter M. Schuler)
2022-12-01 [BUGFIX] Set empty string if publicURL is not available (#99) (Commit 208fc21 by Guido Schmechel)
2021-11-22 fix error when storage is not public (#115) (Commit 20e3fa9 by Henrik Ahrens)
2021-11-09 [TASK] Update dependencies (Commit e69d89f by Marcus Balasch)
2021-11-09 [DOC] Removal of faulty versions (Commit 48ad01a by Marcus Balasch)
2021-11-09 [TASK] Remove TCA configuration showRecordFieldList (#113) (Commit 13199ca by Patrick Lenk)
2021-10-20 one bracket was missing (#93) (Commit 3d4b6b5 by Usman Ahmad)
2021-09-13 [DOC] Add changelog for 4.1.3 (Commit df569a8 by Marcus Balasch)
2021-09-13 [DOC] Add changelog for 4.1.2 (Commit c45468c by Marcus Balasch)
2021-09-13 fix invalid call getRelativePathname on array (#109) (Commit 34164ea by Henrik Ahrens)
2021-08-30 [TASK] Add TER release script (Commit 35bd855 by Max Rösch)
2020-09-18 [TASK] Use unique class names within svg files (Commit 2c50515 by Florian Wessels)
2020-06-03 [DOC] Update change log (Commit 7141422 by Florian Wessels)
2020-06-03 [TASK] Update dependencies (Commit bb4181d by Florian Wessels)
2020-06-03 [TASK] Update dependencies (Commit bb4181d by Florian Wessels)
2020-06-03 [DOC] Update php doc (Commit c36f660 by Florian Wessels)
2020-05-11 [FEATURE] Allow to restrict access for not logged in users (Commit 03acaae by Florian Wessels)
2020-05-11 [DOC] Chagne wording and add image (Commit 801ad69 by Florian Wessels)
2020-05-11 [FEATURE] Allow to create a secure downloads file storage (Commit 3f4bd07 by Florian Wessels)
2020-05-11 [DOC] Add event documentation (Commit 5015684 by Florian Wessels)
2020-05-11 [DOC] Update changelog (Commit 22e15a4 by Florian Wessels)
2020-05-11 [DOC] Add developer documentation (Commit d4cacba by Florian Wessels)
2020-05-11 [TASK] Reorder event methods (Commit c28d2f4 by Florian Wessels)
2020-05-11 [TASK] Reintroduce API for generating secured links (Commit c9da355 by Florian Wessels)
2020-05-11 [TASK] Move event from Resource to Factory (Commit bc5c85e by Florian Wessels)
2020-05-10 [DOC] Adapt link to changelog (Commit a2acc4c by Florian Wessels)
2020-05-10 [BUGFIX] Make .htaccess example case insentitiv (Commit 458a137 by Florian Wessels)
2020-05-10 [DOC] Adapt license information (Commit 149a343 by Florian Wessels)
2020-05-10 [DOC] Add hint for documentation of version 4 (Commit 19f009c by Florian Wessels)
2020-05-10 [DOC] Adapt release (Commit 48cbd92 by Florian Wessels)
2020-05-10 [DOC] Adapt links (Commit a7c2aa2 by Florian Wessels)
2020-05-10 [DOC] Mainstream settings file (Commit 95c2190 by Florian Wessels)
2020-05-10 [DOC] Add sitemap (Commit 1eb7f75 by Florian Wessels)
2020-05-10 [DOC] Update documentation (Commit 4217fdf by Florian Wessels)
2020-05-10 [BUGFIX][DOC] Wording (Commit 37f28b6 by Florian Wessels)
2020-05-10 [DOC] Update readme (Commit 468ae12 by Florian Wessels)
2020-05-10 [FEATURE] Intorduce dedicated resource driver (Commit c1a6e37 by Florian Wessels)
2020-05-09 [BUGFIX] Do not use dependency injection (Commit 448c460 by Florian Wessels)
2020-05-09 [TASK] Reformat code (Commit 8a07c5e by Florian Wessels)
2020-05-09 [TASK] Restructure view templates (Commit 91f1d96 by Florian Wessels)
2020-05-09 [TASK] Get rid of deprecated softQuoteExpression method (Commit bbb1c93 by Florian Wessels)
2020-05-09 [TASK] Do not use filesize as class property (Commit f383e63 by Florian Wessels)
2020-05-09 [TASK] Add constant for default mime type (Commit b6c2f41 by Florian Wessels)
2020-05-09 [CLEAN-UP] Get rid of non used environment service (Commit 118733e by Florian Wessels)
2020-05-09 [TASK] Retriefe regex patterns directly from extension configuration (Commit 12670d2 by Florian Wessels)
2020-05-09 [BUGFIX] Perform group check only if file is covered by group check (Commit fc3924b by Florian Wessels)
2020-05-09 [TASK] Reduce code complexity (Commit 1d3b6d6 by Florian Wessels)
2020-05-09 [TASK] Remove unused property (Commit c37b433 by Florian Wessels)
2020-05-09 [BUGFIX] Apply group check only to configured directories (Commit f8f0247 by Florian Wessels)
2020-05-09 [FEATURE] Add German translations for extension configuration (Commit eb391b7 by Florian Wessels)
2020-05-09 [TASK] Refactor view of log module (Commit 62a1425 by Florian Wessels)
2020-05-09 [BUGFIX] Instantiate user aspect when logging file access (Commit dffd32e by Florian Wessels)
2020-05-09 [TASK] Remove unused properties from log model (Commit 6544cab by Florian Wessels)
2020-05-09 [TASK] Use dedicated method for building menu items (Commit 3c48ef4 by Florian Wessels)
2020-05-09 [TASK] Use constant for session name (Commit 15fff5d by Florian Wessels)
2020-05-07 [TASK] Add former package name to replace section (Commit 63540ea by Florian Wessels)
2020-05-07 [FEATURE] Fetch secured files and check for HTTP response code (Commit 1c22197 by Florian Wessels)
2020-05-07 [WIP] Improve file access check (Commit e4b8751 by Florian Wessels)
2020-05-07 [BUGFIX] Do not use private properties (Commit f441bd0 by Florian Wessels)
2020-05-07 [TASK] Provide getPayload method in AbstractToken (Commit 758a4b3 by Florian Wessels)
2020-05-07 [TASK] Adapt priorities of registrations (Commit ffe1e19 by Florian Wessels)
2020-05-07 [TASK] Introduce registry for tokens (Commit ed3ec07 by Florian Wessels)
2020-05-07 [TASK] Change wording (Commit 3babc5e by Florian Wessels)
2020-05-07 [BUGFIX] Stop script if overwriting is disabled (Commit 5b3d440 by Florian Wessels)
2020-05-07 [FEATURE] Use error handling of TYPO3 (Commit 2a9085a by Florian Wessels)
2020-05-07 [FEATURE] Add dedicated class for registering checks (Commit 6b3b5b2 by Florian Wessels)
2020-05-07 [TASK] Rename argument (Commit ed847b2 by Florian Wessels)
2020-05-07 [BREAKING] Remove deprecated code (Commit 0f4a259 by Florian Wessels)
2020-05-07 [TASK] Add php doc (Commit 77c13e9 by Florian Wessels)
2020-05-07 [TASK] Use constructur injections where possible (Commit a029456 by Florian Wessels)
2020-05-07 [BUGFIX] Trim configuration values (Commit c386997 by Florian Wessels)
2020-05-07 [FEATURE] Introduce token based file delivery (Commit a1261a0 by Florian Wessels)
2020-05-07 [TASK] Remove deprecated file delivery methods (Commit 98fc56a by Florian Wessels)
2020-05-07 [TASK] Move mime types class (Commit 04bb7a9 by Florian Wessels)
2020-05-06 [TASK] Reorder configuration options (Commit 1547e0b by Florian Wessels)
2020-05-06 [TASK] Apply cs (Commit 670fdaf by Florian Wessels)
2020-05-06 [TASK] Use download model in factory (Commit 5f5ef7b by Florian Wessels)
2020-05-06 [TASK] Add missing php docs (Commit 1f323bd by Florian Wessels)
2020-05-06 [TASK] Get rid of HookUtility (Commit 074a871 by Florian Wessels)
2020-05-06 [FOLLOW-UP] Change vendor name (Commit 141c3f3 by Florian Wessels)
2020-05-06 [TASK] Mark output constants as deprecated (Commit 6add670 by Florian Wessels)
2020-05-06 [CLEAN-UP] Remove obsolete check for TYPO3 version (Commit 6bf68ca by Florian Wessels)
2020-05-06 [TASK] Add missing php docs (Commit b17ddd5 by Florian Wessels)
2020-05-06 [BREAKING] Change vendor name (Commit c1e2158 by Florian Wessels)
2020-05-06 [FEATURE] Introduce configurable access checks (Commit d01103a by Florian Wessels)
2020-05-06 [TASK] Use dedicated method for retrieving response body (Commit ac83159 by Florian Wessels)
2020-05-06 [BUGFIX] Add semicolon (Commit e3a181a by Florian Wessels)
2020-05-06 [BREAKING] Introduce download model (Commit 1629264 by Florian Wessels)
2020-05-06 [BREAKING] Remove deprecated code and drop TYPO3 v9 support (Commit fb52a49 by Florian Wessels)

Copied!

Contributors 

Following people have contributed to this release:

  • Annett Jähnichen
  • Florian Wessels
  • Guido Schmechel
  • Henrik Ahrens
    1. Peter M. Schuler
  • Max Rösch
  • Patrick Lenk
  • Sybille Peters
  • Usman Ahmad

Thank you very much for your support. The next drink is on us! 🍻

Version 4.1.6 - 2022/12/15 

This release is a regular maintenance release. It contains mostly bug fixes and improvements regarding the documentation.

Download 

Download this version from the TYPO3 extension repository or from GitHub.

Changed 

  • Do not include FileDeliveryEidDispatcher.php in TYPO3 10.4 and greater.
  • Update the user UID in links, because the EventListener is no longer called due to the cache.
  • Strict checking also works if a user is a member of more than the necessary groups.
  • Remove display errors for backend users.
  • Introduces unit tests.

All Changes 

This is a list of all changes in this release:

2022-12-15 [TASK] update gitignore (Commit e6957b1 by Marcus Balasch)
2022-12-15 [TASK] build script for ter releases (Commit 264a317 by Marcus Balasch)
2022-12-15 Merge remote-tracking branch 'origin/release-4.x' into release-4.x (Commit fa7de31 by Marcus Balasch)
2022-12-15 [TASK] update libraries for non composer setup (Commit 84bf6e2 by Marcus Balasch)
2022-12-15 [BUGFIX] sometimes bypass missing dependency injection (Commit 44de09b by Marcus Balasch)
2022-12-15 [TASK] Set version to 4.1.6-dev (Commit 1806ff5 by Marcus Balasch)
2022-12-12 Fix access error if a folder in private storage via file list was called (#136) (Commit b65cf3a by Denis Kassor)
Copied!

Contributors 

Following people have contributed to this release:

  • Denis Kassor

Thank you very much for your support. The next drink is on us! 🍻

Version 4.1.5 - 2022/12/09 

This release is a regular maintenance release. It contains mostly bug fixes and improvements regarding the documentation.

Download 

Download this version from the TYPO3 extension repository or from GitHub.

Changed 

  • Do not include FileDeliveryEidDispatcher.php in TYPO3 10.4 and greater.
  • Update the user UID in links, because the EventListener is no longer called due to the cache.
  • Strict checking also works if a user is a member of more than the necessary groups.
  • Remove display errors for backend users.
  • Introduces unit tests.

All Changes 

This is a list of all changes in this release:

2022-12-02 [BUGFIX] check backend user (Commit f53674b by Marcus Balasch)
2022-12-01 [TASK] correct unit test (Commit 81fad0f by Marcus Balasch)
2022-12-01 [BUGFIX] Set empty string if publicURL is not available, thanks to ayacoo (Commit d8750ad by Marcus Balasch)
2022-12-01 [TASK] Enables access with logged in backend user always (Commit 4e7b4bf by Marcus Balasch)
2022-11-30 [TASK ] A subset for verification is sufficient for strict separation, thanks to foobar13372 (Commit 76929f1 by Marcus Balasch)
2022-11-29 [TASK ] Do not include FileDeliveryEidDispatcher.php as of TYPO3 10 any more (Commit 74358cc by Marcus Balasch)
2022-11-23 [TASK] fix double content generation (Commit 2723756 by Marcus Balasch)
2022-03-21 [TASK] replaces the user uids in urls (#124) (Commit 08103b1 by Marcus Balasch)
2022-03-11 [TASK] Fix code style (Commit ec7c04f by Marcus Balasch)
2021-11-09 [TASK] Set version to 4.1.5-dev (Commit f4a7958 by Marcus Balasch)

Copied!

Contributors 

Following people have contributed to this release:

  • (foobar13372)
  • Guido Schmechel
  • Marcus Balasch
  • Oliver Heins

Thank you very much for your support. The next beer is on us! 🍻

Version 4.1.4 - 2021/11/09 

This release is a regular maintenance release. It contains mostly bug fixes and improvements regarding the documentation.

Download 

Download this version from the TYPO3 extension repository or from GitHub.

Changed 

  • Support for proccessed files,

All Changes 

This is a list of all changes in this release:

2021-11-09 [TASK] Set version to 4.1.4-dev (Commit d5d403b by Marcus Balasch)
2021-11-09 [BUGFIX] add suport for proccessed files (#117) (Commit 959e606 by Marcus Balasch)
2021-11-08 FEATURE: Increase max logged filesize (#110) (Commit 73cea3e by Jan-Michael Loew)
Copied!

Contributors 

Following people have contributed to this release:

  • Annett Jähnichen
  • Jan-Michael Loew
  • Marcus Balasch
  • Max Rösch
  • Oliver Heins

Thank you very much for your support. The next beer is on us! 🍻

Version 4.1.1 - 2020/06/03 

This release is a regular maintenance release. It contains mostly bug fixes and improvements regarding the documentation.

Download 

Download this version from the TYPO3 extension repository or from GitHub.

Changed 

  • The composer vendor name was changed from bitmotion to leuchtfeuer.

All Changes 

This is a list of all changes in this release:

2020-06-03 [TASK] Update dependencies (Commit ee69774 by Florian Wessels)
2020-05-11 [DOC] Add hint for upcoming feature (Commit 4c08641 by Florian Wessels)
2020-05-11 [TASK] Change vendor name in composer.json file (Commit a66114a by Florian Wessels)
2020-05-10 [DOC] Mainstream settings file (Commit 04a9a1e by Florian Wessels)
2020-05-10 [DOC] Add sitemap (Commit 83b21c2 by Florian Wessels)
2020-05-10 [DOC] Update documentation (Commit bc25829 by Florian Wessels)
2020-05-10 [DOC] Update readme (Commit d113073 by Florian Wessels)
2020-05-10 [FOLLOW-UP][BUGFIX] Show overlay icon for files (Commit dc0e8a3 by Florian Wessels)
2020-05-10 [BUGFIX] Show overlay icon for files (Commit 866140c by Florian Wessels)
2020-05-09 [TASK] Stream file where possible (Commit 0307df6 by Florian Wessels)
2020-05-09 [TASK] Mark several properties and methods as deprecated (Commit 20a5053 by Florian Wessels)
2020-05-09 [BUGFIX] Perform group check only if file is covered by group check (Commit 88dab5c by Florian Wessels)
2020-05-09 [BUGFIX] Apply group check only to configured directories (Commit c908f06 by Florian Wessels)
2020-05-09 [TASK] Set version to 4.1.1-dev (Commit c5be46b by Florian Wessels)
Copied!

Version 4.1.0 - 2020/05/06 

This version is a feature release. It introduces support for TYPO3 v10 LTS and PHP 7.4. Besides of that there are two new configuration options for doing a admin-configuration-strictgroupcheck and allowing to run this extensions behind a SSL reverse proxy. This release also contains several bug fixes.

Download 

Download this version from the TYPO3 extension repository or from GitHub.

Added 

  • GitHub funding file
  • Support for TYPO3 v10 LTS
  • Support for PHP 7.4
  • admin-configuration-strictgroupcheck can now be strict
  • Dedicated license file
  • PSR-14 Events for file delivery
  • An admin-configuration-documentrootpath can be configured if you are using a SSL reverse proxy or your TYPO3 instance is located in a subfolder.

Changed 

  • Updated firebase/php-jwt library to version 5.2.0
  • User groups 0 and -1 are excluded from group check by default
  • Company has been changed from "Bitmotion" to "Leuchtfeuer Digital Marketing"
  • The default link prefix has been changed from downloads to securedl
  • Method getSecuredUrl of class SecureDownloadsEventListener is now protected

All Changes 

This is a list of all changes in this release:

2020-05-06 [TASK] Adapt path to git repository (Commit 21c6c44 by Florian Wessels)
2020-05-06 [TASK] Make public method protected (Commit 424f436 by Florian Wessels)
2020-05-06 [BUGFIX] Use proper class for log model (Commit 03036ca by Florian Wessels)
2020-05-06 [FOLLOW-UP] Use stream as default output function (Commit 2cacc92 by Florian Wessels)
2020-05-06 [TASK] Catch exceptions when applying filter (Commit c563906 by Florian Wessels)
2020-05-06 [DOC] Update php docs (Commit df6bc1d by Florian Wessels)
2020-05-06 [TASK] Use dedicated method for applying filter (Commit 34417c3 by Florian Wessels)
2020-05-05 [DOC] Add new features to documentation (Commit 454a05b by Florian Wessels)
2020-05-05 [TASK] Use LogManager to instantiate logger (Commit 63385e9 by Florian Wessels)
2020-05-05 [FEATURE] Allow to configure an additional root path prefix (#84) (Commit 392b5e8 by Florian Wessels)
2020-05-05 [TASK] Adapt examples (Commit 264bf7c by Florian Wessels)
2020-05-04 [TASK] Add changelog for upcoming version (Commit d837f41 by Florian Wessels)
2020-05-04 [TASK] Add download link for v4.0.0 (Commit f9ffed1 by Florian Wessels)
2020-05-04 [TASK] Add release notes of version 3.0.3 (Commit 86a30b2 by Florian Wessels)
2020-05-04 [TASK] Update funding file (Commit 8680576 by Florian Wessels)
2020-05-04 [TASK] Update JWT library to version 5.2.0 (Commit 9926b46 by Florian Wessels)
2020-05-03 [BUGFIX] Check for empty page property (Commit 8fb6c67 by Florian Wessels)
2020-05-03 [FEATURE] Add strict checking of user groups (Commit c4c263e by Florian Wessels)
2020-05-03 [BUGFIX] Fix group check (Commit 7ed6dc8 by Florian Wessels)
2020-05-03 [BUGFIX] Fetch group ids as the are used for group check (Commit d5484f2 by Florian Wessels)
2020-05-03 [TASK] Exclude groups with IDs 0 and -1 from group check (Commit 4322574 by Florian Wessels)
2020-05-03 [FEATURE] Add support for TYPO3 v10 LTS (Commit 130f0c8 by Florian Wessels)
2020-05-03 [BUGFIX] Retrieve folder path for non-public storages (Commit 6aa10de by Florian Wessels)
2020-05-03 [BUGFIX] Do not use page repository (Commit e3a6a84 by Florian Wessels)
2020-05-03 [TASK] Set version to 4.1.0-dev (Commit 514e10e by Florian Wessels)
2020-05-03 [TASK] Add funding information (Commit 2b296f8 by Florian Wessels)
2020-05-03 [BUGFIX] Avoid HTTP header after file transfer (Commit f4fd784 by David Bruchmann)
2020-03-13 [TASK] Adapt dependencies for TYPO3 10.3 support (Commit 63196e3 by Florian Wessels)
2020-03-13 [TASK] Set version 4.0.1-dev (Commit 38dc3aa by Florian Wessels)
2020-03-13 [TASK] Remove unnecessary properties (Commit 238730e by Florian Wessels)
2020-03-13 [FOLLOW-UP] Update author and company information (Commit e666934 by Florian Wessels)
2020-03-13 [TASK] Add .gitattributes file (Commit 55ccf18 by Florian Wessels)
2020-03-13 [TASK] Replace php CS file and apply rules (Commit d994ff9 by Florian Wessels)
2020-03-13 [TASK] Update author and company information (Commit e5f0ac4 by Florian Wessels)
2020-03-13 [TASK] Add license file (Commit 46fe8bb by Florian Wessels)
2020-03-13 [TASK] Add documentation link (Commit b0f012b by Florian Wessels)
2019-12-14 [BUGFIX] Do not log secured URL (Commit ccd26ff by Florian Wessels)
2019-12-14 [TASK] Generate proper URLs for relative-images (Commit 3d8d709 by Florian Wessels)
2019-12-12 [BUGFIX] Add php annotations for setters (Commit bdb3b28 by Florian Wessels)
2019-12-12 [BUGFIX] Force initialization of Logger (Commit 845405d by Florian Wessels)
2019-12-12 [TASK] Catch all exceptions thrown during JWT decode (Commit 9f79cf1 by Florian Wessels)
2019-12-12 [TASK] Change default link prefix (Commit f5ca6f1 by Florian Wessels)
2019-12-09 [TASK] Adapt color of extension icon (Commit 829ab85 by Florian Wessels)
2019-12-09 [TASK] Deny access if JWT payload is invalid (Commit aa65d87 by Florian Wessels)
2019-12-05 [FEATURE] Introduce PSR-14 events for TYPO3 10 (Commit 0f9aa4d by Florian Wessels)
2019-12-05 [BUGFIX] Implode groups using comma (Commit 062be6b by Florian Wessels)
2019-12-05 [TASK] Update issue template (Commit a69dd5a by Florian Wessels)
2019-12-05 [TASK] Improve datetime handling (Commit b7ce410 by Florian Wessels)

Copied!

Contributors 

Following people have contributed to this release:

  • David Bruchmann
  • Florian Wessels

Thank you very much for your support. The next beer is on us! 🍻

Version 4.0.0 - 2019/12/03 

This version is a major refactoring of former release, version 3.0.1. It contains a lot of deprecations, but also adds a brand new API for retrieving secured links. Beside of that, several bugs were fixed and the documentation is finally up to date. The old, parameter-based, link generation (?eID=secure_downloads&...) has been removed and all links are now secured with a JSON Web Token. However, old links are still callable when upgrading to this version.

Download 

Download this version from the TYPO3 extension repository or from GitHub.

Added 

  • Dedicated Domain Transfer Object for extension configuration
  • Check if .htaccess files are present.
  • Use JSON Web Tokens for URL generation
  • PSR-15 Middleware for delivering files
  • Support file delivery via nginx x-accel-redirect
  • Wildcards for admin-configuration-forcedownloadtype and admin-configuration-securedfiletypes configuration
  • Check whether configured chunk size is larger than php memory limit
  • Secured files and directories can now be identified within the filelist module (see: introduction-filelist)
  • URIs can now include umlauts
  • Hook for manipulating response header and output function
  • The file name is now present in the URL
  • Stream option for outputting files
  • Public API for getting secured URLs added (class SecureLinkFactory, see: Section below)
  • Support for TYPO3 10.2
  • Support for PHP 7.3

Changed 

  • Removed dedicated ChangeLog file. All changes are documented within this extension documentation.
  • Screenshots in documentation.
  • Signals are migrated to PSR-14 event listeners. Old signals are still present (for compatibility reasons), but will be removed in further releases.
  • Labels for extension configuration were moved into dedicated language file.
  • Use TYPO3 API for manipulating links instead of HTML parsing.
  • Further properties were added to the Additional MIME type array.
  • The EnvironmentService class is used instead of TYPO3_MODE named constant.
  • The Filter and the Statistic class were moved into Transfer directory as the are Domain Transfer Objects.

Deprecated 

  • Following classes are now deprecated:

    • \Bitmotion\SecureDownloads\Configuration\ConfigurationManager - You can use the newly introduced DTO instead.
    • \Bitmotion\SecureDownloads\Core\ObjectManager - This class is obsolete.
    • \Bitmotion\SecureDownloads\Domain\Model\Filter - You can use the Domain Transfer Object instead.
    • \Bitmotion\SecureDownloads\Domain\Model\Statistic - You can use the Domain Transfer Object instead.
    • \Bitmotion\SecureDownloads\Parser\HtmlParser - You should use the TYPO3 API for retrieving secured links.
    • \Bitmotion\SecureDownloads\Parser\HtmlParserDelegateInterface - This interface is obsolete.
    • \Bitmotion\SecureDownloads\Request\RequestContext - You can use TYPO3 core methods instead.
    • \Bitmotion\SecureDownloads\Resource\Publishing\AbstractResourcePublishingTarget - You can use the SecureLinkFactory instead.
    • \Bitmotion\SecureDownloads\Resource\Publishing\PhpDeliveryProtectedResourcePublishingTarget - You can use the SecureLinkFactory and the SecureDownloadService instead.
    • \Bitmotion\SecureDownloads\Resource\Publishing\ResourcePublisher - This class is obsolete.
    • \Bitmotion\SecureDownloads\Resource\Publishing\ResourcePublishingTargetInterface - This interface is obsolete.
    • \Bitmotion\SecureDownloads\Resource\UrlGenerationInterceptor - You can use the SecureDownloadService instead.
    • \Bitmotion\SecureDownloads\Signal - This class is obsolete.
  • Following parameters of $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['bitmotion']['secure_downloads']['output']['init'] hook:

    • $hash
    • $calculatedHash
  • The eID Script is deprecated. For compatibility reasons, old links are still working.
  • Adding additional MIME types via extension configuration is deprecated. You should add your additional MIME types by extending the $GLOBALS['TYPO3_CONF_VARS']['SYS']['FileInfo']['fileExtensionToMimeType'] array.
  • Following configurations are now deprecated:

    • admin-configuration-debug
    • admin-configuration-additionalmimetypes
    • admin-configuration-outputchunksize
    • admin-configuration-domain
  • Output function readfile_chunked is deprecated. You should use stream instead.
  • Hook $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/secure_downloads/Classes/Service/SecureDownloadService.php']['makeSecure'] is deprecated. You can use the hook $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['bitmotion']['secure_downloads']['downloadService']['makeSecure'] instead.
  • The $pObj property of the output hook is deprecated.
  • Several properties fo the init hook are deprecated, as they are present in the object reference and accessible via getters.

Removed 

  • Support for TYPO3 8 LTS
  • Apache delivery
  • Obsolete ShowImageController was removed
  • Generation of secured links with URL parameters (?eID=secure_downloads&...)
  • Deprecated properties bytesDownloaded and typo3Mode of log model
  • Deprecated hook $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/secure_downloads/class.tx_securedownloads.php']['makeSecure']. You can use the hook $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['bitmotion']['secure_downloads']['downloadService']['makeSecure'] instead.

All Changes 

This is a list of all changes in this release:

2019-12-03 [TASK] Update references (Commit 917a606 by Florian Wessels)
2019-12-03 [TASK] Update dependencies (Commit d923531 by Florian Wessels)
2019-12-03 [TASK] Add release notes for version 3.0.2 (Commit fb550e7 by Florian Wessels)
2019-12-03 [BUGFIX] Use proper block styles (Commit ee18855 by Florian Wessels)
2019-12-03 [TASK] Prepare release notes (Commit a0c759b by Florian Wessels)
2019-12-03 [TASK] Allow to set additional link timeout (Commit 4f79adc by Florian Wessels)
2019-12-03 [FOLLOW-UP] Add hints for regex (Commit db7427c by Florian Wessels)
2019-12-03 [DOC] Add hints for regex (Commit b25e694 by Florian Wessels)
2019-12-03 [BUGFIX] Update include path (Commit 3d95426 by Florian Wessels)
2019-12-03 [WIP] Update documentation (Commit e61abd3 by Florian Wessels)
2019-12-03 [TASK] Remove obsolete replace entry (Commit a7be6cf by Florian Wessels)
2019-12-03 [TASK] Force slash in x-accel-redirect header (Commit 44c3850 by Florian Wessels)
2019-12-03 [TASK] Apply CS and fix some spelling mistakes (Commit 2b8dea1 by Florian Wessels)
2019-12-03 [TASK] Use newly introduced API (Commit bbf9d53 by Florian Wessels)
2019-12-03 [FEATURE] Introduce API for getting secured URLs (Commit 620e637 by Florian Wessels)
2019-12-03 [TASK] Mark ObjectManager as deprecated (Commit 50607d1 by Florian Wessels)
2019-12-03 [TASK] Support regular expressions, again (Commit faa9b9f by Florian Wessels)
2019-12-02 [FEATURE] Introduce stream as output function (Commit 9371cc0 by Florian Wessels)
2019-12-02 [BUGFIX] Store filter data in backend user session (Commit 8585d05 by Florian Wessels)
2019-12-02 [TASK] Add README file (Commit ebebdc7 by Florian Wessels)
2019-12-02 [DOC] Update documentation (Commit 24ee36e by Florian Wessels)
2019-12-02 [DOC] Update documentation (Commit 560436f by Florian Wessels)
2019-12-02 [TASK] Apply CS (Commit a8f8600 by Florian Wessels)
2019-12-02 [FEATURE] Add nginx x-accel-redirect fileDelivery mode (Commit b0db813 by Florian Wessels)
2019-12-02 [TASK] Check whether timeout is greater than null (Commit cc42607 by Florian Wessels)
2019-12-02 [BUGFIX] Force value to be integer. (Commit b16da62 by Florian Wessels)
2019-12-02 [TASK] Mark HTML parser as deprecated (Commit d634a68 by Florian Wessels)
2019-12-02 [DOC] Update documentation (Commit 5f21885 by Florian Wessels)
2019-11-28 [TASK] Move changelog to documentation (Commit 04cc31a by Florian Wessels)
2019-11-27 [WIP] Update documentation (Commit 8c1dbc6 by Florian Wessels)
2019-11-27 [TASK] Remove colon (Commit 3fbf302 by Florian Wessels)
2019-11-27 [TASK] Spelling (Commit 7a696ec by Florian Wessels)
2019-11-27 [TASK] Add hint (Commit 7b3ec9d by Florian Wessels)
2019-11-27 [TASK] Mark request context as deprecated and use core functions (Commit 95fbe81 by Florian Wessels)
2019-11-27 [TASK] Handle also processed files (Commit dc7f8f8 by Florian Wessels)
2019-11-27 [TASK] Add dedicated method for getting max chunk size (Commit 30a2fce by Florian Wessels)
2019-11-27 [DOC] Add code documentation (Commit 870b07c by Florian Wessels)
2019-11-27 [TASK] Mark parsing HTML output as deprecated (Commit 914c0d5 by Florian Wessels)
2019-11-26 [TASK] Update introducing php docs (Commit b8c07e6 by Florian Wessels)
2019-11-26 [FEATURE] Add check for incorrect configuration (Commit 8f1ef1a by Florian Wessels)
2019-11-26 [TASK] Use PSR-14 events instead of signals (Commit b186503 by Florian Wessels)
2019-11-26 [BUGFIX] Manipulate urls only for files, not for folders (Commit ae3098c by Florian Wessels)
2019-11-26 [TASK] Apply CS (Commit e102fb6 by Florian Wessels)
2019-11-26 [FEATURE] Allow to force download for all file types (Commit 931dc64 by Florian Wessels)
2019-11-26 [TASK] Use constants for output function (Commit 003e4ea by Florian Wessels)
2019-11-26 [TASK] Use dedicated class for detecting mime types (Commit b2def69 by Florian Wessels)
2019-11-26 [BUGFIX] Spelling (Commit 0be8765 by Florian Wessels)
2019-11-25 [FEATURE] Introduce wildcard for secured file types pattern (Commit a00c061 by Florian Wessels)
2019-11-25 [TASK] Add further mime types as mime_content_type may be false (Commit 38e2a51 by Florian Wessels)
2019-11-25 [TASK] Exit script after content was delivered (Commit 6b2d93d by Florian Wessels)
2019-11-25 [FOLLOW-UP] Move phrases into language file (Commit c5a4e32 by Florian Wessels)
2019-11-25 [TASK] Move phrases into language file (Commit 70a5020 by Florian Wessels)
2019-11-25 [BUGFIX] Call parent constructor only if exists (Commit 37625f3 by Florian Wessels)
2019-11-25 [TASK] Introduce TYPO3 10.2 compatibility (Commit 06260f4 by Florian Wessels)
2019-11-25 [TASK] Apply CS (Commit fd36bd5 by Florian Wessels)
2019-11-25 [TASK] Use user aspect instead of frontend user authentication (Commit 71635e1 by Florian Wessels)
2019-11-22 [TASK] Add secured url to additionalAbsRefPrefixDirectories (Commit f7aad50 by Florian Wessels)
2019-11-22 [TASK] Force positive integer (Commit 6ed3506 by Florian Wessels)
2019-11-22 [FEATURE] Mark secured files and folders in filelist module (Commit 5124e22 by Florian Wessels)
2019-11-22 [TASK] Support urls with umlauts (Commit de6c0d1 by Florian Wessels)
2019-11-22 [TASK] Remove unused code fragments (Commit df6f3f4 by Florian Wessels)
2019-11-22 [TASK] Drop legacy link generation (Commit 9e6c41e by Florian Wessels)
2019-11-22 [TASK] Mark softQuoteExpression as deprecated (Commit 8304be2 by Florian Wessels)
2019-11-22 [FEATURE] Add hooks for manipulating and reading JWT payload (Commit d252026 by Florian Wessels)
2019-11-22 [TASK] Introduce dedicated caching classes (Commit 526dc6f by Florian Wessels)
2019-11-22 [TASK] Clean up code (Commit 40ecdce by Florian Wessels)
2019-11-22 [TASK] Rename some variables (Commit b82f3b8 by Florian Wessels)
2019-11-22 [TASK] Introduce utility for handling hooks (Commit 8b9dfdc by Florian Wessels)
2019-11-22 [FEATURE] Introduce hook for manipulating output function and headers (Commit ba905ab by Florian Wessels)
2019-11-22 [TASK] Improve implementation of hooks (Commit ef8a25b by Florian Wessels)
2019-11-22 [TASK] Trim strings in getters (Commit cccd809 by Florian Wessels)
2019-11-22 [TASK] Introduce decode cache for JWTs (Commit d537e7c by Florian Wessels)
2019-11-22 [TASK] Apply CS (Commit 20623e6 by Florian Wessels)
2019-11-22 [BUGFIX] Do not log download twice (Commit 1c8219b by Florian Wessels)
2019-11-22 [TASK] Use EnvironmentService (Commit f26d292 by Florian Wessels)
2019-11-22 [TASK] Mark several properties and setters as deprecated (Commit a2c7c69 by Florian Wessels)
2019-11-22 [TASK] Get rid of debugging output (Commit 0538a9a by Florian Wessels)
2019-11-22 [TASK] Add filename to download link (Commit 649cb0f by Florian Wessels)
2019-11-21 [TASK] Mark debug option as deprecated and introduce PSR-3 Logger (Commit 60afb8b by Florian Wessels)
2019-11-21 [TASK] Prevents outputFuncSize from being larger than php memory_limit (Commit 1f17ce8 by Florian Wessels)
2019-11-21 [TASK] Move Filter and Statistic to Transfer directory (Commit 7147bfd by Florian Wessels)
2019-11-21 [TASK] Connect to slot only in FE mode (Commit 251c0f0 by Florian Wessels)
2019-11-21 [TASK] Remove TYPO3 Mode information from log module (Commit bfd2cb2 by Florian Wessels)
2019-11-21 [BUGFIX] Reintroduce annotations for domain model (Commit a969fb5 by Florian Wessels)
2019-11-21 [TASK] Apply CS (Commit 5eb9886 by Florian Wessels)
2019-11-21 [TASK] Log deprecations (Commit bf04885 by Florian Wessels)
2019-11-21 [TASK] Mark furhter methods as deprecated (Commit c519e5b by Florian Wessels)
2019-11-21 [TASK] Introduce cache for generated JWTs (Commit adc551d by Florian Wessels)
2019-11-21 [TASK] Use service as singleton (Commit 4cfdd7a by Florian Wessels)
2019-11-21 [TASK] Move method for detecting secured file into SDL service (Commit b47b8b4 by Florian Wessels)
2019-11-21 [TASK] Use html parser only as backup for link protection (Commit f4d22c7 by Florian Wessels)
2019-11-21 [TASK] Remove obsolete ShowImageController (Commit a77ac69 by Florian Wessels)
2019-11-21 [TASK] Update changelog (Commit 9d7f260 by Florian Wessels)
2019-11-21 [TASK] Use environment class for retrieving OS (Commit 731e680 by Florian Wessels)
2019-11-21 [TASK] Initialize FE user authentication only in eID context (Commit 86e80d2 by Florian Wessels)
2019-11-21 [TASK] Mark eID script as deprecated (Commit 69e806c by Florian Wessels)
2019-11-21 [BUGFIX] Use proper value for gettint mime type (Commit 892ec85 by Florian Wessels)
2019-11-21 [FEATURE] Introduce PSR-15 middleware for secured files (Commit 5022f04 by Florian Wessels)
2019-11-21 [TASK] Update changelog (Commit 8fa24ce by Florian Wessels)
2019-11-21 [TASK] Remove todos and add missing semicolon (Commit b95601f by Florian Wessels)
2019-11-21 [TASK] Mark hash property as deprecated (Commit 75f625b by Florian Wessels)
2019-11-21 [TASK] Use proper variable name (Commit ae339c0 by Florian Wessels)
2019-11-21 [BUGFIX] Rename variable (Commit d1de093 by Florian Wessels)
2019-11-21 [TASK] Use fileinfo extension for getting mime types if available (Commit 5d19053 by Florian Wessels)
2019-11-21 [TASK] Use pathinfo for retrieving file extension (Commit 314dd29 by Florian Wessels)
2019-11-21 [TASK] Add some deprecation notices (Commit 2f416fb by Florian Wessels)
2019-11-21 [FOLLOW-UP] Rename some variables and remove obsolte code (Commit 57bd7c8 by Florian Wessels)
2019-11-21 [TASK] Use configuration DTO (Commit e28cea5 by Florian Wessels)
2019-11-21 [FOLLOW-UP] Rename some variables and remove obsolte code (Commit 33aded6 by Florian Wessels)
2019-11-21 [CLEAN-UP] Rename some variables and remove obsolte code (Commit 3772384 by Florian Wessels)
2019-11-21 [TASK] Provide JWT library for non composer setups (Commit f3d9f49 by Florian Wessels)
2019-11-21 [FEATURE] Introduce link generation with JWTs (Commit affa6fa by Florian Wessels)
2019-11-21 [TASK] Remove cookieName as it is not used (Commit 42ee458 by Florian Wessels)
2019-11-21 [TASK] Mark actual link generation as deprecated (Commit 6cde671 by Florian Wessels)
2019-11-20 [TASK] Update changelog (Commit f05cde5 by Florian Wessels)
2019-11-20 [TASK] Remove upload from default secured dirextories (Commit 5d7b325 by Florian Wessels)
2019-11-20 [TASK] Use stronger operator (Commit 85f8887 by Florian Wessels)
2019-11-20 [TASK] Remove deprecated hook (Commit 5af4be5 by Florian Wessels)
2019-11-20 [TASK] Get rid of PATH_site constant (Commit d783af0 by Florian Wessels)
2019-11-20 [TASK] Use HttpUtility for exiting script (Commit 203f12a by Florian Wessels)
2019-11-20 [CLEAN-UP] Remove blank lines (Commit 0ec4d44 by Florian Wessels)
2019-11-20 [TASK] Use new extension configuration DTO (Commit 5dae1b5 by Florian Wessels)
2019-11-20 [TASK] Add missing return types (Commit 24a8249 by Florian Wessels)
2019-11-20 [BREAKING] Drop TYPO3 8 LTS support (Commit a335bfd by Florian Wessels)
2019-11-20 [FOLLOW-UP] Update php docs for classes (Commit 310f9f2 by Florian Wessels)
2019-11-20 [TASK] Mark ConfigurationManager as deprecated (Commit 277202b by Florian Wessels)
2019-11-20 [TASK] Introduce transfer object for extension configuration (Commit 1e2fcd1 by Florian Wessels)
2019-11-20 [TASK] Remove deprecated properties of log model (Commit 9392886 by Florian Wessels)
2019-11-20 [TASK] Update php docs for classes (Commit 3ec5b4f by Florian Wessels)
2019-11-20 [BREAKING] Drop apache delivery support (Commit 8fbe283 by Florian Wessels)
Copied!

Contributors 

Following people have contributed to this release:

  • Sebastian Afeldt
  • Jan-Michael Loew
  • Florian Wessels

Thank you very much for your support. The next beer is on us! 🍻

Version 3.0.3 - 2020/05/04 

This release is a bug fix release. It contains bug fixes only.

Download 

Download this version from the TYPO3 extension repository or from GitHub.

All Changes 

This is a list of all changes in this release:

2020-05-04 [TASK] Support php 7.4 (Commit 44ae49c by Florian Wessels)
2020-05-04 [TASK] Add changelog for upcoming version (Commit fd4eba6 by Florian Wessels)
2020-05-04 [BUGFIX] Use proper argument types for setcookie call (Commit 556925f by Florian Wessels)
2020-05-04 [BUGFIX] Force userGroups to be a string (Commit 7cce635 by Florian Wessels)
2020-05-04 [TASK] Add changelog for prior versions (Commit b246aaf by Florian Wessels)
2019-12-12 [BUGFIX] Add php annotations for setters (Commit 4482eda by Florian Wessels)
2019-12-05 [TASK] Improve datetime handling (Commit a1c017c by Florian Wessels)
2019-12-05 [BUGFIX] Add missing annotations (Commit 70b0b87 by Florian Wessels)
2019-12-05 [TASK] Set version to 3.0.3-dev (Commit 72dadad by Florian Wessels)
Copied!

Version 3.0.2 - 2019/12/03 

This release is a bug fix release. It contains bug fixes only.

Download 

Download this version from the TYPO3 extension repository or from GitHub.

All Changes 

This is a list of all changes in this release:

2019-12-03 [RELEASE] Release of verstion 3.0.2 (Commit 655d9c1 by Florian Wessels)
2019-12-03 [TASK] Update changelog (Commit df73b65 by Florian Wessels)
2019-12-02 [BUGFIX] Store filter data in backend user session (Commit 1aef12d by Florian Wessels)
2019-12-02 [TASK] Set version to 3.0.2-dev (Commit 441dfa0 by Florian Wessels)
2019-12-02 [BUGFIX] Force value to be integer. (Commit 01dbea6 by Florian Wessels)
2019-11-27 [DOC] Add readme file (Commit 5cb22a8 by Florian Wessels)
Copied!

Version 3.0.1 - 2019/11/20 

This release is a bug fix release. It contains bug fixes and some improvements in documentation and code quality.

Download 

Download this version from the TYPO3 extension repository or from GitHub.

Added 

  • Changelog file added.

Changed 

  • cache_period from TypoScript settings is now considered.

All Changes 

This is a list of all changes in this release:

2019-11-20 [RELEASE] Release of version 3.0.1 (Commit 3083578 by Florian Wessels)
2019-04-04 [TASK] Remove further deprecations (Commit 5fa68c0 by Florian Wessels)
2019-04-04 [TASK] Simplify code and use constants (Commit d425f34 by Florian Wessels)
2019-04-04 [TASK] Use Environment class if exists (Commit c3350ba by Florian Wessels)
2019-04-03 [TASK] Do not use composer injection in hook object (Commit 74a70ad by Florian Wessels)
2019-04-03 [BUGFIX] Handle absRefPrefix in domain pattern (Commit 334aebe by Florian Wessels)
2019-04-03 [BUGFIX] Do not break if absRefPrifix is a slash (Commit 1b57470 by Florian Wessels)
2019-04-03 [TASK] Apply code styles (Commit 7becd31 by Florian Wessels)
2019-04-03 [BUGFIX] Force int (Commit 8fe0128 by Florian Wessels)
2019-04-03 [BUGFIX] Do not use composer injection in hook object (Commit e56f46c by Florian Wessels)
2019-04-03 [BUGIX] Do not use array as reference (Commit 4a01b23 by Florian Wessels)
2019-03-06 [TASK] Add ToDos for deprecated PATH_site constant (Commit e607c41 by Florian Wessels)
2019-03-06 [BUGFIX] Use proper argument for isset() (Commit 48021f0 by Florian Wessels)
2019-03-06 [TASK] Apply coding guidelines (Commit e129002 by Florian Wessels)
2019-03-06 [TASK] Use constructor injections (Commit 1e5a206 by Florian Wessels)
2019-03-06 [BUGFIX] Use urlData as reference (Commit 716b65c by Florian Wessels)
2019-03-06 [TASK] Update replace section and add extra information (Commit b3dd139 by Florian Wessels)
2019-03-06 [TASK] Remove output from debugging (Commit bf82a45 by Florian Wessels)
2019-03-06 [TASK] Update php dependency (Commit 665b41a by Florian Wessels)
2019-03-06 [TASK] Add php_cs file (Commit d1b52f5 by Florian Wessels)
2019-03-06 Merge pull request #37 from bitmotion/issue-36 (Commit 6ec2010 by Florian Wessels)
2019-03-06 Refactor class Resource\FileDelivery according to Php Inspections (EA Extended) (Commit d28cdc8 by Oliver Heins)
2019-03-06 [BUGFIX] Cast expiry time to int when getting it as GP var [TypeError #36] (Commit a6b6083 by Oliver Heins)
2019-03-06 [TASK] Adapt license (Commit b9840a9 by Florian Wessels)
2019-03-04 Merge pull request #32 from bitmotion/issue-31 (Commit baeaee1 by Florian Wessels)
2019-03-04 Merge pull request #35 from markuspoerschke/keep-a-changelog (Commit 906285a by Florian Wessels)
2019-03-04 Merge pull request #34 from mschwemer/use_cache_period (Commit d157c43 by Florian Wessels)
2019-02-27 Add CHANGELOG.md (Commit 4305771 by Markus Poerschke)
2019-02-27 Add CHANGELOG.md (Commit 8f24ddc by Markus Poerschke)
2019-02-01 [BUGFIX] Consider cache_period from TypoScript settings (Commit a52d03d by Marcus Schwemer)
2019-01-17 [BUGFIX] Make sure that parsing of a tag won't remove trailing slash (Commit 3ca86fd by majernik)
Copied!

Contributors 

Following people have contributed to this release:

  • Oliver Heins
  • Michal Majernik
  • Markus Pörschke
  • Marcus Schwemer
  • Florian Wessels

Thank you very much for your support. The next beer is on us! 🍻

Version 3.0.0 - 2018/11/20 

This release is a new major release, it was published almost three years after the migration from former EXT:naw_securedl to this extension. It introduces support for TYPO3 9 LTS as well as for PHP 7.2. TYPO3 7 LTS and PHP 5.x are not supported anymore.

Download 

Download this version from the TYPO3 extension repository or from GitHub.

Added 

  • Support for TYPO3 v9
  • Support for PHP 7.2

Changed 

  • Respect $GLOBALS['TSFE']->absRefPrefix when parsing HTML output
  • Renamed protected method \Bitmotion\SecureDownloads\Resource\FileDelivery::readfile_chunked to readFileFactional

Deprecated 

  • Member properties of \Bitmotion\SecureDownloads\Domain\Model\Log:

    • $bytesDownloaded
    • $typo3Mode

Removed 

  • Support for TYPO3 v7
  • Support for PHP 5
  • Protected method \Bitmotion\SecureDownloads\Request\RequestContext::initializeBackendContext
  • Protected member property \Bitmotion\SecureDownloads\Resource\FileDelivery::$logRowUid

All Changes 

This is a list of all changes in this release:

2018-11-20 [RELEASE] Release of Version 3.0.0 (Commit 389d6a5 by Florian Wessels)
2018-11-20 [TASK] Raise compatibility to TYPO3 9.5 (Commit 12d99ce by Florian Wessels)
2018-11-20 Merge branch 'dev-3.0.0' (Commit 4aefae5 by Florian Wessels)
2018-11-20 [TASK] Force int (Commit e0cebf1 by Florian Wessels)
2018-08-20 Merge branch 'DFAU-absRefPrefix' into dev-3.0.0 (Commit bc3d5e4 by Florian Wessels)
2018-08-20 [TASK] Reformat code (Commit ea0116e by Florian Wessels)
2018-08-20 Merge branch 'absRefPrefix' of git://github.com/DFAU/typo3-secure-downloads into DFAU-absRefPrefix (Commit d91b794 by Florian Wessels)
2018-08-20 [TASK] Update HTML parser to respect inline matches like url(...) (Commit 0686ef6 by Florian Wessels)
2018-08-20 [FEATURE] Respect angular and vue.js HTML attributes (Commit 6bdff9e by Florian Wessels)
2018-08-20 [TASK] Mark deprecated TYPO3 methods in code (Commit 7a14a93 by Florian Wessels)
2018-08-20 [BUGFIX] Remove doubled type (Commit 4af1927 by Florian Wessels)
2018-08-20 [TASK] Enrich composer.json file (Commit 1c048f5 by Florian Wessels)
2018-08-20 [TASK] Add return types (Commit 24268f6 by Florian Wessels)
2018-08-20 [TASK] Define time only if set (Commit ba89570 by Florian Wessels)
2018-08-20 [TASK] Outsource unit tests (Commit 3c44fc4 by Florian Wessels)
2018-08-20 [TASK] Remove deprecated ipAddress stuff from RequestContext (Commit 4123ee9 by Florian Wessels)
2018-08-20 [TASK] Add missing @throws annotations (Commit 4394b52 by Florian Wessels)
2018-08-20 [TASK] Remove redundant closing tags (Commit 71e498c by Florian Wessels)
2018-08-20 [TASK] Use proper contentPostProc-output method (Commit 83f7b7f by Florian Wessels)
2018-08-20 [TASK] Get rid of f:be.container (Commit f80445b by Florian Wessels)
2018-08-20 [TASK] Do not log entities twice (Commit 676476a by Florian Wessels)
2018-08-20 [TASK] Add thrown exceptions to php annotations (Commit 2f95b4e by Florian Wessels)
2018-08-20 [BUGFIX] Fix SQL queries (Commit 69223c3 by Florian Wessels)
2018-08-20 [TASK] Use QueryBuilder in FileDelivery.php file (Commit 96a00cc by Florian Wessels)
2018-08-20 [TASK] Mark typo3mode property of log model as deprecated (Commit 87635e4 by Florian Wessels)
2018-08-20 [TASK] Get rid of extRelPath method of ExtensionManagementUtility (Commit 7770aa4 by Florian Wessels)
2018-08-20 [TASK] Use QueryBuilder for SQL queries in LogController.php (Commit 3e0ba6d by Florian Wessels)
2018-08-20 [TASK] Update php annotations in LogControler.php file (Commit 28afbe0 by Florian Wessels)
2018-08-20 [TASK] Get rid of @inject annotation (Commit a8ab6da by Florian Wessels)
2018-08-20 [TASK] Do not use obsolete rawUrlEncodeFP method of GeneralUtility (Commit 3824844 by Florian Wessels)
2018-08-20 [TASK] Use random class for generating random string (Commit 81de69b by Florian Wessels)
2018-08-20 [TASK] Use queryBuilder for SQL stuff in log model (Commit c969c00 by Florian Wessels)
2018-08-20 [WIP] Drop TYPO3 7 LTS and PHP 5.5 support (Commit 9da66e0 by Florian Wessels)
2018-08-20 [BUGFIX] Use proper language label for TCA definitions (Commit 3365cf3 by Florian Wessels)
2018-08-20 [TASK] Remove enablecolumns from TCA (Commit 612524a by Florian Wessels)
2018-08-20 [TASK] Set version to 3.0.0-dev and mark extension as stable (Commit 41b9115 by Florian Wessels)
2017-04-04 [BUGFIX] HtmlParser ist not absRefPrefix aware (Commit 802ede1 by Thomas Maroschik)
Copied!

Contributors 

Following people have contributed to this release:

  • Thomas Maroschik
  • Florian Wessels

Thank you very much for your support. The next beer is on us! 🍻

Version 2.0.6 - 2018/11/20 

This release is a bug fix release. It contains bug fixes and some improvements.

Download 

Download this version from the TYPO3 extension repository or from GitHub.

Changed 

  • file and downloadName properties were added to $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['bitmotion']['secure_downloads']['output']['preOutput'] hook.

All Changes 

This is a list of all changes in this release:

2018-11-20 [RELEASE] Release of Version 2.0.6 (Commit 51d2f8a by Florian Wessels)
2018-11-20 Merge branch 'bmack-preoutput' (Commit f2e1aa0 by Florian Wessels)
2018-11-19 [TASK] Add more information to preOutput hook (Commit 3569aec by Benni Mack)
2018-08-20 Update issue templates (Commit aa762f9 by Florian Wessels)
2018-06-08 Merge pull request #22 from cedricziel/tca-deprecations (Commit 014924d by Florian Wessels)
2018-06-07 Adapt to CMS 8 deprecations (Commit 9cc29b1 by Cedric Ziel)
Copied!

Contributors 

Following people have contributed to this release:

  • Benni Mack
  • Cedric Ziel
  • Florian Wessels

Thank you very much for your support. The next beer is on us! 🍻

Version 2.0.5 - 2017/04/20 

This release is a bug fix release. It contains bug fixes and some improvements.

Download 

Download this version from the TYPO3 extension repository or from GitHub.

Added 

It is now possible to select subdirectories by its name.

All Changes 

This is a list of all changes in this release:

2017-04-20 [REVERT] for now: Allow selection of secured subfolders by name (Commit 00b8456 by Florian Wessels)
2017-04-20 [RELEASE] Release of Version 2.0.5 (Commit 5e67f0d by Florian Wessels)
2017-04-20 [BUGFIX] Recursive call to ResourcePublisher::publishResourceUri in cached Requests (Commit 9a45993 by Florian Wessels)
2017-02-14 [FEATURE] Allow selection of secured subfolders by name - implements #6 (Commit 5e38189 by Florian Wessels)
Copied!

Version 2.0.4 - 2017/04/05 

This release is a bug fix release. It contains bug fixes and some improvements and code quality. Also it introduces support for TYPO3 8 LTS.

Download 

Download this version from the TYPO3 extension repository or from GitHub.

Added 

  • Support for TYPO3 8 LTS

Removed 

  • Support for TYPO3 v6
  • Support for PHP 5.3

All Changes 

This is a list of all changes in this release:

2017-04-05 [RELEASE] Release of version 2.0.4 (Commit f0ace67 by Florian Wessels)
2017-04-05 [TASK] Support TYPO3 8 LTS (Commit 0407b99 by Florian Wessels)
2017-02-14 [BUGFIX] use array_key_exists instead of isset (Commit c705516 by Florian Wessels)
2017-02-14 [TASK] Get rid of obsolete CSS styles (Commit 7d35a6b by Florian Wessels)
2017-02-14 [TASK] Reformat HTML files (Commit 7d4d331 by Florian Wessels)
2017-02-14 [TASK] Reformat language files (Commit 70f4e3a by Florian Wessels)
2017-02-14 [TASK] Do not use strings for instantiating classes (Commit cce771c by Florian Wessels)
2017-02-14 [TASK] Clean-Up and Reformat PHP Code (Commit 3806dff by Florian Wessels)
2017-02-14 [TASK] Add phpdoc header to every class (Commit 64674a3 by Florian Wessels)
2017-02-14 [TASK] Deprecate getting and setting IP address in request context (Commit 37b7489 by Florian Wessels)
2017-02-14 Get rid of TYPO3 6 and PHP 5.3 support (Commit f2691a1 by Florian Wessels)
2017-02-13 [TASK] Do not use deprecated TCA - Resolves #5 (Commit f0df015 by Florian Wessels)
2017-02-13 [BUGFIX] Do not instantiate interface - Resolves #8 (Commit 9dbfbfa by Florian Wessels)
2017-02-13 [FOLLOW-UP] Raise dependencies in composer.json (Commit 158a9e8 by Florian Wessels)
2017-02-13 [TASK] Refactor BE-Module (Commit 0a7015b by Florian Wessels)
2017-02-13 Raise dependencies (Commit 65e1b40 by Florian Wessels)
2017-02-13 Respect page id in ext_configuration (Commit e15fb0e by Florian Wessels)
2017-02-13 Fix CSS issue in module pagination (Commit 2ca93be by Florian Wessels)
2017-02-13 Remove obsolete code (Commit 4e961a8 by Florian Wessels)
2016-11-18 [TASK] Add naw_securedl to conflicts in composer.json (Commit 6809d13 by Florian Wessels)
2016-11-18 [TASK] Add german translations for log module (Commit 5d9a3db by Florian Wessels)
2016-11-18 [TASK] Modify PHPDoc file header (Commit 996bbbc by Florian Wessels)
2016-11-18 [TASK] Restore PHP 5.3 compatibility (Commit f31a05f by Florian Wessels)
2016-09-05 [TASK] Hide Log Table on pages (Commit 1bea9d9 by Florian Wessels)
2016-09-05 [TASK] Remove deprecated properties from ext_emconf.php and use lowerCamelCase (Commit d2d3422 by Florian Wessels)
2016-09-05 [TASK] Update author_mail and add author_company in ext_emconf.php (Commit ae049aa by Florian Wessels)
2016-08-30 [TASK] Raise version to 2.0.4-dev (Commit 0a4fea5 by Florian Wessels)
Copied!

Version 2.0.3 - 2016/08/30 

This release is a bug fix release. It contains bug fixes and some improvements in documentation and code quality.

Download 

Download this version from the TYPO3 extension repository or from GitHub.

All Changes 

This is a list of all changes in this release:

2016-08-30 [RELEASE] 2.0.3 (Commit a748ba8 by Florian Wessels)
2016-08-30 [TASK] Add raw documentation (Commit 50afcd4 by Florian Wessels)
2016-08-30 [TASK] Update dependency (Commit efff636 by Florian Wessels)
2016-08-22 [TASK] Extend regex of tag parser (Commit 8573ab3 by Florian Wessels)
2016-07-26 [TYPO] Fix typo (Commit f8d0578 by Florian Wessels)
2016-07-26 [TASK] Modify ordering of extension configuration (Commit 3ec522b by Florian Wessels)
2016-07-26 [TASK] Do not exclude fields from log model (Commit fdb44b5 by Florian Wessels)
2016-07-26 [TASK] Add language file for log model (Commit f4459dd by Florian Wessels)
2016-07-26 [FOLLOW-UP] Add icon file for log model (Commit f06ce55 by Florian Wessels)
2016-07-26 [BUGFIX] Use proper icon file for log model (Commit 797a4c1 by Florian Wessels)
2016-07-26 [CLEANUP] Remove unused language file (Commit df75a53 by Florian Wessels)
2016-07-26 [TASK] Set version to 2.0.3-dev (Commit e1ebd28 by Florian Wessels)
Copied!

Version 2.0.2 - 2016/07/22 

This release is a bug fix release. It contains bug fixes and some improvements.

Download 

Download this version from the TYPO3 extension repository or from GitHub.

Added 

  • Support for TYPO3 8.2
  • Support for PHP v7

All Changes 

This is a list of all changes in this release:

2016-07-22 [RELEASE] Release 2.0.2 (Commit 397bacf by Florian Wessels)
2016-07-22 [BUGFIX] Fix composer error (Commit 02ec0a1 by Florian Wessels)
2016-07-22 [TASK] Add .gitignore file (Commit 75d755a by Florian Wessels)
2016-07-22 [TASK] Update dependencies up to TYPO3 8.2.99 and PHP 7.0.99 (Commit 343c727 by Florian Wessels)
2016-07-22 [TASK] Set version to 2.0.2-dev (Commit cfb112e by Florian Wessels)
Copied!

Version 2.0.1 - 2016/07/22 

This release is a bug fix release. It contains bug fixes only.

Download 

Download this version from the TYPO3 extension repository or from GitHub.

All Changes 

This is a list of all changes in this release:

2016-07-22 [RELEASE] Release version 2.0.1 (Commit b4a8ba4 by Florian Wessels)
2016-07-22 [TASK] Convert documentation to odt (Commit 5eab1ac by Florian Wessels)
2016-07-21 Merge pull request #2 from helhum/patch-1 (Commit 4e9fe1b by Florian Wessels)
2016-07-21 [!!!][TASK] Fix and streamline composer.json (Commit 5f433cf by Helmut Hummel)
Copied!

Contributors 

Following people have contributed to this release:

  • Helmut Hummel
  • Florian Wessels

Thank you very much for your support. The next beer is on us! 🍻

Version 2.0.0 - 2016/07/21 

This is the initial release of this extension. It is a major refactoring of the former secure downloads extension EXT:naw_securedl. It contains all features of that extension and introduces support for TYPO3 6.2 and TYPO3 7 LTS. For further changes, please take a look at EXT:naw_securedl.

All Changes 

This is a list of all changes in this release:

2016-07-21 [RELEASE] Initial release of version 2.0.0 (Commit d9366e6 by Florian Wessels)
Copied!

Contributing 

You can contribute by making a pull request to the master branch of the extension repository or by using the "❤️ Sponsor" button on Github. Or just send us some beers 🍻...

Documentation 

You are welcome to help improve this guide. Just click on "Edit on GitHub" on the top right to submit your change request.

Sitemap