Templated configs

kernel-4.6.x
Amalka Subasinghe 3 years ago
parent d5c85980e1
commit 23b25fb540

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ you may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<!--
This configuration file represents the configuration that are needed
when publishing APIs to API Manager
-->
<WebappPublisherConfigs>
<!-- This host is used to define the host address which is used to publish APIs -->
{% if webapp_publisher_configs.host is defined %}
<Host>{{webapp_publisher_configs.host}}</Host>
{% else %}
<Host>https://${iot.core.host}:${iot.core.https.port}</Host>
{% endif %}
<!-- If it is true, the APIs of this instance will be published to the defined host -->
{% if webapp_publisher_configs.publish_api is defined %}
<PublishAPI>{{webapp_publisher_configs.publish_api}}</PublishAPI>
{% else %}
<PublishAPI>true</PublishAPI>
{% endif %}
<!-- If it is true, the APIs of this instance will be updated when the webapps are redeployed -->
{% if webapp_publisher_configs.enable_update_api is defined %}
<EnabledUpdateApi>{{webapp_publisher_configs.enable_update_api}}</EnabledUpdateApi>
{% else %}
<EnabledUpdateApi>true</EnabledUpdateApi>
{% endif %}
<!--Webapp will be published only when running below profiles-->
<Profiles>
<Profile>default</Profile>
{% if webapp_publisher_configs.profiles is defined %}
{%- for profile in webapp_publisher_configs.profiles -%}
<Profile>{{profile}}</Profile>
{% endfor %}
{% endif %}
</Profiles>
</WebappPublisherConfigs>

@ -1,2 +1,3 @@
instructions.configure = \
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.apimgt.webapp.publisher_${feature.version}/conf/webapp-publisher-config.xml,target:${installFolder}/../../conf/etc/webapp-publisher-config.xml,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.apimgt.webapp.publisher_${feature.version}/conf_templates/,target:${installFolder}/../../resources/conf/,overwrite:true);\

@ -0,0 +1,231 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ Copyright (c) 2019, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved.
~
~ Entgra (pvt) Ltd. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<ApplicationManagementConfiguration>
<!-- Application Mgt DB schema -->
<DatasourceName>jdbc/APPM_DS</DatasourceName>
<Extensions>
<Extension name="ApplicationManager">
{% if application_mgt_conf.extension.application_manager is defined %}
<ClassName>{{application_mgt_conf.extension.application_manager}}</ClassName>
{% else %}
<ClassName>org.wso2.carbon.device.application.mgt.core.impl.ApplicationManagerImpl</ClassName>
{% endif %}
</Extension>
<Extension name="ReviewManager">
{% if application_mgt_conf.extension.review_manager is defined %}
<ClassName>{{application_mgt_conf.extension.review_manager}}</ClassName>
{% else %}
<ClassName>org.wso2.carbon.device.application.mgt.core.impl.ReviewManagerImpl</ClassName>
{% endif %}
</Extension>
<Extension name="LifecycleStateManager">
{% if application_mgt_conf.extension.life_cycle_state_manager is defined %}
<ClassName>{{application_mgt_conf.extension.life_cycle_state_manager}}</ClassName>
{% else %}
<ClassName>org.wso2.carbon.device.application.mgt.core.lifecycle.LifecycleStateManager</ClassName>
{% endif %}
</Extension>
<Extension name="SubscriptionManager">
{% if application_mgt_conf.extension.subscription_manager is defined %}
<ClassName>{{application_mgt_conf.extension.subscription_manager}}</ClassName>
{% else %}
<ClassName>org.wso2.carbon.device.application.mgt.core.impl.SubscriptionManagerImpl</ClassName>
{% endif %}
</Extension>
<Extension name="ApplicationStorageManager">
{% if application_mgt_conf.extension.application_storage_manager is defined %}
<ClassName>{{application_mgt_conf.extension.application_storage_manager}}</ClassName>
{% if application_mgt_conf.extension.application_storage_manager.parameter_options is defined %}
<Parameters>
{% for property_name,property_value in application_mgt_conf.extension.application_storage_manager.parameter_options.items() %}
<Parameter name="{{property_name}}">{{property_value}}</Parameter>
{% endfor %}
</Parameters>
{% endif %}
{% else %}
<ClassName>org.wso2.carbon.device.application.mgt.core.impl.ApplicationStorageManagerImpl</ClassName>
<Parameters>
<Parameter name="StoragePath">repository/resources/apps/</Parameter>
<Parameter name="MaxScreenShotCount">6</Parameter>
</Parameters>
{% endif %}
</Extension>
</Extensions>
<!-- This is for publisher lifecycle -->
<!-- The current lifecycle as follows
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Created] -> [In-Review] -> [Approved] -> [Published] -> [Unpublished] -> [Removed]
^ | ^
| | |
| |-> [Deprecated] - - - - - - - -|
| |
|-> [Rejected] - - - - - - - - - - - - - - - - - - - - - - - - |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If there is a requirement to introduce a new state to the lifecycle, please refer above
diagram and add relevant state to the below configuration appropriately.
-->
<!-- a lifecyclestate can have following properties
<LifecycleState name="In-Review">
<IsAppInstallable>false</IsAppInstallable>
<IsAppUpdatable>true</IsAppUpdatable>
<IsInitialState>false</IsInitialState>
<IsEndState>false</IsEndState>
<Permission>
/device-mgt/applications/life-cycle/in-review
</Permission>
<ProceedingStates>
<State>Rejected</State>
<State>Approved</State>
</ProceedingStates>
</LifecycleState>
-->
<LifecycleStates>
<LifecycleState name="Created">
<IsAppUpdatable>true</IsAppUpdatable>
<IsInitialState>true</IsInitialState>
<IsDeletableState>true</IsDeletableState>
<Permission>/app-mgt/life-cycle/application/create</Permission>
<ProceedingStates>
<State>In-Review</State>
</ProceedingStates>
</LifecycleState>
<LifecycleState name="In-Review">
<Permission>/app-mgt/life-cycle/application/review</Permission>
<ProceedingStates>
<State>Rejected</State>
<State>Approved</State>
<State>Created</State>
</ProceedingStates>
</LifecycleState>
<LifecycleState name="Approved">
<Permission>/app-mgt/life-cycle/application/approve</Permission>
<ProceedingStates>
<State>In-Review</State>
<State>Published</State>
</ProceedingStates>
</LifecycleState>
<LifecycleState name="Rejected">
<IsDeletableState>true</IsDeletableState>
<Permission>/app-mgt/life-cycle/application/reject</Permission>
<ProceedingStates>
<State>In-Review</State>
</ProceedingStates>
</LifecycleState>
<LifecycleState name="Published">
<IsAppInstallable>true</IsAppInstallable>
<Permission>/app-mgt/life-cycle/application/publish</Permission>
<ProceedingStates>
<State>Blocked</State>
<State>Deprecated</State>
</ProceedingStates>
</LifecycleState>
<LifecycleState name="Blocked">
<Permission>/app-mgt/life-cycle/application/block</Permission>
<ProceedingStates>
<State>Published</State>
<State>Deprecated</State>
</ProceedingStates>
</LifecycleState>
<LifecycleState name="Deprecated">
<Permission>/app-mgt/life-cycle/application/deprecate</Permission>
<ProceedingStates>
<State>Published</State>
<State>Retired</State>
</ProceedingStates>
</LifecycleState>
<LifecycleState name="Retired">
<IsEndState>true</IsEndState>
<Permission>/app-mgt/life-cycle/application/retire</Permission>
</LifecycleState>
</LifecycleStates>
<AppCategories>
<Category>EMM</Category>
<Category>IoT</Category>
<Category>Art &amp; Design</Category>
<Category>Auto &amp; Vehicles</Category>
<Category>Beauty</Category>
<Category>Books &amp; Reference</Category>
<Category>Business</Category>
<Category>Comics</Category>
<Category>Communications</Category>
<Category>Dating</Category>
<Category>Education</Category>
<Category>Entertainment</Category>
<Category>Events</Category>
<Category>Finance</Category>
<Category>Food &amp; Drink</Category>
<Category>Health &amp; Fitness</Category>
<Category>House &amp; Home</Category>
<Category>Libraries &amp; Demo</Category>
<Category>Lifestyle</Category>
<Category>Maps &amp; Navigation</Category>
<Category>Medical</Category>
<Category>Music &amp; Audio</Category>
<Category>News &amp; Magazines</Category>
<Category>Parenting</Category>
<Category>Personalization</Category>
<Category>Photography</Category>
<Category>Productivity</Category>
<Category>Shopping</Category>
<Category>Social</Category>
<Category>Sports</Category>
<Category>Tools</Category>
<Category>Travel &amp; Local</Category>
<Category>Video Players &amp; Editors</Category>
<Category>Weather</Category>
<Category>GooglePlaySyncedApp</Category>
{% if application_mgt_conf.app_categories is defined %}
{%- for app_category in application_mgt_conf.app_categories -%}
<Category>{{app_category}}</Category>
{% endfor %}
{% endif %}
</AppCategories>
<RatingConfig>
{% if application_mgt_conf.rating_conf.min_rating_value is defined %}
<MinRatingValue>{{application_mgt_conf.rating_conf.min_rating_value}}</MinRatingValue>
{% else %}
<MinRatingValue>1</MinRatingValue>
{% endif %}
{% if application_mgt_conf.rating_conf.max_rating_value is defined %}
<MaxRatingValue>{{application_mgt_conf.rating_conf.max_rating_value}}</MaxRatingValue>
{% else %}
<MaxRatingValue>10</MaxRatingValue>
{% endif %}
</RatingConfig>
<MDMConfig>
{% if application_mgt_conf.mdm_conf.artifact_download_protocol is defined %}
<ArtifactDownloadProtocol>{{application_mgt_conf.mdm_conf.artifact_download_protocol}}</ArtifactDownloadProtocol>
{% else %}
<ArtifactDownloadProtocol>http</ArtifactDownloadProtocol>
{% endif %}
{% if application_mgt_conf.mdm_conf.artifact_download_endpoint is defined %}
<ArtifactDownloadEndpoint>{{application_mgt_conf.mdm_conf.artifact_download_endpoint}}</ArtifactDownloadEndpoint>
{% else %}
<ArtifactDownloadEndpoint>/api/application-mgt/v1.0/artifact</ArtifactDownloadEndpoint>
{% endif %}
</MDMConfig>
</ApplicationManagementConfiguration>

