Access and extract the Adobe Campaign server configuration file which holds critical configuration information for your instance.

Since there’s no direct access from the console, you can use Linux commands executed through JavaScript to read and dump serverConf.xml content to your FTP for analysis.

Preparation

Create a simple workflow with a JavaScript activity and an End:

JavaScript activity in Adobe Campaign workflow to access serverConf.xml

Walkthrough

Get your serverConf.xml

Open the JavaScript activity and use this code:

var result = execCommand("pwd"); // to get current dir
logInfo(result[1]);

result = execCommand("ls ../../conf"); // to display the content of the conf folder
logInfo(result[1]);

result = execCommand("cp ../../conf/serverConf.xml /sftp/your-incoming-ftp-folder/");
logInfo(result[1]);

The execCommand function signature:

/**
 * @param command The command to execute with its parameters
 * @param bNoThrow true to get the output and the error code even if the command does not return zero (false by default).
 *
 * @return a table whose first element corresponds to the return code of the command (if the return code is different from zero, there is an anomaly) and the second element is a character string containing the standard output produced
 *
 * @note Depending on your installation, some commands can be blacklisted. For example: ln, dd, openssl, curl, wget, python, python3, perl, ruby, sh, bash, dash, zsh, base64, nlserver, node, phantomjs, java, awk, nc, telnet, ssh, scp, ftp
 */
function execCommand (command [, bNoThrow=false ])

Sample of serverConf.xml

Location: /usr/local/neolane/nl6/conf/ng/serverConf.xml.sample

The serverConf.xml file contains comprehensive configuration for your Adobe Campaign instance, including:

  • Authentication settings: session timeouts, security tokens, identification modes
  • Data store configuration: export directories, upload directories, cache settings, host configurations
  • Database connections: data source definitions, connection pools, SQL parameters
  • Virtual directory mappings: mappings between virtual and physical paths
  • DNS configuration: domain name servers, timeouts
  • Command execution settings: blacklisted commands, user permissions
  • HTML to PDF conversion: command, mode (phantomjs/wkhtmltopdf/other), timeouts
  • JavaScript interpreter settings: memory limits, stack size
  • SMTP server configuration: mail exchanger address and port
  • Namespace configuration: default namespace for new entities
  • Monitoring service configuration: scripts, thresholds
  • Document conversion server: OpenOffice server settings
  • Proxy configuration: HTTP/HTTPS proxy settings
  • Thread pool configuration: maximum threads
  • URL permissions: allowed domains and URL patterns for JavaScript code
  • Security zones: public network, VPN, LAN configurations with IP masks and subnetworks
  • Inbound SMS management: data retention, connection settings
  • MTA (Mail Transfer Agent) statistics: port, process settings
  • Log management: file sizes, purge settings
  • Tracking server configuration: consolidation periods, error handling, indicators
  • Tracking log writing daemon: log file management, shared memory settings
  • Web module configuration: Tomcat ports, JVM options, thread counts
  • JSP parameters: debug mode, download paths, class paths
  • JSSP parameters: garbage collection, time to live
  • HTTP relay configuration: URL routing, blacklists, spare servers
  • Redirection module: IMS organization ID, P3P policies, tracking settings
  • Spam check configuration: anti-spam scoring command
  • Workflow server configuration: database pooling, memory alerts

Full reference configuration

