Backup Phone Pictures and Videos

The carrier (Verizon, Google Fi etc) that a lot of folks use for their smartphones, automatically backs up their photos and videos. Other phones and carriers do not have this feature.  It is a pretty simple process.  This is one of many links that show how to do it: https://www.verizonwireless.com/support/knowledge-base-218524/.

I am helping a very kind (and smart) gentleman extend a program he wrote which automatically does this. Without going into all the boring technical details, I will just say, when you connect your phone to your PC, it’s a little different than connecting USB sticks etc..  Research MTP aka Media Transport Protocol, the https://docs.microsoft.com/en-us/windows/win32/wmdm/windows-media-device-manager-11-sdk etc. for the boring details.

Anyone use a phone that does not automatically backup your photos and videos? Anyone want the capability to do their own backups of these files? It is really simple to do, but, I am looking at a way to do it automatically, by year, or by year and month. If this is an issue for anyone, or anyone you know, please let me know. One scenario is to find a helpful friend with a PC, then ask to plug your phone into their computer — they would only need to push a button to backup all your photos and videos to a USB stick.

Stay tuned to this page for further developments.

The General Flow of Using This Approach

In order to use the program, you will have to do this:

Connect your device by USB cable to a Windows PC.
(Bluetooth or WiFi connectivity is not under consideration at this time.)

Tap “Charging this device” 

InkedTapToSelectFileTansfer_LI
Tap File Transfer.

SelectFileTransfer

You many need to Tap one of the following:
Just Once
Always

Run the program.
This is PowerShell script at this time (a Microsoft program included with Windows).

Programs from outside sources will ask for permission to make changes.allowchanges

PowerShell scripts ask you about execution policy bypass. This allows this instance of the program to run.  If you do not make other changes, it will prompt you every time for this.  For the most part, this is what we recommend.

PowerShell-Execution-Policy

Answer Y

The Program will prompt you for your device name.
You will see a list of suggestions or a guide to selecting it from Windows File Explorer.

The program will attempt to identify if you have an SD card and an “internal device” and show you a partial list of the files at any location that it thinks have Pictures and Videos t you have taken with your device.

[Future editing note – Note show more examples, Consumer Cellular, Cricket etc:]

This PC\Galaxy J7 Crown\Card\DCIM\Camera\
This PC\Galaxy J7 Crown\Phone\DCIM\Camera

The general template is:
This PC\MTP USB Device\Internal shared storage\DCIM\Camera

You will select the source(s) of the pictures you want to copy.

You will be asked is you want to copy them to to a destination folder by Year, by Year and Month or just to a destination folder.

You will be prompted for the main destination drive.
The default will be : C:\Users\username\Pictures
Any accessible writable drive will be possible, including USB sticks.
(If the number of files to copy > 100 give x time warning, if 500, say, copy to the computer’s hard drive first, then transfer to the USB.

You will have to accept the default or enter a valid destination

If there are any errors, they will written to the screen.  A .txt log file will also be created showing any errors, input and output drives, the number of files copied, not copied etc..


This project was inspired by and is possible thanks to the efforts of thousands of people who have fought for our freedoms.

I cannot convey the importance and impact these heroes have had on our lives.   For your consideration, I offer these two items.


The Four Freedoms by United States President Franklin D. Roosevelt

Freedom of speech
Freedom of worship
Freedom from want
Freedom from fear

See https://en.wikipedia.org/wiki/Four_Freedoms


Richard Stallman, one of the most influential champions and pioneers in free and open source software, described another set of freedoms.  The web and thousands of other programs, that millions use daily, have been developed with these freedoms as inspiration.

    • The freedom to run the program for any purpose.
    • The freedom to study how the program works, and change it to make it do what you wish.
    • The freedom to redistribute and make copies so you can help your neighbor.
    • The freedom to improve the program, and release your improvements (and modified versions in general) to the public, so that the whole community benefits.

See https://en.wikipedia.org/wiki/The_Free_Software_Definition


Current Command Line Version of Program:
https://github.com/WillyMoselhy/Weekend-Projects
Download Copy-MTPCameraByMonth.ps1

Click the Search Button and enter PowerShell
CD to the directory where you downloaded the program
Example Command
.\Copy-PhonePics.ps1 “Moto X4\Internal shared storage\DCIM\Camera” C:\JIC\test

This version of the program expects your pics and videos to be in this format
File names follow this pattern yyyyMMdd_HHmmss e.g. 20200104_231922.jpg

In my case it did not work, as my Android 10 Google Fi Moto X4 stores files with either IMG_ or VID_ appended to the name, example

IMG_20181121_183737281.JPG


Code Snippets, and Links to Examples of Possible Use

Get filename and filetype
$filePath = “C:\PS\Test.Documents\myTestFile.txt”;
$fileName = (Split-Path -Path $filePath -Leaf).Split(“.”)[0];
$extension = (Split-Path -Path $filePath -Leaf).Split(“.”)[1];

get year
^(19|20)[\d]{2,2}$

Get Username
Write-Host ‘Your Username is ‘$env:UserName

Get List of Devices
$DeviceName = Get-PnpDevice -Class WPD -PresentOnly  | Select-Object -Property FriendlyName
Write-Host ‘=============’
Write-Host $DeviceName

Find the DCIM directorys for the DeviceName:
Crawl your Android device attached via usb with PowerShell
https://gist.github.com/cveld/8fa339306f8504095815

Interactive examples
https://mcpmag.com/articles/2016/06/09/display-gui-message-boxes-in-powershell.aspx

https://www.business.com/articles/powershell-interactive-menu/

https://www.robvanderwoude.com/powershellstart.php


This project takes the existing code and makes it interactive
and prompting the user for some confirmations and error checks. Also the existing program
does this
# File names follow this pattern yyyyMMdd_HHmmss e.g. 20200104_231922.jpg
# Files that do not match this pattern are excluded and reported

and that did not work for my phone.
Requirements by user

Step 1:
Connect phone by usb cable to windows computer

Step 2:
tap on phone and change from charging to file transfer

Step 3:
Run Program and allow Execution Policy bypass

This might help determine if you can find the device

Get List of Devices
$DeviceName = Get-PnpDevice -Class WPD -PresentOnly | Select-Object -Property FriendlyName
Write-Host ‘=============’
Write-Host $DeviceName

If more than one device, show the device name names returned from above code snippet with a way to select the device you want

Example
1) Galaxy J7 Crown
2) Moto X4