@ -0,0 +1,59 @@
<!--
~ Copyright (c) 2019, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved.
~
~ Entgra (pvt) Ltd. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<datasources-configuration xmlns:svns="http://org.wso2.securevault/configuration">
<providers>
<provider>org.wso2.carbon.ndatasource.rdbms.RDBMSDataSourceReader</provider>
</providers>
<datasources>
<datasource>
<name>APPM_DS</name>
<description>The datasource used for CDM Application Management</description>
<jndiConfig>
<name>jdbc/APPM_DS</name>
</jndiConfig>
<definition type="RDBMS">
<configuration>
{% if database.app_mgt is defined %}
<url>{{database.app_mgt.url}}</url>
<username>{{database.app_mgt.username}}</username>
<password>{{database.app_mgt.password}}</password>
<driverClassName>{{database.app_mgt.driver}}</driverClassName>
<validationQuery>{{database.app_mgt.validationQuery}}</validationQuery>
{% for property_name,property_value in database.app_mgt.pool_options.items() %}
<{{property_name}}>{{property_value}}</{{property_name}}>
{% endfor %}
{% else %}
<url>jdbc:h2:./repository/database/WSO2DM_APPM_DB;DB_CLOSE_ON_EXIT=FALSE</url>
<username>wso2carbon</username>
<password>wso2carbon</password>
<driverClassName>org.h2.Driver</driverClassName>
<maxActive>50</maxActive>
<maxWait>60000</maxWait>
<testOnBorrow>true</testOnBorrow>
<validationQuery>SELECT 1</validationQuery>
<validationInterval>30000</validationInterval>
{% endif %}
</configuration>
</definition>
</datasource>
</datasources>
</datasources-configuration>

@ -3,6 +3,7 @@ org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../featur
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.application.mgt.server_${feature.version}/conf/application-mgt.xml,target:${installFolder}/../../conf/application-mgt.xml,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.application.mgt.server_${feature.version}/conf/datasources/application-mgt-datasources.xml,target:${installFolder}/../../conf/datasources/application-mgt-datasources.xml,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.application.mgt.server_${feature.version}/dbscripts/cdm/application-mgt,target:${installFolder}/../../../dbscripts/cdm/application-mgt,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.application.mgt.server_${feature.version}/conf_templates/,target:${installFolder}/../../resources/conf/,overwrite:true);\
instructions.unconfigure = \
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../conf/datasources/application-mgt-datasources.xml);\

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<CertificateConfigurations>
<CertificateKeystore>
{% if certificate_conf.certificate_keystore is defined %}
<!-- Certificate Keystore file location-->
<CertificateKeystoreLocation>{{certificate_conf.certificate_keystore.location}}</CertificateKeystoreLocation>
<!-- Certificate Keystore type (JKS/PKCS12 etc.)-->
<CertificateKeystoreType>{{certificate_conf.certificate_keystore.type}}</CertificateKeystoreType>
<!-- Certificate Keystore password-->
<CertificateKeystorePassword>{{certificate_conf.certificate_keystore.password}}</CertificateKeystorePassword>
<!-- Certificate authority certificate alias -->
<CACertAlias>{{certificate_conf.certificate_keystore.cacert_alias}}</CACertAlias>
<!-- Certificate authority private key password -->
<CAPrivateKeyPassword>{{certificate_conf.certificate_keystore.cacert_password}}</CAPrivateKeyPassword>
<!-- Registration authority certificate alias -->
<RACertAlias>{{certificate_conf.certificate_keystore.racert_alias}}</RACertAlias>
<!-- Registration authority private key password -->
<RAPrivateKeyPassword>{{certificate_conf.certificate_keystore.racert_password}}</RAPrivateKeyPassword>
{% else %}
<!-- Certificate Keystore file location-->
<CertificateKeystoreLocation>${carbon.home}/repository/resources/security/wso2certs.jks</CertificateKeystoreLocation>
<!-- Certificate Keystore type (JKS/PKCS12 etc.)-->
<CertificateKeystoreType>JKS</CertificateKeystoreType>
<!-- Certificate Keystore password-->
<CertificateKeystorePassword>wso2carbon</CertificateKeystorePassword>
<!-- Certificate authority certificate alias -->
<CACertAlias>cacert</CACertAlias>
<!-- Certificate authority private key password -->
<CAPrivateKeyPassword>cacert</CAPrivateKeyPassword>
<!-- Registration authority certificate alias -->
<RACertAlias>racert</RACertAlias>
<!-- Registration authority private key password -->
<RAPrivateKeyPassword>racert</RAPrivateKeyPassword>
{% endif %}
</CertificateKeystore>
<!-- Certificate Mgt DB schema -->
<ManagementRepository>
<DataSourceConfiguration>
<JndiLookupDefinition>
<Name>jdbc/DM_DS</Name>
</JndiLookupDefinition>
</DataSourceConfiguration>
</ManagementRepository>
<!-- Default page size of GET certificates API -->
<DefaultPageSize>10</DefaultPageSize>
</CertificateConfigurations>

