Tuesday, December 03, 2019

Installing Apache Tomcat for use with Bibliocommons

How to setup Apache Tomcat for use with Bibliocommons.

I will be pulling form a number of resources if you want to see the referenced Bibliocommons document to can click here.  

However you will in a login to view the document.  We will need a few items before we start.  The apache-tomcat server provided by bibliocommons which is located as an attachment to the end of their documentation https://partnerportal.bibliocommons.com/hc/en-us/articles/202340244-Installing-Tomcat-UNIX-Systems- .

We are going to use Microsoft Hyper-V for running this server.  So before we begin, you will want to open 3 types of ports and restrict them to come from the Bibliocommons IP range.  So for the purposes of this documentation we are going to say 53093, 53094, 53097 

Setup and install your Linux server on Hyper-V.  I am using Ubuntu 18.0.4 LTS.  For the purpose of this documentation, we are making the VM dual processor with all Integration services enabled, we have changed our secure boot to be a Microsoft UEFI Certificate Authority, TPM enabled and processor compatibility is checked.  We will also be using a static IP for this install.
Create Virtual Machine



Specify Gen2

Assign Memory

Configure the network


VHDX Summary


Select a boot media

Finish the creation


Connect


Select your language

Install Ubuntu

Specifiy Networking

Edit IP

Add your manual IP
For the purposes of this documentation, the IP address doesn't really matter but it will need internet access to get updates and add the ZIP and Java Package.

Use the entire disk, (use LVM if you want)

Select the disk
  
Create your server name and credentials


add powershell

I prefer the latest stable version

Install

Reboot

There are a few additional items you will want to install for your linux server.  In addition to powershell I installed UNZIP, and Java 8 default repository and from Oracle.  After installing your linux server download and install the Bibliocommons Tomcat installer.  I downloaded it to my Desktop and SCP it to my linux system.  To get the Oracle versions of Java you will need an oracle account. https://www.oracle.com/ca-en/java/


I SCP the files for Java and the Tomcat server from my workstation to the server
Install open JDK first then extract the Oracle Java to the same jdk directory.
sudo apt install default-jdk
 


Install Open JDK

Extract the Oracle JDK to the Open JDK Directory
sudo tar xvzf jdk -8u221-linux-x64.tar.gz -C /usr/lib/jvm
Multiple Java's in the JVM Directory
Once extracted set the Default JVM


export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_221

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_221, we can verify the java variable by typing echo $JAVA_HOME



When we see that our JDK Path is /usr/lib/jvm/jdk $Version (in this case 1.8.0221) we are good to go ahead and set our JAVA_HOME Variable

update-alternatives --config java
/etc/environment
Add the path JAVA_HOME=/usr/lib/jvm/jdk1.8.0_221"





Install Bibliocommons Tomcat
Make a directory in /opt called BiblioCommons
Sudo mkdir /opt/BiblioCommons/
Extract the files in the Java8 folder tar xvf apache-tomcat-7.0.82-bibliocommons.tar
You should now see a folder called apache-tomcat-7.0.82-bibliocommons.tar
Move that folder to /opt/BiblioCommons/


Securing Tomcat

First, create a new tomcat group:
sudo groupadd tomcat

Next, create a new tomcat user. We'll make this user a member of the tomcat group, with a home directory of /opt/tomcat (where we will install Tomcat), and with a shell of /bin/false (so nobody can log into the account):

sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

Add out user to the tomcat group

Sudo usermod -a -G tomcat administrator

Give tomcat ownership of BiblioCommons

sudo chown -R tomcat:tomcat /opt/BiblioCommons

the user owning the folder bibliocommons will be tomcat.

Then you can execute

sudo chmod u+w bibliocommons folder to add the write permission to the username for the user you want (such as administrator).

But if you want to add this user to the group associated with "bibliocommons", you can run

sudo usermod -a -G tomcat administrator

and then execute sudo chmod g+w bibliocommons

to add the write permission to the group.

Change the permissions so owner and the group have rwx permissions

