summaryrefslogtreecommitdiffstats
path: root/modules.d/95cifs/cifs-lib.sh
blob: b996b41b6575e141ea1c5adeb11d7a93a2c78b5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/sh

# cifs_to_var CIFSROOT
# use CIFSROOT to set $server, $path, and $options.
# CIFSROOT is something like: cifs://[<username>[:<password>]]@<host>/<path>
# NETIF is used to get information from DHCP options, if needed.

type getarg > /dev/null 2>&1 || . /lib/dracut-lib.sh

cifs_to_var() {
    local cifsuser
    local cifspass
    # Check required arguments
    server=${1##cifs://}
    cifsuser=${server%@*}
    cifspass=${cifsuser#*:}
    if [ "$cifspass" != "$cifsuser" ]; then
        cifsuser=${cifsuser%:*}
    else
        cifspass=$(getarg cifspass)
    fi
    if [ "$cifsuser" != "$server" ]; then
        server="${server#*@}"
    else
        cifsuser=$(getarg cifsuser)
    fi

    # shellcheck disable=SC2034
    path=${server#*/}
    # shellcheck disable=SC2034
    server=${server%/*}

    if [ ! "$cifsuser" -o ! "$cifspass" ]; then
        die "For CIFS support you need to specify a cifsuser and cifspass either in the cifsuser and cifspass commandline parameters or in the root= CIFS URL."
    fi
    # shellcheck disable=SC2034
    options="user=$cifsuser,pass=$cifspass,$(getarg rootflags=)"
}