Sponsored Content
Operating Systems Linux SuSE How to start Apache2 and vsftpd at boot Post 302237411 by real-chess on Wednesday 17th of September 2008 03:44:02 PM
Old 09-17-2008
OpenSuse 11.0

s01:~ # cat /etc/init.d/apache2
#!/bin/sh
#
# Copyright (c) 1996, 1997, 1998 S.u.S.E. GmbH
# Copyright (c) 1998, 1999, 2000, 2001 SuSE GmbH
# Copyright (c) 2002, 2003, (2004?) SuSE Linux AG
# Copyright (c) 2004(?), 2005, 2006, 2007 SUSE Linux Products GmbH
#
# Authors: Rolf Haberrecker <apache@suse.de>, 2001
# Peter Poeml <apache@suse.de>, 2002, 2003, 2004, 2005, 2006, 2007
#
#
# /etc/init.d/apache2
#
### BEGIN INIT INFO
# Provides: apache2 httpd2
# Required-Start: $local_fs $remote_fs $network
# Should-Start: $named $time postgresql sendmail mysql ypclient dhcp radiusd
# Required-Stop: $local_fs $remote_fs $network
# X-UnitedLinux-Should-Stop:
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Apache 2.2 httpd
# Description: Start the httpd daemon Apache
### END INIT INFO

pname=apache2
: ${sysconfdir:=/etc/$pname}
: ${apache_link:=/usr/sbin/httpd2}
: ${sysconfig_apache:=/etc/sysconfig/$pname}
: ${pidfile:=/var/run/httpd2.pid}
: ${logdir:=/var/log/$pname}
: ${homedir:=/var/lib/$pname}

#
# load the configuration
#
test -s /etc/rc.status && . /etc/rc.status && rc_reset

. /usr/share/$pname/load_configuration
export ${!APACHE_*}

httpd_conf=${APACHE_HTTPD_CONF:-$sysconfdir/httpd.conf}

apache_bin=$(/usr/share/$pname/find_mpm 2>/dev/null)

test -L $apache_link && apache_bin=$(readlink $apache_link)

if [ -z "$APACHE_MPM" ]; then
APACHE_MPM=${apache_bin##*-}
fi

if ! [ -x $apache_bin ]; then
echo >&2 ${warn}$apache_bin-$APACHE_MPM is not a valid httpd2 binary.
echo >&2 Check your APACHE_MPM setting in /etc/sysconfig/$pname. $norm
rc_failed 5
rc_status -v1
rc_exit
fi

# a proper home should be set, otherwise the server might end up
# with HOME=/root and some script might try to use that
HOME=$homedir

get_server_flags()
{
unset server_flags
case "$action" in startssl) server_flags="-DSSL";; esac
for i in $APACHE_SERVER_FLAGS; do
case $i in
-D) ;;
-D*) server_flags="$server_flags $i";;
*) server_flags="$server_flags -D$i";;
esac
done
}

action="$1"
case "$action" in
stop|try-restart|*status*|probe)
;;
*)
shift; get_server_flags
${get_module_list_done:=false} || /usr/share/$pname/get_module_list && export get_module_list_done=true
${get_includes:=false} || /usr/share/$pname/get_includes && export get_includes_done=true
;;
esac

#
# main part
#
case "$action" in
start*)
if [ -e $pidfile ]; then
$0 status &>/dev/null
ret=$?
if [ $ret = 1 ]; then
echo "Warning: found stale pidfile (unclean shutdown?)"
elif [ $ret = 0 ]; then
echo "Apache is already running ($pidfile)"
rc_failed $ret
rc_status -v1
rc_exit
fi
fi

echo -n "Starting httpd2 (${APACHE_MPM:-${apache_bin#*-}}) "
cmdline=$(echo $apache_bin -f $httpd_conf $server_flags "$@")
if eval $cmdline -t > $logdir/rc$pname.out 2>&1 ; then
export -n ${!APACHE_*}
eval startproc -f -t ${APACHE_START_TIMEOUT:-2} $cmdline
ret=$?