<?xml version='1.0'?>
<serverConf>
  <shared>
    <authentication checkIPConsistent="false" defaultMode="nl" longSessionTimeOutSec="1296000"
                    securityTimeOutSec="86400" sessionCacheSec="600" sessionTimeOutSec="86400">
      <xtk internalPassword="" internalSecurityZone="lan"/>
    </authentication>

    <dataStore exportDirectory="$(XTK_INSTALL_DIR)/var/$(INSTANCE_NAME)/export/"
               formCacheTimeToLive="600" hosts="*" interactionCacheTimeToLive="300"
               lang="" uploadDirectory="$(XTK_INSTALL_DIR)/var/$(INSTANCE_NAME)/upload/"
               uploadWhitelist=".+" viewCacheTimeToLive="600" workingDirectory="$(XTK_INSTALL_DIR)/var/$(INSTANCE_NAME)/workspace/">
      <proxyAdjust urlBase="" urlRegEx=""/>
      <dataSource name="default">
        <dbcnx NChar="" bulkCopyUtility="" dbSchema="" encrypted="" login="" password=""
               provider="" server="" timezone="" unicodeData="" useTimestampTZ=""/>
        <sqlParams funcPrefix="">
          <postConnectSQL/>
        </sqlParams>
        <pool aliveTestDelaySec="600" freeCnx="0" maxCnx="50" maxIdleDelaySec="1200"/>
      </dataSource>
      <virtualDir name="images" path="$(XTK_INSTALL_DIR)/var/res/img/"/>
      <virtualDir name="formCache" path="$(XTK_INSTALL_DIR)/var/$(INSTANCE_NAME)/formCache/"/>
      <virtualDir name="publicFileRes" path="$(XTK_INSTALL_DIR)/var/res/$(INSTANCE_NAME)"/>
    </dataStore>

    <dnsConfig localDomain="" nameServers="" retry="4" timeout="5000"/>
    <exec blacklistFile="" user=""/>
    <htmlToPdf command="" maxProcessusCount="5" mode="phantomjs" timeout="120" verbose="false" waitTime="15"/>
    <javaScript maxMB="64" stackSizeKB="8"/>
    <mailExchanger mxAddress="" mxPort="25"/>
    <module defaultNameSpace="cus"/>
    <monitoring maxPreparationJobsSec="3600" unixScript="" winScript=""/>
    <ooconv maxConversions="1000" maxServerIdleSec="7200" portRange="8101-8110" url="http://localhost:8080/nl/jsp/ooconv.jsp"/>
    <proxyConfig enabled="false" override="localhost*" useSingleProxy="false">
      <proxyHTTP address="" login="" password="" port=""/>
      <proxyHTTPS address="" login="" password="" port=""/>
    </proxyConfig>
    <threadPool maxThreadCount="10"/>
    <urlPermission action="" debugTrace="false">
      <url dnsSuffix="api.omniture.com" urlRegEx="https://api\.omniture\.com/genesis/i/3\.1.*"/>
      <url dnsSuffix="marketing.adobe.com" urlRegEx="https://.*"/>
      <url dnsSuffix="graph.facebook.com" urlRegEx="https://.*"/>
      <url dnsSuffix="api.twitter.com" urlRegEx="https://api\.twitter\.com/1\.1.*"/>
    </urlPermission>
  </shared>

  <securityZone allowDebug="false" allowHTTP="false" allowSQLInjection="false" label="Public Network" name="public">
    <subNetwork label="All addresses" mask="*" name="all" proxy="127.0.0.1, ::1"/>
    <securityZone allowDebug="true" allowHTTP="false" allowSQLInjection="false" label="Private Network (VPN)" name="vpn" showErrors="true">
      <securityZone allowDebug="true" allowEmptyPassword="false" allowHTTP="true" allowSQLInjection="false"
                    allowUserPassword="false" label="Private Network (LAN)" name="lan" sessionTokenOnly="true" showErrors="true">
        <subNetwork label="Lan 1" mask="192.168.0.0/16" name="lan1" proxy="127.0.0.1, ::1"/>
        <subNetwork label="Lan 2" mask="172.16.0.0/12" name="lan2" proxy="127.0.0.1, ::1"/>
        <subNetwork label="Localhost" mask="127.0.0.0/8" name="localhost" proxy="127.0.0.1, ::1"/>
      </securityZone>
    </securityZone>
  </securityZone>

  <mta args="-tracefilter:nlmta" autoStart="false" dataLogPath="" debugPath="" maxMemoryMb="1024"
       maxProcessMemoryAlertMb="1800" maxProcessMemoryWarningMb="1600" runLevel="10">
    <cache maxPeriodSec="244800" maxSizeOnDiskMb="1024" purgePeriodSec="3600"/>
    <relay address="" port="25"/>
    <master dataBasePoolPeriodSec="30" dataBaseRetryDelaySec="60" maxSpareServers="2" minSpareServers="0" startSpareServers="0"/>
    <child idleChildTimeoutSec="60" maxMsgPerChild="5000000" maxWaitingMessages="2000" maxWorkingSetMb="128">
      <smtp enableTLS="false" idleSessionTimeoutSec="5" initialDelaySec="4" maxSessionsPerChild="1000"/>
    </child>
  </mta>

  <web JVMOptions="" MaxThreads="75" MinSpareThreads="5" args="" autoStart="false" controlPort="8005"
       httpPort="8080" maxProcessMemoryAlertMb="1800" maxProcessMemoryWarningMb="1600" runLevel="10">
    <jsp debug="" downloadPath="$(XTK_INSTALL_DIR)/datakit/nl/fra/jsp" soapRouter="http://jni">
      <classpath>$(XTK_INSTALL_DIR)/tomcat-7/...</classpath>
    </jsp>
    <jssp collectsGarbageAfterRequest="true" timeToLive="1000"/>
    <relay startRelayInModule="true">
      <url targetUrl="http://localhost:8080" urlPath="/view/*"/>
      <url deny="true" urlPath="*ooconv.jsp*"/>
    </relay>
    <redirection IMSOrgId="" P3PCompactPolicy="CAO DSP COR CURa DEVa TAIa OUR BUS IND UNI COM NAV"
                 databaseId="" defLogCount="30" startRedirection="true" startRedirectionInModule="true"/>
  </web>

  <wfserver args="" autoStart="false" dataBasePoolPeriodSec="20" maxProcessMemoryAlertMb="1800"
            maxProcessMemoryWarningMb="1600" runLevel="10"/>
</serverConf>

Going further