Site Changes

I had to change the theme of the site. I haven’t used Chrome in a long time due to it having been a total piece of garbage on most of my machines. Anyway, put it on my trusty Surface 3 as Firefox was taking up a ton of memory, notice basically no links or anything worked with the site on Chrome. Figured that was probably happening to everyone since my other WordPress sites worked fine.
Same problem cropped up on my fiance’s computer running Chrome as well. Figured out it was the WordPress theme. Looked like it hadn’t been updated since 2014 or so. A real shame too, it was a good, no-nonsense theme that loaded fast and worked really well for this blog.
I could probably figure out what the problem is, but it’s probably time to change it and the Twenty Seventeen theme is pretty cool so we’ll see how that runs until I can find something close to what I had or someone who will design me one.

ShoreTel Backup Method Revisited

Occasionally I’ll get a comment on the blog that says, “This post is three years old but it worked” which is really nice to hear. It also means that at least in the case of ShoreTel most stuff is fairly consistent between versions.
I was thinking about backing up ShoreTel servers today and looked at my old post on backing up your server and thought this would be a good time to post again about using a method I’ve found that works well, but that ShoreTel doesn’t seem to talk about.
I am going to disclaim this, as ShoreTel does not suggest it. However, if you poke through this blog, other forums, and talk to ShoreTel customers and partners you’ll find out that basically none of them set up a backup plan on standalone servers. If they do it’s ShoreTel’s included scripts, which almost always fail after a minor update, if they ever worked in the first place.

Backing Up Your Stand Alone Server With Windows Server Backup

You’ll need a NAS or other remote storage for this. These instructions are a little more ‘theory’ than the precise step by step instructions I’d rather give. They’re also geared for Server 2008 and Server 2012. It should work just fine with Server 2016 and forward as Server Backup hasn’t changed much since the 2003 days. If you are still using 2003 you’ll need an external hard drive and a floppy disk probably.
You will also need an installation media for Server 2008/2012 for this to restore correctly. You can usually download this from Microsoft. Someone with a volume license agreement or a Microsoft partner can usually get you the Installation Media (I’ve never had a problem getting one for free if it was an emergency). If you have an install disk from a major hardware vendor like Dell, this will work too as you aren’t actually using the install media to do the installation. I do not think you’ll need your Server Key, but you should be keeping a copy of that somewhere safe anyway.

Step 1 – Open server backup and select the option for a scheduled backup.

Step 2 – You will want to do a full back up to a remote share. The remote share is your NAS. Depending the on the version you may be able to do incremental backups to a remote share as well. Don’t do this. Just do a full, bare metal backup of everything every night or once a week or whatever you feel comfortable with.

Note: A word on the scheduling. You want this to be some crazy hour when nothing is going on. I’ve checked logs on a few servers with this set up. It does not take long, anywhere from ten minutes to an hour at most. Depends on the speed of the machine, NAS and network. It uses shadow copy snapshots so it basically is just copying an image of the machine when the backup copy job starts. I HAVE run these during the day and it doesn’t seem to mess anything up. I would not trust that to happen on a really busy server.

Note 2: This method just backs up the server once, and wipes out the previous backup. Because ShoreTel is constantly writing and deleting stuff, I am of the opinion that a full backup every time is better. This is really for disaster recovery not recovering a deleted extension or a voicemail someone accidentally got rid of.

Restoring the ShoreTel Server

This is pretty straight forward. You want to boot from the Server 2008/2012 installation media and select the “Restore my server” or advanced options instead of the “Install” button. You’ll find a restore from image option. You can usually browse for the image on a network location, sometimes you may need to put it on an external drive (May be a version thing).
You’ll need similar or the exact same hardware to use this. Some backup software will let you restore on dissimilar hardware but, I have no idea how well this works with ShoreTel. It’s probable you could make this work somehow with virtualization though. Newer versions of Server Backup make a VHD file so, it’s entirely likely you could boot it directly in HyperV, but that’s just speculation.
 
 

Clear OS – SugarCRM Removal

How To Remove SugarCRM from ClearOS