if test -t 1 && stty -a 2>/dev/null | grep -q -- -echo\ ; then
# this means that apache was still waiting for a passphrase to be entered
stty echo 2>/dev/null
echo;echo
echo >&2 An SSL passphrase has not been entered within ${APACHE_START_TIMEOUT:-<not set>} seconds.
echo >&2 To increase this timeout, adjust APACHE_START_TIMEOUT in $sysconfig_apache .
# this surely means that apache won't start, despite it looked good to startproc
killall $apache_bin
echo >&2 "Trying to start the server without SSL (-D NOSSL)."
$0 start "$@" -D NOSSL
# rc_failed 1
# rc_status -v1
# rc_exit
else
rc_failed $ret
rc_status -v
fi
else
if [ "$link" = "$base" ] ; then
cat $logdir/rc$pname.out
echo >&2
echo >&2 The command line was:
echo >&2 $cmdline
echo >&2
else
echo -e -n "\nsee $logdir/rc$pname.out for details\n";
fi
rc_failed 1
rc_status -v1
fi
;;
stop)
echo -n "Shutting down httpd2 "
if [ ! -f $pidfile -a -f $pidfile.rpmsave ]; then mv $pidfile.rpmsave $pidfile; fi
if ! [ -f $pidfile ]; then
echo -n "(not running)"
else
pid=$(<$pidfile)
kill -TERM $pid 2>/dev/null
case $? in
1) echo -n "(not running)";;
0) # wait until the processes are gone (the parent is the last one)
echo -n "(waiting for all children to terminate) "
for ((wait=0; wait<120; wait++)); do
if test -f $pidfile; then
usleep 500000
continue
fi
if ! test -f /proc/$pid/exe; then
break
fi
if test "$(readlink /proc/$pid/exe 2>/dev/null)" = $apache_bin; then
usleep 500000
else
break
fi

done
;;
esac
fi

rc_status -v
;;
stop-graceful)
echo "Shutting down httpd2 gracefully (SIGWINCH)"
if ! [ -f $pidfile ]; then
echo -n "(not running)"
else
pid=$(<$pidfile)
kill -WINCH $pid 2>/dev/null
case $? in
1) echo -n "(not running)";;
0) # wait until the pidfile is gone. The parent stays there, but closes the listen ports.
echo -n "(waiting for parent to close listen ports and remove pidfile) "
for ((wait=0; wait<120; wait++)); do
if test -f $pidfile; then
usleep 500000
continue
else
break
fi
done
;;
esac
fi

rc_status -v
;;
try-restart)
## Do a restart only if the service was active before.
## Note: try-restart is now part of LSB (as of 1.9).
## RH has a similar command named condrestart.
$0 status
if test $? = 0; then
$0 restart
else
rc_reset # Not running is not a failure.
fi
# Remember status and be quiet
rc_status
;;
restart)
$0 configtest "$@" || { rc_failed $?; rc_exit; }

if $0 status &>/dev/null; then
$0 stop
fi
$0 start "$@"
# Remember status and be quiet
rc_status
;;
restart-hup)
$0 configtest "$@" || { rc_failed $?; rc_exit; }

if $0 status &>/dev/null; then
echo -n "Restarting httpd2 (SIGHUP)"
kill -HUP $(<$pidfile) || return=$rc_failed
else
$0 start "$@"
fi
# Remember status and be quiet
rc_status -v
;;
restart-graceful)
$0 configtest "$@" || { rc_failed $?; rc_exit; }

if $0 status &>/dev/null; then
$0 stop-graceful "$@"
$0 start "$@"
else
$0 start "$@"
fi
# Remember status and be quiet
rc_status
;;
reload|force-reload|graceful)
echo -n "Reload httpd2 (graceful restart)"
cmdline=$(echo $apache_bin -f $httpd_conf $server_flags "$@")
if eval $cmdline -t &> $logdir/rc$pname.out; then
killproc -USR1 $apache_bin || return=$rc_failed
rc_status -v
else
if [ "$link" = "$base" ] ; then
echo -e -n "\n\n"
cat $logdir/rc$pname.out
echo >&2
echo >&2 The command line was:
echo >&2 $cmdline
echo >&2
else
echo -e -n "\nsee $logdir/rc$pname.out for details\n";
fi
rc_failed 6
rc_status -v1
fi
;;
status)
if [ ! -f $pidfile -a -f $pidfile.rpmsave ]; then mv $pidfile.rpmsave $pidfile; fi
echo -n "Checking for httpd2: "
# we don't use checkproc here since it is confused when we exchange the binaries
if ! [ -f $pidfile ]; then
# not running
rc_failed 3
elif [ -s $pidfile -a -d /proc/$(<$pidfile) ]; then
# running
:
else
# stale pid file
rc_failed 1
#rm -f $pidfile
fi
rc_status -v
;;
probe)
## Optional: Probe for the necessity of a reload,
## give out the argument which is required for a reload.