Enter the number next to the name of your phone
Validate the number enter selected the set input device name
{if can find device error exit}

Step 4:
Find name of phone internal storage and optional SD card
Note: See the link below (Crawl your Android… )for a way to crawl 2 or 3 levels to find the level where the DCIM directory
is. DCIM is a standard use by phone makes and camera makers
Find the DCIM directories for the DeviceName:

Crawl your Android device attached via usb with PowerShell

{if can find DCIM error exit}

set the input file path or paths

Step 5:

Check files under DCIM directories for standard format

{if can find any files error exit}
examples file names

$f1=’20200104_231922.jpg’; // default used in existing ps1 file
$f2=’IMG_20181121_183737281.JPG’; // what I see on my device
$f3=’VID_20181121_183737281.MP4′;

regex to find year month day
([12]\d{3}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01]))

Step 6:
A) If you can find files with a year month day, offer to copy from device to destination
by Year
By Year Month

B) else say, could not find year month day file names, do you want to copy all files to destination

Step 7:
prompt for destination drive. {any accessible drive}
Offer the default as

The default will be : ‘C:\Users\’ concatenated with $env:UserName concatenated with ‘\Pictures’;

Check for destination existence
{if can’t find destination error exit}

Step 8:
The existing program does most of this.

This snippet from that program needs work to incorporate the information gathered above

This needs to be changed and expanded with the information from above

## Copy items from camera by month
# We use the file name to arrange folders
# File names follow this pattern yyyyMMdd_HHmmss e.g. 20200104_231922.jpg
# Files that do not match this pattern are excluded and reported

$FileNameRegex = “^(?\d{4})(?\d{2})(?\d{2})_(?\d{2})(?\d{2})(?\d{2}).*\.(?.+)$” # https://regexr.com/45sdj

$ProgressActivityName = “Copying files from ‘$MTPSourcePath’ to ‘$TargetPath'”

$SkippedFiles = @()
$CopiedFilesCount = 0

