Enciva XE Docs

_images/enciva-main.fw.png

Intro

Overview

Enciva XE is a Webmin module that manages Oracle XE, Apex, Tomcat, Java, and JasperReportsIntegration

It also provides Backups, Report Publishing, Report Scheduling, and Report Management.

_images/JRI-Publisher-Main.png

Operating Systems

  • CentOS 7
  • OEL 7

Authors

Webmin

Webmin can be accessed via:

https://yourdomain.com:10000

General

Edit Config

_images/config-tab.png

The Config tab is used to edit the following files:

application.properties
server.xml
web.xml
context.xml
tomcat-users.xml
setenv.sh

These files can, of course, be edited via the file system or VI as well.

Apps

_images/apps-tab.png

The Apps manager allows you to deploy, undeploy, and redeploy WAR files in Apache Tomcat

Libraries

_images/libs-tab.png

The Libraries tab is for managing Jar files under:

/home/tomcat/<tomcat-version>/libs

These files can, of course, via the file system.

Note

The advantage of the Libraries tab is that it tracks Jar files installed, This allows you to easily roll back changes.

Java

_images/java-tab.png

The Java tab is used during installation as well as for updating of JDK.

It can also be used to un-install the selected JDK and replace it with a new version.

_images/java-installed.png

Note

When installing or removing, there is an option to set as System default.

Proxy

By default, a Proxy is configured to map APEX to yourdomain.com/ords.

To edit, remove, or update Proxies, click on the Proxy tab as shown below.

_images/proxy.png _images/proxy-remove.png

Oracle XE

Controls

Oracle XE can be started and stopped via Servers > Tomcat XE

_images/xe-start.png

Command Line

To start/stop/restart Oracle XE via command line.

  1. Connect to SQLPlus:
  1. Issue the start/stop commands
1
 startup | shutdown | shutdown abort | startup nomount | startup mount

Init Script

The XE init script is located in /etc/init.d/oracle-xe-18c

Version

XE Version is 18c

Schema Backups

Backup Manager

To access the Schema Backups Manager, click the Backups icon as show below.

_images/backups-tab.png

Layout

The Backup Manager tab allows you to create, edit, and delete scheduled schema backups.

_images/backups.png

Create Backup

To create a new schema backup, enter the backup name and click create.

A template will be created and you just need to simply fill in the schema/password and FTP or offsite information.

Edit Backup

To edit a backup, select the script from the drop down.

Make the required edits and click Save.

Backup Location

By default, backups are saved to /opt/oracle/admin/XE/dpdump unless otherwise specified.

Scheduling Backups

Backups can be scheduled with a variety of options via the Schedule tab as shown below:

components/backups/_static/schedule-tab.png

On the main Schedule page, click the Add tab to open the Create Schedule page as shown below.

_images/xe-schedule.png

Scheduling Options

The Schedule module offers the following options.

Execute:

Options:
   now
   custom
   hourly
   weekly
   monthly

now: This will run the Backup immediately, with no subsequent runs.

custom: This option allows you to enter a custom cron for running the Backups

hourly, weekly, and monthly are as stated.

Name:

Options:
   Drop-down list of all available Backups

The Name field will display a list of all available Backup scripts.

Above, we have select the DemoScript.sh we created earlier.

File Name:

Options:
   Set in backup.sh file

Enter the desired Data Source for the report.

Email:

Options:
   Set in backup.sh file

Note

All options are set within your backup.sh file

Apache Tomcat

Usage

Apache Tomcat is used as the container for Oracle ORDS as well as JRI Publisher.

Stop/Starting/Restarting will restart both the APEX and JRI services.

Layout

The Apache Tomcat (CATALINA) home directory is:

/home/tomcat/apache-tomcat-v/

Where apache-tomcat-v is the version installed.

The CATALINA_HOME variable is set both in the Tomcat init script as well as setenv.sh files.

ORDS File Locations

ORDS is deploy as a war file under:

/home/tomcat/apache-tomcat-v/webapps/ords

APEX Image Folder

The APEX image directory (/i/) is deploy under:

/home/tomcat/apache-tomcat-v/webapps/i

This is the location you would use for deploying static and custom content.

JRI File Locations

For JasperReportsIntegration layout and customization options, please see the Jasper section below.

