Shadow-Here


Server : Apache/2.4.41 (Ubuntu)
System : Linux cls 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User : iscuser ( 1001)
PHP Version : 7.4.12
Disable Function : shell_exec,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Directory :  /etc/netdata/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :
Current File : //etc/netdata/edit-config
#!/bin/bash

[ -f /etc/profile ] && . /etc/profile

file="${1}"

if [ "$(command -v editor)" ] ; then
    EDITOR="${EDITOR-editor}"
else
    EDITOR="${EDITOR-vi}"
fi

[ -z "${NETDATA_USER_CONFIG_DIR}"  ] && NETDATA_USER_CONFIG_DIR="/etc/netdata"
[ -z "${NETDATA_STOCK_CONFIG_DIR}" ] && NETDATA_STOCK_CONFIG_DIR="/usr/lib/netdata/conf.d"

if [ -z "${file}" ]
then
	cat <<USAGE

USAGE:
  ${0} FILENAME

  Copy and edit the stock config file named: FILENAME
  if FILENAME is already copied, it will be edited as-is.

  The EDITOR shell variable is used to define the editor to be used.

  Stock config files at: '${NETDATA_STOCK_CONFIG_DIR}'
  User  config files at: '${NETDATA_USER_CONFIG_DIR}'

  Available files in '${NETDATA_STOCK_CONFIG_DIR}' to copy and edit:

USAGE

	cd "${NETDATA_STOCK_CONFIG_DIR}" || exit 1
	ls >&2 -R *.conf */*.conf
	exit 1

fi

file_is_in_path() {
	local file path real
	file="${1}"
	path="${2}"
	
	real="$(readlink -f "${file}")"

	# we don't have working readlink
	[ -z "${real}" ] && return 0

	if [ ! -z "${real}" ] && [ -z "$(echo "${real}" | grep -E "^${path}.*$")" ]
	then
		echo >&2 "File '${file}' is physically at '${real}', which is not in '${path}'. Aborting."
		exit 1
	fi

	return 0
}

edit() {
	echo >&2 "Editing '${1}' ..."

	# check we can edit
	file_is_in_path "${1}" "${NETDATA_USER_CONFIG_DIR}" || exit 1

	"${EDITOR}" "${1}"
	exit $?
}

copy_and_edit() {
	# check we can copy
	file_is_in_path "${NETDATA_STOCK_CONFIG_DIR}/${1}" "${NETDATA_STOCK_CONFIG_DIR}" || exit 1

	if [ ! -f "${NETDATA_USER_CONFIG_DIR}/${1}" ]
	then
		echo >&2 "Copying '${NETDATA_STOCK_CONFIG_DIR}/${1}' to '${NETDATA_USER_CONFIG_DIR}/${1}' ... "
		cp -p "${NETDATA_STOCK_CONFIG_DIR}/${1}" "${NETDATA_USER_CONFIG_DIR}/${1}" || exit 1
	fi

	edit "${NETDATA_USER_CONFIG_DIR}/${1}"
}

# make sure it is not absolute filename
c1="$(echo "${file}" | cut -b 1)"
if [ "${c1}" = "/" ] || [ "${c1}" = "." ]
then
	echo >&2 "Please don't use filenames starting with '/' or '.'"
	exit 1
fi

# already exists
if [ -f "${NETDATA_USER_CONFIG_DIR}/${file}" ]
then
	edit "${NETDATA_USER_CONFIG_DIR}/${file}"
fi

[ -f "${NETDATA_USER_CONFIG_DIR}/${file}"  ] && edit "${NETDATA_USER_CONFIG_DIR}/${file}"
[ -f "${NETDATA_STOCK_CONFIG_DIR}/${file}" ] && copy_and_edit "${file}"

echo >&2 "File '${file}' is not found in '${NETDATA_STOCK_CONFIG_DIR}'"
exit 1

Samx