Sudo chmod -R 775 <$Bibliocommons directory> (owner is the user tomcat but the administrator account needs x permissions as well that is why group is 7)

Now that our tomcat user is set up and any users we created to manage the tomcat service have proper permissions, let's download and install Tomcat.


Now setup Tomcat

The default ports Tomcat uses are 9003, 9004 and 9007. If you know the default ports are already in use by other programs on your system and need to change them to ones that are not, open the following file with a text editor to find and replace the default ports: /conf/server.xml. 


Note that you must pick a distinct port for each of the port options and let your BiblioCommons Project Manager know of any change in the SSH Connector Port which is 9007 by default.

Please note, while the BiblioCommons Tomcat installer opens port 9007 labelled as the "SSH Connector Port", its actually the HTTPS port our application servers use to communicate with your on premises Tomcat instance. The labeling of that port is incorrect.


Open the following file with a text editor: /bin/setenv.sh. Inside the file, uncomment the appropriate line for CATALINA_OPTS by following the instructions within based on the amount of population served. Also, update to be the absolute path the the JDK installed as described in the Software Requirements section of Allocating a Server in Your Network, such as /opt/Java/jdk1.7.0_55.

If you have not already done so, create a directory called BiblioCommons on your system and then create another one called Connector_Support inside it. For example, create the directories for the path /opt/BiblioCommons/Connector_Support. Please make sure the user who starts Tomcat has read, write and execute permissions for these directories.
Sudo chmod +rwx “Directory”

Open the following file with a text editor: /lib/connector.properties. Inside the file, update so that config.path is equal to the path to the Connector_Support directory you have created.

Finally, start Tomcat by running /bin/startup.sh and verify there is no error.

Verifying the Tomcat Installation


Verify the Tomcat installation by accessing https://localhost:9007 or https://localhost: with a tool such as cURL or Wget. It should show one of the following messages depending on which tool is used. Please do not be alarmed at the bad certificate error, the mere presence of the following messages is an indicator that Tomcat is running.


With Wget, you should see the following:

$ wget https://localhost:9007
--2014-04-17 16:58:31-- https://localhost:9007/
Resolving localhost (localhost)... 127.0.0.1, ::1
Connecting to localhost (localhost)|127.0.0.1|:9007... connected.
GnuTLS: A TLS fatal alert has been received.
GnuTLS: received alert [42]: Certificate is bad
Unable to establish SSL connection.
With cURL, you should see the following:
$ curl https://localhost:9007
curl: (60) SSL certificate problem: self signed certificate
More details here: http://curl.haxx.se/docs/sslcerts.html
curl performs SSL certificate verification by default, using a"bundle"
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn't adequate, you can specify an alternate file
using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
the bundle, the certificate verification probably failed due to a
problem with the certificate (it might be expired, or the name might
not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
the -k (or --insecure) option.

Please let your BiblioCommons Project Manager know if these messages do not appear.

If you want to verify tomcat is running you can edit the server.xml file and un comment out


Once that is done, stop and restart the tomcat server. This will allow you to verify that tomcat is working



Creating Tomcat Startup Scripts


Once you have installed Tomcat successfully, you will need to set up Tomcat to start automatically on server startup. This is critical to ensuring service recovery in the event of server issues or regular server maintenance.

The process for setting up Tomcat to start automatically varies by operating system and distribution. Some common distribution instructions are outlined in the article below. Please consult the documentation for your OS for exact steps for your case. In this case we are using Ubuntu Server 1804LTS so we going to call this bibcat.sh and place it in the /etc/init.d folder

The Bash Startup Script

The following is a startup script that can be used on Linux based systems:
#! /bin/sh

# set this to wherever the Tomcat binaries/configuration exist
TOMCAT=

case "$1" in
  start)
    ${TOMCAT}/bin/startup.sh
    ;;
  stop)
    ${TOMCAT}/bin/shutdown.sh
    ;;
  *)
    echo "Usage: /etc/init.d/tomcat-bibliocommons {start|stop}"
    exit 1
    ;;
esac
exit 0