Starting and Stopping

There are two ways to start/stop/restart Tomcat.

  1. Via Module, using the Stop/Start/Restart buttons as shown below:
_images/tomcat-tab.gif
  1. Via SSH, using the following commands
1
 /etc/init.d/tomcat { start | stop | restart | status }

Init Script

The Tomcat init script is located in /etc/init.d and has the following content.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
     #!/bin/bash
     ### BEGIN INIT INFO
     # Provides:        tomcat
     # Required-Start:  $network
     # Required-Stop:   $network
     # Default-Start:   2 3 4 5
     # Default-Stop:    0 1 6
     # Short-Description: Start/Stop Tomcat server
     ### END INIT INFO

     # Source function library.
     . /etc/environment;     #Catalina variables
     . $CATALINA_HOME/bin/setenv.sh

     RETVAL=$?

     function start(){
     echo "Starting Tomcat"
     /bin/su - tomcat $CATALINA_HOME/bin/startup.sh
     RETVAL=$?
     }

     function stop(){
     echo "Stopping Tomcat"
     /bin/su - tomcat -c "$CATALINA_HOME/bin/shutdown.sh 60 -force"
     RETVAL=$?
     }

     case "$1" in
     start)
             start;
     ;;
     stop)
             stop;
     ;;
     restart)
             echo "Restarting Tomcat"
     stop;
             start;
     ;;
     status)

             if [ -f "${CATALINA_PID}" ]; then
                     TOMCAT_PID=$(cat "${CATALINA_PID}")
                     echo "Tomcat is running with PID ${TOMCAT_PID}";
                     RETVAL=1
             else
                     echo "Tomcat is not running";
                     RETVAL=0
             fi
             ;;
     *)
     echo $"Usage: $0 {start|stop|restart|status}"
     exit 1
     ;;
     esac
     exit $RETVAL

Version

Currently, it is deployed with the latest stable version of Tomcat 9.x

Data Sources

Data Source Types

Data Sources are used to connect your Oracle database.

JRI Publisher supports both JDBC and JNDI Data Source types included with JRI.

JDBC Data Sources are stored in a flat file at:

${CATALINA_HOME}/jasper_reports/conf/

JDBC Data Sources have the following form:

#====================================================================
# JDBC datasource configuration
# http://www.orafaq.com/wiki/JDBC#Thin_driver
# additional jdbc configurations, please uncomment
#====================================================================
[datasource:test]
name=test
url=jdbc:oracle:thin:@127.0.0.1:1521:XE
username=my_oracle_user
password=my_oracle_user_pwd

JNDI Data Sources are stored in a database and referenced in the application server rather than stored in a flat file as with JDBC Data Sources.

JNDI Data Sources have the following form:

#====================================================================
# Native JNDI datasource, to be configured in the application server
# name: jndi_test
#====================================================================
[datasource:jndi_test]
type=jndi
name=jndi_test

Working with Data Sources

Data Sources can be added, edited and removed from the JRI Publisher Module via the Data Source tab, as shown below

_images/data-source-tab.png

The default view on clicking the tab is the List view, as shown below.

_images/data-source-default.png

To add a Data Source, click on the Add tab at top.

Select the desired Data Source type and enter the required information as shown below. Then click the Add button:

_images/add-data-source.png

On the main Data Source tab we can confirm the Data Source has been added:

_images/data-source-added-ok.png

To remove a Data Source, click on the Remove tab and select the Data Source you wish to remove using the drop-down selector as shown below:

_images/data-source-remove.png

Publish

Publishing Reports

To publish a report, click the Publish tab as shown below:

_images/publish-tab.png

This will open the screen below.

_images/publish-default.png

Note

The file browser location is set to /home/tomcat/apache-tomcat-v/jasper_reports/reports

Select the directory you wish to publish to and then select Upload to upload both your .jrxml and .jasper files.

You would also include any support files, such as image files.

Creating Directories

To publish a report, click the Publish tab as shown below.

_images/publish-tab.png

Enter the name of the directory you wish to create as show below. This will create a new directory, NewReports, under the main reports directory.

Once text is entered, upload any files you wish to.

_images/publish-browse.png

Note that once a Directory has been created, it will be added to the availbale directories for subsequent publications:

_images/publish-new.png