foreach ($File in ($CameraItems |Sort-Object -Property Name) ){
#Validate file name matches pattern

Write-Progress -Activity $ProgressActivityName -Status “Working on it” -CurrentOperation “Copying: $($File.Name) – Finished $CopiedFilesCount / $($CameraItems.count)” -PercentComplete (($CopiedFilesCount/$CameraItems.count)*100)
$CopiedFilesCount++

if($File.Name -notmatch $FileNameRegex){
$SkippedFiles += [PSCustomObject]@{
Name = $File.Name
TargetPath = $null
Reason = “Pattern mismatch”
}
Write-Warning “$($File.Name) is skipped because of pattern”
}

The destination needs to be set based on the information gathered in step 6

Setup your Google for an International Trip where WiFi is Limited or Slow

As of Android Pie 9 Nov 1, 2019
Trip where WiFi is Limited or Slow

How to Disable Push Apps Like Google News ?

Google Fi app

Fi Network Tools

Select Enhance network – off to turn off
VPN – off (less overhead for slow connections)

Spam and blocked numbers

Block spam calls – on

International settings:

Select Account
Account settings

Select Alerts- on.
Select International
Select Notify about coverage before and during travel – on ( should work without Mobile Data or Wifi)

Open the Project Fi website

Select Account tab — your plan (or group plan), select a person.

Select Service outside the U.S – on.
Select Calls to non-U.S. numbers – on.

On your device

Settings – Select Network & Internet – Select Mobile Network – Roaming – on.

Once you turn on the settings, you can use the International services uninterruptedly. For more information, please refer to this link. https://support.google.com/fi/answer/6157794#intl_countries

International charges:

Text messages are free of cost (both sending and receiving)
Here is the article that breaks down the international call rates depending on the country you call. https://fi.google.com/about/international-rates/
As far as Wi-Fi calling is concerned, you’ll be charged, depending upon the country you’re calling. Refer this link for WiFi calling rates. https://voice.google.com/u/0/rates?hl=en&p=hangout
You can enjoy data for just $10/GB.
To make a pure Wi-Fi call, make sure that the Airplane mode is enabled and then the Wi-Fi is enabled.

Chrome, Google Drive etc

Sign into your Google Account on all the devices you want to use on your trip before you go.
Synch everything the day before then turn off synch

Chrome on Laptop or Desktop

Right hand side, Settings, Advanced,Privacy and security
Sync and Google services , turn off

Disable automatic App updates

Open Google Play.
Tap the hamburger icon (three horizontal lines) on the top-left.
Tap Settings.
Tap Auto-update apps.
To disable automatic app updates, select Do not auto-update apps.

Turn off automatic picture and video uploads

Open Google Photos
Tap the hamburger icon (three horizontal lines) on the top-left.
Tap Settings.
Tap Backup and synch.
Toggle Backup and synch off
See Cellular Data Backup – Photos should be off, Video Off

Settings – System

System -Backup – Do a Backup – if you try and turnit off it says it will delete everything

Google Maps

Make sure you’re connected to the Internet and signed in to Google Maps. Search for a place, like San Francisco . At the bottom, tap the name or address of the place tap More . Select Download offline map Download.

Android System Updates

Google “turn off {your phone maker ex moto } Android system updates.

Standard Settings to Consume Little Data

Wifi off, Bluetooth off, NFC off,
Disable Automatic App Updates
Turn off Automatic picture and Video Uploads
System – Backups – turn off System backups
Google Account – Turn off Synch

Enhance Network off (VPN off)
International alerts on

Downloaded Maps for the area in Google Maps
Favorite Maps and Location in Google Maps
Enter Location in Google – Google Maps
Google Maps – toggle Wi-Fi ONLY on

Data Saver off (to lessen impact on the network) May have to turn on
Location (GPS ON)
Mobile Data off

Google Drive, OneDrive, DropBox, pause synching

When I want to use the phone and apps over Cellular Data
Mobile Data on
Google Maps – toggle Wi-Fi ONLY off
Data Saver on (may need to turn this off)

When I want to use WiFi (there is a network available)
Wifi ON
Google Maps – toggle Wi-Fi ONLY on
Data Saver off

If app problems, trying clearing cache:
https://tunecomp.net/clear-app-cache-android-8-7-6/

Change Settings Notes

Data Saver
If enabled, your Android handset will restrict the background use of cellular data, thereby saving you from any unpleasant surprises on your monthly mobile bill.
Pull down from the Top Data Saver, then flip on the switch

Bluetooth
Pull down from the Top Bluetooth, then flip on the switch

Battery Saver
Pull down from the Top Battery Saver, then flip on the switch

Mobile Data
Pull down from the Top Mobile Data, then flip on the switch
Also Settings, Network & Internet, Mobile Network (Google Fi) – Mobile Data -toggle, Roaming – Toggle Mobile Data

GPS on off
Settings > Security & location .
Privacy section
Tap Location to turn on or off .

Airplane Mode
Cellular: Your device will stop communicating with cell towers. You won’t be able to send or receive anything that depends on cellular data, from voice calls to SMS messages to mobile data.
Wi-Fi: Your phone will stop scanning for nearby Wi-Fi networks and attempting to join them. If you’re already connected to a Wi-Fi network, you’ll be disconnected.
Bluetooth: Airplane mode disables Bluetooth, a wireless communication technology..
GPS: Airplane mode also disables GPS-receiving functions, but only on some devices. This is a bit confusing and inconsistent. In theory, GPS is unlike all the other technologies here—a device with GPS turned on is only listening to GPS signals it receives, not transmitting any signals. However, some aircraft regulations do not allow the use of GPS-receiving functions for whatever reason.

Security And Privacy
Google Play Protect on (turn off Unknown Sources)
Find My Device (requires WiFi)

Google Translate
What do you need to have on for google translate to work
https://support.google.com/translate/?hl=en#topic=7011755
Check Google Play before Download and use from above link
Download on laptop
Open the Google Translate website. You can access it at translate.google.com

Windows 10
open settings Update and Security – updates, pause updates for 7 days
Win 10
?Install Windows Defender Application Guard
?Security
Isolated Browsing

All Settings

Privacy – Some of these might be useful,If I was connected to WIFI

Activity History Off

System

Alarms Only

Shared Experiences – Off

Remote Desktop if Win 10 Pro
Turn off synching for Google Drive, OneDrive, DropBox etc

The Google Links
https://docs.google.com/
Open File Picker
https://drive.google.com
https://photos.google.com/
https://fi.google.com/account
https://maps.google.com/
https://www.google.com/maps/place/Ambergris+Caye/@18.0326562,-88.0677905,11z/data=!3m1!4b1!4m5!3m4!1s0x8f5b61fbed6153e9:0x41424c2902bd3290!8m2!3d18.001592!4d-87.9432837

Google Drive 
On device , in system tray, right click on GD, See 3 dot hamburger at top, select pause

Google Fi
You can contact a Google Fi expert through the Google Fi app. You can also dial 611 or call the number below:
Touch and hold 0 until you see the + icon on the display
Dial 1-404-978-8610 (international rates may apply).

https://support.google.com/fi/answer/6202294?hl=en Fi international problema

Use your Phone Outside the US
https://support.google.com/fi/answer/6157794?hl=en#targetText=Contact%20a%20Google%20Fi%20expert%20while%20traveling&targetText=Dial%201%2D404%2D978%2D,(international%20rates%20may%20apply).

https://fi.google.com/about/international-rates/

International use is supported in over 200 supported countries and destinations. Cellular calls are $0.20 per minute, and texts are included. You can also make calls over Wi-Fi. The rates for calling over Wi-Fi internationally depend on the country you’re calling. For specific rates, see Google Voice calling rates. 22 cents a minute. Text Free

https://www.cellmapper.net

If you don’t want to receive system updates notification, you can turn off the Automatic System Updates via Developer Options.

To Enable Developer Options:
Settings > About Phone > Tap Build Number 7 times
Go back to Settings > Developer Options > Disable Automatic System Updates

Feature Request for Contacts – Stock Android

This URL for this request is at: https://garyjohnson53.wordpress.com/2019/10/08/feature-request-for-contacts/

Update Nov 11, 2019

I made some Project Fi support requests and posted questions on the Google Fi support forum before I wrote this.  To my suprise, I found this setting in the Google Fi app on my phone.  Select Spam and blocked numbers,  Block spam calls.  We shall see how this works. If it allows phone calls from people not in my contacts, like some Doctors, Acquaintances and others, that will be great.  I think it still would be a good idea to have a seperate ringtone for calls that the number is not in my contacts, but this, hopefully, will make my life better.

My Moto X4 shows the:
Phone app (https://play.google.com/store/apps/details?id=com.google.android.dialer)
and the
Contacts App ( https://play.google.com/store/apps/details?id=com.google.android.contacts  to be from Google LLC.

This information was obtained by opening the app, (example Contacts) Left Menu – Help and Feedback – Right Menu – View in Google Play Store.

My carrier is Google Fi.

My system:

Device Name: moto x4
Sim status: Google Fi
Software Variant: google_fi
Software Channel: retus
Android version: 9
Build number: PPW29.69-39-6
Contacts Version 3.8.2.268513760 @2019 Google Inc.
A lot of open source licenses

In the Terms of service, it says you may need a google account to use some services. My phone contacts synch with my Google Gmail account and I see them at: https://contacts.google.com/

More on Gmail and Android Contacts integration at:
https://support.google.com/contacts/answer/2753077

Maybe there is some coordination needed between the apps and the carrier to make this requested functionality available.  Maybe the automobile options might need tweaking.  Contacts are integrated with the Phone app, the Messages app, DUOHangouts, the  Gmail app and other apps can use the functionality through APIs. We note that care must be taken not to interfere with any existing functionality.  Other apps or services might need to changed to fulfil this request. Other apps or services might want to incorporate similar types of features.  If the phone makers are given the default functionality, it will be better for all of us.  Please adjust, expand and forward this request as necessary.

Please implement and integrate the following in the Google Contact and Phone apps:

1. Create the capability to set a default ringtone for everybody in your contacts

2. Set a different default ringtone (system) for any number not in contacts.

3. Optionally and in addition, set a default ringtone for calls already identified as spam.

4. Create another capability to set another custom ringtone for people in a group (or with a label)

5. Keep the option to create a custom ringtone for any individual, no matter what group they are in. 

6. Option 5 overrides option 4.  Option 4 overrides option 1. 

Benefits:

Identify calls from people you know.

The primary reason I am pushing for this is I just had a situation where one of my neighbors called me.  She was scared, there was someone at her door that would not go away.  I ignored her call, because, most of the calls I get are spam. People rely on other people. Please give us the capability to set an auditory clue as to the caller, not just a visual one.  It is wonderful that Google has implemented phone calling spam detection techniques.  This request makes that implementation better. 

Having the ability to have a separate ringtone for people in you contacts and another for non-contacts makes reacting to spam calls a lot better.  Think of moms with babies, people walking around without their phone on them, because they are home.  People in the shower etc.  Think about the blind and visually impaired.

Where are we now:

My research shows no easy way to do this.  You can set a ringtone for a contact, but, not a group.

https://www.whistleout.com/CellPhones/Guides/how-to-custom-ringtones-for-iPhone-Android-Windows-Phone

https://android.stackexchange.com/questions/160816/how-to-set-one-ringtone-for-contacts-and-another-for-non-contacts

If there is a macro / scripting / automated solution, can someone please tell me about it? The above link has a suggestion; however, it is tied to an event and a single contact. It is really inadequate.

It is not a significant task to create these requested features. The core functionality already exists.

Some additional notes on implementation:

Add to Settings

Enable Advanced Custom Ringtones
Default Ringtone for Contacts
Default Ringtone for non Contacts

Some additional logic

Check and warn if (Enable Advanced Custom Ringtones and [a member of multiple groups]

Check and warn if trying to delete a ringtone that is used.

If ringtone cannot be found, use a system default ringtone.

My Moto x4 with stock contacts has the label feature.  Option 4 might use the ability to set a custom ringtone for that label. Can a contact have multiple labels?  In some instances, like sending emails using the label, this would be desirable. It would not be desirable to have a contact have multiple ringtones.  If creating a label for a group of contacts, if one of the members of the group already has one or more labels, pop a message that says, this contact is in the group (label) and you are over riding the label ringtone.  Would it be desirable to use the default as the existing label ringtone or use the new label ringtone? Other details on this would need to be defined.  For example: would it be desirable to identify and keep any individual contact ringtone already set, if trying to set a label ringtone.

Suggestions on Ringtones – what you hear

example chirpy for contacts
plodding for non contacts

Use different instruments, pitches, very different tones for different groups.  This request is independent of the actual ringtone used; however, it might be desirable to provide defaults that are very easy to remember and identify.


Would it be possible to have different types of vibrations?

Not implementing this type of feature will from now on be referred to as the Boeing 737 plan.

Dear Google product experts, please refrain from telling me your suggestions, unless you have a concrete way of accomplishing these requests.  This feature may require some implementation by the phone manufacturer, but most of the core functionality I am requesting can be encapsulated in the Google Contacts app.

One of the core reasons I use Google Fi, is that you get a pure Google Android experience. If you know of another place to submit this request, please advise.  It has been suggested from the help and feedback on my phones Contact app and sent to apps-help@google.com and requested through Google Fi support.  if you like this idea, please do the same!

Please also see:

https://developer.android.com/guide/topics/providers/content-provider-basics.html
https://developer.android.com/guide/topics/providers/contacts-provider

I have not locate the source for the Google Contacts app. Is the contact app open source?

A Letsencrypt example

An example based on an apache server running ubuntu 18.04.

For Name-based virtual hosting

With name-based virtual hosting, the server relies on the client to report the hostname as part of the HTTP headers. Using this technique, many different hosts can share the same IP address.

Configure your DNS server to map each hostname to the correct IP address and then configure the Apache HTTP Server to recognize the different hostnames.

One way to implement SSL (TLS) certificates for named based virtual hosting is to use what is sometimes called multi-domain SAN (subject-alternative-name.).

example SAN site
https://www.digicert.com/subject-alternative-name.htm

you request multiple domains for the same certificate
example

certbot -d site1 -d site2.com -d site3.com  -d site4.com  -d site5.com -d site6.com  …..

The following example show a way to request one certificate per domain ‘set’ which should make revoking and tracking certificates easier.

An example of Named Base Virtual Hosting domains

Our example is based on DNS entries where there are 2 DNS records for each “domain”

The www version and the non www version

Example of a ‘set’ of www and non www domains

pbacloudb2019.com
http://www.pbacloudb2019.com

An example of Domains ‘sets’ pointing to the same IP address

a)
pbacloudb2019.com
http://www.pbacloudb2019.com

b)
pbacloudb2019-doctortest.com
http://www.pbacloudb2019-doctortest.com

c)
pbaclouda2019.com
http://www.pbaclouda2019.com

d)
pbaclouda2019-doctortest.com
http://www.pbaclouda2019-doctortest.com