Ensure to chmod the script so that the root user can execute it (most likely 755). You can test the script directly by running it with the start and stop parameters (as sudo).

Steps to create a permanent Bash alias:

  1. Edit ~/.bash_aliases or ~/.bashrc file using: vi ~/.bash_aliases 
  2. Append your bash alias For example append: alias update='sudo yum update' 
  3. Save and close the file. 
  4. Activate alias by typing: source ~/.bash_aliases 
Please note that ~/.bash_aliases file only works if the following line presents in the ~/.bashrc file:

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi


Are above lines are missing in your ~/.bashrc file? Just append at the end of the ~/.bashrc, using a text editor such as vi/vim or joe.
vi ~./bash_aliases

Alias bibcat=’/etc/init.d/bibcat.sh’ (this is the path to your script)

Source ~./bash_aliases

to activate the aliases




You can now start and stop the tomcat service using bibcat stop or bibcat start

Startup script

Type the command crontab -e
Then add the line below
@reboot /etc/init.d/bibcat.sh start
Save the file and exit
Then add the rules to your firewall to allow bibliocommons to access the server.

Setup your timezone

Be sure to make sure your timezone is setup correctly, if you don’t it will interfere with your bibliocommons records sync.  Since we have no GUI we need to change the files in the terminal.

Sudo vi /etc/timezone -> change it to US/Mountain
Sudo cp /usr/share/zoneinfo/America/Edmonton /etc/localtime

To verify type date in command prompt



Reference:


Install Java on Linux
https://linuxize.com/post/install-java-on-ubuntu-18-04/
https://docs.oracle.com/cd/E19182-01/821-0917/inst_set_jdk_korn_bash_t/index.html
https://thishosting.rocks/install-java-ubuntu/
Install Tomcat
https://partnerportal.bibliocommons.com/hc/en-us/articles/202340244-Installing-Tomcat-UNIX-Systems-
https://www.vultr.com/docs/how-to-manually-install-java-8-on-ubuntu-16-04



Ubuntu Software Firewall
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-18-04


Path Alias for starting and stopping the service

Saturday, November 23, 2019

How to enable slip and receipt printing on Horizon ILS

This is a how to for enabling receipt and slip printing in Horizon.  This article assumes that the station
you are enabling this on has a network or local receipt printing installed.


Login to horizon and go to Circulation -> CKO Window




Go to CKO Window -> Tools -> Receipt Options.



This is a how to for enabling receipt and slip printing in Horizon. This article assumes that the station you are enabling this on has a network or local receipt printing installed.
Enable “Allow Printing of Slips and Receipts”



Select the Slips you want to print as shown below.



Enable printing in Windows -> select the receipt printer you want to use.

NOTE: That you may get a font substitution warning.  You must resolve this before being able to continue.  I prefer using Arial as a substitute font.


Select the receipt printer you want to use



Now you should be able to print slips and receipts in Horizon.

Wednesday, July 24, 2019

Kobo Arc - Fixing a startup boot loop

Kobo Arc stuck in a boot loop
A friend of mine had their Kobo Arc suddenly stop working.  The device would start booting then not make it past the boot animation (hang and not make it to the OS).  Of course they followed all the typical troubleshooting found on Kobo's Website with the link below.

https://help.kobo.com/hc/en-us/sections/360002811734-Troubleshoot



However this doesn't help typically when you can't get to the OS level and my friend even booted into fastboot/recovery and did a full Factory Reset of the device.

However this doesn't help you if there is an issue with a corrupt file or if the built in storage is starting to degrade.  Remember it's 2019 and this device was released November 2012.

However I like a challenge and had a look at it.  Since it could get into fastboot we have some options.

There are Roms on XDA we could play with and help us troubleshoot

https://forum.xda-developers.com/showthread.php?t=2507886

We can re-flash the OS and see what happens which can be found here

https://help.kobo.com/hc/en-us/articles/360019865014-Manually-update-your-Kobo-Arc-software

We chose to just to re-flash the stock OS, which is fine by me, but we have to have an android dev setup on a device, which I happen to have.  If you don't you will need a PC with the Following setup