I’m not going to show how to put SugarCRM on ClearOS because there are a lot of guides out there how to do that. I’m going to show how to take it off. Here’s how to do that. This is more of a theory guide than a step by step how to.

Theoretical Step 1 – Putty/SSH into the Clear OS and remove the SugarCRM files. Mine were under /var/www/html/sugarcrm/CRM. You may have put them under a Virtual directory or something. Here are a few commands to keep in mind:

Remove a directory – rm or rmdir

Remove a directory that isn’t empty – rm -rf [directory]
(Careful with this command)

Theoretical Step 2 – Remove the database. I show in the video how to do this with whatever version of phpMyAdmin comes prepackaged. It may vary on your version a little, I know most versions I’ve used don’t look exactly like what is on this server. You could also log into the server with Putty and fire up mysql. Since you’re probably using a root user and hopefully your root password is different in mysql you’ll need to do this:

Log into MySQL – mysql -u root -p
(It will ask for the MySQL root password when you hit enter)

Drop the sugarCRM database – DROP DATABASE sugarcrm;

Show databases  – SHOW databases;

That should remove SugarCRM pretty easily. To put it on was basically the reverse of that. Create a blank database called “sugarcrm”. Unzip the SugarCRM files into the /www/html/sugarcrm folder. Then follow the instructions for the initial setup.
 

Clear OS – Initial Thoughts

Spent a good part of my weekend building a box out of parts cobbled together in my garage for a ClearOS server. Thought I’d post some first thoughts on the process and why.

What’s it for?

I’d been thinking I needed a small business server for a while to help me manage some projects and as a testing and development platform. I need to be able to develop web applications locally, invoice some consulting projects and other uses.

Why ClearOS

Normally I’d use Ubuntu Server or Windows Server for projects like this. Ubuntu is my preferred Linux flavor, and it’s rare to find something that doesn’t work with it. A friend of mine pointed me to ClearOS, however. I really like the idea of a web-based interface for interacting with the server. For rolling out features quickly, I think this is the way to go for most deployments assuming your security is tight enough. So I thought I’d give it a try.

Pros and Cons

I am looking at the Community Edition. They have paid Home and Business editions as well as pre-built appliances you can order. It’s a subscription model and pricing is fairly reasonable at every level.

First the bad.

  • Their website and documentation is good but either lacking or not updated often. I was trying to install MySQL from the Marketplace. I could not find it no matter what I did. Everything I found indicated you should just be able to search for “MySQL” and click install. It did not show up. Eventually I figured out, as far as I can tell you install “MariaDB” and that installs MySQL and phpMyAdmin. At least for the Community Edition this seems to be a recurring problem.
  • Manually installing apps is confusing. It’s basically just the yum app in CentOS/Redhat, so no big deal. However, because of the documentation issue when I tried to just install MySQL manually I wasn’t even sure it worked. The manual installation instructions were confusing and had screenshots of things that just didn’t seem to exist. This could just be because I am using the Community Edition and some things are turned off. This is one of those things that would make it sort of hard to consider upgrading.
  • The setup process makes you register the server even if you are just using the Community Edition. Not a huge deal, as you get some Dynamic DNS stuff and a few other things. This is likely why their apps are so easy to work with. If you care about your privacy, this might be an issue. Installing these for clients, this is actually a pro, in my opinion.
  • It seemed like it turned on its DHCP server for some reason. I’m not sure if it was really on or if the GUI was just indicating it was on. I set it up as a private server and didn’t have it act as a DNS server. This could be bad if it turns a DHCP server on by default.

The Good

  • It was incredibly easy to install. The entire install process took no more than about twenty minutes. Initial configuration made sense and it didn’t need too many unnecessary steps.
  • The Marketplace makes it very easy to set your server up to do whatever you need. Do you want to build a firewall? You can choose the apps you need for that really easily. Do you need just a basic web server and nothing else? Easy to do that. A couple of clicks and you have it done.
  • There are templates for Public, Private and Gateway servers as well as other functions. This lets you deploy things much more quickly than setting up a server entirely from scratch.