? What how many domains have you created SSL certificates for and pointed towards the sanem IP address?

Planning for the potential for up to 600 sites pointing to the same IP.
The current setup also supports A records pointing to same ip for both the www version and the non www version

The Following examples are for folks with Shell access and root or sudo access and are for apache 2.4 on Ubuntu 18.4

 

Letsencrypt

Install certbot on you server and then

1) create an account

Example

certbot register -m youj@protonmail.com,another@domain.org –agree-tos

Notes on create an account

manage your account with Let’s Encrypt:
register        Create a Let’s Encrypt ACME account
unregister      Deactivate a Let’s Encrypt ACME account
update_account  Update a Let’s Encrypt ACME account
–agree-tos       Agree to the ACME server’s Subscriber Agreement
-m EMAIL         Email address for important account notifications

Letsencrypt id

Our CPS and Subscriber Agreement indicate that the Subscriber is whoever holds the private key for a certificate. For hosting providers, that’s the provider, not the provider’s customer. If you’re writing software that people deploy themselves, that’s whoever is deploying the software.

– Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
– We were unable to subscribe you the EFF mailing list because your
e-mail address appears to be invalid. You can try again later by
visiting https://act.eff.org.

2) Backup letsencrypt

Once you create an account, set something up makes a secure  backup of everything under