for i in $httpd_conf \
$APACHE_CONF_INCLUDE_FILES \
$APACHE_CONF_INCLUDE_DIRS
do
if [ $i -nt $pidfile ]; then
echo reload
break
fi
done
;;

conf*|test|syntax|check)
cmdline=$(echo $apache_bin -f $httpd_conf $server_flags "$@")
eval $cmdline -t
rc_failed $?
rc_exit
;;

extr*)
cmdline=$(echo $apache_bin -f $httpd_conf $server_flags "$@")
out=$(su - nobody -c "$cmdline" 2>&1)
case $out in
*make_sock:\ could\ not\ bind\ to\ address*) echo Syntax: OK; rc_failed=0;;
*) echo Syntax: NOT OK:; echo $out; rc_failed=1;;
esac
rc_exit
;;

server-status)
apache2ctl status
;;

full-server-status|fullstatus)
apache2ctl fullstatus
;;

*)
cat >&2 <<-EOF
Usage: $0 <command> <server flags>

where <command> is one of:
start - start httpd
startssl - start httpd with -DSSL
stop - stop httpd (sending SIGTERM to parent)
try-restart - stop httpd and if this succeeds (i.e. if
it was running before), start it again.

status - check whether httpd is running

restart - stop httpd if running; start httpd
restart-graceful - stop httpd gracefully if running; start httpd
reload|graceful - do a graceful restart by sending a SIGUSR1, or
start if not running
stop-graceful - stop httpd (sending SIGWINCH to parent)

configtest - do a configuration syntax test
extreme-configtest - try to run httpd as nobody (detects more errors
by actually loading the configuration, but cannot
read SSL certificates)
probe - probe for the necessity of a reload, give
out the argument which is required for a reload.
(by comparing conf files with pidfile timestamp)

full-server-status - dump a full status screen; requires lynx or w3m
and mod_status enabled
server-status - dump a short status screen; requires lynx or w3m
and mod_status enabled

help - this screen

optional server flags are passed through to httpd.

EOF
exit 1
esac


# Inform the caller not only verbosely and set an exit status.
rc_exit

==================================================================