@ -1,4 +1,5 @@
instructions.configure = \
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.certificate.mgt.server_${feature.version}/conf/wso2certs.jks,target:${installFolder}/../../resources/security/wso2certs.jks,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.certificate.mgt.server_${feature.version}/conf/certificate-config.xml,target:${installFolder}/../../conf/certificate-config.xml,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.certificate.mgt.server_${feature.version}/dbscripts/,target:${installFolder}/../../../dbscripts,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.certificate.mgt.server_${feature.version}/dbscripts/,target:${installFolder}/../../../dbscripts,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.certificate.mgt.server_${feature.version}/conf_templates/,target:${installFolder}/../../resources/conf/,overwrite:true);\

@ -0,0 +1,315 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ you may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<DeviceMgtConfiguration>
<ManagementRepository>
<DataSourceConfiguration>
<JndiLookupDefinition>
<Name>jdbc/DM_DS</Name>
</JndiLookupDefinition>
</DataSourceConfiguration>
</ManagementRepository>
<PushNotificationConfiguration>
{% if device_mgt_conf.push_notification_conf is defined %}
<SchedulerBatchSize>{{device_mgt_conf.push_notification_conf.scheduler_batch_size}}</SchedulerBatchSize>
<SchedulerBatchDelayMills>{{device_mgt_conf.push_notification_conf.scheduler_batch_delay_mills}}</SchedulerBatchDelayMills>
<SchedulerTaskInitialDelay>{{device_mgt_conf.push_notification_conf.scheduler_task_initial_delay}}</SchedulerTaskInitialDelay>
<SchedulerTaskEnabled>{{device_mgt_conf.push_notification_conf.scheduler_task_enabled}}</SchedulerTaskEnabled>
{% else %}
<SchedulerBatchSize>1000</SchedulerBatchSize>
<SchedulerBatchDelayMills>60000</SchedulerBatchDelayMills>
<SchedulerTaskInitialDelay>60000</SchedulerTaskInitialDelay>
<SchedulerTaskEnabled>true</SchedulerTaskEnabled>
{% endif %}
<PushNotificationProviders>
<Provider>org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.FCMBasedPushNotificationProvider</Provider>
<Provider>org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.MQTTBasedPushNotificationProvider</Provider>
<Provider>org.wso2.carbon.device.mgt.extensions.push.notification.provider.http.HTTPBasedPushNotificationProvider</Provider>
<Provider>org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.XMPPBasedPushNotificationProvider</Provider>
{% if device_mgt_conf.push_notification_conf.push_notification_providers is defined %}
{%- for push_notification_provider in device_mgt_conf.push_notification_conf.push_notification_providers -%}
<Provider>{{push_notification_provider}}</Provider>
{% endfor %}
{% endif %}
</PushNotificationProviders>
</PushNotificationConfiguration>
<PullNotificationConfiguration>
{% if device_mgt_conf.pull_notification_conf is defined %}
<Enabled>{{device_mgt_conf.pull_notification_conf.enabled}}</Enabled>
{% else %}
<Enabled>false</Enabled>
{% endif %}
</PullNotificationConfiguration>
<IdentityConfiguration>
{% if device_mgt_conf.identity_conf is defined %}
<ServerUrl>{{device_mgt_conf.identity_conf.server_url}}</ServerUrl>
<AdminUsername>{{device_mgt_conf.identity_conf.admin_username}}</AdminUsername>
<AdminPassword>{{device_mgt_conf.identity_conf.admin_password}}</AdminPassword>
{% else %}
<ServerUrl>https://localhost:9443</ServerUrl>
<AdminUsername>admin</AdminUsername>
<AdminPassword>admin</AdminPassword>
{% endif %}
</IdentityConfiguration>
<KeyManagerConfiguration>
{% if device_mgt_conf.key_manager_conf is defined %}
<ServerUrl>{{device_mgt_conf.key_manager_conf.server_url}}</ServerUrl>
<AdminUsername>{{device_mgt_conf.key_manager_conf.admin_username}}</AdminUsername>
<AdminPassword>{{device_mgt_conf.key_manager_conf.admin_password}}</AdminPassword>
{% else %}
<ServerUrl>https://localhost:9443</ServerUrl>
<AdminUsername>admin</AdminUsername>
<AdminPassword>admin</AdminPassword>
{% endif %}
</KeyManagerConfiguration>
<PolicyConfiguration>
{% if device_mgt_conf.policy_conf is defined %}
<MonitoringClass>{{device_mgt_conf.policy_conf.monitoring_class}}</MonitoringClass>
<MonitoringEnable>{{device_mgt_conf.policy_conf.monitoring_enable}}</MonitoringEnable>
<MonitoringFrequency>{{device_mgt_conf.policy_conf.monitoring_frequency}}</MonitoringFrequency>
<MaxRetries>{{device_mgt_conf.policy_conf.max_retries}}</MaxRetries>
<MinRetriesToMarkUnreachable>{{device_mgt_conf.policy_conf.min_retries_to_mark_unreachable}}</MinRetriesToMarkUnreachable>
<MinRetriesToMarkInactive>{{device_mgt_conf.policy_conf.min_retries-to_mark_inactive}}</MinRetriesToMarkInactive>
<!--Set the policy evaluation point name-->
<!--Simple -> Simple policy evaluation point-->
<!--Merged -> Merged policy evaluation point -->
<PolicyEvaluationPoint>{{device_mgt_conf.policy_conf.policy.evaluation_point}}</PolicyEvaluationPoint>
<CacheEnable>{{device_mgt_conf.policy_conf.cache_enable}}</CacheEnable>
{% else %}
<MonitoringClass>org.wso2.carbon.policy.mgt</MonitoringClass>
<MonitoringEnable>true</MonitoringEnable>
<MonitoringFrequency>60000</MonitoringFrequency>
<MaxRetries>5</MaxRetries>
<MinRetriesToMarkUnreachable>8</MinRetriesToMarkUnreachable>
<MinRetriesToMarkInactive>20</MinRetriesToMarkInactive>
<!--Set the policy evaluation point name-->
<!--Simple -> Simple policy evaluation point-->
<!--Merged -> Merged policy evaluation point -->
<PolicyEvaluationPoint>Simple</PolicyEvaluationPoint>
<CacheEnable>true</CacheEnable>
{% endif %}
</PolicyConfiguration>
<!-- Default Page size configuration for paginated DM APIs-->
<PaginationConfiguration>
{% if device_mgt_conf.pagination_conf is defined %}
<DeviceListPageSize>{{device_mgt_conf.pagination_conf.device_list_page_size}}</DeviceListPageSize>
<GroupListPageSize>{{device_mgt_conf.pagination_conf.group_list_page_size}}</GroupListPageSize>
<NotificationListPageSize>{{device_mgt_conf.pagination_conf.notification_list_page_size}}</NotificationListPageSize>
<ActivityListPageSize>{{device_mgt_conf.pagination_conf.activity_list_page_size}}</ActivityListPageSize>
<OperationListPageSize>{{device_mgt_conf.pagination_conf.operation_list_page_size}}</OperationListPageSize>
<TopicListPageSize>{{device_mgt_conf.pagination_conf.topic_list_page_size}}</TopicListPageSize>
<MetadataListPageSize>{{device_mgt_conf.pagination_conf.metadata_list_page_size}}</MetadataListPageSize>
{% else %}
<DeviceListPageSize>20</DeviceListPageSize>
<GroupListPageSize>20</GroupListPageSize>
<NotificationListPageSize>20</NotificationListPageSize>
<ActivityListPageSize>20</ActivityListPageSize>
<OperationListPageSize>20</OperationListPageSize>
<TopicListPageSize>20</TopicListPageSize>
<MetadataListPageSize>20</MetadataListPageSize>
{% endif %}
</PaginationConfiguration>
<!--This specifies whether to enable the DeviceStatus Task in this node. In clustered setup only master node
should have to run this task.-->
<DeviceStatusTaskConfig>
{% if device_mgt_conf.device_status_task_config is defined %}
<Enable>{{device_mgt_conf.device_status_task_config.enable}}</Enable>
{% else %}
<Enable>true</Enable>
{% endif %}
</DeviceStatusTaskConfig>
<!--This controls the in-memory device cache which is local to this node. Setting it enable will activate the
device caching for upto configured expiry-time in seconds. In clustered setup all worker nodes can enable the
device-cache to improve performance. -->
<DeviceCacheConfiguration>
{% if device_mgt_conf.device_cache_conf is defined %}
<Enable>{{device_mgt_conf.device_cache_conf.enable}}</Enable>
<ExpiryTime>{{device_mgt_conf.device_cache_conf.expiry_time}}</ExpiryTime>
<!--This configuration specifies the number of cache entries in device cache. default capacity is 10000 entries.
This can be configured to higher number if cache eviction happens due to large number of devices in the
server environment-->
<Capacity>{{device_mgt_conf.device_cache_conf.capacity}}</Capacity>
{% else %}
<Enable>true</Enable>
<ExpiryTime>600</ExpiryTime>
<!--This configuration specifies the number of cache entries in device cache. default capacity is 10000 entries.
This can be configured to higher number if cache eviction happens due to large number of devices in the
server environment-->
<Capacity>10000</Capacity>
{% endif %}
</DeviceCacheConfiguration>
<GeoFenceCacheConfiguration>
{% if device_mgt_conf.geo_fence_cache_conf is defined %}
<Enable>{{device_mgt_conf.geo_fence_cache_conf.enable}}</Enable>
<ExpiryTime>{{device_mgt_conf.geo_fence_cache_conf.expiry_time}}</ExpiryTime>
<Capacity>{{device_mgt_conf.geo_fence_cache_conf.capacity}}</Capacity>
{% else %}
<Enable>true</Enable>
<ExpiryTime>600</ExpiryTime>
<Capacity>10000</Capacity>
{% endif %}
</GeoFenceCacheConfiguration>
<EventOperationTaskConfiguration>
{% if device_mgt_conf.event_operation_task_conf is defined %}
<Enable>{{device_mgt_conf.event_operation_task_conf.enable}}</Enable>
{% else %}
<Enable>true</Enable>
{% endif %}
</EventOperationTaskConfiguration>
<CertificateCacheConfiguration>
{% if device_mgt_conf.certificate_cache_conf is defined %}
<Enable>{{device_mgt_conf.certificate_cache_conf.enable}}</Enable>
<ExpiryTime>{{device_mgt_conf.certificate_cache_conf.expiry_time}}</ExpiryTime>
{% else %}
<Enable>true</Enable>
<ExpiryTime>86400</ExpiryTime>
{% endif %}
</CertificateCacheConfiguration>
<ArchivalConfiguration>
<DataSourceConfiguration>
<JndiLookupDefinition>
<Name>jdbc/DM_ARCHIVAL_DS</Name>
</JndiLookupDefinition>
</DataSourceConfiguration>
<ArchivalTask>
{% if device_mgt_conf.archival_conf.archival_task is defined %}
<Enabled>{{device_mgt_conf.archival_conf.archival_task.enabled}}</Enabled>
<ArchivePendingOperations>{{device_mgt_conf.archival_conf.archival_task.archival_pending_operations}}</ArchivePendingOperations>
<DBConfig>
<SourceDB>DM_DB</SourceDB>
<DestinationDB>ARCHIVAL_DB</DestinationDB>
</DBConfig>
<TaskClass>{{device_mgt_conf.archival_conf.archival_task.task_class}}</TaskClass>
<!-- Cron expression to run the task at specified time -->
<CronExpression>{{device_mgt_conf.archival_conf.archival_task.cron_expression}}</CronExpression>
<!-- How many days of data should we keep in transactional tables? Must be in number of days -->
<RetentionPeriod>{{device_mgt_conf.archival_conf.archival_task.retention_period}}</RetentionPeriod>
<ExecutionBatchSize>{{device_mgt_conf.archival_conf.archival_task.execution_batch_size}}</ExecutionBatchSize>
<PurgingTask>
<Enabled>{{device_mgt_conf.archival_conf.archival_task.purging_task.enabled}}</Enabled>
<TaskClass>{{device_mgt_conf.archival_conf.archival_task.purging_task.task_class}}</TaskClass>
<!-- Cron expression to run the task at specified time -->
<CronExpression>{{device_mgt_conf.archival_conf.archival_task.purging_task.cron_expression}}</CronExpression>
<!-- After this number of days, data will be permanently deleted from archival tables.
Data retention period must be in number of DAYS -->
<RetentionPeriod>{{device_mgt_conf.archival_conf.archival_task.purging_task.retention_period}}</RetentionPeriod>
</PurgingTask>
{% else %}
<Enabled>false</Enabled>
<ArchivePendingOperations>false</ArchivePendingOperations>
<DBConfig>
<SourceDB>DM_DB</SourceDB>
<DestinationDB>ARCHIVAL_DB</DestinationDB>
</DBConfig>
<TaskClass>org.wso2.carbon.device.mgt.core.task.impl.ArchivalTask</TaskClass>
<!-- Cron expression to run the task at specified time -->
<CronExpression>0 0 0 1/1 * ? *</CronExpression>
<!-- How many days of data should we keep in transactional tables? Must be in number of days -->
<RetentionPeriod>30</RetentionPeriod>
<ExecutionBatchSize>1000</ExecutionBatchSize>
<PurgingTask>
<Enabled>false</Enabled>
<TaskClass>org.wso2.carbon.device.mgt.core.task.impl.ArchivedDataDeletionTask</TaskClass>
<!-- Cron expression to run the task at specified time -->
<CronExpression>0 0 3 1/1 * ? *</CronExpression>
<!-- After this number of days, data will be permanently deleted from archival tables.
Data retention period must be in number of DAYS -->
<RetentionPeriod>365</RetentionPeriod>
</PurgingTask>
{% endif %}
</ArchivalTask>
</ArchivalConfiguration>
<GeoLocationConfiguration>
{% if device_mgt_conf.geo_location_conf is defined %}
<Enabled>{{device_mgt_conf.geo_location_conf.enabled}}</Enabled>
{% else %}
<Enabled>false</Enabled>
{% endif %}
</GeoLocationConfiguration>
<OperationAnalyticsConfiguration>
<PublishLocationResponse>false</PublishLocationResponse>
<PublishDeviceInfoResponse>false</PublishDeviceInfoResponse>
<PublishOperationResponse>
<Enabled>false</Enabled>
<Operations>
<!-- Publish specific operation responses -->
<!--
<Operation>BATTERY_LEVEL</Operation>
<Operation>CHECK_LOCK_STATUS</Operation>
-->
<!-- use wildcard '*' to publish all responses -->
<Operation>*</Operation>
</Operations>
</PublishOperationResponse>
</OperationAnalyticsConfiguration>
<!--This configuration used to configure the options for remote device control feature -->
<RemoteSessionConfiguration>
{% if device_mgt_conf.remote_session_conf is defined %}
<Enabled>{{device_mgt_conf.remote_session_conf.enabled}}</Enabled>
<RemoteSessionServerUrl>{{device_mgt_conf.remote_session_conf.remote_session_server_url}}</RemoteSessionServerUrl>
<MaximumHTTPConnectionPerHost>{{device_mgt_conf.remote_session_conf.max_http_connection_per_host}}</MaximumHTTPConnectionPerHost>
<MaximumTotalHTTPConnections>{{device_mgt_conf.remote_session_conf.max_total_http_connections}}</MaximumTotalHTTPConnections>
<MaximumMessagesPerSecond>{{device_mgt_conf.remote_session_conf.max_messages_per_second}}</MaximumMessagesPerSecond>
<SessionIdleTimeOut>{{device_mgt_conf.remote_session_conf.session_idle_timeout}}</SessionIdleTimeOut>
<MaximumMessageBufferSize>{{device_mgt_conf.remote_session_conf.max_message_buffer.size}}</MaximumMessageBufferSize>
{% else %}
<Enabled>true</Enabled>
<RemoteSessionServerUrl>ws://localhost:9763</RemoteSessionServerUrl>
<MaximumHTTPConnectionPerHost>2</MaximumHTTPConnectionPerHost>
<MaximumTotalHTTPConnections>100</MaximumTotalHTTPConnections>
<MaximumMessagesPerSecond>20</MaximumMessagesPerSecond>
<SessionIdleTimeOut>15</SessionIdleTimeOut>
<MaximumMessageBufferSize>640</MaximumMessageBufferSize>
{% endif %}
</RemoteSessionConfiguration>
{% if device_mgt_conf.default_groups_conf is defined %}
<DefaultGroupsConfiguration>{{device_mgt_conf.default_groups_conf}}</DefaultGroupsConfiguration>
{% else %}
<DefaultGroupsConfiguration>BYOD,COPE</DefaultGroupsConfiguration>
{% endif %}
<EnrolmentNotificationConfiguration>
{% if device_mgt_conf.enrolement_notification_conf is defined %}
<Enabled>{{device_mgt_conf.enrolement_notification_conf.enabled}}</Enabled>
<NotifyThroughExtension>{{device_mgt_conf.enrolement_notification_conf.notify_through_extension}}</NotifyThroughExtension>
<ExtensionClass>{{device_mgt_conf.enrolement_notification_conf.extension_class}}</ExtensionClass>
<NotifyingInternalHost>{{device_mgt_conf.enrolement_notification_conf.notify_internal_host}}</NotifyingInternalHost>
{% else %}
<Enabled>false</Enabled>
<NotifyThroughExtension>false</NotifyThroughExtension>
<ExtensionClass>org.wso2.carbon.device.mgt.common.enrollment.notification.EnrollmentNotifier</ExtensionClass>
<NotifyingInternalHost>http://localhost:8280</NotifyingInternalHost>
{% endif %}
</EnrolmentNotificationConfiguration>
<DefaultRoles>
{% if device_mgt_conf.default_roles is defined %}
<Enabled>{{device_mgt_conf.default_roles.enabled}}</Enabled>
{% else %}
<Enabled>false</Enabled>
{% endif %}
<Roles>
<Role>
<Name>test_role</Name>
<Permissions>
<Permission>/permission/admin/Login</Permission>
</Permissions>
</Role>
</Roles>
</DefaultRoles>
</DeviceMgtConfiguration>