/etc/letsencrypt every time you issue the certbot or other certificate managing command

3) Create One Virtual Host config file per certificate (port 80).

Create a Virtual Hosts file for a ‘set’ of www and non www domains

  1. A) in directory /etc/apache2/sites-enabled/

Create a ‘vhost file for each ‘set’

(take the default file in the directory and rename it for whatever naming convention for you certificates you want.  I am using the non www version of the domain for the name of the conf file (when I request the certificate, the first domain I pass in will be the non www version.  The certificate file and the virtual hosts file should then share something in common.

Virtual Host file

etc/apache2/sites-enabled/pbacloudb2019.com.conf

Certificate file
Certificate Path: /etc/letsencrypt/live/pbacloudb2019.com/fullchain.pem

Examples file names

etc/apache2/sites-enabled/pbaclouda2019.com.conf
etc/apache2/sites-enabled/pbaclouda2019-doctortest.com.conf
etc/apache2/sites-enabled/pbacloudwb2019.com.conf
etc/apache2/sites-enabled/pbacloudb2019-doctortest.com.com.conf

important entries different from the default

add
ServerName pbaclouda2019.com
ServerAlias http://www.pbaclouda2019.com

I shutdown the Apache server when I place the Virtual Hosts File in the etc/apache2/sites-enabled directory.  Then I start up apache so that it will recognize the new virtual Hosts.  You keep the apache server running while you are requesting certificates. 

4) Request Certificates, one per virtual host file

a)  certbot will edit apache configuration so back it up

