-
Star
(421)
You must be signed in to star a gist -
Fork
(175)
You must be signed in to fork a gist
-
-
Save markasoftware/f5b2e55a2c2e3abb1f9eefcdf0bfff45 to your computer and use it in GitHub Desktop.
| ############ If you are using DOCKER all-in-one image, create Dockerfile like: ################ | |
| ############ FROM openproject/openproject:16 ################ | |
| ############ COPY ./enterprise_token.rb app/models/enterprise_token.rb ################ | |
| ############ If you are runing a manual installation: ################ | |
| ############ REPLACE app/models/enterprise_token.rb in the source code with this file! ################ | |
| ############ also be sure to RESTART OpenProject after replacing the file. ################ | |
| ############ If using some other set up (eg docker-compose), read the comments on ################ | |
| ############ https://gist.github.com/markasoftware/f5b2e55a2c2e3abb1f9eefcdf0bfff45 ################ | |
| # OpenProject is an open source project management software. | |
| # Copyright (C) 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 | |
| # On the backend, features are checked only using `allows_to?`, which we can hardcode to return `true`. | |
| # On the frontend, however, it instead checks if particular strings are included in the `available_features` | |
| # Unfortunately there is no canonical variable with all the features, so we have to hardcode. | |
| # Use `rg --pcre2 -INo "(?<=allows_to\?[^:*]:|allowsTo\(')[a-z_]*" | sort -u` to generate this list: | |
| TRUE_FEATURES = %i[ | |
| allowed_action | |
| baseline_comparison | |
| board_view | |
| calculated_values | |
| conditional_highlighting | |
| custom_actions | |
| custom_field_hierarchies | |
| customize_life_cycle | |
| date_alerts | |
| define_custom_style | |
| edit_attribute_groups | |
| forbidden_action | |
| gantt_pdf_export | |
| internal_comments | |
| ldap_groups | |
| nextcloud_sso | |
| one_drive_sharepoint_file_storage | |
| placeholder_users | |
| readonly_work_packages | |
| scim_api | |
| sso_auth_providers | |
| team_planner_view | |
| time_entry_time_restrictions | |
| virus_scanning | |
| work_package_query_relation_columns | |
| work_package_sharing | |
| work_package_subject_generation | |
| ].freeze | |
| # Not all the methods here are ever actually called outside the enterprise_token.rb file itself | |
| # in upstream openproject, but I'll include all of them that can be reasonably implemented here, | |
| # just in case openproject changes in the future to start using the extra methods. | |
| def current | |
| self.new | |
| end | |
| def all_tokens | |
| [self.new] | |
| end | |
| def active_tokens | |
| [self.new] | |
| end | |
| def active_non_trial_tokens | |
| [self.new] | |
| end | |
| def active_trial_tokens | |
| [] | |
| end | |
| def active_trial_token | |
| nil | |
| end | |
| def allows_to?(feature) | |
| true | |
| end | |
| def active? | |
| true | |
| end | |
| def trial_only? | |
| false | |
| end | |
| def available_features | |
| TRUE_FEATURES | |
| end | |
| def non_trialling_features | |
| TRUE_FEATURES | |
| end | |
| def trialling_features | |
| [] | |
| end | |
| def trialling?(feature) | |
| false | |
| end | |
| def hide_banners? | |
| true | |
| end | |
| def show_banners? | |
| false | |
| end | |
| def user_limit | |
| nil | |
| end | |
| def non_trial_user_limit | |
| nil | |
| end | |
| def trial_user_limit | |
| nil | |
| end | |
| def banner_type_for(feature:) | |
| nil | |
| end | |
| def get_user_limit_of(tokens) | |
| nil | |
| end | |
| end | |
| FAR_FUTURE_DATE = Date.new(9999, 1, 1) | |
| def token_object | |
| Class.new do | |
| def id | |
| "lmao" | |
| end | |
| def has_feature?(feature) | |
| true | |
| end | |
| def will_expire? | |
| false | |
| end | |
| def mail | |
| "[email protected]" | |
| end | |
| def subscriber | |
| "markasoftware-free-enterprise-mode" | |
| end | |
| def company | |
| "markasoftware" | |
| end | |
| def domain | |
| "markasoftware.com" | |
| end | |
| def issued_at | |
| Time.zone.today - 1 | |
| end | |
| def starts_at | |
| Time.zone.today - 1 | |
| end | |
| def expires_at | |
| Time.zone.today + 1 | |
| end | |
| def reprieve_days | |
| nil | |
| end | |
| def reprieve_days_left | |
| 69 | |
| end | |
| def restrictions | |
| nil | |
| end | |
| def available_features | |
| EnterpriseToken.TRUE_FEATURES | |
| end | |
| def plan | |
| "markasoftware_free_enterprise_mode" | |
| end | |
| def features | |
| EnterpriseToken.TRUE_FEATURES | |
| end | |
| def version | |
| 69 | |
| end | |
| def started? | |
| true | |
| end | |
| def trial? | |
| false | |
| end | |
| def active? | |
| true | |
| end | |
| end.new | |
| end | |
| def id | |
| "lmao" | |
| end | |
| def encoded_token | |
| "oaml" | |
| end | |
| def will_expire? | |
| false | |
| end | |
| def mail | |
| "[email protected]" | |
| end | |
| def subscriber | |
| "markasoftware-free-enterprise-mode" | |
| end | |
| def company | |
| "markasoftware" | |
| end | |
| def domain | |
| "markasoftware.com" | |
| end | |
| def issued_at | |
| Time.zone.today - 1 | |
| end | |
| def starts_at | |
| Time.zone.today - 1 | |
| end | |
| def expires_at | |
| Time.zone.today + 1 | |
| end | |
| def reprieve_days | |
| nil | |
| end | |
| def reprieve_days_left | |
| 69 | |
| end | |
| def restrictions | |
| nil | |
| end | |
| def available_features | |
| EnterpriseToken.TRUE_FEATURES | |
| end | |
| def plan | |
| "markasoftware_free_enterprise_mode" | |
| end | |
| def features | |
| EnterpriseToken.TRUE_FEATURES | |
| end | |
| def version | |
| 69 | |
| end | |
| def started? | |
| true | |
| end | |
| def trial? | |
| false | |
| end | |
| def active? | |
| true | |
| end | |
| def allows_to?(action) | |
| true | |
| end | |
| def expiring_soon? | |
| false | |
| end | |
| def in_grace_period? | |
| false | |
| end | |
| def expired?(reprieve: true) | |
| false | |
| end | |
| def statuses | |
| [] | |
| end | |
| def invalid_domain? | |
| false | |
| end | |
| def unlimited_users? | |
| true | |
| end | |
| def max_active_users | |
| nil | |
| end | |
| def sort_key | |
| [FAR_FUTURE_DATE, FAR_FUTURE_DATE] | |
| end | |
| def days_left | |
| 69 | |
| end | |
| end |
Tested 16.4.2: custom Touch icon is not uploading; however, theme colors, favicon, and logo can be changed.
this one liner works for me using 16.4.1, adjust your local paths and env vars accordingly
sudo docker run -d -p 8080:80 --name openproject \
-e OPENPROJECT_HOST__NAME=your.domain.com \
-e OPENPROJECT_SECRET_KEY_BASE=yoursecret \
-v /opt/openproject/pgdata:/var/openproject/pgdata \
-v /opt/openproject/assets:/var/openproject/assets \
-v /opt/openproject/enterprise_token.rb:/app/app/models/enterprise_token.rb:ro \
openproject/openproject:16
Morning Folks. Nextcloud has launched version32. Has anyone of you tried to integrate openproject with Nextcloud .Does the integration work ?
@scalenow Yes, I've successfully done it and I find the integration profoundly underwhelming; don't waste your time. I could go on and on, but that would be way off-topic for this thread.
@GameDr04 my integration is working on openproject 15.6 and nextcloud 31.0.9,on upgrading to nextcloud 32 the integration broke
so im totally newbee, i've downloaded openproject and replaced "enterprise_token.rb", inside "\openproject-dev\app\models", and build it in docker.. did i do something wrong ? as nothing changed apparently !
Mornig All,
Successfully integrated Nextcloud 32 with Openproject 15.6 ,everything works smoothly
Does this work with 16.5 ? can anyone confirm
Does this work with 16.5 ? can anyone confirm
Yes. Just updated on a debian and on a docker. It works fine
Does any one has any idea when will the AI functionality be introduced by openproject ??
Thank you! It works perfectly on 16.5.0!
sudo docker run -d -p 8080:80 --name openproject
-e OPENPROJECT_HOST__NAME=your.domain.com
-e OPENPROJECT_SECRET_KEY_BASE=yoursecret
-v /opt/openproject/pgdata:/var/openproject/pgdata
-v /opt/openproject/assets:/var/openproject/assets
-v /opt/openproject/enterprise_token.rb:/app/app/models/enterprise_token.rb:ro
openproject/openproject:16
For above container what version of Postgres is required. Because I am trying with 16.9 it give me error of
The transaction_timeout
Folks has any body tested on 16.6,openproject just released couple of hours ago
I can confirm it works when you update the container to 16.6 and then on the machine where the docker container is hosted use the command: docker cp /path/to/enterprise_token.rb OpenProject:/app/app/models (change the /path/to/ to whatever your path to the file is) then stop and start the container. I can confirm it is working doing that.
thanks @evermorev
@maximbeliveau which version of open project?
16.5.0
Does any one has any idea when will the AI functionality be introduced by openproject ??
@scalenow
you can already if you want, there some MCP servers already emerging. look on google for openproject MCP server
https://github.com/AndyEverything/openproject-mcp-server
There was one new feature called calculated_values which got added recently and I just added to this script, but I doubt that is the problem. Can someone else confirm the behavior @maximbeliveau is seeing and that this behavior is unexpected?
@maximbeliveau I have also developed a proprietary NLP application to interact . I will look into this . thanks for the information
There was one new feature called
calculated_valueswhich got added recently and I just added to this script, but I doubt that is the problem. Can someone else confirm the behavior @maximbeliveau is seeing and that this behavior is unexpected?
i tried this weekend on my Dev at home and its working, i will run more test at work tomorow.
Where is the rg binary located in the docker container to get the list of functions?
Where is the
rgbinary located in the docker container to get the list of functions?
/app/app/models
works for 16.6.1
works for 16.6.1
How did you get it to work? Could you please elaborate?
works for 16.6.2
added it using the method for docker-install suggested by @javito1081
for those that dont want to read the comments i'll paste it here
Step 1:
Downloaded the file using curl to the openproject folder, i have a folder called openproject and inside its my docker compose file and now the enterprise_token.rb, along with my assets and data folder
curl "https://gist.githubusercontent.com/markasoftware/f5b2e55a2c2e3abb1f9eefcdf0bfff45/raw/148c5067e30eae04f96e3233144b4404f70ade47/enterprise_token.rb" -o openproject/enterprise_token.rb
Step 2:
Once downloaded i added this line - ./enterprise_token.rb:/app/app/models/enterprise_token.rb to my docker compose file in the volumes
services:
openproject:
image: openproject/openproject:15
container_name: openproject
ports:
- "8200:80"
restart: unless-stopped
environment:
- OPENPROJECT_SECRET_KEY_BASE=secret
- OPENPROJECT_HOST__NAME=openproject.something.com
- OPENPROJECT_HTTPS=true
- OPENPROJECT_DEFAULT__LANGUAGE=es
- OPENPROJECT_USER__DEFAULT__TIMEZONE=America/Mexico_City
volumes:
- ./pgdata:/var/openproject/pgdata
- ./assets:/var/openproject/assets
- ./enterprise_token.rb:/app/app/models/enterprise_token.rb
Step 3:
after that, i saved the file and ran my docker compose like this:
docker-compose -f openproject/openproject.yml up -d
thats it, no restarts or any extra steps
I'll just say this, but the proper way to have a crack survive updates is to make a patch file of only the minimal changes required and apply the patch file everytime an update is installed. Works for docker, works for DPKG

I can also confirm that the gist continues to work on 16.4.0.
@scalenow It's pretty-much always worth upgrading. The list of bugfixes is quite lengthy, especially as the OP team stabilizes the relatively new v16 release.