Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[stable20] Fix default internal expiration date #24159

Merged
merged 15 commits into from
Nov 16, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions build/integration/features/bootstrap/AppConfiguration.php
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,19 @@ protected function modifyServerConfig($app, $parameter, $value) {
}
}

/**
* @param string $app
* @param string $parameter
* @param string $value
*/
protected function deleteServerConfig($app, $parameter) {
$this->sendingTo('DELETE', "/apps/testing/api/v1/app/{$app}/{$parameter}");
$this->theHTTPStatusCodeShouldBe('200');
if ($this->apiVersion === 1) {
$this->theOCSStatusCodeShouldBe('100');
}
}

protected function setStatusTestingApp($enabled) {
$this->sendingTo(($enabled ? 'post' : 'delete'), '/cloud/apps/testing');
$this->theHTTPStatusCodeShouldBe('200');
Expand Down
22 changes: 11 additions & 11 deletions build/integration/features/bootstrap/CapabilitiesContext.php
Original file line number Diff line number Diff line change
Expand Up @@ -61,16 +61,16 @@ public function checkCapabilitiesResponse(\Behat\Gherkin\Node\TableNode $formDat
}

protected function resetAppConfigs() {
$this->modifyServerConfig('core', 'shareapi_enabled', 'yes');
$this->modifyServerConfig('core', 'shareapi_allow_links', 'yes');
$this->modifyServerConfig('core', 'shareapi_allow_public_upload', 'yes');
$this->modifyServerConfig('core', 'shareapi_allow_resharing', 'yes');
$this->modifyServerConfig('files_sharing', 'outgoing_server2server_share_enabled', 'yes');
$this->modifyServerConfig('files_sharing', 'incoming_server2server_share_enabled', 'yes');
$this->modifyServerConfig('core', 'shareapi_enforce_links_password', 'no');
$this->modifyServerConfig('core', 'shareapi_allow_public_notification', 'no');
$this->modifyServerConfig('core', 'shareapi_default_expire_date', 'no');
$this->modifyServerConfig('core', 'shareapi_enforce_expire_date', 'no');
$this->modifyServerConfig('core', 'shareapi_allow_group_sharing', 'yes');
$this->deleteServerConfig('core', 'shareapi_enabled');
$this->deleteServerConfig('core', 'shareapi_allow_links');
$this->deleteServerConfig('core', 'shareapi_allow_public_upload');
$this->deleteServerConfig('core', 'shareapi_allow_resharing');
$this->deleteServerConfig('files_sharing', 'outgoing_server2server_share_enabled');
$this->deleteServerConfig('files_sharing', 'incoming_server2server_share_enabled');
$this->deleteServerConfig('core', 'shareapi_enforce_links_password');
$this->deleteServerConfig('core', 'shareapi_allow_public_notification');
$this->deleteServerConfig('core', 'shareapi_default_expire_date');
$this->deleteServerConfig('core', 'shareapi_enforce_expire_date');
$this->deleteServerConfig('core', 'shareapi_allow_group_sharing');
}
}
4 changes: 2 additions & 2 deletions build/integration/features/bootstrap/FederationContext.php
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ public function acceptLastPendingShare($user, $server) {
}

protected function resetAppConfigs() {
$this->modifyServerConfig('files_sharing', 'incoming_server2server_group_share_enabled', 'no');
$this->modifyServerConfig('files_sharing', 'outgoing_server2server_group_share_enabled', 'no');
$this->deleteServerConfig('files_sharing', 'incoming_server2server_group_share_enabled');
$this->deleteServerConfig('files_sharing', 'outgoing_server2server_group_share_enabled');
}
}
6 changes: 3 additions & 3 deletions build/integration/features/bootstrap/ShareesContext.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ class ShareesContext implements Context, SnippetAcceptingContext {
use AppConfiguration;

protected function resetAppConfigs() {
$this->modifyServerConfig('core', 'shareapi_only_share_with_group_members', 'no');
$this->modifyServerConfig('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes');
$this->modifyServerConfig('core', 'shareapi_allow_group_sharing', 'yes');
$this->deleteServerConfig('core', 'shareapi_only_share_with_group_members');
$this->deleteServerConfig('core', 'shareapi_allow_share_dialog_user_enumeration');
$this->deleteServerConfig('core', 'shareapi_allow_group_sharing');
}
}
10 changes: 8 additions & 2 deletions build/integration/features/bootstrap/SharingContext.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,13 @@ class SharingContext implements Context, SnippetAcceptingContext {
use CommandLine;

protected function resetAppConfigs() {
$this->modifyServerConfig('core', 'shareapi_default_permissions', '31');
$this->modifyServerConfig('sharebymail', 'enforcePasswordProtection', 'no');
$this->deleteServerConfig('core', 'shareapi_default_permissions');
$this->deleteServerConfig('core', 'shareapi_default_internal_expire_date');
$this->deleteServerConfig('core', 'shareapi_internal_expire_after_n_days');
$this->deleteServerConfig('core', 'internal_defaultExpDays');
$this->deleteServerConfig('core', 'shareapi_default_expire_date');
$this->deleteServerConfig('core', 'shareapi_expire_after_n_days');
$this->deleteServerConfig('core', 'link_defaultExpDays');
$this->deleteServerConfig('sharebymail', 'enforcePasswordProtection');
}
}
106 changes: 106 additions & 0 deletions build/integration/sharing_features/sharing-v1.feature
Original file line number Diff line number Diff line change
Expand Up @@ -391,6 +391,112 @@ Feature: sharing
And Share fields of last share match with
| permissions | 7 |

