From: Fred T. Hamster Date: Mon, 15 Jan 2018 16:24:22 +0000 (-0500) Subject: Merge branch 'dev' of feistymeow.org:feisty_meow into dev X-Git-Tag: 2.140.109^2~14^2~1^2~1 X-Git-Url: https://feistymeow.org/gitweb/?a=commitdiff_plain;h=79052f57a253bb9c4af29708d656741f6eb7affc;hp=29ce64738a09c26568871574d83ba3da1525d9d8;p=feisty_meow.git Merge branch 'dev' of feistymeow.org:feisty_meow into dev --- diff --git a/production/sites/cakelampvm.com/docs/manual/cakelampvm_guide_v002.html b/production/sites/cakelampvm.com/docs/manual/cakelampvm_guide_v002.html index 33de2282..81ba2ece 100644 --- a/production/sites/cakelampvm.com/docs/manual/cakelampvm_guide_v002.html +++ b/production/sites/cakelampvm.com/docs/manual/cakelampvm_guide_v002.html @@ -11,7 +11,7 @@ Koeritz
feisty meow® concerns ltd.

Vintage: cakelampvm v002    - Updated: 2017-12-19 (rev. h)

+ Updated: 2018-1-7 (rev. i)

The cakelampvm project provides a Virtualbox VM that acts as an "internet in a bottle", serving up your web sites securely and only to your local host.  The virtual machine provides DNS services (

passwd
The 'passwd' command will ask for your current password, and then for a new password plus a verification of that new password.
+ You will probably want to change your samba password as well, which is + used when accessing the virtual machine over the network.  This is + a different, but very similar, command on Linux:
+
smbpasswd
 
  • Change your git configuration for the user and email address.  This is how we've configured it so far:
    @@ -279,7 +283,7 @@ href="http://mapsdemo.cakelampvm.com">http://mapsdemo.cakelampvm.com

    Setting up DNS on Windows

    The ipconfig tool will provide helpful information about your current networking and DNS configuration:

    -
    > ipconfig /all
    +
    > ipconfig /all

    The DNS configuration on Windows is somewhat byzantine.  The pipe characters ('|') below are used to separate the menus or tabs or dialogs to traverse.  Follow this path to get to the DNS config:

    @@ -297,7 +301,7 @@ href="http://mapsdemo.cakelampvm.com">http://mapsdemo.cakelampvm.com settings on your Host PC are right, then you may need to flush your DNS cache, and that might be sufficient to start getting the right IP address.  On Windows, the command for flushing DNS is:

    -
    > ipconfig /flushdns
    +
    > ipconfig /flushdns

    and on Linux the flush DNS command can be many different things, but try these two most common options:

    # restarts the client side DNS cache.
    sudo service dns-clean restart
    diff --git a/scripts/core/common.alias b/scripts/core/common.alias index 3c4a3fb2..9eda7788 100644 --- a/scripts/core/common.alias +++ b/scripts/core/common.alias @@ -108,6 +108,7 @@ define_yeti_alias add_domain="sudo bash \$FEISTY_MEOW_SCRIPTS/system/add_domain. define_yeti_alias remove_domain="sudo bash \$FEISTY_MEOW_SCRIPTS/system/remove_domain.sh" define_yeti_alias add_apache_site="sudo bash \$FEISTY_MEOW_SCRIPTS/system/add_apache_site.sh" define_yeti_alias remove_apache_site="sudo bash \$FEISTY_MEOW_SCRIPTS/system/remove_apache_site.sh" +define_yeti_alias add_swap_mount="sudo bash \$FEISTY_MEOW_SCRIPTS/system/add_swap_mount.sh" #hmmm: some magma intrusions from the fred customizations... define_yeti_alias revamp_cakelampvm="sudo bash \"$FEISTY_MEOW_SCRIPTS/site_avenger/revamp_cakelampvm.sh\"" diff --git a/scripts/core/functions.sh b/scripts/core/functions.sh index c60c9431..dc01d786 100644 --- a/scripts/core/functions.sh +++ b/scripts/core/functions.sh @@ -144,7 +144,7 @@ if [ -z "$skip_all" ]; then function test_or_die() { if [ $? -ne 0 ]; then - echo -e "\n\naction failed: $*\n\nExiting script..." + echo -e "\n\naction failed: $*\n\n*** Exiting script..." error_sound exit 1 fi @@ -154,7 +154,7 @@ if [ -z "$skip_all" ]; then function test_or_continue() { if [ $? -ne 0 ]; then - echo -e "\n\nerror occurred: $*\n\nContinuing script..." + echo -e "\n\nerror occurred: $*\n\n=> Continuing script..." error_sound fi } diff --git a/scripts/rev_control/git_scruncher.sh b/scripts/rev_control/git_scruncher.sh new file mode 100644 index 00000000..76ca12de --- /dev/null +++ b/scripts/rev_control/git_scruncher.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# check for whether we see a .git folder. +if [ ! -d ".git" ]; then + echo This script needs to run in the directory where a git repository lives, + echo but we do not see a .git directory here. + exit 1 +fi + +# makes git checkouts not be as intensive on the server. +git config --global pack.windowMemory "100m" +git config --global pack.SizeLimit "100m" +git config --global pack.threads "1" + + diff --git a/scripts/rev_control/version_control.sh b/scripts/rev_control/version_control.sh index d74fe1bd..0c8cec27 100644 --- a/scripts/rev_control/version_control.sh +++ b/scripts/rev_control/version_control.sh @@ -11,6 +11,23 @@ source "$FEISTY_MEOW_SCRIPTS/tty/terminal_titler.sh" ############## +# check git version to see if we can use autostash. +# this appears to be an ubuntu issue, where xenial did not provide it even though the +# feature appeared in git 2.6 and xenial claims it has git version 2.7.4. eventually, +# this version test can go away. +gitvertest="$(git version | sed -e 's/git version [0-9]\.//' | sed -e 's/\.[0-9][0-9]*$//' )" +if (( $gitvertest >= 11 )); then + # auto-stash is not available until 2.6 for git, but ubuntu is misreporting or using a + # differing version number somehow. we are sure autostash was missing on ubuntu xenial + # with git 2.7.4 and it's definitely present in zesty with git at 2.11. +# PULL_ADDITION='--rebase --autostash' +#although initially attractive, above set of flags seems to lose history we don't want to +#lose. +PULL_ADDITION= +fi + +############## + # the maximum depth that the recursive functions will try to go below the starting directory. export MAX_DEPTH=5 @@ -379,6 +396,8 @@ function do_careful_git_update() show_branch_conditionally "$this_branch" # this code is now doing what i have to do when i repair the repo. and it seems to be good so far. + # note that we allow the local branch to be merged with its remote counterpart; otherwise we would + # miss changes that happened elsewhere which should be seen in our local copy. local branch_list=$(all_branch_names) local bran for bran in $branch_list; do @@ -392,7 +411,9 @@ function do_careful_git_update() remote_branch_info=$(git ls-remote --heads origin $bran 2>/dev/null) if [ ! -z "$remote_branch_info" ]; then # we are pretty sure the remote branch does exist. - git pull --no-ff origin "$bran" | $TO_SPLITTER + git pull $PULL_ADDITION origin "$bran" | $TO_SPLITTER +# we may want to choose to do fast forward, to avoid crazy multiple merge histories +# without any changes in them. --no-ff promote_pipe_return 0 fi test_or_die "git pull of remote branch: $bran" @@ -404,7 +425,10 @@ function do_careful_git_update() # now pull down any changes in our own origin in the repo, to stay in synch # with any changes from others. - git pull --no-ff --all | $TO_SPLITTER + git pull $PULL_ADDITION --all | $TO_SPLITTER +#is the above really important when we did this branch already in the loop? +#it does an --all, but is that effective or different? should we be doing that in above loop? +# --no-ff promote_pipe_return 0 test_or_die "git pulling all upstream" @@ -443,9 +467,10 @@ function do_update() elif [ -d ".git" ]; then if test_writeable ".git"; then $blatt - git pull --no-ff 2>&1 | grep -v "X11 forwarding request failed" | $TO_SPLITTER + git pull $PULL_ADDITION 2>&1 | grep -v "X11 forwarding request failed" | $TO_SPLITTER +#ordinary pulls should be allowed to do fast forward: --no-ff promote_pipe_return 0 - test_or_die "git pull of origin without fast forwards" + test_or_die "git pull of origin" fi else # this is not an error necessarily; we'll just pretend they planned this. diff --git a/scripts/site_avenger/powerup.sh b/scripts/site_avenger/powerup.sh index ff2a9944..3709bc30 100644 --- a/scripts/site_avenger/powerup.sh +++ b/scripts/site_avenger/powerup.sh @@ -103,20 +103,5 @@ create_site_links "$site_store_path" "$theme_name" sep -# go with the default user running the script. -user_name=$USER -if [ ! -z "$user_name" -a "$user_name" != "root" ]; then - echo "Chowning the apps folder to be owned by: $user_name" -#hmmm: have to hope for now for standard group named after user - chown -R "$user_name:$user_name" "$BASE_APPLICATION_PATH" - test_or_die "Chowning $BASE_APPLICATION_PATH to be owned by $user_name" - -else -echo "user name failed checks for chowning, was '$user_name'" -fi - -sep - - echo "Finished powering up the site in '${app_dirname}'." diff --git a/scripts/site_avenger/revamp_cakelampvm.sh b/scripts/site_avenger/revamp_cakelampvm.sh index 2717b3a6..180574eb 100644 --- a/scripts/site_avenger/revamp_cakelampvm.sh +++ b/scripts/site_avenger/revamp_cakelampvm.sh @@ -270,6 +270,71 @@ test_or_die "enabling the new cakelampvm environment config for apache" echo Successfully configured the apache2 environment variables needed for cakelampvm. +############## + +# add in a swap mount if not already configured. + +sep + +echo "Checking existing swap partition configuration. +" + +# check for existing swap. +free | grep -q "Swap:[[:blank:]]*[1-9][0-9]" +if [ $? -ne 0 ]; then + # no swap in current session, so add it. + echo "Enabling ramdisk swap partition... +" + add_swap_mount + echo " +Enabled ramdisk swap partition for current boot session." +fi + +# the above just gives this session a swap partition, but we want to have +# the vm boot with one also. + +# check if there is already swap mentioned in the root crontab. we will get root's +# crontab below since this script has to run as sudo. +crontab -l | grep -iq add_swap_mount +if [ $? -ne 0 ]; then + # no existing swap setup in crontab, so add it. + echo " +Adding a boot-time ramdisk swap partition... +" + # need to do it carefully, since sed won't add lines to a null file. we thus + # create a temporary file to do our work in and ignore sed as a tool for this. + tmpfile="$(mktemp junk.XXXXXX)" + crontab -l 2>/dev/null >"$tmpfile" + echo " +# need to explicitly set any variables we will use. +FEISTY_MEOW_APEX=${FEISTY_MEOW_APEX} +# add swap space to increase memory available. +@reboot bash $FEISTY_MEOW_APEX/scripts/system/add_swap_mount.sh +" >>"$tmpfile" + # now install our new version of the crontab. + crontab "$tmpfile" + rm "$tmpfile" + + echo " +Added boot-time ramdisk swap partition to crontab for root." +fi + +############## + +sep + +# repair the google config key for mapsdemo, which lives over in fred's account. +search_replace \ + "^[[:blank:]]*'key'[[:blank:]]*=>[[:blank:]]*'AIzaSyCd2kfOBf8tyd-_m2aM_ayMoAq8r_M1yUk'," \ + "\t'key' => 'AIzaSyCvKs62XudEWPZpA21rCGI1Dkh6UxSQzzQ'," \ + ~fred/apps/mapsdemo/avenger5/config/config_google.php + +if [ $? -ne 0 ]; then + echo Google config key for mapsdemo in fred account seems to already be patched. +else + echo Patched the google config key for mapsdemo app in fred account. +fi + ############## ############## @@ -285,6 +350,9 @@ echo " Thanks for revamping your cakelampvm. :-) + +You may want to update your current shell's feisty meow environment by typing: + reconfigure_feisty_meow " ############## diff --git a/scripts/site_avenger/shared_site_mgr.sh b/scripts/site_avenger/shared_site_mgr.sh index 3f73b3a8..94a4f792 100644 --- a/scripts/site_avenger/shared_site_mgr.sh +++ b/scripts/site_avenger/shared_site_mgr.sh @@ -351,4 +351,26 @@ function update_composer_repository() fi } +# fixes the ownership for a site avenger or php application. +# this almost certainly will require sudo capability, if there are any ownership problems +# that need to be resolved. +function fix_appdir_ownership() +{ + local appsdir="$1"; shift + local dir="$1"; shift + + local combo="$appsdir/$dir" + + # go with the default user running the script. + user_name="$USER" + if [ ! -z "$user_name" -a "$user_name" != "root" ]; then + echo "Chowning the apps folder to be owned by: $user_name" +#hmmm: have to hope for now for standard group named after user + chown -R "$user_name:$user_name" "$combo" + test_or_die "Chowning $combo to be owned by $user_name" + else + echo "user name failed checks for chowning, was found as '$user_name'" + fi +} + diff --git a/scripts/site_avenger/standup.sh b/scripts/site_avenger/standup.sh index 5adfcc63..cd2f6890 100644 --- a/scripts/site_avenger/standup.sh +++ b/scripts/site_avenger/standup.sh @@ -89,8 +89,12 @@ sep #echo default repo is "$DEFAULT_REPOSITORY_ROOT" powerup "$APPLICATION_NAME" "$REPO_NAME" "$THEME_NAME" -# pass the real user name who should own the files. -# "$(logname)" + +sep + +# hmmm: pass the real user name who should own the files? +# hmmm: "$(logname)" $USER works, but logname wasn't? +fix_appdir_ownership "$BASE_APPLICATION_PATH" "$APPLICATION_NAME" sep diff --git a/scripts/system/add_swap_mount.sh b/scripts/system/add_swap_mount.sh index 2577f44a..608ffc5c 100644 --- a/scripts/system/add_swap_mount.sh +++ b/scripts/system/add_swap_mount.sh @@ -2,22 +2,52 @@ # auto-find the scripts, since we might want to run this as sudo. export WORKDIR="$( \cd "$(\dirname "$0")" && /bin/pwd )" # obtain the script's working directory. -source "$WORKDIR/../core/launch_feisty_meow.sh" - -#hmmm: should be able to add a new swap drive if desired. - -#hmmm: why all the hard-coded paths below? - -/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=2048 +export FEISTY_MEOW_APEX="$( \cd "$WORKDIR/../.." && \pwd )" +source "$FEISTY_MEOW_APEX/scripts/core/launch_feisty_meow.sh" + +if [[ $EUID != 0 ]]; then + echo "This script must be run as root or sudo." + exit 1 +fi + +# optional parameters: the instance number of the swap file (best as a number), +# and the size of the swap file to add. +SWAP_INSTANCE="$1"; shift +SWAP_SIZE="$1"; shift + +if [ "$SWAP_INSTANCE" == "--help" ]; then + echo "\ +$(basename $0): +This script will add a swap partition for Linux that uses hard drive space for +swap memory. This increases the amount of available memory on RAM constrained +systems. It accepts two parameters: (1) the instance of the swap file, which +should be a small number not already used for a swap partition, and (2) the +size of the swap file in megabytes." + exit 0 +fi + +# if the swap instance variable is already set, then we'll use it. +# this allows multiple different swap partitions to be added. +if [ -z "$SWAP_INSTANCE" ]; then + SWAP_INSTANCE=1 +fi + +# allow the amount of swap space to be determined from outside the script. +# this is measured in megabytes. +if [ -z "$SWAP_SIZE" ]; then + SWAP_SIZE=2048 +fi + +/bin/dd if=/dev/zero of=/var/swap.${SWAP_INSTANCE} bs=1M count=${SWAP_SIZE} test_or_die "creating swap file" -/bin/chmod 600 /var/swap.1 +/bin/chmod 600 /var/swap.${SWAP_INSTANCE} test_or_die "setting swap file permissions" -/sbin/mkswap /var/swap.1 +/sbin/mkswap /var/swap.${SWAP_INSTANCE} test_or_die "formatting swap file as swap partition" -/sbin/swapon /var/swap.1 +/sbin/swapon /var/swap.${SWAP_INSTANCE} test_or_die "enabling new swap partition" free diff --git a/scripts/wine/wine_link_maker.sh b/scripts/wine/wine_link_maker.sh new file mode 100644 index 00000000..743964e3 --- /dev/null +++ b/scripts/wine/wine_link_maker.sh @@ -0,0 +1,13 @@ + + +# find all the directories at this height. +find . -mindepth 1 -maxdepth 1 -type d -exec echo {} ';' >$TMP/filestolink.txt +# make links with all lower case and all upper case versions of the names. +while read line; do + ln -s "$line" "$(echo $line | tr '[:upper:]' '[:lower:]')" + ln -s "$line" "$(echo $line | tr '[:lower:]' '[:upper:]')" +done < $TMP/filestolink.txt +# remove dead links. +\rm $(find . -type l ! -exec test -e {} \; -print) + +