...
Customizations Without Restarting
...
It is possible to make changes to users, permissions, and roles without restarting the DARE server.
Locate the directory that your DARE instance is monitoring for action files.
No Format |
---|
$ grep ProvisioningAgent dare/logs/dare-instance1.log
1 Aug 2019 09:35:19,648 INFO [main] marketcetera.core.ProvisioningAgent (:) - Watching /opt/Marketcetera-3.2.0/dare/instances/instance1/instances/provisioning1 for provisioning files
$ ls -d /opt/Marketcetera-3.2.0/dare/instances/instance1/instances/provisioning1
ls: cannot access '/opt/Marketcetera-3.2.0/dare/instances/instance1/instances/provisioning1': No such file or directory
$ mkdir -p /opt/Marketcetera-3.2.0/dare/instances/instance1/instances/provisioning1
$ $ ls -d /opt/Marketcetera-3.2.0/dare/instances/instance1/instances/provisioning1
/opt/Marketcetera-3.2.0/dare/instances/instance1/instances/provisioning1 |
Prepare a file that contains the instructions as indicated above.
Code Block | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="org.marketcetera.admin"/>
<!-- custom permission -->
<bean id="newPermission" class="org.marketcetera.admin.PermissionDescriptor">
<property name="name" value="CustomAction"/>
<property name="description" value="Access to some custom permission"/>
</bean>
<!-- assign permission to a new role and add users to that role -->
<bean id="newRole" class="org.marketcetera.admin.RoleDescriptor">
<property name="name" value="CustomRole"/>
<property name="description" value="Custom Role"/>
<property name="permissionNames">
<set>
<value>CustomAction</value>
</set>
</property>
<property name="usernames">
<set>
<value>trader</value>
<value>traderAdmin</value>
</set>
</property>
</bean>
<!-- action to activate the new permission and role -->
<bean class="org.marketcetera.admin.AuthorizationInitializer">
<property name="permissions">
<set>
<ref bean="newPermission"/>
</set>
</property>
<property name="roles">
<set>
<ref bean="newRole"/>
</set>
</property>
</bean>
</beans> |
Save this file (the name isn't important).
Copy the file to the monitored directory
No Format |
---|
$ cp ~/temp.xml /opt/Marketcetera-3.2.0/dare/instances/instance1/instances/provisioning1/
$ tail -100 /opt/Marketcetera-3.2.0/dare/logs/dare-instance1.log
...
05 Aug 2019 09:45:34,405 INFO [pool-4-thread-1] marketcetera.core.ProvisioningAgent (:) - Reading provisioning from temp.xml
05 Aug 2019 09:45:34,505 INFO [pool-4-thread-1] marketcetera.admin.AuthorizationInitializer (:) - Adding permission PermissionDescriptor [getName()=CustomAction, getDescription()=Access to some custom permission]
05 Aug 2019 09:45:34,514 INFO [pool-4-thread-1] marketcetera.admin.AuthorizationInitializer (:) - Adding role RoleDescriptor [permissionNames=[CustomAction], usernames=[trader, traderAdmin], getDescription()=Custom Role, getName()=CustomRole] |
Note that this technique isn't limited to authorization or authentication files. Any command or action that can be formulated as XML-based config can be executed in this fashion. Care must be taken when using this technique.
...
Content by Label | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...