Scenario: Creating a new internal share with default expiration date
Given user "user0" exists
And user "user1" exists
And As an "user0"
And parameter "shareapi_default_internal_expire_date" of app "core" is set to "yes"
And parameter "shareapi_internal_expire_after_n_days" of app "core" is set to "3"
When creating a share with
| path | welcome.txt |
| shareWith | user1 |
| shareType | 0 |
And the OCS status code should be "100"
And the HTTP status code should be "200"
And Getting info of last share
Then the OCS status code should be "100"
And the HTTP status code should be "200"
And Share fields of last share match with
| expiration | +3 days |

Scenario: Creating a new internal share with relaxed default expiration date
Given user "user0" exists
And user "user1" exists
And As an "user0"
And parameter "shareapi_default_internal_expire_date" of app "core" is set to "yes"
And parameter "shareapi_internal_expire_after_n_days" of app "core" is set to "3"
And parameter "internal_defaultExpDays" of app "core" is set to "1"
When creating a share with
| path | welcome.txt |
| shareWith | user1 |
| shareType | 0 |
And the OCS status code should be "100"
And the HTTP status code should be "200"
And Getting info of last share
Then the OCS status code should be "100"
And the HTTP status code should be "200"
And Share fields of last share match with
| expiration | +1 days |

Scenario: Creating a new internal share with relaxed default expiration date too large
Given user "user0" exists
And user "user1" exists
And As an "user0"
And parameter "shareapi_default_internal_expire_date" of app "core" is set to "yes"
And parameter "shareapi_internal_expire_after_n_days" of app "core" is set to "3"
And parameter "internal_defaultExpDays" of app "core" is set to "10"
When creating a share with
| path | welcome.txt |
| shareWith | user1 |
| shareType | 0 |
And the OCS status code should be "100"
And the HTTP status code should be "200"
And Getting info of last share
Then the OCS status code should be "100"
And the HTTP status code should be "200"
And Share fields of last share match with
| expiration | +3 days |

Scenario: Creating a new link share with default expiration date
Given user "user0" exists
And As an "user0"
And parameter "shareapi_default_expire_date" of app "core" is set to "yes"
And parameter "shareapi_expire_after_n_days" of app "core" is set to "3"
When creating a share with
| path | welcome.txt |
| shareType | 3 |
And the OCS status code should be "100"
And the HTTP status code should be "200"
And Getting info of last share
Then the OCS status code should be "100"
And the HTTP status code should be "200"
And Share fields of last share match with
| expiration | +3 days |

Scenario: Creating a new link share with relaxed default expiration date
Given user "user0" exists
And As an "user0"
And parameter "shareapi_default_expire_date" of app "core" is set to "yes"
And parameter "shareapi_expire_after_n_days" of app "core" is set to "3"
And parameter "link_defaultExpDays" of app "core" is set to "1"
When creating a share with
| path | welcome.txt |
| shareType | 3 |
And the OCS status code should be "100"
And the HTTP status code should be "200"
And Getting info of last share
Then the OCS status code should be "100"
And the HTTP status code should be "200"
And Share fields of last share match with
| expiration | +1 days |

Scenario: Creating a new link share with relaxed default expiration date too large
Given user "user0" exists
And As an "user0"
And parameter "shareapi_default_expire_date" of app "core" is set to "yes"
And parameter "shareapi_expire_after_n_days" of app "core" is set to "3"
And parameter "link_defaultExpDays" of app "core" is set to "10"
When creating a share with
| path | welcome.txt |
| shareType | 3 |
And the OCS status code should be "100"
And the HTTP status code should be "200"
And Getting info of last share
Then the OCS status code should be "100"
And the HTTP status code should be "200"
And Share fields of last share match with
| expiration | +3 days |

Scenario: getting all shares of a user using that user
Given user "user0" exists
And user "user1" exists
Expand Down
6 changes: 3 additions & 3 deletions lib/private/Share20/Manager.php
Original file line number Diff line number Diff line change
Expand Up @@ -409,9 +409,9 @@ protected function validateExpirationDateInternal(IShare $share) {
$expirationDate = new \DateTime();
$expirationDate->setTime(0,0,0);

$days = (int)$this->config->getAppValue('core', 'internal_defaultExpDays', $this->shareApiLinkDefaultExpireDays());
if ($days > $this->shareApiLinkDefaultExpireDays()) {
$days = $this->shareApiLinkDefaultExpireDays();
$days = (int)$this->config->getAppValue('core', 'internal_defaultExpDays', (string)$this->shareApiInternalDefaultExpireDays());
if ($days > $this->shareApiInternalDefaultExpireDays()) {
$days = $this->shareApiInternalDefaultExpireDays();
}
$expirationDate->add(new \DateInterval('P'.$days.'D'));
}
Expand Down
Loading