Download and Install the Android Dev Studio

https://developer.android.com/studio

Once Completed Under Appearance & Behavior -> System Settings -> Android SDK -> enable the Google USB Driver

Enable Google USB Driver
Now you can get the ADB tools from the SDK Manager but for my workflow and using the command line I like putting everything in one place so I went and downloaded the Platform-tools from the link below and extracted it to C:/ and renamed the folder to adb.

https://developer.android.com/studio/releases/platform-tools.html

Open CMD prompt as an Administrator and CD to C:\adb  (Keep this open were going to need it later)

ADB Directory for working out of for flashing
I downloaded the Stock ROM for the Arc from Kobo's website and copied it from my downloads folder to the adb folder on C:\ as shown below.

ADB Directory on C:\


Then I booted the Arc up into fastboot and connected it with a good USB cable (I had issues with 2 cables hooking up the kobo as it was only charging and not detecting the adb connection).

IMPORTANT!!!  Windows should see the Kobo in fast boot mode but it won't be accessible.

Select Apply Update From ADB
Once you select apply update from ADB you will see the following screen on the kobo

Now send the package you want to apply to the device with "adb sideload "
From your administrator command prompt window type the following command

adb sideload "zeus-ota-781.zip"

If your kobo is seen by Windows, you will see the following

ADB Push
Once that has been pushed to the device it will verify and either install or abort installation.  In my case it installed the firmware without an issue and we have a working Kobo Arc.

A working Kobo Arc

Tuesday, July 23, 2019

Where have all the Adobe Updates Gone?

Adobe Creative Suite Patches
For anyone not on creative cloud and are holding on to their old Adobe Creative Suite versions for dear life, having the original disks or images of the disks are fine but there are updates that are helpful for making the programs more stable.  To that end and until Adobe takes these links down you can get your software updates for your old creative suite programs from these two links.



Mac Adobe CS Updates
https://supportdownloads.adobe.com/product.jsp?product=39&platform=mac

Windows Adobe CS Updates
https://supportdownloads.adobe.com/product.jsp?product=39&platform=windows

Wednesday, July 03, 2019

Adding mx records to a webhost for sendmail use for Google Apps & Office 365

If your a google apps user or an organization that uses google apps and you would like to use a sendmail form on your 3rd party hosting provider such (greengeeks, bluehost, justhost, etc) you will need to add the following information to your hosting provider to allow your gsuite email to accept mail from the webhost.

If you don't do this your host will try to deliver the mail locally as the default is to associate all domain settings with the host, typically with a @ mx record for the localhost.  Below is a sample failed email from a webhost without the google mx records setup.

EMAIL FAILURE SAMPLE

Return-Path: <>
Delivered-To: webhostusername@mtl-node3.websitehostserver.net
Received: from mtl-node3.websitehostserver.net
by mtl-node3.websitehostserver.net with LMTP id 8GQACpV7fVynYi8AqIeWRg
for ; Mon, 04 Mar 2019 14:25:09 -0500
Return-path: <>
Envelope-to: webhostusername@mtl-node3.websitehostserver.net
Delivery-date: Mon, 04 Mar 2019 14:25:09 -0500
Received: from mailnull by mtl-node3.websitehostserver.net with local (Exim 4.91)
id 1h0tD3-00D8fw-3q
for webhostusername@mtl-node3.websitehostserver.net; Mon, 04 Mar 2019 14:25:09 -0500
X-Failed-Recipients: yourdomainemail@domain.ca
Auto-Submitted: auto-replied
From: Mail Delivery System
To: webhostusername@mtl-node3.websitehostserver.net
Content-Type: multipart/report; report-type=delivery-status; boundary=1551727509-eximdsn-1324812479
MIME-Version: 1.0
Subject: Mail delivery failed: returning message to sender
Message-Id:
Date: Mon, 04 Mar 2019 14:25:09 -0500
--1551727509-eximdsn-1324812479
Content-type: text/plain; charset=us-ascii
This message was created automatically by mail delivery software.
A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:
  yourdomainemail@domain.ca
    No Such User Here
