From c4e4846ae52a95c81672e32378c279677fd45102 Mon Sep 17 00:00:00 2001 From: John D Pell Date: Sun, 19 Sep 2021 10:40:27 -0700 Subject: [PATCH] completion/sqlmap: simplify code flow (whitespace) Convert from indented if-block to return then unindented code. This should have basically one line change at the top, one line removed at the bottom, and then all whitespace. Apply `shfmt`, but `shellcheck` is an absolute mess, so don't add to `clean_files.txt` yet. --- completion/available/sqlmap.completion.bash | 300 ++++++++++---------- 1 file changed, 148 insertions(+), 152 deletions(-) diff --git a/completion/available/sqlmap.completion.bash b/completion/available/sqlmap.completion.bash index 213dd81736..0ad06938dc 100644 --- a/completion/available/sqlmap.completion.bash +++ b/completion/available/sqlmap.completion.bash @@ -7,162 +7,158 @@ # | # ---------------------------------------------------------------------------+ -if _command_exists sqlmap -then +_command_exists sqlmap || return - function _sqlmap() - { - local cur prev +function _sqlmap() { + local cur prev - COMPREPLY=() - cur="$(_get_cword)" - prev="$(_get_pword)" + COMPREPLY=() + cur="$(_get_cword)" + prev="$(_get_pword)" - case $prev in + case $prev in - # List directory content - --tamper) - COMPREPLY=( $( compgen -W "$tamper" -- "$cur" ) ) - return 0 - ;; - --output-dir|-t|-l|-m|-r|--load-cookies|--proxy-file|--sql-file|--shared-lib|--file-write) - _filedir - return 0 - ;; - -c) - _filedir ini - return 0 - ;; - --method) - COMPREPLY=( $( compgen -W 'GET POST PUT' -- "$cur" ) ) - return 0 - ;; - --auth-type) - COMPREPLY=( $( compgen -W 'Basic Digest NTLM PKI' -- "$cur" ) ) - return 0 - ;; - --tor-type) - COMPREPLY=( $( compgen -W 'HTTP SOCKS4 SOCKS5' -- "$cur" ) ) - return 0 - ;; - -v) - COMPREPLY=( $( compgen -W '1 2 3 4 5 6' -- "$cur" ) ) - return 0 - ;; - --dbms) - COMPREPLY=( $( compgen -W 'mysql mssql access postgres' -- "$cur" ) ) - return 0 - ;; - --level|--crawl) - COMPREPLY=( $( compgen -W '1 2 3 4 5' -- "$cur" ) ) - return 0 - ;; - --risk) - COMPREPLY=( $( compgen -W '0 1 2 3' -- "$cur" ) ) - return 0 - ;; - --technique) - COMPREPLY=( $( compgen -W 'B E U S T Q' -- "$cur" ) ) - return 0 - ;; - -s) - _filedir sqlite - return 0 - ;; - --dump-format) - COMPREPLY=( $( compgen -W 'CSV HTML SQLITE' -- "$cur" ) ) - return 0 - ;; - -x) - _filedir xml - return 0 - ;; - esac + # List directory content + --tamper) + COMPREPLY=($(compgen -W "$tamper" -- "$cur")) + return 0 + ;; + --output-dir | -t | -l | -m | -r | --load-cookies | --proxy-file | --sql-file | --shared-lib | --file-write) + _filedir + return 0 + ;; + -c) + _filedir ini + return 0 + ;; + --method) + COMPREPLY=($(compgen -W 'GET POST PUT' -- "$cur")) + return 0 + ;; + --auth-type) + COMPREPLY=($(compgen -W 'Basic Digest NTLM PKI' -- "$cur")) + return 0 + ;; + --tor-type) + COMPREPLY=($(compgen -W 'HTTP SOCKS4 SOCKS5' -- "$cur")) + return 0 + ;; + -v) + COMPREPLY=($(compgen -W '1 2 3 4 5 6' -- "$cur")) + return 0 + ;; + --dbms) + COMPREPLY=($(compgen -W 'mysql mssql access postgres' -- "$cur")) + return 0 + ;; + --level | --crawl) + COMPREPLY=($(compgen -W '1 2 3 4 5' -- "$cur")) + return 0 + ;; + --risk) + COMPREPLY=($(compgen -W '0 1 2 3' -- "$cur")) + return 0 + ;; + --technique) + COMPREPLY=($(compgen -W 'B E U S T Q' -- "$cur")) + return 0 + ;; + -s) + _filedir sqlite + return 0 + ;; + --dump-format) + COMPREPLY=($(compgen -W 'CSV HTML SQLITE' -- "$cur")) + return 0 + ;; + -x) + _filedir xml + return 0 + ;; + esac - if [[ "$cur" == * ]]; then - COMPREPLY=( $( compgen -W '-h --help -hh --version -v -d -u --url -l -x -m -r -g -c --method \ - --data --param-del --cookie --cookie-del --load-cookies \ - --drop-set-cookie --user-agent --random-agent --host --referer \ - --headers --auth-type --auth-cred --auth-private --ignore-401 \ - --proxy --proxy-cred --proxy-file --ignore-proxy --tor --tor-port \ - --tor-type --check-tor --delay --timeout --retries --randomize \ - --safe-url --safe-freq --skip-urlencode --csrf-token --csrf-url \ - --force-ssl --hpp --eval -o --predict-output --keep-alive \ - --null-connection --threads -p --skip --dbms --dbms-cred \ - --os --invalid-bignum --invalid-logical --invalid-string \ - --no-cast --no-escape --prefix --suffix --tamper --level \ - --risk --string --not-string --regexp --code --text-only \ - --titles --technique --time-sec --union-cols --union-char \ - --union-from --dns-domain --second-order -f --fingerprint \ - -a --all -b --banner --current-user --current-db --hostname \ - --is-dba --users --passwords --privileges --roles --dbs --tables \ - --columns --schema --count --dump --dump-all --search --comments \ - -D -T -C -X -U --exclude-sysdbs --where --start --stop \ - --first --last --sql-query --sql-shell --sql-file --common-tables \ - --common-columns --udf-inject --shared-lib --file-read --file-write \ - --file-dest --os-cmd --os-shell --os-pwn --os-smbrelay --os-bof \ - --priv-esc --msf-path --tmp-path --reg-read --reg-add --reg-del \ - --reg-key --reg-value --reg-data --reg-type -s -t --batch \ - --charset --crawl --csv-del --dump-format --eta --flush-session \ - --forms --fresh-queries --hex --output-dir --parse-errors \ - --pivot-column --save --scope --test-filter --update \ - -z --alert --answers --beep --check-waf --cleanup \ - --dependencies --disable-coloring --gpage --identify-waf \ - --mobile --page-rank --purge-output --smart \ - --sqlmap-shell --wizard' -- "$cur" ) ) - # this removes any options from the list of completions that have - # already been specified somewhere on the command line, as long as - # these options can only be used once (in a word, "options", in - # opposition to "tests" and "actions", as in the find(1) manpage). - onlyonce=' -h --help -hh --version -v -d -u --url -l -x -m -r -g -c \ - --drop-set-cookie --random-agent \ - --ignore-401 \ - --ignore-proxy --tor \ - --check-tor \ - --skip-urlencode \ - --force-ssl --hpp -o --predict-output --keep-alive \ - --null-connection -p \ - --invalid-bignum --invalid-logical --invalid-string \ - --no-cast --no-escape \ - --text-only \ - --titles \ - -f --fingerprint \ - -a --all -b --banner --current-user --current-db --hostname \ - --is-dba --users --passwords --privileges --roles --dbs --tables \ - --columns --schema --count --dump --dump-all --search --comments \ - -D -T -C -X -U --exclude-sysdbs \ - --sql-shell --common-tables \ - --common-columns --udf-inject \ - --os-shell --os-pwn --os-smbrelay --os-bof \ - --priv-esc --reg-read --reg-add --reg-del \ - -s -t --batch \ - --eta --flush-session \ - --forms --fresh-queries --hex --parse-errors \ - --save --update \ - -z --beep --check-waf --cleanup \ - --dependencies --disable-coloring --identify-waf \ - --mobile --page-rank --purge-output --smart \ - --sqlmap-shell --wizard ' - COMPREPLY=( $( \ - (while read -d ' ' i; do - [[ -z "$i" || "${onlyonce/ ${i%% *} / }" == "$onlyonce" ]] && - continue - # flatten array with spaces on either side, - # otherwise we cannot grep on word boundaries of - # first and last word - COMPREPLY=" ${COMPREPLY[@]} " - # remove word from list of completions - COMPREPLY=( ${COMPREPLY/ ${i%% *} / } ) - done - printf '%s ' "${COMPREPLY[@]}") <<<"${COMP_WORDS[@]}" - ) ) + if [[ "$cur" == * ]]; then + COMPREPLY=($(compgen -W '-h --help -hh --version -v -d -u --url -l -x -m -r -g -c --method \ + --data --param-del --cookie --cookie-del --load-cookies \ + --drop-set-cookie --user-agent --random-agent --host --referer \ + --headers --auth-type --auth-cred --auth-private --ignore-401 \ + --proxy --proxy-cred --proxy-file --ignore-proxy --tor --tor-port \ + --tor-type --check-tor --delay --timeout --retries --randomize \ + --safe-url --safe-freq --skip-urlencode --csrf-token --csrf-url \ + --force-ssl --hpp --eval -o --predict-output --keep-alive \ + --null-connection --threads -p --skip --dbms --dbms-cred \ + --os --invalid-bignum --invalid-logical --invalid-string \ + --no-cast --no-escape --prefix --suffix --tamper --level \ + --risk --string --not-string --regexp --code --text-only \ + --titles --technique --time-sec --union-cols --union-char \ + --union-from --dns-domain --second-order -f --fingerprint \ + -a --all -b --banner --current-user --current-db --hostname \ + --is-dba --users --passwords --privileges --roles --dbs --tables \ + --columns --schema --count --dump --dump-all --search --comments \ + -D -T -C -X -U --exclude-sysdbs --where --start --stop \ + --first --last --sql-query --sql-shell --sql-file --common-tables \ + --common-columns --udf-inject --shared-lib --file-read --file-write \ + --file-dest --os-cmd --os-shell --os-pwn --os-smbrelay --os-bof \ + --priv-esc --msf-path --tmp-path --reg-read --reg-add --reg-del \ + --reg-key --reg-value --reg-data --reg-type -s -t --batch \ + --charset --crawl --csv-del --dump-format --eta --flush-session \ + --forms --fresh-queries --hex --output-dir --parse-errors \ + --pivot-column --save --scope --test-filter --update \ + -z --alert --answers --beep --check-waf --cleanup \ + --dependencies --disable-coloring --gpage --identify-waf \ + --mobile --page-rank --purge-output --smart \ + --sqlmap-shell --wizard' -- "$cur")) + # this removes any options from the list of completions that have + # already been specified somewhere on the command line, as long as + # these options can only be used once (in a word, "options", in + # opposition to "tests" and "actions", as in the find(1) manpage). + onlyonce=' -h --help -hh --version -v -d -u --url -l -x -m -r -g -c \ + --drop-set-cookie --random-agent \ + --ignore-401 \ + --ignore-proxy --tor \ + --check-tor \ + --skip-urlencode \ + --force-ssl --hpp -o --predict-output --keep-alive \ + --null-connection -p \ + --invalid-bignum --invalid-logical --invalid-string \ + --no-cast --no-escape \ + --text-only \ + --titles \ + -f --fingerprint \ + -a --all -b --banner --current-user --current-db --hostname \ + --is-dba --users --passwords --privileges --roles --dbs --tables \ + --columns --schema --count --dump --dump-all --search --comments \ + -D -T -C -X -U --exclude-sysdbs \ + --sql-shell --common-tables \ + --common-columns --udf-inject \ + --os-shell --os-pwn --os-smbrelay --os-bof \ + --priv-esc --reg-read --reg-add --reg-del \ + -s -t --batch \ + --eta --flush-session \ + --forms --fresh-queries --hex --parse-errors \ + --save --update \ + -z --beep --check-waf --cleanup \ + --dependencies --disable-coloring --identify-waf \ + --mobile --page-rank --purge-output --smart \ + --sqlmap-shell --wizard ' + COMPREPLY=($( + ( + while read -d ' ' i; do + [[ -z "$i" || "${onlyonce/ ${i%% *} / }" == "$onlyonce" ]] && continue + # flatten array with spaces on either side, + # otherwise we cannot grep on word boundaries of + # first and last word + COMPREPLY=" ${COMPREPLY[@]} " + # remove word from list of completions + COMPREPLY=(${COMPREPLY/ ${i%% *} / }) + done + printf '%s ' "${COMPREPLY[@]}" + ) <<< "${COMP_WORDS[@]}" + )) - # else - # _filedir bat - fi - } + #else + #_filedir bat + fi +} - - complete -F _sqlmap sqlmap - -fi +complete -F _sqlmap sqlmap