Options

There are four options for uploading files.

  1. Local File - this is a file already on the device.
  2. Uploaded File - upload from your local machine.
  3. HTTP or FTP URL - obtain files via HTTP or FTP

Additionally, select the options to upload zip archives as well as to over-write any existing files (for when you publish updates to your reports).

_images/publish-options.png

Schedule

Scheduling Reports

Reports can be scheduled with a variety of options via the Schedule tab as shown below:

_images/schedule-tab.png

On the main Schedule page, click the Add tab to open the Create Schedule page as shown below.

_images/schedule-new.png

Scheduling Options

The Schedule module offers the following options.

Execute:

Options:
   now
   custom
   hourly
   weekly
   monthly

now: This will run the report immediately, with no subsequent runs.

custom: This option allows you to enter a custom cron for running the report

hourly, weekly, and monthly are as stated.

Name:

Options:
   Drop-down list of all available reports

The Name field will display a list of all available reports. Above, we have select the NewReports/ClassReports we created earlier.

Format:

Options:
   csv
   docx
   html
   html2
   jxl
   pdf
   pptx
   rtf
   xls
   xlsx

Select the desired output format for the report.

Data Source:

Options:
   Displays a drop-down list of Data Sources you have created.

Select the desired Data Source for the report.

File Name:

Options:
   Enter the desired file name WITH Extension.
   Example: ClassReports.pdf

Enter the desired Data Source for the report.

Email:

Options:
   Enter email address or comma separated list of addresses for delivery.

Enter the desired Data Source for the report.

Note

If you do not wish to email the report, tick the “Don’t send email” box. This will run the report and save it to disk on the server. The report can be retrived via disk or downloaded via Reports tab.

Optional Params

The Optional Params tab allows you to:

  1. Set email subject
  2. Set email message
  3. Add report parameters

URL Parameters

To add a Report Parameter to the report URL, enter the variable in the left box and the value in the right box as shown below:

_images/schedule-params.png

Click the Save button.

_images/schedule-optional-params.png

You can add as many parameters as you wish to.

Finally, click the Creat button to schedule the report.

Additional Examples

Below are some additional examples.

Send report every Tuesday at 1500 (3 PM)

_images/schedule-tuesdays.png

Send report every hour without email delivery

_images/schedule-hour.png

Send report weekly with StudentID = 51

_images/schedule-weekly.png

Report Dashboard

Overview

Click the Reports tab to open the Reports Dashboard.

_images/reports-tab.png

This will open the screen below.

_images/report-dashboard.png

As we can see above, the creation of our NewReports Directory has been added to the directory structure. This is true for all directories and sub directories added.

Dashboard Layout

Expanding the NewReports directory, we see below:

_images/report-dashboard-item.png

Dashboard Functions

Name:

Clicking on the report name will open the .jrxml file for editing, as shown below:
_images/reports-edit-jrxml.png

Actions:

Run: Runs the report on demand.

_images/reports-actions.gif

Clean: Opens a new window to delete any reports you may wish to delete

_images/reports-cleaner.png

Download: Opens a new window to download selected report(s) in .zip or .bgz format.

_images/reports-downloader.png

SchID:

Link to edit the Schedule for the report

Cron:

Displays the cron in use for the Schedule

Format:

Displays the report format (e.g. pdf, csv, etc…)

Data Source:

Displays report Data Source

Output:

Clicking the Browse button will open the report directory in the File Manager as shown below:

_images/reports-browse.png

Email:

Displays report email recipient(s).

Optional Params:

Displays any URL Parameters the report is using.

No Schedule

Note

Any report that does not have a schedule will show the Scheduler icon in the Actions menu. To add a Schedule, click the icon as shown below.

_images/reports-no-schedule.png

Jasper

JasperReportsIntegration

The information below pertains to the deployment of JasperReportsIntegration in JRI Publisher. For full documentation of JasperReportsIntegration, please see http://www.opal-consulting.de/downloads/free_tools/JasperReportsIntegration/

File Locations

On installation, the JRI files are saved to:

/home/tomcat/apache-tomcat-v/jasper_reports

Here, you will find the following:

/home/tomcat/apache-tomcat-v/jasper_reports/conf

/home/tomcat/apache-tomcat-v/jasper_reports/schedules

