
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.

Operating Systems¶
- CentOS 7
- OEL 7
Authors¶
General¶
Edit Config¶

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.
Libraries¶

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¶

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.

Note
When installing or removing, there is an option to set as System default.
Proxy¶
By default, JRI Publisher enables a Proxy for Apache and maps port 8080 to 80.
This enables you to reach reports via http://yourdomain.com/JasperReportsIntegration without need to add the 8080 port.
Warning
While the proxy is convenient for development or intranet use, in production you should remove the proxy. To remove the Proxy, follow the steps below:
To edit, remove, or update Proxies, click on the Proxy tab as shown below.

Select the default Proxy of / as shown below, and click Remove.

Oracle XE¶
Table of Contents
Command Line¶
To start/stop/restart Oracle XE via command line.
- Connect to SQLPlus:
- 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
Schema Backups¶
Table of Contents
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:

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

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
Domain Mapping¶
Table of Contents
Create Conf File¶
Enter a new filename.conf and click the Create button.
Give your file a name that will make it easy to identify, such as mydomain.conf
Click the Create button.
The Create button will load the template below.
The template is commented.
- Replace all instances of DOMAIN with the domain or sub domain you wish to map.
- Replace ‘4550’ to the app id and landing page (or page alias).
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 | <VirtualHost *:443>
# Docs: https://xe-docs.enciva.com/en/latest/components/domainmapping/index.html
# Replace all instances of DOMAIN below with your domain or sub domain
ServerName DOMAIN
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/DOMAIN/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/DOMAIN/privkey.pem
SSLCACertificateFile /etc/letsencrypt/live/DOMAIN/fullchain.pem
# Be sure you have generated an SSL certificate via Servers > Certbot
# Docs: https://xe-docs.enciva.com/en/latest/components/certbot/index.htmn
RewriteEngine on
# Replace 4550 below with your app id and landing page or alias
RewriteRule ^/$ ords/f?p=4550 [R=301]
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
SSLProxyEngine On
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyVerify none
ProxyPass / https://localhost:8443/ connectiontimeout=300 timeout=600
ProxyPassReverse / https://localhost:8443/
</VirtualHost>
|
Restart HTTPD¶
For the mapping to take effect, you must restart Apache HTTPD server.
This can be done via Servers > Apache Webserver in your control panel.
It can also be done via command line using:
service httpd restart
Apache Tomcat¶
Table of Contents
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.
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.
- Via Module, using the Stop/Start/Restart buttons as shown below:
- 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
|
Data Sources¶
Table of Contents
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

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

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:

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

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:

Publish¶
Table of Contents
Publishing Reports¶
To publish a report, click the Publish tab as shown below:

This will open the screen below.

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.

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.

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

Options¶
There are four options for uploading files.
- Local File - this is a file already on the device.
- Uploaded File - upload from your local machine.
- 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).

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

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

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:
- Set email subject
- Set email message
- 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:

Click the Save button.

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)

Send report every hour without email delivery

Send report weekly with StudentID = 51

Report Dashboard¶
Table of Contents
Overview¶
Click the Reports tab to open the Reports Dashboard.

This will open the screen below.

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 Functions¶
Name:
Clicking on the report name will open the .jrxml file for editing, as shown below:

Actions:
Run: Runs the report on demand.

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

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

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:

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.

Jasper¶
Table of Contents
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='root@localhost'
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
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=user@company.com
|
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