s01:~ # ls -al /etc/init.d/rc2.d
total 8
drwxr-xr-x 2 root root 4096 Sep 12 17:45 .
drwxr-xr-x 11 root root 4096 Sep 17 19:30 ..
lrwxrwxrwx 1 root root 15 Sep 10 18:59 K01stopblktrace -> ../stopblktrace
lrwxrwxrwx 1 root root 7 Sep 12 17:45 K09cron -> ../cron
lrwxrwxrwx 1 root root 9 Sep 12 17:45 K09smartd -> ../smartd
lrwxrwxrwx 1 root root 12 Sep 10 19:13 K12alsasound -> ../alsasound
lrwxrwxrwx 1 root root 7 Sep 10 18:59 K12cups -> ../cups
lrwxrwxrwx 1 root root 13 Sep 10 19:04 K12powersaved -> ../powersaved
lrwxrwxrwx 1 root root 9 Sep 10 18:59 K12splash -> ../splash
lrwxrwxrwx 1 root root 15 Sep 10 18:59 K15splash_early -> ../splash_early
lrwxrwxrwx 1 root root 9 Sep 10 18:59 K16syslog -> ../syslog
lrwxrwxrwx 1 root root 10 Sep 10 18:59 K17network -> ../network
lrwxrwxrwx 1 root root 12 Sep 10 18:59 K19haldaemon -> ../haldaemon
lrwxrwxrwx 1 root root 13 Sep 10 18:59 K20consolekit -> ../consolekit
lrwxrwxrwx 1 root root 8 Sep 10 18:59 K21acpid -> ../acpid
lrwxrwxrwx 1 root root 7 Sep 10 18:59 K21dbus -> ../dbus
lrwxrwxrwx 1 root root 8 Sep 10 18:59 K21fbset -> ../fbset
lrwxrwxrwx 1 root root 16 Sep 10 18:59 K21microcode.ctl -> ../microcode.ctl
lrwxrwxrwx 1 root root 9 Sep 10 18:59 K21random -> ../random
lrwxrwxrwx 1 root root 9 Sep 10 18:59 K21resmgr -> ../resmgr
lrwxrwxrwx 1 root root 8 Sep 10 18:59 S01acpid -> ../acpid
lrwxrwxrwx 1 root root 7 Sep 10 18:59 S01dbus -> ../dbus
lrwxrwxrwx 1 root root 8 Sep 10 18:59 S01fbset -> ../fbset
lrwxrwxrwx 1 root root 16 Sep 10 18:59 S01microcode.ctl -> ../microcode.ctl
lrwxrwxrwx 1 root root 9 Sep 10 18:59 S01random -> ../random
lrwxrwxrwx 1 root root 9 Sep 10 18:59 S01resmgr -> ../resmgr
lrwxrwxrwx 1 root root 13 Sep 10 18:59 S02consolekit -> ../consolekit
lrwxrwxrwx 1 root root 12 Sep 10 18:59 S03haldaemon -> ../haldaemon
lrwxrwxrwx 1 root root 10 Sep 10 18:59 S05network -> ../network
lrwxrwxrwx 1 root root 9 Sep 10 18:59 S06syslog -> ../syslog
lrwxrwxrwx 1 root root 15 Sep 10 18:59 S07splash_early -> ../splash_early
lrwxrwxrwx 1 root root 12 Sep 10 19:13 S10alsasound -> ../alsasound
lrwxrwxrwx 1 root root 7 Sep 10 18:59 S10cups -> ../cups
lrwxrwxrwx 1 root root 6 Sep 10 18:59 S10kbd -> ../kbd
lrwxrwxrwx 1 root root 13 Sep 10 19:04 S10powersaved -> ../powersaved
lrwxrwxrwx 1 root root 9 Sep 10 18:59 S10splash -> ../splash
lrwxrwxrwx 1 root root 7 Sep 12 17:45 S13cron -> ../cron
lrwxrwxrwx 1 root root 9 Sep 12 17:45 S13smartd -> ../smartd
lrwxrwxrwx 1 root root 15 Sep 10 18:59 S21stopblktrace -> ../stopblktrace
s01:~ #

==================================================================