@ -0,0 +1,87 @@
<!--
~ Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<datasources-configuration xmlns:svns="http://org.wso2.securevault/configuration">
<providers>
<provider>org.wso2.carbon.ndatasource.rdbms.RDBMSDataSourceReader</provider>
</providers>
<datasources>
<datasource>
<name>DM_DS</name>
<description>The datasource used for CDM</description>
<jndiConfig>
<name>jdbc/DM_DS</name>
</jndiConfig>
<definition type="RDBMS">
<configuration>
{% if database.device_mgt is defined %}
<url>{{database.device_mgt.url}}</url>
<username>{{database.device_mgt.username}}</username>
<password>{{database.device_mgt.password}}</password>
<driverClassName>{{database.device_mgt.driver}}</driverClassName>
<validationQuery>{{database.device_mgt.validationQuery}}</validationQuery>
{% for property_name,property_value in database.device_mgt.pool_options.items() %}
<{{property_name}}>{{property_value}}</{{property_name}}>
{% endfor %}
{% else %}
<url>jdbc:h2:./repository/database/WSO2DM_DB;DB_CLOSE_ON_EXIT=FALSE;AUTO_SERVER=TRUE;LOCK_TIMEOUT=60000</url>
<username>wso2carbon</username>
<password>wso2carbon</password>
<driverClassName>org.h2.Driver</driverClassName>
<maxActive>50</maxActive>
<maxWait>60000</maxWait>
<testOnBorrow>true</testOnBorrow>
<validationQuery>SELECT 1</validationQuery>
<validationInterval>30000</validationInterval>
{% endif %}
</configuration>
</definition>
</datasource>
<datasource>
<name>DM_ARCHIVAL_DS</name>
<description>The archival datasource used for CDM</description>
<jndiConfig>
<name>jdbc/DM_ARCHIVAL_DS</name>
</jndiConfig>
<definition type="RDBMS">
<configuration>
{% if database.device_mgt_archival is defined %}
<url>{{database.device_mgt_archival.url}}</url>
<username>{{database.device_mgt_archival.username}}</username>
<password>{{database.device_mgt_archival.password}}</password>
<driverClassName>{{database.device_mgt_archival.driver}}</driverClassName>
<validationQuery>{{database.device_mgt_archival.validationQuery}}</validationQuery>
{% for property_name,property_value in database.device_mgt_archival.pool_options.items() %}
<{{property_name}}>{{property_value}}</{{property_name}}>
{% endfor %}
{% else %}
<url>jdbc:h2:./repository/database/WSO2DM_ARCHIVAL_DS;DB_CLOSE_ON_EXIT=FALSE</url>
<username>wso2carbon</username>
<password>wso2carbon</password>
<driverClassName>org.h2.Driver</driverClassName>
<maxActive>50</maxActive>
<maxWait>60000</maxWait>
<testOnBorrow>true</testOnBorrow>
<validationQuery>SELECT 1</validationQuery>
<validationInterval>30000</validationInterval>
{% endif %}
</configuration>
</definition>
</datasource>
</datasources>
</datasources-configuration>

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ you may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<LicenseConfig>
<Licenses>
<License>
<Provider>wso2</Provider>
<Name>android</Name>
<Version>1.0.0</Version>
<Language>1.0.0</Language>
<ValidFrom>01-01-2014</ValidFrom>
<ValidTo>31-12-2035</ValidTo>
<Text><![CDATA[Test License]]></Text>
</License>
<License>
<Provider>wso2</Provider>
<Name>ios</Name>
<Version>1.0.0</Version>
<Language>1.0.0</Language>
<ValidFrom>01-01-2014</ValidFrom>
<ValidTo>31-12-2035</ValidTo>
<Text><![CDATA[IOS License]]></Text>
</License>
<License>
<Provider>wso2</Provider>
<Name>windows</Name>
<Version>1.0.0</Version>
<Language>1.0.0</Language>
<ValidFrom>01-01-2014</ValidFrom>
<ValidTo>31-12-2035</ValidTo>
<Text><![CDATA[Windows License]]></Text>
</License>
{% if license_conf.licenses is defined %}
{%- for license in license_conf.licenses -%}
<License>
<Provider>{{license.provider}}</Provider>
<Name>{{license.name}}</Name>
<Version>{{license.version}}</Version>
<Language>{{license.language}}</Language>
<ValidFrom>{{license.valid_from}}</ValidFrom>
<ValidTo>{{license.valid-to}}</ValidTo>
<Text>{{license.text}}</Text>
</License>
{% endfor %}
{% endif %}
</Licenses>
</LicenseConfig>

