mirror of
https://github.com/10h30/ols-docker-env.git
synced 2026-05-12 15:21:24 +09:00
help msg update
This commit is contained in:
@@ -63,11 +63,17 @@ Cloned project
|
|||||||
├── README.md
|
├── README.md
|
||||||
└── docker-compose.yml
|
└── docker-compose.yml
|
||||||
```
|
```
|
||||||
|
|
||||||
* `acme` contains all applied certificates from Lets Encrypt
|
* `acme` contains all applied certificates from Lets Encrypt
|
||||||
|
|
||||||
* `bin` contains multiple CLI scripts to allow you add or delete virtual hosts, install applications, upgrade, etc
|
* `bin` contains multiple CLI scripts to allow you add or delete virtual hosts, install applications, upgrade, etc
|
||||||
|
|
||||||
* `data` stores the MySQL database
|
* `data` stores the MySQL database
|
||||||
|
|
||||||
* `logs` contains all of the web server logs and virtual host access logs
|
* `logs` contains all of the web server logs and virtual host access logs
|
||||||
|
|
||||||
* `lsws` contains all web server configuration files
|
* `lsws` contains all web server configuration files
|
||||||
|
|
||||||
* `sites` contains the document roots (the WordPress application will install here)
|
* `sites` contains the document roots (the WordPress application will install here)
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
@@ -93,54 +99,54 @@ docker-compose down
|
|||||||
### Setting the WebAdmin Password
|
### Setting the WebAdmin Password
|
||||||
We strongly recommend you set your personal password right away.
|
We strongly recommend you set your personal password right away.
|
||||||
```
|
```
|
||||||
bash bin/webadmin.sh MYPASSWORD
|
bash bin/webadmin.sh my_password
|
||||||
```
|
```
|
||||||
### Starting a Demo Site
|
### Starting a Demo Site
|
||||||
After running the following command, you should be able to access the WordPress installation with the configured domain. By default the domain is `https://localhost` and also `https://server_IP`.
|
After running the following command, you should be able to access the WordPress installation with the configured domain. By default the domain is http://localhost.
|
||||||
```
|
```
|
||||||
bash bin/demosite.sh
|
bash bin/demosite.sh
|
||||||
```
|
```
|
||||||
### Creating a Domain and Virtual Host
|
### Creating a Domain and Virtual Host
|
||||||
```
|
```
|
||||||
bash bin/domain.sh [-add|-a] example.com
|
bash bin/domain.sh [-A, --add] example.com
|
||||||
```
|
```
|
||||||
### Deleting a Domain and Virtual Host
|
### Deleting a Domain and Virtual Host
|
||||||
```
|
```
|
||||||
bash bin/domain.sh [-del|-d] example.com
|
bash bin/domain.sh [-D, --del] example.com
|
||||||
```
|
```
|
||||||
### Creating a Database
|
### Creating a Database
|
||||||
You can either automatically generate the user, password, and database names, or specify them. Use the following to auto generate:
|
You can either automatically generate the user, password, and database names, or specify them. Use the following to auto generate:
|
||||||
```
|
```
|
||||||
bash bin/database.sh [-domain|-d] example.com
|
bash bin/database.sh [-D, --domain] example.com
|
||||||
```
|
```
|
||||||
Use this command to specify your own names, substituting `user_name`, `my_password`, and `database_name` with your preferred values:
|
Use this command to specify your own names, substituting `user_name`, `my_password`, and `database_name` with your preferred values:
|
||||||
```
|
```
|
||||||
bash bin/database.sh [-domain|-d] example.com [-user|-u] user_name [-password|-p] my_password [-database|-db] database_name
|
bash bin/database.sh [-D, --domain] example.com [-U, --user] USER_NAME [-P, --password] MY_PASS [-DB, --database] DATABASE_NAME
|
||||||
```
|
```
|
||||||
### Installing a WordPress Site
|
### Installing a WordPress Site
|
||||||
To preconfigure the `wp-config` file, run the `database.sh` script for your domain, before you use the following command to install WordPress:
|
To preconfigure the `wp-config` file, run the `database.sh` script for your domain, before you use the following command to install WordPress:
|
||||||
```
|
```
|
||||||
./bin/appinstall.sh [-app|-a] wordpress [-domain|-d] example.com
|
./bin/appinstall.sh [-A, --app] wordpress [-D, --domain] example.com
|
||||||
```
|
```
|
||||||
### Install ACME
|
### Install ACME
|
||||||
We need to run the ACME installation command the **first time only**.
|
We need to run the ACME installation command the **first time only**.
|
||||||
With email notification:
|
With email notification:
|
||||||
```
|
```
|
||||||
./bin/acme.sh [--install|-i] [--email|-e] EMAIL_ADDR
|
./bin/acme.sh [-I, --install] [-E, --email] EMAIL_ADDR
|
||||||
```
|
```
|
||||||
Without email notification:
|
Without email notification:
|
||||||
```
|
```
|
||||||
./bin/acme.sh [--install|-i] [--no-email|-ne]
|
./bin/acme.sh [-I, --install] [-NE, --no-email]
|
||||||
```
|
```
|
||||||
### Applying a Let's Encrypt Certificate
|
### Applying a Let's Encrypt Certificate
|
||||||
Use the root domain in this command, and it will check for a certificate and automatically apply one with and without `www`:
|
Use the root domain in this command, and it will check for a certificate and automatically apply one with and without `www`:
|
||||||
```
|
```
|
||||||
./bin/acme.sh [-domain|-d] example.com
|
./bin/acme.sh [-D, --domain] example.com
|
||||||
```
|
```
|
||||||
### Update Web Server
|
### Update Web Server
|
||||||
To upgrade the web server to latest stable version, run the following:
|
To upgrade the web server to latest stable version, run the following:
|
||||||
```
|
```
|
||||||
bash bin/webadmin.sh [-lsup|-upgrade]
|
bash bin/webadmin.sh [-U, --upgrade]
|
||||||
```
|
```
|
||||||
### Apply OWASP ModSecurity
|
### Apply OWASP ModSecurity
|
||||||
Enable OWASP `mod_secure` on the web server:
|
Enable OWASP `mod_secure` on the web server:
|
||||||
|
|||||||
+24
-12
@@ -7,6 +7,13 @@ UNINSTALL=''
|
|||||||
TYPE=0
|
TYPE=0
|
||||||
CONT_NAME='litespeed'
|
CONT_NAME='litespeed'
|
||||||
ACME_SRC='https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh'
|
ACME_SRC='https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh'
|
||||||
|
EPACE=' '
|
||||||
|
|
||||||
|
echow(){
|
||||||
|
FLAG=${1}
|
||||||
|
shift
|
||||||
|
echo -e "\033[1m${EPACE}${FLAG}\033[0m${@}"
|
||||||
|
}
|
||||||
|
|
||||||
help_message(){
|
help_message(){
|
||||||
case ${1} in
|
case ${1} in
|
||||||
@@ -14,13 +21,18 @@ help_message(){
|
|||||||
echo 'You will need to install acme script at the first time.'
|
echo 'You will need to install acme script at the first time.'
|
||||||
echo 'Please run acme.sh --install --email example@example.com'
|
echo 'Please run acme.sh --install --email example@example.com'
|
||||||
;;
|
;;
|
||||||
"2")
|
"2")
|
||||||
echo 'Command [--install] [--email EMAIL_ADDR]'
|
echo -e "\033[1mOPTIONS\033[0m"
|
||||||
echo 'Command [--install] [--no-email]'
|
echow '-D, --domain [DOMAIN_NAME]'
|
||||||
echo 'Command [--domain DOMAIN_NAME]'
|
echo "${EPACE}${EPACE}Example: acme.sh --domain example.com"
|
||||||
echo 'Example: acme.sh --install --email example@example.com'
|
echo "${EPACE}${EPACE}will auto detect and apply for both example.com and www.example.com domains."
|
||||||
echo 'Example: acme.sh --install --no-email'
|
echow '-H, --help'
|
||||||
echo 'Example: acme.sh --domain example.com'
|
echo "${EPACE}${EPACE}Display help and exit."
|
||||||
|
echo -e "\033[1m Only for the First time\033[0m"
|
||||||
|
echow '--install --email [EMAIL_ADDR]'
|
||||||
|
echo "${EPACE}${EPACE}Will install ACME with the Email provided"
|
||||||
|
echow '--install --no-email'
|
||||||
|
echo "${EPACE}${EPACE}Will install ACME without the Email."
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
"3")
|
"3")
|
||||||
@@ -178,22 +190,22 @@ while [ ! -z "${1}" ]; do
|
|||||||
-[hH] | -help | --help)
|
-[hH] | -help | --help)
|
||||||
help_message 2
|
help_message 2
|
||||||
;;
|
;;
|
||||||
-d | -domain | --domain) shift
|
-[dD] | -domain | --domain) shift
|
||||||
check_input "${1}"
|
check_input "${1}"
|
||||||
DOMAIN="${1}"
|
DOMAIN="${1}"
|
||||||
;;
|
;;
|
||||||
-i | --install )
|
-[iI] | --install )
|
||||||
INSTALL=true
|
INSTALL=true
|
||||||
;;
|
;;
|
||||||
-u | --uninstall )
|
-[uU] | --uninstall )
|
||||||
UNINSTALL=true
|
UNINSTALL=true
|
||||||
uninstall_acme
|
uninstall_acme
|
||||||
;;
|
;;
|
||||||
-e | --email ) shift
|
-[eE] | --email ) shift
|
||||||
check_input "${1}"
|
check_input "${1}"
|
||||||
EMAIL="${1}"
|
EMAIL="${1}"
|
||||||
;;
|
;;
|
||||||
-ne | --no-email ) shift
|
-NE | --no-email ) shift
|
||||||
NO_EMAIL=true
|
NO_EMAIL=true
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|||||||
+16
-4
@@ -1,10 +1,22 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
APP_NAME=''
|
APP_NAME=''
|
||||||
DOMAIN=''
|
DOMAIN=''
|
||||||
|
EPACE=' '
|
||||||
|
|
||||||
|
echow(){
|
||||||
|
FLAG=${1}
|
||||||
|
shift
|
||||||
|
echo -e "\033[1m${EPACE}${FLAG}\033[0m${@}"
|
||||||
|
}
|
||||||
|
|
||||||
help_message(){
|
help_message(){
|
||||||
echo 'Command [-app app_name] [-domain domain_name]'
|
echo -e "\033[1mOPTIONS\033[0m"
|
||||||
echo 'Example: appinstall.sh -app wordpress -d example.com'
|
echow '-A, --app [app_name] -D, --domain [DOMAIN_NAME]'
|
||||||
|
echo "${EPACE}${EPACE}Example: appinstall.sh -A wordpress -D example.com"
|
||||||
|
echo "${EPACE}${EPACE}Will install WordPress CMS under the example.com domain"
|
||||||
|
echow '-H, --help'
|
||||||
|
echo "${EPACE}${EPACE}Display help and exit."
|
||||||
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
check_input(){
|
check_input(){
|
||||||
@@ -30,11 +42,11 @@ while [ ! -z "${1}" ]; do
|
|||||||
-[hH] | -help | --help)
|
-[hH] | -help | --help)
|
||||||
help_message
|
help_message
|
||||||
;;
|
;;
|
||||||
-app | -a | -A) shift
|
-[aA] | -app | --app) shift
|
||||||
check_input "${1}"
|
check_input "${1}"
|
||||||
APP_NAME="${1}"
|
APP_NAME="${1}"
|
||||||
;;
|
;;
|
||||||
-d | -D | -domain) shift
|
-[dD] | -domain | --domain) shift
|
||||||
check_input "${1}"
|
check_input "${1}"
|
||||||
DOMAIN="${1}"
|
DOMAIN="${1}"
|
||||||
;;
|
;;
|
||||||
|
|||||||
Executable
+75
@@ -0,0 +1,75 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
LSDIR='/usr/local/lsws'
|
||||||
|
|
||||||
|
help_message(){
|
||||||
|
echo 'Command [-serial|-S] SERIAL'
|
||||||
|
echo 'Example: serialctl.sh -s SERIAL'
|
||||||
|
echo 'Example: serialctl.sh -s TRIAL'
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
check_input(){
|
||||||
|
if [ -z "${1}" ]; then
|
||||||
|
help_message
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
backup_old(){
|
||||||
|
if [ -f ${1} ] && [ ! -f ${1}_old ]; then
|
||||||
|
mv ${1} ${1}_old
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
detect_ols(){
|
||||||
|
if [ -e ${LSDIR}/bin/openlitespeed ]; then
|
||||||
|
echo '[X] Detect OpenLiteSpeed, abort!'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply_serial(){
|
||||||
|
detect_ols
|
||||||
|
check_input ${1}
|
||||||
|
echo ${1} | grep -i 'trial' >/dev/null
|
||||||
|
if [ ${?} = 0 ]; then
|
||||||
|
echo 'Apply Trial License'
|
||||||
|
if [ ! -e ${LSDIR}/conf/serial.no ] && [ ! -e ${LSDIR}/conf/license.key ]; then
|
||||||
|
rm -f ${LSDIR}/conf/trial.key*
|
||||||
|
wget -P ${LSDIR}/conf -q http://license.litespeedtech.com/reseller/trial.key
|
||||||
|
echo 'Apply trial finished'
|
||||||
|
else
|
||||||
|
echo "Please backup and remove your existing license, apply abort!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Apply Serial number: ${1}"
|
||||||
|
backup_old ${LSDIR}/conf/serial.no
|
||||||
|
backup_old ${LSDIR}/conf/license.key
|
||||||
|
backup_old ${LSDIR}/conf/trial.key
|
||||||
|
echo "${1}" > ${LSDIR}/conf/serial.no
|
||||||
|
${LSDIR}/bin/lshttpd -r
|
||||||
|
if [ -f ${LSDIR}/conf/license.key ]; then
|
||||||
|
echo '[O] Apply success'
|
||||||
|
else
|
||||||
|
echo '[X] Apply failed, please check!'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check_input ${1}
|
||||||
|
while [ ! -z "${1}" ]; do
|
||||||
|
case ${1} in
|
||||||
|
-[hH] | -help | --help)
|
||||||
|
help_message
|
||||||
|
;;
|
||||||
|
-[sS] | -serial) shift
|
||||||
|
apply_serial "${1}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
help_message
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
+21
-9
@@ -7,13 +7,25 @@ SQL_USER=''
|
|||||||
SQL_PASS=''
|
SQL_PASS=''
|
||||||
ANY="'%'"
|
ANY="'%'"
|
||||||
SET_OK=0
|
SET_OK=0
|
||||||
|
EPACE=' '
|
||||||
|
|
||||||
|
echow(){
|
||||||
|
FLAG=${1}
|
||||||
|
shift
|
||||||
|
echo -e "\033[1m${EPACE}${FLAG}\033[0m${@}"
|
||||||
|
}
|
||||||
|
|
||||||
help_message(){
|
help_message(){
|
||||||
echo 'Command [-domain xxx]'
|
echo -e "\033[1mOPTIONS\033[0m"
|
||||||
echo 'Command [-domain xxx] [-user xxx] [-password xxx] [-database xxx]'
|
echow '-D, --domain [DOMAIN_NAME]'
|
||||||
echo 'Example 1: database.sh -domain example.com'
|
echo "${EPACE}${EPACE}Example: database.sh -D example.com"
|
||||||
echo 'Example 2: database.sh -domain example.com -user USERNAME -password PASSWORD -database DATABASENAME'
|
echo "${EPACE}${EPACE}Will auto generate Database/username/password for the domain"
|
||||||
echo 'Script will auto assign database & username by the domain and random password for example 1'
|
echow '-D, --domain [DOMAIN_NAME] -U, --user [xxx] -P, --password [xxx] -DB, --database [xxx]'
|
||||||
|
echo "${EPACE}${EPACE}Example: database.sh -D example.com -U USERNAME -P PASSWORD -DB DATABASENAME"
|
||||||
|
echo "${EPACE}${EPACE}Will create Database/username/password by given"
|
||||||
|
echow '-H, --help'
|
||||||
|
echo "${EPACE}${EPACE}Display help and exit."
|
||||||
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
check_input(){
|
check_input(){
|
||||||
@@ -120,16 +132,16 @@ while [ ! -z "${1}" ]; do
|
|||||||
-[hH] | -help | --help)
|
-[hH] | -help | --help)
|
||||||
help_message
|
help_message
|
||||||
;;
|
;;
|
||||||
-d | -D | -domain) shift
|
-[dD] | -domain| --domain) shift
|
||||||
DOMAIN="${1}"
|
DOMAIN="${1}"
|
||||||
;;
|
;;
|
||||||
-u | -U | -user) shift
|
-[uU] | -user | --user) shift
|
||||||
SQL_USER="${1}"
|
SQL_USER="${1}"
|
||||||
;;
|
;;
|
||||||
-p | -P | -password) shift
|
-[pP] | -password| --password) shift
|
||||||
SQL_PASS="'${1}'"
|
SQL_PASS="'${1}'"
|
||||||
;;
|
;;
|
||||||
-db | -DB | -database) shift
|
-db | -DB | -database| --database) shift
|
||||||
SQL_DB="${1}"
|
SQL_DB="${1}"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|||||||
+16
-5
@@ -1,10 +1,21 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
CONT_NAME='litespeed'
|
CONT_NAME='litespeed'
|
||||||
|
EPACE=' '
|
||||||
|
|
||||||
|
echow(){
|
||||||
|
FLAG=${1}
|
||||||
|
shift
|
||||||
|
echo -e "\033[1m${EPACE}${FLAG}\033[0m${@}"
|
||||||
|
}
|
||||||
|
|
||||||
help_message(){
|
help_message(){
|
||||||
echo 'Command [-add|-del] [domain_name]'
|
echo -e "\033[1mOPTIONS\033[0m"
|
||||||
echo 'Example 1: domain.sh -add example.com'
|
echow "-A, --add [domain_name]"
|
||||||
echo 'Example 2: domain.sh -del example.com'
|
echo "${EPACE}${EPACE}Example: domain.sh -A example.com, will add the domain to Listener and auto create a new virtual host."
|
||||||
|
echow "-D, --del [domain_name]"
|
||||||
|
echo "${EPACE}${EPACE}Example: domain.sh -D example.com, will delete the domain from Listener."
|
||||||
|
echow '-H, --help'
|
||||||
|
echo "${EPACE}${EPACE}Display help and exit."
|
||||||
}
|
}
|
||||||
|
|
||||||
check_input(){
|
check_input(){
|
||||||
@@ -35,10 +46,10 @@ while [ ! -z "${1}" ]; do
|
|||||||
-[hH] | -help | --help)
|
-[hH] | -help | --help)
|
||||||
help_message
|
help_message
|
||||||
;;
|
;;
|
||||||
-add | -a | -A) shift
|
-[aA] | -add | --add) shift
|
||||||
add_domain ${1}
|
add_domain ${1}
|
||||||
;;
|
;;
|
||||||
-del | -d | -D | -delete) shift
|
-[dD] | -del | --del | --delete) shift
|
||||||
del_domain ${1}
|
del_domain ${1}
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|||||||
+31
-13
@@ -1,17 +1,27 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
CONT_NAME='litespeed'
|
CONT_NAME='litespeed'
|
||||||
|
EPACE=' '
|
||||||
|
|
||||||
|
echow(){
|
||||||
|
FLAG=${1}
|
||||||
|
shift
|
||||||
|
echo -e "\033[1m${EPACE}${FLAG}\033[0m${@}"
|
||||||
|
}
|
||||||
|
|
||||||
help_message(){
|
help_message(){
|
||||||
echo 'Command [PASSWORD]'
|
echo -e "\033[1mOPTIONS\033[0m"
|
||||||
echo 'Example: webadmin.sh mypassword'
|
echow '[Enter Your PASSWORD]'
|
||||||
echo 'Command [-r]'
|
echo "${EPACE}${EPACE}Example: webadmin.sh MY_SECURE_PASS, to update web admin password immediatly."
|
||||||
echo 'Example: webadmin.sh -r'
|
echow '-R, --restart'
|
||||||
echo 'Will restart LiteSpeed Web Server'
|
echo "${EPACE}${EPACE}Will gracefully restart LiteSpeed Web Server."
|
||||||
echo 'Command [-modsec] [enable|disable]'
|
echow '-M, --mod-secure [enable|disable]'
|
||||||
echo 'Example: webadmin -modsec enable'
|
echo "${EPACE}${EPACE}Example: webadmin.sh -M enable, will enable and apply Mod_Secure OWASP rules on server"
|
||||||
echo 'Command [-lsup]'
|
echow '-U, --upgrade'
|
||||||
echo 'Example: webadmin.sh -lsup'
|
echo "${EPACE}${EPACE}Will upgrade web server to latest stable version"
|
||||||
echo 'Will upgrade to latest stable version'
|
echow '-S, --serial [YOUR_SERIAL|TRIAL]'
|
||||||
|
echo "${EPACE}${EPACE}Will apply your serial number to LiteSpeed Web Server."
|
||||||
|
echow '-H, --help'
|
||||||
|
echo "${EPACE}${EPACE}Display help and exit."
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -26,6 +36,11 @@ lsws_restart(){
|
|||||||
docker-compose exec ${CONT_NAME} su -c '/usr/local/lsws/bin/lswsctrl restart >/dev/null'
|
docker-compose exec ${CONT_NAME} su -c '/usr/local/lsws/bin/lswsctrl restart >/dev/null'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
apply_serial(){
|
||||||
|
docker-compose exec ${CONT_NAME} su -c "serialctl.sh -s ${1}"
|
||||||
|
lsws_restart
|
||||||
|
}
|
||||||
|
|
||||||
mod_secure(){
|
mod_secure(){
|
||||||
if [ "${1}" = 'enable' ] || [ "${1}" = 'Enable' ]; then
|
if [ "${1}" = 'enable' ] || [ "${1}" = 'Enable' ]; then
|
||||||
docker-compose exec ${CONT_NAME} su -s /bin/bash root -c "owaspctl.sh -enable"
|
docker-compose exec ${CONT_NAME} su -s /bin/bash root -c "owaspctl.sh -enable"
|
||||||
@@ -62,12 +77,15 @@ while [ ! -z "${1}" ]; do
|
|||||||
-[rR] | -restart | --restart)
|
-[rR] | -restart | --restart)
|
||||||
lsws_restart
|
lsws_restart
|
||||||
;;
|
;;
|
||||||
-modsec | -sec| --sec) shift
|
-M | -mode-secure | --mod-secure) shift
|
||||||
mod_secure ${1}
|
mod_secure ${1}
|
||||||
;;
|
;;
|
||||||
-lsup | -upgrade) shift
|
-lsup | --lsup | --upgrade | -U) shift
|
||||||
ls_upgrade
|
ls_upgrade
|
||||||
;;
|
;;
|
||||||
|
-[sS] | -serial | --serial) shift
|
||||||
|
apply_serial ${1}
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
main ${1}
|
main ${1}
|
||||||
;;
|
;;
|
||||||
|
|||||||
Reference in New Issue
Block a user