I just backup the *.conf files from /etc/apache/

b) stop apache (or webserver)  server

c) try a –dry-run

This entry checks to see if something are in order before requesting the certificate.

certbot certonly –apache –dry-run -d pbaclouda2019.com -d http://www.pbaclouda2019.com

d) request the certificate

certbot –apache -d pbaclouda2019.com -d http://www.pbaclouda2019.com

5) first time considerations

It will ask you

: Redirect – Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you’re confident your site works on HTTPS. You can undo this
change by editing your web server’s configuration.

6) Example files after requesting  a certificate

You should see the following in your apache virtual host file

  1. A) Virtual Host file like etc/apache2/sites-enabled/pbacloudb2019.com.conf

In our example should have the following entries

ServerName pbaclouda2019.com
Include /etc/letsencrypt/options-ssl-apache.conf
ServerAlias pbaclouda2019.com
ServerAlias http://www.pbaclouda2019.com

SSLCertificateFile /etc/letsencrypt/live/pbaclouda2019.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/pbaclouda2019.com/privkey.pem

  1. b) issue the command: certbot certificates

for Certificate pbaclouda2019.com you should see

ServerName pbaclouda2019.com
Include /etc/letsencrypt/options-ssl-apache.conf
ServerAlias pbaclouda2019.com
ServerAlias http://www.pbaclouda2019.com
SSLCertificateFile /etc/letsencrypt/live/pbaclouda2019.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/pbaclouda2019.com/privkey.pem

7) Getting help in the forums

https://community.letsencrypt.org/

Notes

SNI is a web server feature that allows multiple certificates per ip address

http-01 Challenge is an easy file based way cetbot uses to identify and authenticate you server

If the system can write files to the server you are managing for the domain you are requesting, things are good to go.  Note, there is a thing called ‘rate limiting’.  You can only request 100 certificates per day

Helpful Links and Commands

dig is a linux command line utility that shows DNS information

dig –help

Show the A records for a domain
dig http://www.pbacloudb2019-doctortest.com +short

A site with a lot of options for checking SSL and DAN information

https://check-your-website.server-daten.de

show my certificates  certbot certificates

