tinycm annotate tinycm @ rev 102

new way to handle admin user (faster)
author Christophe Lincoln <pankso@slitaz.org>
date Mon Feb 20 17:03:32 2017 +0100 (2017-02-20)
parents 95673a3de4e4
children ddf5125a4b03
rev   line source
pankso@67 1 #!/bin/sh
pankso@67 2 #
pankso@67 3 # TinyCM Command line tool. Dont use libtaz since TinyCM can run on any
pankso@67 4 # Linux/BSD distribution providing a web server with CGI SHell support
pankso@67 5 # such as LightTPD.
pankso@67 6 #
pankso@83 7 # Copyright (C) 2014-2017 SliTaz GNU/Linux - BSD License
pankso@67 8 #
pankso@67 9
pankso@67 10 list="tinycm.list"
pankso@67 11 path="${2%/}"
pankso@67 12 hgurl="http://hg.slitaz.org/tinycm"
pankso@67 13 dlurl="$hgurl/archive/tip.tar.bz2"
pankso@67 14
pankso@67 15 #
pankso@67 16 # Functions
pankso@67 17 #
pankso@67 18
pankso@67 19 boldify() {
pankso@67 20 echo -e "\\033[1m$@\\033[0m"
pankso@67 21 }
pankso@67 22
pankso@67 23 error() {
pankso@67 24 echo -e "\\033[1;31m$@\\033[0;39m"
pankso@67 25 }
pankso@67 26
pankso@67 27 usage() {
pankso@67 28 cat << EOT
pankso@67 29
pankso@67 30 $(boldify "Usage:") $(basename $0) [command] [path|list]
pankso@67 31
pankso@67 32 $(boldify "Commands:")
pankso@67 33 inst Install TinyCM and set permissions
paul@71 34 up Update one or a list of TinyCM installations
pankso@67 35
pankso@67 36 EOT
pankso@67 37 }
pankso@67 38
pankso@67 39 check_source() {
pankso@67 40 if [ ! -f "Makefile" ] || [ ! -f "index.cgi" ]; then
pankso@67 41 error "No source found" && exit 1
pankso@67 42 fi
pankso@67 43 }
pankso@67 44
pankso@67 45 check_path() {
pankso@67 46 if [ ! "$path" ]; then
pankso@67 47 error "Missing path argument" && exit 1
pankso@67 48 fi
pankso@67 49 }
pankso@67 50
pankso@67 51 check_tiny() {
pankso@67 52 if [ ! -f "$path/index.cgi" ] || [ ! -d "$path/lib" ]; then
pankso@67 53 error "Missing TinyCM in: $path"
pankso@67 54 continue
pankso@67 55 fi
pankso@67 56 }
pankso@67 57
pankso@99 58 # Rebuilt an up-to-date config file, plugins may need new variables
pankso@99 59 update_config() {
pankso@99 60 echo "Updating config file: confi.cgi"
pankso@99 61 . ${path}/config.cgi
pankso@102 62 # Def value for new variables
pankso@99 63 [ ! "$WALL_MODE" ] && WALL_MODE="public"
pankso@99 64 [ ! "$WALL_MESSAGES_LENGTH" ] && WALL_MESSAGES_LENGTH="240"
pankso@102 65 # from 1.4
pankso@102 66 [ ! "$ADMIN_USERS" ] && ADMIN_USERS=$(dirname "$AUTH_FILE")/admin
pankso@99 67 cat > ${path}/config.cgi << EOT
pankso@99 68 #
pankso@99 69 # TinyCM configuration
pankso@99 70 #
pankso@99 71
pankso@99 72 # Administrator email.
pankso@99 73 ADMIN_MAIL="$ADMIN_MAIL"
pankso@99 74
pankso@99 75 # Auth file for user
pankso@99 76 AUTH_FILE="$AUTH_FILE"
pankso@99 77
pankso@102 78 # Admin users file list
pankso@102 79 ADMIN_USERS="/var/lib/slitaz/auth/admin"
pankso@102 80
pankso@99 81 # People config files
pankso@99 82 PEOPLE="$PEOPLE"
pankso@99 83
pankso@99 84 # CM documents languages.
pankso@99 85 LANGUAGES="$LANGUAGES"
pankso@99 86
pankso@99 87 # Online registration for user
pankso@99 88 ONLINE_SIGNUP="$ONLINE_SIGNUP"
pankso@99 89
pankso@99 90 # Use Mercurial repo for content and configure user name
pankso@99 91 HG="$HG"
pankso@99 92
pankso@99 93 #
pankso@99 94 # Plugin configuration: community.cgi
pankso@99 95 #
pankso@99 96
pankso@99 97 # Wall mode: public/private
pankso@99 98 WALL_MODE="$WALL_MODE"
pankso@99 99
pankso@99 100 # Max length for messages on the Wall
pankso@99 101 WALL_MESSAGES_LENGTH="$WALL_MESSAGES_LENGTH"
pankso@99 102
pankso@99 103 # Twitter user name and/or Facebook page URL name
pankso@99 104 TWITTER_USER="$TWITTER_USER"
pankso@99 105 FACEBOOK_PAGE="$FACEBOOK_PAGE"
pankso@99 106 EOT
pankso@99 107 unset TWITTER_USER FACEBOOK_PAGE
pankso@99 108 }
pankso@99 109
pankso@67 110 #
pankso@67 111 # Commands
pankso@67 112 #
pankso@67 113
pankso@67 114 case "$1" in
pankso@67 115 inst)
pankso@67 116 check_source
pankso@67 117 check_path
pankso@67 118 echo ""
pankso@67 119 boldify "Installing TinyCM..."
pankso@67 120 echo "Path:"; echo "$path"
pankso@67 121 mkdir -p $path
pankso@67 122 for file in index.cgi style.css images lib plugins
pankso@67 123 do
pankso@83 124 echo "* Installing: $file"
pankso@67 125 cp -a $file $path
pankso@67 126 done
pankso@67 127 if [ $(id) == 0 ]; then
pankso@67 128 echo root
pankso@67 129 else
pankso@67 130 echo user
pankso@67 131 fi
pankso@67 132 echo "" ;;
pankso@67 133 up)
pankso@67 134 check_source
pankso@67 135 if [ ! "$path" ] && [ ! -f "$list" ]; then
pankso@67 136 error "Missing path argument or paths list: $list"
pankso@67 137 exit 1
pankso@67 138 fi
pankso@67 139 echo ""
pankso@99 140 boldify "Updating TinyCM install(s)..."
pankso@99 141 echo ""
pankso@67 142
pankso@75 143 # File liste of args
pankso@75 144 if [ -f "$path" ]; then
pankso@75 145 paths="$(cat ${list})"
pankso@75 146 else
pankso@67 147 paths="$path"
pankso@67 148 fi
pankso@67 149
pankso@67 150 for path in ${paths}
pankso@67 151 do
pankso@67 152 check_tiny
pankso@99 153 echo "Updating TinyCM: $path"
pankso@67 154 cp -a index.cgi $path
pankso@67 155 cp -a lib/functions.js $path/lib
pankso@67 156 cp -a lib/jseditor.html $path/lib
pankso@99 157 echo "Updating plugins..."
pankso@67 158 for plug in $(ls plugins)
pankso@67 159 do
pankso@67 160 if [ -d "$path/plugins/$plug" ]; then
pankso@77 161 echo "* Updating plugin: $plug"
pankso@67 162 cp -a plugins/$plug $path/plugins
pankso@67 163 fi
pankso@67 164 done
pankso@99 165 update_config
pankso@67 166 done && echo "" ;;
pankso@67 167 *)
pankso@67 168 usage ;;
pankso@67 169 esac
pankso@67 170
pankso@67 171 exit 0