######################################################################## # # Sample configuration file for OpenOlat # # This is the main OpenOlat configuration file. You should ensure that # you have read and understood the OpenOlat documentation beforehand. # In all likelihood you will need to alter some of the settings # below to suit your environment # # You should begin by creating an empty olat.local.properties file and put it in the tomcat lib dir e.g. /tomcat/lib # or if you are inside eclipse you may put it to webapp/WEB-NF/src directory # Spring searches on the classpath for this file and will overwrite the default properies from this file. # Check the olat administration tab for a setup menu entry for more info. # # Windows users: please use forward slashes throughout in file and # directory settings e.g., C:/TEMP # ######################################################################## # Application directories (absolute paths required!) Empty values point to java.io.tmpdir which can also be # overwritten with vm parameter -Djava.io.tmpdir=/home/user/data ######################################################################## userdata.dir.comment=runtime application data directory. Empty value points to java.io.tmpdir userdata.dir= archive.dir.comment=directory for deleted userdata/repository enties. Empty value points to [java.io.tmpdir]/deleted_archive archive.dir.values=${userdata.dir}/deleted_archive archive.dir=${userdata.dir}/deleted_archive log.dir.comment=log directory of the olat.log file. Must correspond with your log4j.xml log.dir.values=${userdata.dir}/logs. Empty value points to [java.io.tmpdir]/logs log.dir=${userdata.dir}/logs log.dir.comment=name of the olat log file, e.g. olat.log. Must correspond with your log4j.xml log.filename=olat.log folder.root.comment=name of the repository root. Empty value points to [java.io.tmpdir]/bcroot folder.root.values=${userdata.dir}/bcroot folder.root=${userdata.dir}/bcroot folder.maxulmb.comment=limits on upload size and quotas should be set in MB folder.maxulmb=100 folder.quotamb=200 folder.sendDocumentToExtern=true folder.sendDocumentLinkOnly=true # file size limit for HTML and text editor is 1MB folder.editFileSizeLimitBytes=1048576 #force download of the files folder.force.download=true folder.force.download.values=true,false ######################################################################## # Application settings ######################################################################## # Initial setting for the system default locale # (used on the OLAT login page as well as when creating new user accounts) # NOTE: Once set at runtime via the admin GUI (System configuration -> Languages) # this default setting will be overridden by the values in # ${userdata.dir}/system/configuration/org.olat.core.util.i18n.I18nModule.properties defaultlang=en #will be set by maven project.build.home.directory= # The language that is used as a fallback in case the system does not find a key in # the users language nor in the default language. Note that in this language all # keys must exist! Since developers only add the 'de' and 'en' keys it is strongly # recommended that you don't set it to any other value that this. If unsure, use the default 'de'. fallbacklang=de fallbacklang.comment=Set this only to a language that is 100% translated when compared to 'de' fallbacklang.values=de,en # Initial setting for enabled languages: comma separated list of lang keys. # Example: # enabledLanguages=en,de,fr,it,es,da,cs,el,ru,pl,zh_CN,zh_TW,lt,fa,pt_PT,pt_BR,tr,hu,sq,in,ar,rm,af,iw,vi,mn # or # Set to 'all' to enable all languages that can be found in the source code # Example: # enabledLanguages=all # NOTE: Once set at runtime via the admin GUI (System configuration -> Languages) # this default setting will be overridden by the values in # ${userdata.dir}/system/configuration/org.olat.core.util.i18n.I18nModule.properties enabledLanguages=en,de,fr,it,es # determines the character set of files written to the file system # e.g.: US-ASCII, ISO-8859-1, UTF-8 defaultcharset=UTF-8 # abort system startup when no UTF-8 capable file system is detected. In production this should be set to # true to prevent accidental startup with another encoding which leads to a big data mess enforce.utf8.filesystem=true # global on/off config for resume history.resume.enabled=true # default settings for the resume function in case feature is available history.resume.enabled.default=ondemand history.resume.enabled.default.values=none,auto,ondemand # the owner of repository-entries of deleted users deletionModule.adminUserName=administrator # Session timeout configuration. # Note that this are default values only. If you want to change the configuration, open the administration panel # in OpenOlat and change the values there. They are stored in olatdata/system/configuration/ and will override # the values from the olat.local.properties file. # a) Session timeout in seconds for not-authenticated sessions (login screen etc). # Keep small to prevent denial of service attacks. Default is 5 minutes. session.timeout=300 # b) Session timeout in seconds for authenticated users and guest users. Default is two hours. session.timeout.authenticated=7200 # Extend the 5 minutes session timeout for following user agents (comma separated) session.timeout.extended.for=Microsoft ######################################################################## # SMTP (mail) settings ######################################################################## # mail support can be disabled by leaving the following entry blank or # setting it to the keyword 'disabled' (without quotes!) smtp.host=localhost smtp.port= # if required by your local SMTP you may need to provide credentials smtp.user= smtp.pwd= # enable SSL if your smtp server supports it smtp.sslEnabled=false smtp.sslCheckCertificate=false smtp.starttls=false # timeout in milliseconds smtp.timeout=8000 # smtp.from will override the mail envelope, leave it empty to set it to the first reply-to address smtp.from= # local mail domain where the return address is allowed to be set to the sender accounts email address. # if the sender or all the recipients are in this domain the senders mailaddress otherwise the fromemail (see below) will be in the from header. fromdomain= # system mails will be sent from this address (from local domain with valid reverse dns): fromemail=no-reply@your.domain # the plain text name of the from mail address usually displayed by the email client fromname=OpenOlat eLearning Server (${server.domainname}) # set this email to a mail address in your domain (used as reply-to address) adminemail=webmaster@your.domain # set this email to a mail address in your domain (used for 'ask for help here' type of messages that do not have special address) supportemail=${adminemail} # set this email to a mail address in your domain (used to tell users how to apply for more quote disk space) quotaemail=${supportemail} # set this email to a mail address in your domain (used to notify when users are deleted from the system) deleteuseremail=${supportemail} # set this email to a mail address in your domain (used for red-screen error reports) erroremail=${adminemail} # maximum size for email attachments (in MB) mail.attachment.maxsize=5 # Enable the intern email inbox and outbox mail.intern=true mail.showInboxRecipientNames=true mail.showInboxMailAddresses=false mail.showOutboxRecipientNames=true mail.showOutboxMailAddresses=false mail.receiveRealMailUserDefaultSetting=true ######################################################################## # User registration, login and deletion settings ######################################################################## # permit self registration registration.enableSelfRegistration=true # enable/disable the link self registration on the login page registration.enableSelfRegistration.login=true registration.enableSelfRegistration.login.values=true,false # enable/disable the direct link to registration registration.enableSelfRegistration.link=true registration.enableSelfRegistration.link.values=true,false # enable/disable the validation of an e-mail address by sending an e-mail registration.email.validation=true registration.email.validation.values=true,false # registration made in GUI are valid for how many hours (default 2 days) registration.valid.hours.gui=48 # registration made in REST are valid for how many hours (default 30 days) registration.valid.hours.rest=720 # a list of domains separated with a comma registration.domainList= # send an email when new users register registration.enableNotificationEmail=false # set this email to a mail address in your domain registration.notificationEmail=${adminemail} # ask user to accept a disclaimer at first login. Use i18n tool to customize disclaimer message registration.enableDisclaimer=true # add a second checkbox to the disclaimer, e.g. for a privacy statement registration.disclaimerAdditionalCheckbox=false # add a third checkbox to the disclaimer, e.g. for the terms of use registration.disclaimerAdditionalCheckbox2=false # add a link to the disclaimer with a file download # if set to true you can add downloadable disclaimer files in olatdata/customizing/disclaimer/ # the names of the files can be configured in the i18n key org.olat.registration:disclaimer.filedownloadurl registration.disclaimerAdditionaLinkText=false # setting for the bean interceptor in the registration process, disabled mean that no interceptor # is desired. Standard implementation are: byShibbolethAttribute which generate a username based # from a shibboleth attribute, byEmail which generate a username based on the email from the user # which try to register itself registration.preset.username.values=disabled,byEmail,byShibbolethAttribute registration.preset.username=disabled # setting for byEmail implementation: a domain restriction to preset the username registration.preset.username.domain= # settings for byShibbolethAttribute implementation: # allowChanges the new user to changes its username (only when using byShibbolethAttribute) registration.preset.username.allowChanges=true # the shibboleth attribute to use to preset the username registration.preset.username.shibbolethAttribute=Shib-SwissEP-UniqueID # provide guest login on the dmz page login.enableGuestLoginLinks=true guest.login=${login.enableGuestLoginLinks} # provider guest url in groups and courses guest.login.links=${login.enableGuestLoginLinks} # allow invitation login login.invitationLogin=true invitation.login=${login.invitationLogin} # By default OpenOlat generates an internal identifier for identities automatically based on # the database primary key with a prefix. The identifier is use in some places to link # resources (mostly files) to identities. For legacy backward compatibility this identifier # can be set manually when creating the identity based on the users first authentication username # Formerly this has been known as username. Note that the identity name can not be renamed # later on while authentication usernames can. identity.name=auto identity.name.values=auto,manual # Allow users to login using alternatively their email address or username login.using.username.or.email.enabled=true # Regex to validate username of new users. If yo change this property, # Make sure to change the translation of $org.olat.user\:form.checkUsername accordingly. username.regex=[0-9a-z\\.\\-@_]{4,64} # permit users to change their own passwords # (if you set this to false, nobody can can change their pws!) password.change.allowed=true # Password syntax checks password.min.length=4 password.max.length=128 # Values to restrict letters, digits and special signs # atLeastX: min X letters (X = 1/2/3) # disabled: The check is disabled. Letters/Digits/Specials are allowd in any quantity # forbidden: Letters/Digits/Specials not allowed # validateSeparately: Ignore this rule and use password.min.letters.uppercase / password.min.letters.lowercase instead # By default, a password has to have at least one letter. password.letters=atLeast1 password.letters.uppercase=disabled password.letters.lowercase=disabled # By default, a password has to have at least one digit or special sign. password.digits.special.signs=atLeast1 password.digits=disabled password.special.signs=disabled # Are these values forbidden as part of the password? password.forbidden.username=false password.forbidden.firstname=false password.forbidden.lastname=false # Password ageing policy password.change.valid.hours.gui=48 password.change.valid.hours.rest=720 password.max.age=0 password.max.age.author=${password.max.age} password.max.age.groupmanager=${password.max.age} password.max.age.poolmanager=${password.max.age} password.max.age.usermanager=${password.max.age} password.max.age.rolesmanager=${password.max.age} password.max.age.learnresourcemanager=${password.max.age} password.max.age.curriculummanager=${password.max.age} password.max.age.qualitymanager=${password.max.age} password.max.age.lecturemanager=${password.max.age} password.max.age.linemanager=${password.max.age} password.max.age.principal=${password.max.age} password.max.age.administrator=${password.max.age} password.max.age.sysadmin=${password.max.age} # Allow coaches to set new passwords for their students password.change.by.coach.allowed=false password.change.by.coach.allowed.values=true,false #notifications intervals the user can choose from. Disabled those you do not want by setting them to "false" notification.interval.never=true notification.interval.monthly=true notification.interval.weekly=true notification.interval.daily=true notification.interval.half-daily=true notification.interval.four-hourly=true notification.interval.two-hourly=true #default notification interval. Make sure this interval is enabled!! notification.interval.default=daily notification.interval.default.values=never,monthly,weekly,daily,half-daily,four-hourly,two-hourly #notification cron job notification.cronjob.expression=0 10 */2 * * ? # Request to delete account allow.request.delete.account=false allow.request.delete.account.disclaimer=false request.delete.account.mail= #################################################### # Groups #################################################### # Standard users can create groups group.user.create=true group.user.create.values=true,false # Authors can create groups. (Group managers and system administrators can create groups in any case) group.author.create=true group.author.create.values=true,false # Show the contact form in the business group card to send mails to group members or the coaches group.card.contact=groupconfig group.card.contact.values=never,always,groupconfig # Users can download member list of groups (default, can be overridden for each group) group.userlist.download.default.allowed=false group.userlist.download.default.allowed.values=true,false # Behavior when manually adding a user to a group. There are two workflow elements regarding data privacy # that can be configured: # a) Email notification: is the notification email about the new group membership mandatory or optional? # Default is true for normal users and optional for users with role author, usermanager, groupmanager or administrator group.mandatory.enrolment.email.users=true group.mandatory.enrolment.email.authors=false group.mandatory.enrolment.email.usermanagers=false group.mandatory.enrolment.email.rolesmanagers=false group.mandatory.enrolment.email.groupmanagers=false group.mandatory.enrolment.email.learnresourcemanagers=false group.mandatory.enrolment.email.poolmanagers=false group.mandatory.enrolment.email.curriculummanagers=false group.mandatory.enrolment.email.lecturemanagers=false group.mandatory.enrolment.email.qualitymanagers=false group.mandatory.enrolment.email.linemanagers=false group.mandatory.enrolment.email.principals=false group.mandatory.enrolment.email.administrators=false group.mandatory.enrolment.email.systemadmins=false # b) Invitation only or direct membership: is the new group membership immediate or is it only an invitation # that must be accepted by the invited user? # Default is invitation-only for normal users and immediate group membership without the need to accept # for users with the role author, usermanager, groupmanager or administrator group.accept.membership.users=true group.accept.membership.authors=false group.accept.membership.usermanagers=false group.accept.membership.rolesmanagers=false group.accept.membership.groupmanagers=false group.accept.membership.learnresourcemanagers=false group.accept.membership.poolmanagers=false group.accept.membership.curriculummanagers=false group.accept.membership.lecturemanagers=false group.accept.membership.qualitymanagers=false group.accept.membership.linemanagers=false group.accept.membership.principals=false group.accept.membership.administrators=false group.accept.membership.systemadmins=false # Allow leaving groups created by learners group.leaving.group.created.by.learners=true # Allow leaving groups created by authors group.leaving.group.created.by.authors=true # Allow configuration of this settoing on a per-groupe base group.leaving.group.override=true #enable managed groups group.managed=false group.managed.values=true,false #################################################### # assessment config #################################################### # enable / disable the course assessment mode assessment.mode=enabled assessment.mode.values=enabled,disabled #### # Olat -> default assessmentplugin # Onyx -> The Onyx-Testplayer (onyxassessmentplugin) can be downloaded at http://www.olat.de/onyx. # The Testplayer is one element of the Onyx-Testsuite and has been designed, # developed and tested by BPS - Bildungsportal Sachsen GmbH - http://www.bps-system.de # OLAT makes no representations or warranties of any kind, either express or implied, # nor shall OLAT have any liability whatsoever to any person using Onyx, with respect to its functionality. # For all questions and help concerning the Onyx-Testplayer and the Onyx-Testsuite # including any support write to support@bps-system.de #### assessmentplugin.activate=Olat ######################################################################## # QTI 2.1 QtiWorks ######################################################################## # Enable or disable the Math Extension of QtiWorks (need Maxima) qti21.math.assessment.extension.enabled=false qti21.math.assessment.extension.enabled.values=true,false #Enable digital signature of the assessment results qti21.digital.signature.enabled=false #Path to a PFX certificate (with X509 certificate, private and public key) qti21.digital.signature.certificate= #Try an other encoding to open the ZIP files during import of tests qti21.import.encoding.fallback= ######################################################################## # QTI 1.2 DEPRECATED , WILL BE REMOVED IN A FURTHER RELEASE ######################################################################## qti12.edit.resources.enabled=false qti12.create.resources.enabled=false qti12.import.resources.enabled=false qti12.run.enabled=false qti12.survey.create.resources.enabled=false qti12.survey.create.course.nodes.enabled=false qti12.survey.import.resources.enabled=false qti12.survey.run.enabled=false ######################################################################## # Certificates ######################################################################## # Send a copy of the certificates mails to someone certificate.bcc= certificate.linemanager=false ##### # Help course and context help ##### # Enable the help system. This create context help links all over the system that points to the help system configured by the help.plugin variable. # By default, the help opens the manual hosted in a confluence wiki at confluence.openolat.org. If you want to build your own help system, write # your own help plugin and configure it here. help.enabled=true # Define the plugin which generate the help URL help.plugin=ooConfluenceLinkHelp,ooAcademyLinkHelp,ooTeachLinkHelp help.plugin.values=ooConfluenceLinkHelp,ooAcademyLinkHelp,ooTeachLinkHelp,supportMailHelp,courseHelp,customLink1Help,customLink2Help,customLink3Help # Note that when you use anything but ooConfluenceLinkHelp, the context help will be disabled. Only the help button in the top navigation will be available and open the help course help.plugin.icon.values=o_icon_manual,o_icon_video,o_icon_coach,o_course_icon,o_icon_mail or any other icon # Settings for the ooConfluenceLinkHelp plugin help.confluence.enabled=usertool,authorsite,dmz help.confluence.icon=o_icon_manual help.confluence.pos=0 # Settings for the ooAcademyLinkHelp plugin help.academy.link=https://www.openolat.com/openolat-academy/ help.academy.enabled=usertool,authorsite,dmz help.academy.icon=o_icon_video help.academy.pos=1 # Settings for the ooTeachLinkHelp plugin help.ooteach.link=https://www.openolat.com/openolat-teach/ help.ooteach.enabled=authorsite help.ooteach.icon=o_icon_coach help.ooteach.pos=2 # Settings for the supportMailHelp plugin help.support.email=${supportemail} help.support.enabled=usertool,authorsite,dmz help.support.icon=o_icon_mail # Settings for the courseHelp plugin help.course.softkey=OLAT::help-course_de.zip help.course.enabled= help.course.icon=o_course_icon # Settings for the customLinkHelp plugin help.custom1.link= help.custom1.enabled= help.custom1.icon= help.custom1.new.window=false help.custom1.new.window.values=true,false help.custom2.link= help.custom2.enabled= help.custom2.icon= help.custom2.new.window=false help.custom3.link= help.custom3.enabled= help.custom3.icon= help.custom3.new.window=false ######################################################################## # OLAT technical settings ######################################################################## # OLAT instance ID (effects a unqiue namesapce for addressable items) # ID should be no longer than 10 characters! instance.id=myopenolat # Issuer of the OpenOlat users. # The issuer is the entity that issues a set of claims. An issuer # identifier is a case sensitive URL using the https scheme that contains # scheme, host, and optionally, port number and path components and no # query or fragment components. instance.issuer.identifier=https://${instance.id}.openolat.org # by creating a theme under webapp/WEB-INF/static/themes you can # customize the OLAT application to your liking (see the example # theme for futher information. # you can also configure a theme via the admin GUI which takes precedence # To create your own theme please read webapp/WEB-INF/static/themes/themes.README layout.theme=openolat layout.theme.values=light,openolat,yourowntheme layout.coursetemplates.blacklist= # Absolute path to directory where custom themes are loaded from (optional) layout.custom.themes.dir=${userdata.dir}/customizing/themes # CSS class prefixes from the content.css file that are to be displayed in # the menu in the HTML editor. Default is /\.b_/ (javaScript regexp) html.editor.css.class.prefix=/\.b_/ # test user generation user.generateTestUsers=false # debug mode for developers. If olat.debug is set to true you must also set project.build.home.directory to your source code olat.debug.comment=for developers: Set to true to enable visual debugging by the red/green bug icon on the upper left corner of olat olat.debug=false # cache localization files (unless in development mode) localization.cache=true # required only for performance and functional testing allow.loadtest.mode=false # Whether or not the gui demo site should be enabled=shown. Note that when set to true the # two other conditions must be met to show the site: user must be administrator and # olat.debug must also be set to true. When olat.debug=false, the flag has no meaning whatsoever. guidemo.enabled=true ######################################################################## # OLAT sites / tabs ######################################################################## # enable / disable homeSite. Those are the tools visible in the personal menu site.minimalhome.enabled=true # enable / disable menu items from home site #note: orders, mail and EP are disabled via module-config minimalhome.ext.efficiencystatement=true minimalhome.ext.otherusers=true minimalhome.ext.notelist=true minimalhome.ext.userfolder=true minimalhome.ext.notifications=true minimalhome.ext.portfolio=true minimalhome.ext.bookings=true minimalhome.ext.calendar=true minimalhome.ext.mysettings=true minimalhome.ext.myprofile=true minimalhome.ext.password=true # The my courses and group sites are meant for learners to find their courses and groups site.mycourses.enable=true site.groups.enable=true # The coaching site is visible to users with coaching rights to better support coaching users accross multiple courses site.coaching.enable=true # The repository and question pool site are authoring environments only site.repository.enable=true site.questionpool.enable=true # When enabling the portfolio site you should set minimalhome.ext.portfolio to false to not have two separate entry points site.portfolio.enable=false # Enable/disable the whole catalog feature repo.catalog.enable=true # Enable/disable the catalog site as a catalog-only site and the catalog admin site site.catalog.enable=true site.catalogadmin.enable=true # Enabl/disable the browsing of catalog in the course site repo.catalog.browsing.enable=true # Portal site - deprecated since OO 10 release, use the my courses instead site.portal.enable=false # Portlets enabled by default portlet.didYouKnow.enabled=true portlet.groups.enabled=true portlet.bookmarks.enabled=true portlet.notes.enabled=true portlet.notifications.enabled=true portlet.efficiencyStatements.enabled=true portlet.quickstart.enabled=true portlet.calendar.enabled=true portlet.repository.student.enabled=true portlet.repository.student.entries=6 portlet.repository.teacher.enabled=true portlet.repository.teacher.entries=6 # the info message portlet is a counterpart of the course building block # course.node.infomessage, see further down this file. portlet.infomessages.enabled=true # Optional portlets, disabled by default portlet.shiblogin.enabled=false portlet.infomsg.enabled=false # the links from the links portlet are configure here: webapp/WEB-INF/olat_portals_links.xml portlet.links.enabled=false # the institutions are configure here : webapp/WEB-INF/olat_portals_institution.xml portlet.institution.enabled=false portlet.system.events.enabled=false # sysinfo portlet settings (files are editable if hosted on local server) (system.events) portlet.sysinfo.url=../../raw/${build.version}/events.html portlet.sysinfo.filepath=pathToYourEventsFile/static/events.html #enable managed courses repo.managed=false repo.managed.values=true,false # The course database: a REST key-value store that can be used in single pages to # implement all kind of fancy things that need a storage, e.g. build your own # survey or "I've read this" checkbox. Course authors have the possibility do # download the course db with the values from all users and check for values using # expert rules course.db.enabled=false ######################################################################## # Top navigation configuration ######################################################################## topnav.impressum=false topnav.search=true ######################################################################## # WebDAV ######################################################################## webdav.enabled=true #webdav manager (show or don't webdav links in GUI) webdav.links.enabled=true auth.digest.enabled=true #sort courses using semester terms for better discoverability. Only #usefull when semester terms are defined in admin area and used by courses webdav.termsfolders.enabled=true # User agents for which the basic authentication should never be proposed webdav.basic.authentication.black.list=Microsoft Office Excel,Microsoft Excel,Microsoft-WebDAV-MiniRedir # User agents which don't play nice webdav.user.agent.black.list=,- ######################################################################## # Image and PDF scale/thumbnail options ######################################################################## thumbnail.provider=java # java is a pure java implementation (which use PDFBox too), magick use ImageMagick and # GhostScript. For the magick one, you must add the path to convert and gs command line # in your PATH environnment variable. thumbnail.provider.values=java,magick ######################################################################## # Shared resources - used only to generate sample configurations ######################################################################## # User a value of '0' if you do not want to enable SSL. # If SSL is enabled, don't forget to uncomment the SSL section in the sample # configuration file # Eg. 8443, 443 (must not be empty, even if standard port 443 is used). Use 0 to disable SSL server.port.ssl=0 #if migrating from a context as /olat to the ROOT context in tomcat server.legacy.context= # mobile context used to redirect mobile.context=/mobile ######################################################################## # Web application container (e.g., Tomcat) settings ######################################################################## # hosted application fully qualified domain name (e.g., DNS CNAME) # omit references to protocol/scheme (e.g., HTTP(S)) server.domainname=localhost # the port on which the container is listening server.port=8080 ######################################################################## # MathJAX CDN ######################################################################## mathjax.cdn=//mathjax.openolat.org/mathjax/2.7-latest/ mathjax.config=TeX-AMS-MML_HTMLorMML # find \( \), \[ \], $$ to trigger MathJax rendering mathjax.markers=true ######################################################################## # Database settings ######################################################################## # set to false if your db user does not have enough privileges upgrading the database. # After manually upgrading the DB you have to add an entry like this to the olatdata/system/installed_upgrades.xml file # <string>Database update</string><boolean>true</boolean> auto.upgrade.database=true db.vendor=mysql db.vendor.values=mysql,postgresql,oracle db.vendor.values.comment=supported vendors currently include "mysql", "postgresql" and "oracle" # The local data source works out of the box with the Hikari database connection pool. However, we stronlgy # recommend using a jndi container managed data source for better stability and realibility. # When using jndi, make sure you copy the database connector to your application server lib directory and remove it from # the OpenOlat release. db.source=local db.source.values=local,jndi db.source.values.comment=supports jdbc connections created locally (local) or search them with a jndi name (jndi) # the server hosting the database db.host=localhost db.host.port=3306 db.host.port.values=3306 (mysql default), 5432 (postgresql default) # jndi name to find the jdbc connections db.jndi= db.jndi.values=java:comp/env/jdbc/OpenOLATDS db.name=olat db.user=olat db.pass=olat #this option is currently only for oracle db.default.schema=olat # Special options for mysql database. It's important to set the # attribute connectionCollation according your database collation db.url.options.mysql=?characterEncoding=UTF-8&connectionCollation=utf8_unicode_ci # enable database debugging (seldom required except for developers) db.show_sql=false # configure the Hikari pool with hibernate (c3p0 is only for legacy purpose and backwards compatibilty) db.hibernate.hikari.minsize=${db.hibernate.c3p0.minsize} db.hibernate.hikari.maxsize=${db.hibernate.c3p0.maxsize} # 0 to disable leak detection, otherwise a value in milliseconds db.hibernate.hikari.leakDetectionThreshold=0 db.hibernate.c3p0.minsize=20 db.hibernate.c3p0.maxsize=50 ######################################################################## # Infinispan ######################################################################## #Use the jndi name if you want to retrieve the cache manager from JBoss AS infinispan.jndi= infinispan.jndi.values=,java:jboss/infinispan/openolatha ######################################################################## # Velocity Templating Engine ######################################################################## velocity.parser.pool.size=20 velocity.parser.pool.size.comment=20 is Velocity default value, use more when you get errors in the logfile. Only necessary on high load configurations. ######################################################################## # Instant Messaging / chat ######################################################################## # As of 8.4 no external instant messaging server is needed. Configuration # of the instant messaging / chat infrastructure is done in the admin GUI instantMessaging.enable=true ######################################################################## # Calendar ######################################################################## # Enable or not the calendar feature in OpenOlat calendar.enabled=true calendar.enabled.values=true,false # Enable personal calendar (if calendar is enabled) calendar.personal.enabled=true calendar.personal.enabled.values=true,false # Enable group calendar (if calendar is enabled) calendar.group.enabled=true calendar.group.enabled.values=true,false # Enable the calendar tool in course (if calendar is enabled) calendar.course.tool.enabled=true calendar.course.tool.enabled.values=true,false # Enable the calendar course element in course (if calendar is enabled) calendar.course.element.enabled=true calendar.course.element.enabled.values=true,false # Enable managed calendars calendar.managed=false calendar.managed.values=true,false ######################################################################## # Social sharing options ######################################################################## # Enable social sharing features social.share.enabled=true # List of perma-link share buttons, normally visible in the footer of the page. social.share.link.buttons=twitter,facebook,google,delicious,digg,mail,link social.share.link.buttons.values=twitter,facebook,google,delicious,digg,mail,link ######################################################################## # Translation tool settings (translation infrastructure required!) ######################################################################## # note: when enabled the language customisation tool is not available! (only enabled or disabled allowed as values!) is.translation.server=disabled # Path to the CVS "olat3" project that contains the languages DE and EN # During development this is normally /workspace/olat/src/main/java i18n.application.src.dir= # Path to any directory that contains # translatable packages other than DE and EN which are in the application source directory # During development this is normally ${i18n.application.src.dir} i18n.application.opt.src.dir = ${i18n.application.src.dir} ######################################################################## # User search / privacy ######################################################################## # which roles see the administrative user properties usersearch.adminProps.users=disabled usersearch.adminProps.authors=enabled usersearch.adminProps.usermanagers=enabled usersearch.adminProps.rolesmanagers=enabled usersearch.adminProps.groupmanagers=enabled usersearch.adminProps.learnresourcemanagers=enabled usersearch.adminProps.poolmanagers=enabled usersearch.adminProps.curriculummanagers=enabled usersearch.adminProps.lecturemanagers=enabled usersearch.adminProps.qualitymanagers=enabled usersearch.adminProps.linemanagers=enabled usersearch.adminProps.principals=enabled usersearch.adminProps.administrators=enabled usersearch.adminProps.systemadmins=enabled # which roles are allowed to see the last visited date of group, course and other learning resources user.lastlogin.visible.users=disabled user.lastlogin.visible.authors=enabled user.lastlogin.visible.usermanagers=enabled user.lastlogin.visible.rolesmanagers=enabled user.lastlogin.visible.groupmanagers=enabled user.lastlogin.visible.learnresourcemanagers=enabled user.lastlogin.visible.poolmanagers=enabled user.lastlogin.visible.curriculummanagers=enabled user.lastlogin.visible.lecturemanagers=enabled user.lastlogin.visible.qualitymanagers=enabled user.lastlogin.visible.linemanagers=enabled user.lastlogin.visible.principals=enabled user.lastlogin.visible.administrators=enabled user.lastlogin.visible.systemadmins=enabled # which roles see the autocompletion usersearch.autocomplete.users=enabled usersearch.autocomplete.authors=enabled usersearch.autocomplete.usermanagers=enabled usersearch.autocomplete.rolesmanagers=enabled usersearch.autocomplete.groupmanagers=enabled usersearch.autocomplete.learnresourcemanagers=enabled usersearch.autocomplete.poolmanagers=enabled usersearch.autocomplete.curriculummanagers=enabled usersearch.autocomplete.lecturemanagers=enabled usersearch.autocomplete.qualitymanagers=enabled usersearch.autocomplete.linemanagers=enabled usersearch.autocomplete.principals=enabled usersearch.autocomplete.administrators=enabled usersearch.autocomplete.systemadmins=enabled # the maximum of identities returned by search (-1 is unlimited) usersearch.maxResults=-1 usersearch.maxResults.values=-1,20,50 #send user informations with the request in the tunnel cours ebuilding block userinfos.tunnelcoursebuildingblock=disabled ######################################################################## # Other user related settings ######################################################################## # When user full name is displayed, is it "Lastname, Firstname" (default) or "Firstname Lastname" userDisplayName=userDisplayName_lastname_firstname userDisplayName.values=userDisplayName_firstname_lastname, userDisplayName_lastname_firstname # An additional image attached to the user profile, eg. for the company logo. # Diplayed on the users vising card user.logoByProfile=disabled user.logoByProfile.values=enabled,disabled # Set whether a user has to have an email address. user.email.mandatory=true # Set whether the email address of a user has to be unique or not. # If it is not unique, some features are disabled, # e.g. password reset, login with email address. user.email.unique=true # Set to false to make user portrait / avatar image read-only # Does not apply to users with administrator role in user management user.portrait.managed=false # Enable or disable the text field "About me" user.about.me=true # Enable the automatic process to deactivate users user.automatic.deactivation=false # Number of days after last login user.days.before.deactivation=720 # Send an email before deactivation user.mail.before.automatic.deactivation=false user.days.before.mail.automatic.deactivation=30 user.mail.after.automatic.deactivation=false # Enable the automatic process to delete users user.automatic.deletion=false # Sanity check when the automatic deletion process is set to 'true': if more than the defined # percentages of user accounts are marked for deletion, the process will be aborted. This # should prevent accidental deletion of OLAT user because of an SQL error. user.automatic.delete.users.percentage=50 # Delete 180 days after being inactivated user.days.before.deletion=180 # Send an email before deletion user.mail.before.automatic.deletion=false user.days.before.mail.automatic.deletion=30 user.mail.after.automatic.deletion=false ######################################################################## # Fulltext Search settings ######################################################################## # Enable search-service for only one node per cluster [ enabled | disabled ] search.service=enabled # The full text indexer can be configured in two ways: # 1) Start indexer during startup and restart periodicaly in a given interval generate.index.at.startup=false # but only if startup is during the restart window... restart.window.start=0 restart.window.end=24 search.index.path=search_index search.permanent.index.path=perm_index search.index.tempIndex=temp_search_index search.index.tempSpellcheck=temp_spellcheck_index search.index.pdfBuffer=temp_pdf_text_buf search.pdf.external=false search.pdf.external.command=convertpdf.sh # Interval in millisecond after which the indexer should run again. O means: do not run again search.indexing.restart.interval=0 # 2) Enable triggering indexer via cron-job instead at startup [ enabled | disabled ] # When enabled , configure 'generate.index.at.startup=false' search.indexing.cronjob=enabled # Example '0 0 3 * * ?' start indexer at 03:00 ever day. If you do not provide a valid # expression but have set search.indexing.cronjob=enabled, the system will generate a # cron expression that triggers the indexer every four hour depending on your tomcat.id variable search.indexing.cronjob.expression=0 0 3 * * ? #examples: # never fire: 0 0 0 1 1 ? 3000 # size of the thread pools for the text extractors search.folder.pool.size=4 ######################################################################## # REST API ######################################################################## # enable/disable the rest api restapi.enable=false restapi.enable.values=true,values # Access to the /restapi/system without authentication if the IP # of the client is in the list of IPs separated by comma. This is used for monitoring purpos restapi.ips.system= restapi.ips.system.values=192.168.1.200,192.168.1.201 ######################################################################## # Statistics ######################################################################## # Calculate the course statistics statistics.cronjob.expression=0 10 5 * * ? ######################################################################## # Authentication ######################################################################## #The auth provider you set to default will be the one you see when you access the loginpage, alternate providers are shows as links below #enable and or set the basic login provider (username/password) on the loginpage active and or default olatprovider.enable=true olatprovider.default=true # if you change this all current users will no longer be able to login! default.auth.provider.identifier=OLAT # Oauth / social providers as default oauth.default=false ######################################################################## # ADFS ######################################################################## # Attributes mapping adfs.attributename.useridentifyer=employeeNumber adfs.attributename.firstName=displayNamePrintable adfs.attributename.lastName=Sn adfs.attributename.email=mail adfs.attributename.institutionalUserIdentifier=SAMAccountName ######################################################################## # Microsoft Azure Active Directory ######################################################################## # The attributes mapping use first the response to the authentication and enrich these # data with a call to https://graph.microsoft.com/v1.0/me to gather more data. # The properties doesn't have the same name in the 2 calls. azure.adfs.attributename.useridentifyer=userPrincipalName azure.adfs.attributename.firstName=givenName azure.adfs.attributename.lastName=surname azure.adfs.attributename.email=mail azure.adfs.attributename.institutionalUserIdentifier=userPrincipalName ######################################################################## # Shibboleth ######################################################################## shibboleth.enable=false #enable and or set the generic shib login provider on the loginpage active and or default shibbolethGeneric.enable=false shibbolethGeneric.default=false #enable and or set the custom uzh shib login provider on the loginpage active and or default shibbolethUZH.enable=false shibbolethUZH.default=false #these settings are university of zurich specific shibboleth.wayfSPEntityID= shibboleth.wayfSPHandlerURL= shibboleth.wayfSPSamlDSURL= shibboleth.wayfReturnUrl= shibboleth.wayfReturnMobileUrl=$shibboleth.wayfReturnUrl #you can manually add additional IDP servers. See org/olat/portal/shiblogin/_content/portlet.html #for an example shibboleth.wayf.additionalIDPs= # set the name of the Shibboleth attribute used to identify authorized users shibboleth.uid.shib= shibboleth.uid.handler= #Shibboleth attribute to use if a user logs in the first time. shibboleth.preferred.language.shib= shibboleth.preferred.language.handler= #Apply author role automatically to users according to the value of a Shibboleth attribute. #The contains parameter can have multiple values separated by commas. The value of the #Shibboleth attribute has to match one value of the contains parameter to apply the author role. shibboleth.role.mapping.author.enable=false shibboleth.role.mapping.author.shib= shibboleth.role.mapping.author.contains= #Define which Shibboleth attributes are mapped to OLAT user properties #and how the attributes are mapped. Use a handler to transform the from #Shibboleth delivered value to the desired form. If no handler is #configured the DoNothing handler is used. Set delete to false to avoid #the deletion of the user property value if Shibboleth delivers no value. #The mandatory user properties are never deleted by the synchronization. shibboleth.user.mapping.handler.values=DoNothing,FirstValue,SchacGender #These attributes are mandatory to create new users. shibboleth.user.mapping.email.shib= shibboleth.user.mapping.email.handler= shibboleth.user.mapping.first.name.shib= shibboleth.user.mapping.first.name.handler= shibboleth.user.mapping.last.name.shib= shibboleth.user.mapping.last.name.handler= #Further attributes may be mapped if wanted. shibboleth.user.mapping.key1.shib= shibboleth.user.mapping.key1.olat= shibboleth.user.mapping.key1.handler= shibboleth.user.mapping.key1.delete= shibboleth.user.mapping.key2.shib= shibboleth.user.mapping.key2.olat= shibboleth.user.mapping.key2.handler= shibboleth.user.mapping.key2.delete= shibboleth.user.mapping.key3.shib= shibboleth.user.mapping.key3.olat= shibboleth.user.mapping.key3.handler= shibboleth.user.mapping.key3.delete= shibboleth.user.mapping.key4.shib= shibboleth.user.mapping.key4.olat= shibboleth.user.mapping.key4.handler= shibboleth.user.mapping.key4.delete= shibboleth.user.mapping.key5.shib= shibboleth.user.mapping.key5.olat= shibboleth.user.mapping.key5.handler= shibboleth.user.mapping.key5.delete= shibboleth.user.mapping.key6.shib= shibboleth.user.mapping.key6.olat= shibboleth.user.mapping.key6.handler= shibboleth.user.mapping.key6.delete= shibboleth.user.mapping.key7.shib= shibboleth.user.mapping.key7.olat= shibboleth.user.mapping.key7.handler= shibboleth.user.mapping.key7.delete= shibboleth.user.mapping.key8.shib= shibboleth.user.mapping.key8.olat= shibboleth.user.mapping.key8.handler= shibboleth.user.mapping.key8.delete= shibboleth.user.mapping.key9.shib= shibboleth.user.mapping.key9.olat= shibboleth.user.mapping.key9.handler= shibboleth.user.mapping.key9.delete= shibboleth.user.mapping.key10.shib= shibboleth.user.mapping.key10.olat= shibboleth.user.mapping.key10.handler= shibboleth.user.mapping.key10.delete= shibboleth.user.mapping.key11.shib= shibboleth.user.mapping.key11.olat= shibboleth.user.mapping.key11.handler= shibboleth.user.mapping.key11.delete= shibboleth.user.mapping.key12.shib= shibboleth.user.mapping.key12.olat= shibboleth.user.mapping.key12.handler= shibboleth.user.mapping.key12.delete= shibboleth.user.mapping.key13.shib= shibboleth.user.mapping.key13.olat= shibboleth.user.mapping.key13.handler= shibboleth.user.mapping.key13.delete= shibboleth.user.mapping.key14.shib= shibboleth.user.mapping.key14.olat= shibboleth.user.mapping.key14.handler= shibboleth.user.mapping.key14.delete= shibboleth.user.mapping.key15.shib= shibboleth.user.mapping.key15.olat= shibboleth.user.mapping.key15.handler= shibboleth.user.mapping.key15.delete= shibboleth.user.mapping.key16.shib= shibboleth.user.mapping.key16.olat= shibboleth.user.mapping.key16.handler= shibboleth.user.mapping.key16.delete= shibboleth.user.mapping.key17.shib= shibboleth.user.mapping.key17.olat= shibboleth.user.mapping.key17.handler= shibboleth.user.mapping.key17.delete= shibboleth.user.mapping.key18.shib= shibboleth.user.mapping.key18.olat= shibboleth.user.mapping.key18.handler= shibboleth.user.mapping.key18.delete= shibboleth.user.mapping.key19.shib= shibboleth.user.mapping.key19.olat= shibboleth.user.mapping.key19.handler= shibboleth.user.mapping.key19.delete= shibboleth.user.mapping.key20.shib= shibboleth.user.mapping.key20.olat= shibboleth.user.mapping.key20.handler= shibboleth.user.mapping.key20.delete= # The attribute translator can be used to simplify ugly shibboleth attribute identifiers and mask them with nicer names. # If unsure, use the emptyAttributeTranslator to not mask any shib attributes. The switchAttributeTranslator should only # be used when participating in SWTICH AAI. shibboleth.attribute.translator=emptyAttributeTranslator shibboleth.attribute.translator.values=emptyAttributeTranslator,userMappingAttributeTranslator,switchAttributeTranslator ######################################################################## # Clustering settings ######################################################################## # set to Cluster to enable, otherwise use SingleVM to disable cluster features cluster.mode=SingleVM # each node requires a unique ID (1-64) starting at "1" node.id=1 tomcat.id=${node.id} # certain servies (e.g., notifications, course logger etc. are not # cluster capable and can only run on a single node - set this to # enabled on that node cluster.singleton.services = enabled # JMS broker url's where the path (localhost:61700) - defines teh local adress and local port : # SingleVM jms.broker.url jms.broker.url=vm://embedded?broker.persistent=false search.broker.url=vm://embedded?broker.persistent=false index.broker.url=vm://embedded?broker.persistent=false certificate.broker.url=vm://embedded?broker.persistent=false # Cluster (remote) jms.broker.url #jms.broker.url=failover:(tcp://localhost:61616?wireFormat.maxInactivityDuration=0) #search.broker.url=failover:(tcp://localhost:61616?wireFormat.maxInactivityDuration=0) #if you use the jndi connection jms.broker.jndi=OpenOLATConnectionFactory sysbus.broker.jndi=topic/sysbus&broker.useJmx=false search.broker.jndi=queue/searchQueue&broker.useJmx=false index.broker.jndi=queue/indexQueue&broker.useJmx=false certificate.broker.jndi=queue/certificateQueue&broker.useJmx=false ##### #query cache config for singlevm/cluster ##### hibernate.cache=enabled hibernate.cache.values=enabled,disabled #cluster need hibernate.caching.cluster.class set and hibernate.caching.singlevm.class empty and second level cache to false #for the cluster version you have to add treecache.xml to the classpath, see olat3/conf/trecache.xml for an example hibernate.caching.singlevm.class=net.sf.ehcache.hibernate.SingletonEhCacheProvider #hibernate.caching.cluster.class=org.hibernate.cache.jbc2.SharedJBossCacheRegionFactory hibernate.caching.cluster.class=org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory hibernate.caching.use.query.cache=true hibernate.use.second.level.cache=true hibernate.connection.timeout=120 ######################################## # LDAP configuration parameters (optional) # for advanced config options see webapp/WEB-INF/src/serviceconfig/org/olat/ldap/_spring/olatextconfig.xml ######################################## ldap.enable=false # is ldap your default provider? true or false ldap.default=false ldap.activeDirectory=false # Page size is defined on the LDAP server, change this with cautious but larger number can reduce load of the # LDAP server for synchronization of large organization (Active Directory has a default value of 1000) ldap.batch.size=50 # The date format is not the same for OpenLDAP (yyyyMMddHHmmss'Z') or # ActiveDirectory (yyyyMMddHHmmss'.0Z') ldap.dateFormat=yyyyMMddHHmmss'Z' ldap.dateFormat.values=yyyyMMddHHmmss'Z',yyyyMMddHHmmss'.0Z' # The LDAP Provider from the Oracle's JDKs (standard and JRockit) allows the use of multiple LDAP servers. # Write the URLs of all the servers with a space as separator and a trailing slash. ldap.ldapUrl=ldap://ldap.openolat.org:389 ldap.ldapUrl.values=ldap://ldap1.openolat.org:389/ ldap://ldap2.openolat.org:389/ ldap://ldap3.openolat.org:389/ # Connection timeout in milliseconds ldap.connectionTimeout=15000 # System user: used for getting all users and connection testing ldap.ldapSystemDN=CN=Frentix,OU=Benutzer,DC=openolat,DC=org ldap.ldapSystemPW=ldap4olat # List of bases where to find users. To use multiple bases you must edit the config file manually ldap.ldapBases=OU=Students,DC=openolat,DC=org # SSL configuration for LDAP ldap.sslEnabled=false ldap.trustStoreLocation=/usr/lib/j2sdk1.5-sun/jre/lib/security/cacerts ldap.trustStorePwd=changeit ldap.trustStoreType=JKS # Create LDAP users on the fly when authenticated successfully ldap.ldapCreateUsersOnLogin=true # When users log in via LDAP, the system can keep a copy of the password as encrypted # hash in the database. This makes OLAT more independent from an offline LDAP server # and users can use their LDAP password to use the WebDAV functionality. # If you have a mixed environment where some users have webDAV passwords and some have # only local OLAT user accounts, you have to set this flag to 'true. # When setting to true (recommended), make sure you configured password.change.allowed=false # unless you also set ldap.propagatePasswordChangedOnLdapServer=true ldap.cacheLDAPPwdAsOLATPwdOnLogin=true # Change the password on the LDAP server too ldap.propagatePasswordChangedOnLdapServer=false # Reset the password lock timeout on the active directory in case it is # an active directory and also remove user from failed login list ldap.resetLockTimoutOnPasswordChange=true # Define an external url where the users can change their password ldap.changePasswordUrl= # When the system detects an LDAP user that does already exist in OLAT but is not marked # as LDAP user, the OLAT user can be converted to an LDAP managed user. # When enabling this feature you should make sure that you don't have a user 'administrator' # in your ldapBases (not a problem but not recommended) ldap.convertExistingLocalUsersToLDAPUsers=false # Users that have been created vial LDAP sync but now can't be found on the LDAP anymore # can be deleted automatically. If unsure, set to false and delete those users manually # in the user management. ldap.deleteRemovedLDAPUsersOnSync=false # Sanity check when deleteRemovedLDAPUsersOnSync is set to 'true': if more than the defined # percentages of user accounts are not found on the LDAP server and thus recognized as to be # deleted, the LDAP sync will not happen and require a manual triggering of the delete job # from the admin interface. This should prevent accidential deletion of OLAT user because of # temporary LDAP problems or user relocation on the LDAP side. # Value= 0 (never delete) to 100 (always delete). ldap.deleteRemovedLDAPUsersPercentage=50 # Should users be created and synchronized automatically on OLAT startup? Set this option to # 'true' to create and sync all LDAP users in a batch manner on each OLAT startup.If you set # this configuration to 'false', the users will be generated on-the-fly when they log in # For the cron syntax see http://quartz.sourceforge.net/javadoc/org/quartz/CronTrigger.html ldap.ldapSyncOnStartup=true # Independent of ldap.ldapSyncOnStartup, users can be created / synced in a batch manner # peridically. Set ldap.ldapSyncCronSync=true if you want such a behaviour and set an # appropriate cron expression to define the interval. The default cron expression will # sync the LDAP database with the OLAT database each hour. ldap.ldapSyncCronSync=${ldap.ldapSyncOnStartup} ldap.ldapSyncCronSyncExpression=0 0 * * * ? # Configuration for syncing user attributes during login or cron and batch sync (examples are # for an active directory) ldap.ldapUserObjectClass=person # Filter that uses the user object class. Can be exteded to include group memberships as well. Default is a standard object class filter. ldap.ldapUserFilter=(objectClass=${ldap.ldapUserObjectClass}) # Example for more complex filter: # ldap.ldapUserFilter=(&(objectClass=${ldap.ldapUserObjectClass})(memberOf=CN=OpenOLATAccess,OU=Students,DC=openolat,DC=org)) # Attribute to resolve the DN of the suer during login (value is the internal attribute) ldap.ldapUserCreatedTimestampAttribute=whenCreated ldap.ldapUserLastModifiedTimestampAttribute=whenChanged # OpenLDAP is userPassword, ActiveDirectory is unicodePwd ldap.ldapUserPassordAttribute=userPassword # Define mapping of user attributes. Only the mandatory attributes are defined here, see the # config file for advanced user attributes mapping ldap.attributename.useridentifyer=sAMAccountName ldap.attributename.email=mail ldap.attributename.firstName=givenName ldap.attributename.lastName=sn ldap.attributename.nickName=${ldap.attributename.useridentifyer} # Attribute used as username to log in. Note: the configured login attribute MUST be one of the mapped attributes below, e.g. genericTextProperty1 # If the login attribute should not be visible in OO, then disable the OO user property in all contexts. ldap.login.attribute=${ldap.attributename.useridentifyer} #mappings from ldap-attrib to olat-userproperty ldap.attrib.gen.map.ldapkey1= ldap.attrib.gen.map.olatkey1= ldap.attrib.gen.map.ldapkey2= ldap.attrib.gen.map.olatkey2= ldap.attrib.gen.map.ldapkey3= ldap.attrib.gen.map.olatkey3= ldap.attrib.gen.map.ldapkey4= ldap.attrib.gen.map.olatkey4= ldap.attrib.gen.map.ldapkey5= ldap.attrib.gen.map.olatkey5= ldap.attrib.gen.map.ldapkey6= ldap.attrib.gen.map.olatkey6= ldap.attrib.gen.map.ldapkey7= ldap.attrib.gen.map.olatkey7= ldap.attrib.gen.map.ldapkey8= ldap.attrib.gen.map.olatkey8= ldap.attrib.gen.map.ldapkey9= ldap.attrib.gen.map.olatkey9= ldap.attrib.gen.map.ldapkey10= ldap.attrib.gen.map.olatkey10= ldap.attrib.gen.map.ldapkey11= ldap.attrib.gen.map.olatkey11= ldap.attrib.gen.map.ldapkey12= ldap.attrib.gen.map.olatkey12= ldap.attrib.gen.map.ldapkey13= ldap.attrib.gen.map.olatkey13= ldap.attrib.gen.map.ldapkey14= ldap.attrib.gen.map.olatkey14= ldap.attrib.gen.map.ldapkey15= ldap.attrib.gen.map.olatkey15= ldap.attrib.gen.map.ldapkey16= ldap.attrib.gen.map.olatkey16= ldap.attrib.gen.map.ldapkey17= ldap.attrib.gen.map.olatkey17= ldap.attrib.gen.map.ldapkey18= ldap.attrib.gen.map.olatkey18= ldap.attrib.gen.map.ldapkey19= ldap.attrib.gen.map.olatkey19= ldap.attrib.gen.map.ldapkey20= ldap.attrib.gen.map.olatkey20= #static mappings, olat-userproperties will be filled with given value ldap.attrib.static.olatkey1= ldap.attrib.static.value1= ldap.attrib.static.olatkey2= ldap.attrib.static.value2= ldap.attrib.static.olatkey3= ldap.attrib.static.value3= #properties only to be synced on first sync ldap.attrib.sync.once.olatkey1= ldap.attrib.sync.once.olatkey2= ldap.attrib.sync.once.olatkey3= # sync group from a LDAP groups ldap.ldapGroupBases= ldap.ldapGroupBases.values=ou=groups,dc=openproject,dc=org # the object class of groups ldap.ldapGroupObjectClass=groupOfNames ldap.ldapGroupFilter=(objectClass=${ldap.ldapGroupObjectClass}) # the marker attribute for coaches ldap.coachRoleAttribute=employeeType ldap.coachRoleValue=coach # sync group from a list of separated ids saved in an attribute of # the DLAP user ldap.user.groupAttribute= ldap.user.groupAttribute.values=o ldap.user.groupAttributeSeparator=, ldap.user.coachedGroupAttribute= ldap.user.coachedGroupAttribute.values=o ldap.user.coachedGroupAttributeSeparator=, # sync group coaches as participant too ldap.groupCoachAsParticipant=false # sync authors ldap.authorsGroupBases= ldap.authorRoleAttribute= ldap.authorRoleValue= # sync user managers ldap.userManagersGroupBases= ldap.userManagerRoleAttribute= ldap.userManagerRoleValue= # sync group managers ldap.groupManagersGroupBases= ldap.groupManagerRoleAttribute= ldap.groupManagerRoleValue= # sync question pool managers ldap.qpoolManagersGroupBases= ldap.qpoolManagerRoleAttribute= ldap.qpoolManagerRoleValue= # sync curriculum managers ldap.curriculumManagersGroupBases= ldap.curriculumManagerRoleAttribute= ldap.curriculumManagerRoleValue= # sync learning resource managers ldap.learningResourceManagersGroupBase= ldap.learningResourceManagerRoleAttribute= ldap.learningResourceManagerRoleValue= ##### # Build properties ##### application.name=OpenOlat build.version=15.3.10 build.identifier=openolat15310-dev build.repo.revision=local-devel ##### # OpenOlat user activity logging: anonymous logging will skip all tracking loggings and only log actions # of type admin and statistic ##### log.anonymous=false ######################################## # Simple message service ######################################## message.enabled=false message.provider=Dummy message.provider.values=Dummy,WebSMS #Features using the sms message.reset.password.enabled=true message.ask.by.first.login=true #WebSMS configuration websms.username= websms.password= ######################################## # Access control ######################################## #module on/off resource.accesscontrol.enabled=true #The user has a menu item in home to see the list of access resource.accesscontrol.home.overview=true #access methods available method.token.enabled=true method.free.enabled=true method.paypal.enabled=false method.paypal.checkout.enabled=false method.auto.enabled=false # Properties to configure the Shibboleth implementation of the auto access method # attributes to use for search (comma separated) method.auto.shib.identifiers.values=internalId,externalId,externalRef method.auto.shib.identifiers= # Name of the Shibboleth attributes with the keys method.auto.shib.shib= # Splitter to split the parsed value in keys method.auto.shib.splitter.values=Semicolon method.auto.shib.splitter= # External reference may have many values separated by this delimiter. # If the value is not defined, no splitting is executed. method.auto.externalRef.delimiter= # If multi booking is disabled (false), a auto booking is done once and never again. # If multi booking is enabled (true), a auto booking is done multiple times per identifier # value and user. If two courses have the same id, the user is booked to both. method.auto.multi.booking=false # If enabled (true), the status of all existing advance orders is reset to pending (on startup). # That is, all advance orders are ready again to create a new booking. method.auto.reset.to.pending=false # If cancelation is enabled (true), existing advance orders are canceled, # if the identifier is not available any longer. # If cancelation is disabled (false), existing advance orders are never canceled method.auto.cancelation=false ######################################## # PayPal Checkout ######################################## paypal.checkout.v2.client.id= paypal.checkout.v2.client.secret= # set to true only for development purposes paypal.checkout.v2.sandbox=false ######################################## # PayPal Legacy (don't use it) # (need a business account) ######################################## # API USERNAME, Replace RHS with your API user name you obtained from sandbox/live server. paypal.security.user.id= # API PASSWORD, Replace RHS with your API password you obtained from sandbox/live server. paypal.security.password= # API SIGNATURE ,If you are using the 3 token credential then you should uncomment the following # line and specify/change the signature on the RHS of the = sign. The module only implements the # 3 token credential. paypal.security.signature= # APPLICATION ID, Replace RHS with your application id paypal.application.id= # Replace the RHS with the email address you used to signup at http://developer.paypal.com paypal.sandbox.email= # Email of the first receiver/merchant paypal.first.receiver.email= # Use the sandbox server paypal.sandbox=false paypal.sandbox.values=true,false # Only change this if you really know what you do paypal.data.format=XML paypal.data.format.values=XML,JSON,SOAP11 ######################################## # Course specific settings ######################################## #whether to display current course participant count in the course toolbox course.display.participants.count=true #whether to display infobox on assessable coursenodes course.display.infobox=true #whether to display changelog on assessable coursenodes course.display.changelog=true ######################################## # Course building blocks, every course building block can be disabled by adding a property here and reference it in # appropriate spring config file (by default are course bb are enabled) ######################################## course.node.linklist.enabled=true course.node.checklist.enabled=false course.node.checklist.deprecated=false course.node.dateenrollment.enabled=false # The LTI course element course.node.basiclti.enabled=true # Force the use of a launch page (or not) course.node.basiclti.force.launchpage=false course.node.portfolio.enabled=true course.node.infomessage.enabled=true course.node.members.enabled=true #deduplicate the list in the members list. course.node.members.deduplicate.list=true course.node.vc.enabled=false course.node.cp.enabled=true course.node.scorm.enabled=true course.node.podcast.enabled=true course.node.blog.enabled=true # The project broker course.node.projectbroker.enabled=true # The test QTI course.node.test.enabled=true # The self test QTI course.node.selfttest.enabled=true # The survey QTI course.node.survey.enabled=true # The form survey course.node.form.survey.enabled=true # The modern check list course.node.modern.checklist.enabled=true # The file dialog course element course.node.dialog.enabled=true # The course enrollment course.node.en.enabled=true # the contact / mail course element course.node.co.enabled=true ######################################## # Options for content editor ######################################## ceditor.image.styles=o_image_classic,o_image_border,o_image_shadow,o_image_frame,o_image_polaroid,o_image_round ceditor.image.title.styles=o_image_title_dark,o_image_title_bright,o_image_title_standard ceditor.table.styles=b_gray,b_blue,b_green,b_yellow,b_red ######################################## # Options for evaluation ######################################## # Possible file size limitations (in MB) in the file upload element of an evaluation form forms.file.upload.limit.mb=5,10,20,50 # Set the limit of session to show in the report (e.g. the print view) forms.report.max.sessions=100 ######################################## # Curriculum ######################################## curriculum.enabled=true curriculum.enabled.values=true,false site.curriculum.enabled=true curriculum.managed=true curriculum.managed.values=true,false curriculum.user.overview.rights=showCoursesAndCurriculum,viewEfficiencyStatement,showLecturesAndAbsences,showCourseProgressAndStatus ######################################## # Organisation ######################################## organisation.enabled=true organisation.enabled.values=true,false ######################################## # Lectures / absences ######################################## lecture.enabled=false lecture.enabled.values=true,false # Default values for the lectures controlled assessment mode lecture.assessment.mode.enabled=false lecture.assessment.mode.lead.time=10 lecture.assessment.mode.followup.time=10 lecture.assessment.mode.admissible.ips= lecture.assessment.mode.seb.keys= ######################################## # User to user relations ######################################## relation.role.enabled=enabled relation.role.enabled.values=enabled,disabled ######################################## # Quality management ######################################## quality.enabled=false # Custom email address and name for emails sent by the quality module. # If empty, the values of $fromemail and $fromname are used. quality.from.email= quality.from.name= ######################################## # Options for Virtual Classrooms ######################################## #Adobe connect vc.adobe.enabled=false vc.adobe.protocol=http vc.adobe.port=80 vc.adobe.baseurl=localhost # The account used is defined by the following admin. account vc.adobe.adminlogin= vc.adobe.adminpassword= #The type of user accounts vc.adobe.providerid=connect9 vc.adobe.providerid.values=connect9,dfn vc.adobe.guestAccessAllowed=true #Vitero vc.vitero.enabled=false vc.vitero.protocol=http vc.vitero.port=8080 vc.vitero.baseurl=localhost vc.vitero.contextPath=vitero vc.vitero.adminlogin=admin vc.vitero.adminpassword=007 vc.vitero.customerid=1 vc.vitero.olatTimeZoneId=Africa/Ceuta vc.vitero.olatTimeZoneId.values=c.f. listing of Vitero vc.vitero.deleteVmsUserOnUserDelete=true #Open meetings vc.openmeetings.enabled=false vc.openmeetings.protocol=http vc.openmeetings.port=5080 vc.openmeetings.baseurl=localhost vc.openmeetings.contextPath=openmeetings vc.openmeetings.adminlogin=admin vc.openmeetings.adminpassword=0007 vc.openmeetings.customerid=1 vc.openmeetings.supportemail=${supportemail} #GoTo Meetings vc.gotomeetings.enabled=false vc.gotomeetings.consumerKey= #BigBlueButton vc.bigbluebutton.enabled=false vc.bigbluebutton.protocol=https vc.bigbluebutton.port=443 vc.bigbluebutton.baseurl= vc.bigbluebutton.context= vc.bigbluebutton.groups=true vc.bigbluebutton.courses=true vc.bigbluebutton.appointments=true vc.bigbluebutton.cleanupMeetings=false vc.bigbluebutton.daysToKeep= vc.bigbluebutton.secret= vc.bigbluebutton.shared.secret= vc.bigbluebutton.recording.handler.id=native vc.bigbluebutton.recording.handler.id.values=native,opencast # Prevent deletion of recordings along the meetings vc.bigbluebutton.recordings.permanent=false vc.bigbluebutton.recordings.permanent.values=true,false # HTTP connection generic settings in milliseconds vc.http.connect.timeout=30000 vc.http.connect.request.timeout=30000 vc.http.connect.socket.timeout=30000 ######################################## # Options for card2brain ######################################## card2brain.enabled=false card2brain.enterpriseLoginEnabled=false card2brain.privateLoginEnabled=false card2brain.baseUrl=https://card2brain.ch/grails/SSO/lti.dispatch?alias=%s card2brain.peekViewUrl=https://card2brain.ch/box/%s/embed card2brain.verifyLtiUrl=https://card2brain.ch/grails/SSO/verifyLti.dispatch ######################################## # Options for Edubase and Edubook ######################################## edubase.enabled=false edubase.readerUrl=https://app.edubase.ch/ edubase.readerUrl.unique=true edubase.ltiLaunchUrl=https://reader.edubase.ch/lookup/srv/d4/lti/basicLaunch/ edubase.infoverUrl=https://reader.edubase.ch/lookup/srv/d4/information/infodocvers/%s edubase.coverUrl=https://reader.edubase.ch/lookup/srv/d4/information/coververdesktop/%s ######################################## # Options for edu-sharing # You have to configure public keys in the admin section in the GUI of OpenOlat. ######################################## edusharing.enabled=false edusharing.couse.node.enabled=false edusharing.url=https://edusharing.example.org/edu-sharing/ edusharing.app.id= # IP address of the OpenOlat instance edusharing.host= edusharing.ticket.valid.seconds=10 # User attribute to pass as userid to edu-sharing edusharing.user.identifier.key=email edusharing.user.identifier.key.values=username,email # Names of user attributes are configurable in edu-sharing. Use the same names here. edusharing.auth.key.userid=userid edusharing.auth.key.lastname=lastname edusharing.auth.key.firstname=firstname edusharing.auth.key.email=email edusharing.auth.affiliation.id=${instance.id} edusharing.auth.affiliation.name=${instance.id} ######################################## # Options for Collabora Office ######################################## collabora.enabled=false collabora.baseUrl=https://collabora.example.org/ collabora.data.transfer.confirmation.enabled=false collabora.usage.restricted.authors=false collabora.usage.restricted.coaches=false collabora.usage.restricted.managers=false ######################################## # Options for OnlyOffice ######################################## onlyoffice.enabled=false onlyoffice.baseUrl=https://onlyoffice.example.org/ onlyoffice.api.path=web-apps/apps/api/documents/api.js onlyoffice.conversion.path=ConvertService.ashx ## File editor onlyoffice.editor.enabled=false # Number of usable edit license. # Blank = no availabiloty check. # -1 = Viewer only (no edit licenses) onlyoffice.license.edit= # In which modes is the mobile editor enabled (comma separated list) onlyoffice.mobile.modes=VIEW,EMBEDDED onlyoffice.mobile.modes.values=EDIT,VIEW,EMBEDDED # CSS query to determine the limit of the mobile editor onlyoffice.mobile.query=only screen and (max-width: 770px), only screen and (max-height: 770px) onlyoffice.data.transfer.confirmation.enabled=false onlyoffice.usage.restricted.authors=false onlyoffice.usage.restricted.coaches=false onlyoffice.usage.restricted.managers=false ## Thumbnails onlyoffice.thumbnails.enabled=true ## HTTP connection settings onlyoffice.http.connect.timeout=30000 onlyoffice.http.connect.request.timeout=30000 onlyoffice.http.connect.socket.timeout=30000 ######################################## # Options for monitoring ######################################## monitoring.enabled=true monitoring.instance.description=OpenOlat instance monitored.probes=Runtime,System,Database,Memory,OpenOLAT,Release,Environment,Indexer monitoring.dependency.server=myserver ######################################## # Options for document pool ######################################## # Enable the document pool based on taxonomies site.docpool.enable=false # Define the document pool name as it appears when mounted via WebDAV. Best is to use only plain # vanilla ASCII characters docpool.webdav.mountpoint=doc-pool docpool.webdav.mountpoint.values=doclibrary,hfm,topics... ######################################## # Options for library ######################################## sites.enable.library=false site.library.enabled=${sites.enable.library} library.repository.entry.key= library.notify.afterupload= library.notify.afterfreeing= ######################################## # Options for video resource ######################################## # Video resource, course node and site video.enabled=true video.coursenode.enabled=true video.site.enable=false video.marker.styles=o_video_marker_gray,o_video_marker_blue,o_video_marker_green,o_video_marker_yellow,o_video_marker_red # Enable transcoding if you want to create optimized version of your video for delivery. video.transcoding.enabled=false # The transcoding process can run locally in s separate process using HandBrake. In that # case, the binary "HandBrakeCLI" must be installed in your system and available to the # java environment of your system. Only HandBrakeCLI in version > 1 is supported. # Alternatively, you can disable local transcoding and implement a shell script that runs # on another server which reads from the o_vid_transcoding table to separate transcoding # from the main server. For larger installations it is recommendet to run the transcoding # on a dedicated server video.transcoding.local=true # Use tasklist to limit CPU usage if you set video.transcoding.local=true video.transcoding.taskset.cpuconfig=0,1 video.transcoding.taskset.cpuconfig.values=0,1 to indicate usage of 2 cores, set empty value to disable taskset (e.g. on osx not available) # List of transcoding versions to be generated by the transcoder video.transcoding.resolutions=1080,720,480 video.transcoding.resolutions.values=2160,1080,720,480 # The preferred resolution if multiple video versions are available and the user has no # customized setting. Should be a values from video.transcoding.resolutions video.transcoding.resolution.preferred=720 # Which profile should be used while transcoding. "Fast" delivers better quality, but taks # roughly twice the time for transcoding. "Fast" has about one third larger file size. In # short: "Fast" for better quality at the cost or resources, "Very Fast" for smaller files # at the cost of quality. video.transcoding.profile=Very Fast video.transcoding.profile.values=Fast,Very Fast # Where to store transcoded versions. This can be located on another path in case the # transcoding service is working on another physical server or you just want it to use # another (cheap) disk. By default it is also located in the olatdata dir. # The master video files are kept in the olatdata directory, this is only about the # transcoded versions. # If you set video.transcoding.local=false and use an external script for transcoding, this # other script must have access to this video.transcoding.dir as well to store the transcoded # videos. Make sure the access permissions are implemented in a way so that the OpenOlat process # can always delete the files from this video.transcoding.dir directory (when deleting the # master video) video.transcoding.dir=${folder.root}/transcodedVideos video.transcoding.dir.values=${folder.root}/transcodedVideos, /mount/cheap/disk/transcodedVideos ############################################################################### # Youtube API ############################################################################### # allow to retrieve metadata for youtube video youtube.api.key= ############################################################################### # Opencast ############################################################################### opencast.enabled=false # API # REST endpoint of the admin service opencast.api.url=https://admin.opencast.example.com/api # REST endpoint of the presentation service opencast.api.presentation.url=https://presentation.opencast.example.com/search # Username and password of the technical opencast user opencast.api.username= opencast.api.password= # LTI opencast.lti.url=https://presentation.opencast.example.com/lti opencast.lti.sign.url= opencast.lti.key= opencast.lti.secret= # BigBlueButton recordings opencast.bbb.enabled=false # Course Node opencast.course.node.enabled=false opencast.course.node.auth.delegate=User opencast.course.node.auth.delegate.values=None,User,Roles opencast.course.node.auth.delegate.roles= opencast.course.node.roles.values=Instructor,Administrator,TeachingAssistant,ContentDeveloper,Mentor,Learner opencast.course.node.roles.admin=Instructor,Administrator,TeachingAssistant,ContentDeveloper,Mentor opencast.course.node.roles.coach=Instructor,TeachingAssistant,Mentor opencast.course.node.roles.participant=Learner ############################################################################### # Options for the live stream course node ############################################################################### live.stream.enabled=false # Enable multiple streams pre event. Actually two streams are supported. live.stream.multi.stream.enabled=false # Char / String to separate multiple urls of a single event live.stream.url.separator=, # Buffer time to switch from the announcement page to the live stream (in minutes) # and vice versa. live.stream.buffer.before.min=5 live.stream.buffer.after.min=5 live.stream.edit.coach=false # Profile to control witch stream is visible for the watchers. live.stream.player.profile=both live.stream.player.profile.values=both,stream1,stream2 ############################################################################### # Options for the VFS large files admin GUI ############################################################################### vfs.largefiles.upperborder=157286400 vfs.largefiles.lowerborder=26214400 ############################################################################### # Options for the imprint ############################################################################### impressum.enabled=${topnav.impressum} impressum.position=footer impressum.contact.enabled=true impressum.contact.mail=${supportemail} ############################################################################### # Options for the contact tracing ############################################################################### contact.tracing.enabled=false # Retention period in days contact.tracing.retention.period=40 # Default duration of stay in minutes contact.tracing.duration.default=90 # Possible values for the following: automatic contact.tracing.attendance.start=automatic # Possible values for the following: mandatory, disabled, optional contact.tracing.attendance.end=optional contact.tracing.nickname=mandatory contact.tracing.lastname=mandatory contact.tracing.firstname=mandatory contact.tracing.street=disabled contact.tracing.extra.address.line=disabled contact.tracing.zip.code=optional contact.tracing.city=optional contact.tracing.email=mandatory contact.tracing.institutional.email=optional contact.tracing.generic.email=disabled contact.tracing.private.phone=disabled contact.tracing.mobile.phone=mandatory contact.tracing.office.phone=disabled # What should be written above every QR code contact.tracing.qr.instructions=<div class\="page>\r\n<div class\="section">Registration is <strong>mandatory -\u00A0</strong>Help fighting <strong>COVID-19</strong>\!</div>\r\n<div class\="section">\u00A0</div>\r\n<div class\="section">Please <strong>scan the QR Code</strong> to start registration.</div>\r\n</div> # Should it be possible for logged in users to register anonymously - E.g. to register a friend contact.tracing.anonymous.registration.for.registered.users=false