@ -0,0 +1,211 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ Copyright (c) 2020, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved.
~
~ Entgra (pvt) Ltd. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<UIConfiguration>
{% if mdm_ui_conf.enable_oauth is defined %}
<EnableOAuth>{{mdm_ui_conf.enable_oauth}}</EnableOAuth>
{% else %}
<EnableOAuth>true</EnableOAuth>
{% endif %}
{% if mdm_ui_conf.enable_sso is defined %}
<EnableSSO>{{mdm_ui_conf.enable_sso}}</EnableSSO>
{% else %}
<EnableSSO>false</EnableSSO>
{% endif %}
<AppRegistration>
<Tags>
<Tag>application_management</Tag>
<Tag>device_management</Tag>
<Tag>subscription_management</Tag>
<Tag>review_management</Tag>
{% if mdm_ui_conf.app_registration.tags is defined %}
{%- for tag in mdm_ui_conf.app_registration.tags -%}
<Tag>{{tag}}</Tag>
{% endfor %}
{% endif %}
</Tags>
{% if mdm_ui_conf.app_registration.allow_to_all_domains is defined %}
<AllowToAllDomains>{{mdm_ui_conf.app_registration.allow_to_all_domains}}</AllowToAllDomains>
{% else %}
<AllowToAllDomains>true</AllowToAllDomains>
{% endif %}
</AppRegistration>
<Scopes>
<Scope>perm:app:review:view</Scope>
<Scope>perm:app:review:update</Scope>
<Scope>perm:app:publisher:view</Scope>
<Scope>perm:app:publisher:update</Scope>
<Scope>perm:app:store:view</Scope>
<Scope>perm:app:subscription:install</Scope>
<Scope>perm:app:subscription:uninstall</Scope>
<Scope>perm:admin:app:review:update</Scope>
<Scope>perm:admin:app:review:view</Scope>
<Scope>perm:admin:app:publisher:update</Scope>
<Scope>perm:admin:app:review:update</Scope>
<Scope>perm:admin:app:subscription:view</Scope>
<Scope>perm:device-types:types</Scope>
<Scope>perm:enterprise:modify</Scope>
<Scope>perm:enterprise:view</Scope>
<Scope>perm:android-work:customer</Scope>
<Scope>perm:android-work:admin</Scope>
<Scope>perm:application-command:modify</Scope>
<Scope>perm:sign-csr</Scope>
<Scope>perm:admin:devices:view</Scope>
<Scope>perm:admin:topics:view</Scope>
<Scope>perm:roles:add</Scope>
<Scope>perm:roles:add-users</Scope>
<Scope>perm:roles:update</Scope>
<Scope>perm:roles:permissions</Scope>
<Scope>perm:roles:details</Scope>
<Scope>perm:roles:view</Scope>
<Scope>perm:roles:create-combined-role</Scope>
<Scope>perm:roles:delete</Scope>
<Scope>perm:dashboard:vulnerabilities</Scope>
<Scope>perm:dashboard:non-compliant-count</Scope>
<Scope>perm:dashboard:non-compliant</Scope>
<Scope>perm:dashboard:by-groups</Scope>
<Scope>perm:dashboard:device-counts</Scope>
<Scope>perm:dashboard:feature-non-compliant</Scope>
<Scope>perm:dashboard:count-overview</Scope>
<Scope>perm:dashboard:filtered-count</Scope>
<Scope>perm:dashboard:details</Scope>
<Scope>perm:get-activity</Scope>
<Scope>perm:devices:delete</Scope>
<Scope>perm:devices:applications</Scope>
<Scope>perm:devices:effective-policy</Scope>
<Scope>perm:devices:compliance-data</Scope>
<Scope>perm:devices:features</Scope>
<Scope>perm:devices:operations</Scope>
<Scope>perm:devices:search</Scope>
<Scope>perm:devices:details</Scope>
<Scope>perm:devices:update</Scope>
<Scope>perm:devices:view</Scope>
<Scope>perm:view-configuration</Scope>
<Scope>perm:manage-configuration</Scope>
<Scope>perm:policies:remove</Scope>
<Scope>perm:policies:priorities</Scope>
<Scope>perm:policies:deactivate</Scope>
<Scope>perm:policies:get-policy-details</Scope>
<Scope>perm:policies:manage</Scope>
<Scope>perm:policies:activate</Scope>
<Scope>perm:policies:update</Scope>
<Scope>perm:policies:changes</Scope>
<Scope>perm:policies:get-details</Scope>
<Scope>perm:users:add</Scope>
<Scope>perm:users:details</Scope>
<Scope>perm:users:count</Scope>
<Scope>perm:users:delete</Scope>
<Scope>perm:users:roles</Scope>
<Scope>perm:users:user-details</Scope>
<Scope>perm:users:credentials</Scope>
<Scope>perm:users:search</Scope>
<Scope>perm:users:is-exist</Scope>
<Scope>perm:users:update</Scope>
<Scope>perm:users:send-invitation</Scope>
<Scope>perm:admin-users:view</Scope>
<Scope>perm:admin:devices:update-enrollment</Scope>
<Scope>perm:groups:devices</Scope>
<Scope>perm:groups:update</Scope>
<Scope>perm:groups:add</Scope>
<Scope>perm:groups:device</Scope>
<Scope>perm:groups:devices-count</Scope>
<Scope>perm:groups:remove</Scope>
<Scope>perm:groups:groups</Scope>
<Scope>perm:groups:groups-view</Scope>
<Scope>perm:groups:share</Scope>
<Scope>perm:groups:count</Scope>
<Scope>perm:groups:roles</Scope>
<Scope>perm:groups:devices-remove</Scope>
<Scope>perm:groups:devices-add</Scope>
<Scope>perm:groups:assign</Scope>
<Scope>perm:device-types:configs</Scope>
<Scope>perm:device-types:features</Scope>
<Scope>perm:device-types:types</Scope>
<Scope>perm:applications:install</Scope>
<Scope>perm:applications:uninstall</Scope>
<Scope>perm:admin-groups:count</Scope>
<Scope>perm:admin-groups:view</Scope>
<Scope>perm:admin-groups:add</Scope>
<Scope>perm:notifications:mark-checked</Scope>
<Scope>perm:notifications:view</Scope>
<Scope>perm:admin:certificates:delete</Scope>
<Scope>perm:admin:certificates:details</Scope>
<Scope>perm:admin:certificates:view</Scope>
<Scope>perm:admin:certificates:add</Scope>
<Scope>perm:admin:certificates:verify</Scope>
<Scope>perm:admin</Scope>
<Scope>perm:devicetype:deployment</Scope>
<Scope>perm:device-types:events</Scope>
<Scope>perm:device-types:events:view</Scope>
<Scope>perm:admin:device-type</Scope>
<Scope>perm:admin:device-type:view</Scope>
<Scope>perm:admin:device-type:configs</Scope>
<Scope>perm:device:enroll</Scope>
<Scope>perm:geo-service:analytics-view</Scope>
<Scope>perm:geo-service:alerts-manage</Scope>
<Scope>appm:read</Scope>
<Scope>perm:devices:permanent-delete</Scope>
<Scope>perm:android:manage-configuration</Scope>
<Scope>perm:android:view-configuration</Scope>
<Scope>perm:user:permission-view</Scope>
<Scope>perm:ios:view-configuration</Scope>
<Scope>perm:ios:manage-configuration</Scope>
<Scope>perm:ios:dep-view</Scope>
<Scope>perm:ios:dep-add</Scope>
<Scope>perm:windows:view-configuration</Scope>
<Scope>perm:windows:manage-configuration</Scope>
<Scope>perm:android:lock-devices</Scope>
<Scope>perm:android:unlock-devices</Scope>
<Scope>perm:android:location</Scope>
<Scope>perm:android:clear-password</Scope>
<Scope>perm:android:control-camera</Scope>
<Scope>perm:android:enterprise-wipe</Scope>
<Scope>perm:android:wipe</Scope>
<Scope>perm:android:ring</Scope>
<Scope>perm:android:applications</Scope>
<Scope>perm:android:reboot</Scope>
<Scope>perm:android:change-LockTask</Scope>
<Scope>perm:android:mute</Scope>
<Scope>perm:android:configure-display-message</Scope>
<Scope>perm:android:send-app-restrictions</Scope>
<Scope>perm:android:file-transfer</Scope>
<Scope>perm:android:set-webclip</Scope>
<Scope>perm:android:set-password-policy</Scope>
<Scope>perm:android:change-lock-code</Scope>
<Scope>perm:android:upgrade-firmware</Scope>
<Scope>perm:android:send-notification</Scope>
<Scope>perm:geo-service:geo-fence</Scope>
<Scope>perm:metadata:view</Scope>
<Scope>perm:metadata:create</Scope>
<Scope>perm:metadata:update</Scope>
{% if mdm_ui_conf.scopes is defined %}
{%- for scope in mdm_ui_conf.scopes -%}
<Scope>{{scope}}</Scope>
{% endfor %}
{% endif %}
</Scopes>
<SSOConfiguration>
{% if mdm_ui_conf.sso_conf is defined %}
<Issuer>{{mdm_ui_conf.sso_conf.issuer}}</Issuer>
{% else %}
<Issuer>device-mgt</Issuer>
{% endif %}
</SSOConfiguration>
</UIConfiguration>

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ you may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<AppManagementConfig>
{% if app_management_conf is defined %}
<Enabled>{{app_management_conf.enable}}</Enabled>
<AppManagerUrl>{{app_management_conf.app_manager_url}}</AppManagerUrl>
<ConsumerKey>{{app_management_conf.consumer_key}}</ConsumerKey>
<ConsumerSecret>{{app_management_conf.consumer_secret}}</ConsumerSecret>
{% else %}
<Enabled>true</Enabled>
<AppManagerUrl>http:/www.google.com</AppManagerUrl>
<ConsumerKey>http:/www.google.com</ConsumerKey>
<ConsumerSecret>http:/www.google.com</ConsumerSecret>
{% endif %}
</AppManagementConfig>

