Skip to content
Snippets Groups Projects
Commit 20ccd7a4 authored by pkupczyk's avatar pkupczyk
Browse files

SP-555 / BIS-366 : openbis.js - delete utilities.js files and use...

SP-555 / BIS-366 : openbis.js - delete utilities.js files and use openbis-action-deferrer.js - added basynthec server configuration

SVN: 28983
parent 2d98620b
No related branches found
No related tags found
No related merge requests found
Showing
with 612 additions and 4 deletions
......@@ -22,7 +22,7 @@
</natures>
<filteredResources>
<filter>
<id>1367570718419</id>
<id>1367572785213</id>
<name></name>
<type>30</type>
<matcher>
......@@ -31,7 +31,7 @@
</matcher>
</filter>
<filter>
<id>1367570718425</id>
<id>1367572785433</id>
<name></name>
<type>30</type>
<matcher>
......@@ -40,7 +40,7 @@
</matcher>
</filter>
<filter>
<id>1367570718430</id>
<id>1367572785914</id>
<name></name>
<type>30</type>
<matcher>
......@@ -48,5 +48,14 @@
<arguments>1.0-projectRelativePath-matches-false-false-servers/novartis/core-plugins/ngs-sample-overview-graph/*</arguments>
</matcher>
</filter>
<filter>
<id>1367572785916</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.ui.ide.multiFilter</id>
<arguments>1.0-projectRelativePath-matches-false-false-servers/basynthec/core-plugins/basynthec/*</arguments>
</matcher>
</filter>
</filteredResources>
</projectDescription>
......@@ -99,6 +99,14 @@
</antcall>
</target>
<target name="create-webapp-basynthec">
<antcall target="create-webapp">
<param name="js-test.project.name" value="openbis" />
<param name="js-test.webapp.name" value="ch.systemsx.cisd.openbis.OpenBIS" />
<param name="js-test.suite.name" value="basynthec" />
</antcall>
</target>
<target name="run-webapp-common">
<antcall target="run-webapp">
<param name="js-test.suite.name" value="common" />
......@@ -120,6 +128,13 @@
</antcall>
</target>
<target name="run-webapp-basynthec">
<antcall target="run-webapp">
<param name="js-test.suite.name" value="basynthec" />
<param name="js-test.suite.class" value="ch.systemsx.cisd.openbis.jstest.suite.basynthec.JsTestBasynthec" />
</antcall>
</target>
<target name="run-tests-js-on-new-server" depends="compile-tests">
<delete dir="${output.test}" />
<testng workingDir="servers/common/openBIS-server"
......
enabled-modules = basynthec
File added
1060
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%t] %c - %m%n"/>
</layout>
</appender>
<appender name="NULL" class="org.apache.log4j.varia.NullAppender" />
<root>
<priority value ="info" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>
# Unique code of this Data Store Server. Not more than 40 characters.
data-store-server-code = DSS1
# host name of the machine on which the datastore server is running
host-address = http://localhost
# parent directory of the store directory and all the dropboxes
root-dir = data
# The root directory of the data store
storeroot-dir = ${root-dir}/store
incoming-root-dir = ${root-dir}
# Cache for data set files from other Data Store Servers
cache-workspace-folder ${root-dir}/dss-cache
# The directory where the command queue file is located; defaults to storeroot-dir
commandqueue-dir =
# Port
port = 20001
use-ssl = false
# Session timeout in minutes
session-timeout = 720
# Path to the keystore
keystore.path = etc/openBIS.keystore
# Password of the keystore
keystore.password = changeit
# Key password of the keystore
keystore.key-password = changeit
# The check interval (in seconds)
check-interval = 5
quiet-period = 10
# The time-out for clean up work in the shutdown sequence (in seconds).
# Note that that the maximal time for the shutdown sequence to complete can be as large
# as twice this time.
# Remark: On a network file system, it is not recommended to turn this value to something
# lower than 180.
shutdown-timeout = 180
# The minimum time (in seconds) of availability of the data stream since moment when user requested
# for the data stream url. If not specified default value (20 seconds) will be used.
# minimum-time-to-keep-streams-in-sec = 20
#�If free disk space goes below value defined here, a notification email will be sent.
# Value must be specified in kilobytes (1048576 = 1024 * 1024 = 1GB). If no high water mark is
# specified or if value is negative, the system will not be watching. There are 2 different kinds
# of highwater mark supported: the one that is checking the space on the store, and one that is
# checking the amount of free space for recovery state (on the local filesystem).
highwater-mark = -1
recovery-highwater-mark = -1
# If a data set is successfully registered it sends out an email to the registrator.
# If this property is not specified, no email is sent to the registrator. This property
# does not affect the mails which are sent, when the data set could not be registered.
notify-successful-registration = false
# The URL of the openBIS server
server-url = ${host-address}:20000
# The username to use when contacting the openBIS server
username = etlserver-basynthec
# The password for the etlserver user who contacts the openBIS server
password=e1AWO4f0ro
# The base URL for Web client access to the data store server.
download-url = ${host-address}:${port}
# SMTP properties (must start with 'mail' to be considered).
# The current configuration saves the emails in the file system in the root directory
mail.smtp.host = file://${root-dir}
# mail.smtp.host = localhost
# mail.from = openbis-dss@localhost
# mail.smtp.user =
# mail.smtp.password =
# Data sources
data-sources = path-info-db
# Data source for pathinfo database
path-info-db.version-holder-class = ch.systemsx.cisd.openbis.dss.generic.shared.PathInfoDatabaseVersionHolder
path-info-db.databaseEngineCode = postgresql
path-info-db.basicDatabaseName = pathinfo
# The host and optionally port. Default is 'localhost'.
# path-info-db.urlHostPart =
path-info-db.databaseKind = test_js_basynthec
path-info-db.scriptFolder = ../../../../datastore_server/source/sql
# ---------------------------------------------------------------------------
# maintenance plugins configuration
# ---------------------------------------------------------------------------
# Comma separated names of maintenance plugins. Each plugin should have configuration properties prefixed with its name.
maintenance-plugins = post-registration, path-info-deletion
# Maintenance task for post registration of all paths of a freshly registered data set to be fed into pathinfo database
post-registration.class = ch.systemsx.cisd.etlserver.postregistration.PostRegistrationMaintenanceTask
post-registration.interval = 30
post-registration.cleanup-tasks-folder = ${root-dir}/post-registration/cleanup-tasks
post-registration.last-seen-data-set-file = ${root-dir}/post-registration/last-seen-data-set.txt
post-registration.post-registration-tasks = pathinfo-feeding
post-registration.pathinfo-feeding.class = ch.systemsx.cisd.etlserver.path.PathInfoDatabaseFeedingTask
post-registration.pathinfo-feeding.compute-checksum = true
# Maintenance task for deleting entries from pathinfo database after deletion of a data set
path-info-deletion.class = ch.systemsx.cisd.etlserver.plugins.DeleteFromExternalDBMaintenanceTask
path-info-deletion.interval = 120
path-info-deletion.data-source = path-info-db
path-info-deletion.data-set-table-name = data_sets
path-info-deletion.data-set-perm-id = CODE
# ---------------------------------------------------------------------------
# processing plugins configuration
# ---------------------------------------------------------------------------
# Comma separated names of processing plugins. Each plugin should have configuration properties prefixed with its name.
processing-plugins = path-info-db-consistency-check
# Processing task that checks the consistency between the data store and the meta information stored in the PathInfoDB.
# It sends out an email which contains all differences found.
path-info-db-consistency-check.label = Path Info DB consistency check
path-info-db-consistency-check.dataset-types = .*
path-info-db-consistency-check.class = ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.DataSetAndPathInfoDBConsistencyCheckProcessingPlugin
# ---------------------------------------------------------------------------
# dropbox configurations
# ---------------------------------------------------------------------------
inputs = default-dropbox
dss-rpc.put-default = default-dropbox
default-dropbox.incoming-dir = ${incoming-root-dir}/incoming-default
default-dropbox.incoming-data-completeness-condition = auto-detection
default-dropbox.top-level-data-set-handler = ch.systemsx.cisd.etlserver.registrator.api.v2.JavaTopLevelDataSetHandlerV2
default-dropbox.program-class = ch.systemsx.cisd.etlserver.registrator.DefaultDropbox
default-dropbox.storage-processor = ch.systemsx.cisd.etlserver.DefaultStorageProcessor
default-dropbox.validation-script-path = ../core-plugins/default/default-validation-script.py
# ---------------------------------------------------------------------------
# Archiver configuration (optional)
# ---------------------------------------------------------------------------
# Configuration of an archiver task. All properties are prefixed with 'archiver.'.
# Archiver class specification (together with the list of packages this class belongs to).
#archiver.class = ch.systemsx.cisd.openbis.dss.generic.server.plugins.demo.DemoArchiver
# ---------------------------------------------------------------------------
# Imaging database for screening (optional, only used if screening technology switched on)
# ---------------------------------------------------------------------------
# Format: <host>[:<port>]. Default: localhost
# imaging-database.url-host-part =
# Default: prod.
imaging-database.kind = test_js_basynthec
# ---------------------------------------------------------------------------
# INTERNAL CONFIGURATION,
# Do not change this part unless you are developing openBIS extensions.
# ---------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<!--
// This configuration file is suitable for testing purposes.
-->
<log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<!--
// %d: outputs the date of the logging event.
// %-5p: priority (i.e. level) of the logging event should be left justified to
// a width of five characters.
// %t: outputs the name of the thread that generated the logging event.
// %c: outputs the category of the logging event.
// %m: outputs the application supplied message associated with the logging event.
// %n: outputs the platform dependent line separator character or characters.
// %X: outputs the MDC (mapped diagnostic context) associated with the thread that generated the logging event.
-->
<param name="ConversionPattern"
value="%d %-5p [%t]%X{sessionInfo} %c - %m%n" />
</layout>
</appender>
<!--
// Defined but not used right now.
-->
<appender name="NULL" class="org.apache.log4j.varia.NullAppender" />
<!--
// Enable full wire (header and content) + context logging
// For more information look at http://jakarta.apache.org/commons/httpclient/logging.html.
// We do not need to set a level value here as loggers inherit their level from the root logger.
-->
<!--
// Do not use log level debug otherwise plain passwords are readable.
-->
<logger name="httpclient.wire">
<level value="ERROR" />
</logger>
<!--
// Uncomment this for debugging value binding in Hibernate
<category name="org.hibernate.type">
<priority value="TRACE"/>
</category>
-->
<!--
<logger name="org.apache.commons.httpclient">
<level value="DEBUG" />
</logger>
-->
<root>
<priority value="info" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>
# ---------------------------------------------------------------------------
# Core plugins configuration
# ---------------------------------------------------------------------------
core-plugins-folder=../core-plugins
# ---------------------------------------------------------------------------
# Database configuration
# ---------------------------------------------------------------------------
# The database instance local unique identifier. Used when the new database is created.
database-instance = DEFAULT
# The host and optionally port. Default is 'localhost'.
# database.url-host-part =
database.kind = test_js_basynthec
# User who owns the database. Default: Operating system user running the server.
database.owner =
database.owner-password =
# Superuser of the database. Default: database-dependent.
database.admin-user =
database.admin-password =
# Max. number of active database connections. Default: 20.
database.max-active-connections =
# Max. number of idle database connections to keep open. Default: 20.
database.max-idle-connections =
# Log interval (in seconds) between two regular log entries of the number of active database
# connections. Default: 3600s.
database.active-connections-log-interval =
# ---------------------------------------------------------------------------
# Authentication configuration
# ---------------------------------------------------------------------------
# Supported Authentication options are:
# 'file-authentication-service'
# 'ldap-authentication-service'
# 'crowd-authentication-service'
# 'file-crowd-authentication-service'
# 'file-ldap-authentication-service'
# 'stacked-authentication-service' : ldap - crowd
# For a detailed description please have a look at the Installation and Administrator
# Guide of the openBIS Server: https://wiki-bsse.ethz.ch/x/oYIUBQ
authentication-service = dummy-authentication-service
dss-rpc.put.dss-code = DSS1
# ---------------------------------------------------------------------------
# Crowd configuration
# ---------------------------------------------------------------------------
crowd.service.host = crowd-bsse.ethz.ch
crowd.service.port = 8443
crowd.application.name = openbis
crowd.application.password =
# ---------------------------------------------------------------------------
# LDAP configuration
# ---------------------------------------------------------------------------
# The URL of the LDAP server, e.g. "ldap://d.ethz.ch/DC=d,DC=ethz,DC=ch"
ldap.server.url = <LDAP URL>
# The distinguished name of the security principal,
# e.g. "CN=carl,OU=EthUsers,DC=d,DC=ethz,DC=ch"
ldap.security.principal.distinguished.name = <distinguished name to login to the LDAP server>
# Password of the LDAP user account that will be used to login to the LDAP server to perform the queries
ldap.security.principal.password = <password of the user to connect to the LDAP server>
# The security protocol to use, use "ssl" or "none", default is "ssl"
ldap.security.protocol =
# The authentication method to use: "none" (no authentication), "simple", "strong" (SASL), defaults to "simple"
ldap.security.authentication-method =
# The referral mode:
# "follow" - follow referrals automatically (the default)
# "ignore" - ignore referrals
# "throw" - throw ReferralException when a referral is encountered
ldap.referral =
# The attribute name for the user id, defaults to "uid"
ldap.attributenames.user.id =
# The attribute name for the email, defaults to "mail"
ldap.attributenames.email =
# The attribute name for the first name, defaults to "givenName"
ldap.attributenames.first.name =
# The attribute name for the last name, defaults to "sn"
ldap.attributenames.last.name =
# Set to true to also query for email aliases
ldap.queryEmailForAliases = true
# The query template, needs to contain %s which will be filled with the query term, e.g. uid=username
# The default is:
# ldap.queryTemplate = (&(objectClass=organizationalPerson)(objectCategory=person)(objectClass=user)(%s))
# which is known to work for many Active Directory installations.
# For OpenLDAP, replace by:
# ldap.queryTemplate = (&(%s))
# For restriction to BSSE accounts in OpenLDAP, set to:
# ldap.queryTemplate = (&(objectClass=bssePosixAccount)(%s))
ldap.queryTemplate =
# The number of times a failed LDAP query is retried at the max. Default: 1.
ldap.maxRetries =
# The timeout (in ms) to wait for an LDAP query to return, -1 for "wait indefinitely". Default: 10000.
ldap.timeout =
# Time time (in ms) to wait after a failure before retrying the query. Default: 10000.
ldap.timeToWaitAfterFailure=
# ---------------------------------------------------------------------------
# Anonymous login configuration (optional)
# ---------------------------------------------------------------------------
# Login of the existing user whose settings will be used for anonymous login
#user-for-anonymous-login = <user-login>
# ---------------------------------------------------------------------------
# Client configuration
# ---------------------------------------------------------------------------
# Name of the file that stores Web Client configuration
web-client-configuration-file = etc/web-client.properties
# A comma-separated list of trusted cross-origin domains, that are allowed to
# query openBIS content. Typically these are lightweight webapps that integrate with openBIS
# via JSON-RPC services, but are not directly hosted within the openBIS application.
#
# Example 1 (two different domains configured):
#
# trusted-cross-origin-domains=https://myapp.domain.com:8443, http://other.domain.com
#
# Example 2 (match every domain):
#
# trusted-cross-origin-domains= *
#
# The '*' matches any arbitrary domain. It should be used with care as it opens openBIS
# for potential cross-site scripting attacks.
#
#trusted-cross-origin-domains=
# ---------------------------------------------------------------------------
# Session configuration
# ---------------------------------------------------------------------------
# The time after which an inactive session is expired by the service (in minutes).
session-timeout = 720
# ---------------------------------------------------------------------------
# Business rules configuration
# ---------------------------------------------------------------------------
# When set to "true" enables the system to store material codes containing non-alphanumeric characters.
# Regardless of the value of this property no white spaces are allowed in the material codes.
#material-relax-code-constraints=false
# ---------------------------------------------------------------------------
# CIFEX connection configuration.
# ---------------------------------------------------------------------------
# The URL of the CIFEX server
cifex-url = https://cifex.ethz.ch:443
# Cifex users that will receive and automatically manage uploaded data.
# The user names should be prepended with 'id:' prefix for example.
# Example:
# cifex-recipient = id:dropboxuser, id:backpuser
cifex-recipient =
# ---------------------------------------------------------------------------
# Hibernate Search
# ---------------------------------------------------------------------------
# The working directory.
hibernate.search.index-base = ./indices
# One of NO_INDEX, SKIP_IF_MARKER_FOUND, INDEX_FROM_SCRATCH.
# If not specified, default (SKIP_IF_MARKER_FOUND) is taken.
hibernate.search.index-mode = SKIP_IF_MARKER_FOUND
# Defines the maximum number of elements indexed before flushing the transaction-bound queue.
# Default is 1000.
hibernate.search.batch-size = 1000
# Maximum number of search results
hibernate.search.maxResults = 100000
# If 'async', the update of indices will be done in a separate thread.
hibernate.search.worker.execution=async
# ---------------------------------------------------------------------------
# Online Help
# ---------------------------------------------------------------------------
# Online help is broken into two sections -- generic and specific. Generic help links back to
# the CISD. Specific help is provided by the host of the installation
#
# OpenBIS needs to know the root URL for the online help and a template for the individual pages.
# The template should have on parameter, called title, and should be constructed to automatically
# create the page if it does not already exist.
# The template can be created by going to the root page, adding a new link to the page, and
# replacing the title of the new page with the ${title}
onlinehelp.generic.root-url = https://wiki-bsse.ethz.ch/display/CISDDoc/OnlineHelp
onlinehelp.generic.page-template = https://wiki-bsse.ethz.ch/pages/createpage.action?spaceKey=CISDDoc&title=${title}&linkCreation=true&fromPageId=40633829
#onlinehelp.specific.root-url = https://wiki-bsse.ethz.ch/display/CISDDoc/OnlineHelp
#onlinehelp.specific.page-template = https://wiki-bsse.ethz.ch/pages/createpage.action?spaceKey=CISDDoc&title=${title}&linkCreation=true&fromPageId=40633829
# ---------------------------------------------------------------------------
# JMX memory monitor
# ---------------------------------------------------------------------------
# Interval between two runs of the memory monitor (in seconds).
# Set to -1 to disable the memory monitor.
memorymonitor-monitoring-interval = 60
# Interval between two regular log call of the memory monitor (in seconds).
# Set to -1 to disable regular memory usage logging.
memorymonitor-log-interval = 3600
# The percentage of memory that, if exceeded, triggers a notify log of the memory manager,
# Set to 100 to disable.
memorymonitor-high-watermark-percent = 90
# ---------------------------------------------------------------------------
# Database Configurations for Query module (optional)
# ---------------------------------------------------------------------------
# Comma separated keys of databases configured for Query module.
# Each database should have configuration properties prefixed with its key.
# Mandatory properties for each <database> include:
# <database>.label - name shown to the openBIS user when adding or editing a customized query
# <database>.database-driver - JDBC Driver of the database (e.g. org.postgresql.Driver)
# <database>.database-url - JDBC URL to the database (e.g. jdbc:postgresql://localhost/openbis)
# Optional properties for each <database> include:
# <database>.database-user - name of the database user (default: user.name from system properties)
# <database>.database-password - password of the database user
# <database>.creator-minimal-role - minimal role required to create/edit queries on this database (default: POWER_USER)
# <database>.data-space - If NOT specified OBSERVER of any space will be allowed to perform
# queries and <creator-minimal-role> of any space will allowed
# to create/edit queries on this DB.
# - If specified only OBSERVER of the space will be allowed to perform
# queries and <creator-minimal-role> of the space will allowed
# to create/edit queries on this DB.
#query-databases = openbisDB
#
#openbisDB.label = openBIS meta data
#openbisDB.data-space = CISD
#openbisDB.creator-minimal-role = SPACE_ADMIN
#openbisDB.database-driver = org.postgresql.Driver
#openbisDB.database-url = jdbc:postgresql://localhost/openbis_standard-technologies
#openbisDB.database-username =
#openbisDB.database-password =
# ---------------------------------------------------------------------------
# Maintenance plugins configuration (optional)
# ---------------------------------------------------------------------------
# Comma separated names of maintenance plugins.
# Each plugin should have configuration properties prefixed with its name.
# Mandatory properties for each <plugin> include:
# <plugin>.class - Fully qualified plugin class name
# <plugin>.interval - The time between plugin executions (in seconds)
# Optional properties for each <plugin> include:
# <plugin>.start - Time of the first execution (HH:mm)
# <plugin>.execute-only-once - If true the task will be executed exactly once,
# interval will be ignored. By default set to false.
#maintenance-plugins = demo
#
#demo.class = ch.systemsx.cisd.openbis.generic.server.task.DemoMaintenanceTask
#demo.interval = 60
#demo.property_1 = some value
#demo.property_2 = some value 2
#
# Internal - do not change
#
# Authorization
# Supported: 'no-authorization' and 'active-authorization'
authorization-component-factory = active-authorization
script-folder = ../../../../openbis/source/sql
# Experimental: Enable moving entities to trash (non-permanent deletion).
# Default value: false
enable-trash = true
# Default view mode that should be used if user doesn't have it specified in URL.
# Options: 'NORMAL' (standard mode - default), 'SIMPLE' (readonly mode with simplified GUI).
#
#default-view-mode = SIMPLE
# Flag specifying whether default login mode is anonymous or not.
# If true a user-for-anonymous-login has to be defined in service.properties
# Default value: false
#default-anonymous-login = true
# Maximal number of visible columns in tables. Default: 50.
max-visible-columns = 25
# Should the feature of adding unofficial/ad-hoc terms to vocabularies be turned on.
# Default value: false
allow-adding-unofficial-terms = true
# (optional) List of data set types for which there should be an image overview shown in dataset tables.
# If not specified image overview will not be shown for any datasets.
data-set-types-with-image-overview = HCS_IMAGE, UNKNOWN
# (optional) Allows power users adding vocabulary terms when editing the form.
# If not specified, default is false
# allow-adding-unofficial-terms = true
# Configuration of entity (experiment, sample, data set, material) detail views.
#
# Mandatory properties:
# - view (entity detail view id)
# - types (list of entity type codes)
# Optional properties:
# - hide-sections (list of section ids)
# - hide-smart-view (removes "Smart View" from Data Set Detail View -> Data View) (generic_dataset_viewer)
# - hide-file-view (removes "File View" from Data Set Detail View -> Data View) (generic_dataset_viewer)
# Available sections in entity-detail-views:
# generic_dataset_viewer
# data-set-data-section
# data-set-parents-section
# data-set-children-section
# data-set-contained-section
# query-section
# generic_experiment_viewer
# data-sets-section
# attachment-section
# query-section
# experiment-sample-section
# generic_sample_viewer
# container-sample-section
# derived-samples-section
# parent-samples-section
# data-sets-section
# attachment-section
# query-section
# generic_material_viewer
# query-section
#
# Example:
#
detail-views = sample-view, experiment-view, data-view
sample-view.view = generic_sample_viewer
sample-view.types = CELL_PLATE, CONTROL_LAYOUT
sample-view.hide-sections = attachment-section, module-section
experiment-view.view = generic_experiment_viewer
experiment-view.types = COMPOUND_HCS
experiment-view.hide-sections = attachment-section
data-view.view = generic_dataset_viewer
data-view.types = HCS_IMAGE
data-view.hide-smart-view = false
data-view.hide-file-view = false
......@@ -93,7 +93,7 @@ path-info-db.basicDatabaseName = pathinfo
# The host and optionally port. Default is 'localhost'.
# path-info-db.urlHostPart =
path-info-db.databaseKind = test_js_common
path-info-db.scriptFolder = datastore_server/sql
path-info-db.scriptFolder = ../../../../datastore_server/source/sql
# ---------------------------------------------------------------------------
# maintenance plugins configuration
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment