Skip to content

Commit ff5faab

Browse files
committed
add advanced sample with usage of all the API parameters in the configuration of the source plugin
1 parent edb8f3c commit ff5faab

File tree

2 files changed

+211
-0
lines changed

2 files changed

+211
-0
lines changed
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<configuration>
4+
5+
<!-- standard output to console -->
6+
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
7+
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
8+
<layout class="org.lsc.utils.output.LdifLayout">
9+
<Pattern>%date{MMM dd HH:mm:ss} - %-5level - %message%n</Pattern>
10+
</layout>
11+
</encoder>
12+
</appender>
13+
14+
<appender name="LSC" class="ch.qos.logback.core.rolling.RollingFileAppender">
15+
<Append>true</Append>
16+
<File>logs/lsc.log</File>
17+
18+
<layout class="org.lsc.utils.output.LdifLayout">
19+
<Pattern>%date{MMM dd HH:mm:ss} - %-5level - %message%n</Pattern>
20+
</layout>
21+
22+
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
23+
<level>INFO</level>
24+
</filter>
25+
26+
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
27+
<FileNamePattern>lsc.log.%i.gz</FileNamePattern>
28+
<MinIndex>1</MinIndex>
29+
<MaxIndex>7</MaxIndex>
30+
</rollingPolicy>
31+
32+
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
33+
<MaxFileSize>10000KB</MaxFileSize>
34+
</triggeringPolicy>
35+
</appender>
36+
37+
<appender name="LSC_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
38+
<Append>true</Append>
39+
<File>logs/lsc.error</File>
40+
41+
<layout class="org.lsc.utils.output.LdifLayout">
42+
<Pattern>%date{MMM dd HH:mm:ss} - %-5level - %message%n</Pattern>
43+
</layout>
44+
45+
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
46+
<level>ERROR</level>
47+
</filter>
48+
49+
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
50+
<FileNamePattern>lsc.log.%i.gz</FileNamePattern>
51+
<MinIndex>1</MinIndex>
52+
<MaxIndex>7</MaxIndex>
53+
</rollingPolicy>
54+
55+
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
56+
<MaxFileSize>10000KB</MaxFileSize>
57+
</triggeringPolicy>
58+
</appender>
59+
60+
<appender name="LSC_STATUS" class="ch.qos.logback.core.FileAppender">
61+
<append>false</append>
62+
<File>logs/lsc.status</File>
63+
64+
<layout class="org.lsc.utils.output.LdifLayout">
65+
<Pattern>%date{MMM dd HH:mm:ss} - %-5level - %message%n</Pattern>
66+
</layout>
67+
68+
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
69+
<level>INFO</level>
70+
</filter>
71+
</appender>
72+
73+
<!-- special logger to have a LDIF file of all modifications applied -->
74+
<!-- this file is rotated every 10000KB, compressed and 7 files are kept for history -->
75+
<appender name="LDIF" class="ch.qos.logback.core.rolling.RollingFileAppender">
76+
<!--See also http://logback.qos.ch/manual/appenders.html#RollingFileAppender-->
77+
<Append>true</Append>
78+
<File>logs/lsc.ldif</File>
79+
80+
<layout class="org.lsc.utils.output.LdifLayout">
81+
<Pattern>%m%n</Pattern>
82+
<onlyLdif>true</onlyLdif>
83+
</layout>
84+
85+
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
86+
<FileNamePattern>lsc.ldif.%i.gz</FileNamePattern>
87+
<MinIndex>1</MinIndex>
88+
<MaxIndex>7</MaxIndex>
89+
</rollingPolicy>
90+
91+
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
92+
<MaxFileSize>10000KB</MaxFileSize>
93+
</triggeringPolicy>
94+
</appender>
95+
96+
<!-- link log sources and log appenders -->
97+
<logger name="org.lsc">
98+
<appender-ref ref="LSC"/>
99+
<appender-ref ref="LSC_STATUS"/>
100+
<appender-ref ref="LSC_ERROR"/>
101+
</logger>
102+
<logger name="lsc">
103+
<appender-ref ref="LDIF"/>
104+
</logger>
105+
<root level="INFO">
106+
<appender-ref ref="CONSOLE"/>
107+
</root>
108+
</configuration>
109+
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
<?xml version="1.0" ?>
2+
<lsc xmlns="http://lsc-project.org/XSD/lsc-core-2.1.xsd"
3+
xmlns:msgraphapi="http://lsc-project.org/XSD/lsc-microsoft-graph-api-plugin-1.0.xsd" revision="0">
4+
<connections>
5+
<ldapConnection>
6+
<name>openldap</name>
7+
<url>ldap://localhost/dc=example,dc=org</url>
8+
<username>cn=admin,dc=example,dc=org</username>
9+
<password>admin</password>
10+
<authentication>SIMPLE</authentication>
11+
<referral>THROW</referral>
12+
<derefAliases>NEVER</derefAliases>
13+
<version>VERSION_3</version>
14+
<pageSize>-1</pageSize>
15+
<factory>com.sun.jndi.ldap.LdapCtxFactory</factory>
16+
<tlsActivated>false</tlsActivated>
17+
<saslMutualAuthentication>false</saslMutualAuthentication>
18+
</ldapConnection>
19+
<pluginConnection>
20+
<name>msgraphapi</name>
21+
<url></url>
22+
<username></username>
23+
<password></password>
24+
<msgraphapi:msGraphApiConnectionSettings>
25+
<msgraphapi:clientId>${MS_GRAPH_API_CLIENT_ID}</msgraphapi:clientId>
26+
<msgraphapi:clientSecret>${MS_GRAPH_API_CLIENT_SECRET}</msgraphapi:clientSecret>
27+
<msgraphapi:tenant>${MS_GRAPH_API_TENANT}</msgraphapi:tenant>
28+
</msgraphapi:msGraphApiConnectionSettings>
29+
</pluginConnection>
30+
</connections>
31+
<audits/>
32+
<tasks>
33+
<task>
34+
<name>users</name>
35+
<bean>org.lsc.beans.SimpleBean</bean>
36+
<pluginSourceService implementationClass="org.lsc.plugins.connectors.msgraphapi.MsGraphApiUsersSrcService">
37+
<name>msgraphapisrc</name>
38+
<connection reference="msgraphapi"/>
39+
<msgraphapi:msGraphApiUsersService>
40+
<name>msgraphapi-users-service-src</name>
41+
<connection reference="msgraphapi"/>
42+
<msgraphapi:filter>startsWith(mail, 'a')</msgraphapi:filter>
43+
<msgraphapi:pivot>userPrincipalName</msgraphapi:pivot>
44+
<msgraphapi:pageSize>999</msgraphapi:pageSize>
45+
<msgraphapi:select>userPrincipalName,mail,displayName</msgraphapi:select>
46+
</msgraphapi:msGraphApiUsersService>
47+
</pluginSourceService>
48+
<ldapDestinationService>
49+
<name>ldapdst</name>
50+
<connection reference="openldap"/>
51+
<baseDn>ou=users,dc=example,dc=org</baseDn>
52+
<pivotAttributes>
53+
<string>uid</string>
54+
</pivotAttributes>
55+
<fetchedAttributes>
56+
<string>objectClass</string>
57+
<string>uid</string>
58+
<string>cn</string>
59+
<string>mail</string>
60+
<string>sn</string>
61+
</fetchedAttributes>
62+
<getAllFilter>(&amp;(objectClass=person)(uid=*))</getAllFilter>
63+
<getOneFilter>(&amp;(objectClass=person)(uid={userPrincipalName}))</getOneFilter>
64+
</ldapDestinationService>
65+
<propertiesBasedSyncOptions>
66+
<mainIdentifier>"uid=" + javax.naming.ldap.Rdn.escapeValue(srcBean.getDatasetFirstValueById('userPrincipalName')) + ",ou=users,dc=example,dc=org";</mainIdentifier>
67+
<defaultDelimiter>;</defaultDelimiter>
68+
<defaultPolicy>FORCE</defaultPolicy>
69+
<conditions>
70+
<create>true</create>
71+
<update>true</update>
72+
<delete>true</delete>
73+
<changeId>true</changeId>
74+
</conditions>
75+
<dataset>
76+
<name>objectClass</name>
77+
<forceValues>
78+
<string>"inetOrgPerson"</string>
79+
</forceValues>
80+
</dataset>
81+
<dataset>
82+
<name>cn</name>
83+
<forceValues>
84+
<string>srcBean.getDatasetFirstValueById("displayName")</string>
85+
</forceValues>
86+
</dataset>
87+
<dataset>
88+
<name>uid</name>
89+
<forceValues>
90+
<string>srcBean.getDatasetFirstValueById("userPrincipalName")</string>
91+
</forceValues>
92+
</dataset>
93+
<dataset>
94+
<name>sn</name>
95+
<forceValues>
96+
<string>srcBean.getDatasetValuesById("displayName")</string>
97+
</forceValues>
98+
</dataset>
99+
</propertiesBasedSyncOptions>
100+
</task>
101+
</tasks>
102+
</lsc>

0 commit comments

Comments
 (0)