diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 51f5bdc..0000000 --- a/Dockerfile +++ /dev/null @@ -1,121 +0,0 @@ -FROM debian:latest - -LABEL maintainer="contact@ocsinventory-ng.org" -LABEL version="2.3.1" -LABEL description="OCS (Open Computers and Software Inventory Next Generation)" - -RUN apt-get update - -RUN apt-get -y install \ - apt-utils \ - apache2 \ - apache2-doc \ - php5 \ - php5-gd \ - php5-mysql \ - php5-cgi \ - php5-curl \ - perl \ - build-essential \ - libapache2-mod-php5 \ - libxml2 \ - libxml-simple-perl \ - libc6-dev \ - libnet-ip-perl \ - libxml-libxml-perl \ - libapache2-mod-perl2 \ - libdbi-perl \ - libapache-dbi-perl \ - libdbd-mysql-perl \ - libio-compress-perl \ - libxml-simple-perl \ - libsoap-lite-perl \ - libarchive-zip-perl \ - libnet-ip-perl \ - libphp-pclzip \ - libsoap-lite-perl \ - libarchive-zip-perl \ - git \ - wget \ - tar \ - unzip \ - nano \ - make - -RUN mkdir /usr/include/apache2 - -RUN cpan -i Apache2::SOAP -RUN cpan -i XML::Entities -VOLUME /var/lib/mysql - -RUN cp /usr/share/zoneinfo/Europe/Paris /etc/localtime - -RUN /usr/sbin/a2dissite 000-default ;\ - /usr/sbin/a2enmod rewrite ;\ - /usr/sbin/a2enmod ssl ;\ - /usr/sbin/a2enmod authz_user - -RUN wget https://raw.githubusercontent.com/OCSInventory-NG/OCSInventory-Server/master/binutils/docker-download.sh -RUN sh docker-download.sh 2.3.1 - -WORKDIR /tmp/ocs/Apache -RUN perl Makefile.PL ;\ - make ;\ - make install - -RUN cp -R blib/lib/Apache /usr/local/share/perl/5.20.2/ ;\ - cp -R Ocsinventory /usr/local/share/perl/5.20.2/ ;\ - cp /tmp/ocs/etc/logrotate.d/ocsinventory-server /etc/logrotate.d/ - -RUN mkdir -p /etc/ocsinventory-server/plugins ;\ - mkdir -p /etc/ocsinventory-server/perl ;\ - mkdir -p /usr/share/ocsinventory-reports/ocsreports - -ENV APACHE_RUN_USER www-data -ENV APACHE_RUN_GROUP www-data -ENV APACHE_LOG_DIR /var/log/apache2 -ENV APACHE_PID_FILE /var/run/apache2.pid -ENV APACHE_RUN_DIR /var/run/apache2f -ENV APACHE_LOCK_DIR /var/lock/apache2 -ENV APACHE_LOG_DIR /var/log/apache2 - - -WORKDIR /tmp/ocs - -RUN cp -R ocsreports/* /usr/share/ocsinventory-reports/ocsreports - -RUN chown -R www-data: /usr/share/ocsinventory-reports/ - -RUN bash -c 'mkdir -p /var/lib/ocsinventory-reports/{download,ipd,logs,scripts,snmp}' - -RUN chmod -R +w /var/lib/ocsinventory-reports ;\ - chown www-data: -R /var/lib/ocsinventory-reports - -COPY dbconfig.inc.php /usr/share/ocsinventory-reports/ocsreports/ - -RUN cp binutils/ipdiscover-util.pl /usr/share/ocsinventory-reports/ocsreports/ipdiscover-util.pl - -RUN chown www-data: /usr/share/ocsinventory-reports/ocsreports/ipdiscover-util.pl ;\ - chmod 755 /usr/share/ocsinventory-reports/ocsreports/ipdiscover-util.pl ;\ - chmod +w /usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php ;\ - mkdir -p /var/log/ocsinventory-server/ ;\ - chmod +w /var/log/ocsinventory-server/ - -COPY /conf/ocsinventory-reports.conf /etc/apache2/conf-available/ -COPY /conf/z-ocsinventory-server.conf /etc/apache2/conf-available/ - - -COPY ./scripts/run.sh /root/run.sh -RUN chmod +x /root/run.sh - - -RUN ln -s /etc/apache2/conf-available/ocsinventory-reports.conf /etc/apache2/conf-enabled/ocsinventory-reports.conf -RUN ln -s /etc/apache2/conf-available/z-ocsinventory-server.conf /etc/apache2/conf-enabled/z-ocsinventory-server.conf - -RUN rm /usr/share/ocsinventory-reports/ocsreports/install.php ;\ - rm -rf /tmp/ocs - -EXPOSE 80 -EXPOSE 443 - -CMD ["/bin/bash", "/root/run.sh"] diff --git a/conf/ocsinventory-reports.conf b/conf/ocsinventory-reports.conf deleted file mode 100644 index 8bcfc1a..0000000 --- a/conf/ocsinventory-reports.conf +++ /dev/null @@ -1,120 +0,0 @@ -################################################################################ -# -# OCS Inventory NG Administration Server -# -# Copyleft 2008 OCS Inventory NG Team -# Web: http://www.ocsinventory-ng.org -# -# This code is open source and may be copied and modified as long as the source -# code is always made freely available. -# Please refer to the General Public Licence http://www.gnu.org/ or Licence.txt -################################################################################ - -# -# ANY CHANGE ON THIS FILE REQUIRES APACHE RESTART TO TAKE EFFECT -# - -################################################################################ -# Administration console public pages -# -# Alias used to put Administration Server static page (typically PHP) outside -# Apache document root directory -# -Alias /ocsreports /usr/share/ocsinventory-reports/ocsreports - - - # By default, users can use console from everywhere - - # Apache 2.4 - Require all granted - - - Order deny,allow - Allow from all - - Options Indexes FollowSymLinks - DirectoryIndex index.php - AllowOverride Options - - # Uncomment following to force use of HTTPS in Administration Server - #SSLRequireSSL - - # PHP tuning (not working on all distribution, use php.ini instead) - - AddType application/x-httpd-php .php - php_flag file_uploads on - # Some PHP tuning for deployment feature up to 8 MB - # post_max_size must be greater than upload_max_filesize - # because of HTTP headers - php_value post_max_size 101m - php_value upload_max_filesize 100m - # You may have to uncomment following on errors - #php_value max_execution_time -1 - #php_value max_input_time -1 - - # Uncomment following if you need to specify a mysql socket - #php_value mysql.default_socket "path/to/mysql/unix/socket" - - #!! Mandatory !! : set magic_quotes_gpc to off (to make ocsreports works correctly) - php_flag magic_quotes_gpc off - - # Duplicate for php7 compatibility - - AddType application/x-httpd-php .php - php_flag file_uploads on - # Some PHP tuning for deployment feature up to 8 MB - # post_max_size must be greater than upload_max_filesize - # because of HTTP headers - php_value post_max_size 101m - php_value upload_max_filesize 100m - # You may have to uncomment following on errors - #php_value max_execution_time -1 - #php_value max_input_time -1 - - # Uncomment following if you need to specify a mysql socket - #php_value mysql.default_socket "path/to/mysql/unix/socket" - - #!! Mandatory !! : set magic_quotes_gpc to off (to make ocsreports works correctly) - php_flag magic_quotes_gpc off - - - # Uncomment following to allow HTTP body request up to 4 MB - # instead default 512 KB - #LimitRequestBody 4194304 - - - -################################################################################ -# Deployment packages download area -# -# Alias to put Deployment package files outside Apache document root directory -# - - - # Apache 2.4 - Require all granted - - - Order deny,allow - Allow from all - - -Alias /download /var/lib/ocsinventory-reports/download - - -################################################################################ -# Snmp communities area -# -# Alias to put Snmp custom Mibs files outside Apache document root directory -# - - - # Apache 2.4 - Require all granted - - - Order deny,allow - Allow from all - - -Alias /snmp /var/lib/ocsinventory-reports/snmp diff --git a/conf/z-ocsinventory-server.conf b/conf/z-ocsinventory-server.conf deleted file mode 100644 index 6753b18..0000000 --- a/conf/z-ocsinventory-server.conf +++ /dev/null @@ -1,357 +0,0 @@ -################################################################################ -# -# OCS Inventory NG Communication Server Perl Module Setup -# -# Copyleft 2006 Pascal DANEK -# Web: http://www.ocsinventory-ng.org -# -# This code is open source and may be copied and modified as long as the source -# code is always made freely available. -# Please refer to the General Public Licence http://www.gnu.org/ or Licence.txt -################################################################################ - - - - # Which version of mod_perl we are using - # For mod_perl <= 1.999_21, replace 2 by 1 - # For mod_perl > 1.999_21, replace 2 by 2 - PerlSetEnv OCS_MODPERL_VERSION 2 - - # Master Database settings - # Replace localhost by hostname or ip of MySQL server for WRITE - PerlSetEnv OCS_DB_HOST ${OCS_DBSERVER_WRITE} - # Replace 3306 by port where running MySQL server, generally 3306 - PerlSetEnv OCS_DB_PORT 3306 - # Name of database - PerlSetEnv OCS_DB_NAME ${OCS_DBNAME} - PerlSetEnv OCS_DB_LOCAL ${OCS_DBNAME} - # User allowed to connect to database - PerlSetEnv OCS_DB_USER ${OCS_DBUSER} - # Password for user - PerlSetVar OCS_DB_PWD ${OCS_DBPASS} - - # Slave Database settings - # Replace localhost by hostname or ip of MySQL server for READ - # Useful if you handle mysql slave databases - # PerlSetEnv OCS_DB_SL_HOST localhost - # Replace 3306 by port where running MySQL server, generally 3306 - # PerlSetEnv OCS_DB_SL_PORT_SLAVE 3306 - # User allowed to connect to database - # PerlSetEnv OCS_DB_SL_USER ocs - # Name of the database - # PerlSetEnv OCS_DB_SL_NAME ocsweb - # Password for user - # PerlSetVar OCS_DB_SL_PWD ocs - - # Path to log directory (must be writeable) - PerlSetEnv OCS_OPT_LOGPATH "/var/log/ocsinventory-server" - - # If you need to specify a mysql socket that the client's built-in - #PerlSetEnv OCS_OPT_DBI_MYSQL_SOCKET "path/to/mysql/unix/socket" - # DBI verbosity - PerlSetEnv OCS_OPT_DBI_PRINT_ERROR 0 - - # Unicode support - PerlSetEnv OCS_OPT_UNICODE_SUPPORT 1 - - # If you are using a multi server architecture, - # Put the ip addresses of the slaves on the master - # (This is read as perl regular expressions) - PerlAddVar OCS_OPT_TRUSTED_IP 127.0.0.1 - #PerlAddVar OCS_OPT_TRUSTED_IP XXX.XXX.XXX.XXX - -# ===== WEB SERVICE (SOAP) SETTINGS ===== - - PerlSetEnv OCS_OPT_WEB_SERVICE_ENABLED 0 - PerlSetEnv OCS_OPT_WEB_SERVICE_RESULTS_LIMIT 100 - # PerlSetEnv OCS_OPT_WEB_SERVICE_PRIV_MODS_CONF "WEBSERV_PRIV_MOD_CONF_FILE" - -# Be careful: you must restart apache to make settings taking effects - - # Configure engine to use the settings from this file - PerlSetEnv OCS_OPT_OPTIONS_NOT_OVERLOADED 0 - - # Try to use other compress algorithm than raw zlib - # GUNZIP and clear XML are supported - PerlSetEnv OCS_OPT_COMPRESS_TRY_OTHERS 1 - -############################################################## -# ===== OPTIONS BELOW ARE OVERLOADED IF YOU USE OCS GUI =====# -############################################################## - -# NOTE: IF YOU WANT TO USE THIS CONFIG FILE INSTEAD, set OCS_OPT_OPTIONS_NOT_OVERLOADED to '1' - -# ===== MAIN SETTINGS ===== - - # Enable engine logs (see LOGPATH setting) - PerlSetEnv OCS_OPT_LOGLEVEL 0 - # Specify agent's prolog frequency - PerlSetEnv OCS_OPT_PROLOG_FREQ 12 - # Configure the duplicates detection system - PerlSetEnv OCS_OPT_AUTO_DUPLICATE_LVL 15 - # Specify if agent take contact on service startup - PerlSetEnv OCS_OPT_INVENTORY_ON_STARTUP 0 - # Futur security improvements - PerlSetEnv OCS_OPT_SECURITY_LEVEL 0 - # Validity of a computer's lock - PerlSetEnv OCS_OPT_LOCK_REUSE_TIME 600 - # Enable the history tracking system (useful for external data synchronisation - PerlSetEnv OCS_OPT_TRACE_DELETED 0 - -# ===== INVENTORY SETTINGS ===== - - # Specify the validity of inventory data - PerlSetEnv OCS_OPT_FREQUENCY 0 - # Configure engine to update inventory regarding to CHECKSUM agent value (lower DB backend load) - PerlSetEnv OCS_OPT_INVENTORY_DIFF 1 - # Make engine consider an inventory as a transaction (lower concurency, better disk usage) - PerlSetEnv OCS_OPT_INVENTORY_TRANSACTION 1 - # Configure engine to make a differential update of inventory sections (row level). Lower DB backend load, higher frontend load - PerlSetEnv OCS_OPT_INVENTORY_WRITE_DIFF 1 - # Enable some stuff to improve DB queries, especially for GUI multicriteria searching system - PerlSetEnv OCS_OPT_INVENTORY_CACHE_ENABLED 1 - # Specify when the engine will clean the inventory cache structures - PerlSetEnv OCS_OPT_INVENTORY_CACHE_REVALIDATE 7 - # Enable you to keep trace of every elements encountered in db life - PerlSetEnv OCS_OPT_INVENTORY_CACHE_KEEP 1 - -# ===== SOFTWARES DEPLOYMENT SETTINGS ===== - - # Enable this feature - PerlSetEnv OCS_OPT_DOWNLOAD 0 - # Package which have a priority superior than this value will not be downloaded - PerlSetEnv OCS_OPT_DOWNLOAD_PERIOD_LENGTH 10 - # Time between two download cycles (bandwidth control) - PerlSetEnv OCS_OPT_DOWNLOAD_CYCLE_LATENCY 60 - # Time between two fragment downloads (bandwidth control) - PerlSetEnv OCS_OPT_DOWNLOAD_FRAG_LATENCY 60 - # Specify if you want to track packages affected to a group on computer's level - PerlSetEnv OCS_OPT_DOWNLOAD_GROUPS_TRACE_EVENTS 1 - # Time between two download periods (bandwidth control) - PerlSetEnv OCS_OPT_DOWNLOAD_PERIOD_LATENCY 60 - # Agents will send ERR_TIMEOUT event and clean the package it is older than this setting - PerlSetEnv OCS_OPT_DOWNLOAD_TIMEOUT 7 - # Agents will send an error event and clean the package if package command does not respond during this setting - PerlSetEnv OCS_OPT_DOWNLOAD_EXECUTION_TIMEOUT 120 - - # Enable ocs engine to deliver agent's files (deprecated) - PerlSetEnv OCS_OPT_DEPLOY 0 - # Enable the softwares deployment capacity (bandwidth control) - -# ===== GROUPS SETTINGS ===== - - # Enable the computer\s groups feature - PerlSetEnv OCS_OPT_ENABLE_GROUPS 1 - # Random number computed in the defined range. Designed to avoid computing many groups in the same process - PerlSetEnv OCS_OPT_GROUPS_CACHE_OFFSET 43200 - # Specify the validity of computer's groups (default: compute it once a day - see offset) - PerlSetEnv OCS_OPT_GROUPS_CACHE_REVALIDATE 43200 - -# ===== IPDISCOVER SETTINGS ===== - - # Specify how much agent per LAN will discovered connected peripherals (0 to disable) - PerlSetEnv OCS_OPT_IPDISCOVER 2 - # Specify the minimal difference to replace an ipdiscover agent - PerlSetEnv OCS_OPT_IPDISCOVER_BETTER_THRESHOLD 1 - # Time between 2 arp requests (mini: 10 ms) - PerlSetEnv OCS_OPT_IPDISCOVER_LATENCY 100 - # Specify when to remove a computer when it has not come until this period - PerlSetEnv OCS_OPT_IPDISCOVER_MAX_ALIVE 14 - # Disable the time before a first election (not recommended) - PerlSetEnv OCS_OPT_IPDISCOVER_NO_POSTPONE 0 - # Enable groups for ipdiscover (for example, you might want to prevent some groups to be ipdiscover agents) - PerlSetEnv OCS_OPT_IPDISCOVER_USE_GROUPS 1 - -# ===== INVENTORY FILES MAPPING SETTINGS ===== - - # Use with ocsinventory-injector, enable the multi entities feature - PerlSetEnv OCS_OPT_GENERATE_OCS_FILES 0 - # Generate either compressed file or clear XML text - PerlSetEnv OCS_OPT_OCS_FILES_FORMAT OCS - # Specify if you want to keep trace of all inventory between to synchronisation with the higher level server - PerlSetEnv OCS_OPT_OCS_FILES_OVERWRITE 0 - # Path to ocs files directory (must be writeable) - PerlSetEnv OCS_OPT_OCS_FILES_PATH /tmp - -# ===== FILTER SETTINGS ===== - - # Enable prolog filter stack - PerlSetEnv OCS_OPT_PROLOG_FILTER_ON 0 - # Enable core filter system to modify some things "on the fly" - PerlSetEnv OCS_OPT_INVENTORY_FILTER_ENABLED 0 - # Enable inventory flooding filter. A dedicated ipaddress ia allowed to send a new computer only once in this period - PerlSetEnv OCS_OPT_INVENTORY_FILTER_FLOOD_IP 0 - # Period definition for INVENTORY_FILTER_FLOOD_IP - PerlSetEnv OCS_OPT_INVENTORY_FILTER_FLOOD_IP_CACHE_TIME 300 - # Enable inventory filter stack - PerlSetEnv OCS_OPT_INVENTORY_FILTER_ON 0 - -# ===== DATA FILTER ===== - - #Enable the dat filtering capacity - PerlSetEnv OCS_OPT_DATA_FILTER 0 - - # Set the table names and the field associated you want to filter - #PerlAddVar OCS_OPT_DATA_TO_FILTER HARDWARE - #PerlAddVar OCS_OPT_DATA_TO_FILTER USERID - - -# ===== REGISTRY SETTINGS ===== - - # Enable the registry capacity - PerlSetEnv OCS_OPT_REGISTRY 1 - -# ===== SNMP SETTINGS ===== - - # Enable the SNMP capacity - PerlSetEnv OCS_OPT_SNMP 0 - # Configure engine to update snmp inventory regarding to snmp_laststate table (lower DB backend load) - PerlSetEnv OCS_OPT_SNMP_INVENTORY_DIFF 1 - # Display error message about agent https communication in logfile - PerlSetEnv OCS_OPT_SNMP_PRINT_HTTPS_ERROR 1 - -# ===== SESSION SETTINGS ===== -# Not yet in GUI - - # Validity of a session (prolog=>postinventory) - PerlSetEnv OCS_OPT_SESSION_VALIDITY_TIME 600 - # Consider a session obsolete if it is older thant this value - PerlSetEnv OCS_OPT_SESSION_CLEAN_TIME 86400 - # Accept an inventory only if required by server - #( Refuse "forced" inventory) - PerlSetEnv OCS_OPT_INVENTORY_SESSION_ONLY 0 - -# ===== TAG ===== - - # The default behavior of the server is to ignore TAG changes from the - # agent. - PerlSetEnv OCS_OPT_ACCEPT_TAG_UPDATE_FROM_CLIENT 0 - -# ===== EXTERNAL USERAGENTS ===== - - #Path for external useragents reference file - #!! WARNING !! : external agents may not be supported by OCS NG Community ! - #PerlSetEnv OCS_OPT_EXT_USERAGENTS_FILE_PATH /tmp/yourfile.txt - -# ===== PLUGINS ===== - - PerlSetEnv OCS_PLUGINS_PERL_DIR "/etc/ocsinventory-server/perl" - PerlSetEnv OCS_PLUGINS_CONF_DIR "/etc/ocsinventory-server/plugins" - -# ===== DEPRECATED ===== - - # Set the proxy cache validity in http headers when sending a file - PerlSetEnv OCS_OPT_PROXY_REVALIDATE_DELAY 3600 - # Deprecated - PerlSetEnv OCS_OPT_UPDATE 0 - -############ DO NOT MODIFY BELOW ! ####################### - - # External modules - PerlModule Apache::DBI - PerlModule Compress::Zlib - PerlModule XML::Simple - - # Ocs plugins - PerlModule Apache::Ocsinventory::Plugins::Apache - PerlModule Apache::Ocsinventory::Plugins - - # Ocs - PerlModule Apache::Ocsinventory - PerlModule Apache::Ocsinventory::Server::Constants - PerlModule Apache::Ocsinventory::Server::System - PerlModule Apache::Ocsinventory::Server::Communication - PerlModule Apache::Ocsinventory::Server::Inventory - PerlModule Apache::Ocsinventory::Server::Duplicate - - # Capacities - PerlModule Apache::Ocsinventory::Server::Capacities::Registry - PerlModule Apache::Ocsinventory::Server::Capacities::Update - PerlModule Apache::Ocsinventory::Server::Capacities::Ipdiscover - PerlModule Apache::Ocsinventory::Server::Capacities::Download - PerlModule Apache::Ocsinventory::Server::Capacities::Notify - PerlModule Apache::Ocsinventory::Server::Capacities::Snmp - # This module guides you through the module creation - # PerlModule Apache::Ocsinventory::Server::Capacities::Example - # This module adds some rules to filter some request sent to ocs server in the prolog and inventory stages - # PerlModule Apache::Ocsinventory::Server::Capacities::Filter - # This module add availibity to filter data from HARDWARE section (data filtered won't be stored in database) - # PerlModule Apache::Ocsinventory::Server::Capacities::Datafilter - - # PerlTaintCheck On - - # SSL apache settings - #SSLEngine "SSL_ENABLE" - #SSLCertificateFile "SSL_CERTIFICATE_FILE" - #SSLCertificateKeyFile "SSL_CERTIFICATE_KEY_FILE" - #SSLCACertificateFile "SSL_CERTIFICATE_FILE" - #SSLCACertificatePath "SSL_CERTIFICATE_PATH" - #SSLVerifyClient "SSL_VALIDATE_CLIENT" - - # Engine apache settings - # "Virtual" directory for handling OCS Inventory NG agents communications - # Be careful, do not create such directory into your web server root document ! - - - # Apache 2.4 - Require all granted - - - # Apache 2.2 - order deny,allow - allow from all - - # If you protect this area you have to deal with http_auth_* agent's parameters - # AuthType Basic - # AuthName "OCS Inventory agent area" - # AuthUserFile "APACHE_AUTH_USER_FILE" - # require valid-user - SetHandler perl-script - PerlHandler Apache::Ocsinventory - - -#Web Service for plugin engine - - - # Apache 2.4 - Require local - - - # Apache 2.2 - order deny,allow - allow from 127.0.0.1 - - SetHandler perl-script - PerlHandler Apache::Ocsinventory::Plugins::Apache - - - - # Web service apache settings - PerlModule Apache::Ocsinventory::SOAP - - - SetHandler perl-script - PerlHandler "Apache::Ocsinventory::SOAP" - - # By default, you can query web service from everywhere with a valid user - - # Apache 2.4 - Require all granted - - - Order deny,allow - Allow from all - - AuthType Basic - AuthName "OCS Inventory SOAP Area" - # Use htpasswd to create/update soap-user (or another granted user) - AuthUserFile "APACHE_AUTH_USER_FILE" - - # Apache 2.4 - Require user "SOAP_USER" - - - require "SOAP_USER" - - - diff --git a/dbconfig.inc.php b/dbconfig.inc.php deleted file mode 100644 index d68acb8..0000000 --- a/dbconfig.inc.php +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/latest b/latest new file mode 120000 index 0000000..a625450 --- /dev/null +++ b/latest @@ -0,0 +1 @@ +2.3.1 \ No newline at end of file diff --git a/scripts/run.sh b/scripts/run.sh deleted file mode 100644 index 1fd8278..0000000 --- a/scripts/run.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -if [ ! -d "$APACHE_RUN_DIR" ]; then - mkdir "$APACHE_RUN_DIR" - chown $APACHE_RUN_USER:$APACHE_RUN_GROUP "$APACHE_RUN_DIR" -fi -if [ -f "$APACHE_PID_FILE" ]; then - rm "$APACHE_PID_FILE" -fi -/usr/sbin/apache2ctl -D FOREGROUND