├── .github └── workflows │ └── release.yml ├── .gitignore ├── AUTHORS.md ├── CHANGELOG.md ├── COPYING ├── README.md ├── app.svg ├── bin ├── build ├── occ ├── publish ├── release └── server ├── default_settings.patch ├── keeweb-version ├── keeweb ├── .travis.yml ├── AUTHORS.md ├── CHANGELOG.md ├── COPYING ├── Makefile ├── appinfo │ ├── info.xml │ └── routes.php ├── css │ └── style.css ├── img │ └── app.svg ├── js │ ├── script.js │ └── viewer.js ├── lib │ ├── AppInfo │ │ └── Application.php │ ├── Controller │ │ └── PageController.php │ └── Migration │ │ ├── MimeTypeMigration.php │ │ ├── RegisterMimeType.php │ │ └── UnregisterMimeType.php ├── package-lock.json ├── package.json ├── phpunit.integration.xml ├── phpunit.xml ├── src │ └── viewer.js ├── templates │ ├── main.php │ └── manifest.appcache.php ├── tests │ ├── bootstrap.php │ ├── integration │ │ └── AppTest.php │ └── unit │ │ └── controller │ │ └── PageControllerTest.php └── webpack.js ├── mock_codesignconfig.patch └── updater.patch /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | # Before running this, have the changelog and keeweb-version files updated for the new version 2 | 3 | name: Release 4 | on: 5 | workflow_dispatch: 6 | inputs: 7 | version: 8 | description: "The version to build, tag and publish to the appstore, without any v prefix" 9 | required: true 10 | commit_email: 11 | description: "The email address used for the release commit" 12 | required: true 13 | default: "me+release-ci@jhass.eu" 14 | 15 | jobs: 16 | release: 17 | runs-on: ubuntu-latest 18 | steps: 19 | - uses: actions/checkout@v4 20 | - name: Prepare Keeweb 21 | run: | 22 | git clone -b "$(cat keeweb-version)" https://github.com/keeweb/keeweb.git keeweb-source 23 | sudo npm install -g grunt 24 | - name: Build and publish 25 | run: | 26 | git config --local user.email "$COMMIT_EMAIL" 27 | git config --local user.name "Github Actions Release Job" 28 | git remote set-url origin "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$GITHUB_REPOSITORY.git" 29 | echo "$APPSTORE_KEY" > "$SIGNING_KEY" 30 | bin/release "$VERSION" 31 | env: 32 | VERSION: ${{github.event.inputs.version}} 33 | COMMIT_EMAIL: ${{github.event.inputs.commit_email}} 34 | APPSTORE_KEY: ${{secrets.APPSTORE_KEY}} 35 | NC_AUTH_TOKEN: ${{secrets.NC_AUTH_TOKEN}} 36 | SIGNING_KEY: ${{github.workspace}}/keeweb.key 37 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} 38 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | nextcloud/ 3 | ncdev/ 4 | keeweb-source/ 5 | keeweb/build/ 6 | keeweb/templates/keeweb.php 7 | keeweb/templates/service-worker.js 8 | keeweb/js/viewer.js 9 | keeweb/js/viewer.js.map 10 | keeweb/js/viewer.js.LICENSE.txt 11 | keeweb/node_modules/ 12 | .idea/ -------------------------------------------------------------------------------- /AUTHORS.md: -------------------------------------------------------------------------------- 1 | keeweb/AUTHORS.md -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | keeweb/CHANGELOG.md -------------------------------------------------------------------------------- /COPYING: -------------------------------------------------------------------------------- 1 | keeweb/COPYING -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Keeweb for Nextcloud 2 | 3 | **WARNING: KeeWeb itself is not maintained any longer (see note about NC 28 and newer below) and future versions of Nextcloud may not be supported any longer!** 4 | 5 | **Clarification about the KeeWeb upstream for July 2024: eventhough there is some recent activity in the upstream project, the issue 6 | https://github.com/keeweb/keeweb/issues/2022 is still not closed and there is also no new release of KeeWeb yet 7 | (see https://github.com/keeweb/keeweb/releases).** 8 | 9 | **Also keep in mind that KeeWeb only supports files in KDBX 3 format. Files in KDBX 4 format will get corrupted when opening and editing them in KeeWeb, 10 | see [https://github.com/keeweb/keeweb/issues/2001](https://github.com/keeweb/keeweb/issues/2001)! So keep your files in KDBX 3 format if you want to 11 | use them in KeeWeb as well!** 12 | 13 | [Nextcloud](https://nextcloud.com/) is an open source, self-hosted file sync and share and communication app platform. 14 | [Keeweb](https://keeweb.info/) is a web application for working with databases of the Keepass password manager. 15 | 16 | This integrates the two with each other. Just click on a \*.kdbx file in Your Nextcloud to open it. 17 | 18 | ![demo](https://arnowelzel.de/download/nextcloud-keeweb.gif) 19 | 20 | **Note about Nextcloud 28 and newer:** 21 | 22 | Thanks to the help by @florian-forestier, in January 2024 a new release was published which supports Nextcloud 28. 23 | 24 | However as of July 2024 the upstream project "KeeWeb" did not get any official new release since 25 | July 2021 (also see https://github.com/keeweb/keeweb/releases). 26 | 27 | You may have a look at https://github.com/jhass/nextcloud-keeweb/issues/204 (KeeWeb upstream maintenance) and/or 28 | https://github.com/jhass/nextcloud-keeweb/issues/221 (Maintainers for KeeWeb for Nextcloud). 29 | 30 | Any help is appreciated! 31 | 32 | ## Install 33 | 34 | 1. Go to the releases page, download the latest version. 35 | 1. Extract it to `your_nextcloud/custom_apps`, for example with `tar xvf keeweb-0.6.21.tar.gz -C /path/to/your/nextcloud/custom_apps`. 36 | 1. Go to "Apps" and then "Not enabled", scroll down to "Experimental" and enable it. 37 | 38 | To update to a new version, simply repeat these steps. 39 | 40 | ## Development setup 41 | 42 | ``` 43 | git clone https://github.com/jhass/nextcloud-keeweb.git 44 | cd nextcloud-keeweb 45 | 46 | # You can skip this if you only want to build the appstore or source packages 47 | git clone -b stable20 https://github.com/nextcloud/server.git nextcloud 48 | ln -sf "$(pwd)/keeweb" nextcloud/apps 49 | cd nextcloud && git submodule update --init && cd - 50 | 51 | git clone https://github.com/keeweb/keeweb.git keeweb-source 52 | 53 | # Install npm -- this might require a more recent npm than your distro's, see https://github.com/nodesource/distributions on how to deploy it 54 | # Once npm is installed, install grunt and bower; instead of relying on your distro's, you can do 55 | sudo npm install -g grunt 56 | 57 | # Build nextcloud-keeweb - this will build with the current tested release 58 | # If you want to update to a newer version of Keeweb or use the development version, you also need to modify the patches for it 59 | bin/build 60 | 61 | # Finally, run the nextcloud server 62 | bin/server 63 | # Alternatively, you can build the app package to test on a running nextcloud by doing 64 | cd keeweb 65 | make dist 66 | # The package that can be installed in the nextcloud app folder is here: ./build/artifacts/appstore/keeweb.tar.gz 67 | ``` 68 | 69 | ## Contributing 70 | 71 | 1. Fork the repository and clone your fork. 72 | 1. Create a new branch. 73 | 1. Commit your patch. 74 | 1. Push the branch and open a pull request. 75 | -------------------------------------------------------------------------------- /app.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 20 | 22 | 23 | 25 | image/svg+xml 26 | 28 | 29 | 30 | 31 | 32 | 34 | 37 | 41 | 42 | 43 | 64 | 68 | 72 | 76 | 77 | -------------------------------------------------------------------------------- /bin/build: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | realpath() { 5 | [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}" 6 | } 7 | 8 | cd "$(dirname "$(realpath "$0")")/.." 9 | 10 | if [[ ! -d keeweb-source || ! -d keeweb-source/.git ]]; then 11 | echo "keeweb-source is missing or not a git repository" 12 | exit 1 13 | fi 14 | 15 | # This is the Git branch/tag of Keeweb 16 | # 17 | # Please keep in mind that the existing patch files may not work 18 | # when you update to a newer version! 19 | version="$(cat keeweb-version)" 20 | 21 | cd keeweb-source 22 | 23 | echo "Building version $version" 24 | 25 | git clean -xf 26 | git fetch 27 | git checkout . 28 | git checkout "$version" 29 | git symbolic-ref -q HEAD && git pull || true 30 | 31 | git apply < ../mock_codesignconfig.patch 32 | git apply < ../default_settings.patch 33 | git apply < ../updater.patch 34 | 35 | npm install 36 | npm ci 37 | 38 | NODE_OPTIONS=--openssl-legacy-provider npx grunt build-web-app --skip-sign --force 39 | cp -v dist/index.html ../keeweb/templates/keeweb.php 40 | cp -v dist/service-worker.js ../keeweb/templates/ 41 | sed -i -e 's||g' ../keeweb/templates/keeweb.php 42 | sed -i -e 's|>