Overall I’m pleased and look forward to using it. There are bugs for sure but I think that something like this could potentially shave off significant amounts of time in deployment. It is not good for all situations but for small to mid-size businesses it has a lot of potential.
 

CMOS Batteries – Most Common Type

Quick post for something to add to your toolkits. Occasionally a CMOS battery will go out, especially on an old machine that’s been sitting around a while. They last several years but not forever. I’ve seen some ancient machines that use some weird battery packs but most motherboards use plain old ‘CR2032’ lithium batteries. You can be a sucker and go buy them locally for way more than what they’re worth or get a few dozen of them now for about fifty cents each if you need one.

KEYKO 10pc C2032 Lithium Coin Cell Battery

The above link has ten packs, twenty packs, and fifty packs. If you look around you can find them in hundred piece blister packs. Personally I wouldn’t buy that many unless you work with a lot of old computers. They do go bad, not quickly but they do.

They’re also handy to have around for other things. Small kitchen scales, alarm clocks and other devices use them either as their power source or as a memory backup. You can also replace old gameboy game cartridge batteries with them.

Just had to use one for a computer I ‘refurbished’ for a ClearOS server build I just did. Don’t get caught unprepared!

Editing Personal Call Handling Rules For Other Users in ShoreTel

This is one of those guides that requires some knowledge of relational databases and the confidence to edit your ShoreWare Director Database without screwing it up.
You’ll need some software on your ShoreTel Server to do this. I prefer HeidiSQL but you can use any MySQL GUI that you prefer. You can even install PHPMyAdmin if you want. The hardcore can just use the shell. The relevant database that you want to connect to is on port 4308, it’s called “shoreware”. The username is root, and the password is “shorewaredba”. You can find all this information with a quick Google Search, the ShoreTel forums, Reddit, and even on the ShoreTel server itself if you poke around enough so I’m not terribly concerned giving it away here.
The annoying thing about a vanilla ShoreTel server is there isn’t any way to do Nuisance Call Blocking except Personalized Call Handling Rules on each individual Communicator. There’s also no way to add new rules to a user’s Communicator in the Director. Outside of some third-party software I’ve heard of, or some extra software from ShoreTel you have to either walk a user through this process or do it on their computer yourself. That changes now.

Editing Someone Else’s Personalized Call Handling Rules On Your ShoreTel Server

Step 1 – Create the rule on your own ShoreTel Communicator. You do this in the Options Menu under “Personalized Call Handling”. Just make the exact rule you want on the other user’s Communicator. Please note I’m using ShoreTel version 14.2 as the example.

Step 2 – Remote into your server and fire up your mySQL editor and connect to the configuration database.

Step 3 – Look for the table ecrrules. Your rule will probably be the newest rule in there, but you can look at the tables ecractions and ecrnumbers to verify which rule is yours. The field “RuleID” is the foreign key that ties them all together.

Step 4 – Once you’ve determined which rule is yours, simply change the extension in the UserDN field from your extension to the user who needs the rule’s extension. HeidiSQL is nice enough to give you a list when you click on it.

Step 5 – Verify in Director under “Personal Options” of the user that the rule shows up.

Step 6 – The rule is in the new user’s Personal Options now. If not check to make sure you put the right extension in the ECRULES table.

If you want to edit the rules you can change the fields. Simple things like the phone number or destination number are easy to edit under the ecractions and ecrnumbers table. I would not change the parameters of the rule or anything like that. If you need to change what the rule does, I would delete it in Director, make a new one that does what you need and do steps 1-6 above. For instance, if you mistyped the caller ID the rule needs to check for you can change that in the database, if you want it to forward to an inside line not an outside line, I’d start over since doing that would require changing several things in multiple tables and it’s easy to get confused.

If you are not familiar with how relational databases work, stay away from this. It’s pretty simple but you can mess something up fairly easily if you aren’t careful.

 

ShoreTel Communicator Encountered Error While Attempting to Connect to Server

