Commit Graph

1320 Commits

Author SHA1 Message Date
Sebastian Sdorra
b975fb655d Feature/global notifications (#1646)
Add global notifications
2021-05-05 14:43:16 +02:00
Eduard Heimbuch
8f91c217fc Add patch endpoint for global config (#1629)
Co-authored-by: Sebastian Sdorra <sebastian.sdorra@cloudogu.com>
2021-04-28 08:47:29 +02:00
René Pfeuffer
6cd8fc5ba4 Fix deserialization of embedded values in HAL objects (#1630)
The embedded avatar object of the repository avatar plugin
leads to an exception without this configuration, when
a repository json object is deserialized. This happens
for example when the description of a repository should
be modified.
2021-04-26 08:11:13 +02:00
Eduard Heimbuch
5603aef54d Fix unit test 2021-04-21 10:39:20 +02:00
René Pfeuffer
1e83c34823 Enable Health Checks (#1621)
In the release of version 2.0.0 of SCM-Manager, the health checks had been neglected. This makes them visible again in the frontend and adds the ability to trigger them. In addition there are two types of health checks: The "normal" ones, now called "light checks", that are run on startup, and more intense checks run only on request.

As a change to version 1.x, health checks will no longer be persisted for repositories.

Co-authored-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
2021-04-21 10:09:23 +02:00
Sebastian Sdorra
4cbe6b9873 Improve error messages for invalid media types (#1607)
Show separate error messages for invalid partial media types and application/json if it unsupported for the url.
2021-03-25 13:09:40 +01:00
Eduard Heimbuch
73c1609d92 Add flag to global config to enable/disable api keys as additional authentication method (#1606)
Add flag to global config to enable/disable API keys as additional authentication method.

Fixes #1599
2021-03-25 12:06:22 +01:00
Eduard Heimbuch
22a0362892 Feature/unicode groupname validation (#1600)
Allow all UTF-8 characters except URL identifiers as user and group names and for namespaces.

Fixes #1513

Co-authored-by: René Pfeuffer <rene.pfeuffer@cloudogu.com>
2021-03-25 09:59:23 +01:00
Sebastian Sdorra
8f2272885b Metrics for events (#1601)
Updates legman to version 2, which allows the usage of the MicrometerPlugin. The plugin will collect metrics for subscriber invocations and the underlying executor.

Furthermore this change will fix the usage of wrong subject context in the asynchronous events.
2021-03-24 15:54:29 +01:00
Eduard Heimbuch
3ec499d22c Authentication metrics (#1595)
Expose metrics about:

- User login attempts
- Failed user logins
- User logouts
- General successful accesses to SCM-Manager via any authentication realm
- General failed accesses to SCM-Manager

Co-authored-by: Sebastian Sdorra <sebastian.sdorra@cloudogu.com>
2021-03-24 08:50:14 +01:00
Eduard Heimbuch
5a20eaea49 Collect cache metrics using guava cache statistics instead own counters. (#1590)
Collect guava cache statistics as metrics using micrometer. We replaced the own counter implementation of guava statistics with the guava internal caching statistics.
2021-03-22 08:56:26 +01:00
Sebastian Sdorra
26b65582ce Core metrics (#1586)
Expose metrics for http requests and executor services.
2021-03-17 11:09:52 +01:00
René Pfeuffer
84c8e02bf1 Feature Partial Diff (#1581)
With this pull request, diffs for Git are loaded in chunks. This means, that for diffs with a lot of files only a part of them are loaded. In the UI a button will be displayed to load more. In the REST API, the number of files can be specified. This only works for diffs, that are delivered as "parsed" diffs. Currently, this is only available for Git.

Co-authored-by: Sebastian Sdorra <sebastian.sdorra@cloudogu.com>
2021-03-12 13:52:17 +01:00
Sebastian Sdorra
7656c2dc14 Add API for metrics based on Micrometer (#1576) 2021-03-10 10:07:29 +01:00
Eduard Heimbuch
644b2e106c Add privileged startup api (#1573)
Add privileged startup api to perform startup action with
administration context. This extracts the different startup
actions into own classes. Doing so, they will run independently
of settings for the user creation.
2021-03-05 15:43:09 +01:00
Sebastian Sdorra
89548d45bd Filepath search (#1568)
Add search for files to the sources view. The search is only for finding file paths. It does not search any file metadata nor the content. Results get a rating, where file names are rated higher than file paths. The results are sorted by the score and the first 50 results are displayed.

Co-authored-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
2021-03-04 10:39:58 +01:00
René Pfeuffer
1f78e2fbd7 Suppress irrelevant warning 2021-03-01 09:22:56 +01:00
René Pfeuffer
0695ca3bac Add import protocol (#1558)
Adds a protocol for repository imports (either from an URL, a dump file or a SCM-Manager repository archive).
This protocol documents single steps of an import, the time and the user and is accessible via a dedicated REST
endpoint or a simple ui.

The id of the log is added to the repository imported event, so that plugins like the landingpage or mail can link to these logs.
2021-02-26 13:52:29 +01:00
Eduard Heimbuch
ac404b3cdd Migrate unit tests to junit 5 to fix local flappy behaviour 2021-02-26 10:37:29 +01:00
Sebastian Sdorra
888f5d699b Fire RepositoryImportHookEvent instead of PostReceiveRepositoryHookEvent (#1561)
We will fire an RepositoryImportHookEvent instead of PostReceiveRepositoryHookEvent for repository imports with metadata. The event is only fired if all parts of the repository could be successfully imported. The extra event is required to avoid heavy recalculations which can be triggered by the PostReceiveRepositoryHookEvent for example the scm-statistic-plugin uses the PostReceiveRepositoryHookEvent to calculate its statistics.

Co-authored-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
2021-02-26 09:49:34 +01:00
René Pfeuffer
ff4d9224f9 Decrypt import only if password is given 2021-02-25 17:29:02 +01:00
Eduard Heimbuch
db2ce98721 Feature/import export encryption (#1533)
Add option to encrypt repository exports with a password and add possibility to decrypt them on repository import. Also make the repository export asynchronous. This implies that the repository export will be created on the server and can be downloaded multiple times. The repository export will be deleted automatically 10 days after creation.
2021-02-25 13:01:03 +01:00
René Pfeuffer
3c94ce91d6 Set update step info for new repositories (#1554)
Sets versions for repository update steps to newest versions for new repositories to prevent unnecessary updates.
2021-02-25 08:12:16 +01:00
René Pfeuffer
ee02ba096f Mark config entry stores explicitly in exports (#1545)
The default (XML) store of SCM-Manager does not distinguish between config and config entry stores in regards to
storage locations. Nonetheless, we want to make a difference in export files, so that other store providers can handle
these stores differently. To do so, this change adds an attribute to the top level xml element of config entry stores
to mark them. In exports, these store files can now be exported in a different folder. To mark existing stores, this
introduces an update step.
2021-02-23 09:37:59 +01:00
Sebastian Sdorra
d8427ed4ed Improve cache api for usage in plugins (#1540)
This change allows usage of Cache as Shiro authentication and authorization cache. It will also fix loading cache configurations from plugins.
2021-02-17 09:15:01 +01:00
René Pfeuffer
ac3d9c9fa1 Fix sonar warning 2021-02-16 11:18:28 +01:00
Eduard Heimbuch
5ea28a84fc Change file order inside repository archive (#1538)
Change repository archive order to export/import repository stores before the actual repository. This is done due to import stores before importing the actual repository and firing hooks that may trigger unnecessary computations otherwise.

Co-authored-by: René Pfeuffer <rene.pfeuffer@cloudogu.com>
2021-02-15 15:43:26 +01:00
Sebastian Sdorra
1a2dabeb66 Do not resolve external groups for system accounts (#1541)
This change modifies the behaviour of the DefaultGroupCollector.
The collector does not longer resolve external groups for the anonymous user and it does not resolve internal nor external groups for the account which is used by the AdministrationContext.
This should reduce the requests which are send to external systems like ldap servers.
2021-02-15 08:45:47 +01:00
René Pfeuffer
e0d2630a08 Feature repository specific data migration (#1526)
This adds a new migration mechanism for repository data. Instead of using UpdateSteps for all data migrations, repository data shall from now on be implemented with RepositoryUpdateSteps. The general logic stays the same. Executed updates are stored with the repository. Doing this, we can now execute updates on imported repositories without touching other data. This way we can import repositories even though they were exported with older versions of SCM-Manager or a plugin.
2021-02-10 08:12:48 +01:00
René Pfeuffer
5c94031c66 Fix never failing test 2021-02-05 13:59:33 +01:00
Eduard Heimbuch
877713574a Merge imported repository permissions with existing repository permissions (#1520) 2021-02-05 12:20:55 +01:00
Eduard Heimbuch
ac5d145266 Repository export read-only lock (#1519)
* Lock repository for read-only access only while exporting
* Create read-only check api

Co-authored-by: René Pfeuffer <rene.pfeuffer@cloudogu.com>
2021-02-04 15:29:49 +01:00
Eduard Heimbuch
e283195530 Fix permission check on branch deletion (#1515) 2021-02-01 14:48:19 +01:00
Sebastian Sdorra
4202178c01 Fix usage of custom realm description for scm protocols (#1512)
Fixes missing usage of custom realm description for scm client operations.

Fixes #1487
2021-01-29 07:59:18 +01:00
Eduard Heimbuch
1115cae81b fix unit tests 2021-01-28 16:03:40 +01:00
Eduard Heimbuch
8ea24e796b remove type from full export endpoint 2021-01-28 14:56:20 +01:00
René Pfeuffer
bd3671b428 Use repository specific work dirs (#1510)
With this change, work dirs are created in the
directory of the repository and no longer in the
global scm work dir directory. This is relevant due
to two facts:

1. Repositories may contain confidential data and therefore
   reside in special directories (that may be mounted on
   special drives). It may be considered a breach when these
   directories are cloned or otherwise copied to global
   temporary drives.
2. Big repositories may overload global temp spaces. It may be
   easier to create special drives with more space for such
   big repositories.
2021-01-28 12:53:39 +01:00
Eduard Heimbuch
d91c71ace1 Add the repository import and export with metadata for Subversion repositories (#1501)
* Add store exporter to collect the repository metadata
* Add EnvironmentInformationXmlGenerator
* Collect export data and put into compressed tar archive output stream
* Create full repository export endpoint.
* Add full repository export to ui
* Ignore irrelevant files from config store directory
* write metadata stores to file since a baos could teardown the server memory
* Migrate store name for git lfs files (#1504)

Changes the directory name for the git LFS blob store by
removing the repository id from the store name.

This is necessary for im- and exports of lfs blob stores,
because the original name had the repository id as a part
of it and therefore the old store would not be found when
the repository is imported with another id.

Existing blob files will be moved to the new store location
by an update step.

Co-authored-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>

* Introduce util for migrations (#1505)

With this util it is more simple to rename
or delete stores.

* Rename files in export

Co-authored-by: René Pfeuffer <rene.pfeuffer@cloudogu.com>
2021-01-28 11:40:35 +01:00
Sebastian Sdorra
6b30da247a Move scm-webapp integration tests to scm-it 2021-01-14 12:01:34 +01:00
Sebastian Sdorra
7e6257ec48 Compile and test scm-webapp 2021-01-14 11:55:27 +01:00
René Pfeuffer
c58bd2f664 Include JRE version in plugin center url (#1494) 2021-01-13 09:18:28 +01:00
Eduard Heimbuch
adf7bac665 Subversion repository export
Add the repository export function for Subversion repositories. The repository will be exported as dump file which can be downloaded directly or inside a gzip compressed archive.
2021-01-08 09:19:33 +01:00
Sebastian Sdorra
dda761ffc2 Fix unit tests on Java 11 (#1483)
The unit test I18nServlet and MultiParentClassLoaderTest are failing on Java 11.
This is because they mock ClassLoaders which cause a jvm error.

The following tickets describe the problem in more detail:

- https://bugs.openjdk.java.net/browse/JDK-8254969
- https://github.com/mockito/mockito/issues/2043
- https://github.com/mockito/mockito/issues/1696
2020-12-18 14:23:36 +01:00
René Pfeuffer
8e3b0e4145 Archive repository (#1477)
This adds a flag "archived" to repositories. Repositories marked with this can no longer be modified in any way. To do this, we switch to a new version of Shiro Static Permissions (sdorra/shiro-static-permissions#4) and specify a permission guard to check for every permission request, whether the repository in question is archived or not. Further we implement checks in stores and other activies so that no writing request may be executed by mistake.

Co-authored-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
2020-12-16 10:58:29 +01:00
Florian Scholdei
88b93dc8b8 Feature/profile navigation (#1464)
- Fix bug where profile settings wasn't shown if user cannot change password
- Add missing "ApiKey" entry in the single user menu

Co-authored-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
2020-12-16 09:23:05 +01:00
Konstantin Schaper
16c76285c0 add repository import via dump for subversion
Subversion repositories can be imported from dump files (backups). Just upload your dump file and check if your file is compressed on the import form for Subversion. The repository will be imported synchronously and you will be redirected to the new repository after the import is finished.
2020-12-14 11:46:35 +01:00
Eduard Heimbuch
a4f559f9c1 Downgrade Jenkins JDK version to Java 8 (#1473)
* Downgrade Jenkins JDK version to Java 8

The unit tests cannot run properly with Java 11.
We have to downgrade our image to use Java 8
instead until we have fixed this issue.

* Fix unit tests that have not been adapted during
   the failed builds

Co-authored-by: René Pfeuffer <rene.pfeuffer@cloudogu.com>
2020-12-14 11:40:50 +01:00
Eduard Heimbuch
821cca2a06 cleanup 2020-12-10 16:22:39 +01:00
Eduard Heimbuch
097237734e Append import bundle link to repository type if unbundle command is supported 2020-12-10 10:36:30 +01:00
Eduard Heimbuch
89add3f795 Add bundle endpoint to repository import resource 2020-12-10 10:27:03 +01:00