@@ -61,10 +61,10 @@ format_validation() {
6161
6262 # Checking shell
6363 check_shell=$(/usr/bin/chsh --list-shells | grep -w "$val" )
64- if [ -z "$check_shell" ]; then
64+ if [ -z "$1"] || [ -z "$ check_shell" ]; then
6565 echo "Error: shell not found"
66- log_event 'debug' "$E_INVALID $V_EVENT"
67- exit $E_INVALID
66+ log_event 'debug' "$E_NOTEXIST $V_EVENT"
67+ exit $E_NOTEXIST
6868 fi
6969 }
7070
@@ -263,6 +263,64 @@ format_validation() {
263263 fi
264264 }
265265
266+ # Define minute/hour/day/month validator
267+ format_mhd() {
268+ val="$1"
269+ digit=$val
270+ limit=60
271+
272+ if [ "$var" = 'day' ]; then
273+ limit=31
274+ fi
275+ if [ "$var" = 'month' ]; then
276+ limit=12
277+ fi
278+ if [ "$var" = 'wday' ]; then
279+ limit=7
280+ fi
281+
282+ letters=$(echo "$val"|grep -c "[a-Z]")
283+ lslash=$(echo "$val"| grep "^/")
284+ if [ -z "$val" ] || [ 0 -ne "$letters" ] || [ -n "$lslash" ]; then
285+ echo "Error: $var is out of range"
286+ log_event 'debug' "$E_INVALID $V_EVENT"
287+ exit $E_INVALID
288+ fi
289+
290+ special_chars=$(echo "$val" | \
291+ grep -c "[!|@|#|$|^|&|(|)|+|=|{|}|:|,|.|<|>|?|\|\"|'|;|%| ]" )
292+ if [[ 0 -ne "$special_chars" ]] || [ 5 -le ${#val} ]; then
293+ echo "Error: $var is out of range"
294+ log_event 'debug' "$E_INVALID $V_EVENT"
295+ exit $E_INVALID
296+ fi
297+
298+ star=$(echo "$val" |grep '*')
299+ if [ ! -z "$star" ]; then
300+ slash=$(echo $val |grep "^*/")
301+ if [ "$val" != '*' ] && [ -z "$slash" ]; then
302+ echo "Error: $var is out of range"
303+ log_event 'debug' "$E_INVALID $V_EVENT"
304+ exit $E_INVALID
305+ else
306+ if [ -n "$slash" ]; then
307+ digit=$(echo $val | cut -f 2 -d / )
308+ fi
309+ if [ "$val" = '*' ]; then
310+ digit=0
311+ fi
312+ fi
313+ fi
314+
315+ if [ "$limit" -lt "$digit" ]; then
316+ echo "Error: $var is out of range"
317+ log_event 'debug' "$E_INVALID $V_EVENT"
318+ exit $E_INVALID
319+ fi
320+ }
321+
322+
323+
266324 # Defining format_ext function
267325 format_ext() {
268326 val="$1"
@@ -313,6 +371,7 @@ format_validation() {
313371 ssl) format_usr "$v" ;;
314372 domain) format_dom "$v" ;;
315373 database) format_db "$v" ;;
374+ day) format_mhd "$v" ;;
316375 db_user) format_dbu "$v" ;;
317376 dvalue) format_dvl "$v" ;;
318377 fname) format_usr "$v" ;;
@@ -328,6 +387,7 @@ format_validation() {
328387 ns8) format_dom "$v" ;;
329388 email) format_eml "$v" ;;
330389 extentions) format_ext "$v" ;;
390+ hour) format_mhd "$v" ;;
331391 host) format_usr "$v" ;;
332392 interface) format_ifc "$v" ;;
333393 ip) format_ip "$v" ;;
@@ -337,6 +397,8 @@ format_validation() {
337397 mask) format_ip "$v" ;;
338398 max_usr) format_int "$v" ;;
339399 max_db) format_int "$v" ;;
400+ min) format_mhd "$v" ;;
401+ month) format_mhd "$v" ;;
340402 lname) format_usr "$v" ;;
341403 owner) format_usr "$v" ;;
342404 package) format_usr "$v" ;;
@@ -349,6 +411,7 @@ format_validation() {
349411 template) format_usr "$v" ;;
350412 ttl) format_int "$v" ;;
351413 user) format_usr "$v" ;;
414+ wday) format_mhd "$v" ;;
352415 esac
353416 done
354417}
0 commit comments