Had this problem on a few machines during a failed upgrade. I found the fix here at Read, Deploy, Enjoy!. Here’s the link. Basically it involves setting the permissions to the STClient Login object under DCOM Config in your Component Services to to “Everyone”.
What I ran into was slightly different. The object wasn’t even showing up on a few computers. I think this is related to how the Communicator is installed from GPO. Especially the old versions if you had to use a ‘trick’ to get the MSI files. This could also be a problem if you have some variation of Roaming Profiles.
Here’s how to remedy the problem.

Step 1 – Uninstall ShoreTel Communicator under the problem users profile, delete all registry keys associated with it, delete the folder under Program Files or Program Files (x86).

Step 2 – Log in as a Local Administrator, or a Domain Admin that doesn’t have any special home profile folders or anything.

Step 3 – Install ShoreTel Communicator from the ShoreWare Director Page on your Server.

Step 4 – Reboot and log back in as the problem user and it SHOULD work correctly. If not follow the instructions on Read, Deploy, Enjoy!

My suspicion is that an installation task fails during an automated install and causes the DCOM object not to be created properly. This probably happens near the end of the install and doesn’t always trigger a failure in the install. Newer versions of Communicator may not use this object at all, so it may be a symptom of a downgrade procedure as well.
 
 

GotFreeFax Online Faxing – Free, No Ads

I was recently made aware of a great service for fax troubleshooting and basic faxing called “GotFreeFax.com“. I had used another service for my troubleshooting and just basic faxing needs online, but these guys reached out to me and I’m convinced theirs is definitely better.
Here’s a rundown of their free fax features:

  • Two free faxes a day.
  • No ads or branding whatsoever on the fax.
  • Three pages per fax.

You may get a couple fewer faxes and pages per day with this service but, in my opinion that no ads or branding on the cover page so your recipient has no idea how you sent it makes up for that. Here’s a picture of the cover sheet from a free fax I sent to myself the redacted parts are just names and some information I had to fill out:
GotFreeFax Cover Sheet
See? No ads. Just a plain cover sheet.

Sending a Fax From GotFreeFax.com

So here’s how to send a fax from GotFreeFax.com. It’s simple and you have a lot of options.

Step 1 – Go to GotFreeFax.com.

Step 2 – Fill out the sender information. This is you. You’ll need to put in your name, company name if you have one, your fax number with area code and you HAVE to put in your email address.

GotFreeFax Fax Info Entry

Step 3 – Fill in the recipient information. You’ll need to put in the recipient’s name, company information if they have one, fax number and a subject. Remember to put in an area code.

Step 4 – Enter the fax content. Typically you’ll want to just upload a document. They accept PDF files, DOC files and JPG files. So yes, you can fax a family photo. I haven’t tested with JPGs so I don’t know the size limitations, if any. I have uploaded DOCX files and it works with those just fine even though it doesn’t specifically say it will.

You can uncheck the “Use No-Add Free Cover Page”. This will just remove the cover page so you can use your own. It doesn’t give you the option to specifically upload a cover page, so you’ll need to make it part of the document.

Step 5 – Click the “Send Free Fax” button.

Step 6 – You’ll get a confirmation email. Click the link in the email.

GotFreeFax Email Confirmation

Step 7 – Wait for the success or failure email to come in.

Larger Faxes – You can send larger faxes for a fee with the Premium Pay Per Fax Service. To do this, instead of clicking on the “Send Free Fax” button, click on the proper premium paid button for the number of pages you need to send.

Use an account – You can sign up for an account and pre-pay for some pages. Just click on the button for the number of pages you want to buy. You’ll be taken through a sign up process and asked for billing information. Sending faxes with an account in the future couldn’t be any easier. You just enter your email address and PIN  in the fields under “Send Prepaid Fax” and hit “Send Fax Now” and it will automatically deduct the right number of pages from your account.

Useful ShoreTel Communicator Registry Keys for Scripting