@ -8,5 +8,4 @@ org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../featur
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.basics_${feature.version}/rxts/license.rxt,target:${installFolder}/../../../repository/resources/rxts/license.rxt,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/../../../repository/resources/email-templates);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.basics_${feature.version}/email/templates,target:${installFolder}/../../../repository/resources/email-templates,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.basics_${feature.version}/apis/admin--OAuth2TokenManagement.xml,target:${installFolder}/../../deployment/server/synapse-configs/default/api/admin--OAuth2TokenManagement.xml,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.basics_${feature.version}/apis/admin--UserManagementValidateUser.xml,target:${installFolder}/../../deployment/server/synapse-configs/default/api/admin--UserManagementValidateUser.xml,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.basics_${feature.version}/conf_templates/,target:${installFolder}/../../resources/conf/,overwrite:true);\

@ -0,0 +1,57 @@
<!--
~ Copyright (C) 2018 - 2020 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
~
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
~
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ https://entgra.io/licenses/entgra-commercial/1.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<datasources-configuration xmlns:svns="http://org.wso2.securevault/configuration">
<providers>
<provider>org.wso2.carbon.ndatasource.rdbms.RDBMSDataSourceReader</provider>
</providers>
<datasources>
<datasource>
<name>HeartBeat_DS</name>
<description>The datasource Server Heart Beat</description>
<jndiConfig>
<name>jdbc/HeartBeat_DS</name>
</jndiConfig>
<definition type="RDBMS">
<configuration>
{% if database.heart_beat is defined %}
<url>{{database.heart_beat.url}}</url>
<username>{{database.heart_beat.username}}</username>
<password>{{database.heart_beat.password}}</password>
<driverClassName>{{database.heart_beat.driver}}</driverClassName>
<validationQuery>{{database.heart_beat.validationQuery}}</validationQuery>
{% for property_name,property_value in database.heart_beat.pool_options.items() %}
<{{property_name}}>{{property_value}}</{{property_name}}>
{% endfor %}
{% else %}
<url>jdbc:mysql://localhost:3306/heart_beat</url>
<username>root</username>
<password>root</password>
<driverClassName>com.mysql.jdbc.Driver</driverClassName>
<maxActive>50</maxActive>
<maxWait>60000</maxWait>
<testOnBorrow>true</testOnBorrow>
<validationQuery>SELECT 1</validationQuery>
<validationInterval>30000</validationInterval>
{% endif %}
</configuration>
</definition>
</datasource>
</datasources>
</datasources-configuration>

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ Copyright (C) 2020 Entgra (Pvt) Ltd, Inc - All Rights Reserved.
~
~ Unauthorised copying/redistribution of this file, via any medium is strictly prohibited.
~
~ Licensed under the Entgra Commercial License, Version 1.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ https://entgra.io/licenses/entgra-commercial/1.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<HeartBeatBeaconConfig>
<!--
~ Only to be turned on in distributed mode, in which case
~ Dynamic Partitoned Task, Randomly Assigned Task modes will be activated.
~ These modes are deviations from the regular worker manager mode, in which the server will function.
~
~ * DynamicPartitionedScheduleTask -> Tasks will execute on all nodes but will only focus on a subset of operations
~ broken up amongst active nodes based on following parameters that are made available via DynamicTaskContext abstract class.
~ - serverHashIndex : dynamic index assigned to each server based on number of active servers present
~ - activeServerCount : total no. of active servers present at a given time
~ - partitioningEnabled : whether or not heart-beat-config/dynamic task config is enabled.
~ Any task extending the DynamicPartitionedScheduleTask class will inherit the above variables.
~ These can then be used to split up the no. of devices said node is allocated with.
~
~ * RandomlyAssignedScheduleTask -> Tasks will only execute on a particular node elected at a time interval determined by ServerTimeOutIntervalInSeconds, parameter.
~ When running tasks in this mode, it is mandatory that each task be given a unique name, so as not to run in to scenarios where tasks execution is duplicated.
~ Each node, on a periodic basis will check to see if it is qualfied to execute the random task, if the following variable is true only said node will execute the task.
~ - qualifiedToExecuteTask : dynamic index assigned to each server based on number of active servers present
~ Any task extending the RandomlyAssignedScheduleTask class will inherit the above variable.
~ Note that random task may execute on any node.
-->
<!-- Heart Beat Data Source Name, this should be either MySQL, PostGreSQL, Oracle or MSSQL -->
<DataSourceConfiguration>
<JndiLookupDefinition>
<Name>jdbc/HeartBeat_DS</Name>
</JndiLookupDefinition>
</DataSourceConfiguration>
{% if heart_beat_beacon_conf is defined %}
<Enable>{{heart_beat_beacon_conf.enable}}</Enable>
<NotifierInitialDelayInSeconds>{{heart_beat_beacon_conf.notifier_initial_delay_in_seconds}}</NotifierInitialDelayInSeconds>
<NotifierFrequencyInSeconds>{{heart_beat_beacon_conf.notifier_frequency_in_seconds}}</NotifierFrequencyInSeconds>
<TimeSkewInSeconds>{{heart_beat_beacon_conf.time_skew_in_seconds}}</TimeSkewInSeconds>
<ServerTimeOutIntervalInSeconds>{{heart_beat_beacon_conf.sever_timeout_interval_in_seconds}}</ServerTimeOutIntervalInSeconds>
{% else %}
<Enable>false</Enable>
<NotifierInitialDelayInSeconds>30</NotifierInitialDelayInSeconds>
<NotifierFrequencyInSeconds>300</NotifierFrequencyInSeconds>
<TimeSkewInSeconds>5</TimeSkewInSeconds>
<ServerTimeOutIntervalInSeconds>600</ServerTimeOutIntervalInSeconds>
{% endif %}
</HeartBeatBeaconConfig>

