From 22a084e830dcfaec7a6de14bfc0b21c790ff3d18 Mon Sep 17 00:00:00 2001 From: Bernd Storath <32197462+kaaax0815@users.noreply.github.com> Date: Tue, 17 Dec 2024 13:36:52 +0100 Subject: [PATCH] WIP: Feat: UI, General Improvements (#1397) * update: setup ui page * remove script addition * add admin panel * basic user menu and admin page * make usable admin panel * add radix vue, improve ui * fix features, add toast * rewrite middleware logic, support basic auth * add todo marker * active tailwind forms * remove some console.logs * check if user is enabled frontend doesn't handle this state yet, nothing will work as api routes will fail * add email to user, basic account page * better group database * group even more * basic statistics page * update: admin ui - add: common panel components to get same UI - i18n: french * update: setup page error handle - use fetch error data to provide error message - use translation to provider error message * update: me page * fix: :text props * update: login page * update: i18n french support * fix: use radix toast duration * update: reduce templates - remake: setup page to add others step configuration (host/port/migration) * udpate: setup page use wizard form step * update: ui * update: step page - first step to choose a language - use red color in light mode - validate step before move toward * update: setup page - use radix select component to reduce boilerplate * update: setup page - add: database langugage method - update: api lang & export supported languages * update: setup page - update ui select language - change lang on selection * fix: use global store * fix: initial value - update: sort langs by value * fix: ui center paragraph * fix: remove file extension & some revert - add: script to run checks script * update: setup page - add: host/port section - i18n: french - fix: fallback translation * refactor: split setup into files * update: setup page - redirect to login when the setup is done - allow user to return to previous steps - prompt error message - i18n french * add: migration UI step - rename: components - fix: label for & form child id - i18n french sup * add: migration server * fix: use string instead of File * improve: with zod validation * restore: clients * rework setup * add client page, move api routes * improve setup * switch to agpl * add step back * update licensed under texts cc -> agpl * make db results readonly avoid weird side effects, when modifying the db object as its only allowed inside e.g. lowdb.ts * update footer links * improve client edit page, add mtu * reorder tailwind classes * update packages * update comments * better toast, better avatar * delete feature toggle * remove chart, statistics from server let user decide what he wants to display * move into own components * switch from AGPL-3.0-or-later to AGPL-3.0-only AGPL-3.0-or-later is not OSI approved * fix building source fixes https://github.com/wg-easy/wg-easy/issues/1563 * update packages --------- Co-authored-by: tetuaoro <65575727+tetuaoro@users.noreply.github.com> --- .vscode/settings.json | 4 +- CHANGELOG.md | 9 + Dockerfile | 4 +- Dockerfile.dev | 4 +- LICENSE | 1098 ++-- README.md | 5 +- docs/mkdocs.yml | 2 +- package.json | 2 +- src/.prettierrc.json | 3 +- src/app/app.vue | 19 +- src/app/components/Client/Address4.vue | 60 - src/app/components/Client/Avatar.vue | 31 - src/app/components/Client/Client.vue | 58 - src/app/components/Client/Config.vue | 27 - src/app/components/Client/Delete.vue | 17 - src/app/components/Client/ExpireDate.vue | 91 - src/app/components/Client/InlineTransfer.vue | 29 - src/app/components/Client/Name.vue | 65 - src/app/components/Client/OneTimeLink.vue | 24 - src/app/components/Client/QRCode.vue | 25 - src/app/components/Client/Switch.vue | 40 - src/app/components/ClientCard/Address.vue | 11 + src/app/components/ClientCard/Avatar.vue | 30 + .../{Client => ClientCard}/Charts.vue | 22 +- src/app/components/ClientCard/ClientCard.vue | 47 + src/app/components/ClientCard/Config.vue | 16 + src/app/components/ClientCard/Edit.vue | 14 + src/app/components/ClientCard/ExpireDate.vue | 23 + .../{Client => ClientCard}/LastSeen.vue | 7 +- src/app/components/ClientCard/Name.vue | 16 + src/app/components/ClientCard/OneTimeLink.vue | 17 + .../{Client => ClientCard}/OneTimeLinkBtn.vue | 18 +- src/app/components/ClientCard/QRCode.vue | 17 + src/app/components/ClientCard/Switch.vue | 35 + .../{Client => ClientCard}/Transfer.vue | 4 +- src/app/components/Clients/BackupConfig.vue | 2 +- src/app/components/Clients/CreateDialog.vue | 38 +- src/app/components/Clients/DeleteDialog.vue | 24 +- src/app/components/Clients/Empty.vue | 6 +- .../Clients/{Clients.vue => List.vue} | 4 +- src/app/components/Clients/New.vue | 2 +- src/app/components/Clients/QRCodeDialog.vue | 6 +- src/app/components/Clients/RestoreConfig.vue | 2 +- src/app/components/Clients/Sort.vue | 13 +- src/app/components/base/Avatar.vue | 21 + src/app/components/base/Button.vue | 2 +- src/app/components/{ui => base}/Chart.vue | 0 src/app/components/base/Switch.vue | 16 + src/app/components/base/Toast.vue | 44 + src/app/components/form/ActionField.vue | 11 + src/app/components/form/ArrayField.vue | 38 + src/app/components/form/Group.vue | 9 + src/app/components/form/Heading.vue | 5 + src/app/components/form/NumberField.vue | 17 + src/app/components/form/SwitchField.vue | 11 + src/app/components/form/TextField.vue | 17 + src/app/components/header/ChartToggle.vue | 16 + src/app/components/header/Logo.vue | 11 + src/app/components/header/ThemeSwitch.vue | 28 + src/app/components/header/Update.vue | 27 + src/app/components/icons/ArrowLeftCircle.vue | 15 + src/app/components/icons/ArrowRightCircle.vue | 15 + src/app/components/icons/CheckCircle.vue | 15 + src/app/components/panel/Body.vue | 5 + src/app/components/panel/Panel.vue | 7 + src/app/components/panel/head/Boat.vue | 5 + src/app/components/panel/head/Head.vue | 7 + src/app/components/panel/head/Title.vue | 11 + src/app/components/ui/Banner.vue | 8 + src/app/components/ui/ChooseLang.vue | 46 + src/app/components/ui/Modal.vue | 0 src/app/components/ui/NavBar.vue | 0 src/app/components/ui/StepProgress.vue | 23 + src/app/components/ui/UserMenu.vue | 85 + src/app/layouts/Footer.vue | 37 - src/app/layouts/Header.vue | 124 - src/app/layouts/default.vue | 68 + src/app/layouts/setup.vue | 29 + src/app/pages/admin.vue | 53 + src/app/pages/admin/defaults.vue | 24 + src/app/pages/admin/index.vue | 9 + src/app/pages/admin/interface.vue | 19 + src/app/pages/admin/metrics.vue | 3 + src/app/pages/clients/[id].vue | 66 + src/app/pages/index.vue | 58 +- src/app/pages/login.vue | 60 +- src/app/pages/me.vue | 120 + src/app/pages/setup.vue | 106 - src/app/pages/setup/1.vue | 42 + src/app/pages/setup/2.vue | 19 + src/app/pages/setup/3.vue | 16 + src/app/pages/setup/4.vue | 79 + src/app/pages/setup/5.vue | 67 + src/app/pages/setup/migrate.vue | 78 + src/app/pages/setup/success.vue | 14 + src/app/stores/auth.ts | 28 +- src/app/stores/clients.ts | 5 +- src/app/stores/global.ts | 69 +- src/app/stores/setup.ts | 84 + src/app/utils/api.ts | 82 +- src/app/utils/chart.ts | 6 + src/app/utils/localStorage.ts | 1 + src/app/utils/math.ts | 1 + src/{ => i18n}/i18n.config.ts | 1 + src/{ => i18n}/localeDetector.ts | 0 src/{ => i18n}/locales/be.json | 0 src/{ => i18n}/locales/ca.json | 0 src/{ => i18n}/locales/de.json | 0 src/i18n/locales/en.json | 122 + src/{ => i18n}/locales/es.json | 0 src/i18n/locales/fr.json | 122 + src/{ => i18n}/locales/hi.json | 0 src/{ => i18n}/locales/is.json | 0 src/{ => i18n}/locales/it.json | 0 src/{ => i18n}/locales/ko.json | 0 src/{ => i18n}/locales/nl.json | 0 src/{ => i18n}/locales/no.json | 0 src/{ => i18n}/locales/pl.json | 0 src/{ => i18n}/locales/pt.json | 0 src/{ => i18n}/locales/ru.json | 0 src/{ => i18n}/locales/th.json | 0 src/{ => i18n}/locales/tr.json | 0 src/{ => i18n}/locales/ua.json | 0 src/{ => i18n}/locales/vi.json | 0 src/{ => i18n}/locales/zh-chs.json | 0 src/{ => i18n}/locales/zh-cht.json | 0 src/locales/en.json | 57 - src/locales/fr.json | 56 - src/nuxt.config.ts | 1 + src/package.json | 41 +- src/pnpm-lock.yaml | 5095 +++++++++-------- src/server/api/account/create.post.ts | 8 - src/server/api/admin/hostport.post.ts | 8 + src/server/api/admin/lang.post.ts | 5 + .../client/[clientId]/address4.put.ts | 0 .../client/[clientId]/configuration.get.ts | 0 .../client/[clientId]/disable.post.ts | 0 .../client/[clientId]/enable.post.ts | 0 .../client/[clientId]/expireDate.put.ts | 0 .../[clientId]/generateOneTimeLink.post.ts | 8 + .../client/[clientId]/index.delete.ts | 0 src/server/api/client/[clientId]/index.get.ts | 7 + .../client/[clientId]/name.put.ts | 0 .../client/[clientId]/qrcode.svg.get.ts | 0 .../api/{wireguard => }/client/index.get.ts | 0 .../api/{wireguard => }/client/index.post.ts | 0 src/server/api/cnf/[oneTimeLink].ts | 7 - src/server/api/features.get.ts | 9 - src/server/api/lang.get.ts | 2 +- src/server/api/session.get.ts | 21 +- src/server/api/session.post.ts | 13 +- src/server/api/setup/1.post.ts | 14 + .../setup.post.ts => setup/4.post.ts} | 14 +- src/server/api/setup/5.post.ts | 17 + src/server/api/setup/migrate.post.ts | 86 + .../[clientId]/generateOneTimeLink.post.ts | 15 - src/server/middleware/auth.ts | 27 +- src/server/middleware/session.ts | 93 +- src/server/middleware/setup.ts | 32 +- src/server/utils/WireGuard.ts | 50 +- src/server/utils/config.ts | 71 - src/server/utils/ip.ts | 16 +- src/server/utils/release.ts | 4 + src/server/utils/session.ts | 8 +- src/server/utils/types.ts | 146 +- src/server/utils/wgHelper.ts | 20 +- src/services/database/lowdb.ts | 73 +- src/services/database/migrations/1.ts | 61 +- src/services/database/repositories/client.ts | 8 +- .../database/repositories/database.ts | 7 +- src/services/database/repositories/setup.ts | 11 + src/services/database/repositories/system.ts | 52 +- src/services/database/repositories/user.ts | 22 +- src/shared/locales.ts | 22 + src/tailwind.config.ts | 21 +- 175 files changed, 5891 insertions(+), 4455 deletions(-) delete mode 100644 src/app/components/Client/Address4.vue delete mode 100644 src/app/components/Client/Avatar.vue delete mode 100644 src/app/components/Client/Client.vue delete mode 100644 src/app/components/Client/Config.vue delete mode 100644 src/app/components/Client/Delete.vue delete mode 100644 src/app/components/Client/ExpireDate.vue delete mode 100644 src/app/components/Client/InlineTransfer.vue delete mode 100644 src/app/components/Client/Name.vue delete mode 100644 src/app/components/Client/OneTimeLink.vue delete mode 100644 src/app/components/Client/QRCode.vue delete mode 100644 src/app/components/Client/Switch.vue create mode 100644 src/app/components/ClientCard/Address.vue create mode 100644 src/app/components/ClientCard/Avatar.vue rename src/app/components/{Client => ClientCard}/Charts.vue (71%) create mode 100644 src/app/components/ClientCard/ClientCard.vue create mode 100644 src/app/components/ClientCard/Config.vue create mode 100644 src/app/components/ClientCard/Edit.vue create mode 100644 src/app/components/ClientCard/ExpireDate.vue rename src/app/components/{Client => ClientCard}/LastSeen.vue (56%) create mode 100644 src/app/components/ClientCard/Name.vue create mode 100644 src/app/components/ClientCard/OneTimeLink.vue rename src/app/components/{Client => ClientCard}/OneTimeLinkBtn.vue (57%) create mode 100644 src/app/components/ClientCard/QRCode.vue create mode 100644 src/app/components/ClientCard/Switch.vue rename src/app/components/{Client => ClientCard}/Transfer.vue (89%) rename src/app/components/Clients/{Clients.vue => List.vue} (54%) create mode 100644 src/app/components/base/Avatar.vue rename src/app/components/{ui => base}/Chart.vue (100%) create mode 100644 src/app/components/base/Switch.vue create mode 100644 src/app/components/base/Toast.vue create mode 100644 src/app/components/form/ActionField.vue create mode 100644 src/app/components/form/ArrayField.vue create mode 100644 src/app/components/form/Group.vue create mode 100644 src/app/components/form/Heading.vue create mode 100644 src/app/components/form/NumberField.vue create mode 100644 src/app/components/form/SwitchField.vue create mode 100644 src/app/components/form/TextField.vue create mode 100644 src/app/components/header/ChartToggle.vue create mode 100644 src/app/components/header/Logo.vue create mode 100644 src/app/components/header/ThemeSwitch.vue create mode 100644 src/app/components/header/Update.vue create mode 100644 src/app/components/icons/ArrowLeftCircle.vue create mode 100644 src/app/components/icons/ArrowRightCircle.vue create mode 100644 src/app/components/icons/CheckCircle.vue create mode 100644 src/app/components/panel/Body.vue create mode 100644 src/app/components/panel/Panel.vue create mode 100644 src/app/components/panel/head/Boat.vue create mode 100644 src/app/components/panel/head/Head.vue create mode 100644 src/app/components/panel/head/Title.vue create mode 100644 src/app/components/ui/Banner.vue create mode 100644 src/app/components/ui/ChooseLang.vue delete mode 100644 src/app/components/ui/Modal.vue delete mode 100644 src/app/components/ui/NavBar.vue create mode 100644 src/app/components/ui/StepProgress.vue create mode 100644 src/app/components/ui/UserMenu.vue delete mode 100644 src/app/layouts/Footer.vue delete mode 100644 src/app/layouts/Header.vue create mode 100644 src/app/layouts/default.vue create mode 100644 src/app/layouts/setup.vue create mode 100644 src/app/pages/admin.vue create mode 100644 src/app/pages/admin/defaults.vue create mode 100644 src/app/pages/admin/index.vue create mode 100644 src/app/pages/admin/interface.vue create mode 100644 src/app/pages/admin/metrics.vue create mode 100644 src/app/pages/clients/[id].vue create mode 100644 src/app/pages/me.vue delete mode 100644 src/app/pages/setup.vue create mode 100644 src/app/pages/setup/1.vue create mode 100644 src/app/pages/setup/2.vue create mode 100644 src/app/pages/setup/3.vue create mode 100644 src/app/pages/setup/4.vue create mode 100644 src/app/pages/setup/5.vue create mode 100644 src/app/pages/setup/migrate.vue create mode 100644 src/app/pages/setup/success.vue create mode 100644 src/app/stores/setup.ts rename src/{ => i18n}/i18n.config.ts (98%) rename src/{ => i18n}/localeDetector.ts (100%) rename src/{ => i18n}/locales/be.json (100%) rename src/{ => i18n}/locales/ca.json (100%) rename src/{ => i18n}/locales/de.json (100%) create mode 100644 src/i18n/locales/en.json rename src/{ => i18n}/locales/es.json (100%) create mode 100644 src/i18n/locales/fr.json rename src/{ => i18n}/locales/hi.json (100%) rename src/{ => i18n}/locales/is.json (100%) rename src/{ => i18n}/locales/it.json (100%) rename src/{ => i18n}/locales/ko.json (100%) rename src/{ => i18n}/locales/nl.json (100%) rename src/{ => i18n}/locales/no.json (100%) rename src/{ => i18n}/locales/pl.json (100%) rename src/{ => i18n}/locales/pt.json (100%) rename src/{ => i18n}/locales/ru.json (100%) rename src/{ => i18n}/locales/th.json (100%) rename src/{ => i18n}/locales/tr.json (100%) rename src/{ => i18n}/locales/ua.json (100%) rename src/{ => i18n}/locales/vi.json (100%) rename src/{ => i18n}/locales/zh-chs.json (100%) rename src/{ => i18n}/locales/zh-cht.json (100%) delete mode 100644 src/locales/en.json delete mode 100644 src/locales/fr.json delete mode 100644 src/server/api/account/create.post.ts create mode 100644 src/server/api/admin/hostport.post.ts create mode 100644 src/server/api/admin/lang.post.ts rename src/server/api/{wireguard => }/client/[clientId]/address4.put.ts (100%) rename src/server/api/{wireguard => }/client/[clientId]/configuration.get.ts (100%) rename src/server/api/{wireguard => }/client/[clientId]/disable.post.ts (100%) rename src/server/api/{wireguard => }/client/[clientId]/enable.post.ts (100%) rename src/server/api/{wireguard => }/client/[clientId]/expireDate.put.ts (100%) create mode 100644 src/server/api/client/[clientId]/generateOneTimeLink.post.ts rename src/server/api/{wireguard => }/client/[clientId]/index.delete.ts (100%) create mode 100644 src/server/api/client/[clientId]/index.get.ts rename src/server/api/{wireguard => }/client/[clientId]/name.put.ts (100%) rename src/server/api/{wireguard => }/client/[clientId]/qrcode.svg.get.ts (100%) rename src/server/api/{wireguard => }/client/index.get.ts (100%) rename src/server/api/{wireguard => }/client/index.post.ts (100%) delete mode 100644 src/server/api/features.get.ts create mode 100644 src/server/api/setup/1.post.ts rename src/server/api/{account/setup.post.ts => setup/4.post.ts} (68%) create mode 100644 src/server/api/setup/5.post.ts create mode 100644 src/server/api/setup/migrate.post.ts delete mode 100644 src/server/api/wireguard/client/[clientId]/generateOneTimeLink.post.ts create mode 100644 src/services/database/repositories/setup.ts create mode 100644 src/shared/locales.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 1cc37767..c13f301f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -17,9 +17,9 @@ "vue" ], "i18n-ally.localesPaths": [ - "src/locales" + "src/i18n/locales" ], "i18n-ally.sortKeys": false, "i18n-ally.keepFulfilled": false, "i18n-ally.keystyle": "nested" -} \ No newline at end of file +} diff --git a/CHANGELOG.md b/CHANGELOG.md index e842e6bc..d4b50efa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,15 @@ This update is an entire rewrite to make it even easier to set up your own VPN. - Almost all Environment variables removed - New and Improved UI +- API Basic Authentication +- Added Docs +- Incrementing Version -> Semantic Versioning +- CIDR Support +- IPv6 Support +- Changed API Structure +- Changed Database Structure +- Deprecated Dockerless Installations +- Added Docker Volume Mount ## Minor Changes diff --git a/Dockerfile b/Dockerfile index 00898c39..65b66d62 100644 --- a/Dockerfile +++ b/Dockerfile @@ -36,8 +36,8 @@ RUN apk add --no-cache \ wireguard-tools # Use iptables-legacy -RUN update-alternatives --install /sbin/iptables iptables /sbin/iptables-legacy 10 --slave /sbin/iptables-restore iptables-restore /sbin/iptables-legacy-restore --slave /sbin/iptables-save iptables-save /sbin/iptables-legacy-save -RUN update-alternatives --install /sbin/ip6tables ip6tables /sbin/ip6tables-legacy 10 --slave /sbin/ip6tables-restore ip6tables-restore /sbin/ip6tables-legacy-restore --slave /sbin/ip6tables-save ip6tables-save /sbin/ip6tables-legacy-save +RUN update-alternatives --install /usr/sbin/iptables iptables /usr/sbin/iptables-legacy 10 --slave /usr/sbin/iptables-restore iptables-restore /usr/sbin/iptables-legacy-restore --slave /usr/sbin/iptables-save iptables-save /usr/sbin/iptables-legacy-save +RUN update-alternatives --install /usr/sbin/ip6tables ip6tables /usr/sbin/ip6tables-legacy 10 --slave /usr/sbin/ip6tables-restore ip6tables-restore /usr/sbin/ip6tables-legacy-restore --slave /usr/sbin/ip6tables-save ip6tables-save /usr/sbin/ip6tables-legacy-save # Set Environment ENV DEBUG=Server,WireGuard,LowDB diff --git a/Dockerfile.dev b/Dockerfile.dev index f99336ee..cbd03238 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -23,8 +23,8 @@ RUN apk add --no-cache \ wireguard-tools # Use iptables-legacy -RUN update-alternatives --install /sbin/iptables iptables /sbin/iptables-legacy 10 --slave /sbin/iptables-restore iptables-restore /sbin/iptables-legacy-restore --slave /sbin/iptables-save iptables-save /sbin/iptables-legacy-save -RUN update-alternatives --install /sbin/ip6tables ip6tables /sbin/ip6tables-legacy 10 --slave /sbin/ip6tables-restore ip6tables-restore /sbin/ip6tables-legacy-restore --slave /sbin/ip6tables-save ip6tables-save /sbin/ip6tables-legacy-save +RUN update-alternatives --install /usr/sbin/iptables iptables /usr/sbin/iptables-legacy 10 --slave /usr/sbin/iptables-restore iptables-restore /usr/sbin/iptables-legacy-restore --slave /usr/sbin/iptables-save iptables-save /usr/sbin/iptables-legacy-save +RUN update-alternatives --install /usr/sbin/ip6tables ip6tables /usr/sbin/ip6tables-legacy 10 --slave /usr/sbin/ip6tables-restore ip6tables-restore /usr/sbin/ip6tables-legacy-restore --slave /usr/sbin/ip6tables-save ip6tables-save /usr/sbin/ip6tables-legacy-save # Set Environment ENV DEBUG=Server,WireGuard,LowDB diff --git a/LICENSE b/LICENSE index cbe5ad16..be3f7b28 100644 --- a/LICENSE +++ b/LICENSE @@ -1,437 +1,661 @@ -Attribution-NonCommercial-ShareAlike 4.0 International - -======================================================================= - -Creative Commons Corporation ("Creative Commons") is not a law firm and -does not provide legal services or legal advice. Distribution of -Creative Commons public licenses does not create a lawyer-client or -other relationship. Creative Commons makes its licenses and related -information available on an "as-is" basis. Creative Commons gives no -warranties regarding its licenses, any material licensed under their -terms and conditions, or any related information. Creative Commons -disclaims all liability for damages resulting from their use to the -fullest extent possible. - -Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and -conditions that creators and other rights holders may use to share -original works of authorship and other material subject to copyright -and certain other rights specified in the public license below. The -following considerations are for informational purposes only, are not -exhaustive, and do not form part of our licenses. - - Considerations for licensors: Our public licenses are - intended for use by those authorized to give the public - permission to use material in ways otherwise restricted by - copyright and certain other rights. Our licenses are - irrevocable. Licensors should read and understand the terms - and conditions of the license they choose before applying it. - Licensors should also secure all rights necessary before - applying our licenses so that the public can reuse the - material as expected. Licensors should clearly mark any - material not subject to the license. This includes other CC- - licensed material, or material used under an exception or - limitation to copyright. More considerations for licensors: - wiki.creativecommons.org/Considerations_for_licensors - - Considerations for the public: By using one of our public - licenses, a licensor grants the public permission to use the - licensed material under specified terms and conditions. If - the licensor's permission is not necessary for any reason--for - example, because of any applicable exception or limitation to - copyright--then that use is not regulated by the license. Our - licenses grant only permissions under copyright and certain - other rights that a licensor has authority to grant. Use of - the licensed material may still be restricted for other - reasons, including because others have copyright or other - rights in the material. A licensor may make special requests, - such as asking that all changes be marked or described. - Although not required by our licenses, you are encouraged to - respect those requests where reasonable. More considerations - for the public: - wiki.creativecommons.org/Considerations_for_licensees - -======================================================================= - -Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International -Public License - -By exercising the Licensed Rights (defined below), You accept and agree -to be bound by the terms and conditions of this Creative Commons -Attribution-NonCommercial-ShareAlike 4.0 International Public License -("Public License"). To the extent this Public License may be -interpreted as a contract, You are granted the Licensed Rights in -consideration of Your acceptance of these terms and conditions, and the -Licensor grants You such rights in consideration of benefits the -Licensor receives from making the Licensed Material available under -these terms and conditions. - - -Section 1 -- Definitions. - - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. - - c. BY-NC-SA Compatible License means a license listed at - creativecommons.org/compatiblelicenses, approved by Creative - Commons as essentially the equivalent of this Public License. - - d. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - - e. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - - f. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - - g. License Elements means the license attributes listed in the name - of a Creative Commons Public License. The License Elements of this - Public License are Attribution, NonCommercial, and ShareAlike. - - h. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - - i. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - - j. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - - k. NonCommercial means not primarily intended for or directed towards - commercial advantage or monetary compensation. For purposes of - this Public License, the exchange of the Licensed Material for - other material subject to Copyright and Similar Rights by digital - file-sharing or similar means is NonCommercial provided there is - no payment of monetary compensation in connection with the - exchange. - - l. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - - m. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - - n. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - - -Section 2 -- Scope. - - a. License grant. - - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - - a. reproduce and Share the Licensed Material, in whole or - in part, for NonCommercial purposes only; and - - b. produce, reproduce, and Share Adapted Material for - NonCommercial purposes only. - - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - - 3. Term. The term of this Public License is specified in Section - 6(a). - - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - - 5. Downstream recipients. - - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - - b. Additional offer from the Licensor -- Adapted Material. - Every recipient of Adapted Material from You - automatically receives an offer from the Licensor to - exercise the Licensed Rights in the Adapted Material - under the conditions of the Adapter's License You apply. - - c. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - - b. Other rights. - - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this - Public License. - - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties, including when - the Licensed Material is used other than for NonCommercial - purposes. - - -Section 3 -- License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the -following conditions. - - a. Attribution. - - 1. If You Share the Licensed Material (including in modified - form), You must: - - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of - warranties; - - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - - b. ShareAlike. - - In addition to the conditions in Section 3(a), if You Share - Adapted Material You produce, the following conditions also apply. - - 1. The Adapter's License You apply must be a Creative Commons - license with the same License Elements, this version or - later, or a BY-NC-SA Compatible License. - - 2. You must include the text of, or the URI or hyperlink to, the - Adapter's License You apply. You may satisfy this condition - in any reasonable manner based on the medium, means, and - context in which You Share Adapted Material. - - 3. You may not offer or impose any additional or different terms - or conditions on, or apply any Effective Technological - Measures to, Adapted Material that restrict exercise of the - rights granted under the Adapter's License You apply. - - -Section 4 -- Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that -apply to Your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database for NonCommercial purposes - only; - - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material, - including for purposes of Section 3(b); and - - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not -replace Your obligations under this Public License where the Licensed -Rights include other Copyright and Similar Rights. - - -Section 5 -- Disclaimer of Warranties and Limitation of Liability. - - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - - -Section 6 -- Term and Termination. - - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - - -Section 7 -- Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - - -Section 8 -- Interpretation. - - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. - -======================================================================= - -Creative Commons is not a party to its public -licenses. Notwithstanding, Creative Commons may elect to apply one of -its public licenses to material it publishes and in those instances -will be considered the “Licensor.” The text of the Creative Commons -public licenses is dedicated to the public domain under the CC0 Public -Domain Dedication. Except for the limited purpose of indicating that -material is shared under a Creative Commons public license or as -otherwise permitted by the Creative Commons policies published at -creativecommons.org/policies, Creative Commons does not authorize the -use of the trademark "Creative Commons" or any other trademark or logo -of Creative Commons without its prior written consent including, -without limitation, in connection with any unauthorized modifications -to any of its public licenses or any other arrangements, -understandings, or agreements concerning use of licensed material. For -the avoidance of doubt, this paragraph does not form part of the -public licenses. - -Creative Commons may be contacted at creativecommons.org. + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/README.md b/README.md index bf0269ff..ea0009f2 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,8 @@ And log in again. ### 2. Run WireGuard Easy + + To setup the IPv6 Network, simply run once: ```bash @@ -85,6 +87,7 @@ To automatically install & run wg-easy, simply run: --ip6 fdcc:ad94:bacf:61a3::2a \ --ip 10.42.42.42 \ -v ~/.wg-easy:/etc/wireguard \ + -v /lib/modules:/lib/modules:ro \ -p 51820:51820/udp \ -p 51821:51821/tcp \ --cap-add NET_ADMIN \ @@ -100,7 +103,7 @@ To automatically install & run wg-easy, simply run: The Web UI will now be available on `http://0.0.0.0:51821`. -The Prometheus metrics will now be available on `http://0.0.0.0:51821/metrics`. Grafana dashboard [21733](https://grafana.com/grafana/dashboards/21733-wireguard/) +The Prometheus metrics will now be available on `http://0.0.0.0:51821/api/metrics`. Grafana dashboard [21733](https://grafana.com/grafana/dashboards/21733-wireguard/) > 💡 Your configuration files will be saved in `~/.wg-easy` diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 194e2a17..a32a174f 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -1,7 +1,7 @@ site_name: "wg-easy" site_description: "The easiest way to run WireGuard VPN + Web-based Admin UI." site_author: "wg-easy (Github Organization)" -copyright: '

© Wireguard Easy Organization
This project is licensed under the CC BY-NC-SA 4.0 license.

' +copyright: '

© Wireguard Easy Organization
This project is licensed under the GNU Affero General Public License v3.0 or later.

' repo_url: https://github.com/wg-easy/wg-easy repo_name: wg-easy diff --git a/package.json b/package.json index 28f7bdda..1dc516ef 100644 --- a/package.json +++ b/package.json @@ -5,5 +5,5 @@ "dev": "docker compose -f docker-compose.dev.yml up", "build": "docker build -t wg-easy ." }, - "packageManager": "pnpm@9.10.0" + "packageManager": "pnpm@9.15.0" } diff --git a/src/.prettierrc.json b/src/.prettierrc.json index 0a725205..97cb2b53 100644 --- a/src/.prettierrc.json +++ b/src/.prettierrc.json @@ -2,5 +2,6 @@ "trailingComma": "es5", "tabWidth": 2, "semi": true, - "singleQuote": true + "singleQuote": true, + "plugins": ["prettier-plugin-tailwindcss"] } diff --git a/src/app/app.vue b/src/app/app.vue index 636ca56d..d750f00e 100644 --- a/src/app/app.vue +++ b/src/app/app.vue @@ -1,15 +1,16 @@ diff --git a/src/app/components/Client/Avatar.vue b/src/app/components/Client/Avatar.vue deleted file mode 100644 index 3afb0fb1..00000000 --- a/src/app/components/Client/Avatar.vue +++ /dev/null @@ -1,31 +0,0 @@ - - - diff --git a/src/app/components/Client/Client.vue b/src/app/components/Client/Client.vue deleted file mode 100644 index c1a9295e..00000000 --- a/src/app/components/Client/Client.vue +++ /dev/null @@ -1,58 +0,0 @@ - - - diff --git a/src/app/components/Client/Config.vue b/src/app/components/Client/Config.vue deleted file mode 100644 index daaa71a5..00000000 --- a/src/app/components/Client/Config.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/src/app/components/Client/Delete.vue b/src/app/components/Client/Delete.vue deleted file mode 100644 index d0e962e0..00000000 --- a/src/app/components/Client/Delete.vue +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/src/app/components/Client/ExpireDate.vue b/src/app/components/Client/ExpireDate.vue deleted file mode 100644 index c36f4a58..00000000 --- a/src/app/components/Client/ExpireDate.vue +++ /dev/null @@ -1,91 +0,0 @@ - - - diff --git a/src/app/components/Client/InlineTransfer.vue b/src/app/components/Client/InlineTransfer.vue deleted file mode 100644 index 7d62348f..00000000 --- a/src/app/components/Client/InlineTransfer.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - diff --git a/src/app/components/Client/Name.vue b/src/app/components/Client/Name.vue deleted file mode 100644 index 360f46a5..00000000 --- a/src/app/components/Client/Name.vue +++ /dev/null @@ -1,65 +0,0 @@ - - - diff --git a/src/app/components/Client/OneTimeLink.vue b/src/app/components/Client/OneTimeLink.vue deleted file mode 100644 index f859cd1c..00000000 --- a/src/app/components/Client/OneTimeLink.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - diff --git a/src/app/components/Client/QRCode.vue b/src/app/components/Client/QRCode.vue deleted file mode 100644 index 728fa7fe..00000000 --- a/src/app/components/Client/QRCode.vue +++ /dev/null @@ -1,25 +0,0 @@ - - - diff --git a/src/app/components/Client/Switch.vue b/src/app/components/Client/Switch.vue deleted file mode 100644 index 95be64ff..00000000 --- a/src/app/components/Client/Switch.vue +++ /dev/null @@ -1,40 +0,0 @@ - - - diff --git a/src/app/components/ClientCard/Address.vue b/src/app/components/ClientCard/Address.vue new file mode 100644 index 00000000..e7957d30 --- /dev/null +++ b/src/app/components/ClientCard/Address.vue @@ -0,0 +1,11 @@ + + + diff --git a/src/app/components/ClientCard/Avatar.vue b/src/app/components/ClientCard/Avatar.vue new file mode 100644 index 00000000..e4e3a3f1 --- /dev/null +++ b/src/app/components/ClientCard/Avatar.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/app/components/Client/Charts.vue b/src/app/components/ClientCard/Charts.vue similarity index 71% rename from src/app/components/Client/Charts.vue rename to src/app/components/ClientCard/Charts.vue index 1b64bdf7..f052151b 100644 --- a/src/app/components/Client/Charts.vue +++ b/src/app/components/ClientCard/Charts.vue @@ -1,15 +1,13 @@