Initial commit. Very first rewritten codes
This commit is contained in:
parent
2eee48778d
commit
0cfc0cd4a4
75
README.md
75
README.md
|
@ -1,2 +1,75 @@
|
|||
# GSL Statique Littérateur
|
||||
# GSL: Statique Littérateur
|
||||
|
||||
GSL is a multiple blogs/websites generator based on their domain,
|
||||
written in bash, for minimal dependancies. The websites are nearly all
|
||||
static, except for some includes that nginx can easily get, in your
|
||||
webserver.
|
||||
|
||||
# Dependancies
|
||||
- bash
|
||||
- coreutils
|
||||
|
||||
|
||||
# GSL: Installation
|
||||
|
||||
To avoid sudo, you should give permissions to USER
|
||||
|
||||
## --Prefix for DOMAIN configuration (set according to user choice):
|
||||
- HOME: ~/.config/gsl
|
||||
- GLOBAL: /var/lib/gsl
|
||||
- Folder: --Prefix/domains/ (created with $ gsl new)
|
||||
|
||||
### DOMAIN Datas from Prefix:
|
||||
- Folder: --Prefix/DOMAIN/ (Created by GSL)
|
||||
- - Files: DOMAIN.conf, authors.db (Created by GSL)
|
||||
- - Folder: --Prefix/DOMAIN/tmeplates/ (css, logos...) (Created by GSL)
|
||||
|
||||
## Destination Folder: /etc/gsl/
|
||||
- File: gsl.conf
|
||||
|
||||
## Destination Folder: /var/lib/gsl/
|
||||
- Folder: db (Created by GSL)
|
||||
- Folder: helps
|
||||
- Folder: scripts
|
||||
- File: README.md
|
||||
|
||||
## Destination Folder: /var/log/gsl
|
||||
- File: gsl.log (Created and managed by GSL $ gsl log clean...)
|
||||
|
||||
## Destination Folder: /usr/local/bin
|
||||
- File: gsl
|
||||
|
||||
|
||||
# How to configure a DOMAIN folder, and create a Post
|
||||
## Set a DOMAIN
|
||||
- add a DOMAIN name (if not alrady done)
|
||||
|
||||
Follow instructions when adding DOMAIN or see them again with
|
||||
```
|
||||
gsl help new
|
||||
gsl help install
|
||||
```
|
||||
|
||||
## Set a DOMAIN folder
|
||||
if not already done:
|
||||
- Create or go into your folder of choice
|
||||
- Save into that folder a blank file named gsl.DOMAIN (gsl.example.org)
|
||||
to tell GSL, this folder is for this DOMAIN website
|
||||
|
||||
## Create a new Post
|
||||
- Write a post in a file, using some "metas" that GSL will catch.
|
||||
The engine is written from scratch and looks like a mix of markdown and
|
||||
ReStructuredText. It's very easy to learn and use.
|
||||
- Save your file with .gsl extension
|
||||
- Start checking it, using:
|
||||
```
|
||||
gsl check
|
||||
```
|
||||
If your Post has no error, you will have some ready to deploy html
|
||||
files and folders. You could install lightweight darkhttpd webserver on
|
||||
your PC to preview the website
|
||||
|
||||
# Create a Templates
|
||||
You will have to create some CSS in your /DOMAIN/templates/
|
||||
- HOME: ~/.config/domains/DOMAIN/templates/
|
||||
- GLOBAL: /var/list/domains/DOMAIN/templates/
|
||||
|
|
|
@ -0,0 +1,161 @@
|
|||
# file: gsl.conf
|
||||
# Folder: /etc/gsl
|
||||
# By echolib
|
||||
# License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
|
||||
|
||||
|
||||
#=======================================================================
|
||||
# Folders
|
||||
#=======================================================================
|
||||
# Librairies
|
||||
gsl_dir_lib="/var/lib/gsl"
|
||||
gsl_dir_scripts="$gsl_dir_lib/scripts"
|
||||
gsl_dir_helps="$gsl_dir_lib/helps"
|
||||
|
||||
# Management
|
||||
gsl_dir_db="$gsl_dir_lib/db"
|
||||
gsl_dir_global_domains="/var/lib/gsl/domains"
|
||||
|
||||
# Logs
|
||||
gsl_dir_logs="/var/log/gsl"
|
||||
|
||||
# User
|
||||
gsl_dir_user_domains="/home/$USER/.config/gsl/domains"
|
||||
|
||||
#=======================================================================
|
||||
# Files
|
||||
#=======================================================================
|
||||
# Logs
|
||||
gsl_file_logs="$gsl_dir_logs/gsl.log"
|
||||
|
||||
# Management
|
||||
gsl_file_db_domains="$gsl_dir_db/domains.db"
|
||||
gsl_file_db_posts="$gsl_dir_db/posts.db"
|
||||
gsl_file_db_stats="$gsl_dir_db/stats.db"
|
||||
|
||||
# Registred Authors filename
|
||||
gsl_filename_auth="authors.db"
|
||||
|
||||
#=======================================================================
|
||||
# GSL Internal Configuration
|
||||
#=======================================================================
|
||||
# Reserved 10 posts ID (Home, about...)
|
||||
gsl_post_min_ID=10
|
||||
|
||||
# minimum size to check a post
|
||||
gsl_post_min_size=800
|
||||
|
||||
# Init log datas
|
||||
gsl_log_a=' ~ '
|
||||
gsl_log_e='Err'
|
||||
gsl_log_w='War'
|
||||
gsl_log_i='Inf'
|
||||
|
||||
|
||||
# Admin show
|
||||
gsl_admin_sep_post='==============='
|
||||
|
||||
# Date format
|
||||
gsl_test_date='^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]+$'
|
||||
|
||||
# Logs
|
||||
gsl_log_act_title='POST TITLE'
|
||||
gsl_log_act_author='REGISTRED NAME'
|
||||
gsl_log_act_date='YYYY-MM-DD'
|
||||
gsl_log_act_info='POST is ABOUT...'
|
||||
gsl_log_act_slug='POST-TITLE'
|
||||
gsl_log_act_code='NBR : FILENAME'
|
||||
gsl_log_act_image='NBR : NAME : ALT TEXT'
|
||||
gsl_log_act_abbr='SHORT : LONG'
|
||||
gsl_log_act_h1='#1 POST CONTENT TITLE'
|
||||
gsl_log_act_link='NAME : URL : ALT TEXT'
|
||||
gsl_log_act_file='NAME : FILENAME : ALT TEXT'
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
# Set CONTENT POTST markers
|
||||
#-----------------------------------------------------------------------
|
||||
gsl_mo_p='('
|
||||
gsl_mo_link='\[_'
|
||||
gsl_mo_em='/_'
|
||||
gsl_mo_bold='\*_'
|
||||
gsl_mo_strong='\*\*_'
|
||||
gsl_mo_code='¤_'
|
||||
gsl_mo_file='<_'
|
||||
|
||||
gsl_mc_p=')'
|
||||
gsl_mc_link='_\]'
|
||||
gsl_mc_em='_/'
|
||||
gsl_mc_bold='_\*'
|
||||
gsl_mc_strong='_\*\*'
|
||||
gsl_mc_code='_¤'
|
||||
gsl_mc_file='_>'
|
||||
|
||||
gsl_mark_image='_image_'
|
||||
gsl_mark_code='_code_'
|
||||
gsl_mark_title='#'
|
||||
gsl_mark_hr='==='
|
||||
gsl_mark_list1='=> '
|
||||
gsl_mark_list2='==> '
|
||||
gsl_mark_list3='===> '
|
||||
|
||||
gsl_mark_blockquote='---'
|
||||
gsl_mark_blockquote_cite='_cite :'
|
||||
gsl_mark_blockquote_year='_year :'
|
||||
gsl_mark_blockquote_link='_link :'
|
||||
gsl_mark_blockquote_book='_book :'
|
||||
gsl_mark_blockquote_lang='_lang :'
|
||||
|
||||
gsl_o_markers=(
|
||||
$gsl_mo_link
|
||||
$gsl_mo_em
|
||||
$gsl_mo_strong
|
||||
$gsl_mo_bold
|
||||
$gsl_mo_code
|
||||
$gsl_mo_file
|
||||
)
|
||||
|
||||
gsl_c_markers=(
|
||||
$gsl_mc_link
|
||||
$gsl_mc_em
|
||||
$gsl_mc_strong
|
||||
$gsl_mc_bold
|
||||
$gsl_mc_code
|
||||
$gsl_mc_file
|
||||
)
|
||||
|
||||
gsl_i_markers=(
|
||||
Link
|
||||
Italic
|
||||
Strong
|
||||
Bold
|
||||
Code
|
||||
File
|
||||
)
|
||||
|
||||
gsl_u_markers=(
|
||||
'[_ _]'
|
||||
'/_ _/'
|
||||
'**_ _**'
|
||||
'*_ _*'
|
||||
'¤_ _¤'
|
||||
'<_ _>'
|
||||
)
|
||||
|
||||
gsl_markers_nbr=$(( ${#gsl_o_markers[@]} - 1 ))
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
# Set HEADERS markers
|
||||
#-----------------------------------------------------------------------
|
||||
gsl_marker_ID=';; ID: '
|
||||
gsl_marker_title=';; title: '
|
||||
gsl_marker_slug=';; slug: '
|
||||
gsl_marker_info=';; info: '
|
||||
gsl_marker_author=';; author: '
|
||||
gsl_marker_date=';; date: '
|
||||
|
||||
#Optional (include brut text)
|
||||
gsl_marker_code=';; code'
|
||||
gsl_marker_image=';; image'
|
||||
gsl_marker_abbr=';; abbr'
|
||||
gsl_marker_link=';; link'
|
||||
gsl_marker_file=';; file'
|
|
@ -0,0 +1,179 @@
|
|||
#!/bin/bash
|
||||
|
||||
#=======================================================================
|
||||
# Checking Dependancies
|
||||
#=======================================================================
|
||||
# Get Tools
|
||||
! [[ -f "/var/lib/gsl/scripts/gsl__tools" ]] \
|
||||
&& echo "! Missing file: /var/lib/gsl/scripts/gsl__tools" \
|
||||
&& return
|
||||
source "/var/lib/gsl/scripts/gsl__tools"
|
||||
|
||||
# Get conf
|
||||
gsl__check_source "/etc/gsl/gsl.conf" || exit 1
|
||||
|
||||
# Get Logs Manager
|
||||
gsl__check_source "$gsl_dir_scripts/gsl__log_manager" || exit 1
|
||||
|
||||
# Check/Create Files and Folders
|
||||
gsl__create_ff
|
||||
|
||||
#=======================================================================
|
||||
# Main
|
||||
#=======================================================================
|
||||
case "$1" in
|
||||
author|-A)
|
||||
gsl__find_domain && exit 1
|
||||
gsl__check_source "$gsl_dir_scripts/gsl__auth_manager" || exit 1
|
||||
|
||||
echo "# Domain: $gsl_find_domain"
|
||||
case "$2" in
|
||||
"")
|
||||
gsl__authors_list
|
||||
;;
|
||||
add)
|
||||
gsl__logs_print \
|
||||
"$gsl_log_i" \
|
||||
"Starting" \
|
||||
"Process" \
|
||||
"Add Author for domain $gsl_find_domain" \
|
||||
"Domain: $gsl_find_domain"
|
||||
gsl__authors_add
|
||||
gsl__logs_print \
|
||||
"$gsl_log_i" \
|
||||
"Stopping" \
|
||||
"Process" \
|
||||
"Add Author for domain $gsl_find_domain" \
|
||||
"Domain: $gsl_find_domain"
|
||||
;;
|
||||
remove)
|
||||
gsl__logs_print \
|
||||
"$gsl_log_i" \
|
||||
"Starting" \
|
||||
"Process" \
|
||||
"Remove Author for domain $gsl_find_domain" \
|
||||
"Domain: $gsl_find_domain"
|
||||
gsl__authors_remove
|
||||
gsl__logs_print \
|
||||
"$gsl_log_i" \
|
||||
"Stopping" \
|
||||
"Process" \
|
||||
"Remove Author for domain $gsl_find_domain" \
|
||||
"Domain: $gsl_find_domain"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
new|-N)
|
||||
gsl__check_source "$gsl_dir_scripts/gsl__new_website" || exit 1
|
||||
gsl__logs_print \
|
||||
"$gsl_log_i" \
|
||||
"Starting" \
|
||||
"Process" \
|
||||
"New Website" \
|
||||
"$gsl_dir_scripts/gsl__new_website"
|
||||
|
||||
gsl__new_website
|
||||
|
||||
gsl__logs_print \
|
||||
"$gsl_log_i" \
|
||||
"Stopping" \
|
||||
"Process" \
|
||||
"New Website" \
|
||||
"$gsl_dir_scripts/gsl__new_website"
|
||||
|
||||
gsl author add
|
||||
;;
|
||||
|
||||
log|-L)
|
||||
[[ -z `grep '[^[:space:]]' "$gsl_file_logs"` ]] \
|
||||
&& echo "# No logs to show. File is empty." \
|
||||
&& exit
|
||||
|
||||
while test "$2"
|
||||
do
|
||||
case "$2" in
|
||||
clean|-C)
|
||||
gsl_date_logs=`date +%F-%H-%M-%S`
|
||||
mv "$gsl_file_logs" "$gsl_dir_logs/$gsl_date_logs.gsl.log"
|
||||
rm -f "$gsl_file_logs"
|
||||
printf '%s %s %s\n' \
|
||||
"# Logs saved to" \
|
||||
"$gsl_dir_logs/$gsl_date_logs.gsl.log" \
|
||||
"and cleaned"
|
||||
exit
|
||||
;;
|
||||
-s) gsl_logs_last_session=true ;;
|
||||
-e) gsl_logs_err=true ;;
|
||||
-i) gsl_logs_inf=true ;;
|
||||
-w) gsl_logs_war=true ;;
|
||||
*) gsl_logs_search="$2" ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
gsl__logs_show
|
||||
;;
|
||||
|
||||
check|-C)
|
||||
gsl__find_domain && exit 1
|
||||
gsl__check_source "$gsl_dir_scripts/gsl__auth_manager" || exit 1
|
||||
gsl__authors_list check && exit 1
|
||||
gsl__check_source "$gsl_dir_scripts/gsl__post_manager" || exit 1
|
||||
gsl__check_source "$gsl_dir_scripts/gsl__post_checkers" || exit 1
|
||||
gsl__check_nbr_posts && exit 1
|
||||
gsl__check_source "$gsl_dir_scripts/gsl__db_manager" || exit 1
|
||||
|
||||
gsl__logs_print \
|
||||
"$gsl_log_i" \
|
||||
"Starting" \
|
||||
"Process" \
|
||||
"Check Post for domain $gsl_find_domain" \
|
||||
"${PWD}"
|
||||
|
||||
gsl__logs_print \
|
||||
"$gsl_log_i" \
|
||||
"Found" \
|
||||
"Posts" \
|
||||
"$gsl_nbr_posts" \
|
||||
"${PWD}"
|
||||
|
||||
gsl__loop_posts check
|
||||
|
||||
gsl__logs_print \
|
||||
"$gsl_log_i" \
|
||||
"Stopping" \
|
||||
"Process" \
|
||||
"Check Post for domain $gsl_find_domain" \
|
||||
"${PWD}"
|
||||
;;
|
||||
|
||||
readme)
|
||||
if [[ -f "/var/lib/gsl/README.md" ]];then
|
||||
clear
|
||||
cat /var/lib/gsl/README.md
|
||||
else
|
||||
echo "! Missing file: /var/lib/gsl/README.md"
|
||||
fi
|
||||
;;
|
||||
|
||||
help|--help|-h)
|
||||
gsl__check_file "$gsl_dir_helps/gsl_help" || exit 1
|
||||
|
||||
clear
|
||||
case "$2" in
|
||||
"")
|
||||
cat "$gsl_dir_helps/gsl_help"
|
||||
;;
|
||||
new)
|
||||
gsl__check_file "$gsl_dir_helps/gsl_infos_new_website" \
|
||||
|| exit 1
|
||||
cat "$gsl_dir_helps/gsl_infos_new_website"
|
||||
;;
|
||||
install)
|
||||
gsl__check_file "$gsl_dir_helps/gsl_help_install" \
|
||||
|| exit 1
|
||||
cat "$gsl_dir_helps/gsl_help_install"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
|
@ -0,0 +1,22 @@
|
|||
# GSL: Statique Littérateur
|
||||
|
||||
$ gsl [ARG]
|
||||
readme : Show README.md instructions
|
||||
help | -h [OPT] : This Help. Add FULL [ARG] for specifics
|
||||
install : Show process installation
|
||||
|
||||
new | -N : Add and configure a new DOMAIN
|
||||
|
||||
log | -L [OPTS] : Show logs from all sessions
|
||||
clean | -C : Logs saved to {DATE}.gsl.log and cleaned
|
||||
-i | -w | -e : from levels (infos, warnings, errors)
|
||||
-s : from last session only
|
||||
[TERM] : [TERM] : case insensitive, regex 'T1.*T2'
|
||||
(i.e. $ gsl log -e -s code)
|
||||
|
||||
author | -A [OPT] : List authors from DOMAIN set in PWD folder
|
||||
add : Add author(s) for DOMAIN
|
||||
remove : Remove author(s) for DOMAIN
|
||||
|
||||
check | -C : Check Posts erors from PWD folder
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# GSL: Installation
|
||||
|
||||
To avoid sudo, you should give permissions to USER
|
||||
|
||||
## --Prefix for DOMAIN configuration (set according to user choice):
|
||||
- HOME: ~/.config/gsl
|
||||
- GLOBAL: /var/lib/gsl
|
||||
- Folder: --Prefix/domains/ (created with $ gsl new)
|
||||
|
||||
### DOMAIN Datas from Prefix:
|
||||
- Folder: --Prefix/DOMAIN/ (Created by GSL)
|
||||
- - Files: DOMAIN.conf, authors.db (Created by GSL)
|
||||
- - Folder: --Prefix/DOMAIN/tmeplates/ (css, logos...) (Created by GSL)
|
||||
|
||||
## Destination Folder: /etc/gsl/
|
||||
- File: gsl.conf
|
||||
|
||||
## Destination Folder: /var/lib/gsl/
|
||||
- Folder: db (Created by GSL)
|
||||
- Folder: helps
|
||||
- Folder: scripts
|
||||
- File: README.md
|
||||
|
||||
## Destination Folder: /var/log/gsl
|
||||
- File: gsl.log (Created and managed by GSL $ gsl log clean...)
|
||||
|
||||
## Destination Folder: /usr/local/bin
|
||||
- File: gsl
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
# GSL: Statique Littérateur
|
||||
|
||||
GSL can manage multiple websites, based on their DOMAIN Name
|
||||
When adding, set your new DOMAIN, for Global or Home Use
|
||||
|
||||
- Home case : Domain configuration saved to
|
||||
: /home/USER/.config/gsl/domains/DOMAIN/DOMAIN.conf
|
||||
|
||||
- Global case: Domain configuration saved to
|
||||
: /var/lib/gsl/domains/DOMAIN/DOMAIN.conf
|
||||
|
||||
- Your templates, where you give .css, logo, footer.html... must be put in
|
||||
: --prefix_above/domains/DOMAIN/templates
|
||||
|
||||
# Writing your Posts:
|
||||
- Create or go into a folder (i.e. /home/USER/Documents/Mytexts)
|
||||
- Set an empty file in this folder named gsl.DOMAIN (i.e. gsl.example.com)
|
||||
- Save in this folder your posts in files with .gsl extension (i.e. mygreatpost.gsl)
|
|
@ -0,0 +1,109 @@
|
|||
#!/bin/bash
|
||||
# file: gsl__auth_manager
|
||||
# Folder: /var/lib/gsl/scripts
|
||||
# By echolib
|
||||
# License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
|
||||
|
||||
#=======================================================================
|
||||
# Manage Authors from DOMAIN
|
||||
#=======================================================================
|
||||
gsl__authors_check() {
|
||||
gsl_save_dir_ndd=`grep "$gsl_find_domain" "$gsl_file_db_domains"`
|
||||
gsl_file_auth_ndd="$gsl_save_dir_ndd/$gsl_filename_auth"
|
||||
|
||||
! [[ -f "$gsl_file_auth_ndd" ]] \
|
||||
&& touch "$gsl_file_auth_ndd"
|
||||
}
|
||||
|
||||
#=======================================================================
|
||||
# List Authors from DOMAIN
|
||||
#=======================================================================
|
||||
gsl__authors_list() {
|
||||
gsl__authors_check
|
||||
|
||||
[[ -z `grep '[^[:space:]]' "$gsl_file_auth_ndd"` ]] \
|
||||
&& echo "! No Registred authors yet." \
|
||||
&& return
|
||||
|
||||
case "$1" in
|
||||
check)
|
||||
return
|
||||
;;
|
||||
esac
|
||||
|
||||
echo -e "\n# Authors Registred:"
|
||||
while read -r "line_nbr" "author"
|
||||
do
|
||||
echo " $line_nbr: $author"
|
||||
done < <(cat -n "$gsl_file_auth_ndd")
|
||||
}
|
||||
|
||||
#=======================================================================
|
||||
# Add Author(s) for DOMAIN to authors.db in Profile User
|
||||
#=======================================================================
|
||||
gsl__authors_add() {
|
||||
gsl__authors_check
|
||||
gsl__authors_list
|
||||
|
||||
printf '\n%s\n%s\n%s\n \n' \
|
||||
"# You can add one or more Authors" \
|
||||
" Use comma (,) delimiter (i.e. Joe Foo,Jane)" \
|
||||
" || empty field to cancel"
|
||||
|
||||
echo -ne "# Add author(s) name : " && IFS="," read -a gsl_new_authors
|
||||
[[ "$gsl_new_authors" ]] || return
|
||||
|
||||
gsl_nbr_authors=${#gsl_new_authors[@]}
|
||||
for i in `seq 0 $(( gsl_nbr_authors - 1 ))`
|
||||
do
|
||||
echo "${gsl_new_authors[i]}" >> "$gsl_file_auth_ndd" && \
|
||||
gsl__logs_print \
|
||||
"$gsl_log_i" \
|
||||
"Author" \
|
||||
"Added" \
|
||||
"${gsl_new_authors[i]} for domain $gsl_find_domain" \
|
||||
"$gsl_file_auth_ndd"
|
||||
done
|
||||
|
||||
gsl__authors_list
|
||||
}
|
||||
|
||||
#=======================================================================
|
||||
# Remove Author(s) for DOMAIN from authors.db in Profile User
|
||||
#=======================================================================
|
||||
gsl__authors_remove() {
|
||||
gsl__authors_check
|
||||
gsl__authors_list
|
||||
|
||||
printf '\n%s\n%s\n%s\n \n' \
|
||||
"# You can REMOVE one or more Authors" \
|
||||
" Enter numbers (space delimiter)" \
|
||||
" || empty field to cancel"
|
||||
|
||||
read -rp "! Which numbers author to REMOVE ? " gsl_rm_authors
|
||||
gsl_rm_authors=($gsl_rm_authors)
|
||||
|
||||
gsl_nbr_authors=`cat $gsl_file_auth_ndd | wc -l`
|
||||
for line in ${gsl_rm_authors[@]}
|
||||
do
|
||||
[[ $line =~ ^[0-9]+$ ]] || continue
|
||||
(( $line < 1 )) && continue
|
||||
(( $line > $gsl_nbr_authors )) && continue
|
||||
|
||||
if [[ $rm_line ]];then
|
||||
! (( $line == 1 )) && line=$(( line - 1 ))
|
||||
fi
|
||||
gsl_rm_author=`awk -v n="$line" 'NR == n' "$gsl_file_auth_ndd"`
|
||||
sed -i "${line}d" "$gsl_file_auth_ndd" && \
|
||||
gsl__logs_print \
|
||||
"$gsl_log_i" \
|
||||
"Author" \
|
||||
"Removed" \
|
||||
"$gsl_rm_author for domain $gsl_find_domain" \
|
||||
"$gsl_file_auth_ndd"
|
||||
echo " - Removed > $gsl_rm_author <"
|
||||
rm_line=true
|
||||
done
|
||||
|
||||
gsl__authors_list
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
#!/bin/bash
|
||||
# file: gsl__db_manager
|
||||
# Folder: /var/lib/gsl/scripts
|
||||
# By echolib
|
||||
# License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
|
||||
|
||||
#=======================================================================
|
||||
# Get Post Hash FROM DB posts.db
|
||||
#=======================================================================
|
||||
gsl__db_post_hash() {
|
||||
gsl_db_post_hash=`
|
||||
grep "$gsl_post" \
|
||||
"$gsl_file_db_posts" \
|
||||
| awk -F"|" '{print $3}'`
|
||||
}
|
||||
|
||||
#=======================================================================
|
||||
# Check Post exists and get line NBR in DB
|
||||
#=======================================================================
|
||||
gsl__db_post_exists() {
|
||||
gsl_db_post_exists=`grep -n "$gsl_post" "$1"`
|
||||
gsl_db_post_line_nbr=`awk -F":" '{print $1}' <<< "$gsl_db_post_exists"`
|
||||
gsl_db_post_status=`awk -F"|" '{print $4}' <<< "$gsl_db_post_exists"`
|
||||
}
|
||||
|
||||
#=======================================================================
|
||||
# From gsl__loop_posts: Write DB
|
||||
#=======================================================================
|
||||
gsl__db_line_post() {
|
||||
case "$gsl_process" in
|
||||
Checked)
|
||||
gsl_db_line=`
|
||||
printf '%s%s%s%s%s\n' \
|
||||
"$gsl_post_ID 1|" \
|
||||
"$gsl_post|" \
|
||||
"$gsl_post_hash|" \
|
||||
"$gsl_post_size|" \
|
||||
"$gsl_process|"`
|
||||
|
||||
# case if post exists in DB posts.db ?
|
||||
gsl__db_post_exists "$gsl_file_db_posts"
|
||||
if [[ "$gsl_db_post_exists" ]];then
|
||||
sed -i "${gsl_db_post_line_nbr}s/.*/$gsl_db_line/" \
|
||||
"$gsl_file_db_posts" && \
|
||||
gsl__logs_print \
|
||||
"$gsl_log_w" \
|
||||
"DB" \
|
||||
"Post" \
|
||||
"$gsl_post - Replaced Hash: $gsl_post_hash" \
|
||||
"$gsl_file_db_posts"
|
||||
gsl_checker_war=true
|
||||
|
||||
else
|
||||
echo "$gsl_db_line" \
|
||||
>> "$gsl_file_db_posts" && \
|
||||
gsl__logs_print \
|
||||
"$gsl_log_i" \
|
||||
"DB" \
|
||||
"Post" \
|
||||
"$gsl_post - New Line. Hash: $gsl_post_hash" \
|
||||
"$gsl_file_db_posts"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
}
|
|
@ -0,0 +1,80 @@
|
|||
#!/bin/bash
|
||||
# file: gsl__log_manager
|
||||
# Folder: /var/lib/gsl/scripts
|
||||
# By echolib
|
||||
# License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
# Print in log file
|
||||
#-----------------------------------------------------------------------
|
||||
gsl__logs_print() {
|
||||
#1: Level
|
||||
#2: Type
|
||||
#3: Process
|
||||
#4: Infos
|
||||
#5: File
|
||||
printf '%s %s\t%s\t%s\t%s\t%s\n' \
|
||||
"`date +%F' ~ '%T`" \
|
||||
"$1" \
|
||||
"$2" \
|
||||
"$3" \
|
||||
"$4" \
|
||||
"$5" \
|
||||
>> "$gsl_file_logs"
|
||||
}
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
# Show logs from file with filters
|
||||
#-----------------------------------------------------------------------
|
||||
gsl__logs_show() {
|
||||
clear
|
||||
|
||||
# Choices are important, but let's give priority
|
||||
[[ "$gsl_logs_inf" ]] \
|
||||
&& gsl_logs_filter="$gsl_log_i"
|
||||
[[ "$gsl_logs_war" ]] \
|
||||
&& gsl_logs_filter="$gsl_log_w"
|
||||
[[ "$gsl_logs_err" ]] \
|
||||
&& gsl_logs_filter="$gsl_log_e"
|
||||
|
||||
[[ "$gsl_logs_last_session" ]] \
|
||||
&& gsl_log_show_session="Last session" \
|
||||
|| gsl_log_show_session="All"
|
||||
|
||||
gsl_logs_infos=`
|
||||
printf '%s\n%s\n%s\n' \
|
||||
"Logs : $gsl_log_show_session" \
|
||||
"Filter: $gsl_logs_filter" \
|
||||
"Search: $gsl_logs_search"`
|
||||
|
||||
# Last session show or not
|
||||
if [[ "$gsl_logs_last_session" ]];then
|
||||
gsl_log_start_line=`
|
||||
grep -n "Starting" "$gsl_file_logs" \
|
||||
| tail -1 \
|
||||
| awk -F: '{print $1}'`
|
||||
|
||||
printf '%s\n \n' "$gsl_logs_infos"
|
||||
|
||||
awk -v sl="$gsl_log_start_line" \
|
||||
'NR >= sl' \
|
||||
"$gsl_file_logs" \
|
||||
| grep "$gsl_logs_filter" \
|
||||
| grep -Ei "$gsl_logs_search" \
|
||||
| column -t -s$'\t'
|
||||
else
|
||||
printf '%s\n' "$gsl_logs_infos"
|
||||
|
||||
while read -r "gsl_log_content"
|
||||
do
|
||||
# Let's read clear sessions
|
||||
[[ "$gsl_log_content" =~ "Starting" ]] \
|
||||
&& echo
|
||||
|
||||
echo "$gsl_log_content"
|
||||
done < <(cat "$gsl_file_logs" \
|
||||
| grep "$gsl_logs_filter" \
|
||||
| grep -Ei "$gsl_logs_search" \
|
||||
| column -t -s$'\t')
|
||||
fi
|
||||
}
|
|
@ -0,0 +1,327 @@
|
|||
#!/bin/bash
|
||||
# file: gsl__new_website
|
||||
# Folder: /var/lib/gsl/scripts
|
||||
# By echolib
|
||||
# License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
|
||||
|
||||
|
||||
#=======================================================================
|
||||
#
|
||||
# Configure new WEBSITE from DOMAIN
|
||||
#
|
||||
#=======================================================================
|
||||
gsl__new_website() {
|
||||
gsl__check_file "$gsl_dir_helps/gsl_infos_new_website" || return
|
||||
|
||||
clear
|
||||
cat $gsl_dir_helps/gsl_infos_new_website
|
||||
printf '\n%s\n%s\n%s\n' \
|
||||
"# Configuration of a new website..." \
|
||||
"# Cancel with empty field" \
|
||||
"# You will be asked to confirm at the end"
|
||||
|
||||
#=======================================================================
|
||||
# Webserver URI
|
||||
#=======================================================================
|
||||
echo -e "\n# Webserver: /var/www ! NO ending / (Or maybe elsewhere...)"
|
||||
read -erp \
|
||||
": Webserver URI ? " \
|
||||
gsl_set_server
|
||||
|
||||
gsl__check_settings $gsl_set_server \
|
||||
&& [[ "$gsl_process_stop" ]] \
|
||||
&& return
|
||||
|
||||
#=======================================================================
|
||||
# Domain URL
|
||||
#=======================================================================
|
||||
printf '\n%s %s\n' \
|
||||
"# URL: www.example.com !NO ending /" \
|
||||
"(https:// will be added if missing or force with http://)"
|
||||
read -rp \
|
||||
": Website URL ? " \
|
||||
gsl_set_url
|
||||
|
||||
gsl__check_settings $gsl_set_url \
|
||||
&& [[ "$gsl_process_stop" ]] \
|
||||
&& return
|
||||
|
||||
gsl_https='https://'
|
||||
case "$gsl_set_url" in
|
||||
"https://"*)
|
||||
gsl_set_ndd=${gsl_set_url/$gsl_https/}
|
||||
echo "D> Case: $gsl_set_ndd"
|
||||
;;
|
||||
"http://"*)
|
||||
gsl_http="http://"
|
||||
gsl_set_ndd=${gsl_set_url/$gsl_http/}
|
||||
;;
|
||||
*)
|
||||
gsl_set_ndd="$gsl_set_url"
|
||||
gsl_https+=$gsl_set_url
|
||||
gsl_set_url=$gsl_https
|
||||
;;
|
||||
esac
|
||||
|
||||
# Domain NAME
|
||||
gsl_set_ndd=`awk -F"." '{print $(NF-1)"."$NF}' <<< $gsl_set_ndd`
|
||||
gsl_set_file_ndd="$gsl_set_ndd.conf"
|
||||
|
||||
#=======================================================================
|
||||
# Personal use or global use ?
|
||||
#=======================================================================
|
||||
echo -e "\n# Save Domain in Home or Global"
|
||||
read -rp \
|
||||
": Home Use (y/n) ? " \
|
||||
gsl_set_user_conf
|
||||
case "$gsl_set_user_conf" in
|
||||
y|Y)
|
||||
gsl_save_dir_ndd="$gsl_dir_user_domains/$gsl_set_ndd"
|
||||
gsl_save_conf_ndd="$gsl_save_dir_ndd/$gsl_set_file_ndd"
|
||||
gsl_ask="# Save to $gsl_save_conf_ndd ? "
|
||||
;;
|
||||
n|N)
|
||||
gsl_save_dir_ndd="$gsl_dir_global_domains/$gsl_set_ndd"
|
||||
gsl_save_conf_ndd="$gsl_save_dir_ndd/$gsl_set_file_ndd"
|
||||
gsl_ask="# Save to $gsl_save_conf_ndd ? "
|
||||
;;
|
||||
*) echo "! Abandon... Maybe next time" && return ;;
|
||||
esac
|
||||
|
||||
#=======================================================================
|
||||
# Website Title
|
||||
#=======================================================================
|
||||
echo -e "\n# Title: My Compagny (or My beautiful website)"
|
||||
read -rp \
|
||||
": Website Title ? " \
|
||||
gsl_set_title
|
||||
|
||||
gsl__check_settings $gsl_set_title \
|
||||
&& [[ "$gsl_process_stop" ]] \
|
||||
&& return
|
||||
|
||||
#=======================================================================
|
||||
# Website Description
|
||||
#=======================================================================
|
||||
echo -e "\n# Description: writings about this website"
|
||||
read -rp \
|
||||
": Website Description ? " \
|
||||
gsl_set_about
|
||||
gsl__check_settings $gsl_set_about\
|
||||
&& [[ "$gsl_process_stop" ]] \
|
||||
&& return
|
||||
|
||||
#=======================================================================
|
||||
# Contact Mail
|
||||
#=======================================================================
|
||||
echo -e "\n# Mail: contact@example.com"
|
||||
read -rp \
|
||||
": Contact Mail ? " \
|
||||
gsl_set_mail
|
||||
|
||||
gsl__check_settings $gsl_set_mail \
|
||||
&& [[ "$gsl_process_stop" ]] \
|
||||
&& return
|
||||
|
||||
#=======================================================================
|
||||
# Website Keywords
|
||||
#=======================================================================
|
||||
echo -e "\n# Keywords: geek,logiciels libre,friends (comma separated)"
|
||||
read -rp \
|
||||
": Website Keywords ? " \
|
||||
gsl_set_keys
|
||||
|
||||
gsl__check_settings $gsl_set_keys \
|
||||
&& [[ "$gsl_process_stop" ]] \
|
||||
&& return
|
||||
|
||||
#=======================================================================
|
||||
# Language
|
||||
#=======================================================================
|
||||
echo -e "\n# Language: fr (or en-GB...)"
|
||||
read -rp \
|
||||
": Website Lang ? " \
|
||||
gsl_set_lang
|
||||
|
||||
gsl__check_settings $gsl_set_lang \
|
||||
&& [[ "$gsl_process_stop" ]] \
|
||||
&& return
|
||||
|
||||
#=======================================================================
|
||||
# Copyright
|
||||
#=======================================================================
|
||||
echo -e "\n# Copyright: 2022 TITLE CC-BY-SA"
|
||||
read -rp \
|
||||
": Website Copyright ? " \
|
||||
gsl_set_cr
|
||||
|
||||
gsl__check_settings $gsl_set_cr \
|
||||
&& [[ "$gsl_process_stop" ]] \
|
||||
&& return
|
||||
|
||||
#=======================================================================
|
||||
# Website Logo
|
||||
#=======================================================================
|
||||
printf '\n%s %s\n' \
|
||||
"# logo: my-logo.png" \
|
||||
"(Put it in $gsl_save_dir_ndd/templates/)"
|
||||
read -rp \
|
||||
": Website logo file NAME ? " \
|
||||
gsl_set_logo
|
||||
|
||||
gsl__check_settings $gsl_set_logo \
|
||||
&& [[ "$gsl_process_stop" ]] \
|
||||
&& return
|
||||
|
||||
#=======================================================================
|
||||
# CSS Acronym
|
||||
#=======================================================================
|
||||
printf '\n%s %s\n' \
|
||||
"# CSS (short) Acronym: myweb !No need to end with _" \
|
||||
"(Will create specific classes like myweb_paragraph)"
|
||||
read -rp \
|
||||
": CSS Acronym ? " \
|
||||
gsl_set_css
|
||||
|
||||
gsl__check_settings $gsl_set_css \
|
||||
&& [[ "$gsl_process_stop" ]] \
|
||||
&& return
|
||||
|
||||
#=======================================================================
|
||||
# Author Reference
|
||||
#=======================================================================
|
||||
printf '\n%s %s\n' \
|
||||
"# Author URL Profile: https://..." \
|
||||
"(Used for meta rel='me')"
|
||||
read -rp \
|
||||
": Author URL Profile ? " \
|
||||
gsl_set_auth_url
|
||||
|
||||
gsl__check_settings $gsl_set_auth_url \
|
||||
&& [[ "$gsl_process_stop" ]] \
|
||||
&& return
|
||||
|
||||
#=======================================================================
|
||||
# Show Resume
|
||||
#=======================================================================
|
||||
clear
|
||||
printf '%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n' \
|
||||
"# New Website configurations..." \
|
||||
": Webserver|$gsl_set_server" \
|
||||
": URL|$gsl_set_url" \
|
||||
": Domain|$gsl_set_ndd" \
|
||||
": Title|$gsl_set_title" \
|
||||
": Description|$gsl_set_about" \
|
||||
": Contact|$gsl_set_mail" \
|
||||
": Keywords|$gsl_set_keys" \
|
||||
": Language|$gsl_set_lang" \
|
||||
": Copyright|$gsl_set_cr" \
|
||||
": Logo File|$gsl_set_logo" \
|
||||
": CSS Acro|$gsl_set_css" \
|
||||
": Author URL|$gsl_set_auth_url" \
|
||||
| column -t -s'|'
|
||||
|
||||
#=======================================================================
|
||||
# Ask to Confirm
|
||||
#=======================================================================
|
||||
echo
|
||||
if [[ -d "$gsl_save_dir_ndd" ]];then
|
||||
printf '%s\n%s\n' \
|
||||
"! A profile already exists in $gsl_save_dir_ndd" \
|
||||
"- Remove (A)LL Directories: $gsl_save_dir_ndd" \
|
||||
"- Remove (F)ile configurations : $gsl_save_conf_ndd" \
|
||||
"- Any other key to cancel" && \
|
||||
gsl__logs_print \
|
||||
"$gsl_log_w" \
|
||||
"Found" \
|
||||
"Profile" \
|
||||
"Configuration from $gsl_set_ndd" \
|
||||
"$gsl_save_conf_ndd"
|
||||
|
||||
read -rp "! Remove (A|F|*) ? " \
|
||||
gsl_ask_remove
|
||||
|
||||
case "$gsl_ask_remove" in
|
||||
A)
|
||||
rm -rf "$gsl_save_dir_ndd" && \
|
||||
gsl__logs_print \
|
||||
"$gsl_log_i" \
|
||||
"Remove" \
|
||||
"Folders" \
|
||||
"Configuration from $gsl_set_ndd" \
|
||||
"$gsl_save_dir_ndd"
|
||||
;;
|
||||
F)
|
||||
rm -f "$gsl_save_conf_ndd" && \
|
||||
gsl__logs_print \
|
||||
"$gsl_log_i" \
|
||||
"Remove" \
|
||||
"File" \
|
||||
"Configuration from $gsl_set_ndd" \
|
||||
"$gsl_save_conf_ndd"
|
||||
gsl_set_confirm="Y"
|
||||
;;
|
||||
*) echo "# Canceled";return ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
! [[ "$gsl_set_confirm" ]] \
|
||||
&& read -rp "$gsl_ask ?" gsl_set_confirm
|
||||
|
||||
case "$gsl_set_confirm" in
|
||||
y|Y)
|
||||
! [[ -d "$gsl_save_dir_ndd/templates" ]] \
|
||||
&& mkdir -p "$gsl_save_dir_ndd/templates" \
|
||||
&& gsl__logs_print \
|
||||
"$gsl_log_i" \
|
||||
"Create" \
|
||||
"Folder" \
|
||||
"Configuration from $gsl_set_ndd" \
|
||||
"$gsl_save_dir_ndd/templates"
|
||||
;;
|
||||
*)
|
||||
gsl__new_website && return
|
||||
;;
|
||||
esac
|
||||
|
||||
#=======================================================================
|
||||
# Save config
|
||||
#=======================================================================
|
||||
printf '%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n' \
|
||||
"gsl_site_server=\"$gsl_set_server\"" \
|
||||
"gsl_site_url=\"$gsl_set_url\"" \
|
||||
"gsl_site_ndd=\"$gsl_set_ndd\"" \
|
||||
"gsl_site_title=\"$gsl_set_title\"" \
|
||||
"gsl_site_about=\"$gsl_set_about\"" \
|
||||
"gsl_site_mail=\"$gsl_set_mail\"" \
|
||||
"gsl_site_keys=\"$gsl_set_keys\"" \
|
||||
"gsl_site_lang=\"$gsl_set_lang\"" \
|
||||
"gsl_site_cr=\"$gsl_set_cr\"" \
|
||||
"gsl_site_logo=\"$gsl_set_logo\"" \
|
||||
"gsl_site_css=\"$gsl_set_css\"" \
|
||||
"gsl_site_auth_url=\"$gsl_set_auth_url\"" \
|
||||
> "$gsl_save_conf_ndd"
|
||||
|
||||
if ! [[ `grep "$gsl_save_dir_ndd" "$gsl_file_db_domains"` ]];then
|
||||
echo "$gsl_save_dir_ndd" >> "$gsl_file_db_domains" && \
|
||||
gsl__logs_print \
|
||||
"$gsl_log_i" \
|
||||
"Create" \
|
||||
"File" \
|
||||
"Configuration from $gsl_set_ndd" \
|
||||
"$gsl_file_db_domains"
|
||||
fi
|
||||
}
|
||||
|
||||
#=======================================================================
|
||||
# Check if no Response from $@
|
||||
#=======================================================================
|
||||
gsl__check_settings() {
|
||||
case "$@" in
|
||||
"")
|
||||
gsl_process_stop=true
|
||||
echo "! Abandon... Maybe next time"
|
||||
return
|
||||
;;
|
||||
esac
|
||||
}
|
|
@ -0,0 +1,155 @@
|
|||
#!/bin/bash
|
||||
# file: gsl__post_checkers
|
||||
# Folder: /var/lib/gsl/scripts
|
||||
# By echolib
|
||||
# License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
|
||||
|
||||
#=======================================================================
|
||||
# From: gsl__loop_posts | Check Post from modules
|
||||
#=======================================================================
|
||||
gsl__post_all_checkers() {
|
||||
clear
|
||||
unset gsl_check_done
|
||||
|
||||
echo -n ": Searching for Headers..."
|
||||
gsl__post_check_headers
|
||||
echo -ne "\r\033[2K: Searching for #1..."
|
||||
gsl__post_check_h1
|
||||
|
||||
echo
|
||||
|
||||
# End of checkers : show logs for war and err
|
||||
[[ "$gsl_checker_war" ]] \
|
||||
&& gsl log -s -w
|
||||
|
||||
[[ "$gsl_checker_err" ]] \
|
||||
&& gsl log -s -e
|
||||
|
||||
}
|
||||
|
||||
#=======================================================================
|
||||
# Check Post for VALID Content HEADERS
|
||||
#=======================================================================
|
||||
gsl__post_check_headers() {
|
||||
#
|
||||
# Check if Missing NEEDED HEADERS
|
||||
#
|
||||
|
||||
# Title
|
||||
gsl_header_title=`gsl__get_header "$gsl_marker_title" "$gsl_post"`
|
||||
! [[ "$gsl_header_title" ]] \
|
||||
&& gsl__logs_print \
|
||||
"$gsl_log_e" \
|
||||
"Title" \
|
||||
"Post" \
|
||||
"Missing" \
|
||||
"${PWD}/$gsl_post" \
|
||||
&& gsl_checker_err=true
|
||||
|
||||
# Slug
|
||||
gsl_header_slug=`gsl__get_header "$gsl_marker_slug" "$gsl_post"`
|
||||
! [[ "$gsl_header_slug" ]] \
|
||||
&& gsl__logs_print \
|
||||
"$gsl_log_e" \
|
||||
"Slug" \
|
||||
"Post" \
|
||||
"Missing" \
|
||||
"${PWD}/$gsl_post" \
|
||||
&& gsl_checker_err=true
|
||||
|
||||
# Author
|
||||
gsl_header_author=`gsl__get_header "$gsl_marker_author" "$gsl_post"`
|
||||
! [[ "$gsl_header_author" ]] \
|
||||
&& gsl__logs_print \
|
||||
"$gsl_log_e" \
|
||||
"Author" \
|
||||
"Post" \
|
||||
"Missing" \
|
||||
"${PWD}/$gsl_post" \
|
||||
&& gsl_checker_err=true
|
||||
|
||||
# Date
|
||||
gsl_header_date=`gsl__get_header "$gsl_marker_date" "$gsl_post"`
|
||||
! [[ "$gsl_header_date" ]] \
|
||||
&& gsl__logs_print \
|
||||
"$gsl_log_e" \
|
||||
"Date" \
|
||||
"Post" \
|
||||
"Missing" \
|
||||
"${PWD}/$gsl_post" \
|
||||
&& gsl_checker_err=true
|
||||
|
||||
# Description
|
||||
gsl_header_info=`gsl__get_header "$gsl_marker_info" "$gsl_post"`
|
||||
! [[ "$gsl_header_info" ]] \
|
||||
&& gsl__logs_print \
|
||||
"$gsl_log_e" \
|
||||
"Infos" \
|
||||
"Post" \
|
||||
"Missing" \
|
||||
"${PWD}/$gsl_post" \
|
||||
&& gsl_checker_err=true
|
||||
|
||||
#
|
||||
# Check for VALID Content HEADERS
|
||||
#
|
||||
|
||||
# Author registred
|
||||
if ! [[ `grep "$gsl_header_author" "$gsl_file_auth_ndd"` ]];then
|
||||
gsl__logs_print \
|
||||
"$gsl_log_e" \
|
||||
"Author" \
|
||||
"Post" \
|
||||
"$gsl_header_author not registred for domain $gsl_find_domain" \
|
||||
"${PWD}/$gsl_post"
|
||||
gsl_checker_err=true
|
||||
fi
|
||||
|
||||
# Date Format YYYY-MM-DD
|
||||
if ! [[ "$gsl_header_date" =~ $gsl_test_date ]];then
|
||||
gsl__logs_print \
|
||||
"$gsl_log_e" \
|
||||
"Date" \
|
||||
"Post" \
|
||||
"$gsl_header_date not YYYY-MM-DD" \
|
||||
"${PWD}/$gsl_post"
|
||||
gsl_checker_err=true
|
||||
fi
|
||||
|
||||
[[ "$gsl_checker_err" ]] && return
|
||||
|
||||
# Slug format title-post
|
||||
gsl_header_slug_test=${gsl_header_slug// /-}
|
||||
if ! [[ "$gsl_header_slug" == "$gsl_header_slug_test" ]];then
|
||||
gsl_new_header_slug="$gsl_marker_slug$gsl_header_slug_test"
|
||||
sed -i "s|$gsl_marker_slug$gsl_header_slug|$gsl_new_header_slug" \
|
||||
"$gsl_post" && \
|
||||
gsl__logs_print \
|
||||
"$gsl_log_w" \
|
||||
"Slug" \
|
||||
"Post" \
|
||||
"Changed: $gsl_header_slug_test" \
|
||||
"${PWD}/$gsl_post"
|
||||
gsl_checker_war=true
|
||||
fi
|
||||
}
|
||||
|
||||
#=======================================================================
|
||||
# Check Post for begining content
|
||||
#=======================================================================
|
||||
gsl__post_check_h1() {
|
||||
gsl_post_begin=`
|
||||
grep -n "#1" $gsl_post \
|
||||
| head -1 \
|
||||
| awk -F: '{print $1}'`
|
||||
|
||||
if ! [[ "$gsl_post_begin" ]];then
|
||||
gsl__logs_print \
|
||||
"$gsl_log_e" \
|
||||
"Begin" \
|
||||
"Post" \
|
||||
"Missing content: #1 TITLE" \
|
||||
"${PWD}/$gsl_post"
|
||||
gsl_checker_err=true
|
||||
fi
|
||||
}
|
|
@ -0,0 +1,104 @@
|
|||
#!/bin/bash
|
||||
# file: gsl__post_manager
|
||||
# Folder: /var/lib/gsl/scripts
|
||||
# By echolib
|
||||
# License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
|
||||
|
||||
#=======================================================================
|
||||
# Check if posts from PWD folder
|
||||
#=======================================================================
|
||||
gsl__check_nbr_posts() {
|
||||
gsl_nbr_posts=`ls -1 *.gsl 2>/dev/null | wc -l`
|
||||
(( $gsl_nbr_posts == 0 )) \
|
||||
&& echo "! No Posts found with .gsl extension"
|
||||
}
|
||||
|
||||
#=======================================================================
|
||||
# Read from Post list
|
||||
#=======================================================================
|
||||
gsl__loop_posts() {
|
||||
for gsl_post in `ls -1 *.gsl 2>/dev/null`
|
||||
do
|
||||
# Post too small
|
||||
gsl__post_hash_size
|
||||
if (( "$gsl_post_size" <= $gsl_post_min_size ));then
|
||||
gsl__logs_print \
|
||||
"$gsl_log_e" \
|
||||
"Post" \
|
||||
"Size" \
|
||||
"Too small $gsl_post_size <= $gsl_post_min_size" \
|
||||
"${PWD}/$gsl_post"
|
||||
continue
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
check)
|
||||
gsl__post_compare_hash && continue
|
||||
gsl__logs_print \
|
||||
"$gsl_log_i" \
|
||||
"Reading" \
|
||||
"Post" \
|
||||
"$gsl_post" \
|
||||
"${PWD}"
|
||||
gsl__post_all_checkers
|
||||
|
||||
# No error: Check/Write to DB (posts.db)
|
||||
if ! [[ "$gsl_checker_err" ]];then
|
||||
gsl_process="Checked"
|
||||
gsl__db_line_post
|
||||
fi
|
||||
;;
|
||||
|
||||
make)
|
||||
gsl_process="Made"
|
||||
gsl__db_post_exists "$gsl_file_db_posts"
|
||||
if [[ "$gsl_db_post_status" == "Made" ]];then
|
||||
gsl__logs_print
|
||||
"$gsl_log_w" \
|
||||
"Post" \
|
||||
"Make" \
|
||||
"$gsl_post already Made (Converted)" \
|
||||
"$gsl_file_db_posts"
|
||||
continue
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
[[ "$gsl_check_done" ]] \
|
||||
&& echo "# All posts already checked"
|
||||
}
|
||||
|
||||
#=======================================================================
|
||||
# Get Post Hash
|
||||
#=======================================================================
|
||||
gsl__post_hash_size() {
|
||||
gsl_post_csum=`cksum "$gsl_post"`
|
||||
gsl_post_hash=`awk '{print $1}' <<< "$gsl_post_csum"`
|
||||
gsl_post_size=`awk '{print $2}' <<< "$gsl_post_csum"`
|
||||
}
|
||||
|
||||
#=======================================================================
|
||||
# Check if Post has same Hash
|
||||
#=======================================================================
|
||||
gsl__post_compare_hash() {
|
||||
gsl__db_post_hash
|
||||
if [[ "$gsl_db_post_hash" == "$gsl_post_hash" ]];then
|
||||
gsl__logs_print \
|
||||
"$gsl_log_i" \
|
||||
"Post" \
|
||||
"Hash" \
|
||||
"$gsl_post already Checked from $gsl_post_hash" \
|
||||
"$gsl_file_db_posts"
|
||||
gsl_check_done=true
|
||||
fi
|
||||
}
|
||||
|
||||
#=======================================================================
|
||||
# Get everything after the marker. $1: marker | $2: File
|
||||
#=======================================================================
|
||||
gsl__get_header() {
|
||||
awk -F"$1" -v marker="$1" \
|
||||
'{if ($0 ~ marker) print $2}' \
|
||||
"$2" 2>/dev/null
|
||||
}
|
|
@ -0,0 +1,89 @@
|
|||
#!/bin/bash
|
||||
# file: gsl__tools
|
||||
# Folder: /var/lib/gsl/scripts
|
||||
# By echolib
|
||||
# License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
|
||||
|
||||
#=======================================================================
|
||||
# Tool: Source if found
|
||||
#=======================================================================
|
||||
gsl__check_source() {
|
||||
if [[ -f "$1" ]];then
|
||||
source "$1"
|
||||
else
|
||||
echo "! Missing file: $1"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
#=======================================================================
|
||||
# Tool: Check needed file
|
||||
#=======================================================================
|
||||
gsl__check_file() {
|
||||
if ! [[ -f "$1" ]];then
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
#=======================================================================
|
||||
# Check Needed Folders, and create needed files
|
||||
#=======================================================================
|
||||
# Folders
|
||||
gsl__create_ff() {
|
||||
for gsl_folder in "$gsl_dir_db" \
|
||||
"$gsl_dir_logs"
|
||||
do
|
||||
if ! [[ -d "$gsl_folder" ]];then
|
||||
echo ": Creating $gsl_folder and give permissions to $USER"
|
||||
sudo mkdir -p "$gsl_folder" && \
|
||||
sudo chown -R $USER:$USER "$gsl_folder"
|
||||
fi
|
||||
done
|
||||
|
||||
# Files
|
||||
for gsl_file in "$gsl_file_logs" \
|
||||
"$gsl_file_db_posts" \
|
||||
"$gsl_file_db_stats" \
|
||||
"$gsl_file_db_domains"
|
||||
do
|
||||
gsl__check_file "$gsl_file" || \
|
||||
touch "$gsl_file"
|
||||
done
|
||||
}
|
||||
|
||||
#=======================================================================
|
||||
# Check if PWD is configure for DOMAIN
|
||||
#=======================================================================
|
||||
gsl__find_domain() {
|
||||
gsl_nbr_domains=`
|
||||
find . -maxdepth 1 -not -type d -type f -iname "gsl.*.*" 2>/dev/null \
|
||||
| wc -l`
|
||||
if (( $gsl_nbr_domains > 1 ));then
|
||||
echo "! Too much domains registred here: Set only One per folder"
|
||||
return
|
||||
elif (( $gsl_nbr_domains == 0 ));then
|
||||
echo "! No registred domain here: change or set folder. See help new"
|
||||
return
|
||||
fi
|
||||
|
||||
gsl_find_domain=`
|
||||
find . -maxdepth 1 -not -type d -type f -iname "gsl.*.*" 2>/dev/null`
|
||||
|
||||
if [[ "$gsl_find_domain" ]];then
|
||||
gsl_find_domain=`
|
||||
awk -F"." '{print $(NF-1)"."$NF}' \
|
||||
<<< $gsl_find_domain`
|
||||
gsl_find_domain=${gsl_find_domain,,}
|
||||
|
||||
gsl__check_domain "$gsl_find_domain"
|
||||
fi
|
||||
}
|
||||
|
||||
#=======================================================================
|
||||
# Check and set domain from db
|
||||
#=======================================================================
|
||||
gsl__check_domain() {
|
||||
gsl_this_conf_domain=`grep "$1" "$gsl_file_db_domains"`
|
||||
! [[ "$gsl_this_conf_domain" ]] \
|
||||
&& echo "! Domain Not found: $1"
|
||||
}
|
Loading…
Reference in New Issue