@ -2,6 +2,7 @@ instructions.configure = \
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/io.entgra.server.heart.beat_${feature.version}/datasources/,target:${installFolder}/../../conf/datasources/,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/io.entgra.server.heart.beat_${feature.version}/conf/heart-beat-config.xml,target:${installFolder}/../../conf/heart-beat-config.xml,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/io.entgra.server.heart.beat_${feature.version}/dbscripts/heart-beat/,target:${installFolder}/../../../dbscripts/heart-beat,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/io.entgra.server.heart.beat_${feature.version}/conf_templates/,target:${installFolder}/../../resources/conf/,overwrite:true);\
instructions.unconfigure = \
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/../../conf/datasources/heart-beat-datasources.xml);\

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ you may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<EmailSenderConfig>
{% if email_sender_conf is defined %}
<MinThreads>{{email_sender_conf.min_threads}}</MinThreads>
<MaxThreads>{{email_sender_conf.max_threads}}</MaxThreads>
<KeepAliveDuration>{{email_sender_conf.keep_alive_duration}}</KeepAliveDuration>
<ThreadQueueCapacity>{{email_sender_conf.thread_queue_capacity}}</ThreadQueueCapacity>
{% else %}
<MinThreads>8</MinThreads>
<MaxThreads>100</MaxThreads>
<KeepAliveDuration>20</KeepAliveDuration>
<ThreadQueueCapacity>1000</ThreadQueueCapacity>
{% endif %}
</EmailSenderConfig>