s01:~ # ls -al /etc/init.d/rc3.d
total 8
drwxr-xr-x 2 root root 4096 Sep 17 19:15 .
drwxr-xr-x 11 root root 4096 Sep 17 19:30 ..
lrwxrwxrwx 1 root root 15 Sep 10 18:59 K01stopblktrace -> ../stopblktrace
lrwxrwxrwx 1 root root 7 Sep 12 17:45 K09cron -> ../cron
lrwxrwxrwx 1 root root 9 Sep 12 17:45 K09smartd -> ../smartd
lrwxrwxrwx 1 root root 10 Sep 17 19:03 K10apache2 -> ../apache2
lrwxrwxrwx 1 root root 17 Sep 10 18:59 K11avahi-dnsconfd -> ../avahi-dnsconfd
lrwxrwxrwx 1 root root 10 Sep 10 18:59 K11postfix -> ../postfix
lrwxrwxrwx 1 root root 12 Sep 10 19:13 K12alsasound -> ../alsasound
lrwxrwxrwx 1 root root 15 Sep 10 18:59 K12avahi-daemon -> ../avahi-daemon
lrwxrwxrwx 1 root root 7 Sep 10 18:59 K12cups -> ../cups
lrwxrwxrwx 1 root root 19 Sep 10 19:03 K12java.binfmt_misc -> ../java.binfmt_misc
lrwxrwxrwx 1 root root 7 Sep 10 18:59 K12nscd -> ../nscd
lrwxrwxrwx 1 root root 13 Sep 10 19:04 K12powersaved -> ../powersaved
lrwxrwxrwx 1 root root 9 Sep 10 18:59 K12splash -> ../splash
lrwxrwxrwx 1 root root 7 Sep 10 18:59 K12sshd -> ../sshd
lrwxrwxrwx 1 root root 9 Sep 17 19:15 K12vsftpd -> ../vsftpd
lrwxrwxrwx 1 root root 8 Sep 10 18:59 K14smbfs -> ../smbfs
lrwxrwxrwx 1 root root 9 Sep 10 18:59 K15auditd -> ../auditd
lrwxrwxrwx 1 root root 10 Sep 10 18:59 K15portmap -> ../portmap
lrwxrwxrwx 1 root root 15 Sep 10 18:59 K15splash_early -> ../splash_early
lrwxrwxrwx 1 root root 9 Sep 10 18:59 K16syslog -> ../syslog
lrwxrwxrwx 1 root root 10 Sep 10 18:59 K17network -> ../network
lrwxrwxrwx 1 root root 12 Sep 10 18:59 K19haldaemon -> ../haldaemon
lrwxrwxrwx 1 root root 13 Sep 10 18:59 K20consolekit -> ../consolekit
lrwxrwxrwx 1 root root 8 Sep 10 18:59 K21acpid -> ../acpid
lrwxrwxrwx 1 root root 7 Sep 10 18:59 K21dbus -> ../dbus
lrwxrwxrwx 1 root root 8 Sep 10 18:59 K21fbset -> ../fbset
lrwxrwxrwx 1 root root 16 Sep 10 18:59 K21microcode.ctl -> ../microcode.ctl
lrwxrwxrwx 1 root root 9 Sep 10 18:59 K21random -> ../random
lrwxrwxrwx 1 root root 9 Sep 10 18:59 K21resmgr -> ../resmgr
lrwxrwxrwx 1 root root 8 Sep 10 18:59 S01acpid -> ../acpid
lrwxrwxrwx 1 root root 7 Sep 10 18:59 S01dbus -> ../dbus
lrwxrwxrwx 1 root root 8 Sep 10 18:59 S01fbset -> ../fbset
lrwxrwxrwx 1 root root 16 Sep 10 18:59 S01microcode.ctl -> ../microcode.ctl
lrwxrwxrwx 1 root root 9 Sep 10 18:59 S01random -> ../random
lrwxrwxrwx 1 root root 9 Sep 10 18:59 S01resmgr -> ../resmgr
lrwxrwxrwx 1 root root 13 Sep 10 18:59 S02consolekit -> ../consolekit
lrwxrwxrwx 1 root root 12 Sep 10 18:59 S03haldaemon -> ../haldaemon
lrwxrwxrwx 1 root root 10 Sep 10 18:59 S05network -> ../network
lrwxrwxrwx 1 root root 9 Sep 10 18:59 S06syslog -> ../syslog
lrwxrwxrwx 1 root root 9 Sep 10 18:59 S07auditd -> ../auditd
lrwxrwxrwx 1 root root 10 Sep 10 18:59 S07portmap -> ../portmap
lrwxrwxrwx 1 root root 15 Sep 10 18:59 S07splash_early -> ../splash_early
lrwxrwxrwx 1 root root 8 Sep 10 18:59 S08smbfs -> ../smbfs
lrwxrwxrwx 1 root root 12 Sep 10 19:13 S10alsasound -> ../alsasound
lrwxrwxrwx 1 root root 15 Sep 10 18:59 S10avahi-daemon -> ../avahi-daemon
lrwxrwxrwx 1 root root 7 Sep 10 18:59 S10cups -> ../cups
lrwxrwxrwx 1 root root 19 Sep 10 19:03 S10java.binfmt_misc -> ../java.binfmt_misc
lrwxrwxrwx 1 root root 6 Sep 10 18:59 S10kbd -> ../kbd
lrwxrwxrwx 1 root root 7 Sep 10 18:59 S10nscd -> ../nscd
lrwxrwxrwx 1 root root 13 Sep 10 19:04 S10powersaved -> ../powersaved
lrwxrwxrwx 1 root root 9 Sep 10 18:59 S10splash -> ../splash
lrwxrwxrwx 1 root root 7 Sep 10 18:59 S10sshd -> ../sshd
lrwxrwxrwx 1 root root 9 Sep 17 19:15 S10vsftpd -> ../vsftpd
lrwxrwxrwx 1 root root 17 Sep 10 18:59 S11avahi-dnsconfd -> ../avahi-dnsconfd
lrwxrwxrwx 1 root root 10 Sep 10 18:59 S11postfix -> ../postfix
lrwxrwxrwx 1 root root 10 Sep 17 19:03 S12apache2 -> ../apache2
lrwxrwxrwx 1 root root 7 Sep 12 17:45 S13cron -> ../cron
lrwxrwxrwx 1 root root 9 Sep 12 17:45 S13smartd -> ../smartd
lrwxrwxrwx 1 root root 15 Sep 10 18:59 S21stopblktrace -> ../stopblktrace
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