/home/tomcat/apache-tomcat-v/jasper_reports/reports

/home/tomcat/apache-tomcat-v/jasper_reports/logs

** reports ** contains your Jasper report files.

** conf ** contains the application.properties file

** schedules ** contains the .sh files for the Scheduler

Gen Script

The Report Scheduler script is located under /etc/init.d/gen_jri_report.sh and can be customized to suit and extend your requirements.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
     #!/bin/bash -e

     source /etc/environment

     JRI_HOME="${CATALINA_HOME}/jasper_reports/"

     #source the report environment
     source "${JRI_HOME}/schedules/${1}_env.sh"

     DONT_MAIL="${2}"

     #set who is sending the mail
     export EMAIL='[email protected]'
     REPORT_FOLDER=$(dirname ${REP_ID})

     #encode the / in report id
     REP_ID=$(echo "${REP_ID}" | sed 's/\//%2F/g')

     if [ "${OPT_PARAMS}" ]; then
     OPT_PARAMS="&${OPT_PARAMS}"
     fi

     URL="http://localhost:8080/JasperReportsIntegration/report?_repName=${REP_ID}&_repFormat=${REP_FORMAT}& _dataSource=${REP_DATASOURCE}&_outFilename=${REP_FILE}${OPT_PARAMS}"

     TSTAMP=$(date '+%Y%m%d_%H%M%S')
     REP_FILEPATH="${JRI_HOME}/reports/${REPORT_FOLDER}/${TSTAMP}_${REP_FILE}"

     wget -O"${REP_FILEPATH}" "${URL}"
     if [ $? -ne 0 ]; then
     rm -f "${REP_FILEPATH}"
     fi

JRI Module Files

On installation, the JRI Module files are saved to:

/usr/libexec/webmin/jri_publisher (CentOS)
/usr/share/webmin/jri_publisher (Ubuntu)

The JRI Module configuration files are located at /etc/webmin/jri_publisher:

/etc/webmin/jri_publisher/config
/etc/webmin/jri_publisher/openjdk_version_cache
/etc/webmin/jri_publisher/oracle_version_cache

reports contains your Jasper report files.

conf contains the application.properties file

schedules contains the .sh files for the Scheduler

Version

The JasperReportsIntegration version is the one selected while using the install Wizard.

Schedule Files

Each schedule creates a numeric file under:

/home/tomcat/apache-tomcat-version/jasper_reports/schedules

The file has the following structure:

1
2
3
4
5
6
7
8
9
REP_FORMAT=pdf
REP_ID=NewReports/StateInfo
OPT_PARAMS="StateID=51"
REP_DATASOURCE="Demo DS"
EMAIL_SUBJ="State Report"
REP_FILE=State-Info.pdf
EMAIL_BODY="Please find the State Reports attached."
SCH_ID=12
RECP_EMAIL=[email protected]

The above parameters are passed to the Jasper url as well as to MUTT for email delivery.

MUTT Parameters

JRI Publisher uses MUTT in conjuction with Postfix to deliver reports via email.

The final input has the form:

./etc/init.d/gen_jri_report.sh schedules.{1}

Where schedules.{1} is passed to gen_jri_report.sh

CSS

The screenshots in the documentation use a Material Design CSS Extension we created.

This can be added directly to Webmin > Configuration > Webmin Themes