I recently did a favor for a friend of mine who wanted tie a couple of systems together that weren’t tightly integrated in his network with some scripts. Anyway, I found the idea in his case fairly novel so I adapted the idea to the ShoreTel phone system and logon scripts. I know a lot of companies out there where the user’s four digit extension is their PIN for various systems at least initially.
I’ve had similar requests before to write a program that extracted the user’s extension from the ShoreTel database and do something with it. I do have a method of doing that but it’s annoying and this is much easier since it comes from the user’s local machine with ShoreTel Communicator installed. I’m also including some other registry keys because this script is super easy to adapt to get this information too.

Script for Extracting Current User’s Extension from ShoreTel Communicator

This is a VB Script for extracting the user’s extension from their computer’s registry. It is intended to be used as a part of a logon script or just to run at any time. The plugin I use doesn’t like VB comments so I took them out, I’ve attached the fully commented script to the post.
Use this script at your own risk. It just reads a registry key, but any time you mess with the registry, ShoreTel or anything like that you assume responsibility for your own systems. Also if your environment is different for whatever reason, this is not a hard script to change to suit your needs.
Script File: extractExtension (rename this to extractExtension.vbs when you download it)


   Dim shoretelServer
   Dim objRegistry
   Dim extension
   shoretelServer = "shoretel"
   Set objSysInfo = CreateObject("ADSystemInfo")
   strUser = objSysInfo.UserName
   Set objUser = GetObject("LDAP://" & strUser)
   Set objRegistry = CreateObject("Wscript.shell")
extension = objRegistry.RegRead("HKEY_CURRENT_USER\Software\Shoreline Teleworks\CSIS Client\"& shoretelServer & "." & objUser.sAMAccountName & "\SUserID")
Wscript.Echo extension

Registry Keys

There are a few more registry keys that can be put to good use by enterprising script users that may want to automate a few things. Use this information entirely at your own risk. I’m not taking any responsibility for anything if you change these.
Also, some of these keys, just because you change them does not mean it actually does anything. Some of them are just flags to show the Communicator software that it has done something or not, such as uninstalled the Outlook Voicemail Plugin. Changing that key won’t uninstall the plugin if it’s messed up.
One potential use for this information is if your server crashes and you don’t have a backup. If Communicator is still installed everywhere you can recover all your user information with a simple script that goes through everyone’s machines to extract the information. If there is interest in such a thing I will write it and post it.

User Key

HKEY_CURRENT_USER\Software\Shoreline Teleworks\CSIS Client\servername.username\
This key has several values under it. The most useful are:
SUserID = Extension of User
FirstName = User’s First Name
LastName = User’s Last NameHasMailbox = Set to 1 if yes, 0 if no.
MailboxGUID = Haven’t seen this set on the versions I’ve worked with but maybe?
If you go up a level there are some values for the current server version and client version, some dynamic “ConnectedOnce” values if the client has connected to multiple servers.

Client Keys

There’s a lot here to look at. Some of this looks to be stuff it gets from the server. I fiddled with a few of these and they just reset when I loaded Communicator. Likely for features I don’t have access to.
HKEY_CURRENT_USER\Software\Shoreline Teleworks\ShoreWare Client
AutoStartSoftPhone = Starts the softphone automatically when you start the program. This is set to 0 when Extension Assignment is on primary phone, 1 when on Softphone.
Outlook Voice Mail = 1 if Outlook Voicemail Integration is Installed. 0 if no.
OwnedDNs = User Extension.
Server = Server the client is logged into. Might be a good key to read to get information for the above script.
UserName = User the Client was logged in with. Again, good information for above script.
VMFoldersExpanded = This shows some dynamic keys for various Voicemail boxes that the user has access to. Not sure what the numbers mean.

Layout Keys

Under the above key is the Layouts key with a bunch of subkeys. These seem to be related to how the client looks and behaves. I won’t go through all these. I just wanted to mention that possibly deleting or modifying these might clear up weird issues that occasionally crop up with older versions of Communicator or find lost windows when users drag them off the screen, rather than reinstalling the whole product, or deleting the entire Shoreline key.
HKEY_CURRENT_USER\Software\Shoreline Teleworks\ShoreWare Client\Layouts