To start login/programms on boot up

Dears, I m using SCO V and running 3 different aplications (has different logins) constantly on the server console in 3 different screens. I want to develop a script which can start the programms on booting the systems. OR If automatic login can be configured on different screens will help me... (1 Reply)
Discussion started by: skant
1 Replies

2. SuSE

vsftpd won't start on SLES 10

I recently installed SLES 10 on an x86 64bit blade server. I then installed vsftpd from the suse cds through network services; however after configuring the vsftpd.conf file, the server fails to start: # /etc/init.d/vsftpd start Starting vsftpd startproc: exit status of parent of... (5 Replies)
Discussion started by: dave521
5 Replies

3. SuSE

Start Asterisk at boot?

Hello, I am running a SuSe 9.3 server. That have Asterisk. Asterisk are working fine/perfect. But what I want to do is to make it start up at boot. When I have started the computer can I type: sudo /root/Asterisk-1.0.8/Asterisk And it goes of. No problem. But I want it to do that by itself... (4 Replies)
Discussion started by: hast5
4 Replies

4. HP-UX

HP UX start process at boot time

When I get start program at boot I read which run level /sbin/rcx.d runlevel=0.....x only read directory which directory name has UpperCase 'S' is not enough someone says that I need to reference another file which file I need to reference 1)/etc/rc.config.d/all file which parameter... (4 Replies)
Discussion started by: alert0919
4 Replies

5. Red Hat

vsftpd service failed to start

hi, i am using RHEL 5 and i am not able to on the vsftp i have tried to on the vsftp service using command service vsftpd start Starting vsftpd for vsftpd: i am posting the content of my /etc/xinetd.d/vsftpd file # description: The vsftpd FTP... (2 Replies)
Discussion started by: u.n.i.x
2 Replies

6. Red Hat

VSFTPD Service Failed to Start

Today I have installed VSFTPD but service is failing to start. We have been using standard FTP successful but need to introduce an FTPS option. I have run YUM install VSFTPD and everything appeared to load ok. (If I run rpm - qa | grep vsftpd I get vsftpd-2.0.5-16.el5_4.1 which I... (4 Replies)
Discussion started by: PaulComins
4 Replies

7. Red Hat

NFS does not start during boot process

Hello, I am facing some issues during boot process of rhel 6.2 It takes too long time (~10 min) for the node to come up... The boot process stuck while it trying to start NFS and does not continue until timeout. In the boot.log file i see Starting NFS quotas: Cannot register service:... (2 Replies)
Discussion started by: @dagio
2 Replies

8. UNIX for Dummies Questions & Answers

Webmin dont want to start at boot

Hello, after webmin install, it was running, but after reboot, i need webmin to start automatically. I need this to be done without editting anything in webmin mysql (setting it from webmin admin area). So i tried chkconfig webmin on and added startup script to rc.local but still dont works..... (1 Reply)
Discussion started by: postcd
1 Replies

9. Red Hat

iptables does not start on boot

Hello, I have an issue with iptables. The rules are already configured in /etc/sysconfig/iptables but when i reboot the node the service is not running or at least i can't see my rules. Below the configuration i did to start the service during boot. # chkconfig --list iptables iptables... (1 Reply)
Discussion started by: @dagio
1 Replies

10. UNIX for Advanced & Expert Users

Does vsftpd support user access with client certificate with priv/pub key + vsftpd certificate?

:rolleyes:I am trying to setup all certificate based client-server environment in Linux using vsftpd and curl with openssl. I would like to make a user access with vsftpd certificate and user own client certificate (self-signed) with private/public key. I don't see google posts about the my plan... (4 Replies)
Discussion started by: gogogo
4 Replies
All times are GMT -4. The time now is 08:57 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy