Changeset 38787


Ignore:
Timestamp:
2013-11-13T11:49:41+01:00 (4 years ago)
Author:
blogic
Message:

procd: convert services to the new validation api

Signed-off-by: John Crispin <blogic@…>

Location:
trunk/package
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/network/services/dropbear/files/dropbear.init

    r38142 r38787  
    1313EXTRA_HELP="    killclients Kill ${NAME} processes except servers and yourself" 
    1414 
     15append_ports() 
     16{ 
     17        local ifname="$1" 
     18        local port="$2" 
     19 
     20        grep -qs "^ *$ifname:" /proc/net/dev || { 
     21                procd_append_param command -p "$port" 
     22                return 
     23        } 
     24 
     25        for addr in $( 
     26                ifconfig "$ifname" | sed -ne ' 
     27                        /addr: *fe[89ab][0-9a-f]:/d 
     28                        s/.* addr: *\([0-9a-f:\.]*\).*/\1/p 
     29                ' 
     30        ); do 
     31                procd_append_param command -p "$addr:$port" 
     32        done 
     33} 
     34 
     35validate_section_dropbear() 
     36{ 
     37        uci_validate_section dropbear dropbear "${1}" \ 
     38                'PasswordAuth:bool:1' \ 
     39                'enable:bool:1' \ 
     40                'Interface:string' \ 
     41                'GatewayPorts:integer:0' \ 
     42                'RootPasswordAuth:bool:1' \ 
     43                'RootLogin:bool:1' \ 
     44                'rsakeyfile:file' \ 
     45                'dsskeyfile:file' \ 
     46                'BannerFile:file' \ 
     47                'Port:list(port):22' 
     48        return $? 
     49} 
     50 
    1551dropbear_instance() 
    1652{ 
    17         append_ports() 
    18         { 
    19                 local ifname="$1" 
    20                 local port="$2" 
     53        local PasswordAuth enable Interface GatewayPorts \ 
     54                RootPasswordAuth RootLogin rsakeyfile \ 
     55                dsskeyfile BannerFile Port 
    2156 
    22                 grep -qs "^ *$ifname:" /proc/net/dev || { 
    23                         procd_append_param command -p "$port" 
    24                         return 
    25                 } 
    26  
    27                 for addr in $( 
    28                         ifconfig "$ifname" | sed -ne ' 
    29                                 /addr: *fe[89ab][0-9a-f]:/d 
    30                                 s/.* addr: *\([0-9a-f:\.]*\).*/\1/p 
    31                         ' 
    32                 ); do 
    33                         procd_append_param command -p "$addr:$port" 
    34                 done 
     57        validate_section_dropbear "${1}" || { 
     58                echo "validation failed" 
     59                return 1 
    3560        } 
    3661 
    37  
    38         local section="$1" 
    39  
    40         # check if section is enabled (default) 
    41         local enabled 
    42         config_get_bool enabled "${section}" enable 1 
    43         [ "${enabled}" -eq 0 ] && return 1 
    44  
    45         # increase pid file count to handle multiple instances correctly 
     62        [ "${enable}" = "0" ] && return 1 
    4663        PIDCOUNT="$(( ${PIDCOUNT} + 1))" 
    47  
    4864        local pid_file="/var/run/${NAME}.${PIDCOUNT}.pid" 
    4965 
    5066        procd_open_instance 
    5167        procd_set_param command "$PROG" -F -P "$pid_file" 
    52  
    53         # prepare parameters (initialise with pid file) 
    54         local val 
    55  
    56         # A) password authentication 
    57         config_get_bool val "${section}" PasswordAuth 1 
    58         [ "${val}" -eq 0 ] && procd_append_param command -s 
    59  
    60         # B) listen interface and port 
    61         local port 
    62         local interface 
    63         config_get interface "${section}" Interface 
    64         [ -n "$interface" ] && network_get_device interface "$interface" 
    65         config_get port "${section}" Port 22 
    66         append_ports "$interface" "$port" 
    67         # C) banner file 
    68         config_get val "${section}" BannerFile 
    69         [ -f "${val}" ] && procd_append_param command -b "${val}" 
    70         # D) gatewayports 
    71         config_get_bool val "${section}" GatewayPorts 0 
    72         [ "${val}" -eq 1 ] && procd_append_param command -a 
    73         # E) root password authentication 
    74         config_get_bool val "${section}" RootPasswordAuth 1 
    75         [ "${val}" -eq 0 ] && procd_append_param command -g 
    76         # F) root login 
    77         config_get_bool val "${section}" RootLogin 1 
    78         [ "${val}" -eq 0 ] && procd_append_param command -w 
    79         # G) host keys 
    80         config_get val "${section}" rsakeyfile 
    81         [ -f "${val}" ] && procd_append_param command -r "${val}" 
    82         config_get val "${section}" dsskeyfile 
    83         [ -f "${val}" ] && procd_append_param command -d "${val}" 
    84  
     68        [ "${PasswordAuth}" -eq 0 ] && procd_append_param command -s 
     69        [ "${GatewayPorts}" -eq 1 ] && procd_append_param command -a 
     70        [ "${RootPasswordAuth}" -eq 0 ] && procd_append_param command -g 
     71        [ "${RootLogin}" -eq 0 ] && procd_append_param command -w 
     72        [ -n "${rsakeyfile}" ] && procd_append_param command -r "${rsakeyfile}" 
     73        [ -n "${dsskeyfile}" ] && procd_append_param command -d "${dsskeyfile}" 
     74        [ -n "${BannerFile}" ] && procd_append_param command -b "${BannerFile}" 
     75        [ -n "${interface}" ] && network_get_device interface "${interface}" 
     76        append_ports "${interface}" "${Port}" 
    8577        procd_close_instance 
    8678} 
     
    124116{ 
    125117        procd_add_reload_trigger "dropbear" 
     118        procd_add_validation validate_section_dropbear 
    126119} 
    127120 
  • trunk/package/utils/busybox/files/sysntpd

    r38142 r38787  
    77PROG=/usr/sbin/ntpd 
    88 
     9validate_ntp_section() { 
     10        uci_validate_section system timeserver "${1}" \ 
     11                'server:list(string)' 'enable_server:bool:0' 
     12} 
     13 
    914start_service() { 
    10         local peers 
    11         local args="-n" 
    12         local enable_server 
     15        local server enable_server peer 
    1316 
    14         config_load system 
    15         config_get peers ntp server 
    16         config_get_bool enable_server ntp enable_server 0 
     17        validate_ntp_section ntp || { 
     18                echo "validation failed" 
     19                return 1 
     20        } 
    1721 
    18         [ $enable_server -eq 0 -a -z "$peers" ] && return 
     22        [ $enable_server -eq 0 -a -z "$server" ] && return 
    1923 
    2024        procd_open_instance 
    2125        procd_set_param command "$PROG" -n 
    22         [ $enable_server -ne 0 ] && procd_append_param command -l 
    23         [ -n "$peers" ] && { 
    24                 local peer 
    25                 for peer in $peers; do 
    26                         procd_append_param command -p $peer 
    27                 done 
    28         } 
     26        [ "$enable_server" = "1" ] && procd_append_param command -l 
     27        for peer in "$server"; do 
     28                procd_append_param command -p $peer 
     29        done 
    2930        procd_set_param respawn 
    3031        procd_close_instance 
     
    3435{ 
    3536        procd_add_reload_trigger "system" 
     37        procd_add_validation validate_ntp_section 
    3638} 
Note: See TracChangeset for help on using the changeset viewer.