@ -1,3 +1,4 @@
instructions.configure = \
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.email.sender_${feature.version}/conf/email-sender-config.xml,target:${installFolder}/../../conf/etc/email-sender-config.xml,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.email.sender_${feature.version}/email/templates,target:${installFolder}/../../../repository/resources/email-templates,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.email.sender_${feature.version}/email/templates,target:${installFolder}/../../../repository/resources/email-templates,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.email.sender_${feature.version}/conf_templates/,target:${installFolder}/../../resources/conf/,overwrite:true);\

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ Copyright (c) 2021, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
~
~ Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<SMSConfiguration>
<Gateways>
<!-- multiple gateways can be listed and the gateway having the isDefault=true is picked up or gateway
extensionClass can be passed and relevant impl can be used-->
<Gateway name="sample" extensionClass="io.entgra.transport.mgt.sms.handler.core.impl.SampleSenderImpl" isDefault="true">
<!-- properties can be listed and can be picked up in the relevant implementation class as required-->
<Properties>
<Property name="sample-property">sample</Property>
<Property name="country-code">+94</Property>
<Property name="max-msg-size">160</Property>
</Properties>
</Gateway>
{% if sms_conf.gateways is defined %}
{%- for gateway in sms_conf.gateways -%}
<Gateway name="{{gateway.name}}" extensionClass="{{gateway.extension_class}}" isDefault="{{gateway.is_default}}">
<Properties>
<Property name="sample-property">sample</Property>
<Property name="country-code">+94</Property>
<Property name="max-msg-size">160</Property>
{% for property_name,property_value in gateway.properties_options.items() %}
<Property name="{{property_name}}">{{property_value}}</Property>
{% endfor %}
</Properties>
</Gateway>
{% endfor %}
{% endif %}
</Gateways>
</SMSConfiguration>

@ -1,4 +1,5 @@
instructions.configure = \
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/io.entgra.transport.mgt.sms.handler.server_${feature.version}/conf/sms-config.xml,target:${installFolder}/../../conf/sms-config.xml,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/io.entgra.transport.mgt.sms.handler.server_${feature.version}/conf_templates/,target:${installFolder}/../../resources/conf/,overwrite:true);\
instructions.unconfigure = \

Loading…
Cancel
Save