--1551727509-eximdsn-1324812479
Content-type: message/delivery-status
Reporting-MTA: dns; mtl-node3.websitehostserver.net
Action: failed
Final-Recipient: rfc822;yourdomainemail@domain.ca
Status: 5.0.0


To enable google mail forwarding we need to setup mx records that point to google to do this you go into you login to your cpanel



You need to modify your domain zone on the host.  Select Zone Editor




If there are any MX records setup, delete them.  Then add the following using zone editor. (change domain.ca to your domain).  You can also reference this google kb https://support.google.com/a/answer/140034?hl=en


Name TTL Class Type Record
domain.ca 14400 IN MX Priority: 1
Destination: aspmx.l.google.com
domain.ca 14400 IN MX Priority: 5
Destination: alt1.aspmx.l.google.com
domain.ca 14400 IN MX Priority: 5
Destination: alt2.aspmx.l.google.com
domain.ca 14400 IN MX Priority: 10
Destination: alt3.aspmx.l.google.com
domain.ca 14400 IN MX Priority: 10
Destination: alt4.aspmx.l.google.com

then save your changes.  You should now be able to send email to within your organization, but to make it a little bit more secure you should login to your google admin account and limit the scope of your third party hosted server.  To do that go to



Apps > G Suite > Settings for Gmail > Advanced settings

Add a SMTP Relay service

Now you would need to verify that your host supports pear php if you want to use smtp authentication as for TLS you will need to verify your host supports that as well. 


The same applies to Office 365 if your using it 


NameTTLClassTypeRecord
@3600INMXPriority: 1
Destination: MS=ms XXXXXXXX 
**Note:**This is an example. Use your specific Destination or Points to Address value here, from the table in Office 365. 
How do I find this? 

There are other settings you can include such as SPF if your host supports it.

These settings should allow you to email use php sendmail for google apps and office 365.

References:

https://support.google.com/a/answer/140034?hl=en
https://docs.microsoft.com/en-us/office365/admin/get-help-with-domains/create-dns-records-at-any-dns-hosting-provider?view=o365-worldwide
https://docs.microsoft.com/en-us/office365/admin/dns/create-dns-records-at-godaddy?view=o365-worldwide

Tuesday, July 02, 2019

How to renew the Apple Push Certificate for Cisco Meraki MDM

With Apple equipment when used with a MD such as Cisco meraki you have to update your push certificate every year otherwise your connection between the devices and your MDM will break and then you will be doing manual updates until you get the devices reset with your MDM.  Here is how you update your apple push certificate to your apple devices before the expiration date so you don't lose the connection between your MDM and your apple devices.




1 - Login to your Meraki MDM


2 - Select MDM Network -> then under the Organization menu under "Configure" select MDM




3. Once here select the Update/Renew Certificate button.



4.  Download your CSR File.  If you don't keep a clean house (or download folder) note the name and date of the file as it is very important.  In my case it is "Meraki_Apple_CSR (4).csr"



5. Then click on the link for the Apple Push Certificate Portal and login with the ID you are going to use or using with the MDM.  (It is the ID is tied to the CSR) so in this case mdmaccount@domain.ca.  Don't forget that you will need your 2FA device to be able to login.




6.  Select Renew on the Certificate you want to renew.  Then upload the CSR; this is the file from step 4 - "Meraki_Apple_CSR (4).csr"



7.  Then once done you will download your new Certificate to use with your MDM.  Again make note of the name and date if you don't keep things tidy.  In my case it is "MDM_ Meraki Inc._Certificate (1).pem" 


8. Now go back to your meraki mdm and enter in the email address and upload the certificate we got from apple (MDM_ Meraki Inc._Certificate (1).pem



9. Save the settings (this is usually on the bottom of the page or on the bottom right)

10.  Now your certificate expiry should be from 1 year as shown below



You can view a youtube video of the process here


References:

Crontab changes in Linux 26.04 vs previous versions

I use a small Linux server to control the turning on and shutting off our client stations with crontab.  The system I typically use is Ubunt...