The Maximum sites per cert is 100 (less is better).

The Number of URLs has to be Less than Maximum  – urls_per_cert (100 max , can be as low as 25)

Is there a maximum Number of Certs per_ip address?

Do you know of any SNI constraints and requirements?

Theoretical max
certs_per_ip  X urls_per_cert

Upgrading a Webserver and application

First, we updated the application to better support accessibility. https://www.w3.org/WAI/fundamentals/accessibility-intro/

Upgrading the stack from

Ubuntu 12.04.5 LTS
PHP 5.3.10
mysql Ver 14.14 Distrib 5.5.54
Codeigniter CI_VERSION’, ‘2.1.2’
jQuery 1.8 + UI + Datatables + tinymce

To

Ubuntu 18.04 LTS
Apache/2.4.29 (Ubuntu)
mysql Ver 15.1 Distrib 10.1.38-MariaDB,
Php 7.2
Codeigniter CI_VERSION = ‘3.1.10’;
jQuery 3.4.0 +UI + Datatables + ?
With name-based virtual hosting

With name-based virtual hosting, the server relies on the client to report the hostname as part of the HTTP headers. Using this technique, many different hosts can share the same IP address.

Name-based virtual hosting is usually simpler, since you need only configure your DNS server to map each hostname to the correct IP address and then configure the Apache HTTP Server to recognize the different hostnames. Name-based virtual hosting also eases the demand for scarce IP addresses. Therefore you should use name-based virtual hosting unless there is a specific reason to choose IP-based virtual hosting. Some reasons why you might consider using IP-based virtual hosting:

Next thing to do is enable SSL for a ‘LOT’ of clients.

Things I scream about.

1) I was unable to upgrade the existing Ubuntu 12 stack.
2) Under 12, I got rewrites of form urls. Not so in the new stack. Took me a while to figure that one out.
3) Our Hosting vendor does not automatically install phpMyAdmin or a server management tool like Control Panel or Webmin
4) The CI based applications I inherited does some really funky stuff to serve css, js, and image files from a non accessible location
5) .htaccess and Apache
6) There are a lot of bots scanning sites looking for vulnerabilities.

Q. What is the most used language in programming? A. Profanity

3670088415_2f7d1080bf_o

Beware the Trolls

They will try to make:
  • Nonsense into something
  • Something into nothing
  • Nothing into something

A troll is someone who deliberately tries to disrupt, attack, offend or generally cause trouble by posting certain comments, photos, videos, GIFs or some other form of online content.

I block trolls for the same reason I scrape dog shit off my shoes: not becuse I’m “afraid” of dog shit, but because dog shit has not inherent value, creates a huge mess, and makes everything smell like dog shit.

Trolls: to clarify, in this analogy, you are dog shit.

 

For your consideration: Trolls are posting that the song: “Baby, It’s Cold Outside” is about rape. https://www.rollingstone.com/culture/culture-news/baby-its-cold-outside-controversy-holiday-song-history-768183/

What will be next?

There is no antidote for idiocy or extremism.  

Man’s most valuable trait is a judicious sense of what not to believe. -Euripides

Patience has its limits. Take it too far, and it’s cowardice. -George Jackson

Love all, trust a few, do wrong to none. -Shakespeare

Political language–and with variations this is true of all political parties, from Conservatives to Anarchists–is designed to make lies sound truthful and murder respectable, and to give an appearance of solidity to pure wind. -George Orwell

If words are to enter men’s minds and bear fruit, they must be the right words shaped cunningly to pass men’s defenses and explode silently and effectually within their minds. -J.B. Phillips

The illiterate of the 21st century will not be those who cannot read and write, but those who cannot learn, unlearn, and relearn. -Alvin Toffler

An education isn’t how much you have committed to memory, or even how much you know. It’s being able to differentiate between what you know and what you don’t. -Anatole France

It is difficult to get a man to understand something when his salary depends upon his not understanding it. -Upton Sinclair


Propaganda

What occurs to me in reading their book is that the new American approach to social control is so much more sophisticated and pervasive that it really deserves a new name. It isn’t just propaganda any more, it’s ‘prop-agenda’. It’s not so much the control of what we think, but the control of what we think about. When our governments want to sell us a course of action, they do it by making sure it’s the only thing on the agenda, the only thing everyone’s talking about. And they pre-load the ensuing discussion with highly selected images, devious and prejudicial language, dubious linkages, weak or false ‘intelligence’ and selected ‘leaks’.
Brian Eno on Sheldon Rampton and John Stauber’s “Weapons of Mass Deception”

Getting Started with WordPress

If you can use a word processor, know what styles are and have put images and charts and tables and such in a document, you can probably set up a passable WordPress site.

Go here https://wordpress.com/free, sign up for a free site and create one.

