-
-
Save markasoftware/f5b2e55a2c2e3abb1f9eefcdf0bfff45 to your computer and use it in GitHub Desktop.
############ REPLACE app/models/enterprise_token.rb in the source code with this file! ################ | |
############ also be sure to RESTART OpenProject after replacing the file. ################ | |
############ it doesn't show that enterprise mode is enabled in the settings, but all ################ | |
############ enterprise mode features, such as KanBan boards, are enabled. ################ | |
#-- copyright | |
# OpenProject is an open source project management software. | |
# Copyright (C) 2012-2023 the OpenProject GmbH | |
# | |
# This program is free software; you can redistribute it and/or | |
# modify it under the terms of the GNU General Public License version 3. | |
# | |
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: | |
# Copyright (C) 2006-2013 Jean-Philippe Lang | |
# Copyright (C) 2010-2013 the ChiliProject Team | |
# | |
# This program is free software; you can redistribute it and/or | |
# modify it under the terms of the GNU General Public License | |
# as published by the Free Software Foundation; either version 2 | |
# 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 General Public License for more details. | |
# | |
# You should have received a copy of the GNU General Public License | |
# along with this program; if not, write to the Free Software | |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
# | |
# See COPYRIGHT and LICENSE files for more details. | |
#++ | |
class EnterpriseToken < ApplicationRecord | |
class << self | |
def current | |
RequestStore.fetch(:current_ee_token) do | |
set_current_token | |
end | |
end | |
def table_exists? | |
connection.data_source_exists? table_name | |
end | |
def allows_to?(action) | |
true | |
end | |
def active? | |
true | |
end | |
def show_banners? | |
false | |
end | |
def set_current_token | |
token = EnterpriseToken.order(Arel.sql('created_at DESC')).first | |
if token&.token_object | |
token | |
end | |
end | |
end | |
validates :encoded_token, presence: true | |
validate :valid_token_object | |
validate :valid_domain | |
before_save :unset_current_token | |
before_destroy :unset_current_token | |
delegate :will_expire?, | |
:subscriber, | |
:mail, | |
:company, | |
:domain, | |
:issued_at, | |
:starts_at, | |
:expires_at, | |
:reprieve_days, | |
:reprieve_days_left, | |
:restrictions, | |
to: :token_object | |
def token_object | |
load_token! unless defined?(@token_object) | |
@token_object | |
end | |
def allows_to?(action) | |
true | |
end | |
def unset_current_token | |
# Clear current cache | |
RequestStore.delete :current_ee_token | |
end | |
def expired?(reprieve: true) | |
false | |
end | |
## | |
# The domain is only validated for tokens from version 2.0 onwards. | |
def invalid_domain? | |
false | |
end | |
private | |
def load_token! | |
@token_object = OpenProject::Token.import(encoded_token) | |
rescue OpenProject::Token::ImportError => e | |
Rails.logger.error "Failed to load EE token: #{e}" | |
nil | |
end | |
def valid_token_object | |
errors.add(:encoded_token, :unreadable) unless load_token! | |
end | |
def valid_domain | |
errors.add :domain, :invalid if invalid_domain? | |
end | |
end |
Can confirm this is still working as described in the non-docker package based installation in 2024 as well.
For those running a docker container you can runt this command (and add it to a cron job if you're interested):
docker exec -t openproject-web-1 /usr/bin/curl "https://gist.githubusercontent.com/markasoftware/f5b2e55a2c2e3abb1f9eefcdf0bfff45/raw/148c5067e30eae04f96e3233144b4404f70ade47/enterprise_token.rb" -o /app/app/models/enterprise_token.rb && docker restart openproject-seeder-1 openproject-web-1
EDIT: this is for the official One container per process
setup.
docker exec -t openproject-web-1 /usr/bin/curl "https://gist.githubusercontent.com/markasoftware/f5b2e55a2c2e3abb1f9eefcdf0bfff45/raw/148c5067e30eae04f96e3233144b4404f70ade47/enterprise_token.rb" -o /app/app/models/enterprise_token.rb && docker restart openproject-seeder-1 openproject-web-1
Have just tried to run this command with no joy unfortunately.
Core version
OpenProject 12.5.8
PostgreSQL version
13.11
Running on Easypanel with Portainer also installed.
No errors, nothing broken - simply didn't function correctly and premium features are still stuck behind upsales.
docker exec -t openproject-web-1 /usr/bin/curl "https://gist.githubusercontent.com/markasoftware/f5b2e55a2c2e3abb1f9eefcdf0bfff45/raw/148c5067e30eae04f96e3233144b4404f70ade47/enterprise_token.rb" -o /app/app/models/enterprise_token.rb && docker restart openproject-seeder-1 openproject-web-1
Have just tried to run this command with no joy unfortunately.
Core version OpenProject 12.5.8 PostgreSQL version 13.11
Running on Easypanel with Portainer also installed.
No errors, nothing broken - simply didn't function correctly and premium features are still stuck behind upsales.
Did you try to run the whole command inside the docker container? Because that won't work. You need to run this from the host changing the open-project-web-1
container name if you modified the service and/or container name docker-compose.yml
file provided by OpenProject.
This has nothing to do with Portainer and has to be run on the host itself. @harryburr
Did you try to run the whole command inside the docker container? Because that won't work. You need to run this from the host changing the
open-project-web-1
container name if you modified the service and/or container namedocker-compose.yml
file provided by OpenProject.
Thanks @jiriks74. I ran that command while in the Docker container directory (/var/lib/docker/containers/f6627bfd5f76a3f52bbe1de8455c4043bd4ceea00e8c55217c8f18cfaafb1d41) - and replaced 'openproject-web-1' and openproject-seeder-1 openproject-web-1
with the container name (f6627bfd5f76a3f52bbe1de8455c4043bd4ceea00e8c55217c8f18cfaafb1d41)
Have just tried to run from the root directory (/) also with no joy.
Ignore my stupidity if that's not what you meant.
Did you try to run the whole command inside the docker container? Because that won't work. You need to run this from the host changing the
open-project-web-1
container name if you modified the service and/or container namedocker-compose.yml
file provided by OpenProject.Thanks @jiriks74. I ran that command while in the Docker container directory (/var/lib/docker/containers/f6627bfd5f76a3f52bbe1de8455c4043bd4ceea00e8c55217c8f18cfaafb1d41) - and replaced 'openproject-web-1' and
openproject-seeder-1 openproject-web-1
with the container name (f6627bfd5f76a3f52bbe1de8455c4043bd4ceea00e8c55217c8f18cfaafb1d41)Have just tried to run from the root directory (/) also with no joy.
Ignore my stupidity if that's not what you meant.
If you'd be willing to do so you can run it in asciinema. Be sure to not run anything that would expose your passwords, secrets, etc.
What I meant was:
ssh <your-server>
docker exec -t openproject-web-1 /usr/bin/curl "https://gist.githubusercontent.com/markasoftware/f5b2e55a2c2e3abb1f9eefcdf0bfff45/raw/148c5067e30eae04f96e3233144b4404f70ade47/enterprise_token.rb" -o /app/app/models/enterprise_token.rb && docker restart openproject-seeder-1 openproject-web-1
or
ssh <your-server>
sudo crontab -e
and put something like
0 0 * * * docker exec -t openproject-web-1 /usr/bin/curl "https://gist.githubusercontent.com/markasoftware/f5b2e55a2c2e3abb1f9eefcdf0bfff45/raw/148c5067e30eae04f96e3233144b4404f70ade47/enterprise_token.rb" -o /app/app/models/enterprise_token.rb && docker restart openproject-seeder-1 openproject-web-1
so that cron
updates the file automatically at midnight and restarts OpenProject.
The command that is ran inside the container is:
/usr/bin/curl "https://gist.githubusercontent.com/markasoftware/f5b2e55a2c2e3abb1f9eefcdf0bfff45/raw/148c5067e30eae04f96e3233144b4404f70ade47/enterprise_token.rb" -o /app/app/models/enterprise_token.rb
The docker exec -t openproject-web-1
part tells your server to run that command in the container. The && docker restart openproject-seeder-1 openproject-web-1
part tells your server to restart OpenProject after the first command succeeds so that OpenProject loads the new file.
If you'd be willing to do so you can run it in asciinema. Be sure to not run anything that would expose your passwords, secrets, etc.
https://asciinema.org/a/Z7KbSwV3IS6YhIeZi5Trlmbt1
Does that help at all @jiriks74?
Have just attempted following those instructions again with no joy - still getting upsale screens unfortunately. Ran that in my root user directory straight after ssh'ing in.
Try to go into the container and head /app/app/models/enterprise_token.rb
and see whether
############ REPLACE app/models/enterprise_token.rb in the source code with this file! ################
############ also be sure to RESTART OpenProject after replacing the file. ################
############ it doesn't show that enterprise mode is enabled in the settings, but all ################
############ enterprise mode features, such as KanBan boards, are enabled. ################
is there
Try to go into the container and
head /app/app/models/enterprise_token.rb
and see whether############ REPLACE app/models/enterprise_token.rb in the source code with this file! ################ ############ also be sure to RESTART OpenProject after replacing the file. ################ ############ it doesn't show that enterprise mode is enabled in the settings, but all ################ ############ enterprise mode features, such as KanBan boards, are enabled. ################
is there
What I've just done @jiriks74 is:
- cd'd into
/app/app/models/enterprise_token.rb
to see the file wasn't amended - removed the existing file
- wget the
enterprise_token.rb
file from here - ran your command again
- checked Portainer
- and every time I run the command it decides to create a different Docker container(is that normal??)
- double checked the
enterprise_token.rb
file again and it was set back to default prior to replacing it with this file
Is this my server just being weird??
Try to use the name of the container not the hash.
As you can see I'm using openproject-web-1
as it's the name for the container that hosts the web app files.
Here's the info about it:
As you can see the long string of numbers and letters is a id/hash. it is not preserved when you docker compose down && docker compose up
the stack.
I don't recognize the setup. The names are modified and I have no idea what container .z2...
is. Are you using the official docker One container per process
setup? Because that's the one the command is for.
Try to use the name of the container not the hash.
This still didn't work - just created another container again.
I don't recognize the setup. The names are modified and I have no idea what container
.z2...
is. Are you using the official dockerOne container per process
setup? Because that's the one the command is for.
I'm using the Easypanel image for OpenProject. But I'll try that doc you've just linked to.
Try to use the name of the container not the hash.
This still didn't work - just created another container again.
I don't recognize the setup. The names are modified and I have no idea what container
.z2...
is. Are you using the official dockerOne container per process
setup? Because that's the one the command is for.I'm using the Easypanel image for OpenProject. But I'll try that doc you've just linked to.
Don't port your whole setup just because of this command. Modify it or do it manually after every update.
Hello,
another approach to have this modification persistent is adding a volume to the container web
:
volumes:
- <path>/enterprise_token.rb:/app/app/models/enterprise_token.rb:ro
Then you can do a cron
job (crontab -e
):
@daily curl "https://gist.githubusercontent.com/markasoftware/f5b2e55a2c2e3abb1f9eefcdf0bfff45/raw/148c5067e30eae04f96e3233144b4404f70ade47/enterprise_token.rb" -o <path>/enterprise_token.rb
Don't forget to change <path>
to your folder where you want the file be. Do so for the volume and cron job.
This is for the official One container per process setup. If you use something else make sure that the file is under /app/app/models/enterprise_token.rb
. If it isn't modify the volume path.
Thanks, For this and all the comments.
Anyone running OpenProject Container on Synology NAS devices can follow this
- Download the file "enterprise_token.rb" and place it in your NAS.
- Stop your container and go to settings.
- Scroll Down to Volume Settings "Add File" and select the file you download "enterprise_token.rb".
- In the Text Box paste this "/app/app/models/enterprise_token.rb" and select "Read Only"
- Start the container again.
- That's All.
it is work on OpenProject 13.4.1?
installed on Ubuntu.
it is work on OpenProject 13.4.1? installed on Ubuntu.
No. Not on my installation.
it is work on OpenProject 13.4.1? installed on Ubuntu.
No. Not on my installation.
for me too...
@zuevav @RFX19 It's working on 13.4.1 Did you follow the setup steps properly? Are you using docker? Are you using single/multi image setup? Did you restart OpenProject after setting up the new file?
I dont think that the setup is so hard. Just switch the files and restart. What I did. In the previous version it was working like charm but with the update it stopped working.
I'm using the single image setup.
Check your running container for the file header. Maybe the container got recreated during restart.
Check your running container for the file header. Maybe the container got recreated during restart.
Excuse me, but may I ask for your support? How can I carry out your proposal?
docker exec -it <container-name> head <path-to-file>
The problem is that we don't use docker, we have a clean Ubuntu installation, according to the instructions - Install Open Project with DEB/RPM packages. Next is the Configuration of the Open Project. Stop it, change the file and start it, and nothing....
The problem is that we don't use docker, we have a clean Ubuntu installation, according to the instructions - Install Open Project with DEB/RPM packages. Next is the Configuration of the Open Project. Stop it, change the file and start it, and nothing....
Same here. But instead of Ubuntu we are using Debian.
The problem is that we don't use docker, we have a clean Ubuntu installation, according to the instructions - Install Open Project with DEB/RPM packages. Next is the Configuration of the Open Project. Stop it, change the file and start it, and nothing....
Same here. But instead of Ubuntu we are using Debian.
On my ubuntu 22.04 server, 13.4.1 is working fine. Of course I am not using docker.
However, this is not a clean install of 13.4.1, but an update from 13.4.0.
However, I have not tried 14.0.0.
I've heard reports that the enterprise_token.rb
file no longer exists in 14.0.0 so a slightly different override may be needed. Openproject is not something I use anymore so I'll leave this up to other people to solve, I'm happy to merge a fork that works on 14.0.0!
I've heard reports that the
enterprise_token.rb
file no longer exists in 14.0.0 so a slightly different override may be needed. Openproject is not something I use anymore so I'll leave this up to other people to solve, I'm happy to merge a fork that works on 14.0.0!
I have chekced with 14.0.0 it is Working
I tested this and as @siddhu2310 it works for me too
https://gist.github.com/CC1119/da05e02ba5b885b40db66beb191dd456
Ok great to hear! The reports of my demise have been greatly exaggerated 😆
i'm completely fresh with docker, proxmox and open project and your instructions worked perfectly, thanks!