In addition to making the screens a bit more vivid, it also increaes the size of objects on the page as well as padding, making it easier to work with

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
     .row.icons-row .icons-container {
     border-radius: 25px!important;
     -webkit-filter: none!important;
     filter: none!important;
     }

     html[data-theme="brown"] #sidebar {
     background:
     darkslategray!important;}

     .panel-default>.panel-heading {
     color: #fff;
     background-color: rgb(0, 188, 212)!important;text-align:left !important;

     }

     .panel-default>.panel-heading, .panel-default {
     border-top-left-radius: 5px !important;
     border-top-right-radius: 5px !important;
     }
     .panel-default , .panel{
     border-bottom-left-radius: 5px !important;border-top:0 !important;border-top-width: 0px;
     border-bottom-right-radius: 5px !important;
     box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.12), 0 1px 5px 0 rgba(0,0,0,.2);
     }

     .row.icons-row .icons-container:not(.highlighted) {
     border-radius: 5px !important;
     background: rgb(255, 255, 255) !important;
     box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.12), 0 1px 5px 0 rgba(0,0,0,.2);
     }

     h2.form-signin-heading {
     display: none !important;
     }

     i.wbm-webmin {
     display: none !important;
     }

     .card {
     font-size: .875rem;
     font-weight: 400
     }

     .btn:not(.btn-round), button.btn:not(.btn-round), .csf-container input[type='submit']:not(.btn-round), .csf-container button.input:not(.btn-round), input[type='submit']:not(.btn-round) {
     text-align: center;
     vertical-align: middle;
     font-size: 1rem;
     line-height: 1.5;
     border-radius: 0.325em !important;
     transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;
     text-transform: uppercase;
     cursor: pointer;
     border: 0;
     outline: 0;
     transition: box-shadow .2s cubic-bezier(.4,0,1,1),background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1) !important;
     will-change: box-shadow,transform;
     color: rgba(0,0,0,.87);
     background-color: rgb(255, 255, 255);
     border-color: rgb(204, 204, 204) !important;
     box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.2), 0 1px 5px 0 rgba(0,0,0,.12) !important;
     margin-left: 0 !important;
     margin-right: 0 !important
     }

     html[data-script-name*='settings-editor_read.cgi'] #content .CodeMirror+.ui_form_end_buttons .btn {
     margin-left: 0 !important;
     margin-right: 0 !important
     }

     html[data-script-name*='settings-editor_read.cgi'] #content .CodeMirror+.ui_form_end_buttons td:last-child .btn {
     margin-left: 0 !important;
     margin-right: 5px !important
     }

     .btn-group .btn,.btn {
     box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.2), 0 1px 5px 0 rgba(0,0,0,.12);
     }

     .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle) {
     border-top-right-radius: 0 !important;
     border-bottom-right-radius: 0 !important;
     }

     .btn-group>.btn:last-child:not(:first-child):not(.dropdown-toggle) {
     border-top-left-radius: 0 !important;
     border-bottom-left-radius: 0 !important;
     }

     body .btn.btn-primary {
     color: rgb(255, 255, 255) !important;
     background-color: rgb(63, 81, 181) !important;
     border-color: rgb(63, 81, 181) !important;
     }
     body .btn.btn-default {
     color: rgba(0, 0, 0, 0.87);
     background-color: rgba(153, 153, 153, 0.2);
     border-color: rgba(153, 153, 153, 0.2);
     }
     body .btn.btn-success {
     color: rgb(255, 255, 255) !important;
     background-color: rgb(76, 175, 80) !important;
     border-color: rgb(76, 175, 80) !important;
     }

     .btn.btn-secondary {
     color: rgb(255, 255, 255) !important;
     background-color: rgb(108, 117, 125) !important;
     border-color: rgb(108, 117, 125) !important;
     }

     .btn.btn-info, .btn.btn-inverse, .btn.ui_link.btn-inverse,.btn-tiny, .ui_link.btn.btn-inverse.btn-tiny.ui_link_replaced, .btn-inverse {
     color: rgb(255, 255, 255) !important;
     background-color: rgb(3, 169, 244) !important;
     border-color: rgb(3, 169, 244) !important;
     }

     .btn.btn-info:hover, .btn.btn-inverse:hover, .btn.ui_link.btn-inverse:hover,.btn-tiny:hover, .ui_link.btn.btn-inverse.btn-tiny.ui_link_replaced:hover, .btn-inverse:hover,

     .btn.btn-inverse:hover, .btn.ui_link.btn-inverse:hover, .btn-tiny:hover, .ui_link.btn.btn-inverse.btn-tiny.ui_link_replaced:hover, .btn-inverse:hover{
     border-color: rgb(255, 255, 255) !important;background-color: rgb(3, 169, 244) !important;
     }

     .btn:hover {
     cursor: pointer !important;
     }
     .btn.btn-warning {
     color: rgb(255, 255, 255) !important;
     background-color: rgb(255, 87, 34) !important;
     border-color: rgb(255, 87, 34) !important;
     }

     .btn.btn-danger {
     color: rgb(255, 255, 255) !important;
     background-color: rgb(244, 67, 54) !important;
     border-color: rgb(244, 67, 54) !important;
     }

     .alert-success {
     color: rgb(40, 91, 42);
     background-color: rgb(219, 239, 220);
     border-color: rgb(205, 233, 206);
     }.alert-danger {
     color: rgb(127, 35, 28);
     background-color: rgb(253, 217, 215);
     border-color: rgb(252, 202, 199);
     }.alert-primary {
     color: rgb(33, 42, 94);
     background-color: rgb(217, 220, 240);
     border-color: rgb(201, 206, 234);
     }.alert-secondary {
     color: rgb(56, 61, 65);
     background-color: rgb(226, 227, 229);
     border-color: rgb(214, 216, 219);
     }.alert-warning {
     color: rgb(133, 45, 18);
     background-color: rgb(255, 221, 211);
     border-color: rgb(255, 208, 193);
     }.alert-info {
     color: rgb(2, 88, 127);
     background-color: rgb(205, 238, 253);
     border-color: rgb(184, 231, 252);
     }.alert-light {
     color: rgb(127, 127, 127);
     background-color: rgb(253, 253, 253);
     border-color: rgb(252, 252, 252);
     }.alert-dark {
     color: rgb(34, 34, 34);
     background-color: rgb(217, 217, 217);
     border-color: rgb(202, 202, 202);
     }
     #right-side-tabs .btn-tiny.ui_submit.ui_form_end_submit, #content #system-status .btn-tiny.ui_submit.ui_form_end_submit {
     line-height: 21px;
     padding: 5px 12px !important;    height: 32px !important;
     }
     .table-subtable tbody tr td, .panel-body .table-subtable tr th, .panel-body .table-subtable tr td, .table-subtable tbody tr td, .panel-body tr th, .panel-body tr td {
     padding: .75rem !important;
     }

     body.csf .dataTables_filter input[type='search'], body .dataTables_filter input[type='search'], .csf-container input[type='text'], .csf-container input[type='search'], .csf-container input, .csf-container select, input[id^='CSF'], input[type='button'], input[type='reset'], input[name]:not([type='image']):not([type='checkbox']):not([type='radio']):not(.btn):not(.session_login), input[name]:not([type='image']):not(.sidebar-search):not([type='button']):not([type='checkbox']):not([type='radio']):not(.btn), .csf-container input[type='text'], .csf-container input[type='search'], .chooser_button, .form-control {
     font-size: 1rem;
     box-sizing: content-box;
     width: 100%;
     height: 3rem;
     margin: 0;
     padding: 0;
     -webkit-transition: box-shadow .3s,border .3s;
     transition: box-shadow .3s,border .3s;
     border: none;
     border-bottom: 1px solid rgb(158, 158, 158);
     border-radius: 0;
     outline: 0;
     background-color: rgba(0, 0, 0, 0);
     box-shadow: none;font-size:16px;padding-left:5px;padding-right:5px;
     }

     input[name]:not([type='image']):not([type='checkbox']):not([type='radio']):not(.btn):not(.session_login):focus, input[name]:not([type='image']):not(.sidebar-search):not([type='button']):not([type='checkbox']):not([type='radio']):not(.btn):focus, .csf-container input[type='text']:focus, .csf-container input[type='search']:focus, .chooser_button:focus, .form-control:focus{
     border-bottom-width:2px;border-bottom-color :  rgb(63, 81, 181)
     }

     li.user-link, li.user-link span, li.user-link, li.user-link i {
     background: rgb(85, 189, 212);
     color: rgb(255, 255, 255) !important;
     border-radius: 5px !important;
     border: 0 !important;
     line-height: 18px;
     }
     html[data-theme="brown"] #sidebar .form-group .form-control.sidebar-search::placeholder{
     color:#bbb !important
     }
     html[data-theme="brown"] #sidebar .form-group .form-control.sidebar-search{
     color: #fff!important;
     }

Above can be pasted into Theme Extensions

Security

As with JasperReportsIntegration, JRI Publisher should be run behind a firewall with access to port 8080 and 1521 restriced to the database server.

You should also change the Webmin port, as well as disable root access via SSH.

Note

All Tomcat and JRI services are owned and run by user tomcat with minimal privilages.

Support

All required Support contacts are contained in your Welcome Email.

Support is available 24x7x365