There are thousands of themes and and widgets.  To start, pick a free theme, then create a page, then create a post.  Add some graphics to your pages and posts, and add some widgets to sidebars.  Don’t go crazy searching for a theme.  You can change your theme for a simple site without much trouble.  Look at the footer, get used to the Visual Editor and the Dashboard.  Fiddle with some settings and Bob’s your uncle.   Of course, that is for getting started.  It is the equivalent of creating a vinegar and baking soda rocket as the first step to NASA, but we all have to start somewhere.  You will have a WordPress site, you will know something about what it takes to create and maintain and add content to a site.  Go for it.

Some Beginner Tips:

https://www.wpexplorer.com/easy-tips-wordpress-beginners
https://www.copyblogger.com/new-to-wordpress

Some things are not applicable to free WordPress Sites.  You can’t upload video or audio files to a free wordpress site or add small bits of Code to Add Features.  Read on to the “One thing you can’t do...” section below for how to link to a video or audio file.

WordPress is due for a major new release in 2018, WordPress 5.0.  The tentative release date is set for November 19. One of the big changes will be “Gutenberg”,  the new editor.  It is a major overhaul of the current visual editor.  For more see:


Before venturing into the world of publishing on the web, I would read this.  Multiple email accounts can be useful.  https://garyjohnson53.wordpress.com/2017/01/26/a-smart-thing-to-do-for-with-your-email


One thing you can’t do with a free WordPress site is create an embedded video.  You can use a picture as a link to a YouTube video, which in some cases works better and is free as well.  Example, click on the picture below (View a video …) to go to a Youtube video.

gimbel
View a video about the BEST SMARTPHONE GIMBAL of 2017.

Watch the Video

It does not hurt to show another link to your content (see Watch the Video above).  As of September 28, 2018, to create a picture as link:

  1. Insert the picture onto the page.
  2. Click on the image, then click on the “create link” or “insert or edit” icon in the editor toolbar.
  3. Put the url you want to link in the popup.

Another issue with free WordPress sites is that you cannot install plugins. Plugins are extensions to WordPress. For simple sites this is not an issue, except for setting up contact forms. You can set up a simple contact form with the: “add” button “add” contact form: https://en.support.wordpress.com/forms/contact-form/, however, it does not offer advanced features like the google “Are You Human” options etc that are available with some plugins.  The alternative to setting up contact forms with anti spam features is to provide an email address on the site.  Be prepared to get hit with some spam. See https://codex.wordpress.org/Protection_From_Harvesters

This example will defeat most harvesting software. It is a simple image, I write the text and format it in word. I used the snipping tool to then make an image of it.
contactmeAnother possibility, take a picture of your business card.

gmgjBusinesscard

You can have a perfectly respectable website — and for free.    Unless your name / business is a digitally distinct name, picking a website url can be a tedious process.  I don’t mind saying my website is https://garyjohnson53.wordpress.com.  When you sign up for a free plan, your user id is used as the first part of your default website, with wordpress.com as the second part.  If in the future, you want a custom domain name, it is not difficult to set up, but it does cost money.

Are you ready to get started?  Go here https://wordpress.com/free, sign up for a free site and create one today!


Gutenberg on WordPress.com

From https://en.forums.wordpress.com/topic/information-on-gutenberg-implementation:

We are currently testing the implementation of Gutenberg on WordPress.com and working out how and when it will be enabled. Once we start rolling it out for use, there will be posts and support pages explaining how everything is going to work.

But for now I can tell you no one is going be stumbling into Gutenberg by accident, and there’s not going to be an instant switch the moment it launches in Core.

Initially Gutenberg on WordPress.com will be opt-in only, and the opt-in option will not be available for someone until we’ve added support for blocks to the theme they are using.

The classic editor should also still be available, and it should be possible to edit a Gutenberg post in the classic editor, just like it currently is in Core, and will be via the Classic Editor plugin once Gutenberg becomes the default there.

Eventually Gutenberg on WordPress.com will become opt-out rather than opt-in, but details around that are still being discussed internally.

If you’ve been keeping up with Gutenberg, as it sounds you have, you’ll know Automattic is heavily invested in it, and it’s also very important for us that it’s a success on WordPress.com, so we’re not rushing things and will make very sure the transition for WordPress.com users are as smooth as possible.

As for your questions above regarding how Gutenberg will work in WordPress 5.0, you can ask the Core team directly at https://wordpress.org/support/plugin/gutenberg.

You can also see the detailed documentation, which includes a FAQ,  at https://wordpress.org/gutenberg


About the Gary GMGJ Johnson, the author of this post:

https://cookdotcom.com/about-me/
https://www.garyjohnsoninfo.info/GJPortfolio.html

You’re reading this on my free WordPress site.  Here is a link that I use to demonstrate what I do when I develop a more advanced site: https://cookdotcom.com.