Skip to content

Instantly share code, notes, and snippets.

@markasoftware
Last active May 18, 2024 09:26
Show Gist options
  • Save markasoftware/f5b2e55a2c2e3abb1f9eefcdf0bfff45 to your computer and use it in GitHub Desktop.
Save markasoftware/f5b2e55a2c2e3abb1f9eefcdf0bfff45 to your computer and use it in GitHub Desktop.
OpenProject Enterprise mode for free
############ 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
@harryburr
Copy link

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 docker One 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.

@jiriks74
Copy link

jiriks74 commented Apr 8, 2024

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 docker One 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.

@jiriks74
Copy link

jiriks74 commented Apr 8, 2024

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.

@acethecool1
Copy link

Thanks, For this and all the comments.

Anyone running OpenProject Container on Synology NAS devices can follow this

  1. Download the file "enterprise_token.rb" and place it in your NAS.
  2. Stop your container and go to settings.
  3. Scroll Down to Volume Settings "Add File" and select the file you download "enterprise_token.rb".
  4. In the Text Box paste this "/app/app/models/enterprise_token.rb" and select "Read Only"
  5. Start the container again.
  6. That's All.

@zuevav
Copy link

zuevav commented Apr 17, 2024

it is work on OpenProject 13.4.1?
installed on Ubuntu.

@RFX19
Copy link

RFX19 commented Apr 18, 2024

it is work on OpenProject 13.4.1? installed on Ubuntu.

No. Not on my installation.

@zuevav
Copy link

zuevav commented Apr 18, 2024

it is work on OpenProject 13.4.1? installed on Ubuntu.

No. Not on my installation.

for me too...

@jiriks74
Copy link

@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?

@RFX19
Copy link

RFX19 commented Apr 18, 2024

@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.

@jiriks74
Copy link

Check your running container for the file header. Maybe the container got recreated during restart.

@RFX19
Copy link

RFX19 commented Apr 18, 2024

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?

@jiriks74
Copy link

docker exec -it <container-name> head <path-to-file>

@zuevav
Copy link

zuevav commented Apr 18, 2024

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....

@RFX19
Copy link

RFX19 commented Apr 19, 2024

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.

@lockdlock
Copy link

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.

@markasoftware
Copy link
Author

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!

@siddhu2310
Copy link

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

@CC1119
Copy link

CC1119 commented Apr 30, 2024

@markasoftware
Copy link
Author

Ok great to hear! The reports of my demise have been greatly exaggerated 😆

@Ashbeel111
Copy link

OpenProject Enterprise mode typically requires a subscription or payment plan. However, OpenProject does offer a Community Edition that is free and open-source, providing basic project management features. This version may suit your needs if you're looking for a no-cost option. You can check their website or contact their support for any updates or promotions that may offer Enterprise features for free or at a discounted rate. ytmp3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment