From: Michael Tremer Date: Wed, 4 Mar 2015 22:58:58 +0000 (+0100) Subject: Merge remote-tracking branch 'mfischer/ntfs-3g' into next X-Git-Tag: v2.17-core89~42 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c651121f4dab2fbc091c3c9c8a77f0793e034dab;hp=ef8b6053f332bd0c5dc7c5ad2d756b735c1383f8;p=ipfire-2.x.git Merge remote-tracking branch 'mfischer/ntfs-3g' into next --- diff --git a/config/asterisk/asterisk.logrotate b/config/asterisk/asterisk.logrotate new file mode 100644 index 0000000000..887d04a33a --- /dev/null +++ b/config/asterisk/asterisk.logrotate @@ -0,0 +1,9 @@ +/var/log/asterisk/messages /var/log/asterisk/full /var/log/asterisk/security /var/log/asterisk/*_log { + weekly + missingok + rotate 4 + sharedscripts + postrotate + /usr/sbin/asterisk -rx 'logger reload' > /dev/null 2> /dev/null + endscript +} diff --git a/config/asterisk/asterisk.makeopts b/config/asterisk/asterisk.makeopts deleted file mode 100644 index 60a311b0b7..0000000000 --- a/config/asterisk/asterisk.makeopts +++ /dev/null @@ -1,96 +0,0 @@ -MENUSELECT_ADDONS=format_mp3 -MENUSELECT_APPS=app_flash app_meetme app_page app_dahdiras app_fax app_jack app_osplookup app_dahdibarge -MENUSELECT_BRIDGES= -MENUSELECT_CDR=cdr_adaptive_odbc cdr_odbc cdr_pgsql cdr_radius cdr_tds cdr_sqlite -MENUSELECT_CEL=cel_odbc cel_pgsql cel_radius cel_tds -MENUSELECT_CHANNELS=chan_dahdi chan_console chan_gtalk chan_jingle chan_misdn chan_nbs chan_vpb chan_h323 -MENUSELECT_CODECS=codec_dahdi codec_resample codec_speex -MENUSELECT_FORMATS= -MENUSELECT_FUNCS=func_odbc func_speex -MENUSELECT_PBX=pbx_lua -MENUSELECT_RES=res_calendar_caldav res_calendar_ews res_calendar_exchange res_calendar_icalendar res_config_odbc res_http_post res_odbc res_srtp res_timing_dahdi res_ais res_config_pgsql res_config_sqlite res_jabber res_timing_kqueue -MENUSELECT_TESTS=test_acl test_amihooks test_aoc test_app test_ast_format_str_reduce test_astobj2 test_config test_db test_devicestate test_dlinklists test_event test_expr test_func_file test_gosub test_heap test_linkedlists test_locale test_logger test_netsock2 test_pbx test_poll test_sched test_security_events test_skel test_stringfields test_strings test_substitution test_time test_utils -MENUSELECT_CFLAGS=LOADABLE_MODULES -MENUSELECT_OPTS_app_voicemail=FILE_STORAGE -MENUSELECT_UTILS=astcanary aelparse astman check_expr check_expr2 conf2ael hashtest hashtest2 muted refcounter smsq stereorize streamplayer -MENUSELECT_AGIS= -MENUSELECT_EMBED= -MENUSELECT_CORE_SOUNDS=CORE-SOUNDS-EN-GSM -MENUSELECT_MOH=MOH-OPSOUND-GSM -MENUSELECT_EXTRA_SOUNDS=EXTRA-SOUNDS-EN-GSM -MENUSELECT_BUILD_DEPS=chan_local app_voicemail res_monitor res_agi res_adsi res_smdi res_crypto res_pktccops res_ael_share res_fax G711_NEW_ALGORITHM -MENUSELECT_DEPSFAILED=MENUSELECT_APPS=app_flash -MENUSELECT_DEPSFAILED=MENUSELECT_APPS=app_meetme -MENUSELECT_DEPSFAILED=MENUSELECT_APPS=app_page -MENUSELECT_DEPSFAILED=MENUSELECT_APPS=app_dahdiras -MENUSELECT_DEPSFAILED=MENUSELECT_APPS=app_jack -MENUSELECT_DEPSFAILED=MENUSELECT_APPS=app_osplookup -MENUSELECT_DEPSFAILED=MENUSELECT_APPS=app_dahdibarge -MENUSELECT_DEPSFAILED=MENUSELECT_CDR=cdr_adaptive_odbc -MENUSELECT_DEPSFAILED=MENUSELECT_CDR=cdr_odbc -MENUSELECT_DEPSFAILED=MENUSELECT_CDR=cdr_pgsql -MENUSELECT_DEPSFAILED=MENUSELECT_CDR=cdr_radius -MENUSELECT_DEPSFAILED=MENUSELECT_CDR=cdr_tds -MENUSELECT_DEPSFAILED=MENUSELECT_CDR=cdr_sqlite -MENUSELECT_DEPSFAILED=MENUSELECT_CEL=cel_odbc -MENUSELECT_DEPSFAILED=MENUSELECT_CEL=cel_pgsql -MENUSELECT_DEPSFAILED=MENUSELECT_CEL=cel_radius -MENUSELECT_DEPSFAILED=MENUSELECT_CEL=cel_tds -MENUSELECT_DEPSFAILED=MENUSELECT_CHANNELS=chan_dahdi -MENUSELECT_DEPSFAILED=MENUSELECT_CHANNELS=chan_console -MENUSELECT_DEPSFAILED=MENUSELECT_CHANNELS=chan_gtalk -MENUSELECT_DEPSFAILED=MENUSELECT_CHANNELS=chan_jingle -MENUSELECT_DEPSFAILED=MENUSELECT_CHANNELS=chan_misdn -MENUSELECT_DEPSFAILED=MENUSELECT_CHANNELS=chan_nbs -MENUSELECT_DEPSFAILED=MENUSELECT_CHANNELS=chan_vpb -MENUSELECT_DEPSFAILED=MENUSELECT_CHANNELS=chan_h323 -MENUSELECT_DEPSFAILED=MENUSELECT_CODECS=codec_dahdi -MENUSELECT_DEPSFAILED=MENUSELECT_CODECS=codec_resample -MENUSELECT_DEPSFAILED=MENUSELECT_CODECS=codec_speex -MENUSELECT_DEPSFAILED=MENUSELECT_FUNCS=func_odbc -MENUSELECT_DEPSFAILED=MENUSELECT_FUNCS=func_speex -MENUSELECT_DEPSFAILED=MENUSELECT_PBX=pbx_lua -MENUSELECT_DEPSFAILED=MENUSELECT_RES=res_calendar_caldav -MENUSELECT_DEPSFAILED=MENUSELECT_RES=res_calendar_ews -MENUSELECT_DEPSFAILED=MENUSELECT_RES=res_calendar_exchange -MENUSELECT_DEPSFAILED=MENUSELECT_RES=res_calendar_icalendar -MENUSELECT_DEPSFAILED=MENUSELECT_RES=res_config_odbc -MENUSELECT_DEPSFAILED=MENUSELECT_RES=res_http_post -MENUSELECT_DEPSFAILED=MENUSELECT_RES=res_odbc -MENUSELECT_DEPSFAILED=MENUSELECT_RES=res_srtp -MENUSELECT_DEPSFAILED=MENUSELECT_RES=res_timing_dahdi -MENUSELECT_DEPSFAILED=MENUSELECT_RES=res_ais -MENUSELECT_DEPSFAILED=MENUSELECT_RES=res_config_pgsql -MENUSELECT_DEPSFAILED=MENUSELECT_RES=res_config_sqlite -MENUSELECT_DEPSFAILED=MENUSELECT_RES=res_jabber -MENUSELECT_DEPSFAILED=MENUSELECT_RES=res_timing_kqueue -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_acl -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_amihooks -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_aoc -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_app -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_ast_format_str_reduce -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_astobj2 -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_config -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_db -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_devicestate -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_dlinklists -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_event -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_expr -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_func_file -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_gosub -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_heap -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_linkedlists -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_locale -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_logger -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_netsock2 -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_pbx -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_poll -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_sched -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_security_events -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_skel -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_stringfields -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_strings -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_substitution -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_time -MENUSELECT_DEPSFAILED=MENUSELECT_TESTS=test_utils -MENUSELECT_DEPSFAILED=MENUSELECT_CFLAGS=BUILD_NATIVE diff --git a/config/asterisk/wakeup/source/536.call b/config/asterisk/wakeup/source/536.call deleted file mode 100644 index 6b2862c270..0000000000 --- a/config/asterisk/wakeup/source/536.call +++ /dev/null @@ -1,8 +0,0 @@ -ktiv;Mon;Tue;Wed;Thu;Fri;;;05:00 -Channel: SIP/536 -MaxRetries: 3 -RetryTime: 45 -WaitTime: 30 -Context: service -Extension: 609 -Callerid: WakeUP <536> diff --git a/config/asterisk/wakeup/source/bsp.call.tpl b/config/asterisk/wakeup/source/bsp.call.tpl deleted file mode 100644 index c5b2ab1544..0000000000 --- a/config/asterisk/wakeup/source/bsp.call.tpl +++ /dev/null @@ -1,8 +0,0 @@ -Aktiv;Mon;Tue;Wed;Thu;Fri;Sat;Sun;05:00 -Channel: SIP/536 -MaxRetries: 3 -RetryTime: 45 -WaitTime: 30 -Context: service -Extension: 609 -Callerid: WakeUP <536> diff --git a/config/asterisk/wakeup/wakeup.sh b/config/asterisk/wakeup/wakeup.sh deleted file mode 100644 index 25d7362136..0000000000 --- a/config/asterisk/wakeup/wakeup.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -CALL_P=/var/spool/asterisk/outgoing/ -SOURCE=/var/ipfire/asterisk/wakeup/source/ -TMP=/var/ipfire/asterisk/wakeup/tmp/ -EXT=".call" -DAY=$(/bin/date '+%a') -NOW=$(/bin/date '+%H:%M') - -for f in $(/bin/find ${SOURCE} -type f -name "*${EXT}") -do - if $(/bin/head -1 $f | /bin/egrep -i -q "aktiv") - then - if [ "${1}#" = "debug#" ]; then echo "File Aktiv"; fi - BASEN=$(/usr/bin/basename $f) - if $(/bin/head -1 $f | /bin/egrep -i -q "${DAY}") - then - if [ "${1}#" = "debug#" ]; then echo "Tag vorhanden in ${BASEN}"; fi - NOW2=$(cat $f | head -1 | sed 's/.*;//g' | sed 's/\r//g') - if test "${NOW}#" = "${NOW2}#" - then - if [ "${1}#" = "debug#" ]; then echo "Weckruf wird gestartet"; fi - LAENG=$(wc -l $f) - if [ "${1}#" = "debug#" ]; then echo "/usr/bin/tail -n$(( ${LAENG%% *}-1 )) $f >${TMP}${BASEN}"; else /usr/bin/tail -n$(( ${LAENG%% *}-1 )) $f >${TMP}${BASEN}; fi - if [ "${1}#" = "debug#" ]; then echo /bin/mv ${TMP}${BASEN} ${CALL_P}; else /bin/mv ${TMP}${BASEN} ${CALL_P}; fi - else if [ "${1}#" = "debug#" ]; then echo "Tag ok aber Zeit noch nicht #${NOW}!=${NOW2}#"; fi - fi - else if [ "${1}#" = "debug#" ]; then echo "Tag nicht vorhanden in ${f}"; fi - fi - else if [ "${1}#" = "debug#" ]; then echo "File ${f} nicht aktiv"; fi - fi -done - -# /usr/bin/logger -t ipfire Asterisk Wakeup Run - -# wenn als erster Parameter debug mit gegeben wird, wird alles nur via echo behandelt -# Infos unter: http://www.das-asterisk-buch.de/unstable/call-file.html -# oder: http://www.voip-info.org/wiki-Asterisk+auto-dial+out - -##EOF## diff --git a/config/backup/includes/monit b/config/backup/includes/monit new file mode 100644 index 0000000000..c25b94110b --- /dev/null +++ b/config/backup/includes/monit @@ -0,0 +1,2 @@ +/etc/monitrc +/etc/monit.d diff --git a/config/backup/includes/teamspeak b/config/backup/includes/teamspeak deleted file mode 100644 index 13705d31e9..0000000000 --- a/config/backup/includes/teamspeak +++ /dev/null @@ -1,7 +0,0 @@ -/opt/teamspeak/bad_names.txt -/opt/teamspeak/server.dbs -/opt/teamspeak/server.ini -/opt/teamspeak/server.log -/opt/teamspeak/whitelist.txt - - diff --git a/config/cfgroot/graphs.pl b/config/cfgroot/graphs.pl index 487a4dd932..5e6fddbf6e 100644 --- a/config/cfgroot/graphs.pl +++ b/config/cfgroot/graphs.pl @@ -587,6 +587,118 @@ sub updateifgraph { print "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR; } +sub updatevpngraph { + my $interface = $_[0]; + my $period = $_[1]; + RRDs::graph( + "-", + "--start", + "-1".$period, + "-aPNG", + "-i", + "-z", + "-W www.ipfire.org", + "--alt-y-grid", + "-w 600", + "-h 125", + "-r", + "-t ".$Lang::tr{'traffic on'}." ".$interface." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, + "-v ".$Lang::tr{'bytes per second'}, + "--color=SHADEA".$color{"color19"}, + "--color=SHADEB".$color{"color19"}, + "--color=BACK".$color{"color21"}, + "DEF:incoming=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/if_octets_derive.rrd:rx:AVERAGE", + "DEF:outgoing=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/if_octets_derive.rrd:tx:AVERAGE", + "CDEF:outgoingn=outgoing,-1,*", + "COMMENT:".sprintf("%-20s",$Lang::tr{'caption'}), + "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), + "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), + "COMMENT:".sprintf("%15s",$Lang::tr{'minimal'}), + "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\\j", + "AREA:incoming#00dd00:".sprintf("%-20s",$Lang::tr{'incoming traffic in bytes per second'}), + "GPRINT:incoming:MAX:%8.1lf %sBps", + "GPRINT:incoming:AVERAGE:%8.1lf %sBps", + "GPRINT:incoming:MIN:%8.1lf %sBps", + "GPRINT:incoming:LAST:%8.1lf %sBps\\j", + "AREA:outgoingn#dd0000:".sprintf("%-20s",$Lang::tr{'outgoing traffic in bytes per second'}), + "GPRINT:outgoing:MAX:%8.1lf %sBps", + "GPRINT:outgoing:AVERAGE:%8.1lf %sBps", + "GPRINT:outgoing:MIN:%8.1lf %sBps", + "GPRINT:outgoing:LAST:%8.1lf %sBps\\j", + ); + $ERROR = RRDs::error; + print "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR; +} + +sub updatevpnn2ngraph { + my $interface = $_[0]; + my $period = $_[1]; + RRDs::graph( + "-", + "--start", + "-1".$period, + "-aPNG", + "-i", + "-z", + "-W www.ipfire.org", + "--alt-y-grid", + "-w 600", + "-h 125", + "-r", + "-t ".$Lang::tr{'traffic on'}." ".$interface." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, + "-v ".$Lang::tr{'bytes per second'}, + "--color=SHADEA".$color{"color19"}, + "--color=SHADEB".$color{"color19"}, + "--color=BACK".$color{"color21"}, + "DEF:incoming=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/if_octets_derive-traffic.rrd:rx:AVERAGE", + "DEF:outgoing=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/if_octets_derive-traffic.rrd:tx:AVERAGE", + "DEF:overhead_in=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/if_octets_derive-overhead.rrd:rx:AVERAGE", + "DEF:overhead_out=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/if_octets_derive-overhead.rrd:tx:AVERAGE", + "DEF:compression_in=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/compression_derive-data_in.rrd:uncompressed:AVERAGE", + "DEF:compression_out=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/compression_derive-data_out.rrd:uncompressed:AVERAGE", + "CDEF:outgoingn=outgoing,-1,*", + "CDEF:overhead_outn=overhead_out,-1,*", + "CDEF:compression_outn=compression_out,-1,*", + "COMMENT:".sprintf("%-20s",$Lang::tr{'caption'}), + "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), + "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), + "COMMENT:".sprintf("%15s",$Lang::tr{'minimal'}), + "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\\j", + "AREA:incoming#00dd00:".sprintf("%-20s",$Lang::tr{'incoming traffic in bytes per second'}), + "GPRINT:incoming:MAX:%8.1lf %sBps", + "GPRINT:incoming:AVERAGE:%8.1lf %sBps", + "GPRINT:incoming:MIN:%8.1lf %sBps", + "GPRINT:incoming:LAST:%8.1lf %sBps\\j", + "STACK:overhead_in#116B11:".sprintf("%-20s",$Lang::tr{'incoming overhead in bytes per second'}), + "GPRINT:overhead_in:MAX:%8.1lf %sBps", + "GPRINT:overhead_in:AVERAGE:%8.1lf %sBps", + "GPRINT:overhead_in:MIN:%8.1lf %sBps", + "GPRINT:overhead_in:LAST:%8.1lf %sBps\\j", + "LINE1:compression_in#ff00ff:".sprintf("%-20s",$Lang::tr{'incoming compression in bytes per second'}), + "GPRINT:compression_in:MAX:%8.1lf %sBps", + "GPRINT:compression_in:AVERAGE:%8.1lf %sBps", + "GPRINT:compression_in:MIN:%8.1lf %sBps", + "GPRINT:compression_in:LAST:%8.1lf %sBps\\j", + "AREA:outgoingn#dd0000:".sprintf("%-20s",$Lang::tr{'outgoing traffic in bytes per second'}), + "GPRINT:outgoing:MAX:%8.1lf %sBps", + "GPRINT:outgoing:AVERAGE:%8.1lf %sBps", + "GPRINT:outgoing:MIN:%8.1lf %sBps", + "GPRINT:outgoing:LAST:%8.1lf %sBps\\j", + "STACK:overhead_outn#870C0C:".sprintf("%-20s",$Lang::tr{'outgoing overhead in bytes per second'}), + "GPRINT:overhead_out:MAX:%8.1lf %sBps", + "GPRINT:overhead_out:AVERAGE:%8.1lf %sBps", + "GPRINT:overhead_out:MIN:%8.1lf %sBps", + "GPRINT:overhead_out:LAST:%8.1lf %sBps\\j", + "LINE1:compression_outn#000000:".sprintf("%-20s",$Lang::tr{'outgoing compression in bytes per second'}), + "GPRINT:compression_out:MAX:%8.1lf %sBps", + "GPRINT:compression_out:AVERAGE:%8.1lf %sBps", + "GPRINT:compression_out:MIN:%8.1lf %sBps", + "GPRINT:compression_out:LAST:%8.1lf %sBps\\j", + ); + $ERROR = RRDs::error; + print "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR; +} + # Generate the Firewall Graph for the current period of time for values given by collecd sub updatefwhitsgraph { diff --git a/config/collectd/collectd.conf b/config/collectd/collectd.conf index 61327bf6c0..384c943600 100644 --- a/config/collectd/collectd.conf +++ b/config/collectd/collectd.conf @@ -92,3 +92,4 @@ include "/etc/collectd.precache" #include "/etc/collectd.thermal" include "/etc/collectd.custom" +include "/etc/collectd.vpn" diff --git a/config/collectd/collectd.vpn b/config/collectd/collectd.vpn new file mode 100644 index 0000000000..ca92947f80 --- /dev/null +++ b/config/collectd/collectd.vpn @@ -0,0 +1,5 @@ +LoadPlugin openvpn + + +StatusFile "/var/run/ovpnserver.log" + diff --git a/config/menu/20-status.menu b/config/menu/20-status.menu index b159ed6109..802885ee3a 100644 --- a/config/menu/20-status.menu +++ b/config/menu/20-status.menu @@ -40,6 +40,18 @@ 'title' => "$Lang::tr{'network other'}", 'enabled' => 1, }; + $substatus->{'53.networkovpn'} = { + 'caption' => "$Lang::tr{'openvpn client'}", + 'uri' => '/cgi-bin/netovpnrw.cgi', + 'title' => "$Lang::tr{'openvpn client'}", + 'enabled' => 1, + }; + $substatus->{'54.networkovpnsrv'} = { + 'caption' => "$Lang::tr{'openvpn server'}", + 'uri' => '/cgi-bin/netovpnsrv.cgi', + 'title' => "$Lang::tr{'openvpn server'}", + 'enabled' => 1, + }; $substatus->{'60.hardwaregraphs'} = { 'caption' => "$Lang::tr{'hardware graphs'}", 'uri' => '/cgi-bin/hardwaregraphs.cgi', diff --git a/config/monit/monitrc b/config/monit/monitrc new file mode 100644 index 0000000000..9fee14aad6 --- /dev/null +++ b/config/monit/monitrc @@ -0,0 +1,252 @@ +############################################################################### +## Monit control file +############################################################################### +## +## Comments begin with a '#' and extend through the end of the line. Keywords +## are case insensitive. All path's MUST BE FULLY QUALIFIED, starting with '/'. +## +## Below you will find examples of some frequently used statements. For +## information about the control file and a complete list of statements and +## options, please have a look in the Monit manual. +## +## +############################################################################### +## Global section +############################################################################### +## +## Start Monit in the background (run as a daemon): +# +set daemon 60 # check services at 1-minute intervals +# with start delay 240 # optional: delay the first check by 4-minutes (by +# # default Monit check immediately after Monit start) +# +# +## Set syslog logging with the 'daemon' facility. If the FACILITY option is +## omitted, Monit will use 'user' facility by default. If you want to log to +## a standalone log file instead, specify the full path to the log file +# +set logfile syslog facility log_daemon +# +# +## Set the location of the Monit lock file which stores the process id of the +## running Monit instance. By default this file is stored in $HOME/.monit.pid +# +set pidfile /var/run/monit.pid +# +## Set the location of the Monit id file which stores the unique id for the +## Monit instance. The id is generated and stored on first Monit start. By +## default the file is placed in $HOME/.monit.id. +# +set idfile /var/lib/monit/id +# +## Set the location of the Monit state file which saves monitoring states +## on each cycle. By default the file is placed in $HOME/.monit.state. If +## the state file is stored on a persistent filesystem, Monit will recover +## the monitoring state across reboots. If it is on temporary filesystem, the +## state will be lost on reboot which may be convenient in some situations. +# +set statefile /var/lib/monit/state +# +## Set the list of mail servers for alert delivery. Multiple servers may be +## specified using a comma separator. If the first mail server fails, Monit +# will use the second mail server in the list and so on. By default Monit uses +# port 25 - it is possible to override this with the PORT option. +# +# set mailserver mail.bar.baz, # primary mailserver +# backup.bar.baz port 10025, # backup mailserver on port 10025 +# localhost # fallback relay +# +# +## By default Monit will drop alert events if no mail servers are available. +## If you want to keep the alerts for later delivery retry, you can use the +## EVENTQUEUE statement. The base directory where undelivered alerts will be +## stored is specified by the BASEDIR option. You can limit the queue size +## by using the SLOTS option (if omitted, the queue is limited by space +## available in the back end filesystem). +# +set eventqueue + basedir /var/lib/monit # set the base directory where events will be stored + slots 100 # optionally limit the queue size +# +# +## Send status and events to M/Monit (for more informations about M/Monit +## see http://mmonit.com/). By default Monit registers credentials with +## M/Monit so M/Monit can smoothly communicate back to Monit and you don't +## have to register Monit credentials manually in M/Monit. It is possible to +## disable credential registration using the commented out option below. +## Though, if safety is a concern we recommend instead using https when +## communicating with M/Monit and send credentials encrypted. +# +# set mmonit http://monit:monit@192.168.1.10:8080/collector +# # and register without credentials # Don't register credentials +# +# +## Monit by default uses the following format for alerts if the the mail-format +## statement is missing:: +## --8<-- +## set mail-format { +## from: monit@$HOST +## subject: monit alert -- $EVENT $SERVICE +## message: $EVENT Service $SERVICE +## Date: $DATE +## Action: $ACTION +## Host: $HOST +## Description: $DESCRIPTION +## +## Your faithful employee, +## Monit +## } +## --8<-- +## +## You can override this message format or parts of it, such as subject +## or sender using the MAIL-FORMAT statement. Macros such as $DATE, etc. +## are expanded at runtime. For example, to override the sender, use: +# +# set mail-format { from: monit@foo.bar }a +# +# +## You can set alert recipients whom will receive alerts if/when a +## service defined in this file has errors. Alerts may be restricted on +## events by using a filter as in the second example below. +# +# set alert sysadm@foo.bar # receive all alerts +## Do not alert when Monit start, stop or perform a user initiated action. +## This filter is recommended to avoid getting alerts for trivial cases +# set alert your-name@your.domain not on { instance, action } +# +# +## Monit has an embedded web server which can be used to view status of +## services monitored and manage services from a web interface. See the +## Monit Wiki if you want to enable SSL for the web server. +# +set httpd port 2812 and + use address localhost # only accept connection from localhost + allow localhost # allow localhost to connect to the server and +# allow admin:monit # require user 'admin' with password 'monit' +# allow @monit # allow users of group 'monit' to connect (rw) +# allow @users readonly # allow users of group 'users' to connect readonly + +############################################################################### +## Services +############################################################################### +## +## Check general system resources such as load average, cpu and memory +## usage. Each test specifies a resource, conditions and the action to be +## performed should a test fail. +# +# check system myhost.mydomain.tld +# if loadavg (1min) > 4 then alert +# if loadavg (5min) > 2 then alert +# if memory usage > 75% then alert +# if swap usage > 25% then alert +# if cpu usage (user) > 70% then alert +# if cpu usage (system) > 30% then alert +# if cpu usage (wait) > 20% then alert +# +# +## Check if a file exists, checksum, permissions, uid and gid. In addition +## to alert recipients in the global section, customized alert can be sent to +## additional recipients by specifying a local alert handler. The service may +## be grouped using the GROUP option. More than one group can be specified by +## repeating the 'group name' statement. +# +# check file apache_bin with path /usr/local/apache/bin/httpd +# if failed checksum and +# expect the sum 8f7f419955cefa0b33a2ba316cba3659 then unmonitor +# if failed permission 755 then unmonitor +# if failed uid root then unmonitor +# if failed gid root then unmonitor +# alert security@foo.bar on { +# checksum, permission, uid, gid, unmonitor +# } with the mail-format { subject: Alarm! } +# group server +# +# +## Check that a process is running, in this case Apache, and that it respond +## to HTTP and HTTPS requests. Check its resource usage such as cpu and memory, +## and number of children. If the process is not running, Monit will restart +## it by default. In case the service is restarted very often and the +## problem remains, it is possible to disable monitoring using the TIMEOUT +## statement. This service depends on another service (apache_bin) which +## is defined above. +# +# check process apache with pidfile /usr/local/apache/logs/httpd.pid +# start program = "/etc/init.d/httpd start" with timeout 60 seconds +# stop program = "/etc/init.d/httpd stop" +# if cpu > 60% for 2 cycles then alert +# if cpu > 80% for 5 cycles then restart +# if totalmem > 200.0 MB for 5 cycles then restart +# if children > 250 then restart +# if loadavg(5min) greater than 10 for 8 cycles then stop +# if failed host www.tildeslash.com port 80 protocol http +# and request "/somefile.html" +# then restart +# if failed port 443 type tcpssl protocol http +# with timeout 15 seconds +# then restart +# if 3 restarts within 5 cycles then timeout +# depends on apache_bin +# group server +# +# +## Check filesystem permissions, uid, gid, space and inode usage. Other services, +## such as databases, may depend on this resource and an automatically graceful +## stop may be cascaded to them before the filesystem will become full and data +## lost. +# +# check filesystem datafs with path /dev/sdb1 +# start program = "/bin/mount /data" +# stop program = "/bin/umount /data" +# if failed permission 660 then unmonitor +# if failed uid root then unmonitor +# if failed gid disk then unmonitor +# if space usage > 80% for 5 times within 15 cycles then alert +# if space usage > 99% then stop +# if inode usage > 30000 then alert +# if inode usage > 99% then stop +# group server +# +# +## Check a file's timestamp. In this example, we test if a file is older +## than 15 minutes and assume something is wrong if its not updated. Also, +## if the file size exceed a given limit, execute a script +# +# check file database with path /data/mydatabase.db +# if failed permission 700 then alert +# if failed uid data then alert +# if failed gid data then alert +# if timestamp > 15 minutes then alert +# if size > 100 MB then exec "/my/cleanup/script" as uid dba and gid dba +# +# +## Check directory permission, uid and gid. An event is triggered if the +## directory does not belong to the user with uid 0 and gid 0. In addition, +## the permissions have to match the octal description of 755 (see chmod(1)). +# +# check directory bin with path /bin +# if failed permission 755 then unmonitor +# if failed uid 0 then unmonitor +# if failed gid 0 then unmonitor +# +# +## Check a remote host availability by issuing a ping test and check the +## content of a response from a web server. Up to three pings are sent and +## connection to a port and an application level network check is performed. +# +# check host myserver with address 192.168.1.1 +# if failed icmp type echo count 3 with timeout 3 seconds then alert +# if failed port 3306 protocol mysql with timeout 15 seconds then alert +# if failed port 80 protocol http +# and request /monit/ with content = "Monit [0-9.]+ Download" +# then alert +# +# +############################################################################### +## Includes +############################################################################### +## +## It is possible to include additional configuration parts from other files or +## directories. +# +include /etc/monit.d/* +# diff --git a/config/rootfiles/common/apache2 b/config/rootfiles/common/apache2 index 474e7a7dc1..3eabe9f769 100644 --- a/config/rootfiles/common/apache2 +++ b/config/rootfiles/common/apache2 @@ -1419,6 +1419,8 @@ srv/web/ipfire/cgi-bin/modem-status.cgi srv/web/ipfire/cgi-bin/netexternal.cgi srv/web/ipfire/cgi-bin/netinternal.cgi srv/web/ipfire/cgi-bin/netother.cgi +srv/web/ipfire/cgi-bin/netovpnrw.cgi +srv/web/ipfire/cgi-bin/netovpnsrv.cgi srv/web/ipfire/cgi-bin/optionsfw.cgi srv/web/ipfire/cgi-bin/ovpnmain.cgi srv/web/ipfire/cgi-bin/p2p-block.cgi diff --git a/config/rootfiles/common/armv5tel/initscripts b/config/rootfiles/common/armv5tel/initscripts old mode 100644 new mode 100755 index 60ef0ef19c..53bc64f9a8 --- a/config/rootfiles/common/armv5tel/initscripts +++ b/config/rootfiles/common/armv5tel/initscripts @@ -52,6 +52,7 @@ etc/rc.d/init.d/mISDN #etc/rc.d/init.d/mldonkey etc/rc.d/init.d/modules #etc/rc.d/init.d/motion +#etc/rc.d/init.d/monit etc/rc.d/init.d/mountfs etc/rc.d/init.d/mountkernfs etc/rc.d/init.d/mounttmpfs @@ -120,7 +121,6 @@ etc/rc.d/init.d/swap etc/rc.d/init.d/swconfig etc/rc.d/init.d/sysctl etc/rc.d/init.d/sysklogd -etc/rc.d/init.d/teamspeak etc/rc.d/init.d/template #etc/rc.d/init.d/tftpd etc/rc.d/init.d/tmpfs diff --git a/config/rootfiles/common/collectd b/config/rootfiles/common/collectd index 2b9fa285c7..72b2dee033 100644 --- a/config/rootfiles/common/collectd +++ b/config/rootfiles/common/collectd @@ -2,6 +2,7 @@ etc/collectd.conf etc/collectd.custom etc/collectd.precache etc/collectd.thermal +etc/collectd.vpn etc/rc.d/init.d/collectd etc/rc.d/rc0.d/K50collectd etc/rc.d/rc3.d/S29collectd @@ -212,15 +213,18 @@ usr/lib/collectd/write_http.so usr/lib/libcollectdclient.so usr/lib/libcollectdclient.so.0 usr/lib/libcollectdclient.so.0.0.0 -#usr/lib/perl5/site_perl/5.12.3/Collectd -#usr/lib/perl5/site_perl/5.12.3/Collectd.pm -#usr/lib/perl5/site_perl/5.12.3/Collectd/Plugins -#usr/lib/perl5/site_perl/5.12.3/Collectd/Plugins/Monitorus.pm -#usr/lib/perl5/site_perl/5.12.3/Collectd/Plugins/OpenVZ.pm -#usr/lib/perl5/site_perl/5.12.3/Collectd/Unixsock.pm -#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Collectd -#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Collectd/.packlist +#usr/lib/perl5/Collectd +#usr/lib/perl5/Collectd.pm +#usr/lib/perl5/Collectd/Plugins +#usr/lib/perl5/Collectd/Plugins/OpenVZ.pm +#usr/lib/perl5/Collectd/Unixsock.pm +#usr/lib/perl5/i586-linux-thread-multi +#usr/lib/perl5/i586-linux-thread-multi/auto +#usr/lib/perl5/i586-linux-thread-multi/auto/Collectd +#usr/lib/perl5/i586-linux-thread-multi/auto/Collectd/.packlist +#usr/lib/perl5/i586-linux-thread-multi/perllocal.pod #usr/lib/pkgconfig/libcollectdclient.pc +#usr/man/man3/Collectd::Unixsock.3 usr/sbin/collectd usr/sbin/collectdmon #usr/share/collectd @@ -229,7 +233,6 @@ usr/share/collectd/types.db #usr/share/man/man1/collectd-nagios.1 #usr/share/man/man1/collectd.1 #usr/share/man/man1/collectdmon.1 -#usr/share/man/man3/Collectd::Unixsock.3 #usr/share/man/man5/collectd-email.5 #usr/share/man/man5/collectd-exec.5 #usr/share/man/man5/collectd-java.5 diff --git a/config/rootfiles/common/daq b/config/rootfiles/common/daq index b8a9fd4aca..6c156e3d9c 100644 --- a/config/rootfiles/common/daq +++ b/config/rootfiles/common/daq @@ -21,7 +21,7 @@ usr/lib/daq #usr/lib/libdaq.la #usr/lib/libdaq.so usr/lib/libdaq.so.2 -usr/lib/libdaq.so.2.0.2 +usr/lib/libdaq.so.2.0.4 #usr/lib/libdaq_static.a #usr/lib/libdaq_static.la #usr/lib/libdaq_static_modules.a diff --git a/config/rootfiles/common/ddns b/config/rootfiles/common/ddns index f93965cea2..446656e8da 100644 --- a/config/rootfiles/common/ddns +++ b/config/rootfiles/common/ddns @@ -6,6 +6,9 @@ usr/lib/python2.7/site-packages/ddns/__init__.pyo usr/lib/python2.7/site-packages/ddns/__version__.py usr/lib/python2.7/site-packages/ddns/__version__.pyc usr/lib/python2.7/site-packages/ddns/__version__.pyo +usr/lib/python2.7/site-packages/ddns/database.py +usr/lib/python2.7/site-packages/ddns/database.pyc +usr/lib/python2.7/site-packages/ddns/database.pyo usr/lib/python2.7/site-packages/ddns/errors.py usr/lib/python2.7/site-packages/ddns/errors.pyc usr/lib/python2.7/site-packages/ddns/errors.pyo diff --git a/config/rootfiles/common/fcron b/config/rootfiles/common/fcron index 89f68a76cc..d37541b957 100644 --- a/config/rootfiles/common/fcron +++ b/config/rootfiles/common/fcron @@ -15,67 +15,67 @@ etc/fcron.weekly/info.txt usr/bin/fcronsighup usr/bin/fcrontab usr/sbin/fcron -#usr/share/doc/fcron-3.0.4 -#usr/share/doc/fcron-3.0.4/en -#usr/share/doc/fcron-3.0.4/en/HTML -#usr/share/doc/fcron-3.0.4/en/HTML/LEGALNOTICE.html -#usr/share/doc/fcron-3.0.4/en/HTML/changes.html -#usr/share/doc/fcron-3.0.4/en/HTML/faq.html -#usr/share/doc/fcron-3.0.4/en/HTML/fcron.8.html -#usr/share/doc/fcron-3.0.4/en/HTML/fcron.conf.5.html -#usr/share/doc/fcron-3.0.4/en/HTML/fcrondyn.1.html -#usr/share/doc/fcron-3.0.4/en/HTML/fcrontab.1.html -#usr/share/doc/fcron-3.0.4/en/HTML/fcrontab.5.html -#usr/share/doc/fcron-3.0.4/en/HTML/fdl.html -#usr/share/doc/fcron-3.0.4/en/HTML/gpl.html -#usr/share/doc/fcron-3.0.4/en/HTML/how-and-why.html -#usr/share/doc/fcron-3.0.4/en/HTML/index.html -#usr/share/doc/fcron-3.0.4/en/HTML/install.html -#usr/share/doc/fcron-3.0.4/en/HTML/manpages.html -#usr/share/doc/fcron-3.0.4/en/HTML/readme.html -#usr/share/doc/fcron-3.0.4/en/HTML/relnotes.html -#usr/share/doc/fcron-3.0.4/en/HTML/thanks.html -#usr/share/doc/fcron-3.0.4/en/HTML/todo.html -#usr/share/doc/fcron-3.0.4/en/HTML/using-fcron.html -#usr/share/doc/fcron-3.0.4/en/txt -#usr/share/doc/fcron-3.0.4/en/txt/changes.txt -#usr/share/doc/fcron-3.0.4/en/txt/faq.txt -#usr/share/doc/fcron-3.0.4/en/txt/gpl.txt -#usr/share/doc/fcron-3.0.4/en/txt/install.txt -#usr/share/doc/fcron-3.0.4/en/txt/readme.txt -#usr/share/doc/fcron-3.0.4/en/txt/relnotes.txt -#usr/share/doc/fcron-3.0.4/en/txt/thanks.txt -#usr/share/doc/fcron-3.0.4/en/txt/todo.txt -#usr/share/doc/fcron-3.0.4/fr -#usr/share/doc/fcron-3.0.4/fr/HTML -#usr/share/doc/fcron-3.0.4/fr/HTML/LEGALNOTICE.html -#usr/share/doc/fcron-3.0.4/fr/HTML/changes.html -#usr/share/doc/fcron-3.0.4/fr/HTML/faq.html -#usr/share/doc/fcron-3.0.4/fr/HTML/fcron.8.html -#usr/share/doc/fcron-3.0.4/fr/HTML/fcron.conf.5.html -#usr/share/doc/fcron-3.0.4/fr/HTML/fcrondyn.1.html -#usr/share/doc/fcron-3.0.4/fr/HTML/fcrontab.1.html -#usr/share/doc/fcron-3.0.4/fr/HTML/fcrontab.5.html -#usr/share/doc/fcron-3.0.4/fr/HTML/fdl.html -#usr/share/doc/fcron-3.0.4/fr/HTML/gpl.html -#usr/share/doc/fcron-3.0.4/fr/HTML/how-and-why.html -#usr/share/doc/fcron-3.0.4/fr/HTML/index.html -#usr/share/doc/fcron-3.0.4/fr/HTML/install.html -#usr/share/doc/fcron-3.0.4/fr/HTML/manpages.html -#usr/share/doc/fcron-3.0.4/fr/HTML/readme.html -#usr/share/doc/fcron-3.0.4/fr/HTML/relnotes.html -#usr/share/doc/fcron-3.0.4/fr/HTML/thanks.html -#usr/share/doc/fcron-3.0.4/fr/HTML/todo.html -#usr/share/doc/fcron-3.0.4/fr/HTML/using-fcron.html -#usr/share/doc/fcron-3.0.4/fr/txt -#usr/share/doc/fcron-3.0.4/fr/txt/changes.txt -#usr/share/doc/fcron-3.0.4/fr/txt/faq.txt -#usr/share/doc/fcron-3.0.4/fr/txt/gpl.txt -#usr/share/doc/fcron-3.0.4/fr/txt/install.txt -#usr/share/doc/fcron-3.0.4/fr/txt/readme.txt -#usr/share/doc/fcron-3.0.4/fr/txt/relnotes.txt -#usr/share/doc/fcron-3.0.4/fr/txt/thanks.txt -#usr/share/doc/fcron-3.0.4/fr/txt/todo.txt +#usr/share/doc/fcron-3.2.0 +#usr/share/doc/fcron-3.2.0/en +#usr/share/doc/fcron-3.2.0/en/HTML +#usr/share/doc/fcron-3.2.0/en/HTML/LEGALNOTICE.html +#usr/share/doc/fcron-3.2.0/en/HTML/changes.html +#usr/share/doc/fcron-3.2.0/en/HTML/faq.html +#usr/share/doc/fcron-3.2.0/en/HTML/fcron.8.html +#usr/share/doc/fcron-3.2.0/en/HTML/fcron.conf.5.html +#usr/share/doc/fcron-3.2.0/en/HTML/fcrondyn.1.html +#usr/share/doc/fcron-3.2.0/en/HTML/fcrontab.1.html +#usr/share/doc/fcron-3.2.0/en/HTML/fcrontab.5.html +#usr/share/doc/fcron-3.2.0/en/HTML/fdl.html +#usr/share/doc/fcron-3.2.0/en/HTML/gpl.html +#usr/share/doc/fcron-3.2.0/en/HTML/how-and-why.html +#usr/share/doc/fcron-3.2.0/en/HTML/index.html +#usr/share/doc/fcron-3.2.0/en/HTML/install.html +#usr/share/doc/fcron-3.2.0/en/HTML/manpages.html +#usr/share/doc/fcron-3.2.0/en/HTML/readme.html +#usr/share/doc/fcron-3.2.0/en/HTML/relnotes.html +#usr/share/doc/fcron-3.2.0/en/HTML/thanks.html +#usr/share/doc/fcron-3.2.0/en/HTML/todo.html +#usr/share/doc/fcron-3.2.0/en/HTML/using-fcron.html +#usr/share/doc/fcron-3.2.0/en/txt +#usr/share/doc/fcron-3.2.0/en/txt/changes.txt +#usr/share/doc/fcron-3.2.0/en/txt/faq.txt +#usr/share/doc/fcron-3.2.0/en/txt/gpl.txt +#usr/share/doc/fcron-3.2.0/en/txt/install.txt +#usr/share/doc/fcron-3.2.0/en/txt/readme.txt +#usr/share/doc/fcron-3.2.0/en/txt/relnotes.txt +#usr/share/doc/fcron-3.2.0/en/txt/thanks.txt +#usr/share/doc/fcron-3.2.0/en/txt/todo.txt +#usr/share/doc/fcron-3.2.0/fr +#usr/share/doc/fcron-3.2.0/fr/HTML +#usr/share/doc/fcron-3.2.0/fr/HTML/LEGALNOTICE.html +#usr/share/doc/fcron-3.2.0/fr/HTML/changes.html +#usr/share/doc/fcron-3.2.0/fr/HTML/faq.html +#usr/share/doc/fcron-3.2.0/fr/HTML/fcron.8.html +#usr/share/doc/fcron-3.2.0/fr/HTML/fcron.conf.5.html +#usr/share/doc/fcron-3.2.0/fr/HTML/fcrondyn.1.html +#usr/share/doc/fcron-3.2.0/fr/HTML/fcrontab.1.html +#usr/share/doc/fcron-3.2.0/fr/HTML/fcrontab.5.html +#usr/share/doc/fcron-3.2.0/fr/HTML/fdl.html +#usr/share/doc/fcron-3.2.0/fr/HTML/gpl.html +#usr/share/doc/fcron-3.2.0/fr/HTML/how-and-why.html +#usr/share/doc/fcron-3.2.0/fr/HTML/index.html +#usr/share/doc/fcron-3.2.0/fr/HTML/install.html +#usr/share/doc/fcron-3.2.0/fr/HTML/manpages.html +#usr/share/doc/fcron-3.2.0/fr/HTML/readme.html +#usr/share/doc/fcron-3.2.0/fr/HTML/relnotes.html +#usr/share/doc/fcron-3.2.0/fr/HTML/thanks.html +#usr/share/doc/fcron-3.2.0/fr/HTML/todo.html +#usr/share/doc/fcron-3.2.0/fr/HTML/using-fcron.html +#usr/share/doc/fcron-3.2.0/fr/txt +#usr/share/doc/fcron-3.2.0/fr/txt/changes.txt +#usr/share/doc/fcron-3.2.0/fr/txt/faq.txt +#usr/share/doc/fcron-3.2.0/fr/txt/gpl.txt +#usr/share/doc/fcron-3.2.0/fr/txt/install.txt +#usr/share/doc/fcron-3.2.0/fr/txt/readme.txt +#usr/share/doc/fcron-3.2.0/fr/txt/relnotes.txt +#usr/share/doc/fcron-3.2.0/fr/txt/thanks.txt +#usr/share/doc/fcron-3.2.0/fr/txt/todo.txt #usr/share/man/fr #usr/share/man/fr/man1 #usr/share/man/fr/man1/fcrondyn.1 diff --git a/config/rootfiles/common/i586/initscripts b/config/rootfiles/common/i586/initscripts old mode 100644 new mode 100755 index d0bc8c5c20..7bab7c4f94 --- a/config/rootfiles/common/i586/initscripts +++ b/config/rootfiles/common/i586/initscripts @@ -53,6 +53,7 @@ etc/rc.d/init.d/mISDN #etc/rc.d/init.d/miniupnpd #etc/rc.d/init.d/mldonkey etc/rc.d/init.d/modules +#etc/rc.d/init.d/monit #etc/rc.d/init.d/motion etc/rc.d/init.d/mountfs etc/rc.d/init.d/mountkernfs @@ -121,7 +122,6 @@ etc/rc.d/init.d/static-routes etc/rc.d/init.d/swap etc/rc.d/init.d/sysctl etc/rc.d/init.d/sysklogd -etc/rc.d/init.d/teamspeak etc/rc.d/init.d/template #etc/rc.d/init.d/tftpd etc/rc.d/init.d/tmpfs diff --git a/config/rootfiles/common/libart b/config/rootfiles/common/libart index 316cfb1e56..7e98a600dc 100644 --- a/config/rootfiles/common/libart +++ b/config/rootfiles/common/libart @@ -49,5 +49,5 @@ #usr/lib/libart_lgpl_2.la usr/lib/libart_lgpl_2.so usr/lib/libart_lgpl_2.so.2 -usr/lib/libart_lgpl_2.so.2.3.17 +usr/lib/libart_lgpl_2.so.2.3.21 #usr/lib/pkgconfig/libart-2.0.pc diff --git a/config/rootfiles/common/libcap b/config/rootfiles/common/libcap index f490c89f6b..0049f0a694 100644 --- a/config/rootfiles/common/libcap +++ b/config/rootfiles/common/libcap @@ -2,23 +2,26 @@ lib/libcap.so lib/libcap.so.1 lib/libcap.so.2 -lib/libcap.so.2.19 +lib/libcap.so.2.24 lib/security/pam_cap.so sbin/capsh sbin/getcap sbin/getpcaps sbin/setcap #usr/include/sys/capability.h +#usr/lib/pkgconfig/libcap.pc #usr/share/man/man1/capsh.1 #usr/share/man/man3/cap_clear.3 #usr/share/man/man3/cap_clear_flag.3 #usr/share/man/man3/cap_compare.3 #usr/share/man/man3/cap_copy_ext.3 #usr/share/man/man3/cap_copy_int.3 +#usr/share/man/man3/cap_drop_bound.3 #usr/share/man/man3/cap_dup.3 #usr/share/man/man3/cap_free.3 #usr/share/man/man3/cap_from_name.3 #usr/share/man/man3/cap_from_text.3 +#usr/share/man/man3/cap_get_bound.3 #usr/share/man/man3/cap_get_fd.3 #usr/share/man/man3/cap_get_file.3 #usr/share/man/man3/cap_get_flag.3 diff --git a/config/rootfiles/common/libffi b/config/rootfiles/common/libffi index 2c887bdb31..8d393d2212 100644 --- a/config/rootfiles/common/libffi +++ b/config/rootfiles/common/libffi @@ -1,12 +1,12 @@ -#usr/lib/libffi-3.0.11 -#usr/lib/libffi-3.0.11/include -#usr/lib/libffi-3.0.11/include/ffi.h -#usr/lib/libffi-3.0.11/include/ffitarget.h +#usr/lib/libffi-3.2.1 +#usr/lib/libffi-3.2.1/include +#usr/lib/libffi-3.2.1/include/ffi.h +#usr/lib/libffi-3.2.1/include/ffitarget.h #usr/lib/libffi.a #usr/lib/libffi.la #usr/lib/libffi.so usr/lib/libffi.so.6 -usr/lib/libffi.so.6.0.0 +usr/lib/libffi.so.6.0.4 #usr/lib/pkgconfig/libffi.pc #usr/share/info/libffi.info #usr/share/man/man3/ffi.3 diff --git a/config/rootfiles/common/libpcap b/config/rootfiles/common/libpcap index 52169a74a9..b8e96489ca 100644 --- a/config/rootfiles/common/libpcap +++ b/config/rootfiles/common/libpcap @@ -1,13 +1,13 @@ #usr/bin/pcap-config #usr/include/pcap -#usr/include/pcap/bluetooth.h #usr/include/pcap-bpf.h -#usr/include/pcap-int.h -#usr/include/pcap/ipnet.h #usr/include/pcap-namedb.h #usr/include/pcap.h +#usr/include/pcap/bluetooth.h #usr/include/pcap/bpf.h +#usr/include/pcap/ipnet.h #usr/include/pcap/namedb.h +#usr/include/pcap/nflog.h #usr/include/pcap/pcap.h #usr/include/pcap/sll.h #usr/include/pcap/usb.h @@ -15,7 +15,7 @@ #usr/lib/libpcap.a usr/lib/libpcap.so usr/lib/libpcap.so.1 -usr/lib/libpcap.so.1.4.0 +usr/lib/libpcap.so.1.6.2 #usr/share/man/man1/pcap-config.1 #usr/share/man/man3/pcap.3pcap #usr/share/man/man3/pcap_activate.3pcap @@ -40,11 +40,13 @@ usr/lib/libpcap.so.1.4.0 #usr/share/man/man3/pcap_fileno.3pcap #usr/share/man/man3/pcap_findalldevs.3pcap #usr/share/man/man3/pcap_fopen_offline.3pcap +#usr/share/man/man3/pcap_fopen_offline_with_tstamp_precision.3pcap #usr/share/man/man3/pcap_free_datalinks.3pcap #usr/share/man/man3/pcap_free_tstamp_types.3pcap #usr/share/man/man3/pcap_freealldevs.3pcap #usr/share/man/man3/pcap_freecode.3pcap #usr/share/man/man3/pcap_get_selectable_fd.3pcap +#usr/share/man/man3/pcap_get_tstamp_precision.3pcap #usr/share/man/man3/pcap_geterr.3pcap #usr/share/man/man3/pcap_getnonblock.3pcap #usr/share/man/man3/pcap_inject.3pcap @@ -61,16 +63,20 @@ usr/lib/libpcap.so.1.4.0 #usr/share/man/man3/pcap_next_ex.3pcap #usr/share/man/man3/pcap_offline_filter.3pcap #usr/share/man/man3/pcap_open_dead.3pcap +#usr/share/man/man3/pcap_open_dead_with_tstamp_precision.3pcap #usr/share/man/man3/pcap_open_live.3pcap #usr/share/man/man3/pcap_open_offline.3pcap +#usr/share/man/man3/pcap_open_offline_with_tstamp_precision.3pcap #usr/share/man/man3/pcap_perror.3pcap #usr/share/man/man3/pcap_sendpacket.3pcap #usr/share/man/man3/pcap_set_buffer_size.3pcap #usr/share/man/man3/pcap_set_datalink.3pcap +#usr/share/man/man3/pcap_set_immediate_mode.3pcap #usr/share/man/man3/pcap_set_promisc.3pcap #usr/share/man/man3/pcap_set_rfmon.3pcap #usr/share/man/man3/pcap_set_snaplen.3pcap #usr/share/man/man3/pcap_set_timeout.3pcap +#usr/share/man/man3/pcap_set_tstamp_precision.3pcap #usr/share/man/man3/pcap_set_tstamp_type.3pcap #usr/share/man/man3/pcap_setdirection.3pcap #usr/share/man/man3/pcap_setfilter.3pcap @@ -80,6 +86,7 @@ usr/lib/libpcap.so.1.4.0 #usr/share/man/man3/pcap_statustostr.3pcap #usr/share/man/man3/pcap_strerror.3pcap #usr/share/man/man3/pcap_tstamp_type_name_to_val.3pcap +#usr/share/man/man3/pcap_tstamp_type_val_to_description.3pcap #usr/share/man/man3/pcap_tstamp_type_val_to_name.3pcap #usr/share/man/man5/pcap-savefile.5 #usr/share/man/man7/pcap-filter.7 diff --git a/config/rootfiles/common/logrotate b/config/rootfiles/common/logrotate index 8410c395f7..7f3e709ead 100644 --- a/config/rootfiles/common/logrotate +++ b/config/rootfiles/common/logrotate @@ -1,3 +1,5 @@ +#etc/logrotate.d +etc/logrotate.d/.empty #usr/man/man8/logrotate.8 usr/sbin/logrotate var/lib/logrotate.status diff --git a/config/rootfiles/common/openvpn b/config/rootfiles/common/openvpn index d1b836a1b4..b58e30c535 100644 --- a/config/rootfiles/common/openvpn +++ b/config/rootfiles/common/openvpn @@ -17,7 +17,6 @@ usr/sbin/openvpn #usr/share/doc/openvpn/README.polarssl #usr/share/doc/openvpn/management-notes.txt #usr/share/man/man8/openvpn.8 -var/ipfire/ovpn var/ipfire/ovpn/ca var/ipfire/ovpn/caconfig var/ipfire/ovpn/ccd @@ -32,3 +31,4 @@ var/ipfire/ovpn/ovpn-leases.db var/ipfire/ovpn/ovpnconfig var/ipfire/ovpn/scripts var/ipfire/ovpn/settings +var/log/openvpn diff --git a/config/rootfiles/common/pcre b/config/rootfiles/common/pcre index 5c292700c7..78ac2a24fb 100644 --- a/config/rootfiles/common/pcre +++ b/config/rootfiles/common/pcre @@ -10,15 +10,15 @@ #usr/lib/libpcre.la usr/lib/libpcre.so usr/lib/libpcre.so.1 -usr/lib/libpcre.so.1.0.1 +usr/lib/libpcre.so.1.2.4 #usr/lib/libpcrecpp.la usr/lib/libpcrecpp.so usr/lib/libpcrecpp.so.0 -usr/lib/libpcrecpp.so.0.0.0 +usr/lib/libpcrecpp.so.0.0.1 #usr/lib/libpcreposix.la usr/lib/libpcreposix.so usr/lib/libpcreposix.so.0 -usr/lib/libpcreposix.so.0.0.1 +usr/lib/libpcreposix.so.0.0.3 #usr/lib/pkgconfig/libpcre.pc #usr/lib/pkgconfig/libpcrecpp.pc #usr/lib/pkgconfig/libpcreposix.pc @@ -30,10 +30,13 @@ usr/lib/libpcreposix.so.0.0.1 #usr/share/doc/pcre/NEWS #usr/share/doc/pcre/README #usr/share/doc/pcre/html +#usr/share/doc/pcre/html/NON-AUTOTOOLS-BUILD.txt +#usr/share/doc/pcre/html/README.txt #usr/share/doc/pcre/html/index.html #usr/share/doc/pcre/html/pcre-config.html #usr/share/doc/pcre/html/pcre.html #usr/share/doc/pcre/html/pcre16.html +#usr/share/doc/pcre/html/pcre32.html #usr/share/doc/pcre/html/pcre_assign_jit_stack.html #usr/share/doc/pcre/html/pcre_compile.html #usr/share/doc/pcre/html/pcre_compile2.html @@ -51,6 +54,7 @@ usr/lib/libpcreposix.so.0.0.1 #usr/share/doc/pcre/html/pcre_get_stringtable_entries.html #usr/share/doc/pcre/html/pcre_get_substring.html #usr/share/doc/pcre/html/pcre_get_substring_list.html +#usr/share/doc/pcre/html/pcre_jit_exec.html #usr/share/doc/pcre/html/pcre_jit_stack_alloc.html #usr/share/doc/pcre/html/pcre_jit_stack_free.html #usr/share/doc/pcre/html/pcre_maketables.html @@ -58,6 +62,7 @@ usr/lib/libpcreposix.so.0.0.1 #usr/share/doc/pcre/html/pcre_refcount.html #usr/share/doc/pcre/html/pcre_study.html #usr/share/doc/pcre/html/pcre_utf16_to_host_byte_order.html +#usr/share/doc/pcre/html/pcre_utf32_to_host_byte_order.html #usr/share/doc/pcre/html/pcre_version.html #usr/share/doc/pcre/html/pcreapi.html #usr/share/doc/pcre/html/pcrebuild.html @@ -105,6 +110,7 @@ usr/lib/libpcreposix.so.0.0.1 #usr/share/man/man3/pcre16_get_stringtable_entries.3 #usr/share/man/man3/pcre16_get_substring.3 #usr/share/man/man3/pcre16_get_substring_list.3 +#usr/share/man/man3/pcre16_jit_exec.3 #usr/share/man/man3/pcre16_jit_stack_alloc.3 #usr/share/man/man3/pcre16_jit_stack_free.3 #usr/share/man/man3/pcre16_maketables.3 @@ -113,6 +119,33 @@ usr/lib/libpcreposix.so.0.0.1 #usr/share/man/man3/pcre16_study.3 #usr/share/man/man3/pcre16_utf16_to_host_byte_order.3 #usr/share/man/man3/pcre16_version.3 +#usr/share/man/man3/pcre32.3 +#usr/share/man/man3/pcre32_assign_jit_stack.3 +#usr/share/man/man3/pcre32_compile.3 +#usr/share/man/man3/pcre32_compile2.3 +#usr/share/man/man3/pcre32_config.3 +#usr/share/man/man3/pcre32_copy_named_substring.3 +#usr/share/man/man3/pcre32_copy_substring.3 +#usr/share/man/man3/pcre32_dfa_exec.3 +#usr/share/man/man3/pcre32_exec.3 +#usr/share/man/man3/pcre32_free_study.3 +#usr/share/man/man3/pcre32_free_substring.3 +#usr/share/man/man3/pcre32_free_substring_list.3 +#usr/share/man/man3/pcre32_fullinfo.3 +#usr/share/man/man3/pcre32_get_named_substring.3 +#usr/share/man/man3/pcre32_get_stringnumber.3 +#usr/share/man/man3/pcre32_get_stringtable_entries.3 +#usr/share/man/man3/pcre32_get_substring.3 +#usr/share/man/man3/pcre32_get_substring_list.3 +#usr/share/man/man3/pcre32_jit_exec.3 +#usr/share/man/man3/pcre32_jit_stack_alloc.3 +#usr/share/man/man3/pcre32_jit_stack_free.3 +#usr/share/man/man3/pcre32_maketables.3 +#usr/share/man/man3/pcre32_pattern_to_host_byte_order.3 +#usr/share/man/man3/pcre32_refcount.3 +#usr/share/man/man3/pcre32_study.3 +#usr/share/man/man3/pcre32_utf32_to_host_byte_order.3 +#usr/share/man/man3/pcre32_version.3 #usr/share/man/man3/pcre_assign_jit_stack.3 #usr/share/man/man3/pcre_compile.3 #usr/share/man/man3/pcre_compile2.3 @@ -130,6 +163,7 @@ usr/lib/libpcreposix.so.0.0.1 #usr/share/man/man3/pcre_get_stringtable_entries.3 #usr/share/man/man3/pcre_get_substring.3 #usr/share/man/man3/pcre_get_substring_list.3 +#usr/share/man/man3/pcre_jit_exec.3 #usr/share/man/man3/pcre_jit_stack_alloc.3 #usr/share/man/man3/pcre_jit_stack_free.3 #usr/share/man/man3/pcre_maketables.3 @@ -137,12 +171,14 @@ usr/lib/libpcreposix.so.0.0.1 #usr/share/man/man3/pcre_refcount.3 #usr/share/man/man3/pcre_study.3 #usr/share/man/man3/pcre_utf16_to_host_byte_order.3 +#usr/share/man/man3/pcre_utf32_to_host_byte_order.3 #usr/share/man/man3/pcre_version.3 #usr/share/man/man3/pcreapi.3 #usr/share/man/man3/pcrebuild.3 #usr/share/man/man3/pcrecallout.3 #usr/share/man/man3/pcrecompat.3 #usr/share/man/man3/pcrecpp.3 +#usr/share/man/man3/pcredemo.3 #usr/share/man/man3/pcrejit.3 #usr/share/man/man3/pcrelimits.3 #usr/share/man/man3/pcrematching.3 diff --git a/config/rootfiles/common/screen b/config/rootfiles/common/screen index f57e550167..6124db15f7 100644 --- a/config/rootfiles/common/screen +++ b/config/rootfiles/common/screen @@ -1,6 +1,6 @@ etc/screenrc usr/bin/screen -usr/bin/screen-4.0.3 +usr/bin/screen-4.2.1 #usr/info/screen.info #usr/info/screen.info-1 #usr/info/screen.info-2 @@ -8,6 +8,8 @@ usr/bin/screen-4.0.3 #usr/info/screen.info-4 #usr/info/screen.info-5 #usr/man/man1/screen.1 +#usr/share/info/screen.info +#usr/share/man/man1/screen.1 #usr/share/screen #usr/share/screen/utf8encodings #usr/share/screen/utf8encodings/01 diff --git a/config/rootfiles/common/smartmontools b/config/rootfiles/common/smartmontools index 7080398883..f1df27bb9a 100644 --- a/config/rootfiles/common/smartmontools +++ b/config/rootfiles/common/smartmontools @@ -2,6 +2,7 @@ #usr/etc/rc.d/init.d #usr/etc/rc.d/init.d/smartd #usr/etc/smartd.conf +#usr/etc/smartd_warning.d #usr/etc/smartd_warning.sh usr/sbin/smartctl #usr/sbin/smartd @@ -21,10 +22,13 @@ usr/sbin/update-smart-drivedb #usr/share/doc/smartmontools/examplescripts/Example2 #usr/share/doc/smartmontools/examplescripts/Example3 #usr/share/doc/smartmontools/examplescripts/Example4 +#usr/share/doc/smartmontools/examplescripts/Example5 +#usr/share/doc/smartmontools/examplescripts/Example6 #usr/share/doc/smartmontools/examplescripts/README #usr/share/doc/smartmontools/smartd.conf #usr/share/man/man5/smartd.conf.5 #usr/share/man/man8/smartctl.8 #usr/share/man/man8/smartd.8 +#usr/share/man/man8/update-smart-drivedb.8 #usr/share/smartmontools usr/share/smartmontools/drivedb.h diff --git a/config/rootfiles/common/snort b/config/rootfiles/common/snort index 706c5f8523..6dfcdfc6a7 100644 --- a/config/rootfiles/common/snort +++ b/config/rootfiles/common/snort @@ -27,16 +27,21 @@ usr/bin/u2spewfoo #usr/include/snort/dynamic_output/snort_debug.h #usr/include/snort/dynamic_output/stream_api.h #usr/include/snort/dynamic_preproc +#usr/include/snort/dynamic_preproc/appId.h #usr/include/snort/dynamic_preproc/bitop.h #usr/include/snort/dynamic_preproc/cpuclock.h #usr/include/snort/dynamic_preproc/file_api.h +#usr/include/snort/dynamic_preproc/file_mail_common.h #usr/include/snort/dynamic_preproc/idle_processing.h #usr/include/snort/dynamic_preproc/ipv6_port.h #usr/include/snort/dynamic_preproc/mempool.h +#usr/include/snort/dynamic_preproc/mpse_methods.h #usr/include/snort/dynamic_preproc/obfuscation.h +#usr/include/snort/dynamic_preproc/packet_time.h #usr/include/snort/dynamic_preproc/preprocids.h #usr/include/snort/dynamic_preproc/profiler.h #usr/include/snort/dynamic_preproc/segment_mem.h +#usr/include/snort/dynamic_preproc/session_api.h #usr/include/snort/dynamic_preproc/sfPolicy.h #usr/include/snort/dynamic_preproc/sfPolicyUserData.h #usr/include/snort/dynamic_preproc/sf_decompression.h @@ -55,14 +60,22 @@ usr/bin/u2spewfoo #usr/include/snort/dynamic_preproc/sf_snort_plugin_api.h #usr/include/snort/dynamic_preproc/sfcommon.h #usr/include/snort/dynamic_preproc/sfcontrol.h +#usr/include/snort/dynamic_preproc/sfdebug.h #usr/include/snort/dynamic_preproc/sfrt.h #usr/include/snort/dynamic_preproc/sfrt_dir.h #usr/include/snort/dynamic_preproc/sfrt_flat.h #usr/include/snort/dynamic_preproc/sfrt_flat_dir.h #usr/include/snort/dynamic_preproc/sfrt_trie.h +#usr/include/snort/dynamic_preproc/sidechannel_define.h +#usr/include/snort/dynamic_preproc/sip_common.h #usr/include/snort/dynamic_preproc/snort_bounds.h #usr/include/snort/dynamic_preproc/snort_debug.h #usr/include/snort/dynamic_preproc/ssl.h +#usr/include/snort/dynamic_preproc/ssl_config.h +#usr/include/snort/dynamic_preproc/ssl_ha.h +#usr/include/snort/dynamic_preproc/ssl_include.h +#usr/include/snort/dynamic_preproc/ssl_inspect.h +#usr/include/snort/dynamic_preproc/ssl_session.h #usr/include/snort/dynamic_preproc/str_search.h #usr/include/snort/dynamic_preproc/stream_api.h #usr/lib/pkgconfig/snort.pc @@ -159,6 +172,7 @@ usr/sbin/snort #usr/share/doc/snort/CREDITS #usr/share/doc/snort/INSTALL #usr/share/doc/snort/NEWS +#usr/share/doc/snort/OpenDetectorDeveloperGuide.pdf #usr/share/doc/snort/PROBLEMS #usr/share/doc/snort/README #usr/share/doc/snort/README.GTP @@ -169,6 +183,7 @@ usr/sbin/snort #usr/share/doc/snort/README.WIN32 #usr/share/doc/snort/README.active #usr/share/doc/snort/README.alert_order +#usr/share/doc/snort/README.appid #usr/share/doc/snort/README.asn1 #usr/share/doc/snort/README.counts #usr/share/doc/snort/README.csv @@ -199,7 +214,6 @@ usr/sbin/snort #usr/share/doc/snort/README.ppm #usr/share/doc/snort/README.reload #usr/share/doc/snort/README.reputation -#usr/share/doc/snort/README.rzb_saac #usr/share/doc/snort/README.sensitive_data #usr/share/doc/snort/README.sfportscan #usr/share/doc/snort/README.sip diff --git a/config/rootfiles/packages/sqlite b/config/rootfiles/common/sqlite similarity index 100% rename from config/rootfiles/packages/sqlite rename to config/rootfiles/common/sqlite diff --git a/config/rootfiles/common/sysklogd b/config/rootfiles/common/sysklogd index 14320a6a90..9792097ceb 100644 --- a/config/rootfiles/common/sysklogd +++ b/config/rootfiles/common/sysklogd @@ -4,4 +4,3 @@ usr/sbin/syslogd #usr/share/man/man8/sysklogd.8 var/log/dhcpcd.log var/log/messages -var/log/ovpnserver.log diff --git a/config/rootfiles/common/tar b/config/rootfiles/common/tar index 9e31cc0b73..6dbb6ee71c 100644 --- a/config/rootfiles/common/tar +++ b/config/rootfiles/common/tar @@ -2,4 +2,8 @@ bin/tar #usr/share/info/tar.info #usr/share/info/tar.info-1 #usr/share/info/tar.info-2 +#usr/share/info/tar.info-3 +#usr/share/man/man1/tar.1 +#usr/share/man/man8/rmt.8 #usr/sbin/rmt + diff --git a/config/rootfiles/common/zlib b/config/rootfiles/common/zlib index 13cf704415..43c5ac932b 100644 --- a/config/rootfiles/common/zlib +++ b/config/rootfiles/common/zlib @@ -1,10 +1,9 @@ lib/libz.so lib/libz.so.1 -lib/libz.so.1.2.7 +lib/libz.so.1.2.8 #usr/include/zconf.h #usr/include/zlib.h #usr/lib/libz.a -#usr/lib/libz.so #usr/lib/pkgconfig #usr/lib/pkgconfig/zlib.pc #usr/share/man/man3/zlib.3 diff --git a/config/rootfiles/core/86/filelists/hwdata b/config/rootfiles/core/86/filelists/hwdata new file mode 120000 index 0000000000..ced9116661 --- /dev/null +++ b/config/rootfiles/core/86/filelists/hwdata @@ -0,0 +1 @@ +../../../common/hwdata \ No newline at end of file diff --git a/config/rootfiles/core/88/exclude b/config/rootfiles/core/88/exclude new file mode 100644 index 0000000000..18e9b4d243 --- /dev/null +++ b/config/rootfiles/core/88/exclude @@ -0,0 +1,20 @@ +boot/config.txt +etc/collectd.custom +etc/ipsec.conf +etc/ipsec.secrets +etc/ipsec.user.conf +etc/ipsec.user.secrets +etc/localtime +etc/shadow +etc/ssh/ssh_config +etc/ssh/sshd_config +etc/ssl/openssl.cnf +etc/sudoers +etc/sysconfig/firewall.local +etc/sysconfig/rc.local +etc/udev/rules.d/30-persistent-network.rules +srv/web/ipfire/html/proxy.pac +var/ipfire/ovpn +var/log/cache +var/state/dhcp/dhcpd.leases +var/updatecache diff --git a/config/rootfiles/core/88/filelists/daq b/config/rootfiles/core/88/filelists/daq new file mode 120000 index 0000000000..d0e0956f28 --- /dev/null +++ b/config/rootfiles/core/88/filelists/daq @@ -0,0 +1 @@ +../../../common/daq \ No newline at end of file diff --git a/config/rootfiles/core/88/filelists/ddns b/config/rootfiles/core/88/filelists/ddns new file mode 120000 index 0000000000..739516420f --- /dev/null +++ b/config/rootfiles/core/88/filelists/ddns @@ -0,0 +1 @@ +../../../common/ddns \ No newline at end of file diff --git a/config/rootfiles/core/88/filelists/dnsmasq b/config/rootfiles/core/88/filelists/dnsmasq new file mode 120000 index 0000000000..d469c74631 --- /dev/null +++ b/config/rootfiles/core/88/filelists/dnsmasq @@ -0,0 +1 @@ +../../../common/dnsmasq \ No newline at end of file diff --git a/config/rootfiles/core/88/filelists/ethtool b/config/rootfiles/core/88/filelists/ethtool new file mode 120000 index 0000000000..494a53e9d6 --- /dev/null +++ b/config/rootfiles/core/88/filelists/ethtool @@ -0,0 +1 @@ +../../../common/ethtool \ No newline at end of file diff --git a/config/rootfiles/core/88/filelists/fcron b/config/rootfiles/core/88/filelists/fcron new file mode 120000 index 0000000000..4a454ea212 --- /dev/null +++ b/config/rootfiles/core/88/filelists/fcron @@ -0,0 +1 @@ +../../../common/fcron \ No newline at end of file diff --git a/config/rootfiles/core/88/filelists/file b/config/rootfiles/core/88/filelists/file new file mode 120000 index 0000000000..0c60e43aa5 --- /dev/null +++ b/config/rootfiles/core/88/filelists/file @@ -0,0 +1 @@ +../../../common/file \ No newline at end of file diff --git a/config/rootfiles/core/88/filelists/files b/config/rootfiles/core/88/filelists/files new file mode 100644 index 0000000000..5ee23b97fa --- /dev/null +++ b/config/rootfiles/core/88/filelists/files @@ -0,0 +1,5 @@ +etc/system-release +etc/issue +srv/web/ipfire/cgi-bin/fwhosts.cgi +srv/web/ipfire/cgi-bin/ovpnmain.cgi +var/ipfire/langs diff --git a/config/rootfiles/core/88/filelists/gnupg b/config/rootfiles/core/88/filelists/gnupg new file mode 120000 index 0000000000..a1a156447b --- /dev/null +++ b/config/rootfiles/core/88/filelists/gnupg @@ -0,0 +1 @@ +../../../common/gnupg \ No newline at end of file diff --git a/config/rootfiles/core/88/filelists/grep b/config/rootfiles/core/88/filelists/grep new file mode 120000 index 0000000000..ab5ef8b0e3 --- /dev/null +++ b/config/rootfiles/core/88/filelists/grep @@ -0,0 +1 @@ +../../../common/grep \ No newline at end of file diff --git a/config/rootfiles/core/88/filelists/hdparm b/config/rootfiles/core/88/filelists/hdparm new file mode 120000 index 0000000000..b6447518ad --- /dev/null +++ b/config/rootfiles/core/88/filelists/hdparm @@ -0,0 +1 @@ +../../../common/hdparm \ No newline at end of file diff --git a/config/rootfiles/core/88/filelists/libart b/config/rootfiles/core/88/filelists/libart new file mode 120000 index 0000000000..bb1e07842d --- /dev/null +++ b/config/rootfiles/core/88/filelists/libart @@ -0,0 +1 @@ +../../../common/libart \ No newline at end of file diff --git a/config/rootfiles/core/88/filelists/libcap b/config/rootfiles/core/88/filelists/libcap new file mode 120000 index 0000000000..ed67d950a8 --- /dev/null +++ b/config/rootfiles/core/88/filelists/libcap @@ -0,0 +1 @@ +../../../common/libcap \ No newline at end of file diff --git a/config/rootfiles/core/88/filelists/libffi b/config/rootfiles/core/88/filelists/libffi new file mode 120000 index 0000000000..c391acd0cb --- /dev/null +++ b/config/rootfiles/core/88/filelists/libffi @@ -0,0 +1 @@ +../../../common/libffi \ No newline at end of file diff --git a/config/rootfiles/core/88/filelists/libpcap b/config/rootfiles/core/88/filelists/libpcap new file mode 120000 index 0000000000..c7f9f52a80 --- /dev/null +++ b/config/rootfiles/core/88/filelists/libpcap @@ -0,0 +1 @@ +../../../common/libpcap \ No newline at end of file diff --git a/config/rootfiles/core/88/filelists/pcre b/config/rootfiles/core/88/filelists/pcre new file mode 120000 index 0000000000..b390d9a367 --- /dev/null +++ b/config/rootfiles/core/88/filelists/pcre @@ -0,0 +1 @@ +../../../common/pcre \ No newline at end of file diff --git a/config/rootfiles/core/88/filelists/screen b/config/rootfiles/core/88/filelists/screen new file mode 120000 index 0000000000..81008f46ef --- /dev/null +++ b/config/rootfiles/core/88/filelists/screen @@ -0,0 +1 @@ +../../../common/screen \ No newline at end of file diff --git a/config/rootfiles/core/88/filelists/smartmontools b/config/rootfiles/core/88/filelists/smartmontools new file mode 120000 index 0000000000..fb66dafeff --- /dev/null +++ b/config/rootfiles/core/88/filelists/smartmontools @@ -0,0 +1 @@ +../../../common/smartmontools \ No newline at end of file diff --git a/config/rootfiles/core/88/filelists/snort b/config/rootfiles/core/88/filelists/snort new file mode 120000 index 0000000000..9406ce01c7 --- /dev/null +++ b/config/rootfiles/core/88/filelists/snort @@ -0,0 +1 @@ +../../../common/snort \ No newline at end of file diff --git a/config/rootfiles/core/88/filelists/sqlite b/config/rootfiles/core/88/filelists/sqlite new file mode 120000 index 0000000000..4ea5697669 --- /dev/null +++ b/config/rootfiles/core/88/filelists/sqlite @@ -0,0 +1 @@ +../../../common/sqlite \ No newline at end of file diff --git a/config/rootfiles/core/88/filelists/squid b/config/rootfiles/core/88/filelists/squid new file mode 120000 index 0000000000..2dc8372a0e --- /dev/null +++ b/config/rootfiles/core/88/filelists/squid @@ -0,0 +1 @@ +../../../common/squid \ No newline at end of file diff --git a/config/rootfiles/core/88/filelists/tar b/config/rootfiles/core/88/filelists/tar new file mode 120000 index 0000000000..3e585d2ebe --- /dev/null +++ b/config/rootfiles/core/88/filelists/tar @@ -0,0 +1 @@ +../../../common/tar \ No newline at end of file diff --git a/config/rootfiles/core/88/filelists/wget b/config/rootfiles/core/88/filelists/wget new file mode 120000 index 0000000000..fcb57dfec8 --- /dev/null +++ b/config/rootfiles/core/88/filelists/wget @@ -0,0 +1 @@ +../../../common/wget \ No newline at end of file diff --git a/config/rootfiles/core/88/filelists/zlib b/config/rootfiles/core/88/filelists/zlib new file mode 120000 index 0000000000..e345663226 --- /dev/null +++ b/config/rootfiles/core/88/filelists/zlib @@ -0,0 +1 @@ +../../../common/zlib \ No newline at end of file diff --git a/config/rootfiles/core/88/meta b/config/rootfiles/core/88/meta new file mode 100644 index 0000000000..d547fa86fa --- /dev/null +++ b/config/rootfiles/core/88/meta @@ -0,0 +1 @@ +DEPS="" diff --git a/src/paks/teamspeak/uninstall.sh b/config/rootfiles/core/88/update.sh similarity index 65% rename from src/paks/teamspeak/uninstall.sh rename to config/rootfiles/core/88/update.sh index f1cd3bb5b1..18dd9af521 100644 --- a/src/paks/teamspeak/uninstall.sh +++ b/config/rootfiles/core/88/update.sh @@ -5,7 +5,7 @@ # # # IPFire is free software; you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # +# the Free Software Foundation; either version 3 of the License, or # # (at your option) any later version. # # # # IPFire is distributed in the hope that it will be useful, # @@ -17,23 +17,48 @@ # along with IPFire; if not, write to the Free Software # # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # # -# Copyright (C) 2007 IPFire-Team . # +# Copyright (C) 2014 IPFire-Team . # # # ############################################################################ # . /opt/pakfire/lib/functions.sh -stop_service ${NAME} +/usr/local/bin/backupctrl exclude >/dev/null 2>&1 -if [ ! -e "/var/ipfire/backup/addons/includes/teamspeak" ]; then - echo /opt/teamspeak/bad_names.txt > /var/ipfire/backup/addons/includes/teamspeak - echo /opt/teamspeak/server.dbs >> /var/ipfire/backup/addons/includes/teamspeak - echo /opt/teamspeak/server.ini >> /var/ipfire/backup/addons/includes/teamspeak - echo /opt/teamspeak/server.log >> /var/ipfire/backup/addons/includes/teamspeak - echo /opt/teamspeak/whitelist.txt >> /var/ipfire/backup/addons/includes/teamspeak -fi -make_backup ${NAME} -rm -rf /opt/teamspeak -userdel teamspeak -rm -rf /etc/rc.d/rc*.d/*teamspeak +# Remove old core updates from pakfire cache to save space... +core=88 +for (( i=1; i<=$core; i++ )) +do + rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire +done +# Stop services +# Remove old files + +# Extract files +extract_files + +# Start services + +# Update Language cache +perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" + +# Uninstall the sqlite package. +rm -f \ + /opt/pakfire/db/installed/meta-sqlite \ + /opt/pakfire/db/rootfiles/sqlite + +# Fix #10625 +mkdir -p /etc/logrotate.d + +sync + +# This update need a reboot... +#touch /var/run/need_reboot + +# Finish +/etc/init.d/fireinfo start +sendprofile + +# Don't report the exitcode last command +exit 0 diff --git a/config/rootfiles/packages/asterisk b/config/rootfiles/packages/asterisk old mode 100644 new mode 100755 index 1b0eb9d1a5..6654621a20 --- a/config/rootfiles/packages/asterisk +++ b/config/rootfiles/packages/asterisk @@ -1,5 +1,6 @@ etc/asterisk -etc/fcron.minutely/wakeup.sh +etc/logrotate.d/asterisk +etc/rc.d/init.d/asterisk etc/rc.d/rc0.d/K30asterisk etc/rc.d/rc3.d/S30asterisk etc/rc.d/rc6.d/K30asterisk @@ -36,13 +37,16 @@ etc/rc.d/rc6.d/K30asterisk #usr/include/asterisk/ccss.h #usr/include/asterisk/cdr.h #usr/include/asterisk/cel.h +#usr/include/asterisk/celt.h #usr/include/asterisk/channel.h +#usr/include/asterisk/channel_internal.h #usr/include/asterisk/channelstate.h #usr/include/asterisk/chanvars.h #usr/include/asterisk/cli.h #usr/include/asterisk/compat.h #usr/include/asterisk/compiler.h #usr/include/asterisk/config.h +#usr/include/asterisk/config_options.h #usr/include/asterisk/crypto.h #usr/include/asterisk/data.h #usr/include/asterisk/datastore.h @@ -69,6 +73,9 @@ etc/rc.d/rc6.d/K30asterisk #usr/include/asterisk/extconf.h #usr/include/asterisk/features.h #usr/include/asterisk/file.h +#usr/include/asterisk/format.h +#usr/include/asterisk/format_cap.h +#usr/include/asterisk/format_pref.h #usr/include/asterisk/frame.h #usr/include/asterisk/frame_defs.h #usr/include/asterisk/framehook.h @@ -79,6 +86,7 @@ etc/rc.d/rc6.d/K30asterisk #usr/include/asterisk/hashtab.h #usr/include/asterisk/heap.h #usr/include/asterisk/http.h +#usr/include/asterisk/http_websocket.h #usr/include/asterisk/image.h #usr/include/asterisk/indications.h #usr/include/asterisk/inline_api.h @@ -91,6 +99,7 @@ etc/rc.d/rc6.d/K30asterisk #usr/include/asterisk/logger.h #usr/include/asterisk/manager.h #usr/include/asterisk/md5.h +#usr/include/asterisk/message.h #usr/include/asterisk/mod_format.h #usr/include/asterisk/module.h #usr/include/asterisk/monitor.h @@ -105,6 +114,7 @@ etc/rc.d/rc6.d/K30asterisk #usr/include/asterisk/pktccops.h #usr/include/asterisk/plc.h #usr/include/asterisk/poll-compat.h +#usr/include/asterisk/presencestate.h #usr/include/asterisk/privacy.h #usr/include/asterisk/pval.h #usr/include/asterisk/res_fax.h @@ -117,6 +127,8 @@ etc/rc.d/rc6.d/K30asterisk #usr/include/asterisk/security_events_defs.h #usr/include/asterisk/select.h #usr/include/asterisk/sha1.h +#usr/include/asterisk/silk.h +#usr/include/asterisk/sip_api.h #usr/include/asterisk/slin.h #usr/include/asterisk/slinfactory.h #usr/include/asterisk/smdi.h @@ -143,6 +155,7 @@ etc/rc.d/rc6.d/K30asterisk #usr/include/asterisk/version.h #usr/include/asterisk/xml.h #usr/include/asterisk/xmldoc.h +#usr/include/asterisk/xmpp.h #usr/lib/asterisk #usr/lib/asterisk/modules usr/lib/asterisk/modules/app_adsiprog.so @@ -172,7 +185,6 @@ usr/lib/asterisk/modules/app_forkcdr.so usr/lib/asterisk/modules/app_getcpeid.so usr/lib/asterisk/modules/app_ices.so usr/lib/asterisk/modules/app_image.so -usr/lib/asterisk/modules/app_ivrdemo.so usr/lib/asterisk/modules/app_macro.so usr/lib/asterisk/modules/app_milliwatt.so usr/lib/asterisk/modules/app_minivm.so @@ -182,6 +194,7 @@ usr/lib/asterisk/modules/app_mp3.so usr/lib/asterisk/modules/app_mysql.so usr/lib/asterisk/modules/app_nbscat.so usr/lib/asterisk/modules/app_originate.so +usr/lib/asterisk/modules/app_page.so usr/lib/asterisk/modules/app_parkandannounce.so usr/lib/asterisk/modules/app_playback.so usr/lib/asterisk/modules/app_playtones.so @@ -189,15 +202,10 @@ usr/lib/asterisk/modules/app_privacy.so usr/lib/asterisk/modules/app_queue.so usr/lib/asterisk/modules/app_read.so usr/lib/asterisk/modules/app_readexten.so -usr/lib/asterisk/modules/app_readfile.so usr/lib/asterisk/modules/app_record.so -usr/lib/asterisk/modules/app_saycounted.so -usr/lib/asterisk/modules/app_saycountpl.so usr/lib/asterisk/modules/app_sayunixtime.so usr/lib/asterisk/modules/app_senddtmf.so usr/lib/asterisk/modules/app_sendtext.so -usr/lib/asterisk/modules/app_setcallerid.so -usr/lib/asterisk/modules/app_skel.so usr/lib/asterisk/modules/app_sms.so usr/lib/asterisk/modules/app_softhangup.so usr/lib/asterisk/modules/app_speech_utils.so @@ -231,14 +239,10 @@ usr/lib/asterisk/modules/cel_sqlite3_custom.so usr/lib/asterisk/modules/chan_agent.so usr/lib/asterisk/modules/chan_alsa.so usr/lib/asterisk/modules/chan_bridge.so -usr/lib/asterisk/modules/chan_capi.so usr/lib/asterisk/modules/chan_iax2.so usr/lib/asterisk/modules/chan_local.so usr/lib/asterisk/modules/chan_mgcp.so -usr/lib/asterisk/modules/chan_mobile.so usr/lib/asterisk/modules/chan_multicast_rtp.so -usr/lib/asterisk/modules/chan_ooh323.so -usr/lib/asterisk/modules/chan_oss.so usr/lib/asterisk/modules/chan_phone.so usr/lib/asterisk/modules/chan_sip.so usr/lib/asterisk/modules/chan_skinny.so @@ -251,6 +255,7 @@ usr/lib/asterisk/modules/codec_g726.so usr/lib/asterisk/modules/codec_gsm.so usr/lib/asterisk/modules/codec_ilbc.so usr/lib/asterisk/modules/codec_lpc10.so +usr/lib/asterisk/modules/codec_resample.so usr/lib/asterisk/modules/codec_ulaw.so usr/lib/asterisk/modules/format_g719.so usr/lib/asterisk/modules/format_g723.so @@ -261,12 +266,10 @@ usr/lib/asterisk/modules/format_h263.so usr/lib/asterisk/modules/format_h264.so usr/lib/asterisk/modules/format_ilbc.so usr/lib/asterisk/modules/format_jpeg.so -usr/lib/asterisk/modules/format_ogg_vorbis.so usr/lib/asterisk/modules/format_pcm.so usr/lib/asterisk/modules/format_siren14.so usr/lib/asterisk/modules/format_siren7.so usr/lib/asterisk/modules/format_sln.so -usr/lib/asterisk/modules/format_sln16.so usr/lib/asterisk/modules/format_vox.so usr/lib/asterisk/modules/format_wav.so usr/lib/asterisk/modules/format_wav_gsm.so @@ -291,13 +294,16 @@ usr/lib/asterisk/modules/func_extstate.so usr/lib/asterisk/modules/func_frame_trace.so usr/lib/asterisk/modules/func_global.so usr/lib/asterisk/modules/func_groupcount.so +usr/lib/asterisk/modules/func_hangupcause.so usr/lib/asterisk/modules/func_iconv.so +usr/lib/asterisk/modules/func_jitterbuffer.so usr/lib/asterisk/modules/func_lock.so usr/lib/asterisk/modules/func_logic.so usr/lib/asterisk/modules/func_math.so usr/lib/asterisk/modules/func_md5.so usr/lib/asterisk/modules/func_module.so usr/lib/asterisk/modules/func_pitchshift.so +usr/lib/asterisk/modules/func_presencestate.so usr/lib/asterisk/modules/func_rand.so usr/lib/asterisk/modules/func_realtime.so usr/lib/asterisk/modules/func_sha1.so @@ -326,61 +332,60 @@ usr/lib/asterisk/modules/res_clioriginate.so usr/lib/asterisk/modules/res_config_curl.so usr/lib/asterisk/modules/res_config_ldap.so usr/lib/asterisk/modules/res_config_mysql.so +usr/lib/asterisk/modules/res_config_sqlite3.so usr/lib/asterisk/modules/res_convert.so usr/lib/asterisk/modules/res_crypto.so usr/lib/asterisk/modules/res_curl.so usr/lib/asterisk/modules/res_fax.so -usr/lib/asterisk/modules/res_fax_spandsp.so +usr/lib/asterisk/modules/res_format_attr_celt.so +usr/lib/asterisk/modules/res_format_attr_h263.so +usr/lib/asterisk/modules/res_format_attr_h264.so +usr/lib/asterisk/modules/res_format_attr_silk.so +usr/lib/asterisk/modules/res_http_websocket.so usr/lib/asterisk/modules/res_limit.so usr/lib/asterisk/modules/res_monitor.so usr/lib/asterisk/modules/res_musiconhold.so usr/lib/asterisk/modules/res_mutestream.so usr/lib/asterisk/modules/res_phoneprov.so -usr/lib/asterisk/modules/res_pktccops.so usr/lib/asterisk/modules/res_realtime.so usr/lib/asterisk/modules/res_rtp_asterisk.so usr/lib/asterisk/modules/res_rtp_multicast.so usr/lib/asterisk/modules/res_security_log.so usr/lib/asterisk/modules/res_smdi.so -usr/lib/asterisk/modules/res_snmp.so usr/lib/asterisk/modules/res_speech.so +usr/lib/asterisk/modules/res_srtp.so usr/lib/asterisk/modules/res_stun_monitor.so usr/lib/asterisk/modules/res_timing_pthread.so usr/lib/asterisk/modules/res_timing_timerfd.so +usr/lib/libasteriskssl.so +usr/lib/libasteriskssl.so.1 #usr/lib/pkgconfig/asterisk.pc -usr/sbin/aelparse usr/sbin/astcanary +usr/sbin/astdb2bdb +usr/sbin/astdb2sqlite3 usr/sbin/asterisk usr/sbin/astgenkey -usr/sbin/astman usr/sbin/autosupport -usr/sbin/check_expr -usr/sbin/check_expr2 -usr/sbin/conf2ael -usr/sbin/hashtest -usr/sbin/hashtest2 -usr/sbin/muted usr/sbin/rasterisk -usr/sbin/refcounter usr/sbin/safe_asterisk -usr/sbin/smsq -usr/sbin/stereorize -usr/sbin/streamplayer +#usr/share/man/man8/astdb2bdb.8 +#usr/share/man/man8/astdb2sqlite3.8 #usr/share/man/man8/asterisk.8 #usr/share/man/man8/astgenkey.8 #usr/share/man/man8/autosupport.8 #usr/share/man/man8/safe_asterisk.8 #var/ipfire/asterisk +var/ipfire/asterisk/acl.conf var/ipfire/asterisk/adsi.conf var/ipfire/asterisk/agents.conf -var/ipfire/asterisk/ais.conf var/ipfire/asterisk/alarmreceiver.conf var/ipfire/asterisk/alsa.conf var/ipfire/asterisk/amd.conf var/ipfire/asterisk/app_mysql.conf +var/ipfire/asterisk/app_skel.conf var/ipfire/asterisk/asterisk.adsi var/ipfire/asterisk/asterisk.conf -#var/ipfire/asterisk/asterisk.makeopts +var/ipfire/asterisk/asterisk.logrotate var/ipfire/asterisk/calendar.conf var/ipfire/asterisk/ccss.conf var/ipfire/asterisk/cdr.conf @@ -401,11 +406,12 @@ var/ipfire/asterisk/cel_sqlite3_custom.conf var/ipfire/asterisk/cel_tds.conf var/ipfire/asterisk/chan_dahdi.conf var/ipfire/asterisk/chan_mobile.conf -var/ipfire/asterisk/chan_ooh323.conf var/ipfire/asterisk/cli.conf var/ipfire/asterisk/cli_aliases.conf var/ipfire/asterisk/cli_permissions.conf var/ipfire/asterisk/codecs.conf +var/ipfire/asterisk/confbridge.conf +var/ipfire/asterisk/config_test.conf var/ipfire/asterisk/console.conf var/ipfire/asterisk/dbsep.conf var/ipfire/asterisk/dnsmgr.conf @@ -436,8 +442,10 @@ var/ipfire/asterisk/mgcp.conf var/ipfire/asterisk/minivm.conf var/ipfire/asterisk/misdn.conf var/ipfire/asterisk/modules.conf +var/ipfire/asterisk/motif.conf var/ipfire/asterisk/musiconhold.conf var/ipfire/asterisk/muted.conf +var/ipfire/asterisk/ooh323.conf var/ipfire/asterisk/osp.conf var/ipfire/asterisk/oss.conf var/ipfire/asterisk/phone.conf @@ -446,6 +454,8 @@ var/ipfire/asterisk/queuerules.conf var/ipfire/asterisk/queues.conf var/ipfire/asterisk/res_config_mysql.conf var/ipfire/asterisk/res_config_sqlite.conf +var/ipfire/asterisk/res_config_sqlite3.conf +var/ipfire/asterisk/res_corosync.conf var/ipfire/asterisk/res_curl.conf var/ipfire/asterisk/res_fax.conf var/ipfire/asterisk/res_ldap.conf @@ -467,34 +477,39 @@ var/ipfire/asterisk/unistim.conf var/ipfire/asterisk/users.conf var/ipfire/asterisk/voicemail.conf var/ipfire/asterisk/vpb.conf -#var/ipfire/asterisk/wakeup -#var/ipfire/asterisk/wakeup/source -var/ipfire/asterisk/wakeup/source/536.call -var/ipfire/asterisk/wakeup/source/bsp.call.tpl -var/ipfire/asterisk/wakeup/wakeup.sh +var/ipfire/asterisk/xmpp.conf var/ipfire/backup/addons/includes/asterisk #var/lib/asterisk -#var/lib/asterisk/agi-bin +var/lib/asterisk/agi-bin #var/lib/asterisk/documentation #var/lib/asterisk/documentation/appdocsxml.dtd #var/lib/asterisk/documentation/core-en_US.xml #var/lib/asterisk/documentation/thirdparty #var/lib/asterisk/firmware -#var/lib/asterisk/firmware/iax +var/lib/asterisk/firmware/iax #var/lib/asterisk/images -var/lib/asterisk/images/asterisk-intro.jpg -var/lib/asterisk/images/kpad2.jpg -#var/lib/asterisk/keys +#var/lib/asterisk/images/asterisk-intro.jpg +#var/lib/asterisk/images/kpad2.jpg +var/lib/asterisk/keys #var/lib/asterisk/moh var/lib/asterisk/moh/.asterisk-moh-opsound-gsm-2.03 +var/lib/asterisk/moh/.asterisk-moh-opsound-wav-2.03 var/lib/asterisk/moh/CHANGES-asterisk-moh-opsound-gsm +var/lib/asterisk/moh/CHANGES-asterisk-moh-opsound-wav var/lib/asterisk/moh/CREDITS-asterisk-moh-opsound-gsm +var/lib/asterisk/moh/CREDITS-asterisk-moh-opsound-wav var/lib/asterisk/moh/LICENSE-asterisk-moh-opsound-gsm +var/lib/asterisk/moh/LICENSE-asterisk-moh-opsound-wav var/lib/asterisk/moh/macroform-cold_day.gsm +var/lib/asterisk/moh/macroform-cold_day.wav var/lib/asterisk/moh/macroform-robot_dity.gsm +var/lib/asterisk/moh/macroform-robot_dity.wav var/lib/asterisk/moh/macroform-the_simplicity.gsm +var/lib/asterisk/moh/macroform-the_simplicity.wav var/lib/asterisk/moh/manolo_camp-morning_coffee.gsm +var/lib/asterisk/moh/manolo_camp-morning_coffee.wav var/lib/asterisk/moh/reno_project-system.gsm +var/lib/asterisk/moh/reno_project-system.wav var/lib/asterisk/phoneprov var/lib/asterisk/phoneprov/000000000000-directory.xml var/lib/asterisk/phoneprov/000000000000-phone.cfg @@ -820,14 +835,20 @@ var/lib/asterisk/sounds/digits/de/xh-8x.gsm var/lib/asterisk/sounds/digits/de/xh-9x.gsm var/lib/asterisk/sounds/digits/de/yesterday.gsm var/lib/asterisk/sounds/en -var/lib/asterisk/sounds/en/.asterisk-core-sounds-en-gsm-1.4.22 -var/lib/asterisk/sounds/en/.asterisk-extra-sounds-en-gsm-1.4.11 +var/lib/asterisk/sounds/en/.asterisk-core-sounds-en-gsm-1.4.26 +var/lib/asterisk/sounds/en/.asterisk-extra-sounds-en-gsm-1.4.15 var/lib/asterisk/sounds/en/1-for-am-2-for-pm.gsm var/lib/asterisk/sounds/en/1-yes-2-no.gsm -var/lib/asterisk/sounds/en/CHANGES-asterisk-core-en-1.4.22 -var/lib/asterisk/sounds/en/CHANGES-asterisk-extra-en-1.4.11 -var/lib/asterisk/sounds/en/CREDITS-asterisk-core-en-1.4.22 -var/lib/asterisk/sounds/en/LICENSE-asterisk-core-en-1.4.22 +#var/lib/asterisk/sounds/en/CHANGES-asterisk-core-en-1.4.26 +#var/lib/asterisk/sounds/en/CHANGES-asterisk-extra-en-1.4.15 +#var/lib/asterisk/sounds/en/CREDITS-asterisk-core-en-1.4.26 +#var/lib/asterisk/sounds/en/CREDITS-asterisk-extra-en-1.4.15 +#var/lib/asterisk/sounds/en/LICENSE-asterisk-core-en-1.4.26 +#var/lib/asterisk/sounds/en/LICENSE-asterisk-extra-en-1.4.15 +var/lib/asterisk/sounds/en/OfficeSpace.gsm +var/lib/asterisk/sounds/en/Randulo-allison.gsm +var/lib/asterisk/sounds/en/SIP_Test_Failure.gsm +var/lib/asterisk/sounds/en/SIP_Test_Success.gsm var/lib/asterisk/sounds/en/T-changed-to.gsm var/lib/asterisk/sounds/en/T-is-not-available.gsm var/lib/asterisk/sounds/en/T-to-disable-ancmnt.gsm @@ -850,6 +871,7 @@ var/lib/asterisk/sounds/en/access-denied.gsm var/lib/asterisk/sounds/en/access-granted.gsm var/lib/asterisk/sounds/en/accessible-through-system.gsm var/lib/asterisk/sounds/en/account-balance-is.gsm +var/lib/asterisk/sounds/en/account_number.gsm var/lib/asterisk/sounds/en/accounting.gsm var/lib/asterisk/sounds/en/accounts-payable.gsm var/lib/asterisk/sounds/en/accounts-receivable.gsm @@ -860,6 +882,7 @@ var/lib/asterisk/sounds/en/address.gsm var/lib/asterisk/sounds/en/administration.gsm var/lib/asterisk/sounds/en/advised-to-seek-shelter.gsm var/lib/asterisk/sounds/en/after-the-tone.gsm +var/lib/asterisk/sounds/en/after_tone.gsm var/lib/asterisk/sounds/en/afternoon.gsm var/lib/asterisk/sounds/en/agent-alreadyon.gsm var/lib/asterisk/sounds/en/agent-incorrect.gsm @@ -879,12 +902,12 @@ var/lib/asterisk/sounds/en/all-reps-busy.gsm var/lib/asterisk/sounds/en/all-your-base.gsm var/lib/asterisk/sounds/en/altitude.gsm var/lib/asterisk/sounds/en/ampersand.gsm -var/lib/asterisk/sounds/en/an-error-has-occured.gsm var/lib/asterisk/sounds/en/an-error-has-occurred.gsm var/lib/asterisk/sounds/en/and-area-code.gsm var/lib/asterisk/sounds/en/and-or.gsm var/lib/asterisk/sounds/en/and-prs-pound-whn-finished.gsm var/lib/asterisk/sounds/en/and.gsm +var/lib/asterisk/sounds/en/andnowstandby.gsm var/lib/asterisk/sounds/en/another-time.gsm var/lib/asterisk/sounds/en/approaching.gsm var/lib/asterisk/sounds/en/approximately.gsm @@ -911,6 +934,7 @@ var/lib/asterisk/sounds/en/at-customers-request.gsm var/lib/asterisk/sounds/en/at-following-number.gsm var/lib/asterisk/sounds/en/at-sign.gsm var/lib/asterisk/sounds/en/at-tone-time-exactly.gsm +var/lib/asterisk/sounds/en/at_tone.gsm var/lib/asterisk/sounds/en/athletics.gsm var/lib/asterisk/sounds/en/atlanta.gsm var/lib/asterisk/sounds/en/atlantic.gsm @@ -924,6 +948,7 @@ var/lib/asterisk/sounds/en/available.gsm var/lib/asterisk/sounds/en/avg-speed-answer.gsm var/lib/asterisk/sounds/en/away-naughty-boy.gsm var/lib/asterisk/sounds/en/away-naughty-girl.gsm +var/lib/asterisk/sounds/en/awkward.gsm var/lib/asterisk/sounds/en/backslash.gsm var/lib/asterisk/sounds/en/bad.gsm var/lib/asterisk/sounds/en/baltimore.gsm @@ -941,8 +966,10 @@ var/lib/asterisk/sounds/en/believe-its-free.gsm var/lib/asterisk/sounds/en/billing-and-collections.gsm var/lib/asterisk/sounds/en/billing.gsm var/lib/asterisk/sounds/en/billionth.gsm +var/lib/asterisk/sounds/en/binary.gsm var/lib/asterisk/sounds/en/bits.gsm var/lib/asterisk/sounds/en/blue-eyed-polar-bear.gsm +var/lib/asterisk/sounds/en/bombsquad.gsm var/lib/asterisk/sounds/en/bookstore.gsm var/lib/asterisk/sounds/en/boston.gsm var/lib/asterisk/sounds/en/box.gsm @@ -993,6 +1020,7 @@ var/lib/asterisk/sounds/en/central.gsm var/lib/asterisk/sounds/en/cents-per-minute.gsm var/lib/asterisk/sounds/en/cents.gsm var/lib/asterisk/sounds/en/ceo-office.gsm +var/lib/asterisk/sounds/en/challenge_try_again.gsm var/lib/asterisk/sounds/en/chance-of.gsm var/lib/asterisk/sounds/en/changing.gsm var/lib/asterisk/sounds/en/channel-insecure-warn.gsm @@ -1010,12 +1038,14 @@ var/lib/asterisk/sounds/en/clearing.gsm var/lib/asterisk/sounds/en/cleveland.gsm var/lib/asterisk/sounds/en/clli.gsm var/lib/asterisk/sounds/en/close-parenthesis.gsm +var/lib/asterisk/sounds/en/closed.gsm var/lib/asterisk/sounds/en/clouds.gsm var/lib/asterisk/sounds/en/cloudy.gsm var/lib/asterisk/sounds/en/collections.gsm var/lib/asterisk/sounds/en/colorado-springs.gsm var/lib/asterisk/sounds/en/colorado.gsm var/lib/asterisk/sounds/en/columbus.gsm +var/lib/asterisk/sounds/en/comedyclub.gsm var/lib/asterisk/sounds/en/comma.gsm var/lib/asterisk/sounds/en/communications.gsm var/lib/asterisk/sounds/en/company-dir-411.gsm @@ -1024,7 +1054,15 @@ var/lib/asterisk/sounds/en/compliance.gsm var/lib/asterisk/sounds/en/computer-friend1.gsm var/lib/asterisk/sounds/en/computer-friend2.gsm var/lib/asterisk/sounds/en/conditions.gsm +var/lib/asterisk/sounds/en/conf-1-to-list-users.gsm +var/lib/asterisk/sounds/en/conf-2-to-kick-nonadmin.gsm +var/lib/asterisk/sounds/en/conf-3-mute-or-unmute-nonadmin.gsm +var/lib/asterisk/sounds/en/conf-4-to-record-conf.gsm +var/lib/asterisk/sounds/en/conf-8-for-more-options.gsm +var/lib/asterisk/sounds/en/conf-8-to-exit-return-to-conf.gsm var/lib/asterisk/sounds/en/conf-adminmenu-162.gsm +var/lib/asterisk/sounds/en/conf-adminmenu-18.gsm +var/lib/asterisk/sounds/en/conf-adminmenu-menu8.gsm var/lib/asterisk/sounds/en/conf-adminmenu.gsm var/lib/asterisk/sounds/en/conf-banned.gsm var/lib/asterisk/sounds/en/conf-enteringno.gsm @@ -1131,8 +1169,11 @@ var/lib/asterisk/sounds/en/core-sounds-en.txt var/lib/asterisk/sounds/en/could-lose-a-few-pounds.gsm var/lib/asterisk/sounds/en/counseling-services.gsm var/lib/asterisk/sounds/en/count.gsm +var/lib/asterisk/sounds/en/countdown.gsm var/lib/asterisk/sounds/en/crash.gsm +var/lib/asterisk/sounds/en/crashing_conf.gsm var/lib/asterisk/sounds/en/current-time-is.gsm +var/lib/asterisk/sounds/en/current_account_balance.gsm var/lib/asterisk/sounds/en/currently.gsm var/lib/asterisk/sounds/en/customer-accounts.gsm var/lib/asterisk/sounds/en/customer-relations.gsm @@ -1305,6 +1346,8 @@ var/lib/asterisk/sounds/en/divided-by.gsm var/lib/asterisk/sounds/en/dns.gsm var/lib/asterisk/sounds/en/do-not-disturb.gsm var/lib/asterisk/sounds/en/doing-enum-lookup.gsm +var/lib/asterisk/sounds/en/donotcall1.gsm +var/lib/asterisk/sounds/en/donotcall2.gsm var/lib/asterisk/sounds/en/dont-know-who-sent.gsm var/lib/asterisk/sounds/en/doppler-radar.gsm var/lib/asterisk/sounds/en/down.gsm @@ -1321,6 +1364,7 @@ var/lib/asterisk/sounds/en/eighteenth.gsm var/lib/asterisk/sounds/en/eighth.gsm var/lib/asterisk/sounds/en/eightieth.gsm var/lib/asterisk/sounds/en/el-paso.gsm +var/lib/asterisk/sounds/en/eletelephony.gsm var/lib/asterisk/sounds/en/eleventh.gsm var/lib/asterisk/sounds/en/email.gsm var/lib/asterisk/sounds/en/emergency.gsm @@ -1335,11 +1379,13 @@ var/lib/asterisk/sounds/en/enter-ext-of-person.gsm var/lib/asterisk/sounds/en/enter-num-blacklist.gsm var/lib/asterisk/sounds/en/enter-password.gsm var/lib/asterisk/sounds/en/enter-phone-number10.gsm +var/lib/asterisk/sounds/en/enter_account.gsm var/lib/asterisk/sounds/en/entering-conf-number.gsm var/lib/asterisk/sounds/en/entr-num-rmv-blklist.gsm var/lib/asterisk/sounds/en/enum-lookup-failed.gsm var/lib/asterisk/sounds/en/enum-lookup-successful.gsm var/lib/asterisk/sounds/en/error-number.gsm +var/lib/asterisk/sounds/en/error.gsm var/lib/asterisk/sounds/en/est-hold-time-is.gsm var/lib/asterisk/sounds/en/euro.gsm var/lib/asterisk/sounds/en/european.gsm @@ -1355,6 +1401,7 @@ var/lib/asterisk/sounds/en/fahrenheit.gsm var/lib/asterisk/sounds/en/falling.gsm var/lib/asterisk/sounds/en/fast.gsm var/lib/asterisk/sounds/en/feature-not-avail-line.gsm +var/lib/asterisk/sounds/en/feeling_lucky_punk.gsm var/lib/asterisk/sounds/en/feet.gsm var/lib/asterisk/sounds/en/female.gsm var/lib/asterisk/sounds/en/fifteenth.gsm @@ -1370,6 +1417,8 @@ var/lib/asterisk/sounds/en/florida.gsm var/lib/asterisk/sounds/en/fog.gsm var/lib/asterisk/sounds/en/foggy.gsm var/lib/asterisk/sounds/en/followed-by.gsm +var/lib/asterisk/sounds/en/followed_hash.gsm +var/lib/asterisk/sounds/en/followed_pound.gsm var/lib/asterisk/sounds/en/followme var/lib/asterisk/sounds/en/followme/call-from.gsm var/lib/asterisk/sounds/en/followme/no-recording.gsm @@ -1397,6 +1446,7 @@ var/lib/asterisk/sounds/en/for-the-weather.gsm var/lib/asterisk/sounds/en/for-wakeup-call.gsm var/lib/asterisk/sounds/en/for-yes-press.gsm var/lib/asterisk/sounds/en/for.gsm +var/lib/asterisk/sounds/en/forget_about_it.gsm var/lib/asterisk/sounds/en/fort-worth.gsm var/lib/asterisk/sounds/en/fortieth.gsm var/lib/asterisk/sounds/en/fourteenth.gsm @@ -1411,6 +1461,10 @@ var/lib/asterisk/sounds/en/ftp.gsm var/lib/asterisk/sounds/en/gale.gsm var/lib/asterisk/sounds/en/gambling-drunk.gsm var/lib/asterisk/sounds/en/georgia.gsm +var/lib/asterisk/sounds/en/get-in-line-sales-guy.gsm +var/lib/asterisk/sounds/en/get_bleep_outta.gsm +var/lib/asterisk/sounds/en/get_information.gsm +var/lib/asterisk/sounds/en/get_information_first.gsm var/lib/asterisk/sounds/en/gigabits.gsm var/lib/asterisk/sounds/en/gigabytes.gsm var/lib/asterisk/sounds/en/gigahertz.gsm @@ -1423,6 +1477,10 @@ var/lib/asterisk/sounds/en/good-evening.gsm var/lib/asterisk/sounds/en/good-morning.gsm var/lib/asterisk/sounds/en/good.gsm var/lib/asterisk/sounds/en/goodbye.gsm +var/lib/asterisk/sounds/en/goodbye_for_the_best.gsm +var/lib/asterisk/sounds/en/goodbye_love.gsm +var/lib/asterisk/sounds/en/got_kidding.gsm +var/lib/asterisk/sounds/en/grammar.gsm var/lib/asterisk/sounds/en/greater-than.gsm var/lib/asterisk/sounds/en/groovy.gsm var/lib/asterisk/sounds/en/ha @@ -1551,10 +1609,12 @@ var/lib/asterisk/sounds/en/ha/xmas-lights.gsm var/lib/asterisk/sounds/en/ha/xmas-tree.gsm var/lib/asterisk/sounds/en/ha/yard.gsm var/lib/asterisk/sounds/en/hail.gsm +var/lib/asterisk/sounds/en/hal_goodbye.gsm var/lib/asterisk/sounds/en/half.gsm var/lib/asterisk/sounds/en/hang-on-a-second-angry.gsm var/lib/asterisk/sounds/en/hang-on-a-second.gsm var/lib/asterisk/sounds/en/hangup-try-again.gsm +var/lib/asterisk/sounds/en/happy_saved.gsm var/lib/asterisk/sounds/en/has-arrived-at.gsm var/lib/asterisk/sounds/en/has-been-changed-to.gsm var/lib/asterisk/sounds/en/has-been-cleared.gsm @@ -1666,6 +1726,7 @@ var/lib/asterisk/sounds/en/just-kidding-not-upset2.gsm var/lib/asterisk/sounds/en/kansas-city.gsm var/lib/asterisk/sounds/en/kansas.gsm var/lib/asterisk/sounds/en/kentucky.gsm +var/lib/asterisk/sounds/en/keywords_cross_fingers.gsm var/lib/asterisk/sounds/en/kilobits.gsm var/lib/asterisk/sounds/en/kilobytes.gsm var/lib/asterisk/sounds/en/kilohertz.gsm @@ -1748,6 +1809,7 @@ var/lib/asterisk/sounds/en/letters/z.gsm var/lib/asterisk/sounds/en/letters/zed.gsm var/lib/asterisk/sounds/en/library.gsm var/lib/asterisk/sounds/en/lightning.gsm +var/lib/asterisk/sounds/en/like_to_tell_valid_ext.gsm var/lib/asterisk/sounds/en/limit-simul-calls.gsm var/lib/asterisk/sounds/en/lines-complaining-customers.gsm var/lib/asterisk/sounds/en/linux.gsm @@ -1763,6 +1825,7 @@ var/lib/asterisk/sounds/en/loss.gsm var/lib/asterisk/sounds/en/lots-o-monkeys.gsm var/lib/asterisk/sounds/en/louisiana.gsm var/lib/asterisk/sounds/en/low.gsm +var/lib/asterisk/sounds/en/lowercase.gsm var/lib/asterisk/sounds/en/lunch.gsm var/lib/asterisk/sounds/en/lyrics-louie-louie.gsm var/lib/asterisk/sounds/en/machine.gsm @@ -1777,6 +1840,7 @@ var/lib/asterisk/sounds/en/management.gsm var/lib/asterisk/sounds/en/manufacturing.gsm var/lib/asterisk/sounds/en/marketing.gsm var/lib/asterisk/sounds/en/marryme.gsm +var/lib/asterisk/sounds/en/martini.gsm var/lib/asterisk/sounds/en/maryland.gsm var/lib/asterisk/sounds/en/massachusetts.gsm var/lib/asterisk/sounds/en/mathematics.gsm @@ -1790,6 +1854,7 @@ var/lib/asterisk/sounds/en/menu.gsm var/lib/asterisk/sounds/en/mesa.gsm var/lib/asterisk/sounds/en/message-from.gsm var/lib/asterisk/sounds/en/message-number.gsm +var/lib/asterisk/sounds/en/messages_curious.gsm var/lib/asterisk/sounds/en/meter.gsm var/lib/asterisk/sounds/en/meters.gsm var/lib/asterisk/sounds/en/miami.gsm @@ -1802,7 +1867,9 @@ var/lib/asterisk/sounds/en/miles-per-hour.gsm var/lib/asterisk/sounds/en/miles.gsm var/lib/asterisk/sounds/en/millionth.gsm var/lib/asterisk/sounds/en/milwaukee.gsm +var/lib/asterisk/sounds/en/mind_repeating.gsm var/lib/asterisk/sounds/en/minimum.gsm +var/lib/asterisk/sounds/en/minions-not-answering-leave-message.gsm var/lib/asterisk/sounds/en/minneapolis.gsm var/lib/asterisk/sounds/en/minnesota.gsm var/lib/asterisk/sounds/en/minute.gsm @@ -1811,6 +1878,7 @@ var/lib/asterisk/sounds/en/missed.gsm var/lib/asterisk/sounds/en/mississippi.gsm var/lib/asterisk/sounds/en/missouri.gsm var/lib/asterisk/sounds/en/misty.gsm +var/lib/asterisk/sounds/en/mode.gsm var/lib/asterisk/sounds/en/monitored.gsm var/lib/asterisk/sounds/en/montana.gsm var/lib/asterisk/sounds/en/month.gsm @@ -1840,6 +1908,7 @@ var/lib/asterisk/sounds/en/new-jersey.gsm var/lib/asterisk/sounds/en/new-mexico.gsm var/lib/asterisk/sounds/en/new-orleans.gsm var/lib/asterisk/sounds/en/new-york.gsm +var/lib/asterisk/sounds/en/night.gsm var/lib/asterisk/sounds/en/nineteenth.gsm var/lib/asterisk/sounds/en/ninetieth.gsm var/lib/asterisk/sounds/en/ninth.gsm @@ -1852,8 +1921,14 @@ var/lib/asterisk/sounds/en/no-info-about-number.gsm var/lib/asterisk/sounds/en/no-longer-in-service.gsm var/lib/asterisk/sounds/en/no-reply-no-mailbox.gsm var/lib/asterisk/sounds/en/no-route-exists-to-dest.gsm +var/lib/asterisk/sounds/en/no_invite_to_conf.gsm +var/lib/asterisk/sounds/en/no_longer_conf.gsm +var/lib/asterisk/sounds/en/no_problem_help.gsm +var/lib/asterisk/sounds/en/no_worries_try_again.gsm var/lib/asterisk/sounds/en/nobody-but-chickens.gsm var/lib/asterisk/sounds/en/node.gsm +var/lib/asterisk/sounds/en/none_of_my_business1.gsm +var/lib/asterisk/sounds/en/none_of_my_business2.gsm var/lib/asterisk/sounds/en/north-carolina.gsm var/lib/asterisk/sounds/en/north-dakota.gsm var/lib/asterisk/sounds/en/north.gsm @@ -1867,6 +1942,10 @@ var/lib/asterisk/sounds/en/not-rqsted-wakeup.gsm var/lib/asterisk/sounds/en/not-taking-your-call.gsm var/lib/asterisk/sounds/en/not-yet-assigned.gsm var/lib/asterisk/sounds/en/not-yet-connected.gsm +var/lib/asterisk/sounds/en/not_me.gsm +var/lib/asterisk/sounds/en/not_pass.gsm +var/lib/asterisk/sounds/en/not_siri.gsm +var/lib/asterisk/sounds/en/not_you.gsm var/lib/asterisk/sounds/en/nothing-recorded.gsm var/lib/asterisk/sounds/en/now.gsm var/lib/asterisk/sounds/en/num-not-in-db.gsm @@ -1877,9 +1956,11 @@ var/lib/asterisk/sounds/en/number.gsm var/lib/asterisk/sounds/en/oakland.gsm var/lib/asterisk/sounds/en/octothorpe.gsm var/lib/asterisk/sounds/en/off-duty.gsm +var/lib/asterisk/sounds/en/off.gsm var/lib/asterisk/sounds/en/office-code.gsm var/lib/asterisk/sounds/en/office-iguanas.gsm var/lib/asterisk/sounds/en/office.gsm +var/lib/asterisk/sounds/en/ogm_home.gsm var/lib/asterisk/sounds/en/ohio.gsm var/lib/asterisk/sounds/en/oklahoma-city.gsm var/lib/asterisk/sounds/en/oklahoma.gsm @@ -1895,6 +1976,7 @@ var/lib/asterisk/sounds/en/oops1.gsm var/lib/asterisk/sounds/en/oops2.gsm var/lib/asterisk/sounds/en/oops3.gsm var/lib/asterisk/sounds/en/open-parenthesis.gsm +var/lib/asterisk/sounds/en/open.gsm var/lib/asterisk/sounds/en/operations.gsm var/lib/asterisk/sounds/en/option-is-invalid.gsm var/lib/asterisk/sounds/en/option-not-implemented.gsm @@ -1917,6 +1999,7 @@ var/lib/asterisk/sounds/en/partially.gsm var/lib/asterisk/sounds/en/partly.gsm var/lib/asterisk/sounds/en/pascal.gsm var/lib/asterisk/sounds/en/pascal2.gsm +var/lib/asterisk/sounds/en/passwords_not_match.gsm var/lib/asterisk/sounds/en/patchy.gsm var/lib/asterisk/sounds/en/pbx-invalid.gsm var/lib/asterisk/sounds/en/pbx-invalidpark.gsm @@ -1965,6 +2048,7 @@ var/lib/asterisk/sounds/en/phonetic/z_p.gsm var/lib/asterisk/sounds/en/physics.gsm var/lib/asterisk/sounds/en/pin-invalid.gsm var/lib/asterisk/sounds/en/pin-number-accepted.gsm +var/lib/asterisk/sounds/en/pin_number.gsm var/lib/asterisk/sounds/en/ping.gsm var/lib/asterisk/sounds/en/pipe.gsm var/lib/asterisk/sounds/en/planning.gsm @@ -1975,6 +2059,8 @@ var/lib/asterisk/sounds/en/please-enter-the.gsm var/lib/asterisk/sounds/en/please-enter-your.gsm var/lib/asterisk/sounds/en/please-hang-up-and-dial-operator.gsm var/lib/asterisk/sounds/en/please-hang-up-and-try-again.gsm +var/lib/asterisk/sounds/en/please-hold-minion-connect.gsm +var/lib/asterisk/sounds/en/please-hold-while-minion.gsm var/lib/asterisk/sounds/en/please-try-again-later.gsm var/lib/asterisk/sounds/en/please-try-again.gsm var/lib/asterisk/sounds/en/please-try.gsm @@ -1987,6 +2073,7 @@ var/lib/asterisk/sounds/en/pls-entr-num-uwish2-call.gsm var/lib/asterisk/sounds/en/pls-hold-process-tx.gsm var/lib/asterisk/sounds/en/pls-hold-silent30.gsm var/lib/asterisk/sounds/en/pls-hold-while-try.gsm +var/lib/asterisk/sounds/en/pls-listen-options-changed.gsm var/lib/asterisk/sounds/en/pls-lv-msg-will-contact.gsm var/lib/asterisk/sounds/en/pls-rcrd-name-at-tone.gsm var/lib/asterisk/sounds/en/pls-stay-on-line.gsm @@ -2027,6 +2114,16 @@ var/lib/asterisk/sounds/en/press-button-again.gsm var/lib/asterisk/sounds/en/press-enter.gsm var/lib/asterisk/sounds/en/press-escape.gsm var/lib/asterisk/sounds/en/press-hash.gsm +var/lib/asterisk/sounds/en/press-or-say-0.gsm +var/lib/asterisk/sounds/en/press-or-say-1.gsm +var/lib/asterisk/sounds/en/press-or-say-2.gsm +var/lib/asterisk/sounds/en/press-or-say-3.gsm +var/lib/asterisk/sounds/en/press-or-say-4.gsm +var/lib/asterisk/sounds/en/press-or-say-5.gsm +var/lib/asterisk/sounds/en/press-or-say-6.gsm +var/lib/asterisk/sounds/en/press-or-say-7.gsm +var/lib/asterisk/sounds/en/press-or-say-8.gsm +var/lib/asterisk/sounds/en/press-or-say-9.gsm var/lib/asterisk/sounds/en/press-pound-save-changes.gsm var/lib/asterisk/sounds/en/press-pound-to-login-star-to-hangup.gsm var/lib/asterisk/sounds/en/press-pound.gsm @@ -2036,7 +2133,10 @@ var/lib/asterisk/sounds/en/press-star.gsm var/lib/asterisk/sounds/en/press-the-space-bar.gsm var/lib/asterisk/sounds/en/press-tilde.gsm var/lib/asterisk/sounds/en/press.gsm +var/lib/asterisk/sounds/en/press_pound_hash.gsm +var/lib/asterisk/sounds/en/press_pound_hash_key.gsm var/lib/asterisk/sounds/en/pressure.gsm +var/lib/asterisk/sounds/en/prime_number.gsm var/lib/asterisk/sounds/en/printing.gsm var/lib/asterisk/sounds/en/priv-callee-options.gsm var/lib/asterisk/sounds/en/priv-callpending.gsm @@ -2072,6 +2172,7 @@ var/lib/asterisk/sounds/en/privacy-your-callerid-is.gsm var/lib/asterisk/sounds/en/product.gsm var/lib/asterisk/sounds/en/production.gsm var/lib/asterisk/sounds/en/projects.gsm +var/lib/asterisk/sounds/en/prompt-not-found.gsm var/lib/asterisk/sounds/en/protocol.gsm var/lib/asterisk/sounds/en/public-relations.gsm var/lib/asterisk/sounds/en/purchasing.gsm @@ -2080,6 +2181,7 @@ var/lib/asterisk/sounds/en/q-dot-931.gsm var/lib/asterisk/sounds/en/q-dot-9thirty1.gsm var/lib/asterisk/sounds/en/quality-assurance.gsm var/lib/asterisk/sounds/en/quality-control.gsm +var/lib/asterisk/sounds/en/quality_control.gsm var/lib/asterisk/sounds/en/quarter.gsm var/lib/asterisk/sounds/en/queue-callswaiting.gsm var/lib/asterisk/sounds/en/queue-holdtime.gsm @@ -2108,12 +2210,14 @@ var/lib/asterisk/sounds/en/receiving.gsm var/lib/asterisk/sounds/en/reception.gsm var/lib/asterisk/sounds/en/recorded.gsm var/lib/asterisk/sounds/en/registrar.gsm +var/lib/asterisk/sounds/en/regret_not_saved.gsm var/lib/asterisk/sounds/en/remote-already-in-this-mode-2.gsm var/lib/asterisk/sounds/en/remote-already-in-this-mode.gsm var/lib/asterisk/sounds/en/remote-base.gsm var/lib/asterisk/sounds/en/removed.gsm var/lib/asterisk/sounds/en/repair.gsm var/lib/asterisk/sounds/en/repeat-only.gsm +var/lib/asterisk/sounds/en/repeat_pin.gsm var/lib/asterisk/sounds/en/repeater.gsm var/lib/asterisk/sounds/en/research-and-development.gsm var/lib/asterisk/sounds/en/research.gsm @@ -2128,9 +2232,11 @@ var/lib/asterisk/sounds/en/room-service.gsm var/lib/asterisk/sounds/en/route-sip.gsm var/lib/asterisk/sounds/en/rqsted-wakeup-for.gsm var/lib/asterisk/sounds/en/sacramento.gsm +var/lib/asterisk/sounds/en/said_hold_on.gsm var/lib/asterisk/sounds/en/saint-louis.gsm var/lib/asterisk/sounds/en/sales-floor.gsm var/lib/asterisk/sounds/en/sales.gsm +var/lib/asterisk/sounds/en/saleshell.gsm var/lib/asterisk/sounds/en/san-antonio.gsm var/lib/asterisk/sounds/en/san-diego.gsm var/lib/asterisk/sounds/en/san-francisco.gsm @@ -2148,6 +2254,7 @@ var/lib/asterisk/sounds/en/secretary.gsm var/lib/asterisk/sounds/en/security.gsm var/lib/asterisk/sounds/en/self-destruct-in.gsm var/lib/asterisk/sounds/en/self-destruct.gsm +var/lib/asterisk/sounds/en/sendhelp.gsm var/lib/asterisk/sounds/en/server.gsm var/lib/asterisk/sounds/en/service-not-implemented.gsm var/lib/asterisk/sounds/en/service.gsm @@ -2196,6 +2303,13 @@ var/lib/asterisk/sounds/en/sorry-mailbox-full.gsm var/lib/asterisk/sounds/en/sorry-youre-having-problems.gsm var/lib/asterisk/sounds/en/sorry.gsm var/lib/asterisk/sounds/en/sorry2.gsm +var/lib/asterisk/sounds/en/sorry_caller_number.gsm +var/lib/asterisk/sounds/en/sorry_didnt_get.gsm +var/lib/asterisk/sounds/en/sorry_didnt_quite_get.gsm +var/lib/asterisk/sounds/en/sorry_login_incorrect.gsm +var/lib/asterisk/sounds/en/sorry_missed.gsm +var/lib/asterisk/sounds/en/sorry_no_messages.gsm +var/lib/asterisk/sounds/en/sorrydave.gsm var/lib/asterisk/sounds/en/south-carolina.gsm var/lib/asterisk/sounds/en/south-dakota.gsm var/lib/asterisk/sounds/en/south.gsm @@ -2237,20 +2351,24 @@ var/lib/asterisk/sounds/en/station.gsm var/lib/asterisk/sounds/en/status.gsm var/lib/asterisk/sounds/en/step-in-stream.gsm var/lib/asterisk/sounds/en/sterling.gsm +var/lib/asterisk/sounds/en/still_on_phone.gsm var/lib/asterisk/sounds/en/store-accounting.gsm var/lib/asterisk/sounds/en/storm.gsm var/lib/asterisk/sounds/en/sun.gsm var/lib/asterisk/sounds/en/sunny.gsm var/lib/asterisk/sounds/en/support.gsm +var/lib/asterisk/sounds/en/sure_help.gsm var/lib/asterisk/sounds/en/swap.gsm var/lib/asterisk/sounds/en/system-crashed.gsm var/lib/asterisk/sounds/en/system-status-msg.gsm var/lib/asterisk/sounds/en/system.gsm var/lib/asterisk/sounds/en/systems.gsm +var/lib/asterisk/sounds/en/talkin_me.gsm var/lib/asterisk/sounds/en/talking-to-myself.gsm var/lib/asterisk/sounds/en/target-attendant.gsm var/lib/asterisk/sounds/en/tcp.gsm var/lib/asterisk/sounds/en/technical-support.gsm +var/lib/asterisk/sounds/en/telemarketercalling.gsm var/lib/asterisk/sounds/en/telephone-in-your-pocket.gsm var/lib/asterisk/sounds/en/telephone-in-your-pocket2.gsm var/lib/asterisk/sounds/en/telephone-number.gsm @@ -2269,6 +2387,8 @@ var/lib/asterisk/sounds/en/test-tones-follow.gsm var/lib/asterisk/sounds/en/texas.gsm var/lib/asterisk/sounds/en/thank-you-cooperation.gsm var/lib/asterisk/sounds/en/thank-you-for-calling.gsm +var/lib/asterisk/sounds/en/thank_you_calling.gsm +var/lib/asterisk/sounds/en/thanks-annoyance.gsm var/lib/asterisk/sounds/en/thanks-for-calling-today.gsm var/lib/asterisk/sounds/en/thanks-for-using.gsm var/lib/asterisk/sounds/en/that-is-not-rec-phn-num.gsm @@ -2304,6 +2424,7 @@ var/lib/asterisk/sounds/en/thunderstorm.gsm var/lib/asterisk/sounds/en/tide.gsm var/lib/asterisk/sounds/en/time.gsm var/lib/asterisk/sounds/en/times.gsm +var/lib/asterisk/sounds/en/timewarp.gsm var/lib/asterisk/sounds/en/to-accept-recording.gsm var/lib/asterisk/sounds/en/to-be-called-back.gsm var/lib/asterisk/sounds/en/to-blklist-last-caller.gsm @@ -2354,6 +2475,7 @@ var/lib/asterisk/sounds/en/to-send-a-reply.gsm var/lib/asterisk/sounds/en/to-snooze-for.gsm var/lib/asterisk/sounds/en/to-use-def-attendant.gsm var/lib/asterisk/sounds/en/tomorrow-night.gsm +var/lib/asterisk/sounds/en/tone_time.gsm var/lib/asterisk/sounds/en/tones-that-follow-are-for-the-deaf.gsm var/lib/asterisk/sounds/en/tonight.gsm var/lib/asterisk/sounds/en/too-low.gsm @@ -2366,6 +2488,7 @@ var/lib/asterisk/sounds/en/trading-desk.gsm var/lib/asterisk/sounds/en/traffic.gsm var/lib/asterisk/sounds/en/training.gsm var/lib/asterisk/sounds/en/transfer.gsm +var/lib/asterisk/sounds/en/transfer_to_agent.gsm var/lib/asterisk/sounds/en/transportation.gsm var/lib/asterisk/sounds/en/travel.gsm var/lib/asterisk/sounds/en/treasury.gsm @@ -2393,10 +2516,14 @@ var/lib/asterisk/sounds/en/uh-oh2.gsm var/lib/asterisk/sounds/en/uk.gsm var/lib/asterisk/sounds/en/unavailable.gsm var/lib/asterisk/sounds/en/unconditional.gsm +var/lib/asterisk/sounds/en/unicorn_blood.gsm +var/lib/asterisk/sounds/en/unicorn_blood_MIXDOWN.gsm var/lib/asterisk/sounds/en/unidentified-no-callback.gsm var/lib/asterisk/sounds/en/units.gsm var/lib/asterisk/sounds/en/unix.gsm +var/lib/asterisk/sounds/en/unwelcomecall.gsm var/lib/asterisk/sounds/en/up.gsm +var/lib/asterisk/sounds/en/uppercase.gsm var/lib/asterisk/sounds/en/uptime.gsm var/lib/asterisk/sounds/en/user.gsm var/lib/asterisk/sounds/en/users.gsm @@ -2456,6 +2583,7 @@ var/lib/asterisk/sounds/en/vm-message.gsm var/lib/asterisk/sounds/en/vm-messages.gsm var/lib/asterisk/sounds/en/vm-minutes.gsm var/lib/asterisk/sounds/en/vm-mismatch.gsm +var/lib/asterisk/sounds/en/vm-msgforwarded.gsm var/lib/asterisk/sounds/en/vm-msginstruct.gsm var/lib/asterisk/sounds/en/vm-msgsaved.gsm var/lib/asterisk/sounds/en/vm-newpassword.gsm @@ -2536,6 +2664,7 @@ var/lib/asterisk/sounds/en/was.gsm var/lib/asterisk/sounds/en/washington-dc.gsm var/lib/asterisk/sounds/en/washington.gsm var/lib/asterisk/sounds/en/watch.gsm +var/lib/asterisk/sounds/en/watson.gsm var/lib/asterisk/sounds/en/we-apologize.gsm var/lib/asterisk/sounds/en/we-dont-have-tech-support.gsm var/lib/asterisk/sounds/en/weasels-eaten-phonesys.gsm @@ -2553,6 +2682,7 @@ var/lib/asterisk/sounds/en/what-time-it-is.gsm var/lib/asterisk/sounds/en/what-time-it-is2.gsm var/lib/asterisk/sounds/en/when-dialing-this-number.gsm var/lib/asterisk/sounds/en/who-would-you-like-to-call.gsm +var/lib/asterisk/sounds/en/whoareyou.gsm var/lib/asterisk/sounds/en/why-no-answer-mystery.gsm var/lib/asterisk/sounds/en/wichita.gsm var/lib/asterisk/sounds/en/will-apply.gsm @@ -2564,8 +2694,10 @@ var/lib/asterisk/sounds/en/windows.gsm var/lib/asterisk/sounds/en/windy.gsm var/lib/asterisk/sounds/en/wisconsin.gsm var/lib/asterisk/sounds/en/wish-to-continue.gsm +var/lib/asterisk/sounds/en/wish_command_totally.gsm var/lib/asterisk/sounds/en/with.gsm var/lib/asterisk/sounds/en/within.gsm +var/lib/asterisk/sounds/en/woo_hoo_call_first.gsm var/lib/asterisk/sounds/en/work.gsm var/lib/asterisk/sounds/en/wrong-try-again-smarty.gsm var/lib/asterisk/sounds/en/wtng-to-spk-w-rep.gsm @@ -2619,6 +2751,7 @@ var/lib/asterisk/sounds/en/you-must-first-dial.gsm var/lib/asterisk/sounds/en/you-seem-impatient.gsm var/lib/asterisk/sounds/en/you-sound-cute.gsm var/lib/asterisk/sounds/en/you-wish-to-join.gsm +var/lib/asterisk/sounds/en/you_say_yes.gsm var/lib/asterisk/sounds/en/your-account.gsm var/lib/asterisk/sounds/en/your-msg-has-been-saved.gsm var/lib/asterisk/sounds/en/your-msg-is-too-short.gsm @@ -2626,7 +2759,10 @@ var/lib/asterisk/sounds/en/your-notifications.gsm var/lib/asterisk/sounds/en/your-req-notification.gsm var/lib/asterisk/sounds/en/your-temp-greeting.gsm var/lib/asterisk/sounds/en/your.gsm +var/lib/asterisk/sounds/en/yourcallisimportant.gsm +var/lib/asterisk/sounds/en/yourcallisimpotent.gsm var/lib/asterisk/sounds/en/zip-code.gsm +var/lib/asterisk/sounds/en/zombies.gsm #var/lib/asterisk/sounds/letters #var/lib/asterisk/sounds/letters/de var/lib/asterisk/sounds/letters/de/a.gsm @@ -2696,17 +2832,16 @@ var/lib/asterisk/sounds/phonetic/de/x_p.gsm var/lib/asterisk/sounds/phonetic/de/y_p.gsm var/lib/asterisk/sounds/phonetic/de/z_p.gsm #var/lib/asterisk/static-http -var/lib/asterisk/static-http/ajamdemo.html -var/lib/asterisk/static-http/astman.css -var/lib/asterisk/static-http/astman.js -var/lib/asterisk/static-http/core-en_US.xml -var/lib/asterisk/static-http/mantest.html -var/lib/asterisk/static-http/prototype.js +#var/lib/asterisk/static-http/ajamdemo.html +#var/lib/asterisk/static-http/astman.css +#var/lib/asterisk/static-http/astman.js +#var/lib/asterisk/static-http/core-en_US.xml +#var/lib/asterisk/static-http/mantest.html +#var/lib/asterisk/static-http/prototype.js #var/log/asterisk var/log/asterisk/cdr-csv var/log/asterisk/cdr-custom var/log/asterisk/cel-custom -#var/run/asterisk #var/spool/asterisk var/spool/asterisk/dictate var/spool/asterisk/meetme @@ -2720,6 +2855,3 @@ var/spool/asterisk/voicemail/default/1234/INBOX var/spool/asterisk/voicemail/default/1234/en var/spool/asterisk/voicemail/default/1234/en/busy.gsm var/spool/asterisk/voicemail/default/1234/en/unavail.gsm -etc/rc.d/init.d/asterisk -srv/web/ipfire/cgi-bin/asterisk -var/ipfire/menu.d/EX-asterisk.menu diff --git a/config/rootfiles/packages/libassuan b/config/rootfiles/packages/libassuan index efe0df57e7..79b74ca6a5 100644 --- a/config/rootfiles/packages/libassuan +++ b/config/rootfiles/packages/libassuan @@ -3,6 +3,6 @@ usr/bin/libassuan-config #usr/lib/libassuan.la usr/lib/libassuan.so usr/lib/libassuan.so.0 -usr/lib/libassuan.so.0.3.0 +usr/lib/libassuan.so.0.4.3 #usr/share/aclocal/libassuan.m4 #usr/share/info/assuan.info diff --git a/config/rootfiles/packages/libdvbpsi b/config/rootfiles/packages/libdvbpsi index 911b5fdef2..b7b07730ef 100644 --- a/config/rootfiles/packages/libdvbpsi +++ b/config/rootfiles/packages/libdvbpsi @@ -1,4 +1,10 @@ #usr/include/dvbpsi +#usr/include/dvbpsi/atsc_eit.h +#usr/include/dvbpsi/atsc_ett.h +#usr/include/dvbpsi/atsc_mgt.h +#usr/include/dvbpsi/atsc_stt.h +#usr/include/dvbpsi/atsc_vct.h +#usr/include/dvbpsi/bat.h #usr/include/dvbpsi/cat.h #usr/include/dvbpsi/demux.h #usr/include/dvbpsi/descriptor.h @@ -17,24 +23,57 @@ #usr/include/dvbpsi/dr_0d.h #usr/include/dvbpsi/dr_0e.h #usr/include/dvbpsi/dr_0f.h +#usr/include/dvbpsi/dr_13.h +#usr/include/dvbpsi/dr_14.h +#usr/include/dvbpsi/dr_40.h +#usr/include/dvbpsi/dr_41.h #usr/include/dvbpsi/dr_42.h +#usr/include/dvbpsi/dr_43.h +#usr/include/dvbpsi/dr_44.h +#usr/include/dvbpsi/dr_45.h #usr/include/dvbpsi/dr_47.h #usr/include/dvbpsi/dr_48.h +#usr/include/dvbpsi/dr_49.h +#usr/include/dvbpsi/dr_4a.h +#usr/include/dvbpsi/dr_4b.h +#usr/include/dvbpsi/dr_4c.h #usr/include/dvbpsi/dr_4d.h #usr/include/dvbpsi/dr_4e.h +#usr/include/dvbpsi/dr_4f.h +#usr/include/dvbpsi/dr_50.h #usr/include/dvbpsi/dr_52.h +#usr/include/dvbpsi/dr_53.h +#usr/include/dvbpsi/dr_54.h #usr/include/dvbpsi/dr_55.h #usr/include/dvbpsi/dr_56.h +#usr/include/dvbpsi/dr_58.h #usr/include/dvbpsi/dr_59.h +#usr/include/dvbpsi/dr_5a.h +#usr/include/dvbpsi/dr_62.h +#usr/include/dvbpsi/dr_66.h #usr/include/dvbpsi/dr_69.h +#usr/include/dvbpsi/dr_73.h +#usr/include/dvbpsi/dr_76.h +#usr/include/dvbpsi/dr_7c.h +#usr/include/dvbpsi/dr_81.h +#usr/include/dvbpsi/dr_83.h +#usr/include/dvbpsi/dr_86.h +#usr/include/dvbpsi/dr_8a.h +#usr/include/dvbpsi/dr_a0.h +#usr/include/dvbpsi/dr_a1.h #usr/include/dvbpsi/dvbpsi.h #usr/include/dvbpsi/eit.h +#usr/include/dvbpsi/nit.h #usr/include/dvbpsi/pat.h #usr/include/dvbpsi/pmt.h #usr/include/dvbpsi/psi.h +#usr/include/dvbpsi/rst.h #usr/include/dvbpsi/sdt.h +#usr/include/dvbpsi/sis.h +#usr/include/dvbpsi/tot.h #usr/lib/libdvbpsi.a #usr/lib/libdvbpsi.la usr/lib/libdvbpsi.so -usr/lib/libdvbpsi.so.5 -usr/lib/libdvbpsi.so.5.0.0 +usr/lib/libdvbpsi.so.9 +usr/lib/libdvbpsi.so.9.0.0 +#usr/lib/pkgconfig/libdvbpsi.pc diff --git a/config/rootfiles/packages/libevent2 b/config/rootfiles/packages/libevent2 index fb3d8bd823..5beb5f8b83 100644 --- a/config/rootfiles/packages/libevent2 +++ b/config/rootfiles/packages/libevent2 @@ -25,18 +25,18 @@ #usr/include/event2/thread.h #usr/include/event2/util.h usr/lib/libevent-2.0.so.5 -usr/lib/libevent-2.0.so.5.1.2 +usr/lib/libevent-2.0.so.5.1.9 usr/lib/libevent_core-2.0.so.5 -usr/lib/libevent_core-2.0.so.5.1.2 +usr/lib/libevent_core-2.0.so.5.1.9 usr/lib/libevent_extra-2.0.so.5 -usr/lib/libevent_extra-2.0.so.5.1.2 +usr/lib/libevent_extra-2.0.so.5.1.9 usr/lib/libevent_openssl-2.0.so.5 -usr/lib/libevent_openssl-2.0.so.5.1.2 +usr/lib/libevent_openssl-2.0.so.5.1.9 #usr/lib/libevent_openssl.a #usr/lib/libevent_openssl.la #usr/lib/libevent_openssl.so usr/lib/libevent_pthreads-2.0.so.5 -usr/lib/libevent_pthreads-2.0.so.5.1.2 +usr/lib/libevent_pthreads-2.0.so.5.1.9 #usr/lib/libevent_pthreads.a #usr/lib/libevent_pthreads.la #usr/lib/libevent_pthreads.so diff --git a/config/rootfiles/packages/libsrtp b/config/rootfiles/packages/libsrtp new file mode 100644 index 0000000000..105f3f00e7 --- /dev/null +++ b/config/rootfiles/packages/libsrtp @@ -0,0 +1,40 @@ +#usr/include/srtp +#usr/include/srtp/aes.h +#usr/include/srtp/aes_cbc.h +#usr/include/srtp/aes_gcm_ossl.h +#usr/include/srtp/aes_icm.h +#usr/include/srtp/aes_icm_ossl.h +#usr/include/srtp/alloc.h +#usr/include/srtp/auth.h +#usr/include/srtp/cipher.h +#usr/include/srtp/config.h +#usr/include/srtp/crypto.h +#usr/include/srtp/crypto_kernel.h +#usr/include/srtp/crypto_math.h +#usr/include/srtp/crypto_types.h +#usr/include/srtp/cryptoalg.h +#usr/include/srtp/datatypes.h +#usr/include/srtp/ekt.h +#usr/include/srtp/err.h +#usr/include/srtp/getopt_s.h +#usr/include/srtp/gf2_8.h +#usr/include/srtp/hmac.h +#usr/include/srtp/integers.h +#usr/include/srtp/kernel_compat.h +#usr/include/srtp/key.h +#usr/include/srtp/null_auth.h +#usr/include/srtp/null_cipher.h +#usr/include/srtp/prng.h +#usr/include/srtp/rand_source.h +#usr/include/srtp/rdb.h +#usr/include/srtp/rdbx.h +#usr/include/srtp/rtp.h +#usr/include/srtp/rtp_priv.h +#usr/include/srtp/sha1.h +#usr/include/srtp/srtp.h +#usr/include/srtp/srtp_priv.h +#usr/include/srtp/stat.h +#usr/include/srtp/ut_sim.h +#usr/include/srtp/xfm.h +usr/lib/libsrtp.so +#usr/lib/pkgconfig/libsrtp.pc diff --git a/config/rootfiles/packages/lynis b/config/rootfiles/packages/lynis index d4e3237696..6199853d37 100644 --- a/config/rootfiles/packages/lynis +++ b/config/rootfiles/packages/lynis @@ -1,63 +1,79 @@ -var/ipfire/lynis-1.2.9 -var/ipfire/lynis-1.2.9/db -var/ipfire/lynis-1.2.9/db/fileperms.db -var/ipfire/lynis-1.2.9/db/hints.db -var/ipfire/lynis-1.2.9/db/integrity.db -var/ipfire/lynis-1.2.9/db/malware-susp.db -var/ipfire/lynis-1.2.9/db/malware.db -var/ipfire/lynis-1.2.9/db/sbl.db -var/ipfire/lynis-1.2.9/default.prf -var/ipfire/lynis-1.2.9/include -var/ipfire/lynis-1.2.9/include/binaries -var/ipfire/lynis-1.2.9/include/consts -var/ipfire/lynis-1.2.9/include/functions -var/ipfire/lynis-1.2.9/include/osdetection -var/ipfire/lynis-1.2.9/include/parameters -var/ipfire/lynis-1.2.9/include/profiles -var/ipfire/lynis-1.2.9/include/report -var/ipfire/lynis-1.2.9/include/tests_accounting -var/ipfire/lynis-1.2.9/include/tests_authentication -var/ipfire/lynis-1.2.9/include/tests_banners -var/ipfire/lynis-1.2.9/include/tests_boot_services -var/ipfire/lynis-1.2.9/include/tests_crypto -var/ipfire/lynis-1.2.9/include/tests_databases -var/ipfire/lynis-1.2.9/include/tests_file_integrity -var/ipfire/lynis-1.2.9/include/tests_file_permissions -var/ipfire/lynis-1.2.9/include/tests_filesystems -var/ipfire/lynis-1.2.9/include/tests_firewalls -var/ipfire/lynis-1.2.9/include/tests_hardening -var/ipfire/lynis-1.2.9/include/tests_hardening_tools -var/ipfire/lynis-1.2.9/include/tests_homedirs -var/ipfire/lynis-1.2.9/include/tests_insecure_services -var/ipfire/lynis-1.2.9/include/tests_kernel -var/ipfire/lynis-1.2.9/include/tests_kernel_hardening -var/ipfire/lynis-1.2.9/include/tests_ldap -var/ipfire/lynis-1.2.9/include/tests_logging -var/ipfire/lynis-1.2.9/include/tests_mac_frameworks -var/ipfire/lynis-1.2.9/include/tests_mail_messaging -var/ipfire/lynis-1.2.9/include/tests_malware -var/ipfire/lynis-1.2.9/include/tests_memory_processes -var/ipfire/lynis-1.2.9/include/tests_nameservices -var/ipfire/lynis-1.2.9/include/tests_networking -var/ipfire/lynis-1.2.9/include/tests_php -var/ipfire/lynis-1.2.9/include/tests_ports_packages -var/ipfire/lynis-1.2.9/include/tests_printers_spools -var/ipfire/lynis-1.2.9/include/tests_scheduling -var/ipfire/lynis-1.2.9/include/tests_shells -var/ipfire/lynis-1.2.9/include/tests_snmp -var/ipfire/lynis-1.2.9/include/tests_solaris -var/ipfire/lynis-1.2.9/include/tests_squid -var/ipfire/lynis-1.2.9/include/tests_ssh -var/ipfire/lynis-1.2.9/include/tests_storage -var/ipfire/lynis-1.2.9/include/tests_storage_nfs -var/ipfire/lynis-1.2.9/include/tests_time -var/ipfire/lynis-1.2.9/include/tests_virtualization -var/ipfire/lynis-1.2.9/include/tests_webservers -var/ipfire/lynis-1.2.9/lynis -var/ipfire/lynis-1.2.9/lynis.8 -var/ipfire/lynis-1.2.9/plugins -var/ipfire/lynis-1.2.9/plugins/README -var/ipfire/lynis-1.2.9/plugins/plugin_access_files -var/ipfire/lynis-1.2.9/plugins/plugin_compliance_pci -var/ipfire/lynis-1.2.9/plugins/plugin_homedirs -var/ipfire/lynis-1.2.9/plugins/plugin_webserver_data \ No newline at end of file +var/ipfire/lynis +#var/ipfire/lynis/CONTRIBUTORS +#var/ipfire/lynis/db +var/ipfire/lynis/db/fileperms.db +var/ipfire/lynis/db/hints.db +var/ipfire/lynis/db/integrity.db +var/ipfire/lynis/db/malware-susp.db +var/ipfire/lynis/db/malware.db +var/ipfire/lynis/db/sbl.db +var/ipfire/lynis/default.prf +#var/ipfire/lynis/extras +var/ipfire/lynis/extras/.bzrignore +#var/ipfire/lynis/extras/README +#var/ipfire/lynis/extras/bash_completion.d +var/ipfire/lynis/extras/bash_completion.d/lynis +var/ipfire/lynis/extras/build-lynis.sh +var/ipfire/lynis/extras/check-lynis.sh +var/ipfire/lynis/extras/files.dat +var/ipfire/lynis/extras/lynis.spec +#var/ipfire/lynis/extras/openbsd +#var/ipfire/lynis/extras/openbsd/+CONTENTS +#var/ipfire/lynis/extras/systemd +#var/ipfire/lynis/extras/systemd/lynis.service +#var/ipfire/lynis/extras/systemd/lynis.timer +#var/ipfire/lynis/include +var/ipfire/lynis/include/binaries +var/ipfire/lynis/include/consts +var/ipfire/lynis/include/data_upload +var/ipfire/lynis/include/functions +var/ipfire/lynis/include/osdetection +var/ipfire/lynis/include/parameters +var/ipfire/lynis/include/profiles +var/ipfire/lynis/include/report +var/ipfire/lynis/include/tests_accounting +var/ipfire/lynis/include/tests_authentication +var/ipfire/lynis/include/tests_banners +var/ipfire/lynis/include/tests_boot_services +var/ipfire/lynis/include/tests_crypto +var/ipfire/lynis/include/tests_custom.template +var/ipfire/lynis/include/tests_databases +var/ipfire/lynis/include/tests_file_integrity +var/ipfire/lynis/include/tests_file_permissions +var/ipfire/lynis/include/tests_filesystems +var/ipfire/lynis/include/tests_firewalls +var/ipfire/lynis/include/tests_hardening +var/ipfire/lynis/include/tests_hardening_tools +var/ipfire/lynis/include/tests_homedirs +var/ipfire/lynis/include/tests_insecure_services +var/ipfire/lynis/include/tests_kernel +var/ipfire/lynis/include/tests_kernel_hardening +var/ipfire/lynis/include/tests_ldap +var/ipfire/lynis/include/tests_logging +var/ipfire/lynis/include/tests_mac_frameworks +var/ipfire/lynis/include/tests_mail_messaging +var/ipfire/lynis/include/tests_malware +var/ipfire/lynis/include/tests_memory_processes +var/ipfire/lynis/include/tests_nameservices +var/ipfire/lynis/include/tests_networking +var/ipfire/lynis/include/tests_php +var/ipfire/lynis/include/tests_ports_packages +var/ipfire/lynis/include/tests_printers_spools +var/ipfire/lynis/include/tests_scheduling +var/ipfire/lynis/include/tests_shells +var/ipfire/lynis/include/tests_snmp +#var/ipfire/lynis/include/tests_solaris +var/ipfire/lynis/include/tests_squid +var/ipfire/lynis/include/tests_ssh +var/ipfire/lynis/include/tests_storage +var/ipfire/lynis/include/tests_storage_nfs +var/ipfire/lynis/include/tests_tcpwrappers +var/ipfire/lynis/include/tests_time +var/ipfire/lynis/include/tests_tooling +var/ipfire/lynis/include/tests_virtualization +var/ipfire/lynis/include/tests_webservers +var/ipfire/lynis/lynis +var/ipfire/lynis/lynis.8 +#var/ipfire/lynis/plugins +var/ipfire/lynis/plugins/README +var/ipfire/lynis/plugins/custom_plugin.template diff --git a/config/rootfiles/packages/mc b/config/rootfiles/packages/mc index 10b5f33af4..c612edf52f 100644 --- a/config/rootfiles/packages/mc +++ b/config/rootfiles/packages/mc @@ -109,6 +109,8 @@ usr/share/mc/skins/default.ini usr/share/mc/skins/double-lines.ini usr/share/mc/skins/featured.ini usr/share/mc/skins/gotar.ini +usr/share/mc/skins/gray-green-purple256.ini +usr/share/mc/skins/gray-orange-blue256.ini usr/share/mc/skins/mc46.ini usr/share/mc/skins/modarcon16-defbg.ini usr/share/mc/skins/modarcon16.ini diff --git a/config/rootfiles/packages/monit b/config/rootfiles/packages/monit new file mode 100644 index 0000000000..049bab351a --- /dev/null +++ b/config/rootfiles/packages/monit @@ -0,0 +1,8 @@ +etc/monitrc +usr/bin/monit +#usr/share/man/man1/monit.1 +var/ipfire/backup/addons/includes/monit +etc/rc.d/init.d/monit +etc/rc.d/rc0.d/K40monit +etc/rc.d/rc3.d/S60monit +etc/rc.d/rc6.d/K40monit diff --git a/config/rootfiles/packages/nmap b/config/rootfiles/packages/nmap index 8f39897fdf..33706009df 100644 --- a/config/rootfiles/packages/nmap +++ b/config/rootfiles/packages/nmap @@ -2,6 +2,8 @@ usr/bin/ncat usr/bin/ndiff usr/bin/nmap usr/bin/nping +usr/lib/python2.7/site-packages/ndiff.py +usr/lib/python2.7/site-packages/ndiff.pyc #usr/share/man/de/man1/nmap.1 #usr/share/man/es/man1/nmap.1 #usr/share/man/fr/man1/nmap.1 @@ -12,9 +14,7 @@ usr/bin/nping #usr/share/man/hu/man1 #usr/share/man/hu/man1/nmap.1 #usr/share/man/it/man1/nmap.1 -#usr/share/man/jp -#usr/share/man/jp/man1 -#usr/share/man/jp/man1/nmap.1 +#usr/share/man/ja/man1/nmap.1 #usr/share/man/man1/ncat.1 #usr/share/man/man1/ndiff.1 #usr/share/man/man1/nmap.1 @@ -41,7 +41,7 @@ usr/bin/nping #usr/share/man/zh/man1 #usr/share/man/zh/man1/nmap.1 #usr/share/ncat -usr/share/ncat/ca-bundle.crt +#usr/share/ncat/ca-bundle.crt #usr/share/nmap usr/share/nmap/nmap-mac-prefixes usr/share/nmap/nmap-os-db @@ -53,30 +53,50 @@ usr/share/nmap/nmap-services usr/share/nmap/nmap.dtd usr/share/nmap/nmap.xsl usr/share/nmap/nse_main.lua -#usr/share/nmap/nselib +usr/share/nmap/nselib usr/share/nmap/nselib/afp.lua +usr/share/nmap/nselib/ajp.lua usr/share/nmap/nselib/amqp.lua usr/share/nmap/nselib/asn1.lua +usr/share/nmap/nselib/base32.lua usr/share/nmap/nselib/base64.lua +usr/share/nmap/nselib/bin.luadoc +usr/share/nmap/nselib/bit.luadoc usr/share/nmap/nselib/bitcoin.lua usr/share/nmap/nselib/bittorrent.lua +usr/share/nmap/nselib/bjnp.lua usr/share/nmap/nselib/brute.lua +usr/share/nmap/nselib/cassandra.lua usr/share/nmap/nselib/citrixxml.lua usr/share/nmap/nselib/comm.lua usr/share/nmap/nselib/creds.lua usr/share/nmap/nselib/cvs.lua -#usr/share/nmap/nselib/data +usr/share/nmap/nselib/data +usr/share/nmap/nselib/data/dns-srv-names +usr/share/nmap/nselib/data/drupal-modules.lst usr/share/nmap/nselib/data/favicon-db usr/share/nmap/nselib/data/http-default-accounts-fingerprints.lua +usr/share/nmap/nselib/data/http-devframework-fingerprints.lua usr/share/nmap/nselib/data/http-fingerprints.lua usr/share/nmap/nselib/data/http-folders.txt +usr/share/nmap/nselib/data/http-sql-errors.lst +usr/share/nmap/nselib/data/http-web-files-extensions.lst +usr/share/nmap/nselib/data/ike-fingerprints.lua +#usr/share/nmap/nselib/data/jdwp-class +#usr/share/nmap/nselib/data/jdwp-class/JDWPExecCmd.class +#usr/share/nmap/nselib/data/jdwp-class/JDWPExecCmd.java +#usr/share/nmap/nselib/data/jdwp-class/JDWPSystemInfo.class +#usr/share/nmap/nselib/data/jdwp-class/JDWPSystemInfo.java +#usr/share/nmap/nselib/data/jdwp-class/README.txt +usr/share/nmap/nselib/data/mgroupnames.db usr/share/nmap/nselib/data/mysql-cis.audit usr/share/nmap/nselib/data/oracle-default-accounts.lst usr/share/nmap/nselib/data/oracle-sids usr/share/nmap/nselib/data/packetdecoders.lua usr/share/nmap/nselib/data/passwords.lst +#usr/share/nmap/nselib/data/pixel.gif #usr/share/nmap/nselib/data/psexec -usr/share/nmap/nselib/data/psexec/README +#usr/share/nmap/nselib/data/psexec/README usr/share/nmap/nselib/data/psexec/backdoor.lua usr/share/nmap/nselib/data/psexec/default.lua usr/share/nmap/nselib/data/psexec/drives.lua @@ -92,6 +112,8 @@ usr/share/nmap/nselib/data/ssl-ciphers usr/share/nmap/nselib/data/ssl-fingerprints usr/share/nmap/nselib/data/tftplist.txt usr/share/nmap/nselib/data/usernames.lst +usr/share/nmap/nselib/data/vhosts-default.lst +usr/share/nmap/nselib/data/vhosts-full.lst usr/share/nmap/nselib/data/wp-plugins.lst usr/share/nmap/nselib/datafiles.lua usr/share/nmap/nselib/dhcp.lua @@ -101,20 +123,29 @@ usr/share/nmap/nselib/dnsbl.lua usr/share/nmap/nselib/dnssd.lua usr/share/nmap/nselib/drda.lua usr/share/nmap/nselib/eap.lua +usr/share/nmap/nselib/eigrp.lua +usr/share/nmap/nselib/formulas.lua usr/share/nmap/nselib/ftp.lua usr/share/nmap/nselib/giop.lua +usr/share/nmap/nselib/gps.lua usr/share/nmap/nselib/http.lua usr/share/nmap/nselib/httpspider.lua usr/share/nmap/nselib/iax2.lua +usr/share/nmap/nselib/ike.lua usr/share/nmap/nselib/imap.lua usr/share/nmap/nselib/informix.lua usr/share/nmap/nselib/ipOps.lua +usr/share/nmap/nselib/ipp.lua usr/share/nmap/nselib/iscsi.lua +usr/share/nmap/nselib/isns.lua +usr/share/nmap/nselib/jdwp.lua usr/share/nmap/nselib/json.lua usr/share/nmap/nselib/ldap.lua +usr/share/nmap/nselib/lfs.luadoc usr/share/nmap/nselib/listop.lua usr/share/nmap/nselib/match.lua usr/share/nmap/nselib/membase.lua +usr/share/nmap/nselib/mobileme.lua usr/share/nmap/nselib/mongodb.lua usr/share/nmap/nselib/msrpc.lua usr/share/nmap/nselib/msrpcperformance.lua @@ -125,14 +156,19 @@ usr/share/nmap/nselib/natpmp.lua usr/share/nmap/nselib/ncp.lua usr/share/nmap/nselib/ndmp.lua usr/share/nmap/nselib/netbios.lua +usr/share/nmap/nselib/nmap.luadoc usr/share/nmap/nselib/nrpc.lua usr/share/nmap/nselib/nsedebug.lua usr/share/nmap/nselib/omp2.lua +usr/share/nmap/nselib/openssl.luadoc +usr/share/nmap/nselib/ospf.lua usr/share/nmap/nselib/packet.lua +usr/share/nmap/nselib/pcre.luadoc usr/share/nmap/nselib/pgsql.lua usr/share/nmap/nselib/pop3.lua usr/share/nmap/nselib/pppoe.lua usr/share/nmap/nselib/proxy.lua +usr/share/nmap/nselib/rdp.lua usr/share/nmap/nselib/redis.lua usr/share/nmap/nselib/rmi.lua usr/share/nmap/nselib/rpc.lua @@ -158,7 +194,10 @@ usr/share/nmap/nselib/stun.lua usr/share/nmap/nselib/tab.lua usr/share/nmap/nselib/target.lua usr/share/nmap/nselib/tftp.lua +usr/share/nmap/nselib/tls.lua usr/share/nmap/nselib/tns.lua +usr/share/nmap/nselib/unicode.lua +usr/share/nmap/nselib/unittest.lua usr/share/nmap/nselib/unpwdb.lua usr/share/nmap/nselib/upnp.lua usr/share/nmap/nselib/url.lua @@ -177,6 +216,12 @@ usr/share/nmap/scripts/afp-ls.nse usr/share/nmap/scripts/afp-path-vuln.nse usr/share/nmap/scripts/afp-serverinfo.nse usr/share/nmap/scripts/afp-showmount.nse +usr/share/nmap/scripts/ajp-auth.nse +usr/share/nmap/scripts/ajp-brute.nse +usr/share/nmap/scripts/ajp-headers.nse +usr/share/nmap/scripts/ajp-methods.nse +usr/share/nmap/scripts/ajp-request.nse +usr/share/nmap/scripts/allseeingeye-info.nse usr/share/nmap/scripts/amqp-info.nse usr/share/nmap/scripts/asn-query.nse usr/share/nmap/scripts/auth-owners.nse @@ -188,12 +233,17 @@ usr/share/nmap/scripts/bitcoin-getaddr.nse usr/share/nmap/scripts/bitcoin-info.nse usr/share/nmap/scripts/bitcoinrpc-info.nse usr/share/nmap/scripts/bittorrent-discovery.nse +usr/share/nmap/scripts/bjnp-discover.nse +usr/share/nmap/scripts/broadcast-ataoe-discover.nse usr/share/nmap/scripts/broadcast-avahi-dos.nse +usr/share/nmap/scripts/broadcast-bjnp-discover.nse usr/share/nmap/scripts/broadcast-db2-discover.nse usr/share/nmap/scripts/broadcast-dhcp-discover.nse usr/share/nmap/scripts/broadcast-dhcp6-discover.nse usr/share/nmap/scripts/broadcast-dns-service-discovery.nse usr/share/nmap/scripts/broadcast-dropbox-listener.nse +usr/share/nmap/scripts/broadcast-eigrp-discovery.nse +usr/share/nmap/scripts/broadcast-igmp-discovery.nse usr/share/nmap/scripts/broadcast-listener.nse usr/share/nmap/scripts/broadcast-ms-sql-discover.nse usr/share/nmap/scripts/broadcast-netbios-master-browser.nse @@ -201,17 +251,21 @@ usr/share/nmap/scripts/broadcast-networker-discover.nse usr/share/nmap/scripts/broadcast-novell-locate.nse usr/share/nmap/scripts/broadcast-pc-anywhere.nse usr/share/nmap/scripts/broadcast-pc-duo.nse +usr/share/nmap/scripts/broadcast-pim-discovery.nse usr/share/nmap/scripts/broadcast-ping.nse usr/share/nmap/scripts/broadcast-pppoe-discover.nse usr/share/nmap/scripts/broadcast-rip-discover.nse usr/share/nmap/scripts/broadcast-ripng-discover.nse usr/share/nmap/scripts/broadcast-sybase-asa-discover.nse +usr/share/nmap/scripts/broadcast-tellstick-discover.nse usr/share/nmap/scripts/broadcast-upnp-info.nse usr/share/nmap/scripts/broadcast-versant-locate.nse usr/share/nmap/scripts/broadcast-wake-on-lan.nse usr/share/nmap/scripts/broadcast-wpad-discover.nse usr/share/nmap/scripts/broadcast-wsdd-discover.nse usr/share/nmap/scripts/broadcast-xdmcp-discover.nse +usr/share/nmap/scripts/cassandra-brute.nse +usr/share/nmap/scripts/cassandra-info.nse usr/share/nmap/scripts/cccam-version.nse usr/share/nmap/scripts/citrix-brute-xml.nse usr/share/nmap/scripts/citrix-enum-apps-xml.nse @@ -221,6 +275,8 @@ usr/share/nmap/scripts/citrix-enum-servers.nse usr/share/nmap/scripts/couchdb-databases.nse usr/share/nmap/scripts/couchdb-stats.nse usr/share/nmap/scripts/creds-summary.nse +usr/share/nmap/scripts/cups-info.nse +usr/share/nmap/scripts/cups-queue-info.nse usr/share/nmap/scripts/cvs-brute-repository.nse usr/share/nmap/scripts/cvs-brute.nse usr/share/nmap/scripts/daap-get-library.nse @@ -228,12 +284,17 @@ usr/share/nmap/scripts/daytime.nse usr/share/nmap/scripts/db2-das-info.nse usr/share/nmap/scripts/db2-discover.nse usr/share/nmap/scripts/dhcp-discover.nse +usr/share/nmap/scripts/dict-info.nse +usr/share/nmap/scripts/distcc-cve2004-2687.nse usr/share/nmap/scripts/dns-blacklist.nse usr/share/nmap/scripts/dns-brute.nse usr/share/nmap/scripts/dns-cache-snoop.nse +usr/share/nmap/scripts/dns-check-zone.nse usr/share/nmap/scripts/dns-client-subnet-scan.nse usr/share/nmap/scripts/dns-fuzz.nse +usr/share/nmap/scripts/dns-ip6-arpa-scan.nse usr/share/nmap/scripts/dns-nsec-enum.nse +usr/share/nmap/scripts/dns-nsec3-enum.nse usr/share/nmap/scripts/dns-nsid.nse usr/share/nmap/scripts/dns-random-srcport.nse usr/share/nmap/scripts/dns-random-txid.nse @@ -252,8 +313,12 @@ usr/share/nmap/scripts/drda-info.nse usr/share/nmap/scripts/duplicates.nse usr/share/nmap/scripts/eap-info.nse usr/share/nmap/scripts/epmd-info.nse +usr/share/nmap/scripts/eppc-enum-processes.nse usr/share/nmap/scripts/finger.nse usr/share/nmap/scripts/firewalk.nse +usr/share/nmap/scripts/firewall-bypass.nse +usr/share/nmap/scripts/flume-master-info.nse +usr/share/nmap/scripts/freelancer-info.nse usr/share/nmap/scripts/ftp-anon.nse usr/share/nmap/scripts/ftp-bounce.nse usr/share/nmap/scripts/ftp-brute.nse @@ -263,7 +328,9 @@ usr/share/nmap/scripts/ftp-vsftpd-backdoor.nse usr/share/nmap/scripts/ftp-vuln-cve2010-4221.nse usr/share/nmap/scripts/ganglia-info.nse usr/share/nmap/scripts/giop-info.nse +usr/share/nmap/scripts/gkrellm-info.nse usr/share/nmap/scripts/gopher-ls.nse +usr/share/nmap/scripts/gpsd-info.nse usr/share/nmap/scripts/hadoop-datanode-info.nse usr/share/nmap/scripts/hadoop-jobtracker-info.nse usr/share/nmap/scripts/hadoop-namenode-info.nse @@ -273,6 +340,9 @@ usr/share/nmap/scripts/hbase-master-info.nse usr/share/nmap/scripts/hbase-region-info.nse usr/share/nmap/scripts/hddtemp-info.nse usr/share/nmap/scripts/hostmap-bfk.nse +usr/share/nmap/scripts/hostmap-ip2hosts.nse +usr/share/nmap/scripts/hostmap-robtex.nse +usr/share/nmap/scripts/http-adobe-coldfusion-apsa1301.nse usr/share/nmap/scripts/http-affiliate-id.nse usr/share/nmap/scripts/http-apache-negotiation.nse usr/share/nmap/scripts/http-auth-finder.nse @@ -284,19 +354,39 @@ usr/share/nmap/scripts/http-barracuda-dir-traversal.nse usr/share/nmap/scripts/http-brute.nse usr/share/nmap/scripts/http-cakephp-version.nse usr/share/nmap/scripts/http-chrono.nse +usr/share/nmap/scripts/http-coldfusion-subzero.nse +usr/share/nmap/scripts/http-comments-displayer.nse usr/share/nmap/scripts/http-config-backup.nse usr/share/nmap/scripts/http-cors.nse +usr/share/nmap/scripts/http-csrf.nse usr/share/nmap/scripts/http-date.nse usr/share/nmap/scripts/http-default-accounts.nse +usr/share/nmap/scripts/http-devframework.nse +usr/share/nmap/scripts/http-dlink-backdoor.nse +usr/share/nmap/scripts/http-dombased-xss.nse usr/share/nmap/scripts/http-domino-enum-passwords.nse +usr/share/nmap/scripts/http-drupal-enum-users.nse +usr/share/nmap/scripts/http-drupal-modules.nse usr/share/nmap/scripts/http-email-harvest.nse usr/share/nmap/scripts/http-enum.nse +usr/share/nmap/scripts/http-errors.nse +usr/share/nmap/scripts/http-exif-spider.nse usr/share/nmap/scripts/http-favicon.nse +usr/share/nmap/scripts/http-feed.nse +usr/share/nmap/scripts/http-fileupload-exploiter.nse usr/share/nmap/scripts/http-form-brute.nse +usr/share/nmap/scripts/http-form-fuzzer.nse +usr/share/nmap/scripts/http-frontpage-login.nse usr/share/nmap/scripts/http-generator.nse +usr/share/nmap/scripts/http-git.nse +usr/share/nmap/scripts/http-gitweb-projects-enum.nse usr/share/nmap/scripts/http-google-malware.nse usr/share/nmap/scripts/http-grep.nse usr/share/nmap/scripts/http-headers.nse +usr/share/nmap/scripts/http-huawei-hg5xx-vuln.nse +usr/share/nmap/scripts/http-icloud-findmyiphone.nse +usr/share/nmap/scripts/http-icloud-sendmsg.nse +usr/share/nmap/scripts/http-iis-short-name-brute.nse usr/share/nmap/scripts/http-iis-webdav-vuln.nse usr/share/nmap/scripts/http-joomla-brute.nse usr/share/nmap/scripts/http-litespeed-sourcecode-download.nse @@ -304,49 +394,81 @@ usr/share/nmap/scripts/http-majordomo2-dir-traversal.nse usr/share/nmap/scripts/http-malware-host.nse usr/share/nmap/scripts/http-method-tamper.nse usr/share/nmap/scripts/http-methods.nse +usr/share/nmap/scripts/http-mobileversion-checker.nse +usr/share/nmap/scripts/http-ntlm-info.nse usr/share/nmap/scripts/http-open-proxy.nse usr/share/nmap/scripts/http-open-redirect.nse usr/share/nmap/scripts/http-passwd.nse usr/share/nmap/scripts/http-php-version.nse +usr/share/nmap/scripts/http-phpmyadmin-dir-traversal.nse +usr/share/nmap/scripts/http-phpself-xss.nse usr/share/nmap/scripts/http-proxy-brute.nse usr/share/nmap/scripts/http-put.nse usr/share/nmap/scripts/http-qnap-nas-info.nse +usr/share/nmap/scripts/http-referer-checker.nse +usr/share/nmap/scripts/http-rfi-spider.nse usr/share/nmap/scripts/http-robots.txt.nse usr/share/nmap/scripts/http-robtex-reverse-ip.nse +usr/share/nmap/scripts/http-robtex-shared-ns.nse +usr/share/nmap/scripts/http-server-header.nse +usr/share/nmap/scripts/http-sitemap-generator.nse +usr/share/nmap/scripts/http-slowloris-check.nse +usr/share/nmap/scripts/http-slowloris.nse +usr/share/nmap/scripts/http-sql-injection.nse +usr/share/nmap/scripts/http-stored-xss.nse usr/share/nmap/scripts/http-title.nse +usr/share/nmap/scripts/http-tplink-dir-traversal.nse usr/share/nmap/scripts/http-trace.nse +usr/share/nmap/scripts/http-traceroute.nse usr/share/nmap/scripts/http-unsafe-output-escaping.nse +usr/share/nmap/scripts/http-useragent-tester.nse usr/share/nmap/scripts/http-userdir-enum.nse usr/share/nmap/scripts/http-vhosts.nse +usr/share/nmap/scripts/http-virustotal.nse +usr/share/nmap/scripts/http-vlcstreamer-ls.nse usr/share/nmap/scripts/http-vmware-path-vuln.nse usr/share/nmap/scripts/http-vuln-cve2009-3960.nse +usr/share/nmap/scripts/http-vuln-cve2010-0738.nse usr/share/nmap/scripts/http-vuln-cve2010-2861.nse usr/share/nmap/scripts/http-vuln-cve2011-3192.nse usr/share/nmap/scripts/http-vuln-cve2011-3368.nse usr/share/nmap/scripts/http-vuln-cve2012-1823.nse +usr/share/nmap/scripts/http-vuln-cve2013-0156.nse +usr/share/nmap/scripts/http-vuln-zimbra-lfi.nse usr/share/nmap/scripts/http-waf-detect.nse +usr/share/nmap/scripts/http-waf-fingerprint.nse usr/share/nmap/scripts/http-wordpress-brute.nse usr/share/nmap/scripts/http-wordpress-enum.nse usr/share/nmap/scripts/http-wordpress-plugins.nse +usr/share/nmap/scripts/http-xssed.nse usr/share/nmap/scripts/iax2-brute.nse usr/share/nmap/scripts/iax2-version.nse +usr/share/nmap/scripts/icap-info.nse +usr/share/nmap/scripts/ike-version.nse usr/share/nmap/scripts/imap-brute.nse usr/share/nmap/scripts/imap-capabilities.nse usr/share/nmap/scripts/informix-brute.nse usr/share/nmap/scripts/informix-query.nse usr/share/nmap/scripts/informix-tables.nse +usr/share/nmap/scripts/ip-forwarding.nse usr/share/nmap/scripts/ip-geolocation-geobytes.nse usr/share/nmap/scripts/ip-geolocation-geoplugin.nse usr/share/nmap/scripts/ip-geolocation-ipinfodb.nse usr/share/nmap/scripts/ip-geolocation-maxmind.nse usr/share/nmap/scripts/ipidseq.nse usr/share/nmap/scripts/ipv6-node-info.nse +usr/share/nmap/scripts/ipv6-ra-flood.nse usr/share/nmap/scripts/irc-botnet-channels.nse usr/share/nmap/scripts/irc-brute.nse usr/share/nmap/scripts/irc-info.nse +usr/share/nmap/scripts/irc-sasl-brute.nse usr/share/nmap/scripts/irc-unrealircd-backdoor.nse usr/share/nmap/scripts/iscsi-brute.nse usr/share/nmap/scripts/iscsi-info.nse +usr/share/nmap/scripts/isns-info.nse +usr/share/nmap/scripts/jdwp-exec.nse +usr/share/nmap/scripts/jdwp-info.nse +usr/share/nmap/scripts/jdwp-inject.nse usr/share/nmap/scripts/jdwp-version.nse usr/share/nmap/scripts/krb5-enum-users.nse usr/share/nmap/scripts/ldap-brute.nse @@ -354,18 +476,26 @@ usr/share/nmap/scripts/ldap-novell-getpass.nse usr/share/nmap/scripts/ldap-rootdse.nse usr/share/nmap/scripts/ldap-search.nse usr/share/nmap/scripts/lexmark-config.nse +usr/share/nmap/scripts/llmnr-resolve.nse usr/share/nmap/scripts/lltd-discovery.nse usr/share/nmap/scripts/maxdb-info.nse +usr/share/nmap/scripts/mcafee-epo-agent.nse usr/share/nmap/scripts/membase-brute.nse usr/share/nmap/scripts/membase-http-info.nse usr/share/nmap/scripts/memcached-info.nse +usr/share/nmap/scripts/metasploit-info.nse +usr/share/nmap/scripts/metasploit-msgrpc-brute.nse usr/share/nmap/scripts/metasploit-xmlrpc-brute.nse +usr/share/nmap/scripts/mmouse-brute.nse +usr/share/nmap/scripts/mmouse-exec.nse usr/share/nmap/scripts/modbus-discover.nse usr/share/nmap/scripts/mongodb-brute.nse usr/share/nmap/scripts/mongodb-databases.nse usr/share/nmap/scripts/mongodb-info.nse +usr/share/nmap/scripts/mrinfo.nse usr/share/nmap/scripts/ms-sql-brute.nse usr/share/nmap/scripts/ms-sql-config.nse +usr/share/nmap/scripts/ms-sql-dac.nse usr/share/nmap/scripts/ms-sql-dump-hashes.nse usr/share/nmap/scripts/ms-sql-empty-password.nse usr/share/nmap/scripts/ms-sql-hasdbaccess.nse @@ -373,13 +503,20 @@ usr/share/nmap/scripts/ms-sql-info.nse usr/share/nmap/scripts/ms-sql-query.nse usr/share/nmap/scripts/ms-sql-tables.nse usr/share/nmap/scripts/ms-sql-xp-cmdshell.nse +usr/share/nmap/scripts/msrpc-enum.nse +usr/share/nmap/scripts/mtrace.nse +usr/share/nmap/scripts/murmur-version.nse usr/share/nmap/scripts/mysql-audit.nse usr/share/nmap/scripts/mysql-brute.nse usr/share/nmap/scripts/mysql-databases.nse +usr/share/nmap/scripts/mysql-dump-hashes.nse usr/share/nmap/scripts/mysql-empty-password.nse +usr/share/nmap/scripts/mysql-enum.nse usr/share/nmap/scripts/mysql-info.nse +usr/share/nmap/scripts/mysql-query.nse usr/share/nmap/scripts/mysql-users.nse usr/share/nmap/scripts/mysql-variables.nse +usr/share/nmap/scripts/mysql-vuln-cve2012-2122.nse usr/share/nmap/scripts/nat-pmp-info.nse usr/share/nmap/scripts/nat-pmp-mapport.nse usr/share/nmap/scripts/nbstat.nse @@ -405,20 +542,25 @@ usr/share/nmap/scripts/omp2-brute.nse usr/share/nmap/scripts/omp2-enum-targets.nse usr/share/nmap/scripts/openlookup-info.nse usr/share/nmap/scripts/openvas-otp-brute.nse +usr/share/nmap/scripts/oracle-brute-stealth.nse usr/share/nmap/scripts/oracle-brute.nse usr/share/nmap/scripts/oracle-enum-users.nse usr/share/nmap/scripts/oracle-sid-brute.nse usr/share/nmap/scripts/ovs-agent-version.nse usr/share/nmap/scripts/p2p-conficker.nse usr/share/nmap/scripts/path-mtu.nse +usr/share/nmap/scripts/pcanywhere-brute.nse usr/share/nmap/scripts/pgsql-brute.nse usr/share/nmap/scripts/pjl-ready-message.nse usr/share/nmap/scripts/pop3-brute.nse usr/share/nmap/scripts/pop3-capabilities.nse usr/share/nmap/scripts/pptp-version.nse +usr/share/nmap/scripts/qconn-exec.nse usr/share/nmap/scripts/qscan.nse +usr/share/nmap/scripts/quake1-info.nse usr/share/nmap/scripts/quake3-info.nse usr/share/nmap/scripts/quake3-master-getservers.nse +usr/share/nmap/scripts/rdp-enum-encryption.nse usr/share/nmap/scripts/rdp-vuln-ms12-020.nse usr/share/nmap/scripts/realvnc-auth-bypass.nse usr/share/nmap/scripts/redis-brute.nse @@ -426,9 +568,12 @@ usr/share/nmap/scripts/redis-info.nse usr/share/nmap/scripts/resolveall.nse usr/share/nmap/scripts/reverse-index.nse usr/share/nmap/scripts/rexec-brute.nse +usr/share/nmap/scripts/rfc868-time.nse usr/share/nmap/scripts/riak-http-info.nse usr/share/nmap/scripts/rlogin-brute.nse usr/share/nmap/scripts/rmi-dumpregistry.nse +usr/share/nmap/scripts/rmi-vuln-classloader.nse +usr/share/nmap/scripts/rpc-grind.nse usr/share/nmap/scripts/rpcap-brute.nse usr/share/nmap/scripts/rpcap-info.nse usr/share/nmap/scripts/rpcinfo.nse @@ -440,7 +585,9 @@ usr/share/nmap/scripts/samba-vuln-cve-2012-1182.nse usr/share/nmap/scripts/script.db usr/share/nmap/scripts/servicetags.nse usr/share/nmap/scripts/sip-brute.nse +usr/share/nmap/scripts/sip-call-spoof.nse usr/share/nmap/scripts/sip-enum-users.nse +usr/share/nmap/scripts/sip-methods.nse usr/share/nmap/scripts/skypev2-version.nse usr/share/nmap/scripts/smb-brute.nse usr/share/nmap/scripts/smb-check-vulns.nse @@ -451,12 +598,16 @@ usr/share/nmap/scripts/smb-enum-sessions.nse usr/share/nmap/scripts/smb-enum-shares.nse usr/share/nmap/scripts/smb-enum-users.nse usr/share/nmap/scripts/smb-flood.nse +usr/share/nmap/scripts/smb-ls.nse usr/share/nmap/scripts/smb-mbenum.nse usr/share/nmap/scripts/smb-os-discovery.nse +usr/share/nmap/scripts/smb-print-text.nse usr/share/nmap/scripts/smb-psexec.nse usr/share/nmap/scripts/smb-security-mode.nse usr/share/nmap/scripts/smb-server-stats.nse usr/share/nmap/scripts/smb-system-info.nse +usr/share/nmap/scripts/smb-vuln-ms10-054.nse +usr/share/nmap/scripts/smb-vuln-ms10-061.nse usr/share/nmap/scripts/smbv2-enabled.nse usr/share/nmap/scripts/smtp-brute.nse usr/share/nmap/scripts/smtp-commands.nse @@ -468,6 +619,7 @@ usr/share/nmap/scripts/smtp-vuln-cve2011-1720.nse usr/share/nmap/scripts/smtp-vuln-cve2011-1764.nse usr/share/nmap/scripts/sniffer-detect.nse usr/share/nmap/scripts/snmp-brute.nse +usr/share/nmap/scripts/snmp-hh3c-logins.nse usr/share/nmap/scripts/snmp-interfaces.nse usr/share/nmap/scripts/snmp-ios-config.nse usr/share/nmap/scripts/snmp-netstat.nse @@ -480,15 +632,17 @@ usr/share/nmap/scripts/snmp-win32-users.nse usr/share/nmap/scripts/socks-auth-info.nse usr/share/nmap/scripts/socks-brute.nse usr/share/nmap/scripts/socks-open-proxy.nse -usr/share/nmap/scripts/sql-injection.nse usr/share/nmap/scripts/ssh-hostkey.nse usr/share/nmap/scripts/ssh2-enum-algos.nse usr/share/nmap/scripts/sshv1.nse usr/share/nmap/scripts/ssl-cert.nse +usr/share/nmap/scripts/ssl-date.nse usr/share/nmap/scripts/ssl-enum-ciphers.nse usr/share/nmap/scripts/ssl-google-cert-catalog.nse +usr/share/nmap/scripts/ssl-heartbleed.nse usr/share/nmap/scripts/ssl-known-key.nse usr/share/nmap/scripts/sslv2.nse +usr/share/nmap/scripts/sstp-discover.nse usr/share/nmap/scripts/stun-info.nse usr/share/nmap/scripts/stun-version.nse usr/share/nmap/scripts/stuxnet-detect.nse @@ -500,12 +654,17 @@ usr/share/nmap/scripts/targets-ipv6-multicast-mld.nse usr/share/nmap/scripts/targets-ipv6-multicast-slaac.nse usr/share/nmap/scripts/targets-sniffer.nse usr/share/nmap/scripts/targets-traceroute.nse +usr/share/nmap/scripts/teamspeak2-version.nse usr/share/nmap/scripts/telnet-brute.nse usr/share/nmap/scripts/telnet-encryption.nse usr/share/nmap/scripts/tftp-enum.nse +usr/share/nmap/scripts/tls-nextprotoneg.nse +usr/share/nmap/scripts/traceroute-geolocation.nse +usr/share/nmap/scripts/unittest.nse usr/share/nmap/scripts/unusual-port.nse usr/share/nmap/scripts/upnp-info.nse usr/share/nmap/scripts/url-snarf.nse +usr/share/nmap/scripts/ventrilo-info.nse usr/share/nmap/scripts/versant-info.nse usr/share/nmap/scripts/vmauthd-brute.nse usr/share/nmap/scripts/vnc-brute.nse @@ -513,7 +672,9 @@ usr/share/nmap/scripts/vnc-info.nse usr/share/nmap/scripts/voldemort-info.nse usr/share/nmap/scripts/vuze-dht-info.nse usr/share/nmap/scripts/wdb-version.nse -usr/share/nmap/scripts/whois.nse +usr/share/nmap/scripts/weblogic-t3-info.nse +usr/share/nmap/scripts/whois-domain.nse +usr/share/nmap/scripts/whois-ip.nse usr/share/nmap/scripts/wsdd-discover.nse usr/share/nmap/scripts/x11-access.nse usr/share/nmap/scripts/xdmcp-discover.nse diff --git a/config/rootfiles/packages/owncloud b/config/rootfiles/packages/owncloud index fed3b09c44..5ce778929d 100644 --- a/config/rootfiles/packages/owncloud +++ b/config/rootfiles/packages/owncloud @@ -858,80 +858,6 @@ srv/web/owncloud #srv/web/owncloud/3rdparty/fontawesome/font/fontawesome-webfont.svg #srv/web/owncloud/3rdparty/fontawesome/font/fontawesome-webfont.ttf #srv/web/owncloud/3rdparty/fontawesome/font/fontawesome-webfont.woff -#srv/web/owncloud/3rdparty/getid3 -#srv/web/owncloud/3rdparty/getid3/extension.cache.dbm.php -#srv/web/owncloud/3rdparty/getid3/extension.cache.mysql.php -#srv/web/owncloud/3rdparty/getid3/extension.cache.sqlite3.php -#srv/web/owncloud/3rdparty/getid3/getid3.lib.php -#srv/web/owncloud/3rdparty/getid3/getid3.php -#srv/web/owncloud/3rdparty/getid3/license.txt -#srv/web/owncloud/3rdparty/getid3/module.archive.gzip.php -#srv/web/owncloud/3rdparty/getid3/module.archive.rar.php -#srv/web/owncloud/3rdparty/getid3/module.archive.szip.php -#srv/web/owncloud/3rdparty/getid3/module.archive.tar.php -#srv/web/owncloud/3rdparty/getid3/module.archive.zip.php -#srv/web/owncloud/3rdparty/getid3/module.audio-video.asf.php -#srv/web/owncloud/3rdparty/getid3/module.audio-video.bink.php -#srv/web/owncloud/3rdparty/getid3/module.audio-video.flv.php -#srv/web/owncloud/3rdparty/getid3/module.audio-video.matroska.php -#srv/web/owncloud/3rdparty/getid3/module.audio-video.mpeg.php -#srv/web/owncloud/3rdparty/getid3/module.audio-video.nsv.php -#srv/web/owncloud/3rdparty/getid3/module.audio-video.quicktime.php -#srv/web/owncloud/3rdparty/getid3/module.audio-video.real.php -#srv/web/owncloud/3rdparty/getid3/module.audio-video.riff.php -#srv/web/owncloud/3rdparty/getid3/module.audio-video.swf.php -#srv/web/owncloud/3rdparty/getid3/module.audio-video.ts.php -#srv/web/owncloud/3rdparty/getid3/module.audio.aa.php -#srv/web/owncloud/3rdparty/getid3/module.audio.aac.php -#srv/web/owncloud/3rdparty/getid3/module.audio.ac3.php -#srv/web/owncloud/3rdparty/getid3/module.audio.au.php -#srv/web/owncloud/3rdparty/getid3/module.audio.avr.php -#srv/web/owncloud/3rdparty/getid3/module.audio.bonk.php -#srv/web/owncloud/3rdparty/getid3/module.audio.dss.php -#srv/web/owncloud/3rdparty/getid3/module.audio.dts.php -#srv/web/owncloud/3rdparty/getid3/module.audio.flac.php -#srv/web/owncloud/3rdparty/getid3/module.audio.la.php -#srv/web/owncloud/3rdparty/getid3/module.audio.lpac.php -#srv/web/owncloud/3rdparty/getid3/module.audio.midi.php -#srv/web/owncloud/3rdparty/getid3/module.audio.mod.php -#srv/web/owncloud/3rdparty/getid3/module.audio.monkey.php -#srv/web/owncloud/3rdparty/getid3/module.audio.mp3.php -#srv/web/owncloud/3rdparty/getid3/module.audio.mpc.php -#srv/web/owncloud/3rdparty/getid3/module.audio.ogg.php -#srv/web/owncloud/3rdparty/getid3/module.audio.optimfrog.php -#srv/web/owncloud/3rdparty/getid3/module.audio.rkau.php -#srv/web/owncloud/3rdparty/getid3/module.audio.shorten.php -#srv/web/owncloud/3rdparty/getid3/module.audio.tta.php -#srv/web/owncloud/3rdparty/getid3/module.audio.voc.php -#srv/web/owncloud/3rdparty/getid3/module.audio.vqf.php -#srv/web/owncloud/3rdparty/getid3/module.audio.wavpack.php -#srv/web/owncloud/3rdparty/getid3/module.graphic.bmp.php -#srv/web/owncloud/3rdparty/getid3/module.graphic.efax.php -#srv/web/owncloud/3rdparty/getid3/module.graphic.gif.php -#srv/web/owncloud/3rdparty/getid3/module.graphic.jpg.php -#srv/web/owncloud/3rdparty/getid3/module.graphic.pcd.php -#srv/web/owncloud/3rdparty/getid3/module.graphic.png.php -#srv/web/owncloud/3rdparty/getid3/module.graphic.svg.php -#srv/web/owncloud/3rdparty/getid3/module.graphic.tiff.php -#srv/web/owncloud/3rdparty/getid3/module.misc.cue.php -#srv/web/owncloud/3rdparty/getid3/module.misc.exe.php -#srv/web/owncloud/3rdparty/getid3/module.misc.iso.php -#srv/web/owncloud/3rdparty/getid3/module.misc.msoffice.php -#srv/web/owncloud/3rdparty/getid3/module.misc.par2.php -#srv/web/owncloud/3rdparty/getid3/module.misc.pdf.php -#srv/web/owncloud/3rdparty/getid3/module.tag.apetag.php -#srv/web/owncloud/3rdparty/getid3/module.tag.id3v1.php -#srv/web/owncloud/3rdparty/getid3/module.tag.id3v2.php -#srv/web/owncloud/3rdparty/getid3/module.tag.lyrics3.php -#srv/web/owncloud/3rdparty/getid3/module.tag.xmp.php -#srv/web/owncloud/3rdparty/getid3/write.apetag.php -#srv/web/owncloud/3rdparty/getid3/write.id3v1.php -#srv/web/owncloud/3rdparty/getid3/write.id3v2.php -#srv/web/owncloud/3rdparty/getid3/write.lyrics3.php -#srv/web/owncloud/3rdparty/getid3/write.metaflac.php -#srv/web/owncloud/3rdparty/getid3/write.php -#srv/web/owncloud/3rdparty/getid3/write.real.php -#srv/web/owncloud/3rdparty/getid3/write.vorbiscomment.php #srv/web/owncloud/3rdparty/guzzle #srv/web/owncloud/3rdparty/guzzle/common #srv/web/owncloud/3rdparty/guzzle/common/Guzzle @@ -1041,26 +967,97 @@ srv/web/owncloud #srv/web/owncloud/3rdparty/guzzle/stream/Guzzle/Stream/StreamInterface.php #srv/web/owncloud/3rdparty/guzzle/stream/Guzzle/Stream/StreamRequestFactoryInterface.php #srv/web/owncloud/3rdparty/guzzle/stream/Guzzle/Stream/composer.json -#srv/web/owncloud/3rdparty/isoft -#srv/web/owncloud/3rdparty/isoft/mssql-bundle -#srv/web/owncloud/3rdparty/isoft/mssql-bundle/Realestate -#srv/web/owncloud/3rdparty/isoft/mssql-bundle/Realestate/MssqlBundle -#srv/web/owncloud/3rdparty/isoft/mssql-bundle/Realestate/MssqlBundle/Driver -#srv/web/owncloud/3rdparty/isoft/mssql-bundle/Realestate/MssqlBundle/Driver/PDODblib -#srv/web/owncloud/3rdparty/isoft/mssql-bundle/Realestate/MssqlBundle/Driver/PDODblib/Connection.php -#srv/web/owncloud/3rdparty/isoft/mssql-bundle/Realestate/MssqlBundle/Driver/PDODblib/Driver.php -#srv/web/owncloud/3rdparty/isoft/mssql-bundle/Realestate/MssqlBundle/Platforms -#srv/web/owncloud/3rdparty/isoft/mssql-bundle/Realestate/MssqlBundle/Platforms/DblibPlatform.php -#srv/web/owncloud/3rdparty/isoft/mssql-bundle/Realestate/MssqlBundle/Readme.md -#srv/web/owncloud/3rdparty/isoft/mssql-bundle/Realestate/MssqlBundle/RealestateMssqlBundle.php -#srv/web/owncloud/3rdparty/isoft/mssql-bundle/Realestate/MssqlBundle/Schema -#srv/web/owncloud/3rdparty/isoft/mssql-bundle/Realestate/MssqlBundle/Schema/DblibSchemaManager.php -#srv/web/owncloud/3rdparty/isoft/mssql-bundle/Realestate/MssqlBundle/Types -#srv/web/owncloud/3rdparty/isoft/mssql-bundle/Realestate/MssqlBundle/Types/DateTimeType.php -#srv/web/owncloud/3rdparty/isoft/mssql-bundle/Realestate/MssqlBundle/Types/DateType.php -#srv/web/owncloud/3rdparty/isoft/mssql-bundle/Realestate/MssqlBundle/Types/RealestateDateTime.php -#srv/web/owncloud/3rdparty/isoft/mssql-bundle/Realestate/MssqlBundle/Types/UniqueidentifierType.php -#srv/web/owncloud/3rdparty/isoft/mssql-bundle/Realestate/MssqlBundle/composer.json +#srv/web/owncloud/3rdparty/james-heinrich +#srv/web/owncloud/3rdparty/james-heinrich/getid3 +#srv/web/owncloud/3rdparty/james-heinrich/getid3/.gitattributes +#srv/web/owncloud/3rdparty/james-heinrich/getid3/README.md +#srv/web/owncloud/3rdparty/james-heinrich/getid3/changelog.txt +#srv/web/owncloud/3rdparty/james-heinrich/getid3/composer.json +#srv/web/owncloud/3rdparty/james-heinrich/getid3/dependencies.txt +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3 +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/extension.cache.dbm.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/extension.cache.mysql.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/extension.cache.sqlite3.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/getid3.lib.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/getid3.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.archive.gzip.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.archive.rar.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.archive.szip.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.archive.tar.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.archive.zip.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio-video.asf.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio-video.bink.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio-video.flv.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio-video.matroska.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio-video.mpeg.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio-video.nsv.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio-video.quicktime.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio-video.real.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio-video.riff.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio-video.swf.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio-video.ts.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.aa.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.aac.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.ac3.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.amr.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.au.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.avr.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.bonk.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.dss.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.dts.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.flac.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.la.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.lpac.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.midi.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.mod.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.monkey.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.mp3.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.mpc.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.ogg.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.optimfrog.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.rkau.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.shorten.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.tta.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.voc.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.vqf.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.audio.wavpack.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.graphic.bmp.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.graphic.efax.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.graphic.gif.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.graphic.jpg.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.graphic.pcd.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.graphic.png.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.graphic.svg.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.graphic.tiff.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.misc.cue.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.misc.exe.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.misc.iso.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.misc.msoffice.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.misc.par2.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.misc.pdf.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.tag.apetag.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.tag.id3v1.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.tag.id3v2.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.tag.lyrics3.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/module.tag.xmp.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/write.apetag.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/write.id3v1.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/write.id3v2.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/write.lyrics3.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/write.metaflac.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/write.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/write.real.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/getid3/write.vorbiscomment.php +#srv/web/owncloud/3rdparty/james-heinrich/getid3/license.txt +#srv/web/owncloud/3rdparty/james-heinrich/getid3/licenses +#srv/web/owncloud/3rdparty/james-heinrich/getid3/licenses/licence.gpl-10.txt +#srv/web/owncloud/3rdparty/james-heinrich/getid3/licenses/licence.gpl-20.txt +#srv/web/owncloud/3rdparty/james-heinrich/getid3/licenses/licence.gpl-30.txt +#srv/web/owncloud/3rdparty/james-heinrich/getid3/licenses/licence.lgpl-30.txt +#srv/web/owncloud/3rdparty/james-heinrich/getid3/licenses/licence.mpl-20.txt +#srv/web/owncloud/3rdparty/james-heinrich/getid3/licenses/license.commercial.txt +#srv/web/owncloud/3rdparty/james-heinrich/getid3/readme.txt +#srv/web/owncloud/3rdparty/james-heinrich/getid3/structure.txt #srv/web/owncloud/3rdparty/js #srv/web/owncloud/3rdparty/js/chosen #srv/web/owncloud/3rdparty/js/chosen/LICENSE.md @@ -1419,9 +1416,6 @@ srv/web/owncloud #srv/web/owncloud/3rdparty/patches.txt #srv/web/owncloud/3rdparty/phpass #srv/web/owncloud/3rdparty/phpass/PasswordHash.php -#srv/web/owncloud/3rdparty/phpass/c -#srv/web/owncloud/3rdparty/phpass/c/Makefile -#srv/web/owncloud/3rdparty/phpass/c/crypt_private.c #srv/web/owncloud/3rdparty/phpass/test.php #srv/web/owncloud/3rdparty/phpmailer #srv/web/owncloud/3rdparty/phpmailer/phpmailer @@ -3206,17 +3200,16 @@ srv/web/owncloud #srv/web/owncloud/apps/activity/l10n/hy.php #srv/web/owncloud/apps/activity/l10n/ia.php #srv/web/owncloud/apps/activity/l10n/id.php +#srv/web/owncloud/apps/activity/l10n/io.php #srv/web/owncloud/apps/activity/l10n/is.php #srv/web/owncloud/apps/activity/l10n/it.php #srv/web/owncloud/apps/activity/l10n/ja.php -#srv/web/owncloud/apps/activity/l10n/ja_JP.php #srv/web/owncloud/apps/activity/l10n/jv.php #srv/web/owncloud/apps/activity/l10n/ka_GE.php #srv/web/owncloud/apps/activity/l10n/km.php #srv/web/owncloud/apps/activity/l10n/kn.php #srv/web/owncloud/apps/activity/l10n/ko.php #srv/web/owncloud/apps/activity/l10n/ku_IQ.php -#srv/web/owncloud/apps/activity/l10n/l10n.pl #srv/web/owncloud/apps/activity/l10n/lb.php #srv/web/owncloud/apps/activity/l10n/lt_LT.php #srv/web/owncloud/apps/activity/l10n/lv.php @@ -3300,6 +3293,7 @@ srv/web/owncloud #srv/web/owncloud/apps/activity/tests/hooksdeleteusertest.php #srv/web/owncloud/apps/activity/tests/mailqueuehandlertest.php #srv/web/owncloud/apps/activity/tests/navigationtest.php +#srv/web/owncloud/apps/activity/tests/parameterhelpertest.php #srv/web/owncloud/apps/activity/tests/phpunit.xml #srv/web/owncloud/apps/activity/tests/usersettingstest.php #srv/web/owncloud/apps/admin_dependencies_chk @@ -3416,330 +3410,212 @@ srv/web/owncloud #srv/web/owncloud/apps/bookmarks/js/full_tags.php #srv/web/owncloud/apps/bookmarks/js/settings.js #srv/web/owncloud/apps/bookmarks/l10n -#srv/web/owncloud/apps/bookmarks/l10n/ach -#srv/web/owncloud/apps/bookmarks/l10n/ach/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ady -#srv/web/owncloud/apps/bookmarks/l10n/ady/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/af -#srv/web/owncloud/apps/bookmarks/l10n/af/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/af_ZA #srv/web/owncloud/apps/bookmarks/l10n/af_ZA.php -#srv/web/owncloud/apps/bookmarks/l10n/af_ZA/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ak -#srv/web/owncloud/apps/bookmarks/l10n/ak/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/am_ET -#srv/web/owncloud/apps/bookmarks/l10n/am_ET/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ar +#srv/web/owncloud/apps/bookmarks/l10n/ar.js +#srv/web/owncloud/apps/bookmarks/l10n/ar.json #srv/web/owncloud/apps/bookmarks/l10n/ar.php -#srv/web/owncloud/apps/bookmarks/l10n/ar/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ast +#srv/web/owncloud/apps/bookmarks/l10n/ast.js +#srv/web/owncloud/apps/bookmarks/l10n/ast.json #srv/web/owncloud/apps/bookmarks/l10n/ast.php -#srv/web/owncloud/apps/bookmarks/l10n/ast/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/az -#srv/web/owncloud/apps/bookmarks/l10n/az/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/be +#srv/web/owncloud/apps/bookmarks/l10n/az.js +#srv/web/owncloud/apps/bookmarks/l10n/az.json +#srv/web/owncloud/apps/bookmarks/l10n/az.php #srv/web/owncloud/apps/bookmarks/l10n/be.php -#srv/web/owncloud/apps/bookmarks/l10n/be/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/bg_BG +#srv/web/owncloud/apps/bookmarks/l10n/bg_BG.js +#srv/web/owncloud/apps/bookmarks/l10n/bg_BG.json #srv/web/owncloud/apps/bookmarks/l10n/bg_BG.php -#srv/web/owncloud/apps/bookmarks/l10n/bg_BG/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/bn_BD +#srv/web/owncloud/apps/bookmarks/l10n/bn_BD.js +#srv/web/owncloud/apps/bookmarks/l10n/bn_BD.json #srv/web/owncloud/apps/bookmarks/l10n/bn_BD.php -#srv/web/owncloud/apps/bookmarks/l10n/bn_BD/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/bn_IN -#srv/web/owncloud/apps/bookmarks/l10n/bn_IN/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/bs +#srv/web/owncloud/apps/bookmarks/l10n/bn_IN.js +#srv/web/owncloud/apps/bookmarks/l10n/bn_IN.json +#srv/web/owncloud/apps/bookmarks/l10n/bn_IN.php #srv/web/owncloud/apps/bookmarks/l10n/bs.php -#srv/web/owncloud/apps/bookmarks/l10n/bs/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ca +#srv/web/owncloud/apps/bookmarks/l10n/ca.js +#srv/web/owncloud/apps/bookmarks/l10n/ca.json #srv/web/owncloud/apps/bookmarks/l10n/ca.php -#srv/web/owncloud/apps/bookmarks/l10n/ca/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ca@valencia -#srv/web/owncloud/apps/bookmarks/l10n/ca@valencia/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/cs_CZ +#srv/web/owncloud/apps/bookmarks/l10n/cs_CZ.js +#srv/web/owncloud/apps/bookmarks/l10n/cs_CZ.json #srv/web/owncloud/apps/bookmarks/l10n/cs_CZ.php -#srv/web/owncloud/apps/bookmarks/l10n/cs_CZ/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/cy_GB +#srv/web/owncloud/apps/bookmarks/l10n/cy_GB.js +#srv/web/owncloud/apps/bookmarks/l10n/cy_GB.json #srv/web/owncloud/apps/bookmarks/l10n/cy_GB.php -#srv/web/owncloud/apps/bookmarks/l10n/cy_GB/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/da +#srv/web/owncloud/apps/bookmarks/l10n/da.js +#srv/web/owncloud/apps/bookmarks/l10n/da.json #srv/web/owncloud/apps/bookmarks/l10n/da.php -#srv/web/owncloud/apps/bookmarks/l10n/da/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/de +#srv/web/owncloud/apps/bookmarks/l10n/de.js +#srv/web/owncloud/apps/bookmarks/l10n/de.json #srv/web/owncloud/apps/bookmarks/l10n/de.php -#srv/web/owncloud/apps/bookmarks/l10n/de/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/de_AT #srv/web/owncloud/apps/bookmarks/l10n/de_AT.php -#srv/web/owncloud/apps/bookmarks/l10n/de_AT/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/de_CH +#srv/web/owncloud/apps/bookmarks/l10n/de_CH.js +#srv/web/owncloud/apps/bookmarks/l10n/de_CH.json #srv/web/owncloud/apps/bookmarks/l10n/de_CH.php -#srv/web/owncloud/apps/bookmarks/l10n/de_CH/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/de_DE +#srv/web/owncloud/apps/bookmarks/l10n/de_DE.js +#srv/web/owncloud/apps/bookmarks/l10n/de_DE.json #srv/web/owncloud/apps/bookmarks/l10n/de_DE.php -#srv/web/owncloud/apps/bookmarks/l10n/de_DE/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/el +#srv/web/owncloud/apps/bookmarks/l10n/el.js +#srv/web/owncloud/apps/bookmarks/l10n/el.json #srv/web/owncloud/apps/bookmarks/l10n/el.php -#srv/web/owncloud/apps/bookmarks/l10n/el/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/en@pirate -#srv/web/owncloud/apps/bookmarks/l10n/en@pirate/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/en_GB +#srv/web/owncloud/apps/bookmarks/l10n/en_GB.js +#srv/web/owncloud/apps/bookmarks/l10n/en_GB.json #srv/web/owncloud/apps/bookmarks/l10n/en_GB.php -#srv/web/owncloud/apps/bookmarks/l10n/en_GB/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/en_NZ -#srv/web/owncloud/apps/bookmarks/l10n/en_NZ/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/eo +#srv/web/owncloud/apps/bookmarks/l10n/eo.js +#srv/web/owncloud/apps/bookmarks/l10n/eo.json #srv/web/owncloud/apps/bookmarks/l10n/eo.php -#srv/web/owncloud/apps/bookmarks/l10n/eo/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/es +#srv/web/owncloud/apps/bookmarks/l10n/es.js +#srv/web/owncloud/apps/bookmarks/l10n/es.json #srv/web/owncloud/apps/bookmarks/l10n/es.php -#srv/web/owncloud/apps/bookmarks/l10n/es/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/es_AR +#srv/web/owncloud/apps/bookmarks/l10n/es_AR.js +#srv/web/owncloud/apps/bookmarks/l10n/es_AR.json #srv/web/owncloud/apps/bookmarks/l10n/es_AR.php -#srv/web/owncloud/apps/bookmarks/l10n/es_AR/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/es_BO -#srv/web/owncloud/apps/bookmarks/l10n/es_BO/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/es_CL #srv/web/owncloud/apps/bookmarks/l10n/es_CL.php -#srv/web/owncloud/apps/bookmarks/l10n/es_CL/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/es_CO -#srv/web/owncloud/apps/bookmarks/l10n/es_CO/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/es_CR -#srv/web/owncloud/apps/bookmarks/l10n/es_CR/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/es_EC -#srv/web/owncloud/apps/bookmarks/l10n/es_EC/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/es_MX +#srv/web/owncloud/apps/bookmarks/l10n/es_MX.js +#srv/web/owncloud/apps/bookmarks/l10n/es_MX.json #srv/web/owncloud/apps/bookmarks/l10n/es_MX.php -#srv/web/owncloud/apps/bookmarks/l10n/es_MX/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/es_PE -#srv/web/owncloud/apps/bookmarks/l10n/es_PE/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/es_PY -#srv/web/owncloud/apps/bookmarks/l10n/es_PY/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/es_US -#srv/web/owncloud/apps/bookmarks/l10n/es_US/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/es_UY -#srv/web/owncloud/apps/bookmarks/l10n/es_UY/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/et_EE +#srv/web/owncloud/apps/bookmarks/l10n/et_EE.js +#srv/web/owncloud/apps/bookmarks/l10n/et_EE.json #srv/web/owncloud/apps/bookmarks/l10n/et_EE.php -#srv/web/owncloud/apps/bookmarks/l10n/et_EE/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/eu +#srv/web/owncloud/apps/bookmarks/l10n/eu.js +#srv/web/owncloud/apps/bookmarks/l10n/eu.json #srv/web/owncloud/apps/bookmarks/l10n/eu.php -#srv/web/owncloud/apps/bookmarks/l10n/eu/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/eu_ES #srv/web/owncloud/apps/bookmarks/l10n/eu_ES.php -#srv/web/owncloud/apps/bookmarks/l10n/eu_ES/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/fa +#srv/web/owncloud/apps/bookmarks/l10n/fa.js +#srv/web/owncloud/apps/bookmarks/l10n/fa.json #srv/web/owncloud/apps/bookmarks/l10n/fa.php -#srv/web/owncloud/apps/bookmarks/l10n/fa/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/fi #srv/web/owncloud/apps/bookmarks/l10n/fi.php -#srv/web/owncloud/apps/bookmarks/l10n/fi/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/fi_FI +#srv/web/owncloud/apps/bookmarks/l10n/fi_FI.js +#srv/web/owncloud/apps/bookmarks/l10n/fi_FI.json #srv/web/owncloud/apps/bookmarks/l10n/fi_FI.php -#srv/web/owncloud/apps/bookmarks/l10n/fi_FI/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/fr +#srv/web/owncloud/apps/bookmarks/l10n/fr.js +#srv/web/owncloud/apps/bookmarks/l10n/fr.json #srv/web/owncloud/apps/bookmarks/l10n/fr.php -#srv/web/owncloud/apps/bookmarks/l10n/fr/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/fr_CA -#srv/web/owncloud/apps/bookmarks/l10n/fr_CA/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/gl +#srv/web/owncloud/apps/bookmarks/l10n/gl.js +#srv/web/owncloud/apps/bookmarks/l10n/gl.json #srv/web/owncloud/apps/bookmarks/l10n/gl.php -#srv/web/owncloud/apps/bookmarks/l10n/gl/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/he +#srv/web/owncloud/apps/bookmarks/l10n/he.js +#srv/web/owncloud/apps/bookmarks/l10n/he.json #srv/web/owncloud/apps/bookmarks/l10n/he.php -#srv/web/owncloud/apps/bookmarks/l10n/he/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/hi #srv/web/owncloud/apps/bookmarks/l10n/hi.php -#srv/web/owncloud/apps/bookmarks/l10n/hi/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/hi_IN -#srv/web/owncloud/apps/bookmarks/l10n/hi_IN/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/hr #srv/web/owncloud/apps/bookmarks/l10n/hr.php -#srv/web/owncloud/apps/bookmarks/l10n/hr/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/hu_HU +#srv/web/owncloud/apps/bookmarks/l10n/hu_HU.js +#srv/web/owncloud/apps/bookmarks/l10n/hu_HU.json #srv/web/owncloud/apps/bookmarks/l10n/hu_HU.php -#srv/web/owncloud/apps/bookmarks/l10n/hu_HU/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/hy #srv/web/owncloud/apps/bookmarks/l10n/hy.php -#srv/web/owncloud/apps/bookmarks/l10n/hy/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ia +#srv/web/owncloud/apps/bookmarks/l10n/ia.js +#srv/web/owncloud/apps/bookmarks/l10n/ia.json #srv/web/owncloud/apps/bookmarks/l10n/ia.php -#srv/web/owncloud/apps/bookmarks/l10n/ia/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/id +#srv/web/owncloud/apps/bookmarks/l10n/id.js +#srv/web/owncloud/apps/bookmarks/l10n/id.json #srv/web/owncloud/apps/bookmarks/l10n/id.php -#srv/web/owncloud/apps/bookmarks/l10n/id/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/is +#srv/web/owncloud/apps/bookmarks/l10n/is.js +#srv/web/owncloud/apps/bookmarks/l10n/is.json #srv/web/owncloud/apps/bookmarks/l10n/is.php -#srv/web/owncloud/apps/bookmarks/l10n/is/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/it +#srv/web/owncloud/apps/bookmarks/l10n/it.js +#srv/web/owncloud/apps/bookmarks/l10n/it.json #srv/web/owncloud/apps/bookmarks/l10n/it.php -#srv/web/owncloud/apps/bookmarks/l10n/it/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ja +#srv/web/owncloud/apps/bookmarks/l10n/ja.js +#srv/web/owncloud/apps/bookmarks/l10n/ja.json #srv/web/owncloud/apps/bookmarks/l10n/ja.php -#srv/web/owncloud/apps/bookmarks/l10n/ja/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ja_JP.php -#srv/web/owncloud/apps/bookmarks/l10n/jv #srv/web/owncloud/apps/bookmarks/l10n/jv.php -#srv/web/owncloud/apps/bookmarks/l10n/jv/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ka -#srv/web/owncloud/apps/bookmarks/l10n/ka/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ka_GE +#srv/web/owncloud/apps/bookmarks/l10n/ka_GE.js +#srv/web/owncloud/apps/bookmarks/l10n/ka_GE.json #srv/web/owncloud/apps/bookmarks/l10n/ka_GE.php -#srv/web/owncloud/apps/bookmarks/l10n/ka_GE/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/km +#srv/web/owncloud/apps/bookmarks/l10n/km.js +#srv/web/owncloud/apps/bookmarks/l10n/km.json #srv/web/owncloud/apps/bookmarks/l10n/km.php -#srv/web/owncloud/apps/bookmarks/l10n/km/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/kn -#srv/web/owncloud/apps/bookmarks/l10n/kn/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ko +#srv/web/owncloud/apps/bookmarks/l10n/ko.js +#srv/web/owncloud/apps/bookmarks/l10n/ko.json #srv/web/owncloud/apps/bookmarks/l10n/ko.php -#srv/web/owncloud/apps/bookmarks/l10n/ko/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ku_IQ #srv/web/owncloud/apps/bookmarks/l10n/ku_IQ.php -#srv/web/owncloud/apps/bookmarks/l10n/ku_IQ/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/l10n.pl -#srv/web/owncloud/apps/bookmarks/l10n/lb +#srv/web/owncloud/apps/bookmarks/l10n/lb.js +#srv/web/owncloud/apps/bookmarks/l10n/lb.json #srv/web/owncloud/apps/bookmarks/l10n/lb.php -#srv/web/owncloud/apps/bookmarks/l10n/lb/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/lt_LT +#srv/web/owncloud/apps/bookmarks/l10n/lt_LT.js +#srv/web/owncloud/apps/bookmarks/l10n/lt_LT.json #srv/web/owncloud/apps/bookmarks/l10n/lt_LT.php -#srv/web/owncloud/apps/bookmarks/l10n/lt_LT/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/lv +#srv/web/owncloud/apps/bookmarks/l10n/lv.js +#srv/web/owncloud/apps/bookmarks/l10n/lv.json #srv/web/owncloud/apps/bookmarks/l10n/lv.php -#srv/web/owncloud/apps/bookmarks/l10n/lv/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/mk +#srv/web/owncloud/apps/bookmarks/l10n/mk.js +#srv/web/owncloud/apps/bookmarks/l10n/mk.json #srv/web/owncloud/apps/bookmarks/l10n/mk.php -#srv/web/owncloud/apps/bookmarks/l10n/mk/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ml -#srv/web/owncloud/apps/bookmarks/l10n/ml/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ml_IN -#srv/web/owncloud/apps/bookmarks/l10n/ml_IN/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/mn -#srv/web/owncloud/apps/bookmarks/l10n/mn/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ms_MY #srv/web/owncloud/apps/bookmarks/l10n/ms_MY.php -#srv/web/owncloud/apps/bookmarks/l10n/ms_MY/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/my_MM #srv/web/owncloud/apps/bookmarks/l10n/my_MM.php -#srv/web/owncloud/apps/bookmarks/l10n/my_MM/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/nb_NO +#srv/web/owncloud/apps/bookmarks/l10n/nb_NO.js +#srv/web/owncloud/apps/bookmarks/l10n/nb_NO.json #srv/web/owncloud/apps/bookmarks/l10n/nb_NO.php -#srv/web/owncloud/apps/bookmarks/l10n/nb_NO/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/nds -#srv/web/owncloud/apps/bookmarks/l10n/nds/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ne -#srv/web/owncloud/apps/bookmarks/l10n/ne/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/nl +#srv/web/owncloud/apps/bookmarks/l10n/nl.js +#srv/web/owncloud/apps/bookmarks/l10n/nl.json #srv/web/owncloud/apps/bookmarks/l10n/nl.php -#srv/web/owncloud/apps/bookmarks/l10n/nl/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/nn_NO +#srv/web/owncloud/apps/bookmarks/l10n/nn_NO.js +#srv/web/owncloud/apps/bookmarks/l10n/nn_NO.json #srv/web/owncloud/apps/bookmarks/l10n/nn_NO.php -#srv/web/owncloud/apps/bookmarks/l10n/nn_NO/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/nqo -#srv/web/owncloud/apps/bookmarks/l10n/nqo/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/oc #srv/web/owncloud/apps/bookmarks/l10n/oc.php -#srv/web/owncloud/apps/bookmarks/l10n/oc/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/or_IN -#srv/web/owncloud/apps/bookmarks/l10n/or_IN/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/pa #srv/web/owncloud/apps/bookmarks/l10n/pa.php -#srv/web/owncloud/apps/bookmarks/l10n/pa/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/pl +#srv/web/owncloud/apps/bookmarks/l10n/pl.js +#srv/web/owncloud/apps/bookmarks/l10n/pl.json #srv/web/owncloud/apps/bookmarks/l10n/pl.php -#srv/web/owncloud/apps/bookmarks/l10n/pl/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/pl_PL #srv/web/owncloud/apps/bookmarks/l10n/pl_PL.php -#srv/web/owncloud/apps/bookmarks/l10n/pl_PL/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/pt_BR +#srv/web/owncloud/apps/bookmarks/l10n/pt_BR.js +#srv/web/owncloud/apps/bookmarks/l10n/pt_BR.json #srv/web/owncloud/apps/bookmarks/l10n/pt_BR.php -#srv/web/owncloud/apps/bookmarks/l10n/pt_BR/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/pt_PT +#srv/web/owncloud/apps/bookmarks/l10n/pt_PT.js +#srv/web/owncloud/apps/bookmarks/l10n/pt_PT.json #srv/web/owncloud/apps/bookmarks/l10n/pt_PT.php -#srv/web/owncloud/apps/bookmarks/l10n/pt_PT/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ro +#srv/web/owncloud/apps/bookmarks/l10n/ro.js +#srv/web/owncloud/apps/bookmarks/l10n/ro.json #srv/web/owncloud/apps/bookmarks/l10n/ro.php -#srv/web/owncloud/apps/bookmarks/l10n/ro/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ru +#srv/web/owncloud/apps/bookmarks/l10n/ru.js +#srv/web/owncloud/apps/bookmarks/l10n/ru.json #srv/web/owncloud/apps/bookmarks/l10n/ru.php -#srv/web/owncloud/apps/bookmarks/l10n/ru/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ru_RU #srv/web/owncloud/apps/bookmarks/l10n/ru_RU.php -#srv/web/owncloud/apps/bookmarks/l10n/ru_RU/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/si_LK +#srv/web/owncloud/apps/bookmarks/l10n/si_LK.js +#srv/web/owncloud/apps/bookmarks/l10n/si_LK.json #srv/web/owncloud/apps/bookmarks/l10n/si_LK.php -#srv/web/owncloud/apps/bookmarks/l10n/si_LK/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/sk #srv/web/owncloud/apps/bookmarks/l10n/sk.php -#srv/web/owncloud/apps/bookmarks/l10n/sk/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/sk_SK +#srv/web/owncloud/apps/bookmarks/l10n/sk_SK.js +#srv/web/owncloud/apps/bookmarks/l10n/sk_SK.json #srv/web/owncloud/apps/bookmarks/l10n/sk_SK.php -#srv/web/owncloud/apps/bookmarks/l10n/sk_SK/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/sl +#srv/web/owncloud/apps/bookmarks/l10n/sl.js +#srv/web/owncloud/apps/bookmarks/l10n/sl.json #srv/web/owncloud/apps/bookmarks/l10n/sl.php -#srv/web/owncloud/apps/bookmarks/l10n/sl/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/sq #srv/web/owncloud/apps/bookmarks/l10n/sq.php -#srv/web/owncloud/apps/bookmarks/l10n/sq/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/sr +#srv/web/owncloud/apps/bookmarks/l10n/sr.js +#srv/web/owncloud/apps/bookmarks/l10n/sr.json #srv/web/owncloud/apps/bookmarks/l10n/sr.php -#srv/web/owncloud/apps/bookmarks/l10n/sr/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/sr@latin #srv/web/owncloud/apps/bookmarks/l10n/sr@latin.php -#srv/web/owncloud/apps/bookmarks/l10n/sr@latin/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/su -#srv/web/owncloud/apps/bookmarks/l10n/su/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/sv +#srv/web/owncloud/apps/bookmarks/l10n/sv.js +#srv/web/owncloud/apps/bookmarks/l10n/sv.json #srv/web/owncloud/apps/bookmarks/l10n/sv.php -#srv/web/owncloud/apps/bookmarks/l10n/sv/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/sw_KE -#srv/web/owncloud/apps/bookmarks/l10n/sw_KE/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ta_IN -#srv/web/owncloud/apps/bookmarks/l10n/ta_IN/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ta_LK +#srv/web/owncloud/apps/bookmarks/l10n/ta_IN.php +#srv/web/owncloud/apps/bookmarks/l10n/ta_LK.js +#srv/web/owncloud/apps/bookmarks/l10n/ta_LK.json #srv/web/owncloud/apps/bookmarks/l10n/ta_LK.php -#srv/web/owncloud/apps/bookmarks/l10n/ta_LK/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/te #srv/web/owncloud/apps/bookmarks/l10n/te.php -#srv/web/owncloud/apps/bookmarks/l10n/te/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/templates -#srv/web/owncloud/apps/bookmarks/l10n/templates/bookmarks.pot -#srv/web/owncloud/apps/bookmarks/l10n/th_TH +#srv/web/owncloud/apps/bookmarks/l10n/th_TH.js +#srv/web/owncloud/apps/bookmarks/l10n/th_TH.json #srv/web/owncloud/apps/bookmarks/l10n/th_TH.php -#srv/web/owncloud/apps/bookmarks/l10n/th_TH/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/tr +#srv/web/owncloud/apps/bookmarks/l10n/tr.js +#srv/web/owncloud/apps/bookmarks/l10n/tr.json #srv/web/owncloud/apps/bookmarks/l10n/tr.php -#srv/web/owncloud/apps/bookmarks/l10n/tr/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/tzm -#srv/web/owncloud/apps/bookmarks/l10n/tzm/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ug +#srv/web/owncloud/apps/bookmarks/l10n/ug.js +#srv/web/owncloud/apps/bookmarks/l10n/ug.json #srv/web/owncloud/apps/bookmarks/l10n/ug.php -#srv/web/owncloud/apps/bookmarks/l10n/ug/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/uk +#srv/web/owncloud/apps/bookmarks/l10n/uk.js +#srv/web/owncloud/apps/bookmarks/l10n/uk.json #srv/web/owncloud/apps/bookmarks/l10n/uk.php -#srv/web/owncloud/apps/bookmarks/l10n/uk/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ur -#srv/web/owncloud/apps/bookmarks/l10n/ur/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/ur_PK #srv/web/owncloud/apps/bookmarks/l10n/ur_PK.php -#srv/web/owncloud/apps/bookmarks/l10n/ur_PK/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/uz -#srv/web/owncloud/apps/bookmarks/l10n/uz/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/vi +#srv/web/owncloud/apps/bookmarks/l10n/vi.js +#srv/web/owncloud/apps/bookmarks/l10n/vi.json #srv/web/owncloud/apps/bookmarks/l10n/vi.php -#srv/web/owncloud/apps/bookmarks/l10n/vi/bookmarks.po #srv/web/owncloud/apps/bookmarks/l10n/xgettextfiles -#srv/web/owncloud/apps/bookmarks/l10n/zh_CN -#srv/web/owncloud/apps/bookmarks/l10n/zh_CN.GB2312 -#srv/web/owncloud/apps/bookmarks/l10n/zh_CN.GB2312.php -#srv/web/owncloud/apps/bookmarks/l10n/zh_CN.GB2312/bookmarks.po +#srv/web/owncloud/apps/bookmarks/l10n/zh_CN.js +#srv/web/owncloud/apps/bookmarks/l10n/zh_CN.json #srv/web/owncloud/apps/bookmarks/l10n/zh_CN.php -#srv/web/owncloud/apps/bookmarks/l10n/zh_CN/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/zh_HK #srv/web/owncloud/apps/bookmarks/l10n/zh_HK.php -#srv/web/owncloud/apps/bookmarks/l10n/zh_HK/bookmarks.po -#srv/web/owncloud/apps/bookmarks/l10n/zh_TW +#srv/web/owncloud/apps/bookmarks/l10n/zh_TW.js +#srv/web/owncloud/apps/bookmarks/l10n/zh_TW.json #srv/web/owncloud/apps/bookmarks/l10n/zh_TW.php -#srv/web/owncloud/apps/bookmarks/l10n/zh_TW/bookmarks.po #srv/web/owncloud/apps/bookmarks/lib #srv/web/owncloud/apps/bookmarks/lib/bookmarks.php #srv/web/owncloud/apps/bookmarks/lib/search.php @@ -3749,7 +3625,9 @@ srv/web/owncloud #srv/web/owncloud/apps/bookmarks/templates/list.php #srv/web/owncloud/apps/bookmarks/templates/settings.php #srv/web/owncloud/apps/bookmarks/tests -#srv/web/owncloud/apps/bookmarks/tests/lib_bookmark.php +#srv/web/owncloud/apps/bookmarks/tests/bootstrap.php +#srv/web/owncloud/apps/bookmarks/tests/lib_bookmark_test.php +#srv/web/owncloud/apps/bookmarks/tests/phpunit.xml #srv/web/owncloud/apps/calendar #srv/web/owncloud/apps/calendar/3rdparty #srv/web/owncloud/apps/calendar/3rdparty/fullcalendar @@ -4624,7 +4502,9 @@ srv/web/owncloud #srv/web/owncloud/apps/contacts/lib/jsonresponse.php #srv/web/owncloud/apps/contacts/lib/middleware #srv/web/owncloud/apps/contacts/lib/middleware/http.php -#srv/web/owncloud/apps/contacts/lib/searchprovider.php +#srv/web/owncloud/apps/contacts/lib/search +#srv/web/owncloud/apps/contacts/lib/search/contact.php +#srv/web/owncloud/apps/contacts/lib/search/provider.php #srv/web/owncloud/apps/contacts/lib/share #srv/web/owncloud/apps/contacts/lib/share/addressbook.php #srv/web/owncloud/apps/contacts/lib/share/contact.php @@ -6973,6 +6853,7 @@ srv/web/owncloud #srv/web/owncloud/apps/files_external/ajax #srv/web/owncloud/apps/files_external/ajax/addMountPoint.php #srv/web/owncloud/apps/files_external/ajax/addRootCertificate.php +#srv/web/owncloud/apps/files_external/ajax/applicable.php #srv/web/owncloud/apps/files_external/ajax/dropbox.php #srv/web/owncloud/apps/files_external/ajax/google.php #srv/web/owncloud/apps/files_external/ajax/removeMountPoint.php @@ -7077,6 +6958,7 @@ srv/web/owncloud #srv/web/owncloud/apps/files_external/lib/api.php #srv/web/owncloud/apps/files_external/lib/config.php #srv/web/owncloud/apps/files_external/lib/dropbox.php +#srv/web/owncloud/apps/files_external/lib/etagpropagator.php #srv/web/owncloud/apps/files_external/lib/ftp.php #srv/web/owncloud/apps/files_external/lib/google.php #srv/web/owncloud/apps/files_external/lib/owncloud.php @@ -7094,16 +6976,19 @@ srv/web/owncloud #srv/web/owncloud/apps/files_external/templates/settings.php #srv/web/owncloud/apps/files_external/tests #srv/web/owncloud/apps/files_external/tests/amazons3.php +#srv/web/owncloud/apps/files_external/tests/amazons3migration.php #srv/web/owncloud/apps/files_external/tests/appSpec.js #srv/web/owncloud/apps/files_external/tests/config.php #srv/web/owncloud/apps/files_external/tests/dropbox.php #srv/web/owncloud/apps/files_external/tests/dynamicmountconfig.php +#srv/web/owncloud/apps/files_external/tests/etagpropagator.php #srv/web/owncloud/apps/files_external/tests/ftp.php #srv/web/owncloud/apps/files_external/tests/google.php #srv/web/owncloud/apps/files_external/tests/js #srv/web/owncloud/apps/files_external/tests/js/mountsfilelistSpec.js #srv/web/owncloud/apps/files_external/tests/mountconfig.php #srv/web/owncloud/apps/files_external/tests/owncloud.php +#srv/web/owncloud/apps/files_external/tests/owncloudfunctions.php #srv/web/owncloud/apps/files_external/tests/sftp.php #srv/web/owncloud/apps/files_external/tests/smb.php #srv/web/owncloud/apps/files_external/tests/smbfunctions.php @@ -7383,6 +7268,7 @@ srv/web/owncloud #srv/web/owncloud/apps/files_sharing/lib/cache.php #srv/web/owncloud/apps/files_sharing/lib/connector #srv/web/owncloud/apps/files_sharing/lib/connector/publicauth.php +#srv/web/owncloud/apps/files_sharing/lib/exceptions.php #srv/web/owncloud/apps/files_sharing/lib/external #srv/web/owncloud/apps/files_sharing/lib/external/cache.php #srv/web/owncloud/apps/files_sharing/lib/external/manager.php @@ -7414,9 +7300,11 @@ srv/web/owncloud #srv/web/owncloud/apps/files_sharing/templates/settings-admin.php #srv/web/owncloud/apps/files_sharing/tests #srv/web/owncloud/apps/files_sharing/tests/api.php +#srv/web/owncloud/apps/files_sharing/tests/backend.php #srv/web/owncloud/apps/files_sharing/tests/base.php #srv/web/owncloud/apps/files_sharing/tests/cache.php #srv/web/owncloud/apps/files_sharing/tests/externalstorage.php +#srv/web/owncloud/apps/files_sharing/tests/helper.php #srv/web/owncloud/apps/files_sharing/tests/js #srv/web/owncloud/apps/files_sharing/tests/js/appSpec.js #srv/web/owncloud/apps/files_sharing/tests/js/shareSpec.js @@ -8812,9 +8700,11 @@ srv/web/owncloud #srv/web/owncloud/apps/updater/admin.php #srv/web/owncloud/apps/updater/ajax #srv/web/owncloud/apps/updater/ajax/backup +#srv/web/owncloud/apps/updater/ajax/backup.php #srv/web/owncloud/apps/updater/ajax/backup/delete.php #srv/web/owncloud/apps/updater/ajax/backup/download.php #srv/web/owncloud/apps/updater/ajax/backup/list.php +#srv/web/owncloud/apps/updater/ajax/download.php #srv/web/owncloud/apps/updater/ajax/update.php #srv/web/owncloud/apps/updater/appinfo #srv/web/owncloud/apps/updater/appinfo/app.php @@ -8911,13 +8801,16 @@ srv/web/owncloud #srv/web/owncloud/apps/updater/lib #srv/web/owncloud/apps/updater/lib/app.php #srv/web/owncloud/apps/updater/lib/backup.php +#srv/web/owncloud/apps/updater/lib/collection.php #srv/web/owncloud/apps/updater/lib/downloader.php +#srv/web/owncloud/apps/updater/lib/fsexception.php #srv/web/owncloud/apps/updater/lib/helper.php #srv/web/owncloud/apps/updater/lib/location #srv/web/owncloud/apps/updater/lib/location.php #srv/web/owncloud/apps/updater/lib/location/3rdparty.php #srv/web/owncloud/apps/updater/lib/location/apps.php #srv/web/owncloud/apps/updater/lib/location/core.php +#srv/web/owncloud/apps/updater/lib/permissionexception.php #srv/web/owncloud/apps/updater/lib/updater.php #srv/web/owncloud/apps/updater/templates #srv/web/owncloud/apps/updater/templates/admin.php @@ -8966,6 +8859,7 @@ srv/web/owncloud #srv/web/owncloud/apps/user_ldap/group_ldap.php #srv/web/owncloud/apps/user_ldap/group_proxy.php #srv/web/owncloud/apps/user_ldap/js +#srv/web/owncloud/apps/user_ldap/js/experiencedAdmin.js #srv/web/owncloud/apps/user_ldap/js/ldapFilter.js #srv/web/owncloud/apps/user_ldap/js/settings.js #srv/web/owncloud/apps/user_ldap/l10n @@ -9118,6 +9012,7 @@ srv/web/owncloud #srv/web/owncloud/apps/user_ldap/tests/data #srv/web/owncloud/apps/user_ldap/tests/data/sid.dat #srv/web/owncloud/apps/user_ldap/tests/group_ldap.php +#srv/web/owncloud/apps/user_ldap/tests/helper.php #srv/web/owncloud/apps/user_ldap/tests/user #srv/web/owncloud/apps/user_ldap/tests/user/manager.php #srv/web/owncloud/apps/user_ldap/tests/user/user.php @@ -9266,155 +9161,54 @@ srv/web/owncloud #srv/web/owncloud/core/css/jquery.ocdialog.css #srv/web/owncloud/core/css/mobile.css #srv/web/owncloud/core/css/multiselect.css +#srv/web/owncloud/core/css/select2 +#srv/web/owncloud/core/css/select2/select2-spinner.gif +#srv/web/owncloud/core/css/select2/select2.css +#srv/web/owncloud/core/css/select2/select2.png +#srv/web/owncloud/core/css/select2/select2x2.png #srv/web/owncloud/core/css/share.css #srv/web/owncloud/core/css/styles.css #srv/web/owncloud/core/doc #srv/web/owncloud/core/doc/admin #srv/web/owncloud/core/doc/admin/_images -#srv/web/owncloud/core/doc/admin/_images/100000000000003800000018D49F1CE7.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000050000000DB83B8FA5B.png -#srv/web/owncloud/core/doc/admin/_images/10000000000000950000004412998BE7.png -#srv/web/owncloud/core/doc/admin/_images/10000000000000A800000073F49785A6.png -#srv/web/owncloud/core/doc/admin/_images/10000000000000B600000120706C3C75.png -#srv/web/owncloud/core/doc/admin/_images/10000000000000CD000000ECA8DE7780.png -#srv/web/owncloud/core/doc/admin/_images/10000000000000F1000000F56125BDBA.png -#srv/web/owncloud/core/doc/admin/_images/10000000000000F1000000F6704F46D3.png -#srv/web/owncloud/core/doc/admin/_images/10000000000000F300000068AF0ECD53.png -#srv/web/owncloud/core/doc/admin/_images/10000000000000F40000019A110DD159.png -#srv/web/owncloud/core/doc/admin/_images/10000000000000F5000000675DC5F68C.png -#srv/web/owncloud/core/doc/admin/_images/10000000000000F500000067A8845EF8.png -#srv/web/owncloud/core/doc/admin/_images/10000000000000F60000006754ED2A1E.png -#srv/web/owncloud/core/doc/admin/_images/10000000000000F6000000685DFB3767.png -#srv/web/owncloud/core/doc/admin/_images/100000000000012C0000009C444B4720.png -#srv/web/owncloud/core/doc/admin/_images/100000000000013C0000017D4FC6CEF5.png -#srv/web/owncloud/core/doc/admin/_images/10000000000001400000008A557EF7E3.png -#srv/web/owncloud/core/doc/admin/_images/10000000000001440000005A2989832F.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000160000000DBB2FB0223.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000165000000D3FF2168AB.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000167000000B43E4BF478.png -#srv/web/owncloud/core/doc/admin/_images/10000000000001800000009A9494E037.png -#srv/web/owncloud/core/doc/admin/_images/10000000000001880000007EA4444400.png -#srv/web/owncloud/core/doc/admin/_images/100000000000018B000000A090F31164.png -#srv/web/owncloud/core/doc/admin/_images/100000000000018E000000C4BA62B2A3.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000193000001AE9AB8B0A2.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000194000000498325A766.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000194000000FAD39BC0D8.png -#srv/web/owncloud/core/doc/admin/_images/10000000000001980000009271BE0D26.png -#srv/web/owncloud/core/doc/admin/_images/100000000000019E0000004CD2A0F407.png -#srv/web/owncloud/core/doc/admin/_images/10000000000001A3000000AAFE82893A.png -#srv/web/owncloud/core/doc/admin/_images/10000000000001AC000000477C76808F.png -#srv/web/owncloud/core/doc/admin/_images/10000000000001BF00000012349EAE2F.png -#srv/web/owncloud/core/doc/admin/_images/10000000000001C1000000FE663748B2.png -#srv/web/owncloud/core/doc/admin/_images/10000000000001C9000000AF9C1CE57F.png -#srv/web/owncloud/core/doc/admin/_images/10000000000001CF00000176B0BE1EBC.png -#srv/web/owncloud/core/doc/admin/_images/10000000000001D30000014DC251C948.png -#srv/web/owncloud/core/doc/admin/_images/10000000000001E50000006E3ECDC427.png -#srv/web/owncloud/core/doc/admin/_images/10000000000001FD000000DF8D2D7546.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000200000000BCCCC35DEB.png -#srv/web/owncloud/core/doc/admin/_images/10000000000002170000004A27056037.png -#srv/web/owncloud/core/doc/admin/_images/100000000000021C0000004CACBF786C.png -#srv/web/owncloud/core/doc/admin/_images/10000000000002210000002DE3BE7515.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000227000000935D9B1EF6.png -#srv/web/owncloud/core/doc/admin/_images/100000000000023B000000125381F51B.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000247000000A77440E4D3.png -#srv/web/owncloud/core/doc/admin/_images/10000000000002720000013FB6EDA793.png -#srv/web/owncloud/core/doc/admin/_images/100000000000027B0000011D10F70F88.png -#srv/web/owncloud/core/doc/admin/_images/10000000000002840000016729388B7F.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000288000001A1D5BE4881.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000289000001A9D7F3941F.png -#srv/web/owncloud/core/doc/admin/_images/10000000000002910000018B31D51F03.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000291000001951B69B9A6.png -#srv/web/owncloud/core/doc/admin/_images/10000000000002950000019EF5732E36.png -#srv/web/owncloud/core/doc/admin/_images/10000000000002950000021E245F6883.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000298000001870B0581FA.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000298000001874D3CA506.png -#srv/web/owncloud/core/doc/admin/_images/100000000000029B0000018885B5282E.png -#srv/web/owncloud/core/doc/admin/_images/10000000000002A6000000BFBE298238.png -#srv/web/owncloud/core/doc/admin/_images/10000000000002B1000002258C08D304.png -#srv/web/owncloud/core/doc/admin/_images/10000000000002B3000000365E1CD00D.png -#srv/web/owncloud/core/doc/admin/_images/10000000000002BB000000266DB6AD1A.png -#srv/web/owncloud/core/doc/admin/_images/10000000000002F3000000926CA65D02.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000304000001B964698779.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000336000000F38C3FAF84.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000372000002AF943ADDA0.png -#srv/web/owncloud/core/doc/admin/_images/10000000000003730000002B6865E951.png -#srv/web/owncloud/core/doc/admin/_images/10000000000003A60000011E274A1A28.png -#srv/web/owncloud/core/doc/admin/_images/10000000000003A6000002A9C7A660BE.png -#srv/web/owncloud/core/doc/admin/_images/10000000000003A800000039364066E4.png -#srv/web/owncloud/core/doc/admin/_images/10000000000003B30000021B5EE5D338.png -#srv/web/owncloud/core/doc/admin/_images/10000000000003DF00000071A41D8A1F.png -#srv/web/owncloud/core/doc/admin/_images/10000000000003DF000000D953A456B6.png -#srv/web/owncloud/core/doc/admin/_images/10000000000003E8000001524A147A04.png -#srv/web/owncloud/core/doc/admin/_images/10000000000003EC000000AB60616FA7.png -#srv/web/owncloud/core/doc/admin/_images/10000000000003FB000002359BAFB40E.png -#srv/web/owncloud/core/doc/admin/_images/10000000000004010000017E4A6552BC.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000403000001632F0B76F6.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000404000000FCFC13E732.png -#srv/web/owncloud/core/doc/admin/_images/10000000000004100000005657010336.png -#srv/web/owncloud/core/doc/admin/_images/10000000000004170000016ACB5E15AE.png -#srv/web/owncloud/core/doc/admin/_images/100000000000041D0000017D8D1BC4D9.png -#srv/web/owncloud/core/doc/admin/_images/100000000000042500000163D2B339D5.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000427000000324F58266D.png -#srv/web/owncloud/core/doc/admin/_images/100000000000042E000001D3EEB9978B.png -#srv/web/owncloud/core/doc/admin/_images/100000000000042F000000CC3EDDE79E.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000430000000AF9D6E724E.png -#srv/web/owncloud/core/doc/admin/_images/100000000000043000000164DA0CE8C9.png -#srv/web/owncloud/core/doc/admin/_images/100000000000043200000169BCD20493.png -#srv/web/owncloud/core/doc/admin/_images/100000000000044C000002B0B421E27E.png -#srv/web/owncloud/core/doc/admin/_images/100000000000045800000197FE462F2B.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000462000000D44541CF9A.png -#srv/web/owncloud/core/doc/admin/_images/100000000000046C000000C2D3E5CF30.png -#srv/web/owncloud/core/doc/admin/_images/10000000000004770000008AAF3CFFDB.png -#srv/web/owncloud/core/doc/admin/_images/10000000000004920000028D9C8DC2CB.png -#srv/web/owncloud/core/doc/admin/_images/10000000000004C0000000795BB2C146.png -#srv/web/owncloud/core/doc/admin/_images/10000000000004CA000002B52116BE0C.png -#srv/web/owncloud/core/doc/admin/_images/10000000000004ED000000BE3B9E25D5.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000523000000C6F786381C.png -#srv/web/owncloud/core/doc/admin/_images/100000000000052500000088DBB95005.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000525000000BE30CF0423.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000527000000A7AB409FE0.png -#srv/web/owncloud/core/doc/admin/_images/100000000000052F000000C2867B7294.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000530000001410CF0028A.png -#srv/web/owncloud/core/doc/admin/_images/100000000000053100000142D9A4C916.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000532000000285DDBBF37.png -#srv/web/owncloud/core/doc/admin/_images/100000000000053A00000067708C8F53.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000552000000BF22E90239.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000557000002E148BAB6D4.png -#srv/web/owncloud/core/doc/admin/_images/10000000000005970000006AE23997C9.png -#srv/web/owncloud/core/doc/admin/_images/10000000000005AF00000074604B1A67.png -#srv/web/owncloud/core/doc/admin/_images/10000000000005B90000007866D92D14.png -#srv/web/owncloud/core/doc/admin/_images/10000000000005BB0000007C1DF71FA7.png -#srv/web/owncloud/core/doc/admin/_images/10000000000005C30000006CAFFAAD61.png -#srv/web/owncloud/core/doc/admin/_images/10000000000005D00000003B29340A7A.png -#srv/web/owncloud/core/doc/admin/_images/10000000000005D50000009458C5EE48.png -#srv/web/owncloud/core/doc/admin/_images/10000000000005E20000009B1BA5A8CF.png -#srv/web/owncloud/core/doc/admin/_images/10000000000005E6000000676902E040.png -#srv/web/owncloud/core/doc/admin/_images/10000000000005EB000000A68BA73E2D.png -#srv/web/owncloud/core/doc/admin/_images/10000000000005EC00000073E678DFEC.png -#srv/web/owncloud/core/doc/admin/_images/10000000000005F30000030F1372448D.png -#srv/web/owncloud/core/doc/admin/_images/10000000000005F70000005F0912E904.png -#srv/web/owncloud/core/doc/admin/_images/10000000000005F70000007E43DB8026.png -#srv/web/owncloud/core/doc/admin/_images/10000000000005FA0000005CE8491B77.png -#srv/web/owncloud/core/doc/admin/_images/10000000000005FF0000005F35710398.png -#srv/web/owncloud/core/doc/admin/_images/10000000000006000000005EDA7B96BE.png -#srv/web/owncloud/core/doc/admin/_images/100000000000060300000065DF96536B.png -#srv/web/owncloud/core/doc/admin/_images/10000000000006060000006A0106CA0C.png -#srv/web/owncloud/core/doc/admin/_images/100000000000061A0000006FC014C3A4.png -#srv/web/owncloud/core/doc/admin/_images/100000000000061D0000007047877972.png -#srv/web/owncloud/core/doc/admin/_images/100000000000061E0000006BCF9ECC0B.png -#srv/web/owncloud/core/doc/admin/_images/100000000000062A0000005F61A18950.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000631000000E19D116AA0.png -#srv/web/owncloud/core/doc/admin/_images/100000000000063F00000090AAE1FA4A.png -#srv/web/owncloud/core/doc/admin/_images/1000000000000668000002D29EAD9899.png -#srv/web/owncloud/core/doc/admin/_images/100000000000066D000001AAD8CE8256.png -#srv/web/owncloud/core/doc/admin/_images/10000201000002FC000001DC2DDAD2F1.png -#srv/web/owncloud/core/doc/admin/_images/1000020100000359000000A8B848DE68.png -#srv/web/owncloud/core/doc/admin/_images/10000201000005F90000029D8BA200FB.png -#srv/web/owncloud/core/doc/admin/_images/custom_mount_config_gui-1.png -#srv/web/owncloud/core/doc/admin/_images/custom_mount_config_gui-2.png -#srv/web/owncloud/core/doc/admin/_images/custom_mount_config_gui-3.png -#srv/web/owncloud/core/doc/admin/_images/custom_mount_config_gui-4.png -#srv/web/owncloud/core/doc/admin/_images/edit_encrypted_file.png +#srv/web/owncloud/core/doc/admin/_images/antivirus-app.png +#srv/web/owncloud/core/doc/admin/_images/antivirus-config.png +#srv/web/owncloud/core/doc/admin/_images/antivirus-daemon-socket.png +#srv/web/owncloud/core/doc/admin/_images/antivirus-executable.png +#srv/web/owncloud/core/doc/admin/_images/antivirus-logging.png +#srv/web/owncloud/core/doc/admin/_images/create_public_share.png +#srv/web/owncloud/core/doc/admin/_images/documents_app_enable.png +#srv/web/owncloud/core/doc/admin/_images/encryption1.png +#srv/web/owncloud/core/doc/admin/_images/encryption2.png +#srv/web/owncloud/core/doc/admin/_images/encryption3.png +#srv/web/owncloud/core/doc/admin/_images/encryption4.png +#srv/web/owncloud/core/doc/admin/_images/encryption5.png +#srv/web/owncloud/core/doc/admin/_images/encryption6.png +#srv/web/owncloud/core/doc/admin/_images/encryption7.png +#srv/web/owncloud/core/doc/admin/_images/encryption8.png +#srv/web/owncloud/core/doc/admin/_images/encryption9.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-amazons3.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-app-add.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-app-enable.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-app-local.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-app-usermounts.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-dropbox-allowshare.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-dropbox-app.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-dropbox-configapp.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-dropbox-oc.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-dropbox.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-ftp.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-google-drive-0auth.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-google-drive-9.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-google-drive-sdk.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-google-drive.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-google-drive1.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-google-drive2.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-google-drive5.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-google-drive7.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-google-drive8.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-smb.png +#srv/web/owncloud/core/doc/admin/_images/external-storage-webdav.png #srv/web/owncloud/core/doc/admin/_images/install-wizard-advanced.png #srv/web/owncloud/core/doc/admin/_images/install-wizard.png #srv/web/owncloud/core/doc/admin/_images/ldap-advanced-1-connection.png @@ -9428,84 +9222,73 @@ srv/web/owncloud #srv/web/owncloud/core/doc/admin/_images/ldap-wizard-2-user.png #srv/web/owncloud/core/doc/admin/_images/ldap-wizard-3-login.png #srv/web/owncloud/core/doc/admin/_images/ldap-wizard-4-group.png +#srv/web/owncloud/core/doc/admin/_images/lucene-search-enable.png +#srv/web/owncloud/core/doc/admin/_images/lucene-search-user.png #srv/web/owncloud/core/doc/admin/_images/oc_admin_app_page.png -#srv/web/owncloud/core/doc/admin/_images/oc_admin_user_manage.png +#srv/web/owncloud/core/doc/admin/_images/preview_images.png +#srv/web/owncloud/core/doc/admin/_images/remote_shares.png +#srv/web/owncloud/core/doc/admin/_images/sharing-admin.png +#srv/web/owncloud/core/doc/admin/_images/sharing-user-local.png +#srv/web/owncloud/core/doc/admin/_images/sharing-user.png +#srv/web/owncloud/core/doc/admin/_images/smtp-config-php-sendmail.png +#srv/web/owncloud/core/doc/admin/_images/smtp-config-smtp.png +#srv/web/owncloud/core/doc/admin/_images/smtp-config-wizard.png #srv/web/owncloud/core/doc/admin/_images/ucs-app-center-install.png #srv/web/owncloud/core/doc/admin/_images/ucs-app-center-module.png #srv/web/owncloud/core/doc/admin/_images/ucsint.png #srv/web/owncloud/core/doc/admin/_images/ucsint1.png #srv/web/owncloud/core/doc/admin/_images/ucsint2.png #srv/web/owncloud/core/doc/admin/_images/untrusted-domain.png +#srv/web/owncloud/core/doc/admin/_images/updater-1.png +#srv/web/owncloud/core/doc/admin/_images/updater-2.png +#srv/web/owncloud/core/doc/admin/_images/updater-3.png +#srv/web/owncloud/core/doc/admin/_images/updater-4.png +#srv/web/owncloud/core/doc/admin/_images/updater-5.png +#srv/web/owncloud/core/doc/admin/_images/updater-6.png +#srv/web/owncloud/core/doc/admin/_images/updater-7.png +#srv/web/owncloud/core/doc/admin/_images/users-config.png +#srv/web/owncloud/core/doc/admin/_images/users-create.png +#srv/web/owncloud/core/doc/admin/_images/users-groups.png #srv/web/owncloud/core/doc/admin/_images/win7features.jpg #srv/web/owncloud/core/doc/admin/_images/winserverroles.jpg #srv/web/owncloud/core/doc/admin/_sources -#srv/web/owncloud/core/doc/admin/_sources/apps -#srv/web/owncloud/core/doc/admin/_sources/apps/activity -#srv/web/owncloud/core/doc/admin/_sources/apps/activity/index.txt -#srv/web/owncloud/core/doc/admin/_sources/apps/admin_dependencies_chk -#srv/web/owncloud/core/doc/admin/_sources/apps/admin_dependencies_chk/index.txt -#srv/web/owncloud/core/doc/admin/_sources/apps/files_antivirus -#srv/web/owncloud/core/doc/admin/_sources/apps/files_antivirus/index.txt -#srv/web/owncloud/core/doc/admin/_sources/apps/files_encryption -#srv/web/owncloud/core/doc/admin/_sources/apps/files_encryption/index.txt -#srv/web/owncloud/core/doc/admin/_sources/apps/files_external -#srv/web/owncloud/core/doc/admin/_sources/apps/files_external/index.txt -#srv/web/owncloud/core/doc/admin/_sources/apps/files_sharing -#srv/web/owncloud/core/doc/admin/_sources/apps/files_sharing/index.txt -#srv/web/owncloud/core/doc/admin/_sources/apps/files_trashbin -#srv/web/owncloud/core/doc/admin/_sources/apps/files_trashbin/index.txt -#srv/web/owncloud/core/doc/admin/_sources/apps/files_versions -#srv/web/owncloud/core/doc/admin/_sources/apps/files_versions/index.txt -#srv/web/owncloud/core/doc/admin/_sources/apps/firstrunwizard -#srv/web/owncloud/core/doc/admin/_sources/apps/firstrunwizard/index.txt -#srv/web/owncloud/core/doc/admin/_sources/apps/index.txt -#srv/web/owncloud/core/doc/admin/_sources/apps/user_ldap -#srv/web/owncloud/core/doc/admin/_sources/apps/user_ldap/index.txt -#srv/web/owncloud/core/doc/admin/_sources/apps/viewers -#srv/web/owncloud/core/doc/admin/_sources/apps/viewers/index.txt -#srv/web/owncloud/core/doc/admin/_sources/config -#srv/web/owncloud/core/doc/admin/_sources/config/apps.txt -#srv/web/owncloud/core/doc/admin/_sources/config/code_locations.txt -#srv/web/owncloud/core/doc/admin/_sources/config/default_parameters.txt -#srv/web/owncloud/core/doc/admin/_sources/config/deleted_items.txt -#srv/web/owncloud/core/doc/admin/_sources/config/index.txt -#srv/web/owncloud/core/doc/admin/_sources/config/logging.txt -#srv/web/owncloud/core/doc/admin/_sources/config/mail_parameters.txt -#srv/web/owncloud/core/doc/admin/_sources/config/maintenance.txt -#srv/web/owncloud/core/doc/admin/_sources/config/miscellaneous.txt -#srv/web/owncloud/core/doc/admin/_sources/config/previews.txt -#srv/web/owncloud/core/doc/admin/_sources/config/reverse_proxy_configurations.txt -#srv/web/owncloud/core/doc/admin/_sources/config/session_info.txt -#srv/web/owncloud/core/doc/admin/_sources/config/user_experience.txt -#srv/web/owncloud/core/doc/admin/_sources/config/verification.txt #srv/web/owncloud/core/doc/admin/_sources/configuration #srv/web/owncloud/core/doc/admin/_sources/configuration/auth_ldap.txt #srv/web/owncloud/core/doc/admin/_sources/configuration/background_jobs.txt +#srv/web/owncloud/core/doc/admin/_sources/configuration/configuration-antivirus.txt #srv/web/owncloud/core/doc/admin/_sources/configuration/configuration_3rdparty.txt #srv/web/owncloud/core/doc/admin/_sources/configuration/configuration_apps.txt +#srv/web/owncloud/core/doc/admin/_sources/configuration/configuration_assets.txt #srv/web/owncloud/core/doc/admin/_sources/configuration/configuration_automation.txt +#srv/web/owncloud/core/doc/admin/_sources/configuration/configuration_config_sample_php.txt #srv/web/owncloud/core/doc/admin/_sources/configuration/configuration_custom_clients.txt #srv/web/owncloud/core/doc/admin/_sources/configuration/configuration_database.txt #srv/web/owncloud/core/doc/admin/_sources/configuration/configuration_encryption.txt +#srv/web/owncloud/core/doc/admin/_sources/configuration/configuration_file_sharing.txt +#srv/web/owncloud/core/doc/admin/_sources/configuration/configuration_files_locking.txt #srv/web/owncloud/core/doc/admin/_sources/configuration/configuration_knowledgebase.txt #srv/web/owncloud/core/doc/admin/_sources/configuration/configuration_language.txt #srv/web/owncloud/core/doc/admin/_sources/configuration/configuration_logging.txt #srv/web/owncloud/core/doc/admin/_sources/configuration/configuration_mail.txt -#srv/web/owncloud/core/doc/admin/_sources/configuration/configuration_maintenance.txt #srv/web/owncloud/core/doc/admin/_sources/configuration/configuration_preview.txt #srv/web/owncloud/core/doc/admin/_sources/configuration/configuration_reverseproxy.txt #srv/web/owncloud/core/doc/admin/_sources/configuration/configuration_users.txt #srv/web/owncloud/core/doc/admin/_sources/configuration/configuring_big_file_upload.txt +#srv/web/owncloud/core/doc/admin/_sources/configuration/configuring_documents.txt +#srv/web/owncloud/core/doc/admin/_sources/configuration/configuring_search.txt #srv/web/owncloud/core/doc/admin/_sources/configuration/custom_mount_config.txt #srv/web/owncloud/core/doc/admin/_sources/configuration/custom_mount_config_gui.txt #srv/web/owncloud/core/doc/admin/_sources/configuration/custom_user_backend.txt #srv/web/owncloud/core/doc/admin/_sources/configuration/index.txt +#srv/web/owncloud/core/doc/admin/_sources/configuration/server_to_server_managing.txt #srv/web/owncloud/core/doc/admin/_sources/configuration/xsendfile.txt #srv/web/owncloud/core/doc/admin/_sources/contents.txt -#srv/web/owncloud/core/doc/admin/_sources/cron -#srv/web/owncloud/core/doc/admin/_sources/cron/index.txt #srv/web/owncloud/core/doc/admin/_sources/index.txt #srv/web/owncloud/core/doc/admin/_sources/installation +#srv/web/owncloud/core/doc/admin/_sources/installation/configuration_hiawatha.txt +#srv/web/owncloud/core/doc/admin/_sources/installation/configuration_lighttpd.txt +#srv/web/owncloud/core/doc/admin/_sources/installation/configuration_nginx.txt +#srv/web/owncloud/core/doc/admin/_sources/installation/configuration_yaws.txt #srv/web/owncloud/core/doc/admin/_sources/installation/index.txt #srv/web/owncloud/core/doc/admin/_sources/installation/installation_appliance.txt #srv/web/owncloud/core/doc/admin/_sources/installation/installation_linux.txt @@ -9519,19 +9302,14 @@ srv/web/owncloud #srv/web/owncloud/core/doc/admin/_sources/issues/index.txt #srv/web/owncloud/core/doc/admin/_sources/maintenance #srv/web/owncloud/core/doc/admin/_sources/maintenance/backup.txt +#srv/web/owncloud/core/doc/admin/_sources/maintenance/convert_db.txt +#srv/web/owncloud/core/doc/admin/_sources/maintenance/enable_maintenance.txt #srv/web/owncloud/core/doc/admin/_sources/maintenance/index.txt #srv/web/owncloud/core/doc/admin/_sources/maintenance/migrating.txt #srv/web/owncloud/core/doc/admin/_sources/maintenance/restore.txt #srv/web/owncloud/core/doc/admin/_sources/maintenance/update.txt -#srv/web/owncloud/core/doc/admin/_sources/quota -#srv/web/owncloud/core/doc/admin/_sources/quota/index.txt -#srv/web/owncloud/core/doc/admin/_sources/sharing_api -#srv/web/owncloud/core/doc/admin/_sources/sharing_api/create_a_new_share.txt -#srv/web/owncloud/core/doc/admin/_sources/sharing_api/delete_share.txt -#srv/web/owncloud/core/doc/admin/_sources/sharing_api/get_all_shares.txt -#srv/web/owncloud/core/doc/admin/_sources/sharing_api/get_information_about_a_known_share.txt -#srv/web/owncloud/core/doc/admin/_sources/sharing_api/get_shares_from_a_specific_file_or_folder.txt -#srv/web/owncloud/core/doc/admin/_sources/sharing_api/index.txt +#srv/web/owncloud/core/doc/admin/_sources/maintenance/upgrade.txt +#srv/web/owncloud/core/doc/admin/_sources/whats_new_admin.txt #srv/web/owncloud/core/doc/admin/_static #srv/web/owncloud/core/doc/admin/_static/ajax-loader.gif #srv/web/owncloud/core/doc/admin/_static/basic.css @@ -9563,74 +9341,44 @@ srv/web/owncloud #srv/web/owncloud/core/doc/admin/_static/up-pressed.png #srv/web/owncloud/core/doc/admin/_static/up.png #srv/web/owncloud/core/doc/admin/_static/websupport.js -#srv/web/owncloud/core/doc/admin/apps -#srv/web/owncloud/core/doc/admin/apps/activity -#srv/web/owncloud/core/doc/admin/apps/activity/index.html -#srv/web/owncloud/core/doc/admin/apps/admin_dependencies_chk -#srv/web/owncloud/core/doc/admin/apps/admin_dependencies_chk/index.html -#srv/web/owncloud/core/doc/admin/apps/files_antivirus -#srv/web/owncloud/core/doc/admin/apps/files_antivirus/index.html -#srv/web/owncloud/core/doc/admin/apps/files_encryption -#srv/web/owncloud/core/doc/admin/apps/files_encryption/index.html -#srv/web/owncloud/core/doc/admin/apps/files_external -#srv/web/owncloud/core/doc/admin/apps/files_external/index.html -#srv/web/owncloud/core/doc/admin/apps/files_sharing -#srv/web/owncloud/core/doc/admin/apps/files_sharing/index.html -#srv/web/owncloud/core/doc/admin/apps/files_trashbin -#srv/web/owncloud/core/doc/admin/apps/files_trashbin/index.html -#srv/web/owncloud/core/doc/admin/apps/files_versions -#srv/web/owncloud/core/doc/admin/apps/files_versions/index.html -#srv/web/owncloud/core/doc/admin/apps/firstrunwizard -#srv/web/owncloud/core/doc/admin/apps/firstrunwizard/index.html -#srv/web/owncloud/core/doc/admin/apps/index.html -#srv/web/owncloud/core/doc/admin/apps/user_ldap -#srv/web/owncloud/core/doc/admin/apps/user_ldap/index.html -#srv/web/owncloud/core/doc/admin/apps/viewers -#srv/web/owncloud/core/doc/admin/apps/viewers/index.html -#srv/web/owncloud/core/doc/admin/config -#srv/web/owncloud/core/doc/admin/config/apps.html -#srv/web/owncloud/core/doc/admin/config/code_locations.html -#srv/web/owncloud/core/doc/admin/config/default_parameters.html -#srv/web/owncloud/core/doc/admin/config/deleted_items.html -#srv/web/owncloud/core/doc/admin/config/index.html -#srv/web/owncloud/core/doc/admin/config/logging.html -#srv/web/owncloud/core/doc/admin/config/mail_parameters.html -#srv/web/owncloud/core/doc/admin/config/maintenance.html -#srv/web/owncloud/core/doc/admin/config/miscellaneous.html -#srv/web/owncloud/core/doc/admin/config/previews.html -#srv/web/owncloud/core/doc/admin/config/reverse_proxy_configurations.html -#srv/web/owncloud/core/doc/admin/config/session_info.html -#srv/web/owncloud/core/doc/admin/config/user_experience.html -#srv/web/owncloud/core/doc/admin/config/verification.html #srv/web/owncloud/core/doc/admin/configuration #srv/web/owncloud/core/doc/admin/configuration/auth_ldap.html #srv/web/owncloud/core/doc/admin/configuration/background_jobs.html +#srv/web/owncloud/core/doc/admin/configuration/configuration-antivirus.html #srv/web/owncloud/core/doc/admin/configuration/configuration_3rdparty.html #srv/web/owncloud/core/doc/admin/configuration/configuration_apps.html +#srv/web/owncloud/core/doc/admin/configuration/configuration_assets.html #srv/web/owncloud/core/doc/admin/configuration/configuration_automation.html +#srv/web/owncloud/core/doc/admin/configuration/configuration_config_sample_php.html #srv/web/owncloud/core/doc/admin/configuration/configuration_custom_clients.html #srv/web/owncloud/core/doc/admin/configuration/configuration_database.html #srv/web/owncloud/core/doc/admin/configuration/configuration_encryption.html +#srv/web/owncloud/core/doc/admin/configuration/configuration_file_sharing.html +#srv/web/owncloud/core/doc/admin/configuration/configuration_files_locking.html #srv/web/owncloud/core/doc/admin/configuration/configuration_knowledgebase.html #srv/web/owncloud/core/doc/admin/configuration/configuration_language.html #srv/web/owncloud/core/doc/admin/configuration/configuration_logging.html #srv/web/owncloud/core/doc/admin/configuration/configuration_mail.html -#srv/web/owncloud/core/doc/admin/configuration/configuration_maintenance.html #srv/web/owncloud/core/doc/admin/configuration/configuration_preview.html #srv/web/owncloud/core/doc/admin/configuration/configuration_reverseproxy.html #srv/web/owncloud/core/doc/admin/configuration/configuration_users.html #srv/web/owncloud/core/doc/admin/configuration/configuring_big_file_upload.html +#srv/web/owncloud/core/doc/admin/configuration/configuring_documents.html +#srv/web/owncloud/core/doc/admin/configuration/configuring_search.html #srv/web/owncloud/core/doc/admin/configuration/custom_mount_config.html #srv/web/owncloud/core/doc/admin/configuration/custom_mount_config_gui.html #srv/web/owncloud/core/doc/admin/configuration/custom_user_backend.html #srv/web/owncloud/core/doc/admin/configuration/index.html +#srv/web/owncloud/core/doc/admin/configuration/server_to_server_managing.html #srv/web/owncloud/core/doc/admin/configuration/xsendfile.html #srv/web/owncloud/core/doc/admin/contents.html -#srv/web/owncloud/core/doc/admin/cron -#srv/web/owncloud/core/doc/admin/cron/index.html #srv/web/owncloud/core/doc/admin/genindex.html #srv/web/owncloud/core/doc/admin/index.html #srv/web/owncloud/core/doc/admin/installation +#srv/web/owncloud/core/doc/admin/installation/configuration_hiawatha.html +#srv/web/owncloud/core/doc/admin/installation/configuration_lighttpd.html +#srv/web/owncloud/core/doc/admin/installation/configuration_nginx.html +#srv/web/owncloud/core/doc/admin/installation/configuration_yaws.html #srv/web/owncloud/core/doc/admin/installation/index.html #srv/web/owncloud/core/doc/admin/installation/installation_appliance.html #srv/web/owncloud/core/doc/admin/installation/installation_linux.html @@ -9644,70 +9392,58 @@ srv/web/owncloud #srv/web/owncloud/core/doc/admin/issues/index.html #srv/web/owncloud/core/doc/admin/maintenance #srv/web/owncloud/core/doc/admin/maintenance/backup.html +#srv/web/owncloud/core/doc/admin/maintenance/convert_db.html +#srv/web/owncloud/core/doc/admin/maintenance/enable_maintenance.html #srv/web/owncloud/core/doc/admin/maintenance/index.html #srv/web/owncloud/core/doc/admin/maintenance/migrating.html #srv/web/owncloud/core/doc/admin/maintenance/restore.html #srv/web/owncloud/core/doc/admin/maintenance/update.html +#srv/web/owncloud/core/doc/admin/maintenance/upgrade.html #srv/web/owncloud/core/doc/admin/objects.inv -#srv/web/owncloud/core/doc/admin/quota -#srv/web/owncloud/core/doc/admin/quota/index.html #srv/web/owncloud/core/doc/admin/search.html #srv/web/owncloud/core/doc/admin/searchindex.js -#srv/web/owncloud/core/doc/admin/sharing_api -#srv/web/owncloud/core/doc/admin/sharing_api/create_a_new_share.html -#srv/web/owncloud/core/doc/admin/sharing_api/delete_share.html -#srv/web/owncloud/core/doc/admin/sharing_api/get_all_shares.html -#srv/web/owncloud/core/doc/admin/sharing_api/get_information_about_a_known_share.html -#srv/web/owncloud/core/doc/admin/sharing_api/get_shares_from_a_specific_file_or_folder.html -#srv/web/owncloud/core/doc/admin/sharing_api/index.html +#srv/web/owncloud/core/doc/admin/whats_new_admin.html #srv/web/owncloud/core/doc/user #srv/web/owncloud/core/doc/user/_images -#srv/web/owncloud/core/doc/user/_images/1000000000000163000000E9CDA84C92.png -#srv/web/owncloud/core/doc/user/_images/1000000000000175000000FAB2A2B294.png -#srv/web/owncloud/core/doc/user/_images/1000000000000195000000EF7E44082C.png -#srv/web/owncloud/core/doc/user/_images/10000000000001CE000000F2E2084BA1.png -#srv/web/owncloud/core/doc/user/_images/100000000000041D0000003D52225C0D.png -#srv/web/owncloud/core/doc/user/_images/1000000000000453000001BFFCF48776.png -#srv/web/owncloud/core/doc/user/_images/1000000000000467000002B63162E59B.png -#srv/web/owncloud/core/doc/user/_images/10000000000004690000026615360BEB.png -#srv/web/owncloud/core/doc/user/_images/100000000000046D0000015F4B5494A9.png -#srv/web/owncloud/core/doc/user/_images/100000000000046F000000DEA2BFCD9B.png -#srv/web/owncloud/core/doc/user/_images/1000000000000470000001B68AE60DD3.png -#srv/web/owncloud/core/doc/user/_images/10000000000004710000014BBC34499D.png -#srv/web/owncloud/core/doc/user/_images/100000000000047200000129CB014025.png -#srv/web/owncloud/core/doc/user/_images/100000000000047700000219A3013A92.png -#srv/web/owncloud/core/doc/user/_images/1000000000000479000002887E7F48EA.png -#srv/web/owncloud/core/doc/user/_images/100000000000047A000000B727198874.png -#srv/web/owncloud/core/doc/user/_images/100000000000047A000000FB86FF2A9A.png -#srv/web/owncloud/core/doc/user/_images/100000000000047A0000011C6682A254.png -#srv/web/owncloud/core/doc/user/_images/100000000000048100000245268CDB7A.png #srv/web/owncloud/core/doc/user/_images/bookmark_addurl.png #srv/web/owncloud/core/doc/user/_images/bookmark_setting.png -#srv/web/owncloud/core/doc/user/_images/calendar_createevent.png +#srv/web/owncloud/core/doc/user/_images/calendar_create_event.png +#srv/web/owncloud/core/doc/user/_images/calendar_create_event_repeat.png +#srv/web/owncloud/core/doc/user/_images/calendar_create_event_share.png +#srv/web/owncloud/core/doc/user/_images/calendar_create_new.png +#srv/web/owncloud/core/doc/user/_images/calendar_default.png +#srv/web/owncloud/core/doc/user/_images/calendar_edit_event.png #srv/web/owncloud/core/doc/user/_images/calendar_export.png #srv/web/owncloud/core/doc/user/_images/calendar_import.png -#srv/web/owncloud/core/doc/user/_images/calendar_manage-calendars.png #srv/web/owncloud/core/doc/user/_images/calendar_newtimezone1.png +#srv/web/owncloud/core/doc/user/_images/calendar_settings.png +#srv/web/owncloud/core/doc/user/_images/contact_address_book_add.png #srv/web/owncloud/core/doc/user/_images/contact_bottombar.png #srv/web/owncloud/core/doc/user/_images/contact_crop.jpg -#srv/web/owncloud/core/doc/user/_images/contact_del_ab.png -#srv/web/owncloud/core/doc/user/_images/contact_emptycontact.png -#srv/web/owncloud/core/doc/user/_images/contact_picture.jpg +#srv/web/owncloud/core/doc/user/_images/contact_new.png +#srv/web/owncloud/core/doc/user/_images/contact_picture.png +#srv/web/owncloud/core/doc/user/_images/contact_picture_default.png #srv/web/owncloud/core/doc/user/_images/contact_syncopt.jpg #srv/web/owncloud/core/doc/user/_images/contact_thunderbird-Symbol_Gear.jpg #srv/web/owncloud/core/doc/user/_images/contact_thunderbird-Symbol_Impeller.jpg #srv/web/owncloud/core/doc/user/_images/contact_thunderbird-URL_config.jpg #srv/web/owncloud/core/doc/user/_images/contact_uploadbutton.png #srv/web/owncloud/core/doc/user/_images/contact_vcfpick.jpg +#srv/web/owncloud/core/doc/user/_images/contacts_empty.png +#srv/web/owncloud/core/doc/user/_images/contacts_settings.png +#srv/web/owncloud/core/doc/user/_images/deleted_files.png +#srv/web/owncloud/core/doc/user/_images/documents_personal_settings.png #srv/web/owncloud/core/doc/user/_images/dolphin_webdav.png +#srv/web/owncloud/core/doc/user/_images/download.png +#srv/web/owncloud/core/doc/user/_images/email_address_personal_settings.png +#srv/web/owncloud/core/doc/user/_images/encryption1.png +#srv/web/owncloud/core/doc/user/_images/encryption2.png +#srv/web/owncloud/core/doc/user/_images/encryption3.png +#srv/web/owncloud/core/doc/user/_images/encryption4.png +#srv/web/owncloud/core/doc/user/_images/event_export.png #srv/web/owncloud/core/doc/user/_images/explorer_webdav.png -#srv/web/owncloud/core/doc/user/_images/external_google_drive_1_sign_in.png -#srv/web/owncloud/core/doc/user/_images/external_google_drive_2_verify.png -#srv/web/owncloud/core/doc/user/_images/external_google_drive_3_create_project.png -#srv/web/owncloud/core/doc/user/_images/external_google_drive_4_enable_api.png -#srv/web/owncloud/core/doc/user/_images/external_google_drive_5_setup_ownCloud.png -#srv/web/owncloud/core/doc/user/_images/external_google_drive_6_accept.png #srv/web/owncloud/core/doc/user/_images/files_versioning.png +#srv/web/owncloud/core/doc/user/_images/full_name.png #srv/web/owncloud/core/doc/user/_images/gnome3_nautilus_webdav.png #srv/web/owncloud/core/doc/user/_images/kdes.png #srv/web/owncloud/core/doc/user/_images/kdes1.png @@ -9718,19 +9454,36 @@ srv/web/owncloud #srv/web/owncloud/core/doc/user/_images/kdes6.png #srv/web/owncloud/core/doc/user/_images/kdes7.png #srv/web/owncloud/core/doc/user/_images/kdes9.png +#srv/web/owncloud/core/doc/user/_images/language_personal_settings.png +#srv/web/owncloud/core/doc/user/_images/notifications_personal_settings.png #srv/web/owncloud/core/doc/user/_images/oc_connect.png #srv/web/owncloud/core/doc/user/_images/oc_documents.png #srv/web/owncloud/core/doc/user/_images/oc_documents_col_edit.png #srv/web/owncloud/core/doc/user/_images/oc_documents_edit.png #srv/web/owncloud/core/doc/user/_images/oc_documents_share.png -#srv/web/owncloud/core/doc/user/_images/oc_files_share.png -#srv/web/owncloud/core/doc/user/_images/oc_filesweb.png #srv/web/owncloud/core/doc/user/_images/oc_filesweb_navigate.png #srv/web/owncloud/core/doc/user/_images/oc_filesweb_new.png -#srv/web/owncloud/core/doc/user/_images/oc_ui.png -#srv/web/owncloud/core/doc/user/_images/oc_user_preferences.png +#srv/web/owncloud/core/doc/user/_images/oc_main_web.png +#srv/web/owncloud/core/doc/user/_images/oc_main_web_labelled.png +#srv/web/owncloud/core/doc/user/_images/oc_personal_settings_dropdown.png #srv/web/owncloud/core/doc/user/_images/osx_webdav1.png #srv/web/owncloud/core/doc/user/_images/osx_webdav2.png +#srv/web/owncloud/core/doc/user/_images/password_change.png +#srv/web/owncloud/core/doc/user/_images/personal_settings.png +#srv/web/owncloud/core/doc/user/_images/profile_picture_personal_settings.png +#srv/web/owncloud/core/doc/user/_images/quota1.png +#srv/web/owncloud/core/doc/user/_images/s2s-add-remote-share.png +#srv/web/owncloud/core/doc/user/_images/s2s-connect-to-remote-share.png +#srv/web/owncloud/core/doc/user/_images/s2s-create_public_share.png +#srv/web/owncloud/core/doc/user/_images/s2s-remote-share-labeled.png +#srv/web/owncloud/core/doc/user/_images/usage_indicator.png +#srv/web/owncloud/core/doc/user/_images/users-files.png +#srv/web/owncloud/core/doc/user/_images/users-overlays-sharepoint.png +#srv/web/owncloud/core/doc/user/_images/users-overlays-win-net-drive.png +#srv/web/owncloud/core/doc/user/_images/users-overlays.png +#srv/web/owncloud/core/doc/user/_images/users-share-local.png +#srv/web/owncloud/core/doc/user/_images/users-share-local2.png +#srv/web/owncloud/core/doc/user/_images/users-share-public.png #srv/web/owncloud/core/doc/user/_sources #srv/web/owncloud/core/doc/user/_sources/bookmarks.txt #srv/web/owncloud/core/doc/user/_sources/contents.txt @@ -9745,10 +9498,11 @@ srv/web/owncloud #srv/web/owncloud/core/doc/user/_sources/files/filesweb.txt #srv/web/owncloud/core/doc/user/_sources/files/index.txt #srv/web/owncloud/core/doc/user/_sources/files/quota.txt +#srv/web/owncloud/core/doc/user/_sources/files/server_to_server_using.txt #srv/web/owncloud/core/doc/user/_sources/files/sync.txt #srv/web/owncloud/core/doc/user/_sources/files/versioncontrol.txt #srv/web/owncloud/core/doc/user/_sources/index.txt -#srv/web/owncloud/core/doc/user/_sources/migration.txt +#srv/web/owncloud/core/doc/user/_sources/installing_apps.txt #srv/web/owncloud/core/doc/user/_sources/pim #srv/web/owncloud/core/doc/user/_sources/pim/calendar.txt #srv/web/owncloud/core/doc/user/_sources/pim/contacts.txt @@ -9759,9 +9513,8 @@ srv/web/owncloud #srv/web/owncloud/core/doc/user/_sources/pim/sync_thunderbird.txt #srv/web/owncloud/core/doc/user/_sources/pim/troubleshooting.txt #srv/web/owncloud/core/doc/user/_sources/userpreferences.txt -#srv/web/owncloud/core/doc/user/_sources/web_guide -#srv/web/owncloud/core/doc/user/_sources/web_guide/index.txt #srv/web/owncloud/core/doc/user/_sources/webinterface.txt +#srv/web/owncloud/core/doc/user/_sources/whats_new.txt #srv/web/owncloud/core/doc/user/_static #srv/web/owncloud/core/doc/user/_static/ajax-loader.gif #srv/web/owncloud/core/doc/user/_static/basic.css @@ -9806,11 +9559,12 @@ srv/web/owncloud #srv/web/owncloud/core/doc/user/files/filesweb.html #srv/web/owncloud/core/doc/user/files/index.html #srv/web/owncloud/core/doc/user/files/quota.html +#srv/web/owncloud/core/doc/user/files/server_to_server_using.html #srv/web/owncloud/core/doc/user/files/sync.html #srv/web/owncloud/core/doc/user/files/versioncontrol.html #srv/web/owncloud/core/doc/user/genindex.html #srv/web/owncloud/core/doc/user/index.html -#srv/web/owncloud/core/doc/user/migration.html +#srv/web/owncloud/core/doc/user/installing_apps.html #srv/web/owncloud/core/doc/user/objects.inv #srv/web/owncloud/core/doc/user/pim #srv/web/owncloud/core/doc/user/pim/calendar.html @@ -9824,9 +9578,8 @@ srv/web/owncloud #srv/web/owncloud/core/doc/user/search.html #srv/web/owncloud/core/doc/user/searchindex.js #srv/web/owncloud/core/doc/user/userpreferences.html -#srv/web/owncloud/core/doc/user/web_guide -#srv/web/owncloud/core/doc/user/web_guide/index.html #srv/web/owncloud/core/doc/user/webinterface.html +#srv/web/owncloud/core/doc/user/whats_new.html #srv/web/owncloud/core/fonts #srv/web/owncloud/core/fonts/LICENSE.txt #srv/web/owncloud/core/fonts/OpenSans-Bold.woff @@ -9890,6 +9643,8 @@ srv/web/owncloud #srv/web/owncloud/core/img/actions/public.svg #srv/web/owncloud/core/img/actions/rename.png #srv/web/owncloud/core/img/actions/rename.svg +#srv/web/owncloud/core/img/actions/search-white.png +#srv/web/owncloud/core/img/actions/search-white.svg #srv/web/owncloud/core/img/actions/search.png #srv/web/owncloud/core/img/actions/search.svg #srv/web/owncloud/core/img/actions/settings.png @@ -10083,7 +9838,63 @@ srv/web/owncloud #srv/web/owncloud/core/js/octemplate.js #srv/web/owncloud/core/js/placeholder.js #srv/web/owncloud/core/js/placeholders.js +#srv/web/owncloud/core/js/select2 +#srv/web/owncloud/core/js/select2/LICENSE +#srv/web/owncloud/core/js/select2/README.md +#srv/web/owncloud/core/js/select2/bower.json +#srv/web/owncloud/core/js/select2/component.json +#srv/web/owncloud/core/js/select2/composer.json +#srv/web/owncloud/core/js/select2/package.json +#srv/web/owncloud/core/js/select2/release.sh +#srv/web/owncloud/core/js/select2/select2-bootstrap.css +#srv/web/owncloud/core/js/select2/select2.jquery.json +#srv/web/owncloud/core/js/select2/select2.js +#srv/web/owncloud/core/js/select2/select2_locale_ar.js +#srv/web/owncloud/core/js/select2/select2_locale_bg.js +#srv/web/owncloud/core/js/select2/select2_locale_ca.js +#srv/web/owncloud/core/js/select2/select2_locale_cs.js +#srv/web/owncloud/core/js/select2/select2_locale_da.js +#srv/web/owncloud/core/js/select2/select2_locale_de.js +#srv/web/owncloud/core/js/select2/select2_locale_el.js +#srv/web/owncloud/core/js/select2/select2_locale_en.js.template +#srv/web/owncloud/core/js/select2/select2_locale_es.js +#srv/web/owncloud/core/js/select2/select2_locale_et.js +#srv/web/owncloud/core/js/select2/select2_locale_eu.js +#srv/web/owncloud/core/js/select2/select2_locale_fa.js +#srv/web/owncloud/core/js/select2/select2_locale_fi.js +#srv/web/owncloud/core/js/select2/select2_locale_fr.js +#srv/web/owncloud/core/js/select2/select2_locale_gl.js +#srv/web/owncloud/core/js/select2/select2_locale_he.js +#srv/web/owncloud/core/js/select2/select2_locale_hr.js +#srv/web/owncloud/core/js/select2/select2_locale_hu.js +#srv/web/owncloud/core/js/select2/select2_locale_id.js +#srv/web/owncloud/core/js/select2/select2_locale_is.js +#srv/web/owncloud/core/js/select2/select2_locale_it.js +#srv/web/owncloud/core/js/select2/select2_locale_ja.js +#srv/web/owncloud/core/js/select2/select2_locale_ka.js +#srv/web/owncloud/core/js/select2/select2_locale_ko.js +#srv/web/owncloud/core/js/select2/select2_locale_lt.js +#srv/web/owncloud/core/js/select2/select2_locale_lv.js +#srv/web/owncloud/core/js/select2/select2_locale_mk.js +#srv/web/owncloud/core/js/select2/select2_locale_ms.js +#srv/web/owncloud/core/js/select2/select2_locale_nl.js +#srv/web/owncloud/core/js/select2/select2_locale_no.js +#srv/web/owncloud/core/js/select2/select2_locale_pl.js +#srv/web/owncloud/core/js/select2/select2_locale_pt-BR.js +#srv/web/owncloud/core/js/select2/select2_locale_pt-PT.js +#srv/web/owncloud/core/js/select2/select2_locale_ro.js +#srv/web/owncloud/core/js/select2/select2_locale_rs.js +#srv/web/owncloud/core/js/select2/select2_locale_ru.js +#srv/web/owncloud/core/js/select2/select2_locale_sk.js +#srv/web/owncloud/core/js/select2/select2_locale_sv.js +#srv/web/owncloud/core/js/select2/select2_locale_th.js +#srv/web/owncloud/core/js/select2/select2_locale_tr.js +#srv/web/owncloud/core/js/select2/select2_locale_uk.js +#srv/web/owncloud/core/js/select2/select2_locale_vi.js +#srv/web/owncloud/core/js/select2/select2_locale_zh-CN.js +#srv/web/owncloud/core/js/select2/select2_locale_zh-TW.js #srv/web/owncloud/core/js/setup.js +#srv/web/owncloud/core/js/setupchecks.js #srv/web/owncloud/core/js/share.js #srv/web/owncloud/core/js/singleselect.js #srv/web/owncloud/core/js/snap.js @@ -10269,6 +10080,7 @@ srv/web/owncloud #srv/web/owncloud/core/templates/message.html #srv/web/owncloud/core/templates/singleuser.user.php #srv/web/owncloud/core/templates/tags.html +#srv/web/owncloud/core/templates/untrustedDomain.php #srv/web/owncloud/core/templates/update.admin.php #srv/web/owncloud/core/templates/update.user.php #srv/web/owncloud/cron.php @@ -11920,11 +11732,14 @@ srv/web/owncloud #srv/web/owncloud/lib/private/connector/sabre/quotaplugin.php #srv/web/owncloud/lib/private/connector/sabre/request.php #srv/web/owncloud/lib/private/connector/sabre/server.php +#srv/web/owncloud/lib/private/contacts +#srv/web/owncloud/lib/private/contacts/localaddressbook.php #srv/web/owncloud/lib/private/contactsmanager.php #srv/web/owncloud/lib/private/davclient.php #srv/web/owncloud/lib/private/db #srv/web/owncloud/lib/private/db.php #srv/web/owncloud/lib/private/db/adapter.php +#srv/web/owncloud/lib/private/db/adaptermysql.php #srv/web/owncloud/lib/private/db/adapteroci8.php #srv/web/owncloud/lib/private/db/adapterpgsql.php #srv/web/owncloud/lib/private/db/adaptersqlite.php @@ -11937,12 +11752,14 @@ srv/web/owncloud #srv/web/owncloud/lib/private/db/mdb2schemawriter.php #srv/web/owncloud/lib/private/db/migrationexception.php #srv/web/owncloud/lib/private/db/migrator.php +#srv/web/owncloud/lib/private/db/mssqlmigrator.php #srv/web/owncloud/lib/private/db/mysqlmigrator.php #srv/web/owncloud/lib/private/db/nocheckmigrator.php #srv/web/owncloud/lib/private/db/oracleconnection.php #srv/web/owncloud/lib/private/db/oraclemigrator.php #srv/web/owncloud/lib/private/db/pgsqltools.php #srv/web/owncloud/lib/private/db/sqlitemigrator.php +#srv/web/owncloud/lib/private/db/sqlitesessioninit.php #srv/web/owncloud/lib/private/db/statementwrapper.php #srv/web/owncloud/lib/private/defaults.php #srv/web/owncloud/lib/private/eventsource.php @@ -12025,6 +11842,7 @@ srv/web/owncloud #srv/web/owncloud/lib/private/hooks/forwardingemitter.php #srv/web/owncloud/lib/private/hooks/legacyemitter.php #srv/web/owncloud/lib/private/hooks/publicemitter.php +#srv/web/owncloud/lib/private/httphelper.php #srv/web/owncloud/lib/private/image.php #srv/web/owncloud/lib/private/installer.php #srv/web/owncloud/lib/private/json.php @@ -12065,6 +11883,7 @@ srv/web/owncloud #srv/web/owncloud/lib/private/migration/provider.php #srv/web/owncloud/lib/private/mimetypes.list.php #srv/web/owncloud/lib/private/navigationmanager.php +#srv/web/owncloud/lib/private/needsupdateexception.php #srv/web/owncloud/lib/private/notsquareexception.php #srv/web/owncloud/lib/private/ocs #srv/web/owncloud/lib/private/ocs.php @@ -12086,7 +11905,6 @@ srv/web/owncloud #srv/web/owncloud/lib/private/preview/provider.php #srv/web/owncloud/lib/private/preview/svg.php #srv/web/owncloud/lib/private/preview/txt.php -#srv/web/owncloud/lib/private/preview/unknown.php #srv/web/owncloud/lib/private/previewmanager.php #srv/web/owncloud/lib/private/repair.php #srv/web/owncloud/lib/private/repairstep.php @@ -12106,6 +11924,7 @@ srv/web/owncloud #srv/web/owncloud/lib/private/search/result/folder.php #srv/web/owncloud/lib/private/search/result/image.php #srv/web/owncloud/lib/private/server.php +#srv/web/owncloud/lib/private/serviceunavailableexception.php #srv/web/owncloud/lib/private/session #srv/web/owncloud/lib/private/session/internal.php #srv/web/owncloud/lib/private/session/memory.php @@ -12224,6 +12043,8 @@ srv/web/owncloud #srv/web/owncloud/lib/public/icontainer.php #srv/web/owncloud/lib/public/idb.php #srv/web/owncloud/lib/public/idbconnection.php +#srv/web/owncloud/lib/public/igroup.php +#srv/web/owncloud/lib/public/igroupmanager.php #srv/web/owncloud/lib/public/ihelper.php #srv/web/owncloud/lib/public/il10n.php #srv/web/owncloud/lib/public/ilogger.php @@ -12256,7 +12077,9 @@ srv/web/owncloud #srv/web/owncloud/lib/repair #srv/web/owncloud/lib/repair/collation.php #srv/web/owncloud/lib/repair/innodb.php +#srv/web/owncloud/lib/repair/preview.php #srv/web/owncloud/lib/repair/repairmimetypes.php +#srv/web/owncloud/lib/repair/searchlucenetables.php #srv/web/owncloud/occ #srv/web/owncloud/ocs #srv/web/owncloud/ocs/providers.php @@ -12275,20 +12098,19 @@ srv/web/owncloud #srv/web/owncloud/search/templates #srv/web/owncloud/search/templates/part.results.php #srv/web/owncloud/settings -#srv/web/owncloud/settings/admin #srv/web/owncloud/settings/admin.php -#srv/web/owncloud/settings/admin/controller.php #srv/web/owncloud/settings/ajax #srv/web/owncloud/settings/ajax/apps #srv/web/owncloud/settings/ajax/apps/ocs.php #srv/web/owncloud/settings/ajax/changedisplayname.php +#srv/web/owncloud/settings/ajax/checksetup.php #srv/web/owncloud/settings/ajax/creategroup.php #srv/web/owncloud/settings/ajax/createuser.php #srv/web/owncloud/settings/ajax/decryptall.php #srv/web/owncloud/settings/ajax/deletekeys.php #srv/web/owncloud/settings/ajax/disableapp.php #srv/web/owncloud/settings/ajax/enableapp.php -#srv/web/owncloud/settings/ajax/excludegroups.php +#srv/web/owncloud/settings/ajax/geteveryonecount.php #srv/web/owncloud/settings/ajax/getlog.php #srv/web/owncloud/settings/ajax/grouplist.php #srv/web/owncloud/settings/ajax/installapp.php @@ -12306,9 +12128,12 @@ srv/web/owncloud #srv/web/owncloud/settings/ajax/uninstallapp.php #srv/web/owncloud/settings/ajax/updateapp.php #srv/web/owncloud/settings/ajax/userlist.php +#srv/web/owncloud/settings/application.php #srv/web/owncloud/settings/apps.php #srv/web/owncloud/settings/changepassword #srv/web/owncloud/settings/changepassword/controller.php +#srv/web/owncloud/settings/controller +#srv/web/owncloud/settings/controller/mailsettingscontroller.php #srv/web/owncloud/settings/css #srv/web/owncloud/settings/css/settings.css #srv/web/owncloud/settings/help.php @@ -12330,6 +12155,7 @@ srv/web/owncloud #srv/web/owncloud/settings/js/apps.js #srv/web/owncloud/settings/js/log.js #srv/web/owncloud/settings/js/personal.js +#srv/web/owncloud/settings/js/settings.js #srv/web/owncloud/settings/js/users #srv/web/owncloud/settings/js/users/deleteHandler.js #srv/web/owncloud/settings/js/users/filter.js @@ -12434,6 +12260,10 @@ srv/web/owncloud #srv/web/owncloud/settings/templates/users/part.grouplist.php #srv/web/owncloud/settings/templates/users/part.setquota.php #srv/web/owncloud/settings/templates/users/part.userlist.php +#srv/web/owncloud/settings/tests +#srv/web/owncloud/settings/tests/js +#srv/web/owncloud/settings/tests/js/users +#srv/web/owncloud/settings/tests/js/users/deleteHandlerSpec.js #srv/web/owncloud/settings/users.php #srv/web/owncloud/status.php #srv/web/owncloud/themes diff --git a/config/rootfiles/packages/teamspeak b/config/rootfiles/packages/teamspeak deleted file mode 100644 index b7c235882b..0000000000 --- a/config/rootfiles/packages/teamspeak +++ /dev/null @@ -1,3 +0,0 @@ -etc/rc.d/init.d/teamspeak -opt/teamspeak -var/ipfire/backup/addons/includes/teamspeak diff --git a/config/strongswan/charon.conf b/config/strongswan/charon.conf new file mode 100644 index 0000000000..a5ff0bee51 --- /dev/null +++ b/config/strongswan/charon.conf @@ -0,0 +1,302 @@ +# Options for the charon IKE daemon. +charon { + # Accept unencrypted ID and HASH payloads in IKEv1 Main Mode. + accept_unencrypted_mainmode_messages = yes + + # Maximum number of half-open IKE_SAs for a single peer IP. + # block_threshold = 5 + + # Whether relations in validated certificate chains should be cached in + # memory. + # cert_cache = yes + + # Send Cisco Unity vendor ID payload (IKEv1 only). + cisco_unity = yes + + # Close the IKE_SA if setup of the CHILD_SA along with IKE_AUTH failed. + # close_ike_on_child_failure = no + + # Number of half-open IKE_SAs that activate the cookie mechanism. + # cookie_threshold = 10 + + # Use ANSI X9.42 DH exponent size or optimum size matched to cryptographic + # strength. + # dh_exponent_ansi_x9_42 = yes + + # DNS server assigned to peer via configuration payload (CP). + # dns1 = + + # DNS server assigned to peer via configuration payload (CP). + # dns2 = + + # Enable Denial of Service protection using cookies and aggressiveness + # checks. + # dos_protection = yes + + # Compliance with the errata for RFC 4753. + # ecp_x_coordinate_only = yes + + # Free objects during authentication (might conflict with plugins). + # flush_auth_cfg = no + + # Maximum size (complete IP datagram size in bytes) of a sent IKE fragment + # when using proprietary IKEv1 or standardized IKEv2 fragmentation (0 for + # address family specific default values). If specified this limit is + # used for both IPv4 and IPv6. + # fragment_size = 0 + + # Name of the group the daemon changes to after startup. + # group = + + # Timeout in seconds for connecting IKE_SAs (also see IKE_SA_INIT DROPPING). + # half_open_timeout = 30 + + # Enable hash and URL support. + # hash_and_url = no + + # Allow IKEv1 Aggressive Mode with pre-shared keys as responder. + # i_dont_care_about_security_and_use_aggressive_mode_psk = no + + # A space-separated list of routing tables to be excluded from route + # lookups. + # ignore_routing_tables = + + # Maximum number of IKE_SAs that can be established at the same time before + # new connection attempts are blocked. + # ikesa_limit = 0 + + # Number of exclusively locked segments in the hash table. + ikesa_table_segments = 4 + + # Size of the IKE_SA hash table. + ikesa_table_size = 32 + + # Whether to close IKE_SA if the only CHILD_SA closed due to inactivity. + # inactivity_close_ike = no + + # Limit new connections based on the current number of half open IKE_SAs, + # see IKE_SA_INIT DROPPING in strongswan.conf(5). + init_limit_half_open = 1000 + + # Limit new connections based on the number of queued jobs. + # init_limit_job_load = 0 + + # Causes charon daemon to ignore IKE initiation requests. + # initiator_only = no + + # Install routes into a separate routing table for established IPsec + # tunnels. + # install_routes = yes + + # Install virtual IP addresses. + # install_virtual_ip = yes + + # The name of the interface on which virtual IP addresses should be + # installed. + # install_virtual_ip_on = + + # Check daemon, libstrongswan and plugin integrity at startup. + # integrity_test = no + + # A comma-separated list of network interfaces that should be ignored, if + # interfaces_use is specified this option has no effect. + # interfaces_ignore = + + # A comma-separated list of network interfaces that should be used by + # charon. All other interfaces are ignored. + # interfaces_use = + + # NAT keep alive interval. + # keep_alive = 20s + + # Plugins to load in the IKE daemon charon. + # load = + + # Determine plugins to load via each plugin's load option. + # load_modular = no + + # Maximum packet size accepted by charon. + # max_packet = 10000 + + # Enable multiple authentication exchanges (RFC 4739). + # multiple_authentication = yes + + # WINS servers assigned to peer via configuration payload (CP). + # nbns1 = + + # WINS servers assigned to peer via configuration payload (CP). + # nbns2 = + + # UDP port used locally. If set to 0 a random port will be allocated. + # port = 500 + + # UDP port used locally in case of NAT-T. If set to 0 a random port will be + # allocated. Has to be different from charon.port, otherwise a random port + # will be allocated. + # port_nat_t = 4500 + + # By default public IPv6 addresses are preferred over temporary ones (RFC + # 4941), to make connections more stable. Enable this option to reverse + # this. + # prefer_temporary_addrs = no + + # Process RTM_NEWROUTE and RTM_DELROUTE events. + # process_route = yes + + # Delay in ms for receiving packets, to simulate larger RTT. + # receive_delay = 0 + + # Delay request messages. + # receive_delay_request = yes + + # Delay response messages. + # receive_delay_response = yes + + # Specific IKEv2 message type to delay, 0 for any. + # receive_delay_type = 0 + + # Size of the AH/ESP replay window, in packets. + # replay_window = 32 + + # Base to use for calculating exponential back off, see IKEv2 RETRANSMISSION + # in strongswan.conf(5). + # retransmit_base = 1.8 + + # Timeout in seconds before sending first retransmit. + # retransmit_timeout = 4.0 + + # Number of times to retransmit a packet before giving up. + # retransmit_tries = 5 + + # Interval to use when retrying to initiate an IKE_SA (e.g. if DNS + # resolution failed), 0 to disable retries. + # retry_initiate_interval = 0 + + # Initiate CHILD_SA within existing IKE_SAs. + # reuse_ikesa = yes + + # Numerical routing table to install routes to. + # routing_table = + + # Priority of the routing table. + # routing_table_prio = + + # Delay in ms for sending packets, to simulate larger RTT. + # send_delay = 0 + + # Delay request messages. + # send_delay_request = yes + + # Delay response messages. + # send_delay_response = yes + + # Specific IKEv2 message type to delay, 0 for any. + # send_delay_type = 0 + + # Send strongSwan vendor ID payload + # send_vendor_id = no + + # Number of worker threads in charon. + # threads = 16 + + # Name of the user the daemon changes to after startup. + # user = + + crypto_test { + + # Benchmark crypto algorithms and order them by efficiency. + # bench = no + + # Buffer size used for crypto benchmark. + # bench_size = 1024 + + # Number of iterations to test each algorithm. + # bench_time = 50 + + # Test crypto algorithms during registration (requires test vectors + # provided by the test-vectors plugin). + # on_add = no + + # Test crypto algorithms on each crypto primitive instantiation. + # on_create = no + + # Strictly require at least one test vector to enable an algorithm. + # required = no + + # Whether to test RNG with TRUE quality; requires a lot of entropy. + # rng_true = no + + } + + host_resolver { + + # Maximum number of concurrent resolver threads (they are terminated if + # unused). + # max_threads = 3 + + # Minimum number of resolver threads to keep around. + # min_threads = 0 + + } + + leak_detective { + + # Includes source file names and line numbers in leak detective output. + # detailed = yes + + # Threshold in bytes for leaks to be reported (0 to report all). + # usage_threshold = 10240 + + # Threshold in number of allocations for leaks to be reported (0 to + # report all). + # usage_threshold_count = 0 + + } + + processor { + + # Section to configure the number of reserved threads per priority class + # see JOB PRIORITY MANAGEMENT in strongswan.conf(5). + priority_threads { + + } + + } + + # Section containing a list of scripts (name = path) that are executed when + # the daemon is started. + start-scripts { + + } + + # Section containing a list of scripts (name = path) that are executed when + # the daemon is terminated. + stop-scripts { + + } + + tls { + + # List of TLS encryption ciphers. + # cipher = + + # List of TLS key exchange methods. + # key_exchange = + + # List of TLS MAC algorithms. + # mac = + + # List of TLS cipher suites. + # suites = + + } + + x509 { + + # Discard certificates with unsupported or unknown critical extensions. + # enforce_critical = yes + + } + +} + diff --git a/doc/language_issues.de b/doc/language_issues.de index 34afa732b1..e41f48b777 100644 --- a/doc/language_issues.de +++ b/doc/language_issues.de @@ -632,6 +632,7 @@ WARNING: untranslated string: community rules WARNING: untranslated string: dead peer detection WARNING: untranslated string: emerging rules WARNING: untranslated string: fwhost err hostip +WARNING: untranslated string: no data WARNING: untranslated string: qos add subclass WARNING: untranslated string: route config changed WARNING: untranslated string: routing config added diff --git a/doc/language_issues.en b/doc/language_issues.en index f50f01d47d..290da0275e 100644 --- a/doc/language_issues.en +++ b/doc/language_issues.en @@ -664,6 +664,7 @@ WARNING: translation string unused: yearly firewallhits WARNING: untranslated string: Scan for Songs WARNING: untranslated string: bytes WARNING: untranslated string: fwhost err hostip +WARNING: untranslated string: no data WARNING: untranslated string: route config changed WARNING: untranslated string: routing config added WARNING: untranslated string: routing config changed diff --git a/doc/language_issues.es b/doc/language_issues.es index 4842ee22b7..c93d40cb4f 100644 --- a/doc/language_issues.es +++ b/doc/language_issues.es @@ -864,10 +864,13 @@ WARNING: untranslated string: grouptype WARNING: untranslated string: hardware support WARNING: untranslated string: imei WARNING: untranslated string: imsi +WARNING: untranslated string: incoming compression in bytes per second WARNING: untranslated string: incoming firewall access +WARNING: untranslated string: incoming overhead in bytes per second WARNING: untranslated string: integrity WARNING: untranslated string: invalid input for dpd delay WARNING: untranslated string: invalid input for dpd timeout +WARNING: untranslated string: invalid input for valid till days WARNING: untranslated string: ipsec WARNING: untranslated string: ipsec network WARNING: untranslated string: last @@ -900,6 +903,7 @@ WARNING: untranslated string: modem status WARNING: untranslated string: monitor interface WARNING: untranslated string: most preferred WARNING: untranslated string: nameserver +WARNING: untranslated string: no data WARNING: untranslated string: no hardware random number generator WARNING: untranslated string: not a valid dh key WARNING: untranslated string: notice @@ -913,9 +917,12 @@ WARNING: untranslated string: openvpn prefix openvpn subnet WARNING: untranslated string: openvpn prefix remote subnet WARNING: untranslated string: openvpn subnet is used WARNING: untranslated string: other +WARNING: untranslated string: outgoing compression in bytes per second WARNING: untranslated string: outgoing firewall access WARNING: untranslated string: outgoing firewall p2p allow WARNING: untranslated string: outgoing firewall p2p deny +WARNING: untranslated string: outgoing overhead in bytes per second +WARNING: untranslated string: ovpn add conf WARNING: untranslated string: ovpn crypt options WARNING: untranslated string: ovpn dh WARNING: untranslated string: ovpn dh new key diff --git a/doc/language_issues.fr b/doc/language_issues.fr index a411de4fe8..c1dedc59c3 100644 --- a/doc/language_issues.fr +++ b/doc/language_issues.fr @@ -875,10 +875,13 @@ WARNING: untranslated string: grouptype WARNING: untranslated string: hardware support WARNING: untranslated string: imei WARNING: untranslated string: imsi +WARNING: untranslated string: incoming compression in bytes per second WARNING: untranslated string: incoming firewall access +WARNING: untranslated string: incoming overhead in bytes per second WARNING: untranslated string: integrity WARNING: untranslated string: invalid input for dpd delay WARNING: untranslated string: invalid input for dpd timeout +WARNING: untranslated string: invalid input for valid till days WARNING: untranslated string: ipsec WARNING: untranslated string: ipsec network WARNING: untranslated string: last @@ -911,6 +914,7 @@ WARNING: untranslated string: modem status WARNING: untranslated string: monitor interface WARNING: untranslated string: most preferred WARNING: untranslated string: nameserver +WARNING: untranslated string: no data WARNING: untranslated string: no hardware random number generator WARNING: untranslated string: not a valid dh key WARNING: untranslated string: notice @@ -926,7 +930,10 @@ WARNING: untranslated string: openvpn prefix openvpn subnet WARNING: untranslated string: openvpn prefix remote subnet WARNING: untranslated string: openvpn subnet is used WARNING: untranslated string: other +WARNING: untranslated string: outgoing compression in bytes per second WARNING: untranslated string: outgoing firewall access +WARNING: untranslated string: outgoing overhead in bytes per second +WARNING: untranslated string: ovpn add conf WARNING: untranslated string: ovpn crypt options WARNING: untranslated string: ovpn dh WARNING: untranslated string: ovpn dh new key diff --git a/doc/language_issues.nl b/doc/language_issues.nl index bb17cc7070..859cc1fd16 100644 --- a/doc/language_issues.nl +++ b/doc/language_issues.nl @@ -695,6 +695,9 @@ WARNING: untranslated string: gen dh WARNING: untranslated string: generate dh key WARNING: untranslated string: imei WARNING: untranslated string: imsi +WARNING: untranslated string: incoming compression in bytes per second +WARNING: untranslated string: incoming overhead in bytes per second +WARNING: untranslated string: invalid input for valid till days WARNING: untranslated string: masquerade blue WARNING: untranslated string: masquerade green WARNING: untranslated string: masquerade orange @@ -717,7 +720,11 @@ WARNING: untranslated string: modem sim information WARNING: untranslated string: modem status WARNING: untranslated string: monitor interface WARNING: untranslated string: nameserver +WARNING: untranslated string: no data WARNING: untranslated string: not a valid dh key +WARNING: untranslated string: outgoing compression in bytes per second +WARNING: untranslated string: outgoing overhead in bytes per second +WARNING: untranslated string: ovpn add conf WARNING: untranslated string: ovpn crypt options WARNING: untranslated string: ovpn dh WARNING: untranslated string: ovpn dh new key diff --git a/doc/language_issues.pl b/doc/language_issues.pl index 4842ee22b7..c93d40cb4f 100644 --- a/doc/language_issues.pl +++ b/doc/language_issues.pl @@ -864,10 +864,13 @@ WARNING: untranslated string: grouptype WARNING: untranslated string: hardware support WARNING: untranslated string: imei WARNING: untranslated string: imsi +WARNING: untranslated string: incoming compression in bytes per second WARNING: untranslated string: incoming firewall access +WARNING: untranslated string: incoming overhead in bytes per second WARNING: untranslated string: integrity WARNING: untranslated string: invalid input for dpd delay WARNING: untranslated string: invalid input for dpd timeout +WARNING: untranslated string: invalid input for valid till days WARNING: untranslated string: ipsec WARNING: untranslated string: ipsec network WARNING: untranslated string: last @@ -900,6 +903,7 @@ WARNING: untranslated string: modem status WARNING: untranslated string: monitor interface WARNING: untranslated string: most preferred WARNING: untranslated string: nameserver +WARNING: untranslated string: no data WARNING: untranslated string: no hardware random number generator WARNING: untranslated string: not a valid dh key WARNING: untranslated string: notice @@ -913,9 +917,12 @@ WARNING: untranslated string: openvpn prefix openvpn subnet WARNING: untranslated string: openvpn prefix remote subnet WARNING: untranslated string: openvpn subnet is used WARNING: untranslated string: other +WARNING: untranslated string: outgoing compression in bytes per second WARNING: untranslated string: outgoing firewall access WARNING: untranslated string: outgoing firewall p2p allow WARNING: untranslated string: outgoing firewall p2p deny +WARNING: untranslated string: outgoing overhead in bytes per second +WARNING: untranslated string: ovpn add conf WARNING: untranslated string: ovpn crypt options WARNING: untranslated string: ovpn dh WARNING: untranslated string: ovpn dh new key diff --git a/doc/language_issues.ru b/doc/language_issues.ru index c471de96fa..17e3199b11 100644 --- a/doc/language_issues.ru +++ b/doc/language_issues.ru @@ -859,11 +859,14 @@ WARNING: untranslated string: grouptype WARNING: untranslated string: hardware support WARNING: untranslated string: imei WARNING: untranslated string: imsi +WARNING: untranslated string: incoming compression in bytes per second WARNING: untranslated string: incoming firewall access +WARNING: untranslated string: incoming overhead in bytes per second WARNING: untranslated string: incoming traffic in bytes per second WARNING: untranslated string: integrity WARNING: untranslated string: invalid input for dpd delay WARNING: untranslated string: invalid input for dpd timeout +WARNING: untranslated string: invalid input for valid till days WARNING: untranslated string: ipsec WARNING: untranslated string: ipsec network WARNING: untranslated string: last @@ -896,6 +899,7 @@ WARNING: untranslated string: modem status WARNING: untranslated string: monitor interface WARNING: untranslated string: most preferred WARNING: untranslated string: nameserver +WARNING: untranslated string: no data WARNING: untranslated string: no hardware random number generator WARNING: untranslated string: not a valid dh key WARNING: untranslated string: notice @@ -909,8 +913,11 @@ WARNING: untranslated string: openvpn prefix openvpn subnet WARNING: untranslated string: openvpn prefix remote subnet WARNING: untranslated string: openvpn subnet is used WARNING: untranslated string: other +WARNING: untranslated string: outgoing compression in bytes per second WARNING: untranslated string: outgoing firewall access +WARNING: untranslated string: outgoing overhead in bytes per second WARNING: untranslated string: outgoing traffic in bytes per second +WARNING: untranslated string: ovpn add conf WARNING: untranslated string: ovpn crypt options WARNING: untranslated string: ovpn dh WARNING: untranslated string: ovpn dh new key diff --git a/doc/language_issues.tr b/doc/language_issues.tr index f50f01d47d..0ebd3988f9 100644 --- a/doc/language_issues.tr +++ b/doc/language_issues.tr @@ -664,6 +664,13 @@ WARNING: translation string unused: yearly firewallhits WARNING: untranslated string: Scan for Songs WARNING: untranslated string: bytes WARNING: untranslated string: fwhost err hostip +WARNING: untranslated string: incoming compression in bytes per second +WARNING: untranslated string: incoming overhead in bytes per second +WARNING: untranslated string: invalid input for valid till days +WARNING: untranslated string: no data +WARNING: untranslated string: outgoing compression in bytes per second +WARNING: untranslated string: outgoing overhead in bytes per second +WARNING: untranslated string: ovpn add conf WARNING: untranslated string: route config changed WARNING: untranslated string: routing config added WARNING: untranslated string: routing config changed diff --git a/doc/language_missings b/doc/language_missings index bf928516ca..05798b9114 100644 --- a/doc/language_missings +++ b/doc/language_missings @@ -331,10 +331,13 @@ < hardware support < imei < imsi +< incoming compression in bytes per second < incoming firewall access +< incoming overhead in bytes per second < integrity < invalid input for dpd delay < invalid input for dpd timeout +< invalid input for valid till days < ipsec < ipsec network < ipsec no connections @@ -391,7 +394,10 @@ < openvpn subnet is used < other < our donors +< outgoing compression in bytes per second < outgoing firewall access +< outgoing overhead in bytes per second +< ovpn add conf < ovpn crypt options < ovpn dh < ovpn dh new key @@ -882,10 +888,13 @@ < hardware support < imei < imsi +< incoming compression in bytes per second < incoming firewall access +< incoming overhead in bytes per second < integrity < invalid input for dpd delay < invalid input for dpd timeout +< invalid input for valid till days < ipsec < ipsec network < ipsec no connections @@ -940,6 +949,7 @@ < openvpn subnet is used < other < our donors +< outgoing compression in bytes per second < outgoing firewall access < outgoing firewall add ip group < outgoing firewall add mac group @@ -955,6 +965,8 @@ < outgoing firewall p2p description 2 < outgoing firewall p2p description 3 < outgoing firewall view group +< outgoing overhead in bytes per second +< ovpn add conf < ovpn crypt options < ovpn dh < ovpn dh new key @@ -1417,10 +1429,13 @@ < hardware support < imei < imsi +< incoming compression in bytes per second < incoming firewall access +< incoming overhead in bytes per second < integrity < invalid input for dpd delay < invalid input for dpd timeout +< invalid input for valid till days < ipsec < ipsec network < ipsec no connections @@ -1475,7 +1490,10 @@ < openvpn subnet is used < other < our donors +< outgoing compression in bytes per second < outgoing firewall access +< outgoing overhead in bytes per second +< ovpn add conf < ovpn crypt options < ovpn dh < ovpn dh new key @@ -1942,11 +1960,14 @@ < hour-graph < imei < imsi +< incoming compression in bytes per second < incoming firewall access +< incoming overhead in bytes per second < incoming traffic in bytes per second < integrity < invalid input for dpd delay < invalid input for dpd timeout +< invalid input for valid till days < ipsec < ipsec network < ipsec no connections @@ -2002,8 +2023,11 @@ < openvpn subnet is used < other < our donors +< outgoing compression in bytes per second < outgoing firewall access +< outgoing overhead in bytes per second < outgoing traffic in bytes per second +< ovpn add conf < ovpn crypt options < ovpn dh < ovpn dh new key diff --git a/html/cgi-bin/ddns.cgi b/html/cgi-bin/ddns.cgi index 55841b2b99..ea30319362 100644 --- a/html/cgi-bin/ddns.cgi +++ b/html/cgi-bin/ddns.cgi @@ -667,7 +667,7 @@ sub GenerateDDNSConfigFile { my $use_token = 0; # Handle token based auth for various providers. - if ($provider ~~ ["dns.lightningwirelabs.com", "entrydns.net", "regfish.com"] && $username eq "token") { + if ($provider ~~ ["dns.lightningwirelabs.com", "entrydns.net", "regfish.com", "spdns.de"] && $username eq "token") { $use_token = 1; # Handle token auth for freedns.afraid.org and regfish.com. diff --git a/html/cgi-bin/firewall.cgi b/html/cgi-bin/firewall.cgi index badee6b3c0..39b732ce36 100644 --- a/html/cgi-bin/firewall.cgi +++ b/html/cgi-bin/firewall.cgi @@ -66,6 +66,7 @@ my %ipsecsettings=(); my %aliases=(); my %optionsfw=(); my %ifaces=(); +my %rulehash=(); my @PROTOCOLS = ("TCP", "UDP", "ICMP", "IGMP", "AH", "ESP", "GRE","IPv6","IPIP"); @@ -194,6 +195,7 @@ if ($fwdfwsettings{'ACTION'} eq 'saverule') &General::readhasharray("$configfwdfw", \%configfwdfw); &General::readhasharray("$configinput", \%configinputfw); &General::readhasharray("$configoutgoing", \%configoutgoingfw); + my $maxkey; #Set Variables according to the JQuery code in protocol section if ($fwdfwsettings{'PROT'} eq 'TCP' || $fwdfwsettings{'PROT'} eq 'UDP') { @@ -230,157 +232,80 @@ if ($fwdfwsettings{'ACTION'} eq 'saverule') if( $fwdfwsettings{'grp1'} eq 'ipfire_src' && $fwdfwsettings{'grp2'} eq 'ipfire'){ $errormessage=$Lang::tr{'fwdfw err same'}; } - #INPUT part - if($fwdfwsettings{'grp2'} eq 'ipfire' && $fwdfwsettings{$fwdfwsettings{'grp1'}} ne 'ORANGE'){ + # INPUT part + if ($fwdfwsettings{'grp2'} eq 'ipfire' && $fwdfwsettings{$fwdfwsettings{'grp1'}} ne 'ORANGE'){ $fwdfwsettings{'config'}=$configinput; $fwdfwsettings{'chain'} = 'INPUTFW'; - my $maxkey=&General::findhasharraykey(\%configinputfw); - #check if we have an identical rule already - if($fwdfwsettings{'oldrulenumber'} eq $fwdfwsettings{'rulepos'}){ - foreach my $key (sort keys %configinputfw){ - if ( "$fwdfwsettings{'RULE_ACTION'},$fwdfwsettings{'ACTIVE'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}},$fwdfwsettings{'USE_SRC_PORT'},$fwdfwsettings{'PROT'},$fwdfwsettings{'ICMP_TYPES'},$fwdfwsettings{'SRC_PORT'},$fwdfwsettings{'USESRV'},$fwdfwsettings{'TGT_PROT'},$fwdfwsettings{'ICMP_TGT'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}},$fwdfwsettings{'LOG'},$fwdfwsettings{'TIME'},$fwdfwsettings{'TIME_MON'},$fwdfwsettings{'TIME_TUE'},$fwdfwsettings{'TIME_WED'},$fwdfwsettings{'TIME_THU'},$fwdfwsettings{'TIME_FRI'},$fwdfwsettings{'TIME_SAT'},$fwdfwsettings{'TIME_SUN'},$fwdfwsettings{'TIME_FROM'},$fwdfwsettings{'TIME_TO'},$fwdfwsettings{'USE_NAT'},$fwdfwsettings{$fwdfwsettings{'nat'}},$fwdfwsettings{'dnatport'},$fwdfwsettings{'nat'},$fwdfwsettings{'LIMIT_CON_CON'},$fwdfwsettings{'concon'},$fwdfwsettings{'RATE_LIMIT'},$fwdfwsettings{'ratecon'},$fwdfwsettings{'RATETIME'}" - eq "$configinputfw{$key}[0],$configinputfw{$key}[2],$configinputfw{$key}[3],$configinputfw{$key}[4],$configinputfw{$key}[5],$configinputfw{$key}[6],$configinputfw{$key}[7],$configinputfw{$key}[8],$configinputfw{$key}[9],$configinputfw{$key}[10],$configinputfw{$key}[11],$configinputfw{$key}[12],$configinputfw{$key}[13],$configinputfw{$key}[14],$configinputfw{$key}[15],$configinputfw{$key}[17],$configinputfw{$key}[18],$configinputfw{$key}[19],$configinputfw{$key}[20],$configinputfw{$key}[21],$configinputfw{$key}[22],$configinputfw{$key}[23],$configinputfw{$key}[24],$configinputfw{$key}[25],$configinputfw{$key}[26],$configinputfw{$key}[27],$configinputfw{$key}[28],$configinputfw{$key}[29],$configinputfw{$key}[30],$configinputfw{$key}[31],$configinputfw{$key}[32],$configinputfw{$key}[33],$configinputfw{$key}[34],$configinputfw{$key}[35],$configinputfw{$key}[36]"){ - $errormessage.=$Lang::tr{'fwdfw err ruleexists'}; - if($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' && $fwdfwsettings{'ruleremark'} ne '' && !&validremark($fwdfwsettings{'ruleremark'})){ - $errormessage=$Lang::tr{'fwdfw err remark'}."
"; - } - if($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' && $fwdfwsettings{'ruleremark'} ne '' && &validremark($fwdfwsettings{'ruleremark'})){ - $errormessage=''; - } - if ($fwdfwsettings{'oldruleremark'} eq $fwdfwsettings{'ruleremark'}){ - $fwdfwsettings{'nosave'} = 'on'; - } - } - } - } - #check Rulepos on new Rule - if($fwdfwsettings{'rulepos'} > 0 && !$fwdfwsettings{'oldrulenumber'}){ - $fwdfwsettings{'oldrulenumber'}=$maxkey; - foreach my $key (sort keys %configinputfw){ - if ( "$fwdfwsettings{'RULE_ACTION'},$fwdfwsettings{'ACTIVE'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}},$fwdfwsettings{'USE_SRC_PORT'},$fwdfwsettings{'PROT'},$fwdfwsettings{'ICMP_TYPES'},$fwdfwsettings{'SRC_PORT'},$fwdfwsettings{'USESRV'},$fwdfwsettings{'TGT_PROT'},$fwdfwsettings{'ICMP_TGT'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}},$fwdfwsettings{'LOG'},$fwdfwsettings{'TIME'},$fwdfwsettings{'TIME_MON'},$fwdfwsettings{'TIME_TUE'},$fwdfwsettings{'TIME_WED'},$fwdfwsettings{'TIME_THU'},$fwdfwsettings{'TIME_FRI'},$fwdfwsettings{'TIME_SAT'},$fwdfwsettings{'TIME_SUN'},$fwdfwsettings{'TIME_FROM'},$fwdfwsettings{'TIME_TO'},$fwdfwsettings{'USE_NAT'},$fwdfwsettings{$fwdfwsettings{'nat'}},$fwdfwsettings{'dnatport'},$fwdfwsettings{'nat'},$fwdfwsettings{'LIMIT_CON_CON'},$fwdfwsettings{'concon'},$fwdfwsettings{'RATE_LIMIT'},$fwdfwsettings{'ratecon'},$fwdfwsettings{'RATETIME'}" - eq "$configinputfw{$key}[0],$configinputfw{$key}[2],$configinputfw{$key}[3],$configinputfw{$key}[4],$configinputfw{$key}[5],$configinputfw{$key}[6],$configinputfw{$key}[7],$configinputfw{$key}[8],$configinputfw{$key}[9],$configinputfw{$key}[10],$configinputfw{$key}[11],$configinputfw{$key}[12],$configinputfw{$key}[13],$configinputfw{$key}[14],$configinputfw{$key}[15],$configinputfw{$key}[17],$configinputfw{$key}[18],$configinputfw{$key}[19],$configinputfw{$key}[20],$configinputfw{$key}[21],$configinputfw{$key}[22],$configinputfw{$key}[23],$configinputfw{$key}[24],$configinputfw{$key}[25],$configinputfw{$key}[26],$configinputfw{$key}[27],$configinputfw{$key}[28],$configinputfw{$key}[29],$configinputfw{$key}[30],$configinputfw{$key}[31],$configinputfw{$key}[32],$configinputfw{$key}[33],$configinputfw{$key}[34],$configinputfw{$key}[35],$configinputfw{$key}[36]"){ - $errormessage.=$Lang::tr{'fwdfw err ruleexists'}; - } - } - } - #check if we just close a rule - if( $fwdfwsettings{'oldgrp1a'} eq $fwdfwsettings{'grp1'} && $fwdfwsettings{'oldgrp1b'} eq $fwdfwsettings{$fwdfwsettings{'grp1'}} && $fwdfwsettings{'oldgrp2a'} eq $fwdfwsettings{'grp2'} && $fwdfwsettings{'oldgrp2b'} eq $fwdfwsettings{$fwdfwsettings{'grp2'}} && $fwdfwsettings{'oldgrp3a'} eq $fwdfwsettings{'grp3'} && $fwdfwsettings{'oldgrp3b'} eq $fwdfwsettings{$fwdfwsettings{'grp3'}} && $fwdfwsettings{'oldusesrv'} eq $fwdfwsettings{'USESRV'} && $fwdfwsettings{'oldruleremark'} eq $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'oldruletype'} eq $fwdfwsettings{'chain'} ) { - if($fwdfwsettings{'nosave'} eq 'on' && $fwdfwsettings{'updatefwrule'} eq 'on'){ - $errormessage=''; - $fwdfwsettings{'nosave2'} = 'on'; - } - } - if (!$errormessage){ - if($fwdfwsettings{'nosave2'} ne 'on'){ - &saverule(\%configinputfw,$configinput); - } - } - }elsif($fwdfwsettings{'grp1'} eq 'ipfire_src' ){ + $maxkey=&General::findhasharraykey(\%configinputfw); + %rulehash=%configinputfw; + }elsif ($fwdfwsettings{'grp1'} eq 'ipfire_src' ){ # OUTGOING PART $fwdfwsettings{'config'}=$configoutgoing; $fwdfwsettings{'chain'} = 'OUTGOINGFW'; - my $maxkey=&General::findhasharraykey(\%configoutgoingfw); - if($fwdfwsettings{'oldrulenumber'} eq $fwdfwsettings{'rulepos'}){ - foreach my $key (sort keys %configoutgoingfw){ - if ( "$fwdfwsettings{'RULE_ACTION'},$fwdfwsettings{'ACTIVE'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}},$fwdfwsettings{'USE_SRC_PORT'},$fwdfwsettings{'PROT'},$fwdfwsettings{'ICMP_TYPES'},$fwdfwsettings{'SRC_PORT'},$fwdfwsettings{'USESRV'},$fwdfwsettings{'TGT_PROT'},$fwdfwsettings{'ICMP_TGT'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}},$fwdfwsettings{'LOG'},$fwdfwsettings{'TIME'},$fwdfwsettings{'TIME_MON'},$fwdfwsettings{'TIME_TUE'},$fwdfwsettings{'TIME_WED'},$fwdfwsettings{'TIME_THU'},$fwdfwsettings{'TIME_FRI'},$fwdfwsettings{'TIME_SAT'},$fwdfwsettings{'TIME_SUN'},$fwdfwsettings{'TIME_FROM'},$fwdfwsettings{'TIME_TO'},$fwdfwsettings{'USE_NAT'},$fwdfwsettings{$fwdfwsettings{'nat'}},$fwdfwsettings{'dnatport'},$fwdfwsettings{'nat'},$fwdfwsettings{'LIMIT_CON_CON'},$fwdfwsettings{'concon'},$fwdfwsettings{'RATE_LIMIT'},$fwdfwsettings{'ratecon'},$fwdfwsettings{'RATETIME'}" - eq "$configoutgoingfw{$key}[0],$configoutgoingfw{$key}[2],$configoutgoingfw{$key}[3],$configoutgoingfw{$key}[4],$configoutgoingfw{$key}[5],$configoutgoingfw{$key}[6],$configoutgoingfw{$key}[7],$configoutgoingfw{$key}[8],$configoutgoingfw{$key}[9],$configoutgoingfw{$key}[10],$configoutgoingfw{$key}[11],$configoutgoingfw{$key}[12],$configoutgoingfw{$key}[13],$configoutgoingfw{$key}[14],$configoutgoingfw{$key}[15],$configoutgoingfw{$key}[17],$configoutgoingfw{$key}[18],$configoutgoingfw{$key}[19],$configoutgoingfw{$key}[20],$configoutgoingfw{$key}[21],$configoutgoingfw{$key}[22],$configoutgoingfw{$key}[23],$configoutgoingfw{$key}[24],$configoutgoingfw{$key}[25],$configoutgoingfw{$key}[26],$configoutgoingfw{$key}[27],$configoutgoingfw{$key}[28],$configoutgoingfw{$key}[29],$configoutgoingfw{$key}[30],$configoutgoingfw{$key}[31],$configoutgoingfw{$key}[32],$configoutgoingfw{$key}[33],$configoutgoingfw{$key}[34],$configoutgoingfw{$key}[35],$configoutgoingfw{$key}[36]"){ - $errormessage.=$Lang::tr{'fwdfw err ruleexists'}; - if($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' && $fwdfwsettings{'ruleremark'} ne '' && !&validremark($fwdfwsettings{'ruleremark'})){ - $errormessage=$Lang::tr{'fwdfw err remark'}."
"; - } - if($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' && $fwdfwsettings{'ruleremark'} ne '' && &validremark($fwdfwsettings{'ruleremark'})){ - $errormessage=''; - } - if ($fwdfwsettings{'oldruleremark'} eq $fwdfwsettings{'ruleremark'}){ - $fwdfwsettings{'nosave'} = 'on'; - } - } - } - } - #check Rulepos on new Rule - if($fwdfwsettings{'rulepos'} > 0 && !$fwdfwsettings{'oldrulenumber'}){ - $fwdfwsettings{'oldrulenumber'}=$maxkey; - foreach my $key (sort keys %configoutgoingfw){ - if ( "$fwdfwsettings{'RULE_ACTION'},$fwdfwsettings{'ACTIVE'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}},$fwdfwsettings{'USE_SRC_PORT'},$fwdfwsettings{'PROT'},$fwdfwsettings{'ICMP_TYPES'},$fwdfwsettings{'SRC_PORT'},$fwdfwsettings{'USESRV'},$fwdfwsettings{'TGT_PROT'},$fwdfwsettings{'ICMP_TGT'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}},$fwdfwsettings{'LOG'},$fwdfwsettings{'TIME'},$fwdfwsettings{'TIME_MON'},$fwdfwsettings{'TIME_TUE'},$fwdfwsettings{'TIME_WED'},$fwdfwsettings{'TIME_THU'},$fwdfwsettings{'TIME_FRI'},$fwdfwsettings{'TIME_SAT'},$fwdfwsettings{'TIME_SUN'},$fwdfwsettings{'TIME_FROM'},$fwdfwsettings{'TIME_TO'},$fwdfwsettings{'USE_NAT'},$fwdfwsettings{$fwdfwsettings{'nat'}},$fwdfwsettings{'dnatport'},$fwdfwsettings{'nat'},$fwdfwsettings{'LIMIT_CON_CON'},$fwdfwsettings{'concon'},$fwdfwsettings{'RATE_LIMIT'},$fwdfwsettings{'ratecon'},$fwdfwsettings{'RATETIME'}" - eq "$configoutgoingfw{$key}[0],$configoutgoingfw{$key}[2],$configoutgoingfw{$key}[3],$configoutgoingfw{$key}[4],$configoutgoingfw{$key}[5],$configoutgoingfw{$key}[6],$configoutgoingfw{$key}[7],$configoutgoingfw{$key}[8],$configoutgoingfw{$key}[9],$configoutgoingfw{$key}[10],$configoutgoingfw{$key}[11],$configoutgoingfw{$key}[12],$configoutgoingfw{$key}[13],$configoutgoingfw{$key}[14],$configoutgoingfw{$key}[15],$configoutgoingfw{$key}[17],$configoutgoingfw{$key}[18],$configoutgoingfw{$key}[19],$configoutgoingfw{$key}[20],$configoutgoingfw{$key}[21],$configoutgoingfw{$key}[22],$configoutgoingfw{$key}[23],$configoutgoingfw{$key}[24],$configoutgoingfw{$key}[25],$configoutgoingfw{$key}[26],$configoutgoingfw{$key}[27],$configoutgoingfw{$key}[28],$configoutgoingfw{$key}[29],$configoutgoingfw{$key}[30],$configoutgoingfw{$key}[31],$configoutgoingfw{$key}[32],$configoutgoingfw{$key}[33],$configoutgoingfw{$key}[34],$configoutgoingfw{$key}[35],$configoutgoingfw{$key}[36]"){ - $errormessage.=$Lang::tr{'fwdfw err ruleexists'}; - } - } - } - #check if we just close a rule - if( $fwdfwsettings{'oldgrp1a'} eq $fwdfwsettings{'grp1'} && $fwdfwsettings{'oldgrp1b'} eq $fwdfwsettings{$fwdfwsettings{'grp1'}} && $fwdfwsettings{'oldgrp2a'} eq $fwdfwsettings{'grp2'} && $fwdfwsettings{'oldgrp2b'} eq $fwdfwsettings{$fwdfwsettings{'grp2'}} && $fwdfwsettings{'oldgrp3a'} eq $fwdfwsettings{'grp3'} && $fwdfwsettings{'oldgrp3b'} eq $fwdfwsettings{$fwdfwsettings{'grp3'}} && $fwdfwsettings{'oldusesrv'} eq $fwdfwsettings{'USESRV'} && $fwdfwsettings{'oldruleremark'} eq $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'oldruletype'} eq $fwdfwsettings{'chain'} ) { - if($fwdfwsettings{'nosave'} eq 'on' && $fwdfwsettings{'updatefwrule'} eq 'on'){ - $fwdfwsettings{'nosave2'} = 'on'; - $errormessage=''; - } - } - #increase counters - if (!$errormessage){ - if ($fwdfwsettings{'nosave2'} ne 'on'){ - &saverule(\%configoutgoingfw,$configoutgoing); - } - } - }else{ - #FORWARD PART + $maxkey=&General::findhasharraykey(\%configoutgoingfw); + %rulehash=%configoutgoingfw; + }else { + # FORWARD PART $fwdfwsettings{'config'}=$configfwdfw; $fwdfwsettings{'chain'} = 'FORWARDFW'; - my $maxkey=&General::findhasharraykey(\%configfwdfw); - if($fwdfwsettings{'oldrulenumber'} eq $fwdfwsettings{'rulepos'}){ - #check if we have an identical rule already - foreach my $key (sort keys %configfwdfw){ - if ( "$fwdfwsettings{'RULE_ACTION'},$fwdfwsettings{'ACTIVE'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}},$fwdfwsettings{'USE_SRC_PORT'},$fwdfwsettings{'PROT'},$fwdfwsettings{'ICMP_TYPES'},$fwdfwsettings{'SRC_PORT'},$fwdfwsettings{'USESRV'},$fwdfwsettings{'TGT_PROT'},$fwdfwsettings{'ICMP_TGT'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}},$fwdfwsettings{'TIME'},$fwdfwsettings{'TIME_MON'},$fwdfwsettings{'TIME_TUE'},$fwdfwsettings{'TIME_WED'},$fwdfwsettings{'TIME_THU'},$fwdfwsettings{'TIME_FRI'},$fwdfwsettings{'TIME_SAT'},$fwdfwsettings{'TIME_SUN'},$fwdfwsettings{'TIME_FROM'},$fwdfwsettings{'TIME_TO'},$fwdfwsettings{'USE_NAT'},$fwdfwsettings{$fwdfwsettings{'nat'}},$fwdfwsettings{'dnatport'},$fwdfwsettings{'nat'},$fwdfwsettings{'LIMIT_CON_CON'},$fwdfwsettings{'concon'},$fwdfwsettings{'RATE_LIMIT'},$fwdfwsettings{'ratecon'},$fwdfwsettings{'RATETIME'}" - eq "$configfwdfw{$key}[0],$configfwdfw{$key}[2],$configfwdfw{$key}[3],$configfwdfw{$key}[4],$configfwdfw{$key}[5],$configfwdfw{$key}[6],$configfwdfw{$key}[7],$configfwdfw{$key}[8],$configfwdfw{$key}[9],$configfwdfw{$key}[10],$configfwdfw{$key}[11],$configfwdfw{$key}[12],$configfwdfw{$key}[13],$configfwdfw{$key}[14],$configfwdfw{$key}[15],$configfwdfw{$key}[18],$configfwdfw{$key}[19],$configfwdfw{$key}[20],$configfwdfw{$key}[21],$configfwdfw{$key}[22],$configfwdfw{$key}[23],$configfwdfw{$key}[24],$configfwdfw{$key}[25],$configfwdfw{$key}[26],$configfwdfw{$key}[27],$configfwdfw{$key}[28],$configfwdfw{$key}[29],$configfwdfw{$key}[30],$configfwdfw{$key}[31],$configfwdfw{$key}[32],$configfwdfw{$key}[33],$configfwdfw{$key}[34],$configfwdfw{$key}[35],$configfwdfw{$key}[36]"){ - $errormessage.=$Lang::tr{'fwdfw err ruleexists'}; - if($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' && $fwdfwsettings{'ruleremark'} ne '' && !&validremark($fwdfwsettings{'ruleremark'})){ - $errormessage=$Lang::tr{'fwdfw err remark'}."
"; - } - if($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' && $fwdfwsettings{'ruleremark'} ne '' && &validremark($fwdfwsettings{'ruleremark'})){ - $errormessage=''; - } - if ($fwdfwsettings{'oldruleremark'} eq $fwdfwsettings{'ruleremark'}){ - $fwdfwsettings{'nosave'} = 'on'; - } - } + $maxkey=&General::findhasharraykey(\%configfwdfw); + %rulehash=%configfwdfw; + } + #check if we have an identical rule already + if($fwdfwsettings{'oldrulenumber'} eq $fwdfwsettings{'rulepos'}){ + foreach my $key (sort keys %rulehash){ + if ( "$fwdfwsettings{'RULE_ACTION'},$fwdfwsettings{'ACTIVE'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}},$fwdfwsettings{'USE_SRC_PORT'},$fwdfwsettings{'PROT'},$fwdfwsettings{'ICMP_TYPES'},$fwdfwsettings{'SRC_PORT'},$fwdfwsettings{'USESRV'},$fwdfwsettings{'TGT_PROT'},$fwdfwsettings{'ICMP_TGT'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}},$fwdfwsettings{'ruleremark'},$fwdfwsettings{'LOG'},$fwdfwsettings{'TIME'},$fwdfwsettings{'TIME_MON'},$fwdfwsettings{'TIME_TUE'},$fwdfwsettings{'TIME_WED'},$fwdfwsettings{'TIME_THU'},$fwdfwsettings{'TIME_FRI'},$fwdfwsettings{'TIME_SAT'},$fwdfwsettings{'TIME_SUN'},$fwdfwsettings{'TIME_FROM'},$fwdfwsettings{'TIME_TO'},$fwdfwsettings{'USE_NAT'},$fwdfwsettings{$fwdfwsettings{'nat'}},$fwdfwsettings{'dnatport'},$fwdfwsettings{'nat'},$fwdfwsettings{'LIMIT_CON_CON'},$fwdfwsettings{'concon'},$fwdfwsettings{'RATE_LIMIT'},$fwdfwsettings{'ratecon'},$fwdfwsettings{'RATETIME'}" + eq "$rulehash{$key}[0],$rulehash{$key}[2],$rulehash{$key}[3],$rulehash{$key}[4],$rulehash{$key}[5],$rulehash{$key}[6],$rulehash{$key}[7],$rulehash{$key}[8],$rulehash{$key}[9],$rulehash{$key}[10],$rulehash{$key}[11],$rulehash{$key}[12],$rulehash{$key}[13],$rulehash{$key}[14],$rulehash{$key}[15],$rulehash{$key}[16],$rulehash{$key}[17],$rulehash{$key}[18],$rulehash{$key}[19],$rulehash{$key}[20],$rulehash{$key}[21],$rulehash{$key}[22],$rulehash{$key}[23],$rulehash{$key}[24],$rulehash{$key}[25],$rulehash{$key}[26],$rulehash{$key}[27],$rulehash{$key}[28],$rulehash{$key}[29],$rulehash{$key}[30],$rulehash{$key}[31],$rulehash{$key}[32],$rulehash{$key}[33],$rulehash{$key}[34],$rulehash{$key}[35],$rulehash{$key}[36]"){ + $errormessage.=$Lang::tr{'fwdfw err ruleexists'}; + if($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' && $fwdfwsettings{'ruleremark'} ne '' && !&validremark($fwdfwsettings{'ruleremark'})){ + $errormessage=$Lang::tr{'fwdfw err remark'}."
"; + } + if($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' && $fwdfwsettings{'ruleremark'} ne '' && &validremark($fwdfwsettings{'ruleremark'})){ + $errormessage=''; + } + if ($fwdfwsettings{'oldruleremark'} eq $fwdfwsettings{'ruleremark'}){ + $fwdfwsettings{'nosave'} = 'on'; + } } } - #check Rulepos on new Rule - if($fwdfwsettings{'rulepos'} > 0 && !$fwdfwsettings{'oldrulenumber'}){ - $fwdfwsettings{'oldrulenumber'}=$maxkey; - foreach my $key (sort keys %configfwdfw){ - if ( "$fwdfwsettings{'RULE_ACTION'},$fwdfwsettings{'ACTIVE'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}},$fwdfwsettings{'USE_SRC_PORT'},$fwdfwsettings{'PROT'},$fwdfwsettings{'ICMP_TYPES'},$fwdfwsettings{'SRC_PORT'},$fwdfwsettings{'USESRV'},$fwdfwsettings{'TGT_PROT'},$fwdfwsettings{'ICMP_TGT'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}},$fwdfwsettings{'TIME'},$fwdfwsettings{'TIME_MON'},$fwdfwsettings{'TIME_TUE'},$fwdfwsettings{'TIME_WED'},$fwdfwsettings{'TIME_THU'},$fwdfwsettings{'TIME_FRI'},$fwdfwsettings{'TIME_SAT'},$fwdfwsettings{'TIME_SUN'},$fwdfwsettings{'TIME_FROM'},$fwdfwsettings{'TIME_TO'},$fwdfwsettings{'USE_NAT'},$fwdfwsettings{$fwdfwsettings{'nat'}},$fwdfwsettings{'dnatport'},$fwdfwsettings{'nat'},$fwdfwsettings{'LIMIT_CON_CON'},$fwdfwsettings{'concon'},$fwdfwsettings{'RATE_LIMIT'},$fwdfwsettings{'ratecon'},$fwdfwsettings{'RATETIME'}" - eq "$configfwdfw{$key}[0],$configfwdfw{$key}[2],$configfwdfw{$key}[3],$configfwdfw{$key}[4],$configfwdfw{$key}[5],$configfwdfw{$key}[6],$configfwdfw{$key}[7],$configfwdfw{$key}[8],$configfwdfw{$key}[9],$configfwdfw{$key}[10],$configfwdfw{$key}[11],$configfwdfw{$key}[12],$configfwdfw{$key}[13],$configfwdfw{$key}[14],$configfwdfw{$key}[15],$configfwdfw{$key}[18],$configfwdfw{$key}[19],$configfwdfw{$key}[20],$configfwdfw{$key}[21],$configfwdfw{$key}[22],$configfwdfw{$key}[23],$configfwdfw{$key}[24],$configfwdfw{$key}[25],$configfwdfw{$key}[26],$configfwdfw{$key}[27],$configfwdfw{$key}[28],$configfwdfw{$key}[29],$configfwdfw{$key}[30],$configfwdfw{$key}[31],$configfwdfw{$key}[32],$configfwdfw{$key}[33],$configfwdfw{$key}[34],$configfwdfw{$key}[35],$configfwdfw{$key}[36]"){ - $errormessage.=$Lang::tr{'fwdfw err ruleexists'}; - } + } + #check Rulepos on new Rule + if($fwdfwsettings{'rulepos'} > 0 && !$fwdfwsettings{'oldrulenumber'}){ + $fwdfwsettings{'oldrulenumber'}=$maxkey; + foreach my $key (sort keys %rulehash){ + if ( "$fwdfwsettings{'RULE_ACTION'},$fwdfwsettings{'ACTIVE'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}},$fwdfwsettings{'USE_SRC_PORT'},$fwdfwsettings{'PROT'},$fwdfwsettings{'ICMP_TYPES'},$fwdfwsettings{'SRC_PORT'},$fwdfwsettings{'USESRV'},$fwdfwsettings{'TGT_PROT'},$fwdfwsettings{'ICMP_TGT'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}},$fwdfwsettings{'TIME'},$fwdfwsettings{'TIME_MON'},$fwdfwsettings{'TIME_TUE'},$fwdfwsettings{'TIME_WED'},$fwdfwsettings{'TIME_THU'},$fwdfwsettings{'TIME_FRI'},$fwdfwsettings{'TIME_SAT'},$fwdfwsettings{'TIME_SUN'},$fwdfwsettings{'TIME_FROM'},$fwdfwsettings{'TIME_TO'},$fwdfwsettings{'USE_NAT'},$fwdfwsettings{$fwdfwsettings{'nat'}},$fwdfwsettings{'dnatport'},$fwdfwsettings{'nat'},$fwdfwsettings{'LIMIT_CON_CON'},$fwdfwsettings{'concon'},$fwdfwsettings{'RATE_LIMIT'},$fwdfwsettings{'ratecon'},$fwdfwsettings{'RATETIME'}" + eq "$rulehash{$key}[0],$rulehash{$key}[2],$rulehash{$key}[3],$rulehash{$key}[4],$rulehash{$key}[5],$rulehash{$key}[6],$rulehash{$key}[7],$rulehash{$key}[8],$rulehash{$key}[9],$rulehash{$key}[10],$rulehash{$key}[11],$rulehash{$key}[12],$rulehash{$key}[13],$rulehash{$key}[14],$rulehash{$key}[15],$rulehash{$key}[18],$rulehash{$key}[19],$rulehash{$key}[20],$rulehash{$key}[21],$rulehash{$key}[22],$rulehash{$key}[23],$rulehash{$key}[24],$rulehash{$key}[25],$rulehash{$key}[26],$rulehash{$key}[27],$rulehash{$key}[28],$rulehash{$key}[29],$rulehash{$key}[30],$rulehash{$key}[31],$rulehash{$key}[32],$rulehash{$key}[33],$rulehash{$key}[34],$rulehash{$key}[35],$rulehash{$key}[36]"){ + $errormessage.=$Lang::tr{'fwdfw err ruleexists'}; } } - #check if we just close a rule - if( $fwdfwsettings{'oldgrp1a'} eq $fwdfwsettings{'grp1'} && $fwdfwsettings{'oldgrp1b'} eq $fwdfwsettings{$fwdfwsettings{'grp1'}} && $fwdfwsettings{'oldgrp2a'} eq $fwdfwsettings{'grp2'} && $fwdfwsettings{'oldgrp2b'} eq $fwdfwsettings{$fwdfwsettings{'grp2'}} && $fwdfwsettings{'oldgrp3a'} eq $fwdfwsettings{'grp3'} && $fwdfwsettings{'oldgrp3b'} eq $fwdfwsettings{$fwdfwsettings{'grp3'}} && $fwdfwsettings{'oldusesrv'} eq $fwdfwsettings{'USESRV'} && $fwdfwsettings{'oldruleremark'} eq $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'oldruletype'} eq $fwdfwsettings{'chain'}){ - if($fwdfwsettings{'nosave'} eq 'on' && $fwdfwsettings{'updatefwrule'} eq 'on'){ - $fwdfwsettings{'nosave2'} = 'on'; - $errormessage=''; - } + } + #check if we just close a rule + if( $fwdfwsettings{'oldgrp1a'} eq $fwdfwsettings{'grp1'} && $fwdfwsettings{'oldgrp1b'} eq $fwdfwsettings{$fwdfwsettings{'grp1'}} && $fwdfwsettings{'oldgrp2a'} eq $fwdfwsettings{'grp2'} && $fwdfwsettings{'oldgrp2b'} eq $fwdfwsettings{$fwdfwsettings{'grp2'}} && $fwdfwsettings{'oldgrp3a'} eq $fwdfwsettings{'grp3'} && $fwdfwsettings{'oldgrp3b'} eq $fwdfwsettings{$fwdfwsettings{'grp3'}} && $fwdfwsettings{'oldusesrv'} eq $fwdfwsettings{'USESRV'} && $fwdfwsettings{'oldruleremark'} eq $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'oldruletype'} eq $fwdfwsettings{'chain'}){ + if($fwdfwsettings{'nosave'} eq 'on' && $fwdfwsettings{'updatefwrule'} eq 'on'){ + $fwdfwsettings{'nosave2'} = 'on'; + $errormessage=''; } - #check max concurrent connections per ip address - if ($fwdfwsettings{'LIMIT_CON_CON'} eq 'ON'){ - if (!($fwdfwsettings{'concon'} =~ /^(\d+)$/)) { - $errormessage.=$Lang::tr{'fwdfw err concon'}; - } - }else{ - $fwdfwsettings{'concon'}=''; + } + #check max concurrent connections per ip address + if ($fwdfwsettings{'LIMIT_CON_CON'} eq 'ON'){ + if (!($fwdfwsettings{'concon'} =~ /^(\d+)$/)) { + $errormessage.=$Lang::tr{'fwdfw err concon'}; } - #check ratelimit value - if ($fwdfwsettings{'RATE_LIMIT'} eq 'ON'){ - if (!($fwdfwsettings{'ratecon'} =~ /^(\d+)$/)) { - $errormessage.=$Lang::tr{'fwdfw err ratecon'}; - } - }else{ - $fwdfwsettings{'ratecon'}=''; + }else{ + $fwdfwsettings{'concon'}=''; + } + #check ratelimit value + if ($fwdfwsettings{'RATE_LIMIT'} eq 'ON'){ + if (!($fwdfwsettings{'ratecon'} =~ /^(\d+)$/)) { + $errormessage.=$Lang::tr{'fwdfw err ratecon'}; } - #increase counters - if (!$errormessage){ - if ($fwdfwsettings{'nosave2'} ne 'on'){ - &saverule(\%configfwdfw,$configfwdfw); - } + }else{ + $fwdfwsettings{'ratecon'}=''; + } + #increase counters + if (!$errormessage){ + if ($fwdfwsettings{'nosave2'} ne 'on'){ + &saverule(\%rulehash,$fwdfwsettings{'config'}); } } if ($errormessage){ @@ -865,7 +790,7 @@ sub checkrule $errormessage.=$Lang::tr{'fwdfw err remark'}."
"; } #check if source and target identical - if ($fwdfwsettings{$fwdfwsettings{'grp1'}} eq $fwdfwsettings{$fwdfwsettings{'grp2'}} && $fwdfwsettings{$fwdfwsettings{'grp1'}} ne 'ALL'){ + if ($fwdfwsettings{$fwdfwsettings{'grp1'}} eq $fwdfwsettings{$fwdfwsettings{'grp2'}} && $fwdfwsettings{$fwdfwsettings{'grp1'}} ne 'ALL' && $fwdfwsettings{'grp2'} ne 'ipfire'){ $errormessage=$Lang::tr{'fwdfw err same'}; return $errormessage; } diff --git a/html/cgi-bin/fwhosts.cgi b/html/cgi-bin/fwhosts.cgi index c3642f0f0e..f42947e8c7 100644 --- a/html/cgi-bin/fwhosts.cgi +++ b/html/cgi-bin/fwhosts.cgi @@ -728,10 +728,10 @@ if ($fwhostsettings{'ACTION'} eq 'saveservicegrp') } } } - if ($tcpcounter > 15){ + if ($tcpcounter > 14){ $errormessage=$Lang::tr{'fwhost err maxservicetcp'}; } - if ($udpcounter > 15){ + if ($udpcounter > 14){ $errormessage=$Lang::tr{'fwhost err maxserviceudp'}; } $tcpcounter=0; diff --git a/html/cgi-bin/ids.cgi b/html/cgi-bin/ids.cgi index ff72b7894b..5ada911284 100644 --- a/html/cgi-bin/ids.cgi +++ b/html/cgi-bin/ids.cgi @@ -263,9 +263,9 @@ if (-e "/etc/snort/snort.conf") { ####################### End added for snort rules control ################################# if ($snortsettings{'RULES'} eq 'subscripted') { - $url=" https://www.snort.org/rules/snortrules-snapshot-2961.tar.gz?oinkcode=$snortsettings{'OINKCODE'}"; + $url=" https://www.snort.org/rules/snortrules-snapshot-2970.tar.gz?oinkcode=$snortsettings{'OINKCODE'}"; } elsif ($snortsettings{'RULES'} eq 'registered') { - $url=" https://www.snort.org/rules/snortrules-snapshot-2961.tar.gz?oinkcode=$snortsettings{'OINKCODE'}"; + $url=" https://www.snort.org/rules/snortrules-snapshot-2970.tar.gz?oinkcode=$snortsettings{'OINKCODE'}"; } elsif ($snortsettings{'RULES'} eq 'community') { $url=" https://www.snort.org/rules/community"; } else { @@ -528,7 +528,7 @@ print <
- $Lang::tr{'ids rules license'} www.snort.org$Lang::tr{'ids rules license1'}

+ $Lang::tr{'ids rules license'} www.snort.org$Lang::tr{'ids rules license1'}

$Lang::tr{'ids rules license2'} Get an Oinkcode, $Lang::tr{'ids rules license3'} diff --git a/html/cgi-bin/netovpnrw.cgi b/html/cgi-bin/netovpnrw.cgi new file mode 100755 index 0000000000..f775b23dcc --- /dev/null +++ b/html/cgi-bin/netovpnrw.cgi @@ -0,0 +1,72 @@ +#!/usr/bin/perl +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2014 Alexander Marx # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require '/var/ipfire/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; +require "${General::swroot}/graphs.pl"; + +my %color = (); +my %mainsettings = (); +&General::readhash("${General::swroot}/main/settings", \%mainsettings); +&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color); + +my @vpns=(); + +my @querry = split(/\?/,$ENV{'QUERY_STRING'}); +$querry[0] = '' unless defined $querry[0]; +$querry[1] = 'week' unless defined $querry[1]; + +if ( $querry[0] ne "" && $querry[0] ne "UNDEF"){ + print "Content-type: image/png\n\n"; + binmode(STDOUT); + &Graphs::updatevpngraph($querry[0],$querry[1]); +}else{ + &Header::showhttpheaders(); + &Header::openpage($Lang::tr{'host to net vpn'}, 1, ''); + &Header::openbigbox('100%', 'left'); + + my @vpngraphs = `find /var/log/rrd/collectd/localhost/openvpn-*/ -not -path *openvpn-UNDEF* -not -path *openvpn-*n2n* -name *.rrd|sort`; + foreach (@vpngraphs){ + if($_ =~ /(.*)\/openvpn-(.*)\/if_octets_derive.rrd/){ + push(@vpns,$2); + } + } + if(@vpns){ + foreach (@vpns) { + &Header::openbox('100%', 'center', "$_ $Lang::tr{'graph'}"); + &Graphs::makegraphbox("netovpnrw.cgi",$_,"week"); + &Header::closebox(); + } + }else{ + print "
".$Lang::tr{'no data'}."
"; + } + my $output = ''; + + &Header::closebigbox(); + &Header::closepage(); +} diff --git a/html/cgi-bin/netovpnsrv.cgi b/html/cgi-bin/netovpnsrv.cgi new file mode 100755 index 0000000000..0ec9c679d5 --- /dev/null +++ b/html/cgi-bin/netovpnsrv.cgi @@ -0,0 +1,72 @@ +#!/usr/bin/perl +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2014 Alexnder Marx # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require '/var/ipfire/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; +require "${General::swroot}/graphs.pl"; + +my %color = (); +my %mainsettings = (); +&General::readhash("${General::swroot}/main/settings", \%mainsettings); +&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color); + +my @vpns=(); + +my @querry = split(/\?/,$ENV{'QUERY_STRING'}); +$querry[0] = '' unless defined $querry[0]; +$querry[1] = 'week' unless defined $querry[1]; + +if ( $querry[0] ne ""){ + print "Content-type: image/png\n\n"; + binmode(STDOUT); + &Graphs::updatevpnn2ngraph($querry[0],$querry[1]); +}else{ + &Header::showhttpheaders(); + &Header::openpage($Lang::tr{'openvpn server'}, 1, ''); + &Header::openbigbox('100%', 'left'); + + my @vpngraphs = `find /var/log/rrd/collectd/localhost/openvpn-*-n2n/ -not -path *openvpn-UNDEF* -name *traffic.rrd|sort`; + foreach (@vpngraphs){ + if($_ =~ /(.*)\/openvpn-(.*)\/if_octets_derive-traffic.rrd/){ + push(@vpns,$2); + } + } + if (@vpns){ + foreach (@vpns) { + &Header::openbox('100%', 'center', "$_ $Lang::tr{'graph'}"); + &Graphs::makegraphbox("netovpnsrv.cgi",$_,"week"); + &Header::closebox(); + } + }else{ + print "
".$Lang::tr{'no data'}."
"; + } + my $output = ''; + + &Header::closebigbox(); + &Header::closepage(); +} diff --git a/html/cgi-bin/ovpnmain.cgi b/html/cgi-bin/ovpnmain.cgi index 969b2557ff..1e074928f2 100644 --- a/html/cgi-bin/ovpnmain.cgi +++ b/html/cgi-bin/ovpnmain.cgi @@ -70,6 +70,9 @@ my $configgrp="${General::swroot}/fwhosts/customgroups"; my $customnet="${General::swroot}/fwhosts/customnetworks"; my $name; my $col=""; +my $local_serverconf = "${General::swroot}/ovpn/scripts/server.conf.local"; +my $local_clientconf = "${General::swroot}/ovpn/scripts/client.conf.local"; + &General::readhash("${General::swroot}/ethernet/settings", \%netsettings); $cgiparams{'ENABLED'} = 'off'; $cgiparams{'ENABLED_BLUE'} = 'off'; @@ -94,10 +97,33 @@ $cgiparams{'DCIPHER'} = ''; $cgiparams{'DAUTH'} = ''; $cgiparams{'TLSAUTH'} = ''; $routes_push_file = "${General::swroot}/ovpn/routes_push"; -unless (-e $routes_push_file) { system("touch $routes_push_file"); } -unless (-e "${General::swroot}/ovpn/ccd.conf") { system("touch ${General::swroot}/ovpn/ccd.conf"); } -unless (-e "${General::swroot}/ovpn/ccdroute") { system("touch ${General::swroot}/ovpn/ccdroute"); } -unless (-e "${General::swroot}/ovpn/ccdroute2") { system("touch ${General::swroot}/ovpn/ccdroute2"); } + +# Add CCD files if not already presant +unless (-e $routes_push_file) { + open(RPF, ">$routes_push_file"); + close(RPF); +} +unless (-e "${General::swroot}/ovpn/ccd.conf") { + open(CCDC, ">${General::swroot}/ovpn/ccd.conf"); + close (CCDC); +} +unless (-e "${General::swroot}/ovpn/ccdroute") { + open(CCDR, ">${General::swroot}/ovpn/ccdroute"); + close (CCDR); +} +unless (-e "${General::swroot}/ovpn/ccdroute2") { + open(CCDRT, ">${General::swroot}/ovpn/ccdroute2"); + close (CCDRT); +} +# Add additional configs if not already presant +unless (-e "$local_serverconf") { + open(LSC, ">$local_serverconf"); + close (LSC); +} +unless (-e "$local_clientconf") { + open(LCC, ">$local_clientconf"); + close (LCC); +} &Header::getcgihash(\%cgiparams, {'wantfile' => 1, 'filevar' => 'FH'}); @@ -262,7 +288,7 @@ sub writeserverconf { print CONF "keepalive $sovpnsettings{'KEEPALIVE_1'} $sovpnsettings{'KEEPALIVE_2'}\n"; } print CONF "status-version 1\n"; - print CONF "status /var/log/ovpnserver.log 30\n"; + print CONF "status /var/run/ovpnserver.log 30\n"; print CONF "cipher $sovpnsettings{DCIPHER}\n"; if ($sovpnsettings{'DAUTH'} eq '') { print CONF ""; @@ -306,14 +332,29 @@ sub writeserverconf { print CONF "verb $sovpnsettings{LOG_VERB}\n"; } else { print CONF "verb 3\n"; - } + } + # Print server.conf.local if entries exist to server.conf + if ( !-z $local_serverconf && $sovpnsettings{'ADDITIONAL_CONFIGS'} eq 'on') { + open (LSC, "$local_serverconf"); + print CONF "\n#---------------------------\n"; + print CONF "# Start of custom directives\n"; + print CONF "# from server.conf.local\n"; + print CONF "#---------------------------\n\n"; + while () { + print CONF $_; + } + print CONF "\n#-----------------------------\n"; + print CONF "# End of custom directives\n"; + print CONF "#-----------------------------\n"; + close (LSC); + } print CONF "\n"; close(CONF); } sub emptyserverlog{ - if (open(FILE, ">/var/log/ovpnserver.log")) { + if (open(FILE, ">/var/run/ovpnserver.log")) { flock FILE, 2; print FILE ""; close FILE; @@ -685,6 +726,7 @@ if ($cgiparams{'ACTION'} eq $Lang::tr{'save-adv-options'}) { $vpnsettings{'MAX_CLIENTS'} = $cgiparams{'MAX_CLIENTS'}; $vpnsettings{'REDIRECT_GW_DEF1'} = $cgiparams{'REDIRECT_GW_DEF1'}; $vpnsettings{'CLIENT2CLIENT'} = $cgiparams{'CLIENT2CLIENT'}; + $vpnsettings{'ADDITIONAL_CONFIGS'} = $cgiparams{'ADDITIONAL_CONFIGS'}; $vpnsettings{'DHCP_DOMAIN'} = $cgiparams{'DHCP_DOMAIN'}; $vpnsettings{'DHCP_DNS'} = $cgiparams{'DHCP_DNS'}; $vpnsettings{'DHCP_WINS'} = $cgiparams{'DHCP_WINS'}; @@ -863,9 +905,12 @@ unless(-d "${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}"){mkdir "${General print SERVERCONF "route $remsubnet[0] $remsubnet[1]\n"; print SERVERCONF "# tun Device\n"; print SERVERCONF "dev tun\n"; + print SERVERCONF "#Logfile for statistics\n"; + print SERVERCONF "status-version 1\n"; + print SERVERCONF "status /var/run/openvpn/$cgiparams{'NAME'}-n2n 10\n"; print SERVERCONF "# Port and Protokol\n"; print SERVERCONF "port $cgiparams{'DEST_PORT'}\n"; - + if ($cgiparams{'PROTOCOL'} eq 'tcp') { print SERVERCONF "proto tcp-server\n"; print SERVERCONF "# Packet size\n"; @@ -1151,6 +1196,14 @@ SETTINGS_ERROR: while ($file = glob("${General::swroot}/ovpn/ccd/*")) { unlink $file } +# Delete all RRD files for Roadwarrior connections + chdir('/var/ipfire/ovpn/ccd'); + while ($file = glob("*")) { + system ("/usr/local/bin/openvpnctrl -drrd $file"); + } + while ($file = glob("${General::swroot}/ovpn/ccd/*")) { + unlink $file + } if (open(FILE, ">${General::swroot}/ovpn/ovpn-leases.db")) { print FILE ""; close FILE; @@ -1203,8 +1256,7 @@ END unlink "${General::swroot}/ovpn/ca/$cgiparams{'DH_NAME'}"; } # Create Diffie Hellmann Parameter - system('/usr/bin/openssl', 'dhparam', '-rand', '/proc/interrupts:/proc/net/rt_cache', - '-out', "${General::swroot}/ovpn/ca/dh1024.pem", "$cgiparams{'DHLENGHT'}"); + system('/usr/bin/openssl', 'dhparam', '-out', "${General::swroot}/ovpn/ca/dh1024.pem", "$cgiparams{'DHLENGHT'}"); if ($?) { $errormessage = "$Lang::tr{'openssl produced an error'}: $?"; unlink ("${General::swroot}/ovpn/ca/dh1024.pem"); @@ -1757,7 +1809,7 @@ END goto ROOTCERT_ERROR; } } else { # child - unless (exec ('/usr/bin/openssl', 'req', '-x509', '-nodes', '-rand', '/proc/interrupts:/proc/net/rt_cache', + unless (exec ('/usr/bin/openssl', 'req', '-x509', '-nodes', '-days', '999999', '-newkey', 'rsa:4096', '-sha512', '-keyout', "${General::swroot}/ovpn/ca/cakey.pem", '-out', "${General::swroot}/ovpn/ca/cacert.pem", @@ -1788,7 +1840,7 @@ END goto ROOTCERT_ERROR; } } else { # child - unless (exec ('/usr/bin/openssl', 'req', '-nodes', '-rand', '/proc/interrupts:/proc/net/rt_cache', + unless (exec ('/usr/bin/openssl', 'req', '-nodes', '-newkey', 'rsa:2048', '-keyout', "${General::swroot}/ovpn/certs/serverkey.pem", '-out', "${General::swroot}/ovpn/certs/serverreq.pem", @@ -1840,8 +1892,7 @@ END # &cleanssldatabase(); } # Create Diffie Hellmann Parameter - system('/usr/bin/openssl', 'dhparam', '-rand', '/proc/interrupts:/proc/net/rt_cache', - '-out', "${General::swroot}/ovpn/ca/dh1024.pem", "$cgiparams{'DHLENGHT'}"); + system('/usr/bin/openssl', 'dhparam', '-out', "${General::swroot}/ovpn/ca/dh1024.pem", "$cgiparams{'DHLENGHT'}"); if ($?) { $errormessage = "$Lang::tr{'openssl produced an error'}: $?"; unlink ("${General::swroot}/ovpn/certs/serverkey.pem"); @@ -2226,6 +2277,21 @@ else print CLIENTCONF "mtu-disc $vpnsettings{'PMTU_DISCOVERY'}\r\n"; } } + # Print client.conf.local if entries exist to client.ovpn + if (!-z $local_clientconf && $vpnsettings{'ADDITIONAL_CONFIGS'} eq 'on') { + open (LCC, "$local_clientconf"); + print CLIENTCONF "\n#---------------------------\n"; + print CLIENTCONF "# Start of custom directives\n"; + print CLIENTCONF "# from client.conf.local\n"; + print CLIENTCONF "#---------------------------\n\n"; + while () { + print CLIENTCONF $_; + } + print CLIENTCONF "\n#---------------------------\n"; + print CLIENTCONF "# End of custom directives\n"; + print CLIENTCONF "#---------------------------\n\n"; + close (LCC); + } close(CLIENTCONF); $zip->addFile( "$tempdir/$clientovpn", $clientovpn) or die "Can't add file $clientovpn\n"; @@ -2304,7 +2370,10 @@ if ($confighash{$cgiparams{'KEY'}}[3] eq 'net') { # CCD end - +### +### Delete all RRD's for client +### + system ("/usr/local/bin/openvpnctrl -drrd $confighash{$cgiparams{'KEY'}}[1]"); delete $confighash{$cgiparams{'KEY'}}; my $temp2 = `/usr/bin/openssl ca -gencrl -out ${General::swroot}/ovpn/crls/cacrl.pem -config ${General::swroot}/ovpn/openssl/ovpn.cnf`; &General::writehasharray("${General::swroot}/ovpn/ovpnconfig", \%confighash); @@ -2458,6 +2527,9 @@ ADV_ERROR: $checked{'REDIRECT_GW_DEF1'}{'off'} = ''; $checked{'REDIRECT_GW_DEF1'}{'on'} = ''; $checked{'REDIRECT_GW_DEF1'}{$cgiparams{'REDIRECT_GW_DEF1'}} = 'CHECKED'; + $checked{'ADDITIONAL_CONFIGS'}{'off'} = ''; + $checked{'ADDITIONAL_CONFIGS'}{'on'} = ''; + $checked{'ADDITIONAL_CONFIGS'}{$cgiparams{'ADDITIONAL_CONFIGS'}} = 'CHECKED'; $checked{'MSSFIX'}{'off'} = ''; $checked{'MSSFIX'}{'on'} = ''; $checked{'MSSFIX'}{$cgiparams{'MSSFIX'}} = 'CHECKED'; @@ -2538,39 +2610,52 @@ print <
- + - - + + + - - + + + - - + + + - - - - - + + - - - - + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -2826,7 +2911,7 @@ END END ; - my $filename = "/var/log/ovpnserver.log"; + my $filename = "/var/run/ovpnserver.log"; open(FILE, $filename) or die 'Unable to open config file.'; my @current = ; close(FILE); @@ -4014,6 +4099,10 @@ if ($cgiparams{'TYPE'} eq 'net') { $errormessage = $Lang::tr{'passwords do not match'}; goto VPNCONF_ERROR; } + if ($cgiparams{'DAYS_VALID'} ne '' && $cgiparams{'DAYS_VALID'} !~ /^[0-9]+$/) { + $errormessage = $Lang::tr{'invalid input for valid till days'}; + goto VPNCONF_ERROR; + } # Replace empty strings with a . (my $ou = $cgiparams{'CERT_OU'}) =~ s/^\s*$/\./; @@ -4041,7 +4130,7 @@ if ($cgiparams{'TYPE'} eq 'net') { goto VPNCONF_ERROR; } } else { # child - unless (exec ('/usr/bin/openssl', 'req', '-nodes', '-rand', '/proc/interrupts:/proc/net/rt_cache', + unless (exec ('/usr/bin/openssl', 'req', '-nodes', '-newkey', 'rsa:2048', '-keyout', "${General::swroot}/ovpn/certs/$cgiparams{'NAME'}key.pem", '-out', "${General::swroot}/ovpn/certs/$cgiparams{'NAME'}req.pem", @@ -4284,6 +4373,7 @@ if ($cgiparams{'TYPE'} eq 'net') { $cgiparams{'CERT_CITY'} = $vpnsettings{'ROOTCERT_CITY'}; $cgiparams{'CERT_STATE'} = $vpnsettings{'ROOTCERT_STATE'}; $cgiparams{'CERT_COUNTRY'} = $vpnsettings{'ROOTCERT_COUNTRY'}; + $cgiparams{'DAYS_VALID'} = $vpnsettings{'DAYS_VALID'}; } VPNCONF_ERROR: @@ -4645,27 +4735,28 @@ END if ($cgiparams{'TYPE'} eq 'host') { print < - - - - + + + + - + - - - -
$Lang::tr{'misc-options'}
Client-To-Client
Redirect-Gateway def1
Max-Clients
Keepalive
- (ping/ping-restart)
$Lang::tr{'ovpn add conf'}$Lang::tr{'openvpn default'}: off
fragment
mssfix$Lang::tr{'openvpn default'}: off
mssfix$Lang::tr{'openvpn default'}: off
fragment
Max-Clients
Keepalive
+ (ping/ping-restart)
$Lang::tr{'ovpn mtu-disc'}
 $Lang::tr{'valid till'} (days):
 
 $Lang::tr{'valid till'} (days):
  $Lang::tr{'pkcs12 file password'}:
 $Lang::tr{'pkcs12 file password'}:
($Lang::tr{'confirmation'})
 $Lang::tr{'pkcs12 file password'}:
($Lang::tr{'confirmation'})
 

* $Lang::tr{'this field may be blank'}
+   +
+ * $Lang::tr{'this field may be blank'} + END }else{ print < -     -     -
- * $Lang::tr{'this field may be blank'} + +  $Lang::tr{'valid till'} (days): + +     +     +
+ * $Lang::tr{'this field may be blank'} END @@ -4820,7 +4911,7 @@ END &General::readhasharray("${General::swroot}/ovpn/caconfig", \%cahash); &General::readhasharray("${General::swroot}/ovpn/ovpnconfig", \%confighash); - my @status = `/bin/cat /var/log/ovpnserver.log`; + my @status = `/bin/cat /var/run/ovpnserver.log`; if ($cgiparams{'VPN_IP'} eq '' && -e "${General::swroot}/red/active") { if (open(IPADDR, "${General::swroot}/red/local-ipaddress")) { diff --git a/html/cgi-bin/vpnmain.cgi b/html/cgi-bin/vpnmain.cgi index f5ec50079a..a6d7056191 100644 --- a/html/cgi-bin/vpnmain.cgi +++ b/html/cgi-bin/vpnmain.cgi @@ -437,6 +437,14 @@ sub writeipsecfiles { } print CONF "\n"; }#foreach key + + # Add post user includes to config file + # After the GUI-connections allows to patch connections. + if (-e "/etc/ipsec.user-post.conf") { + print CONF "include /etc/ipsec.user-post.conf\n"; + print CONF "\n"; + } + print SECRETS $last_secrets if ($last_secrets); close(CONF); close(SECRETS); @@ -2168,8 +2176,8 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) || $errormessage = $Lang::tr{'invalid input for ike lifetime'}; goto ADVANCED_ERROR; } - if ($cgiparams{'IKE_LIFETIME'} < 1 || $cgiparams{'IKE_LIFETIME'} > 8) { - $errormessage = $Lang::tr{'ike lifetime should be between 1 and 8 hours'}; + if ($cgiparams{'IKE_LIFETIME'} < 1 || $cgiparams{'IKE_LIFETIME'} > 24) { + $errormessage = $Lang::tr{'ike lifetime should be between 1 and 24 hours'}; goto ADVANCED_ERROR; } @temp = split('\|', $cgiparams{'ESP_ENCRYPTION'}); diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl index b7692ee7b7..eb29b5fbf2 100644 --- a/langs/de/cgi-bin/de.pl +++ b/langs/de/cgi-bin/de.pl @@ -1232,7 +1232,7 @@ 'ike grouptype' => 'IKE Gruppentyp:', 'ike integrity' => 'IKE Integrität:', 'ike lifetime' => 'IKE Lebensdauer:', -'ike lifetime should be between 1 and 8 hours' => 'IKE Lebensdauer sollte zwischen 1 und 8 Stunden betragen.', +'ike lifetime should be between 1 and 24 hours' => 'IKE Lebensdauer sollte zwischen 1 und 24 Stunden betragen.', 'imei' => 'IMEI', 'import' => 'Import', 'importkey' => 'PSK importieren', @@ -1241,7 +1241,9 @@ 'inactive' => 'inaktiv', 'include logfiles' => 'mit Logdateien', 'incoming' => 'eingehend', +'incoming compression in bytes per second' => 'Eingehende Kompression', 'incoming firewall access' => 'Eingehender Firewallzugang', +'incoming overhead in bytes per second' => 'Eingehender Overhead', 'incoming traffic in bytes per second' => 'Eingehender Verkehr', 'incorrect password' => 'Fehlerhaftes Passwort', 'info' => 'Info', @@ -1295,6 +1297,7 @@ 'invalid input for organization' => 'Ungültige Eingabe für Organisation', 'invalid input for remote host/ip' => 'Ungültige Eingabe für Remote Host/IP', 'invalid input for state or province' => 'Ungültige Eingabe für Bundesstaat oder Provinz.', +'invalid input for valid till days' => 'Ungültige Eingabe für Gültig bis (Tage).', 'invalid ip' => 'Ungültige IP-Adresse', 'invalid keep time' => 'Die Aufbewahrungszeit muss eine gültige Zahl sein', 'invalid key' => 'Ungültiger Schlüssel.', @@ -1664,6 +1667,7 @@ 'our donors' => 'Unsere Unterstützer', 'out' => 'Aus', 'outgoing' => 'ausgehend', +'outgoing compression in bytes per second' => 'Abgehende Kompression', 'outgoing firewall' => 'Ausgehende Firewall', 'outgoing firewall access' => 'Ausgehender Firewallzugang', 'outgoing firewall add ip group' => 'IP Adressgruppen hinzufügen', @@ -1686,9 +1690,11 @@ 'outgoing firewall reset' => 'Alle Regeln löschen', 'outgoing firewall view group' => 'Gruppe anzeigen', 'outgoing firewall warning' => 'Nur die Auswahl Quell IP / MAC aktiviert diese', +'outgoing overhead in bytes per second' => 'Abgehender Overhead', 'outgoing traffic in bytes per second' => 'Abgehender Verkehr', 'override mtu' => 'Überschreibe Standard MTU', 'ovpn' => 'OpenVPN', +'ovpn add conf' => 'Erweiterte Konfiguration', 'ovpn con stat' => 'OpenVPN Verbindungs-Statistik', 'ovpn config' => 'OVPN-Konfiguration', 'ovpn crypt options' => 'Kryptografieoptionen', diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index 1986409349..8c049fffa9 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -1261,7 +1261,7 @@ 'ike grouptype' => 'IKE Grouptype:', 'ike integrity' => 'IKE Integrity:', 'ike lifetime' => 'IKE Lifetime:', -'ike lifetime should be between 1 and 8 hours' => 'IKE lifetime should be between 1 and 8 hours.', +'ike lifetime should be between 1 and 24 hours' => 'IKE lifetime should be between 1 and 24 hours.', 'imei' => 'IMEI', 'import' => 'Import', 'importkey' => 'Import PSK', @@ -1270,7 +1270,9 @@ 'inactive' => 'inactive', 'include logfiles' => 'Include logfiles', 'incoming' => 'incoming', +'incoming compression in bytes per second' => 'Incoming Compression', 'incoming firewall access' => 'Incoming Firewall Access', +'incoming overhead in bytes per second' => 'Incoming Overhead', 'incoming traffic in bytes per second' => 'Incoming Traffic', 'incorrect password' => 'Incorrect password', 'info' => 'Info', @@ -1325,6 +1327,7 @@ 'invalid input for organization' => 'Invalid input for organization', 'invalid input for remote host/ip' => 'Invalid input for remote host/ip.', 'invalid input for state or province' => 'Invalid input for state or province.', +'invalid input for valid till days' => 'Invalid input for Valid till (days).', 'invalid ip' => 'Invalid IP Address', 'invalid keep time' => 'Keep time must be a valid number', 'invalid key' => 'Invalid key.', @@ -1695,6 +1698,7 @@ 'our donors' => 'Our donors', 'out' => 'Out', 'outgoing' => 'outgoing', +'outgoing compression in bytes per second' => 'Outgoing compression', 'outgoing firewall' => 'Outgoing Firewall', 'outgoing firewall access' => 'Outgoing Firewall Access', 'outgoing firewall add ip group' => 'Add IP Address Group', @@ -1717,9 +1721,11 @@ 'outgoing firewall reset' => 'Reset all', 'outgoing firewall view group' => 'View group', 'outgoing firewall warning' => 'Not selecting source ip or mac ignores them', +'outgoing overhead in bytes per second' => 'Outgoing Overhead', 'outgoing traffic in bytes per second' => 'Outgoing Traffic', 'override mtu' => 'Override default MTU', 'ovpn' => 'OpenVPN', +'ovpn add conf' => 'Additional configuration', 'ovpn con stat' => 'OpenVPN Connection Statistics', 'ovpn config' => 'OVPN-Config', 'ovpn crypt options' => 'Cryptographic options', diff --git a/langs/es/cgi-bin/es.pl b/langs/es/cgi-bin/es.pl index 8c757a9b39..b7c50ff108 100644 --- a/langs/es/cgi-bin/es.pl +++ b/langs/es/cgi-bin/es.pl @@ -934,7 +934,7 @@ 'ike grouptype' => 'Tipo de grupo IKE:', 'ike integrity' => 'Integridad IKE:', 'ike lifetime' => 'Tiempo de vida IKE:', -'ike lifetime should be between 1 and 8 hours' => 'Tiempo de vida IKE entre 1 y 8 horas.', +'ike lifetime should be between 1 and 24 hours' => 'Tiempo de vida IKE entre 1 y 24 horas.', 'import' => 'Importar', 'importkey' => 'Importar PSK', 'in' => 'En', diff --git a/langs/fr/cgi-bin/fr.pl b/langs/fr/cgi-bin/fr.pl index ccd61cb407..40053a061f 100644 --- a/langs/fr/cgi-bin/fr.pl +++ b/langs/fr/cgi-bin/fr.pl @@ -935,7 +935,7 @@ 'ike grouptype' => 'Type de groupe IKE :', 'ike integrity' => 'Intégrité IKE :', 'ike lifetime' => 'Durée de vie IKE :', -'ike lifetime should be between 1 and 8 hours' => 'La durée de vie IKE devrait être comprise entre 1 et 8 heures.', +'ike lifetime should be between 1 and 24 hours' => 'La durée de vie IKE devrait être comprise entre 1 et 24 heures.', 'import' => 'Importer', 'importkey' => 'Importer PSK', 'in' => 'Dans', diff --git a/langs/it/cgi-bin/it.pl b/langs/it/cgi-bin/it.pl index 0b5e7868cb..4fde313762 100644 --- a/langs/it/cgi-bin/it.pl +++ b/langs/it/cgi-bin/it.pl @@ -1247,7 +1247,7 @@ 'ike grouptype' => 'IKE Grouptype:', 'ike integrity' => 'IKE Integrity:', 'ike lifetime' => 'IKE Lifetime:', -'ike lifetime should be between 1 and 8 hours' => 'IKE lifetime should be between 1 and 8 hours.', +'ike lifetime should be between 1 and 24 hours' => 'IKE lifetime should be between 1 and 24 hours.', 'imei' => 'IMEI', 'import' => 'Import', 'importkey' => 'Import PSK', diff --git a/langs/nl/cgi-bin/nl.pl b/langs/nl/cgi-bin/nl.pl index fdad1d3abd..7468eb9162 100644 --- a/langs/nl/cgi-bin/nl.pl +++ b/langs/nl/cgi-bin/nl.pl @@ -1227,7 +1227,7 @@ 'ike grouptype' => 'IKE Groepstype:', 'ike integrity' => 'IKE Integriteit:', 'ike lifetime' => 'IKE Levensduur:', -'ike lifetime should be between 1 and 8 hours' => 'IKE levensduur moet tussen 1 en 8 uur liggen.', +'ike lifetime should be between 1 and 24 hours' => 'IKE levensduur moet tussen 1 en 24 uur liggen.', 'import' => 'Importeer', 'importkey' => 'Importeer PSK', 'in' => 'In', diff --git a/langs/pl/cgi-bin/pl.pl b/langs/pl/cgi-bin/pl.pl index 5a205e1dee..02fb531cf4 100644 --- a/langs/pl/cgi-bin/pl.pl +++ b/langs/pl/cgi-bin/pl.pl @@ -943,7 +943,7 @@ 'ike grouptype' => 'Typ grupy IKE:', 'ike integrity' => 'Spójność IKE:', 'ike lifetime' => 'Czas ważności IKE:', -'ike lifetime should be between 1 and 8 hours' => 'Czas ważności IKE powinien wynosić od 1 do 8 godzin.', +'ike lifetime should be between 1 and 24 hours' => 'Czas ważności IKE powinien wynosić od 1 do 24 godzin.', 'import' => 'Import', 'importkey' => 'Import PSK', 'in' => 'W', diff --git a/langs/ru/cgi-bin/ru.pl b/langs/ru/cgi-bin/ru.pl index 38b844169e..a2a3693884 100644 --- a/langs/ru/cgi-bin/ru.pl +++ b/langs/ru/cgi-bin/ru.pl @@ -937,7 +937,7 @@ 'ike grouptype' => 'IKE Grouptype:', 'ike integrity' => 'IKE Integrity:', 'ike lifetime' => 'IKE Lifetime:', -'ike lifetime should be between 1 and 8 hours' => 'IKE lifetime should be between 1 and 8 hours.', +'ike lifetime should be between 1 and 24 hours' => 'IKE lifetime should be between 1 and 24 hours.', 'import' => 'Import', 'importkey' => 'Import PSK', 'in' => 'In', diff --git a/langs/tr/cgi-bin/tr.pl b/langs/tr/cgi-bin/tr.pl index ca199bfad7..89f753ed6d 100644 --- a/langs/tr/cgi-bin/tr.pl +++ b/langs/tr/cgi-bin/tr.pl @@ -1261,7 +1261,7 @@ 'ike grouptype' => 'IKE Grup Türü:', 'ike integrity' => 'IKE Bütünlüğü:', 'ike lifetime' => 'IKE Yaşam Süresi:', -'ike lifetime should be between 1 and 8 hours' => 'IKE yaşam süresi 1 ila 8 saat arasında olmalıdır.', +'ike lifetime should be between 1 and 24 hours' => 'IKE yaşam süresi 1 ila 24 saat arasında olmalıdır.', 'imei' => 'IMEI', 'import' => 'Al', 'importkey' => 'PSK Al', diff --git a/lfs/asterisk b/lfs/asterisk old mode 100644 new mode 100755 index d2b1976cde..f886225257 --- a/lfs/asterisk +++ b/lfs/asterisk @@ -18,13 +18,9 @@ # # ############################################################################### -############################################################################### -# Definitions -############################################################################### - include Config -VER = 1.8.19.0 +VER = 11.15.0 THISAPP = asterisk-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,11 +28,9 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = asterisk -PAK_VER = 8 - -CHAN_CAPI = chan_capi-20120614 +PAK_VER = 14 -DEPS = "libpri libtiff libvorbis libogg spandsp netsnmpd" +DEPS = "libsrtp" ############################################################################### # Top-level Rules @@ -44,21 +38,18 @@ DEPS = "libpri libtiff libvorbis libogg spandsp netsnmpd" objects = $(DL_FILE) \ asterisk-1.4-de-prompts.tar.gz \ - asterisk-extra-sounds-en-gsm-1.4.11.tar.gz \ - asterisk-moh-opsound-gsm-2.03.tar.gz \ - $(CHAN_CAPI).tgz + asterisk-extra-sounds-en-gsm-1.4.15.tar.gz \ + asterisk-moh-opsound-gsm-2.03.tar.gz $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -asterisk-extra-sounds-en-gsm-1.4.11.tar.gz = $(URL_IPFIRE)/asterisk-extra-sounds-en-gsm-1.4.11.tar.gz +asterisk-extra-sounds-en-gsm-1.4.15.tar.gz = $(URL_IPFIRE)/asterisk-extra-sounds-en-gsm-1.4.15.tar.gz asterisk-moh-opsound-gsm-2.03.tar.gz = $(URL_IPFIRE)/asterisk-moh-opsound-gsm-2.03.tar.gz asterisk-1.4-de-prompts.tar.gz = $(URL_IPFIRE)/asterisk-1.4-de-prompts.tar.gz -$(CHAN_CAPI).tgz = $(URL_IPFIRE)/$(CHAN_CAPI).tgz -$(DL_FILE)_MD5 = dc98436846cc2de57100d78747b1bdd1 -asterisk-extra-sounds-en-gsm-1.4.11.tar.gz_MD5 = 5479cb4cb81d678304d96f35e4933a11 +$(DL_FILE)_MD5 = 71e8c2e207255f7ef12b81b7f0da30ea +asterisk-extra-sounds-en-gsm-1.4.15.tar.gz_MD5 = 5099fc65f49008e33ba7fb043a4ec995 asterisk-moh-opsound-gsm-2.03.tar.gz_MD5 = 09066f55f1358f298bc1a6e4678a3ddf asterisk-1.4-de-prompts.tar.gz_MD5 = 626a2b95071a5505851e43874dfbfd5c -$(CHAN_CAPI).tgz_MD5 = c190f44eb362bf258b27f92c3458e4bf install : $(TARGET) @@ -92,16 +83,35 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) # remove old directories and extract asterisk - @rm -rf $(DIR_APP) $(DIR_SRC)/asterisk-* $(DIR_SRC)/$(CHAN_CAPI) $(DIR_SRC)/agx-ast-addons && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - - # confiure asterisk - cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/var/ipfire + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + + # patch asterisk + cd $(DIR_APP) && patch -p4 < $(DIR_SRC)/src/patches/asterisk-no-ffmpeg.patch + + # configure asterisk + cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/var/ipfire \ + --without-oss \ + --without-sdl \ + --without-SDL_image \ + --without-netsnmp \ + --without-avcodec \ + --without-vorbis \ + --without-ogg \ + --without-spandsp \ + --disable-xmldoc # enable additional features (include following sound-tars) - cd $(DIR_APP) && cp -fv $(DIR_SRC)/config/asterisk/asterisk.makeopts menuselect.makeopts + cd $(DIR_APP) && make menuselect.makeopts && menuselect/menuselect \ + --enable res_srtp \ + --enable app_mysql \ + --enable cdr_mysql \ + --enable res_config_mysql \ + --enable EXTRA-SOUNDS-EN-GSM \ + --enable MOH-OPSOUND-GSM \ + menuselect.makeopts # add additional sounds - cd $(DIR_APP) && cp -fv $(DIR_DL)/asterisk-extra-sounds-en-gsm-1.4.11.tar.gz $(DIR_APP)/sounds/ + cd $(DIR_APP) && cp -fv $(DIR_DL)/asterisk-extra-sounds-en-gsm-1.4.15.tar.gz $(DIR_APP)/sounds/ cd $(DIR_APP) && cp -fv $(DIR_DL)/asterisk-moh-opsound-gsm-2.03.tar.gz $(DIR_APP)/sounds/ # Fix wrong cpu optimization (march=armv5tel) @@ -127,21 +137,18 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cp -vrf $(DIR_SRC)/config/asterisk/* /var/ipfire/asterisk/ chmod o+w /var/ipfire/asterisk chown nobody:nobody -R /var/ipfire/asterisk - ln -f -s /var/ipfire/asterisk/wakeup/wakeup.sh /etc/fcron.minutely/wakeup.sh - - # build and install chan capi (needed for isdn) - cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(CHAN_CAPI).tgz - cd $(DIR_SRC)/chan-capi-HEAD && sed -i -e 's/^CFLAGS+=-Wno-unused-but-set-variable$$//' Makefile - cd $(DIR_SRC)/chan-capi-HEAD && make $(MAKETUNING) - cd $(DIR_SRC)/chan-capi-HEAD && make install - @rm -rf $(DIR_SRC)/chan-capi-HEAD + chown nobody:nobody -R /var/lib/asterisk - # be sure all source is removed - @rm -rf $(DIR_APP) $(DIR_SRC)/asterisk-* +# be sure all source is removed + @rm -rf $(DIR_APP) $(DIR_SRC)/asterisk-* $(DIR_SRC)/libsrtp* # remember backup-location install -v -m 644 $(DIR_SRC)/config/backup/includes/asterisk /var/ipfire/backup/addons/includes/asterisk + # Logrotate + mkdir -pv /etc/logrotate.d + install -v -m 644 $(DIR_SRC)/config/asterisk/asterisk.logrotate /etc/logrotate.d/asterisk + # generate softlink (or asterisk will not work properly) ln -sf /var/ipfire/asterisk /etc/asterisk diff --git a/lfs/cmake b/lfs/cmake index 587396538d..085d2bf238 100644 --- a/lfs/cmake +++ b/lfs/cmake @@ -32,6 +32,10 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) +ifeq "$(MACHINE)" "armv5tel" + MAKETUNING = -j2 +endif + ############################################################################### # Top-level Rules ############################################################################### diff --git a/lfs/collectd b/lfs/collectd index d4ea661d51..f01c92a8a9 100644 --- a/lfs/collectd +++ b/lfs/collectd @@ -25,7 +25,7 @@ include Config PKG_NAME = collectd -VER = 4.10.7 +VER = 4.10.9 THISAPP = collectd-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -46,7 +46,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = f4193fdb5002ddac8159c88032a726bc +$(DL_FILE)_MD5 = 980dd3387508f9ad209df04a6f7a126c install : $(TARGET) @@ -79,6 +79,28 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0001-src-utils_mount.h-Add-stdio.h.patch + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0002-Don-t-notify-continuously-when-MySQL-slave-SQL-threa.patch + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0003-curl_xml.c-avoid-using-uninitalized-variable-in-erro.patch + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0004-interface.c-FreeBSD-10-support.patch + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0005-Revert-curl_xml.c-avoid-using-uninitalized-variable-.patch + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0006-network-set_thread_cbs-so-we-initialize-the-right-th.patch + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0007-apache-plugin-Call-curl_global_init-from-the-init-fu.patch + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0008-network-comment-libgcrypt-initalization-process.patch + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0009-Call-curl_global_init-in-_init-of-plugins-using-curl.patch + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0010-indent-wh_init-to-be-consistent-with-the-rest-of-the.patch + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0011-Configparser-when-we-alocate-an-empty-list-we-also-n.patch + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0012-don-t-assume-pkg-config-is-in-PATH.patch + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0013-add-missing-backticks-which-broke-the-build.patch + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0014-snmp-free-snmp_pdu-struct-allocated-by-snmp_pdu_crea.patch + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0015-curl_xml-plugin-Fixed-tautological-pointer-compariso.patch + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0016-Add-support-for-OpenVPN-2.3.0-status-files.patch + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0017-openvpn-plugin-Don-t-signal-an-error-when-no-clients.patch + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0018-openvpn-Remove-boguous-file-handler-check.patch + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0019-openvpn-Ignore-not-fully-established-connections.patch + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0020-openvpn-Make-read-functions-robust-like-in-8516f9abb.patch + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0021-openvpn-Fix-copy-and-paste-error.patch + cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/collectd/0022-openvpn-Change-data-type-from-COUNTER-to-DERIVE.patch cd $(DIR_APP) && ./configure --prefix=/usr --localstatedir=/var \ --disable-{apple_sensors,csv,ipvs,mbmon,memcached,mysql} \ --disable-{netlink,nginx,nut,perl,serial,snmp,tape,vserver,xmms} \ diff --git a/lfs/crda b/lfs/crda index 8bee2584ba..2b1aff8162 100644 --- a/lfs/crda +++ b/lfs/crda @@ -71,6 +71,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/crda-3.13-crypto_use_optional.patch cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) diff --git a/lfs/daq b/lfs/daq index fa8f2a89c5..c58995d575 100644 --- a/lfs/daq +++ b/lfs/daq @@ -24,7 +24,7 @@ include Config -VER = 2.0.2 +VER = 2.0.4 THISAPP = daq-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 865bf9b750a2a2ca632591a3c70b0ea0 +$(DL_FILE)_MD5 = 65e51d72e9d5d8b397e192e4e5857eff install : $(TARGET) diff --git a/lfs/ddns b/lfs/ddns index b94b3a124c..6efc418c54 100644 --- a/lfs/ddns +++ b/lfs/ddns @@ -24,7 +24,7 @@ include Config -VER = 004 +VER = 005 THISAPP = ddns-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = ff77cb72d0cb06c73bde70419b15bae8 +$(DL_FILE)_MD5 = 5fb0e7c8a775ae03074ad90d5a251a4c install : $(TARGET) @@ -71,6 +71,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/ddns/ddns-005-Add-changeip-com.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/ddns/ddns-005-SPDNS-fix-auth.patch + cd $(DIR_APP) && [ -x "configure" ] || sh ./autogen.sh cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/var/ipfire cd $(DIR_APP) && make $(MAKETUNING) diff --git a/lfs/directfb b/lfs/directfb index 34acb593e4..1b5d3a9258 100644 --- a/lfs/directfb +++ b/lfs/directfb @@ -88,5 +88,5 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install ln -s $(THISAPP) /usr/src/directfb -# @rm -rf $(DIR_APP) + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/dnsmasq b/lfs/dnsmasq index 60dabf4a53..c256f75b49 100644 --- a/lfs/dnsmasq +++ b/lfs/dnsmasq @@ -32,7 +32,8 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) -COPTS = -DHAVE_ISC_READER +# We cannot use INOTIFY because our ISC reader code does not support that +COPTS = -DHAVE_ISC_READER -DNO_INOTIFY ############################################################################### # Top-level Rules @@ -72,7 +73,62 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq-2.72rc2-Add-support-to-read-ISC-DHCP-lease-file.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0001-Add-newline-at-the-end-of-example-config-file.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0002-crash-at-startup-when-an-empty-suffix-is-supplied-to.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0003-Debian-build-fixes-for-kFreeBSD.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0004-Set-conntrack-mark-before-connect-call.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0005-Fix-typo-in-new-Dbus-code.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0006-Fit-example-conf-file-typo.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0007-Improve-RFC-compliance-when-unable-to-supply-address.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0008-Fix-conntrack-with-bind-interfaces.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0009-Use-inotify-instead-of-polling-on-Linux.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0010-Teach-the-new-inotify-code-about-symlinks.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0011-Remove-floor-on-EDNS0-packet-size-with-DNSSEC.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0012-CHANGELOG-re.-inotify.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0013-Fix-breakage-of-domain-domain-subnet-local.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0014-Remove-redundant-IN6_IS_ADDR_ULA-a-macro-defn.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0015-Eliminate-IPv6-privacy-addresses-from-interface-name.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0016-Tweak-field-width-in-cache-dump-to-avoid-truncating-.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0017-Fix-crash-in-DNSSEC-code-when-attempting-to-verify-l.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0018-Make-caching-work-for-CNAMEs-pointing-to-A-AAAA-reco.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0019-Fix-problems-validating-NSEC3-and-wildcards.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0020-Initialise-return-value.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0021-Add-ignore-address-option.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0022-Bad-packet-protection.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0023-Fix-build-failure-in-new-inotify-code-on-BSD.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0024-Implement-makefile-dependencies-on-COPTS-variable.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0025-Fix-race-condition-issue-in-makefile.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0026-DNSSEC-do-top-down-search-for-limit-of-secure-delega.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0027-Add-log-queries-extra-option-for-more-complete-loggi.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0028-Add-min-cache-ttl-option.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0029-Log-port-of-requestor-when-doing-extra-logging.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0030-Don-t-answer-from-cache-RRsets-from-wildcards-as-we-.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0031-Logs-for-DS-records-consistent.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0032-Cope-with-multiple-interfaces-with-the-same-LL-addre.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0033-Don-t-treat-SERVFAIL-as-a-recoverable-error.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0034-Add-dhcp-hostsdir-config-option.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0035-Update-German-translation.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0036-Don-t-reply-to-DHCPv6-SOLICIT-messages-when-not-conf.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0037-Allow-inotify-to-be-disabled-at-compile-time-on-Linu.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0038-Expand-inotify-code-to-dhcp-hostsdir-dhcp-optsdir-an.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0039-Update-copyrights-for-dawn-of-2015.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0040-inotify-documentation-updates.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0041-Fix-broken-ECDSA-DNSSEC-signatures.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0042-BSD-make-support.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0043-Fix-build-failure-on-openBSD.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0044-Manpage-typo-fix.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0045-Fixup-dhcp-configs-after-reading-extra-hostfiles-wit.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0046-Extra-logging-for-inotify-code.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0047-man-page-typo.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0048-Fix-get-version-script-which-returned-wrong-tag-in-s.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0049-Typos.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0050-Make-dynamic-hosts-files-work-when-no-hosts-set.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0051-Fix-trivial-memory-leaks-to-quieten-valgrind.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0052-Fix-uninitialized-value-used-in-get_client_mac.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0053-Log-parsing-utils-in-contrib-reverse-dns.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0054-Add-dnssec-timestamp-option-and-facility.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq/0055-Fix-last-commit-to-not-crash-if-uid-changing-not-con.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/dnsmasq-Add-support-to-read-ISC-DHCP-lease-file.patch cd $(DIR_APP) && sed -i src/config.h \ -e 's|/\* #define HAVE_IDN \*/|#define HAVE_IDN|g' \ -e 's|/\* #define HAVE_DNSSEC \*/|#define HAVE_DNSSEC|g' \ @@ -80,7 +136,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) -e 's|#define HAVE_DHCP6|//#define HAVE_DHCP6|g' \ -e 's|#define HAVE_TFTP|//#define HAVE_TFTP|g' - cd $(DIR_APP) && make CFLAGS="$(CFLAGS)" COPTS="$(COPTS)" $(MAKETUNING) - cd $(DIR_APP) && make PREFIX=/usr install + cd $(DIR_APP) && make CFLAGS="$(CFLAGS)" COPTS="$(COPTS)" \ + PREFIX=/usr all install @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/ethtool b/lfs/ethtool index 15f0419d86..16527b6e36 100644 --- a/lfs/ethtool +++ b/lfs/ethtool @@ -24,10 +24,10 @@ include Config -VER = 3.0 +VER = 3.16 THISAPP = ethtool-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.xz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = cb129398cbbf39859901b55ecac101da +$(DL_FILE)_MD5 = 7eee202accb86104adc8463a36a1a468 install : $(TARGET) @@ -69,7 +69,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar Jxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && ./configure --prefix=/usr cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install diff --git a/lfs/fcron b/lfs/fcron index d8fe8fbd9c..5cc2cd62aa 100644 --- a/lfs/fcron +++ b/lfs/fcron @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2014 Michael Tremer & Christian Schmidt # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 3.0.4 +VER = 3.2.0 THISAPP = fcron-$(VER) DL_FILE = $(THISAPP).src.tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 5a26a1dfd91fdc7e87401e98aef870e6 +$(DL_FILE)_MD5 = 4b031c2fba32a98fa814d1557158b0e9 install : $(TARGET) diff --git a/lfs/ffmpeg b/lfs/ffmpeg index 74947311fc..b3838865e8 100644 --- a/lfs/ffmpeg +++ b/lfs/ffmpeg @@ -88,6 +88,5 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_SRC)/ffmpeg && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_SRC)/ffmpeg && make install cd $(DIR_SRC)/ffmpeg && make install-libs - ldconfig -# @rm -rf $(DIR_APP) + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/file b/lfs/file index 70a38e24df..bfd7552867 100644 --- a/lfs/file +++ b/lfs/file @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2014 Michael Tremer & Christian Schmidt # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 5.11 +VER = 5.20 THISAPP = file-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 16a407bd66d6c7a832f3a5c0d609c27b +$(DL_FILE)_MD5 = 5d5e13eb3e0e13839da869a31790faf2 install : $(TARGET) diff --git a/lfs/gnupg b/lfs/gnupg index 5e5ead919a..29835e0825 100644 --- a/lfs/gnupg +++ b/lfs/gnupg @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2014 Michael Tremer & Christian Schmidt # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 1.4.12 +VER = 1.4.18 THISAPP = gnupg-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = ce3742e5c7912559cab7894ad8ba7f6b +$(DL_FILE)_MD5 = 54db1be9588b11afbbdd8b82d4ea883a install : $(TARGET) diff --git a/lfs/grep b/lfs/grep index e9b0b18d4d..ac201613d6 100644 --- a/lfs/grep +++ b/lfs/grep @@ -24,7 +24,7 @@ include Config -VER = 2.14 +VER = 2.21 THISAPP = grep-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -54,7 +54,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = d4a3f03849d1e17ce56ab76aa5a24cab +$(DL_FILE)_MD5 = 43c48064d6409862b8a850db83c8038a install : $(TARGET) diff --git a/lfs/hdparm b/lfs/hdparm index e4a44bf82f..e4e2e535bd 100644 --- a/lfs/hdparm +++ b/lfs/hdparm @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2012 IPFire Team # +# Copyright (C) 2007-2014 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 9.42 +VER = 9.45 THISAPP = hdparm-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 0af5a38b212fe08f5afbe5e37f34b40b +$(DL_FILE)_MD5 = 1c75d0751a44928b6c4bc81fb16d7fe8 install : $(TARGET) diff --git a/lfs/htop b/lfs/htop index c334a91c0e..3e5b53263c 100644 --- a/lfs/htop +++ b/lfs/htop @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2013 IPFire Team # +# Copyright (C) 2007-2014 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 1.0.2 +VER = 1.0.3 THISAPP = htop-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = htop -PAK_VER = 6 +PAK_VER = 7 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 0d01cca8df3349c74569cefebbd9919e +$(DL_FILE)_MD5 = e768b9b55c033d9c1dffda72db3a6ac7 install : $(TARGET) diff --git a/lfs/initscripts b/lfs/initscripts old mode 100644 new mode 100755 diff --git a/lfs/iptables b/lfs/iptables index 5a1764be0a..d3c8402b07 100644 --- a/lfs/iptables +++ b/lfs/iptables @@ -83,7 +83,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) $(DIR_SRC)/libnfnetlink-1.0.0 $(DIR_SRC)/netfilter-layer7* $(DIR_SRC)/libnetfilter_queue-0.0.17 + @rm -rf $(DIR_APP) $(DIR_SRC)/libnfnetlink-* $(DIR_SRC)/netfilter-layer7* $(DIR_SRC)/libnetfilter_queue-* @cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) # cp -rf /usr/src/linux/include/linux/netfilter /usr/include/linux @@ -138,5 +138,5 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_SRC)/libnetfilter_cttimeout-1.0.0 && make $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_SRC)/libnetfilter_cttimeout-1.0.0 && make install - @rm -rf $(DIR_APP) $(DIR_SRC)/libnfnetlink-1.0.0 $(DIR_SRC)/netfilter-layer7* $(DIR_SRC)/libnetfilter_queue-0.0.17 + @rm -rf $(DIR_APP) $(DIR_SRC)/libnfnetlink-* $(DIR_SRC)/netfilter-layer7* $(DIR_SRC)/libnetfilter_queue-* @$(POSTBUILD) diff --git a/lfs/krb5 b/lfs/krb5 index 64eb670bda..68be46c805 100644 --- a/lfs/krb5 +++ b/lfs/krb5 @@ -76,7 +76,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + @rm -rf $(DIR_SRC)/$(THISAPP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && patch -Np2 < $(DIR_SRC)/src/patches/mitkrb-1.12.1-db2_fix-1.patch cd $(DIR_APP) && sed -e "s@python2.5/Python.h@& python2.7/Python.h@g" \ @@ -101,5 +101,5 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) chmod -f -v 755 "/usr/lib/lib$$LIB.so"; \ done - @rm -rf $(DIR_APP) + @rm -rf $(DIR_SRC)/$(THISAPP) @$(POSTBUILD) diff --git a/lfs/lcr b/lfs/lcr index 061cde9ce4..321be97ed2 100644 --- a/lfs/lcr +++ b/lfs/lcr @@ -24,7 +24,7 @@ include Config -VER = 20121008 +VER = 20140403 THISAPP = lcr-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = lcr -PAK_VER = 5 +PAK_VER = 6 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 6c5e25329be107e30436b716bafc786f +$(DL_FILE)_MD5 = c81c5862d51720a3efc06fd2c02cd58d install : $(TARGET) @@ -77,8 +77,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_SRC)/lcr && cd $(DIR_SRC) && tar Jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_SRC)/lcr && sed -i -e "s|^EXTENSIONdir=.*|EXTENSIONdir=/var/ipfire/lcr/extensions|g" \ - Makefile.am + cd $(DIR_SRC)/lcr && sed -i -e "s|^EXTENSIONdir=.*|EXTENSIONdir=/var/ipfire/lcr/extensions|g" Makefile.am + cd $(DIR_SRC)/lcr && sed -i -e "s|-D_GNU_SOURCE|-D_GNU_SOURCE -DASTERISK_VERSION_NUM=110000|g" Makefile.am cd $(DIR_SRC)/lcr && ./autogen.sh cd $(DIR_SRC)/lcr && ./configure --prefix=/usr \ --sysconfdir=/var/ipfire \ diff --git a/lfs/libart b/lfs/libart index dbd9840977..5d32e0e275 100644 --- a/lfs/libart +++ b/lfs/libart @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2014 Michael Tremer & Christian Schmidt # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 2.3.17 +VER = 2.3.21 THISAPP = libart_lgpl-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = dfca42529393c8a8f59dc4dc10675a46 +$(DL_FILE)_MD5 = 08559ff3c67fd95d57b0c5e91a6b4302 install : $(TARGET) diff --git a/lfs/libassuan b/lfs/libassuan index 3a32984d02..9670b7bc11 100644 --- a/lfs/libassuan +++ b/lfs/libassuan @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2014 Michael Tremer & Christian Schmidt # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 2.0.3 +VER = 2.1.3 THISAPP = libassuan-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = libassuan -PAK_VER = 1 +PAK_VER = 2 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 179d1918325fdb928c7bd90b8a514fc7 +$(DL_FILE)_MD5 = b5373485419a7e2c23457d20811caabe install : $(TARGET) diff --git a/lfs/libcap b/lfs/libcap index 78b5d34a2c..66ab555bb3 100644 --- a/lfs/libcap +++ b/lfs/libcap @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2014 Michael Tremer & Christian Schmidt # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,10 +24,10 @@ include Config -VER = 2.19 +VER = 2.24 THISAPP = libcap-$(VER) -DL_FILE = $(THISAPP).tar.bz2 +DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = eb1ff04d39bfa2342b8e78b0fd60dc2d +$(DL_FILE)_MD5 = ffb154f29b1d28466c6fe6add8286a2d install : $(TARGET) @@ -69,11 +69,11 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && make cd $(DIR_APP) && make install # link for old binaries - ln -s libcap.so.2 /lib/libcap.so.1 + ln -svf libcap.so.2 /lib/libcap.so.1 chmod +x /lib/libcap.so.* @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/libdvbpsi b/lfs/libdvbpsi index cc7f0e34d8..68c7deb393 100644 --- a/lfs/libdvbpsi +++ b/lfs/libdvbpsi @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2014 Michael Tremer & Christian Schmidt # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,15 +24,15 @@ include Config -VER = 0.1.6 +VER = 1.2.0 -THISAPP = libdvbpsi5-$(VER) +THISAPP = libdvbpsi-$(VER) DL_FILE = $(THISAPP).tar.bz2 DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = libdvbpsi -PAK_VER = 1 +PAK_VER = 2 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = bd2d9861be3311e1e03c91cd9345f542 +$(DL_FILE)_MD5 = 69e38e93c4db4f2a58cbd0b6f9f38228 install : $(TARGET) diff --git a/lfs/libevent2 b/lfs/libevent2 index 0756ab15c9..e2ad69fd5e 100644 --- a/lfs/libevent2 +++ b/lfs/libevent2 @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2011 IPFire Team # +# Copyright (C) 2007-2014 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 2.0.13-stable +VER = 2.0.21-stable THISAPP = libevent-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -33,7 +33,7 @@ DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = libevent2 -PAK_VER = 1 +PAK_VER = 2 DEPS = "" @@ -45,7 +45,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = af786b4b3f790c9d3279792edf7867fc +$(DL_FILE)_MD5 = b2405cc9ebf264aa47ff615d9de527a2 install : $(TARGET) diff --git a/lfs/libffi b/lfs/libffi index 0e94b3177f..6f9a868125 100644 --- a/lfs/libffi +++ b/lfs/libffi @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2014 Michael Tremer & Christian Schmidt # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 3.0.11 +VER = 3.2.1 THISAPP = libffi-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = f69b9693227d976835b4857b1ba7d0e3 +$(DL_FILE)_MD5 = 83b89587607e3eb65c70d361f13bab43 install : $(TARGET) check : $(patsubst %,$(DIR_CHK)/%,$(objects)) diff --git a/lfs/libpcap b/lfs/libpcap index 0f118a4287..fa2aae8f34 100644 --- a/lfs/libpcap +++ b/lfs/libpcap @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2014 Michael Tremer & Christian Schmidt # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 1.4.0 +VER = 1.6.2 THISAPP = libpcap-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -42,7 +42,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 56e88a5aabdd1e04414985ac24f7e76c +$(DL_FILE)_MD5 = 5f14191c1a684a75532c739c2c4059fa install : $(TARGET) @@ -72,7 +72,11 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && ./configure --prefix=/usr + cd $(DIR_APP) && ./configure \ + --prefix=/usr \ + --enable-bluetooth=no \ + --disable-dbus + cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install @rm -rf $(DIR_APP) diff --git a/lfs/teamspeak b/lfs/libsrtp similarity index 68% rename from lfs/teamspeak rename to lfs/libsrtp index 06fbb0f384..6dfef3b197 100644 --- a/lfs/teamspeak +++ b/lfs/libsrtp @@ -24,12 +24,14 @@ include Config -VER = 2.0.24.1 - -THISAPP = teamspeak-$(VER) +VER = 1.5.0 +THISAPP = libsrtp-$(VER) +DL_FILE = $(THISAPP).tar.gz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) -PROG = teamspeak -PAK_VER = 2 +PROG = libsrtp +PAK_VER = 1 DEPS = "" @@ -37,26 +39,46 @@ DEPS = "" # Top-level Rules ############################################################################### -objects = +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = ec49ba558b4fd056114df2c76935aa8e install : $(TARGET) -check : +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) -download : +download :$(patsubst %,$(DIR_DL)/%,$(objects)) -md5 : +md5 : $(subst %,%_MD5,$(objects)) dist: @$(PAK) +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + ############################################################################### # Installation Details ############################################################################### -$(TARGET) : +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - -mkdir -p /opt/teamspeak - install -v -m 644 $(DIR_SRC)/config/backup/includes/teamspeak \ - /var/ipfire/backup/addons/includes/teamspeak + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + + cd $(DIR_APP) && ./configure --prefix=/usr + cd $(DIR_APP) && make uninstall && make $(MAKETUNING) libsrtp.so + cd $(DIR_APP) && make install + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/logrotate b/lfs/logrotate index 54afba1d3d..8f81b2df54 100644 --- a/lfs/logrotate +++ b/lfs/logrotate @@ -72,6 +72,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install - touch /var/lib/logrotate.status + mkdir -pv /etc/logrotate.d + touch /etc/logrotate.d/.empty /var/lib/logrotate.status @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/lynis b/lfs/lynis index 5cfd184a44..b3cabd752e 100644 --- a/lfs/lynis +++ b/lfs/lynis @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2015 IPfire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,16 +24,16 @@ include Config -VER = 1.2.9 +VER = 1.6.4 THISAPP = lynis-$(VER) DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) +DIR_APP = $(DIR_SRC)/lynis TARGET = $(DIR_INFO)/$(THISAPP) PROG = lynis -PAK_VER = 4 +PAK_VER = 5 DEPS = "" ############################################################################### @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 69b369173ffc0f10f021035f73857e1f +$(DL_FILE)_MD5 = dfa946388af8926bd24f772d4fa4830a install : $(TARGET) diff --git a/lfs/mISDNuser b/lfs/mISDNuser index 4f4edd5aa8..c471c76073 100644 --- a/lfs/mISDNuser +++ b/lfs/mISDNuser @@ -74,4 +74,5 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_SRC)/mISDNuser && ./configure --prefix=/usr --with-AF_ISDN=34 cd $(DIR_SRC)/mISDNuser && make MISDNDIR=/usr/src/linux cd $(DIR_SRC)/mISDNuser && make install MISDNDIR=/usr/src/linux + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/mc b/lfs/mc index ed799be064..4dc937cb83 100644 --- a/lfs/mc +++ b/lfs/mc @@ -24,7 +24,7 @@ include Config -VER = 4.8.12 +VER = 4.8.13 THISAPP = mc-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = mc -PAK_VER = 9 +PAK_VER = 10 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 7ecccc03df060cd0ca1414a5a14e6649 +$(DL_FILE)_MD5 = d967caa12765eb86e52a6a63ca202500 install : $(TARGET) diff --git a/lfs/mediatomb b/lfs/mediatomb index 7de579ee42..5811a0ad6e 100644 --- a/lfs/mediatomb +++ b/lfs/mediatomb @@ -32,9 +32,9 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = mediatomb -PAK_VER = 4 +PAK_VER = 5 -DEPS = "ffmpeg-libs libexif sqlite taglib " +DEPS = "ffmpeg-libs libexif taglib " ############################################################################### # Top-level Rules diff --git a/lfs/minidlna b/lfs/minidlna index 155cd4a071..1c3f61c42e 100644 --- a/lfs/minidlna +++ b/lfs/minidlna @@ -32,9 +32,9 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = minidlna -PAK_VER = 3 +PAK_VER = 4 -DEPS = "ffmpeg flac libexif libid3tag libogg sqlite" +DEPS = "ffmpeg flac libexif libid3tag libogg" ############################################################################### # Top-level Rules diff --git a/lfs/miniupnpd b/lfs/miniupnpd index a314624882..18b8c393b5 100644 --- a/lfs/miniupnpd +++ b/lfs/miniupnpd @@ -24,7 +24,7 @@ include Config -VER = 1.8 +VER = 1.9 THISAPP = miniupnpd-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = miniupnpd -PAK_VER = 1 +PAK_VER = 2 ############################################################################### # Top-level Rules @@ -42,7 +42,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 0d8a8e936d5a0012cb260a3b972acbf3 +$(DL_FILE)_MD5 = 9151502f84f130b0ef1245ac938c33f9 install : $(TARGET) diff --git a/lfs/monit b/lfs/monit new file mode 100644 index 0000000000..6c35c6ced9 --- /dev/null +++ b/lfs/monit @@ -0,0 +1,96 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2009 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 5.11 + +THISAPP = monit-$(VER) +DL_FILE = $(THISAPP).tar.gz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) +PROG = monit +PAK_VER = 3 + +DEPS = "" + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = ff00f39d248ed7068932ed82211da9e6 + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +dist: + @$(PAK) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var + cd $(DIR_APP) && make $(MAKETUNING) + cd $(DIR_APP) && make install + + install -v -m 644 $(DIR_SRC)/config/backup/includes/monit \ + /var/ipfire/backup/addons/includes/monit + + # Install default configuration + install -v -m 600 $(DIR_SRC)/config/monit/monitrc /etc + + # Install start links and backup include file. + ln -sf ../init.d/monit /etc/rc.d/rc3.d/S60monit + ln -sf ../init.d/monit /etc/rc.d/rc0.d/K40monit + ln -sf ../init.d/monit /etc/rc.d/rc6.d/K40monit + + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/lfs/nagios b/lfs/nagios index 868272bb30..1a88989d7c 100644 --- a/lfs/nagios +++ b/lfs/nagios @@ -79,7 +79,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + @rm -rf $(DIR_APP) $(DIR_SRC)/nagios-plugins* && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) cd $(DIR_APP) && \ ./configure --prefix=/usr \ --sysconfdir=/etc/nagios \ @@ -110,5 +110,5 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) ln -s /etc/init.d/nagios /etc/rc.d/rc3.d/S67nagios ln -s /etc/init.d/nagios /etc/rc.d/rc0.d/K33nagios ln -s /etc/init.d/nagios /etc/rc.d/rc6.d/K33nagios - @rm -rf $(DIR_APP) + @rm -rf $(DIR_APP) $(DIR_SRC)/nagios-plugins* @$(POSTBUILD) diff --git a/lfs/nginx b/lfs/nginx index b640dcc5e2..63d36985ca 100644 --- a/lfs/nginx +++ b/lfs/nginx @@ -24,7 +24,7 @@ include Config -VER = 1.4.4 +VER = 1.6.2 THISAPP = nginx-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = nginx -PAK_VER = 3 +PAK_VER = 4 ############################################################################### # Top-level Rules @@ -42,7 +42,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 5dfaba1cbeae9087f3949860a02caa9f +$(DL_FILE)_MD5 = d1b55031ae6e4bce37f8776b94d8b930 install : $(TARGET) diff --git a/lfs/nmap b/lfs/nmap index 38b6da912d..a7870da31a 100644 --- a/lfs/nmap +++ b/lfs/nmap @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2011 IPFire Team # +# Copyright (C) 2015 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 6.01 +VER = 6.47 THISAPP = nmap-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = nmap -PAK_VER = 6 +PAK_VER = 7 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = a1a71940f238abb835dbf3ee7412bcea +$(DL_FILE)_MD5 = edfe81f6763223c0a29bfa15a8526e2a install : $(TARGET) diff --git a/lfs/openssl b/lfs/openssl index eae2c6e53a..82f26bd25c 100644 --- a/lfs/openssl +++ b/lfs/openssl @@ -105,6 +105,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) no-mdc2 \ no-rc5 \ no-srp \ + no-ssl2 \ + no-ssl3 \ $(CONFIGURE_ARGS) \ -DSSL_FORBID_ENULL \ -DHAVE_CRYPTODEV \ diff --git a/lfs/openvpn b/lfs/openvpn index 44a8b46978..a19ac1ff15 100644 --- a/lfs/openvpn +++ b/lfs/openvpn @@ -83,6 +83,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && make install cd $(DIR_APP) && cp -Rvf $(DIR_SRC)/config/ovpn /var/ipfire -mkdir -vp /usr/lib/openvpn/plugins + -mkdir -vp /var/log/openvpn -mkdir -vp /var/ipfire/ovpn/ca -mkdir -vp /var/ipfire/ovpn/ccd -mkdir -vp /var/ipfire/ovpn/crls @@ -92,8 +93,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) chmod 700 /var/ipfire/ovpn/ovpn-leases.db chown -R root:root /var/ipfire/ovpn/scripts chown -R nobody:nobody /var/ipfire/ovpn - chown root.nobody /var/log/ovpnserver.log - chmod 660 /var/log/ovpnserver.log chmod 700 /var/ipfire/ovpn/certs mv -v /var/ipfire/ovpn/verify /usr/lib/openvpn/verify chown root:root /usr/lib/openvpn/verify diff --git a/lfs/owncloud b/lfs/owncloud index 93ab3a58bd..88c5f4590f 100644 --- a/lfs/owncloud +++ b/lfs/owncloud @@ -24,7 +24,7 @@ include Config -VER = 7.0.0 +VER = 7.0.3 THISAPP = owncloud-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = owncloud -PAK_VER = 2 +PAK_VER = 4 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 28cfdc99e8ee9350fe88430b4c7d62f2 +$(DL_FILE)_MD5 = d5d2ad068046e6ddb322cf001a9bb3d5 install : $(TARGET) @@ -97,4 +97,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) /etc/httpd/conf/vhosts.d/ install -v -m 644 $(DIR_SRC)/config/backup/includes/owncloud \ /var/ipfire/backup/addons/includes/owncloud + + @rm -rf $(DIR_SRC)/$(PROG) @$(POSTBUILD) diff --git a/lfs/pakfire3 b/lfs/pakfire3 index 8fb810d882..d71d4242fe 100644 --- a/lfs/pakfire3 +++ b/lfs/pakfire3 @@ -32,9 +32,9 @@ DL_FROM = http://source.ipfire.org/releases/pakfire/ DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = pakfire3 -PAK_VER = 4 +PAK_VER = 5 -DEPS = "libsolv pycurl pygpgme python-progressbar python-xattr sqlite urlgrabber" +DEPS = "libsolv pycurl pygpgme python-progressbar python-xattr urlgrabber" ############################################################################### # Top-level Rules diff --git a/lfs/pcre b/lfs/pcre index 5aa40bd20d..f5c771ca81 100644 --- a/lfs/pcre +++ b/lfs/pcre @@ -24,7 +24,7 @@ include Config -VER = 8.31 +VER = 8.36 THISAPP = pcre-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = fab1bb3b91a4c35398263a5c1e0858c1 +$(DL_FILE)_MD5 = ff7b4bb14e355f04885cf18ff4125c98 install : $(TARGET) @@ -74,7 +74,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) --prefix=/usr \ --disable-static \ --enable-utf8 \ - --enable-jit \ + --disable-jit \ --enable-unicode-properties cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install diff --git a/lfs/screen b/lfs/screen index b94d62e6eb..f3c451dffa 100644 --- a/lfs/screen +++ b/lfs/screen @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2014 Michael Tremer & Christian Schmidt # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 4.0.3 +VER = 4.2.1 THISAPP = screen-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 8506fd205028a96c741e4037de6e3c42 +$(DL_FILE)_MD5 = 419a0594e2b25039239af8b90eda7d92 install : $(TARGET) @@ -70,7 +70,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/screen-4.0.3-stropts.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/screen-4.2.1-cpation-hardstatus.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/screen-4.2.1-altscreen.patch cd $(DIR_APP) && ./configure --prefix=/usr --with-socket-dir=/var/run/screen --with-sys-screenrc=/etc/screenrc cd $(DIR_APP) && sed -i -e "s%/usr/local/etc/screenrc%/etc/screenrc%" {etc,doc}/* cd $(DIR_APP) && make $(MAKETUNING) diff --git a/lfs/smartmontools b/lfs/smartmontools index 196b4665a1..c3ba635a56 100644 --- a/lfs/smartmontools +++ b/lfs/smartmontools @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2012 IPFire Team # +# Copyright (C) 2007-2014 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 6.1 +VER = 6.3 THISAPP = smartmontools-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 83a3a681f8183ed858392d550ae1cca6 +$(DL_FILE)_MD5 = 2ea0c62206e110192a97b59291b17f54 install : $(TARGET) diff --git a/lfs/snort b/lfs/snort index 45c17a8ad6..77d3b0d613 100644 --- a/lfs/snort +++ b/lfs/snort @@ -24,7 +24,7 @@ include Config -VER = 2.9.6.1 +VER = 2.9.7.0 THISAPP = snort-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = d7c0f1ddb2e70b70acdaa4664abb5fb0 +$(DL_FILE)_MD5 = c2a45bc56441ee9456478f219dd8d1e2 install : $(TARGET) diff --git a/lfs/sqlite b/lfs/sqlite index 5bc694a28b..903bcb223a 100644 --- a/lfs/sqlite +++ b/lfs/sqlite @@ -24,17 +24,13 @@ include Config -VER = 3070603 +VER = 3080704 THISAPP = sqlite-autoconf-$(VER) DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) -PROG = sqlite -PAK_VER = 2 - -DEPS = "" ############################################################################### # Top-level Rules @@ -44,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 7eb41eea5ffa5cbe359a48629084c425 +$(DL_FILE)_MD5 = 33bb8db0038317ce1b0480ca1185c7ba install : $(TARGET) @@ -67,9 +63,6 @@ $(patsubst %,$(DIR_DL)/%,$(objects)) : $(subst %,%_MD5,$(objects)) : @$(MD5) -dist: - @$(PAK) - ############################################################################### # Installation Details ############################################################################### diff --git a/lfs/squid b/lfs/squid index 548abd937a..67e4a7db15 100644 --- a/lfs/squid +++ b/lfs/squid @@ -24,7 +24,7 @@ include Config -VER = 3.4.8 +VER = 3.4.9 THISAPP = squid-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = b0c4335447248810169f58ea4d8b204a +$(DL_FILE)_MD5 = 497e5be7b3430d12667628296760beca install : $(TARGET) diff --git a/lfs/squid-accounting b/lfs/squid-accounting index 9ef8324110..7eae4fbb62 100644 --- a/lfs/squid-accounting +++ b/lfs/squid-accounting @@ -9,7 +9,7 @@ include Config -VER = 1.0.1 +VER = 1.0.2 THISAPP = squid-accounting-$(VER) DIR_APP = $(DIR_SRC)/$(THISAPP) diff --git a/lfs/strongswan b/lfs/strongswan index 642d651823..43995b5a11 100644 --- a/lfs/strongswan +++ b/lfs/strongswan @@ -24,7 +24,7 @@ include Config -VER = 5.2.1 +VER = 5.2.2 THISAPP = strongswan-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -48,7 +48,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = dd3717c0aa59ab4591ca1812941ebb82 +$(DL_FILE)_MD5 = 7ee1a33060b2bde35be0f6d78a1d26d0 install : $(TARGET) @@ -78,8 +78,11 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/strongswan-5.1.2-5.2.1_modp_custom.patch cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/strongswan-5.0.2_ipfire.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/strongswan-5.2.2-issue-816-eb25190.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/strongswan-5.2.2-issue-816-650a3ad.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/strongswan-5.2.2-issue-816-dd0ebb.patch + cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/strongswan-5.2.2-issue-819-cd2c30a.patch cd $(DIR_APP) && [ -x "configure" ] || ./autogen.sh cd $(DIR_APP) && ./configure \ @@ -117,5 +120,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) ln -sf $(CONFIG_ROOT)/certs /etc/ipsec.d/certs ln -sf $(CONFIG_ROOT)/crls /etc/ipsec.d/crls + install -v -m 644 $(DIR_SRC)/config/strongswan/charon.conf \ + /etc/strongswan.d/charon.conf + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/sysklogd b/lfs/sysklogd index 9c9dd0d556..ca6110a6d5 100644 --- a/lfs/sysklogd +++ b/lfs/sysklogd @@ -75,8 +75,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) #cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)_xen_empty_buffer_check.patch cd $(DIR_APP) && make $(MAKETUNING) cd $(DIR_APP) && make install - touch /var/log/{dhcpcd.log,messages,ovpnserver.log} - chmod 664 /var/log/{dhcpcd.log,messages,ovpnserver.log} - chown 0:105 /var/log/{dhcpcd.log,messages,ovpnserver.log} + touch /var/log/{dhcpcd.log,messages} + chmod 664 /var/log/{dhcpcd.log,messages} + chown 0:105 /var/log/{dhcpcd.log,messages} @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/tar b/lfs/tar index b1ef2fc983..5919b04746 100644 --- a/lfs/tar +++ b/lfs/tar @@ -24,7 +24,7 @@ include Config -VER = 1.22 +VER = 1.28 THISAPP = tar-$(VER) DL_FILE = $(THISAPP).tar.bz2 @@ -36,7 +36,7 @@ DIR_APP = $(DIR_SRC)/$(THISAPP) ifeq "$(ROOT)" "" TARGET = $(DIR_INFO)/$(THISAPP) EXTRA_CONFIG = --prefix=/usr --bindir=/bin \ - --libexecdir=/usr/sbin --disable-nls + --libexecdir=/usr/sbin --disable-nls FORCE_UNSAFE_CONFIGURE=1 EXTRA_MAKE = EXTRA_INSTALL = else @@ -54,7 +54,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 07fa517027f426bb80f5f5ff91b63585 +$(DL_FILE)_MD5 = 8f32b2bc1ed7ddf4cf4e4a39711341b0 install : $(TARGET) diff --git a/lfs/tcpdump b/lfs/tcpdump index 934e851787..6fe6f98ecf 100644 --- a/lfs/tcpdump +++ b/lfs/tcpdump @@ -24,7 +24,7 @@ include Config -VER = 4.4.0 +VER = 4.6.2 THISAPP = tcpdump-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = tcpdump -PAK_VER = 3 +PAK_VER = 4 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 6f75aabcffd012f73bd7c331bb5d8232 +$(DL_FILE)_MD5 = 74d0d3728b3cdc60db872d842e7f1598 install : $(TARGET) diff --git a/lfs/wget b/lfs/wget index fd4c9472d1..eef2a2597e 100644 --- a/lfs/wget +++ b/lfs/wget @@ -1,7 +1,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2013 IPFire Team # +# Copyright (C) 2007-2014 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -24,7 +24,7 @@ include Config -VER = 1.14 +VER = 1.16 THISAPP = wget-$(VER) DL_FILE = $(THISAPP).tar.xz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 316f6f59292c9098ad81fd54f658c579 +$(DL_FILE)_MD5 = fe102975ab3a6c049777883f1bb9ad07 install : $(TARGET) @@ -71,8 +71,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar Jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/wget-1.14-texi2pod-1.patch - cd $(DIR_APP) && ./configure \ --prefix=/usr \ --sysconfdir=/etc \ diff --git a/lfs/xvid b/lfs/xvid index f3cf00c8b9..abf03a52a7 100644 --- a/lfs/xvid +++ b/lfs/xvid @@ -29,7 +29,7 @@ VER = 1.2.1 THISAPP = xvidcore-$(VER) DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) +DIR_APP = $(DIR_SRC)/xvidcore TARGET = $(DIR_INFO)/$(THISAPP) PROG = xvid PAK_VER = 2 @@ -77,9 +77,9 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_SRC)/xvidcore/build/generic && ./configure --prefix=/usr - cd $(DIR_SRC)/xvidcore/build/generic && make - cd $(DIR_SRC)/xvidcore/build/generic && make install + cd $(DIR_APP)/build/generic && ./configure --prefix=/usr + cd $(DIR_APP)/build/generic && make + cd $(DIR_APP)/build/generic && make install chmod -v 755 /usr/lib/libxvidcore.so.4.2 ln -v -sf libxvidcore.so.4.2 /usr/lib/libxvidcore.so.4 ln -v -sf libxvidcore.so.4 /usr/lib/libxvidcore.so diff --git a/lfs/zlib b/lfs/zlib index 0a2977d0d2..6520a2374d 100644 --- a/lfs/zlib +++ b/lfs/zlib @@ -24,7 +24,7 @@ include Config -VER = 1.2.7 +VER = 1.2.8 THISAPP = zlib-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -41,7 +41,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 60df6a37c56e7c1366cca812414f7b85 +$(DL_FILE)_MD5 = 44d667c142d7cda120332623eab69f40 install : $(TARGET) diff --git a/make.sh b/make.sh index 4e7eba2732..9309ddaa25 100755 --- a/make.sh +++ b/make.sh @@ -649,7 +649,7 @@ buildipfire() { ipfiremake libevent2 ipfiremake portmap ipfiremake nfs - ipfiremake nmap + #ipfiremake nmap ipfiremake ncftp ipfiremake etherwake ipfiremake bwm-ng @@ -664,7 +664,6 @@ buildipfire() { ipfiremake lm_sensors ipfiremake liboping ipfiremake collectd - ipfiremake teamspeak ipfiremake elinks ipfiremake igmpproxy ipfiremake fbset @@ -733,9 +732,11 @@ buildipfire() { ipfiremake iftop ipfiremake motion ipfiremake joe + ipfiremake monit ipfiremake nut ipfiremake watchdog ipfiremake libpri + ipfiremake libsrtp ipfiremake asterisk ipfiremake lcr ipfiremake usb_modeswitch diff --git a/src/initscripts/init.d/asterisk b/src/initscripts/init.d/asterisk index aac9a637ef..ef5b5f9d5d 100644 --- a/src/initscripts/init.d/asterisk +++ b/src/initscripts/init.d/asterisk @@ -18,7 +18,7 @@ case "${1}" in start) boot_mesg "Starting Asterisk PBX..." - loadproc /usr/sbin/asterisk -p + loadproc /usr/sbin/asterisk -p ;; stop) diff --git a/src/initscripts/init.d/monit b/src/initscripts/init.d/monit new file mode 100644 index 0000000000..02f47e481c --- /dev/null +++ b/src/initscripts/init.d/monit @@ -0,0 +1,39 @@ +#!/bin/sh +######################################################################## +# Begin $rc_base/init.d/monit +# +# Description : monit monitoring daemon +# +######################################################################## + +. /etc/sysconfig/rc +. ${rc_functions} + +case "${1}" in + start) + boot_mesg "Starting monit..." + loadproc /usr/bin/monit + ;; + + stop) + boot_mesg "Stopping monit..." + killproc /usr/bin/monit + ;; + + restart) + ${0} stop + sleep 1 + ${0} start + ;; + + status) + statusproc /usr/bin/monit + ;; + + *) + echo "Usage: ${0} {start|stop|restart|status}" + exit 1 + ;; +esac + +# End $rc_base/init.d/monit diff --git a/src/initscripts/init.d/teamspeak b/src/initscripts/init.d/teamspeak deleted file mode 100644 index 227b6d2f1d..0000000000 --- a/src/initscripts/init.d/teamspeak +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -######################################################################## -# Begin $rc_base/init.d/teamspeak -# -# Description : Start/Stops the teamspeak server -# -# Authors : Michael Tremer -# -# Version : 01.00 -# -# Notes : -# -######################################################################## - -. /etc/sysconfig/rc -. $rc_functions - -case "$1" in - status) - statusproc /opt/teamspeak/server_linux - ;; - *) - export LANG=en_US.utf8 - cd /opt/teamspeak && sudo -u teamspeak ./teamspeak2-server_startscript $* - exit 0 - ;; -esac -# End $rc_base/init.d/teamspeak diff --git a/src/installer/hw.c b/src/installer/hw.c index ce9777500d..92d0ae5c10 100644 --- a/src/installer/hw.c +++ b/src/installer/hw.c @@ -322,6 +322,9 @@ struct hw_disk** hw_find_disks(struct hw* hw, const char* sourcedrive) { "%s - %s", size_str, p); } + // Cut off the description string after 40 characters + disk->description[41] = '\0'; + *disks++ = disk; if (--i == 0) diff --git a/src/misc-progs/openvpnctrl.c b/src/misc-progs/openvpnctrl.c index 462ce77cce..d20cced774 100644 --- a/src/misc-progs/openvpnctrl.c +++ b/src/misc-progs/openvpnctrl.c @@ -73,6 +73,9 @@ void usage(void) printf(" -kn2n --kill-net-2-net\n"); printf(" kills all net2net connections\n"); printf(" you may pass a connection name to the switch to only start a specific one\n"); + printf(" -drrd --delete-rrd\n"); + printf(" Deletes the RRD data for a specific client\n"); + printf(" you need to pass a connection name (RW) to the switch to delete the directory (case sensitive)\n"); printf(" -d --display\n"); printf(" displays OpenVPN status to syslog\n"); printf(" -fwr --firewall-rules\n"); @@ -466,6 +469,10 @@ void startDaemon(void) { executeCommand(command); snprintf(command, STRING_SIZE-1, "/usr/sbin/openvpn --config /var/ipfire/ovpn/server.conf"); executeCommand(command); + snprintf(command, STRING_SIZE-1, "/bin/chown root.nobody /var/run/ovpnserver.log"); + executeCommand(command); + snprintf(command, STRING_SIZE-1, "/bin/chmod 644 /var/run/ovpnserver.log"); + executeCommand(command); } } @@ -565,6 +572,28 @@ int killNet2Net(char *name) { return 0; } +int deleterrd(char *name) { + connection *conn = getConnections(); + + char rrd_file[STRING_SIZE]; + snprintf(rrd_file, STRING_SIZE - 1, "/var/log/rrd/collectd/localhost/openvpn-%s/if_octets.rrd", name); + + char rrd_dir[STRING_SIZE]; + snprintf(rrd_dir, STRING_SIZE - 1, "/var/log/rrd/collectd/localhost/openvpn-%s", name); + + while(conn) { + /* Find only RW-Connections with the given name. */ + if (((strcmp(conn->type, "host") == 0) && (strcmp(conn->name, name) == 0))) { + remove(rrd_file); + remove(rrd_dir); + return 0; + } + conn = conn->next; + } + + return 1; +} + void startAllNet2Net() { int exitcode = 0, _exitcode = 0; @@ -634,6 +663,10 @@ int main(int argc, char *argv[]) { else if( (strcmp(argv[1], "-kn2n") == 0) || (strcmp(argv[1], "--kill-net-2-net") == 0) ) { killNet2Net(argv[2]); return 0; + } + else if( (strcmp(argv[1], "-drrd") == 0) || (strcmp(argv[1], "--delete-rrd") == 0) ) { + deleterrd(argv[2]); + return 0; } else { usage(); return 1; diff --git a/src/paks/teamspeak/install.sh b/src/paks/teamspeak/install.sh deleted file mode 100644 index 7e8a5c1793..0000000000 --- a/src/paks/teamspeak/install.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2008 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh - -extract_files - -[ -d /opt/teamspeak ] || mkdir -p /opt/teamspeak - -cd /tmp -wget -c ftp://ftp.freenet.de/pub/4players/teamspeak.org/releases/ts2_server_rc2_202319.tar.bz2 \ - ftp://ftp.freenet.de/pub/4players/teamspeak.org/developer/server/202401/server_linux - -tar xvfj ts2_server_rc2_202319.tar.bz2 -C /tmp - -cp -av /tmp/tss2_rc2/* /opt/teamspeak -mv /tmp/server_linux /opt/teamspeak/server_linux -chmod 755 -v /opt/teamspeak/server_linux - -rm -rf /tmp/tss2_rc2 ts2_server_rc2_202319.tar.bz2 - -groupadd teamspeak -useradd -g teamspeak teamspeak - -chown teamspeak.teamspeak /opt/teamspeak -Rv - -restore_backup ${NAME} -start_service --background ${NAME} - -ln -sf ../init.d/teamspeak /etc/rc.d/rc0.d/K00teamspeak -ln -sf ../init.d/teamspeak /etc/rc.d/rc3.d/S99teamspeak -ln -sf ../init.d/teamspeak /etc/rc.d/rc6.d/K00teamspeak - - diff --git a/src/paks/teamspeak/update.sh b/src/paks/teamspeak/update.sh deleted file mode 100644 index 89c40d0d7c..0000000000 --- a/src/paks/teamspeak/update.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -./uninstall.sh -./install.sh diff --git a/src/patches/asterisk-no-ffmpeg.patch b/src/patches/asterisk-no-ffmpeg.patch new file mode 100644 index 0000000000..7bc2e841ff --- /dev/null +++ b/src/patches/asterisk-no-ffmpeg.patch @@ -0,0 +1,11 @@ +--- build/usr/src/asterisk-11.9.0/res/Makefile.orig 2014-04-28 20:30:50.500877461 +0200 ++++ build/usr/src/asterisk-11.9.0/res/Makefile 2014-04-28 20:31:39.357034757 +0200 +@@ -75,7 +75,7 @@ + rm -f pjproject/build.mak + + pjproject/build.mak: pjproject/aconfigure +- (cd pjproject && CFLAGS="-fPIC" ./configure --build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) --disable-floating-point --disable-sound --disable-oss --disable-speex-aec --disable-l16-codec --disable-gsm-codec --disable-g722-codec --disable-g7221-codec --disable-speex-codec --disable-ilbc-codec --disable-g711-codec) ++ (cd pjproject && CFLAGS="-fPIC" ./configure --build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) --disable-floating-point --disable-sound --disable-oss --disable-speex-aec --disable-l16-codec --disable-gsm-codec --disable-g722-codec --disable-g7221-codec --disable-speex-codec --disable-ilbc-codec --disable-g711-codec --disable-opencore-amrnb --disable-video --disable-sdl --disable-ffmpeg --disable-v4l2) + + ifneq ($(findstring $(MAKECMDGOALS),all),) + -include pjproject/build.mak diff --git a/src/patches/asterisk-ssl-reader-should-block.patch b/src/patches/asterisk-ssl-reader-should-block.patch new file mode 100644 index 0000000000..3b2f0ed545 --- /dev/null +++ b/src/patches/asterisk-ssl-reader-should-block.patch @@ -0,0 +1,28 @@ +Upstream issue 18345 +Link: https://issues.asterisk.org/jira/browse/ASTERISK-18345 +Patch-By: Filip Jenicek + +Submitted upstream: 2012-05-31 09:12 +For Asterisk version: 1.8.4 + +The HOOK_T ssl_read function should behave the same way as the system read function +by blocking and waiting for (more) data from the SSL subsystem. Failure to do this +will drop data on the floor and ultimately disconnect SSL clients. + +--- asterisk/main/tcptls.c ++++ asterisk/main/tcptls.c +@@ -55,6 +55,14 @@ + static HOOK_T ssl_read(void *cookie, char *buf, LEN_T len) + { + int i = SSL_read(cookie, buf, len-1); ++ ++ /* ssl_read should block and wait for the SSL layer to provide all data */ ++ while (i < 0 && SSL_get_error(cookie, i) == SSL_ERROR_WANT_READ) { ++ ast_debug(1, "SSL_read - data not ready.\n"); ++ if (ast_wait_for_input(SSL_get_fd(cookie), 5000) <= 0) return 0; ++ i = SSL_read(cookie, buf, len-1); ++ } ++ + #if 0 + if (i >= 0) + buf[i] = '\0'; diff --git a/src/patches/collectd/0001-src-utils_mount.h-Add-stdio.h.patch b/src/patches/collectd/0001-src-utils_mount.h-Add-stdio.h.patch new file mode 100644 index 0000000000..7391fbfcb7 --- /dev/null +++ b/src/patches/collectd/0001-src-utils_mount.h-Add-stdio.h.patch @@ -0,0 +1,28 @@ +From 4bbfb2b9f391f273744163cfda7bec96671e9d9c Mon Sep 17 00:00:00 2001 +From: Florian Forster +Date: Thu, 18 Apr 2013 06:25:58 +0200 +Subject: [PATCH 01/22] src/utils_mount.h: Add . + +This is required on Solaris 10. Thanks to dannypoo@ for reporting this +problem. + +Github: #306 +--- + src/utils_mount.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/utils_mount.h b/src/utils_mount.h +index 1f2403c..83f789b 100644 +--- a/src/utils_mount.h ++++ b/src/utils_mount.h +@@ -26,6 +26,7 @@ + #ifndef COLLECTD_UTILS_MOUNT_H + #define COLLECTD_UTILS_MOUNT_H 1 + ++#include + #if HAVE_FS_INFO_H + # include + #endif +-- +1.9.3 + diff --git a/src/patches/collectd/0002-Don-t-notify-continuously-when-MySQL-slave-SQL-threa.patch b/src/patches/collectd/0002-Don-t-notify-continuously-when-MySQL-slave-SQL-threa.patch new file mode 100644 index 0000000000..f0beb39a2d --- /dev/null +++ b/src/patches/collectd/0002-Don-t-notify-continuously-when-MySQL-slave-SQL-threa.patch @@ -0,0 +1,27 @@ +From f2391b9da6127e4acd5b54b7ae6c2d585df0e2a0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Joaqu=C3=ADn=20Cuenca=20Abela?= +Date: Wed, 29 May 2013 16:22:09 +0200 +Subject: [PATCH 02/22] Don't notify continuously when MySQL slave SQL thread + is running + +Signed-off-by: Florian Forster +--- + src/mysql.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/mysql.c b/src/mysql.c +index 8b3cd21..f93a442 100644 +--- a/src/mysql.c ++++ b/src/mysql.c +@@ -689,7 +689,7 @@ static int mysql_read_slave_stats (mysql_database_t *db, MYSQL *con) + ssnprintf (n.message, sizeof (n.message), + "slave SQL thread started"); + plugin_dispatch_notification (&n); +- db->slave_sql_running = 0; ++ db->slave_sql_running = 1; + } + } + +-- +1.9.3 + diff --git a/src/patches/collectd/0003-curl_xml.c-avoid-using-uninitalized-variable-in-erro.patch b/src/patches/collectd/0003-curl_xml.c-avoid-using-uninitalized-variable-in-erro.patch new file mode 100644 index 0000000000..4011dd8121 --- /dev/null +++ b/src/patches/collectd/0003-curl_xml.c-avoid-using-uninitalized-variable-in-erro.patch @@ -0,0 +1,34 @@ +From bbbf37d55a3959951604c4be482e9a705a0f86d9 Mon Sep 17 00:00:00 2001 +From: Marc Fournier +Date: Tue, 7 Jan 2014 11:30:59 +0100 +Subject: [PATCH 03/22] curl_xml.c: avoid using uninitalized variable in error + message + +Thanks to @trtrmitya for reporting this. Fixes GH#507 +--- + src/curl_xml.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/curl_xml.c b/src/curl_xml.c +index 75f5cc3..77aee60 100644 +--- a/src/curl_xml.c ++++ b/src/curl_xml.c +@@ -551,12 +551,12 @@ static int cx_curl_perform (cx_t *db, CURL *curl) /* {{{ */ + char *ptr; + char *url; + +- db->buffer_fill = 0; ++ db->buffer_fill = 0; + status = curl_easy_perform (curl); + if (status != CURLE_OK) + { +- ERROR ("curl_xml plugin: curl_easy_perform failed with status %i: %s (%s)", +- status, db->curl_errbuf, url); ++ ERROR ("curl_xml plugin: curl_easy_perform failed with status %i: %s", ++ status, db->curl_errbuf); + return (-1); + } + +-- +1.9.3 + diff --git a/src/patches/collectd/0004-interface.c-FreeBSD-10-support.patch b/src/patches/collectd/0004-interface.c-FreeBSD-10-support.patch new file mode 100644 index 0000000000..cc7067dfd7 --- /dev/null +++ b/src/patches/collectd/0004-interface.c-FreeBSD-10-support.patch @@ -0,0 +1,52 @@ +From 645dadb3fcc466e8880fda4eb23b21ad433631fc Mon Sep 17 00:00:00 2001 +From: Marc Fournier +Date: Tue, 7 Jan 2014 16:06:10 +0100 +Subject: [PATCH 04/22] interface.c: FreeBSD-10 support + +Quoting @trtrmitya in github issue #506 : "[...] it is broken on +FreeBSD-10, in which getifaddrs() returns not only link level stats for +a particular interface, but also entries for each IP configured on that +interface. As a result if_submit() is called several times for each +interface, which results in incorrect data being logged. + +I am attaching a patch which fixes a problem on FreeBSD (9/10), but it +should work for every *BSD because [...] the getifaddrs implementation +first appeared in BSDi BSD/OS." + +Many thanks to @trtrmitya for providing the patch ! +--- + src/interface.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +diff --git a/src/interface.c b/src/interface.c +index db998a3..9b566ea 100644 +--- a/src/interface.c ++++ b/src/interface.c +@@ -213,18 +213,19 @@ static int interface_read (void) + + for (if_ptr = if_list; if_ptr != NULL; if_ptr = if_ptr->ifa_next) + { +- if ((if_data = (struct IFA_DATA *) if_ptr->ifa_data) == NULL) +- continue; ++ if (if_ptr->ifa_addr != NULL && if_ptr->ifa_addr->sa_family == AF_LINK) { ++ if_data = (struct IFA_DATA *) if_ptr->ifa_data; + +- if_submit (if_ptr->ifa_name, "if_octets", ++ if_submit (if_ptr->ifa_name, "if_octets", + if_data->IFA_RX_BYTES, + if_data->IFA_TX_BYTES); +- if_submit (if_ptr->ifa_name, "if_packets", ++ if_submit (if_ptr->ifa_name, "if_packets", + if_data->IFA_RX_PACKT, + if_data->IFA_TX_PACKT); +- if_submit (if_ptr->ifa_name, "if_errors", ++ if_submit (if_ptr->ifa_name, "if_errors", + if_data->IFA_RX_ERROR, + if_data->IFA_TX_ERROR); ++ } + } + + freeifaddrs (if_list); +-- +1.9.3 + diff --git a/src/patches/collectd/0005-Revert-curl_xml.c-avoid-using-uninitalized-variable-.patch b/src/patches/collectd/0005-Revert-curl_xml.c-avoid-using-uninitalized-variable-.patch new file mode 100644 index 0000000000..3534cded38 --- /dev/null +++ b/src/patches/collectd/0005-Revert-curl_xml.c-avoid-using-uninitalized-variable-.patch @@ -0,0 +1,40 @@ +From cde09b547abbeb7595d91259fcc628504d0f55a9 Mon Sep 17 00:00:00 2001 +From: Marc Fournier +Date: Wed, 8 Jan 2014 18:05:40 +0100 +Subject: [PATCH 05/22] Revert "curl_xml.c: avoid using uninitalized variable + in error message" + +This reverts commit bbbf37d55a3959951604c4be482e9a705a0f86d9. + +A different fix for this problem was commited to the collectd-5.4 branch +(8327ee64) and conflicts with this patch. Also, initializing url the +same way as 8327ee64 does it, to avoid a merge conflict. +--- + src/curl_xml.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/src/curl_xml.c b/src/curl_xml.c +index 77aee60..b941f02 100644 +--- a/src/curl_xml.c ++++ b/src/curl_xml.c +@@ -550,13 +550,14 @@ static int cx_curl_perform (cx_t *db, CURL *curl) /* {{{ */ + long rc; + char *ptr; + char *url; ++ url = db->url; + +- db->buffer_fill = 0; ++ db->buffer_fill = 0; + status = curl_easy_perform (curl); + if (status != CURLE_OK) + { +- ERROR ("curl_xml plugin: curl_easy_perform failed with status %i: %s", +- status, db->curl_errbuf); ++ ERROR ("curl_xml plugin: curl_easy_perform failed with status %i: %s (%s)", ++ status, db->curl_errbuf, url); + return (-1); + } + +-- +1.9.3 + diff --git a/src/patches/collectd/0006-network-set_thread_cbs-so-we-initialize-the-right-th.patch b/src/patches/collectd/0006-network-set_thread_cbs-so-we-initialize-the-right-th.patch new file mode 100644 index 0000000000..460f4b542f --- /dev/null +++ b/src/patches/collectd/0006-network-set_thread_cbs-so-we-initialize-the-right-th.patch @@ -0,0 +1,28 @@ +From ddffda7a150cd3abdb6ec392b514a250e91e0c19 Mon Sep 17 00:00:00 2001 +From: Chris Lundquist +Date: Tue, 14 Jan 2014 18:33:13 -0800 +Subject: [PATCH 06/22] [network] set_thread_cbs so we initialize the right + threading mode in gcry_check_version + +Signed-off-by: Florian Forster +--- + src/network.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/network.c b/src/network.c +index d0ff6bc..be82c6f 100644 +--- a/src/network.c ++++ b/src/network.c +@@ -500,8 +500,8 @@ static void network_init_gcrypt (void) /* {{{ */ + if (gcry_control (GCRYCTL_ANY_INITIALIZATION_P)) + return; + +- gcry_check_version (NULL); /* before calling any other functions */ + gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread); ++ gcry_check_version (NULL); /* before calling *almost* any other functions */ + gcry_control (GCRYCTL_INIT_SECMEM, 32768); + gcry_control (GCRYCTL_INITIALIZATION_FINISHED); + } /* }}} void network_init_gcrypt */ +-- +1.9.3 + diff --git a/src/patches/collectd/0007-apache-plugin-Call-curl_global_init-from-the-init-fu.patch b/src/patches/collectd/0007-apache-plugin-Call-curl_global_init-from-the-init-fu.patch new file mode 100644 index 0000000000..8408337e73 --- /dev/null +++ b/src/patches/collectd/0007-apache-plugin-Call-curl_global_init-from-the-init-fu.patch @@ -0,0 +1,40 @@ +From 5f2f969335757f31f42cd8bb7e38eb8c5fe5e56e Mon Sep 17 00:00:00 2001 +From: Florian Forster +Date: Wed, 15 Jan 2014 23:47:33 +0100 +Subject: [PATCH 07/22] apache plugin: Call curl_global_init() from the init + function. + +This is a shot in the dark in trying to address #513. By calling this +from an init() callback, I hope to be initializing the curl and gcrypt +libraries before collectd becomes multi-threaded, avoiding the problems +described in the issue. +--- + src/apache.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/src/apache.c b/src/apache.c +index 899c21e..23bba3e 100644 +--- a/src/apache.c ++++ b/src/apache.c +@@ -702,9 +702,18 @@ static int apache_read_host (user_data_t *user_data) /* {{{ */ + return (0); + } /* }}} int apache_read_host */ + ++static int apache_init (void) /* {{{ */ ++{ ++ /* Call this while collectd is still single-threaded to avoid ++ * initialization issues in libgcrypt. */ ++ curl_global_init (CURL_GLOBAL_SSL); ++ return (0); ++} /* }}} int apache_init */ ++ + void module_register (void) + { + plugin_register_complex_config ("apache", config); ++ plugin_register_init ("apache", apache_init); + } /* void module_register */ + + /* vim: set sw=8 noet fdm=marker : */ +-- +1.9.3 + diff --git a/src/patches/collectd/0008-network-comment-libgcrypt-initalization-process.patch b/src/patches/collectd/0008-network-comment-libgcrypt-initalization-process.patch new file mode 100644 index 0000000000..9499328a56 --- /dev/null +++ b/src/patches/collectd/0008-network-comment-libgcrypt-initalization-process.patch @@ -0,0 +1,33 @@ +From 793c2046de1ac04689d541a5e83513fe8e62578c Mon Sep 17 00:00:00 2001 +From: Marc Fournier +Date: Thu, 16 Jan 2014 00:30:42 +0100 +Subject: [PATCH 08/22] network: comment libgcrypt initalization process + +--- + src/network.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/src/network.c b/src/network.c +index be82c6f..f379a5c 100644 +--- a/src/network.c ++++ b/src/network.c +@@ -500,8 +500,15 @@ static void network_init_gcrypt (void) /* {{{ */ + if (gcry_control (GCRYCTL_ANY_INITIALIZATION_P)) + return; + ++ /* http://www.gnupg.org/documentation/manuals/gcrypt/Multi_002dThreading.html ++ * To ensure thread-safety, it's important to set GCRYCTL_SET_THREAD_CBS ++ * *before* initalizing Libgcrypt with gcry_check_version(), which itself must ++ * be called before any other gcry_* function. GCRYCTL_ANY_INITIALIZATION_P ++ * above doesn't count, as it doesn't implicitly initalize Libgcrypt. ++ * ++ * tl;dr: keep all these gry_* statements in this exact order please. */ + gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread); +- gcry_check_version (NULL); /* before calling *almost* any other functions */ ++ gcry_check_version (NULL); + gcry_control (GCRYCTL_INIT_SECMEM, 32768); + gcry_control (GCRYCTL_INITIALIZATION_FINISHED); + } /* }}} void network_init_gcrypt */ +-- +1.9.3 + diff --git a/src/patches/collectd/0009-Call-curl_global_init-in-_init-of-plugins-using-curl.patch b/src/patches/collectd/0009-Call-curl_global_init-in-_init-of-plugins-using-curl.patch new file mode 100644 index 0000000000..a2c3ef5227 --- /dev/null +++ b/src/patches/collectd/0009-Call-curl_global_init-in-_init-of-plugins-using-curl.patch @@ -0,0 +1,99 @@ +From 66b400ab01b8133e450bb002e175117a1ab6f9ae Mon Sep 17 00:00:00 2001 +From: Jeremy Katz +Date: Sun, 26 Jan 2014 20:43:19 -0500 +Subject: [PATCH 09/22] Call curl_global_init() in _init of plugins using curl + +Need to call curl_global_init() or curl_easy_init() during init +for plugins when we're still running single threaded. This +updates the remaining ones +--- + src/curl.c | 1 + + src/curl_json.c | 9 +++++++++ + src/curl_xml.c | 9 +++++++++ + src/write_http.c | 9 +++++++++ + 4 files changed, 28 insertions(+) + +diff --git a/src/curl.c b/src/curl.c +index 3899aaa..8d2893f 100644 +--- a/src/curl.c ++++ b/src/curl.c +@@ -566,6 +566,7 @@ static int cc_init (void) /* {{{ */ + INFO ("curl plugin: No pages have been defined."); + return (-1); + } ++ curl_global_init (CURL_GLOBAL_SSL); + return (0); + } /* }}} int cc_init */ + +diff --git a/src/curl_json.c b/src/curl_json.c +index 24e1df1..0948962 100644 +--- a/src/curl_json.c ++++ b/src/curl_json.c +@@ -882,9 +882,18 @@ static int cj_read (user_data_t *ud) /* {{{ */ + return cj_curl_perform (db, db->curl); + } /* }}} int cj_read */ + ++static int cj_init (void) /* {{{ */ ++{ ++ /* Call this while collectd is still single-threaded to avoid ++ * initialization issues in libgcrypt. */ ++ curl_global_init (CURL_GLOBAL_SSL); ++ return (0); ++} /* }}} int cj_init */ ++ + void module_register (void) + { + plugin_register_complex_config ("curl_json", cj_config); ++ plugin_register_init ("curl_json", cj_init); + } /* void module_register */ + + /* vim: set sw=2 sts=2 et fdm=marker : */ +diff --git a/src/curl_xml.c b/src/curl_xml.c +index b941f02..e31e73d 100644 +--- a/src/curl_xml.c ++++ b/src/curl_xml.c +@@ -926,9 +926,18 @@ static int cx_config (oconfig_item_t *ci) /* {{{ */ + return (0); + } /* }}} int cx_config */ + ++static int cx_init (void) /* {{{ */ ++{ ++ /* Call this while collectd is still single-threaded to avoid ++ * initialization issues in libgcrypt. */ ++ curl_global_init (CURL_GLOBAL_SSL); ++ return (0); ++} /* }}} int cx_init */ ++ + void module_register (void) + { + plugin_register_complex_config ("curl_xml", cx_config); ++ plugin_register_init ("curl_xml", cx_init); + } /* void module_register */ + + /* vim: set sw=2 sts=2 et fdm=marker : */ +diff --git a/src/write_http.c b/src/write_http.c +index 62c73b0..04c637b 100644 +--- a/src/write_http.c ++++ b/src/write_http.c +@@ -656,9 +656,18 @@ static int wh_config (oconfig_item_t *ci) /* {{{ */ + return (0); + } /* }}} int wh_config */ + ++static int wh_init (void) /* {{{ */ ++{ ++ /* Call this while collectd is still single-threaded to avoid ++ * initialization issues in libgcrypt. */ ++ curl_global_init (CURL_GLOBAL_SSL); ++ return (0); ++} /* }}} int wh_init */ ++ + void module_register (void) /* {{{ */ + { + plugin_register_complex_config ("write_http", wh_config); ++ plugin_register_init ("write_http", wh_init); + } /* }}} void module_register */ + + /* vim: set fdm=marker sw=8 ts=8 tw=78 et : */ +-- +1.9.3 + diff --git a/src/patches/collectd/0010-indent-wh_init-to-be-consistent-with-the-rest-of-the.patch b/src/patches/collectd/0010-indent-wh_init-to-be-consistent-with-the-rest-of-the.patch new file mode 100644 index 0000000000..81f2d84025 --- /dev/null +++ b/src/patches/collectd/0010-indent-wh_init-to-be-consistent-with-the-rest-of-the.patch @@ -0,0 +1,32 @@ +From 6bd48f2346c5072dc22da58c7b7cd8e8ceb83fc5 Mon Sep 17 00:00:00 2001 +From: Marc Fournier +Date: Sat, 29 Mar 2014 13:37:36 +0100 +Subject: [PATCH 10/22] indent wh_init() to be consistent with the rest of the + file + +--- + src/write_http.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/write_http.c b/src/write_http.c +index 04c637b..0a13444 100644 +--- a/src/write_http.c ++++ b/src/write_http.c +@@ -658,10 +658,10 @@ static int wh_config (oconfig_item_t *ci) /* {{{ */ + + static int wh_init (void) /* {{{ */ + { +- /* Call this while collectd is still single-threaded to avoid +- * initialization issues in libgcrypt. */ +- curl_global_init (CURL_GLOBAL_SSL); +- return (0); ++ /* Call this while collectd is still single-threaded to avoid ++ * initialization issues in libgcrypt. */ ++ curl_global_init (CURL_GLOBAL_SSL); ++ return (0); + } /* }}} int wh_init */ + + void module_register (void) /* {{{ */ +-- +1.9.3 + diff --git a/src/patches/collectd/0011-Configparser-when-we-alocate-an-empty-list-we-also-n.patch b/src/patches/collectd/0011-Configparser-when-we-alocate-an-empty-list-we-also-n.patch new file mode 100644 index 0000000000..b3e6f786e5 --- /dev/null +++ b/src/patches/collectd/0011-Configparser-when-we-alocate-an-empty-list-we-also-n.patch @@ -0,0 +1,41 @@ +From 6207fce91a0933e852ec76fc31ca81ec00ffa04b Mon Sep 17 00:00:00 2001 +From: Wilfried Goesgens +Date: Thu, 5 Jun 2014 20:04:13 +0200 +Subject: [PATCH 11/22] Configparser: when we alocate an empty list, we also + need to reset the counter; else we will trip over this later. This fixes + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=750440 + +--- + src/configfile.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/src/configfile.c b/src/configfile.c +index 0b7786f..983d995 100644 +--- a/src/configfile.c ++++ b/src/configfile.c +@@ -414,6 +414,12 @@ static int cf_ci_replace_child (oconfig_item_t *dst, oconfig_item_t *src, + + /* Resize the memory containing the children to be big enough to hold + * all children. */ ++ if (dst->children_num + src->children_num - 1 == 0) ++ { ++ dst->children_num = 0; ++ return (0); ++ } ++ + temp = (oconfig_item_t *) realloc (dst->children, + sizeof (oconfig_item_t) + * (dst->children_num + src->children_num - 1)); +@@ -514,7 +520,8 @@ static int cf_include_all (oconfig_item_t *root, int depth) + continue; + + /* Now replace the i'th child in `root' with `new'. */ +- cf_ci_replace_child (root, new, i); ++ if (cf_ci_replace_child (root, new, i) < 0) ++ return (-1); + + /* ... and go back to the new i'th child. */ + --i; +-- +1.9.3 + diff --git a/src/patches/collectd/0012-don-t-assume-pkg-config-is-in-PATH.patch b/src/patches/collectd/0012-don-t-assume-pkg-config-is-in-PATH.patch new file mode 100644 index 0000000000..5bb5c853fe --- /dev/null +++ b/src/patches/collectd/0012-don-t-assume-pkg-config-is-in-PATH.patch @@ -0,0 +1,86 @@ +From c2ca2a46e617878dcff69de0b8940ea91d3401cc Mon Sep 17 00:00:00 2001 +From: Lauri Tirkkonen +Date: Thu, 22 May 2014 14:05:40 +0300 +Subject: [PATCH 12/22] don't assume pkg-config is in PATH + +--- + configure.in | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/configure.in b/configure.in +index 0b12630..7086800 100644 +--- a/configure.in ++++ b/configure.in +@@ -1136,8 +1136,8 @@ AC_CHECK_LIB(hal,libhal_device_property_exists, + [with_libhal="no"]) + if test "x$with_libhal" = "xyes"; then + if test "x$PKG_CONFIG" != "x"; then +- BUILD_WITH_LIBHAL_CFLAGS="`pkg-config --cflags hal`" +- BUILD_WITH_LIBHAL_LIBS="`pkg-config --libs hal`" ++ BUILD_WITH_LIBHAL_CFLAGS="`$PKG_CONFIG --cflags hal`" ++ BUILD_WITH_LIBHAL_LIBS="`$PKG_CONFIG --libs hal`" + AC_SUBST(BUILD_WITH_LIBHAL_CFLAGS) + AC_SUBST(BUILD_WITH_LIBHAL_LIBS) + fi +@@ -3434,8 +3434,8 @@ then + if $PKG_CONFIG --exists tokyotyrant + then + with_libtokyotyrant_cppflags="$with_libtokyotyrant_cppflags `$PKG_CONFIG --cflags tokyotyrant`" +- with_libtokyotyrant_ldflags="$with_libtokyotyrant_ldflags `pkg-config --libs-only-L tokyotyrant`" +- with_libtokyotyrant_libs="$with_libtokyotyrant_libs `pkg-config --libs-only-l tokyotyrant`" ++ with_libtokyotyrant_ldflags="$with_libtokyotyrant_ldflags `$PKG_CONFIG --libs-only-L tokyotyrant`" ++ with_libtokyotyrant_libs="$with_libtokyotyrant_libs `$PKG_CONFIG --libs-only-l tokyotyrant`" + fi + fi + +@@ -3743,7 +3743,7 @@ with_libvirt_cflags="" + with_libvirt_ldflags="" + if test "x$PKG_CONFIG" != "x" + then +- pkg-config --exists 'libxml-2.0' 2>/dev/null ++ $PKG_CONFIG --exists 'libxml-2.0' 2>/dev/null + if test "$?" = "0" + then + with_libxml2="yes" +@@ -3751,7 +3751,7 @@ then + with_libxml2="no (pkg-config doesn't know library)" + fi + +- pkg-config --exists libvirt 2>/dev/null ++ $PKG_CONFIG --exists libvirt 2>/dev/null + if test "$?" = "0" + then + with_libvirt="yes" +@@ -3761,12 +3761,12 @@ then + fi + if test "x$with_libxml2" = "xyes" + then +- with_libxml2_cflags="`pkg-config --cflags libxml-2.0`" ++ with_libxml2_cflags="`$PKG_CONFIG --cflags libxml-2.0`" + if test $? -ne 0 + then + with_libxml2="no" + fi +- with_libxml2_ldflags="`pkg-config --libs libxml-2.0`" ++ with_libxml2_ldflags="$PKG_CONFIG --libs libxml-2.0`" + if test $? -ne 0 + then + with_libxml2="no" +@@ -3806,12 +3806,12 @@ if test "x$with_libxml2" = "xyes"; then + fi + if test "x$with_libvirt" = "xyes" + then +- with_libvirt_cflags="`pkg-config --cflags libvirt`" ++ with_libvirt_cflags="$PKG_CONFIG --cflags libvirt`" + if test $? -ne 0 + then + with_libvirt="no" + fi +- with_libvirt_ldflags="`pkg-config --libs libvirt`" ++ with_libvirt_ldflags="$PKG_CONFIG --libs libvirt`" + if test $? -ne 0 + then + with_libvirt="no" +-- +1.9.3 + diff --git a/src/patches/collectd/0013-add-missing-backticks-which-broke-the-build.patch b/src/patches/collectd/0013-add-missing-backticks-which-broke-the-build.patch new file mode 100644 index 0000000000..d7f2264cbc --- /dev/null +++ b/src/patches/collectd/0013-add-missing-backticks-which-broke-the-build.patch @@ -0,0 +1,40 @@ +From 497f5785e8b385f03b5fb5b15bdff8ba39e4699e Mon Sep 17 00:00:00 2001 +From: Marc Fournier +Date: Mon, 23 Jun 2014 18:00:01 +0200 +Subject: [PATCH 13/22] add missing backticks which broke the build + +--- + configure.in | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/configure.in b/configure.in +index 7086800..5dac543 100644 +--- a/configure.in ++++ b/configure.in +@@ -3766,7 +3766,7 @@ then + then + with_libxml2="no" + fi +- with_libxml2_ldflags="$PKG_CONFIG --libs libxml-2.0`" ++ with_libxml2_ldflags="`$PKG_CONFIG --libs libxml-2.0`" + if test $? -ne 0 + then + with_libxml2="no" +@@ -3806,12 +3806,12 @@ if test "x$with_libxml2" = "xyes"; then + fi + if test "x$with_libvirt" = "xyes" + then +- with_libvirt_cflags="$PKG_CONFIG --cflags libvirt`" ++ with_libvirt_cflags="`$PKG_CONFIG --cflags libvirt`" + if test $? -ne 0 + then + with_libvirt="no" + fi +- with_libvirt_ldflags="$PKG_CONFIG --libs libvirt`" ++ with_libvirt_ldflags="`$PKG_CONFIG --libs libvirt`" + if test $? -ne 0 + then + with_libvirt="no" +-- +1.9.3 + diff --git a/src/patches/collectd/0014-snmp-free-snmp_pdu-struct-allocated-by-snmp_pdu_crea.patch b/src/patches/collectd/0014-snmp-free-snmp_pdu-struct-allocated-by-snmp_pdu_crea.patch new file mode 100644 index 0000000000..945c28bbb4 --- /dev/null +++ b/src/patches/collectd/0014-snmp-free-snmp_pdu-struct-allocated-by-snmp_pdu_crea.patch @@ -0,0 +1,29 @@ +From 0da910fb1bf2bd4982ca6541458c795ec296f398 Mon Sep 17 00:00:00 2001 +From: Marc Fournier +Date: Fri, 8 Aug 2014 15:55:10 +0200 +Subject: [PATCH 14/22] snmp: free snmp_pdu struct allocated by + snmp_pdu_create() + +This should fix the leak reported in issue #610. +--- + src/snmp.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/snmp.c b/src/snmp.c +index d440f7f..dacdede 100644 +--- a/src/snmp.c ++++ b/src/snmp.c +@@ -1503,6 +1503,10 @@ static int csnmp_read_table (host_definition_t *host, data_definition_t *data) + snmp_free_pdu (res); + res = NULL; + ++ if (req != NULL) ++ snmp_free_pdu (req); ++ req = NULL; ++ + if (status == 0) + csnmp_dispatch_table (host, data, instance_list_head, value_list_head); + +-- +1.9.3 + diff --git a/src/patches/collectd/0015-curl_xml-plugin-Fixed-tautological-pointer-compariso.patch b/src/patches/collectd/0015-curl_xml-plugin-Fixed-tautological-pointer-compariso.patch new file mode 100644 index 0000000000..30e1a08bea --- /dev/null +++ b/src/patches/collectd/0015-curl_xml-plugin-Fixed-tautological-pointer-compariso.patch @@ -0,0 +1,28 @@ +From 0afea60611f115a28b8ec331aba610e3038c1ef2 Mon Sep 17 00:00:00 2001 +From: Arthur Marble +Date: Sun, 17 Aug 2014 17:34:04 -0500 +Subject: [PATCH 15/22] curl_xml plugin: Fixed tautological pointer comparison + error. + +Fixes: http://bugs.debian.org/758481 +Signed-off-by: Florian Forster +--- + src/curl_xml.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/curl_xml.c b/src/curl_xml.c +index e31e73d..28b2ded 100644 +--- a/src/curl_xml.c ++++ b/src/curl_xml.c +@@ -344,7 +344,7 @@ static int cx_handle_instance_xpath (xmlXPathContextPtr xpath_ctx, /* {{{ */ + /* If the base xpath returns more than one block, the result is assumed to be + * a table. The `Instnce' option is not optional in this case. Check for the + * condition and inform the user. */ +- if (is_table && (vl->type_instance == NULL)) ++ if (is_table) + { + WARNING ("curl_xml plugin: " + "Base-XPath %s is a table (more than one result was returned), " +-- +1.9.3 + diff --git a/src/patches/collectd/0016-Add-support-for-OpenVPN-2.3.0-status-files.patch b/src/patches/collectd/0016-Add-support-for-OpenVPN-2.3.0-status-files.patch new file mode 100644 index 0000000000..ca5b407cef --- /dev/null +++ b/src/patches/collectd/0016-Add-support-for-OpenVPN-2.3.0-status-files.patch @@ -0,0 +1,160 @@ +From 9d065b401c2c393bef5a6e58b5deeda7d59d4f39 Mon Sep 17 00:00:00 2001 +From: Ed Okerson +Date: Mon, 11 Feb 2013 15:46:10 -0600 +Subject: [PATCH 16/22] Add support for OpenVPN 2.3.0 status files. + +Fix a bug that breaks this module if a server is running multiple instances of OpenVPN and one instance does not have any clients connected. +--- + src/openvpn.c | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 84 insertions(+), 6 deletions(-) + +diff --git a/src/openvpn.c b/src/openvpn.c +index 2aca414..d2b6f17 100644 +--- a/src/openvpn.c ++++ b/src/openvpn.c +@@ -32,6 +32,7 @@ + #define V1STRING "Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since\n" + #define V2STRING "HEADER,CLIENT_LIST,Common Name,Real Address,Virtual Address,Bytes Received,Bytes Sent,Connected Since,Connected Since (time_t)\n" + #define V3STRING "HEADER CLIENT_LIST Common Name Real Address Virtual Address Bytes Received Bytes Sent Connected Since Connected Since (time_t)\n" ++#define V4STRING "HEADER,CLIENT_LIST,Common Name,Real Address,Virtual Address,Bytes Received,Bytes Sent,Connected Since,Connected Since (time_t),Username\n" + #define VSSTRING "OpenVPN STATISTICS\n" + + +@@ -43,6 +44,7 @@ struct vpn_status_s + MULTI1 = 1, /* status-version 1 */ + MULTI2, /* status-version 2 */ + MULTI3, /* status-version 3 */ ++ MULTI4, /* status-version 4 */ + SINGLE = 10 /* currently no versions for single mode, maybe in the future */ + } version; + char *name; +@@ -452,13 +454,77 @@ static int multi3_read (char *name, FILE *fh) + return (read); + } /* int multi3_read */ + ++/* for reading status version 4 */ ++static int multi4_read (char *name, FILE *fh) ++{ ++ char buffer[1024]; ++ char *fields[11]; ++ const int max_fields = STATIC_ARRAY_SIZE (fields); ++ int fields_num, read = 0; ++ long long sum_users = 0; ++ ++ while (fgets (buffer, sizeof (buffer), fh) != NULL) ++ { ++ fields_num = openvpn_strsplit (buffer, fields, max_fields); ++ ++ /* status file is generated by openvpn/multi.c:multi_print_status() ++ * http://svn.openvpn.net/projects/openvpn/trunk/openvpn/multi.c ++ * ++ * The line we're expecting has 9 fields. We ignore all lines ++ * with more or less fields. ++ */ ++ if (fields_num != 9) ++ continue; ++ ++ ++ if (strcmp (fields[0], "CLIENT_LIST") != 0) ++ continue; ++ ++ ++ if (collect_user_count) ++ /* If so, sum all users, ignore the individuals*/ ++ { ++ sum_users += 1; ++ } ++ if (collect_individual_users) ++ { ++ if (new_naming_schema) ++ { ++ /* plugin inst = file name, type inst = fields[1] */ ++ iostats_submit (name, /* vpn instance */ ++ fields[1], /* "Common Name" */ ++ atoll (fields[4]), /* "Bytes Received" */ ++ atoll (fields[5])); /* "Bytes Sent" */ ++ } ++ else ++ { ++ /* plugin inst = fields[1], type inst = "" */ ++ iostats_submit (fields[1], /* "Common Name" */ ++ NULL, /* unused when in multimode */ ++ atoll (fields[4]), /* "Bytes Received" */ ++ atoll (fields[5])); /* "Bytes Sent" */ ++ } ++ } ++ ++ read = 1; ++ } ++ ++ if (collect_user_count) ++ { ++ numusers_submit(name, name, sum_users); ++ read = 1; ++ } ++ ++ return (read); ++} /* int multi4_read */ ++ + /* read callback */ + static int openvpn_read (void) + { + FILE *fh; +- int i, read; ++ int i, vpn_read, read; + +- read = 0; ++ vpn_read = read = 0; + + /* call the right read function for every status entry in the list */ + for (i = 0; i < vpn_num; i++) +@@ -476,23 +542,28 @@ static int openvpn_read (void) + switch (vpn_list[i]->version) + { + case SINGLE: +- read = single_read(vpn_list[i]->name, fh); ++ vpn_read = single_read(vpn_list[i]->name, fh); + break; + + case MULTI1: +- read = multi1_read(vpn_list[i]->name, fh); ++ vpn_read = multi1_read(vpn_list[i]->name, fh); + break; + + case MULTI2: +- read = multi2_read(vpn_list[i]->name, fh); ++ vpn_read = multi2_read(vpn_list[i]->name, fh); + break; + + case MULTI3: +- read = multi3_read(vpn_list[i]->name, fh); ++ vpn_read = multi3_read(vpn_list[i]->name, fh); ++ break; ++ ++ case MULTI4: ++ vpn_read = multi4_read(vpn_list[i]->name, fh); + break; + } + + fclose (fh); ++ read += vpn_read; + } + + return (read ? 0 : -1); +@@ -549,6 +620,13 @@ static int version_detect (const char *filename) + version = MULTI3; + break; + } ++ /* searching for multi version 4 */ ++ else if (strcmp (buffer, V4STRING) == 0) ++ { ++ DEBUG ("openvpn plugin: found status file version MULTI4"); ++ version = MULTI4; ++ break; ++ } + } + + if (version == 0) +-- +1.9.3 + diff --git a/src/patches/collectd/0017-openvpn-plugin-Don-t-signal-an-error-when-no-clients.patch b/src/patches/collectd/0017-openvpn-plugin-Don-t-signal-an-error-when-no-clients.patch new file mode 100644 index 0000000000..0d5b3191c2 --- /dev/null +++ b/src/patches/collectd/0017-openvpn-plugin-Don-t-signal-an-error-when-no-clients.patch @@ -0,0 +1,56 @@ +From 8516f9abb625fa7b9321e62307305aa6499be4e8 Mon Sep 17 00:00:00 2001 +From: Florian Forster +Date: Sun, 14 Sep 2014 19:28:05 +0200 +Subject: [PATCH 17/22] openvpn plugin: Don't signal an error when no clients + are connected. + +In the multi1_read() function, an error (zero) was returned when no +clients were currently connected to the OpenVPN server, because the +"read" variable was initialized to zero and the while loop exited before +it was set to one. This is not the intended behavior. + +Thanks to @srix for reporting this issue! + +Fixes: #731 +--- + src/openvpn.c | 12 +++++------- + 1 file changed, 5 insertions(+), 7 deletions(-) + +diff --git a/src/openvpn.c b/src/openvpn.c +index d2b6f17..7d4e4a0 100644 +--- a/src/openvpn.c ++++ b/src/openvpn.c +@@ -267,7 +267,7 @@ static int multi1_read (char *name, FILE *fh) + { + char buffer[1024]; + char *fields[10]; +- int fields_num, read = 0, found_header = 0; ++ int fields_num, found_header = 0; + long long sum_users = 0; + + /* read the file until the "ROUTING TABLE" line is found (no more info after) */ +@@ -314,17 +314,15 @@ static int multi1_read (char *name, FILE *fh) + atoll (fields[3])); /* "Bytes Sent" */ + } + } +- +- read = 1; + } + ++ if (ferror (fh)) ++ return (0); ++ + if (collect_user_count) +- { + numusers_submit(name, name, sum_users); +- read = 1; +- } + +- return (read); ++ return (1); + } /* int multi1_read */ + + /* for reading status version 2 */ +-- +1.9.3 + diff --git a/src/patches/collectd/0018-openvpn-Remove-boguous-file-handler-check.patch b/src/patches/collectd/0018-openvpn-Remove-boguous-file-handler-check.patch new file mode 100644 index 0000000000..850e4fb91d --- /dev/null +++ b/src/patches/collectd/0018-openvpn-Remove-boguous-file-handler-check.patch @@ -0,0 +1,26 @@ +From 5dbc1cfb4baff831f950b3c9de8c332bc9aa2b6e Mon Sep 17 00:00:00 2001 +From: Michael Tremer +Date: Wed, 17 Sep 2014 11:25:17 +0200 +Subject: [PATCH 18/22] openvpn: Remove boguous file handler check + +--- + src/openvpn.c | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/src/openvpn.c b/src/openvpn.c +index 7d4e4a0..9598abc 100644 +--- a/src/openvpn.c ++++ b/src/openvpn.c +@@ -316,9 +316,6 @@ static int multi1_read (char *name, FILE *fh) + } + } + +- if (ferror (fh)) +- return (0); +- + if (collect_user_count) + numusers_submit(name, name, sum_users); + +-- +1.9.3 + diff --git a/src/patches/collectd/0019-openvpn-Ignore-not-fully-established-connections.patch b/src/patches/collectd/0019-openvpn-Ignore-not-fully-established-connections.patch new file mode 100644 index 0000000000..4dde610db5 --- /dev/null +++ b/src/patches/collectd/0019-openvpn-Ignore-not-fully-established-connections.patch @@ -0,0 +1,59 @@ +From a45710a5a887d25ab0e04ce1553bb268013ef780 Mon Sep 17 00:00:00 2001 +From: Michael Tremer +Date: Tue, 16 Sep 2014 14:44:42 +0200 +Subject: [PATCH 19/22] openvpn: Ignore not fully established connections + +--- + src/openvpn.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/src/openvpn.c b/src/openvpn.c +index 9598abc..6a0ffbd 100644 +--- a/src/openvpn.c ++++ b/src/openvpn.c +@@ -292,6 +292,10 @@ static int multi1_read (char *name, FILE *fh) + if (fields_num < 4) + continue; + ++ // Ignore not yet fully established connections ++ if (strcmp(fields[1], "UNDEF") == 0) ++ continue; ++ + if (collect_user_count) + /* If so, sum all users, ignore the individuals*/ + { +@@ -347,6 +351,10 @@ static int multi2_read (char *name, FILE *fh) + if (strcmp (fields[0], "CLIENT_LIST") != 0) + continue; + ++ // Ignore not yet fully established connections ++ if (strcmp(fields[0], "UNDEF") == 0) ++ continue; ++ + if (collect_user_count) + /* If so, sum all users, ignore the individuals*/ + { +@@ -412,6 +420,10 @@ static int multi3_read (char *name, FILE *fh) + if (strcmp (fields[0], "CLIENT_LIST") != 0) + continue; + ++ // Ignore not yet fully established connections ++ if (strcmp(fields[0], "UNDEF") == 0) ++ continue; ++ + if (collect_user_count) + /* If so, sum all users, ignore the individuals*/ + { +@@ -475,6 +487,9 @@ static int multi4_read (char *name, FILE *fh) + if (strcmp (fields[0], "CLIENT_LIST") != 0) + continue; + ++ // Ignore not yet fully established connections ++ if (strcmp(fields[0], "UNDEF") == 0) ++ continue; + + if (collect_user_count) + /* If so, sum all users, ignore the individuals*/ +-- +1.9.3 + diff --git a/src/patches/collectd/0020-openvpn-Make-read-functions-robust-like-in-8516f9abb.patch b/src/patches/collectd/0020-openvpn-Make-read-functions-robust-like-in-8516f9abb.patch new file mode 100644 index 0000000000..79f6742f96 --- /dev/null +++ b/src/patches/collectd/0020-openvpn-Make-read-functions-robust-like-in-8516f9abb.patch @@ -0,0 +1,102 @@ +From 46e716ee8d4208924d10f57f9ed97c99674a6ef4 Mon Sep 17 00:00:00 2001 +From: Michael Tremer +Date: Wed, 17 Sep 2014 11:31:13 +0200 +Subject: [PATCH 20/22] openvpn: Make read functions robust like in + 8516f9abb625fa7b9321e62307305aa6499be4e8 + +--- + src/openvpn.c | 21 ++++++--------------- + 1 file changed, 6 insertions(+), 15 deletions(-) + +diff --git a/src/openvpn.c b/src/openvpn.c +index 6a0ffbd..f686721 100644 +--- a/src/openvpn.c ++++ b/src/openvpn.c +@@ -332,7 +332,7 @@ static int multi2_read (char *name, FILE *fh) + char buffer[1024]; + char *fields[10]; + const int max_fields = STATIC_ARRAY_SIZE (fields); +- int fields_num, read = 0; ++ int fields_num; + long long sum_users = 0; + + while (fgets (buffer, sizeof (buffer), fh) != NULL) +@@ -379,17 +379,14 @@ static int multi2_read (char *name, FILE *fh) + atoll (fields[5])); /* "Bytes Sent" */ + } + } +- +- read = 1; + } + + if (collect_user_count) + { + numusers_submit(name, name, sum_users); +- read = 1; + } + +- return (read); ++ return (1); + } /* int multi2_read */ + + /* for reading status version 3 */ +@@ -398,7 +395,7 @@ static int multi3_read (char *name, FILE *fh) + char buffer[1024]; + char *fields[15]; + const int max_fields = STATIC_ARRAY_SIZE (fields); +- int fields_num, read = 0; ++ int fields_num; + long long sum_users = 0; + + while (fgets (buffer, sizeof (buffer), fh) != NULL) +@@ -447,18 +444,15 @@ static int multi3_read (char *name, FILE *fh) + atoll (fields[5])); /* "Bytes Sent" */ + } + } +- +- read = 1; + } + } + + if (collect_user_count) + { + numusers_submit(name, name, sum_users); +- read = 1; + } + +- return (read); ++ return (1); + } /* int multi3_read */ + + /* for reading status version 4 */ +@@ -467,7 +461,7 @@ static int multi4_read (char *name, FILE *fh) + char buffer[1024]; + char *fields[11]; + const int max_fields = STATIC_ARRAY_SIZE (fields); +- int fields_num, read = 0; ++ int fields_num; + long long sum_users = 0; + + while (fgets (buffer, sizeof (buffer), fh) != NULL) +@@ -515,17 +509,14 @@ static int multi4_read (char *name, FILE *fh) + atoll (fields[5])); /* "Bytes Sent" */ + } + } +- +- read = 1; + } + + if (collect_user_count) + { + numusers_submit(name, name, sum_users); +- read = 1; + } + +- return (read); ++ return (1); + } /* int multi4_read */ + + /* read callback */ +-- +1.9.3 + diff --git a/src/patches/collectd/0021-openvpn-Fix-copy-and-paste-error.patch b/src/patches/collectd/0021-openvpn-Fix-copy-and-paste-error.patch new file mode 100644 index 0000000000..65c293d701 --- /dev/null +++ b/src/patches/collectd/0021-openvpn-Fix-copy-and-paste-error.patch @@ -0,0 +1,25 @@ +From 41253b68808deade2a1866f0c24f4bbc029a92c2 Mon Sep 17 00:00:00 2001 +From: Michael Tremer +Date: Wed, 24 Sep 2014 14:38:04 +0200 +Subject: [PATCH 21/22] openvpn: Fix copy-and-paste error + +--- + src/openvpn.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/openvpn.c b/src/openvpn.c +index f686721..2db3677 100644 +--- a/src/openvpn.c ++++ b/src/openvpn.c +@@ -293,7 +293,7 @@ static int multi1_read (char *name, FILE *fh) + continue; + + // Ignore not yet fully established connections +- if (strcmp(fields[1], "UNDEF") == 0) ++ if (strcmp(fields[0], "UNDEF") == 0) + continue; + + if (collect_user_count) +-- +1.9.3 + diff --git a/src/patches/collectd/0022-openvpn-Change-data-type-from-COUNTER-to-DERIVE.patch b/src/patches/collectd/0022-openvpn-Change-data-type-from-COUNTER-to-DERIVE.patch new file mode 100644 index 0000000000..ec6819c9fa --- /dev/null +++ b/src/patches/collectd/0022-openvpn-Change-data-type-from-COUNTER-to-DERIVE.patch @@ -0,0 +1,107 @@ +From 3458d610e8b99eb88c2f06ad576b4f46e0169877 Mon Sep 17 00:00:00 2001 +From: Michael Tremer +Date: Fri, 26 Sep 2014 12:02:27 +0200 +Subject: [PATCH 22/22] openvpn: Change data type from COUNTER to DERIVE + +COUNTER is not what we want here, so we will use DERIVE. +--- + src/openvpn.c | 26 +++++++++++++------------- + src/types.db | 2 ++ + 2 files changed, 15 insertions(+), 13 deletions(-) + +diff --git a/src/openvpn.c b/src/openvpn.c +index 2db3677..d446e99 100644 +--- a/src/openvpn.c ++++ b/src/openvpn.c +@@ -116,13 +116,13 @@ static void numusers_submit (char *pinst, char *tinst, gauge_t value) + } /* void numusers_submit */ + + /* dispatches stats about traffic (TCP or UDP) generated by the tunnel per single endpoint */ +-static void iostats_submit (char *pinst, char *tinst, counter_t rx, counter_t tx) ++static void iostats_submit (char *pinst, char *tinst, derive_t rx, derive_t tx) + { + value_t values[2]; + value_list_t vl = VALUE_LIST_INIT; + +- values[0].counter = rx; +- values[1].counter = tx; ++ values[0].derive = rx; ++ values[1].derive = tx; + + /* NOTE ON THE NEW NAMING SCHEMA: + * using plugin_instance to identify each vpn config (and +@@ -137,7 +137,7 @@ static void iostats_submit (char *pinst, char *tinst, counter_t rx, counter_t tx + if (pinst != NULL) + sstrncpy (vl.plugin_instance, pinst, + sizeof (vl.plugin_instance)); +- sstrncpy (vl.type, "if_octets", sizeof (vl.type)); ++ sstrncpy (vl.type, "if_octets_derive", sizeof (vl.type)); + if (tinst != NULL) + sstrncpy (vl.type_instance, tinst, sizeof (vl.type_instance)); + +@@ -146,13 +146,13 @@ static void iostats_submit (char *pinst, char *tinst, counter_t rx, counter_t tx + + /* dispatches stats about data compression shown when in single mode */ + static void compression_submit (char *pinst, char *tinst, +- counter_t uncompressed, counter_t compressed) ++ derive_t uncompressed, derive_t compressed) + { + value_t values[2]; + value_list_t vl = VALUE_LIST_INIT; + +- values[0].counter = uncompressed; +- values[1].counter = compressed; ++ values[0].derive = uncompressed; ++ values[1].derive = compressed; + + vl.values = values; + vl.values_len = STATIC_ARRAY_SIZE (values); +@@ -161,7 +161,7 @@ static void compression_submit (char *pinst, char *tinst, + if (pinst != NULL) + sstrncpy (vl.plugin_instance, pinst, + sizeof (vl.plugin_instance)); +- sstrncpy (vl.type, "compression", sizeof (vl.type)); ++ sstrncpy (vl.type, "compression_dervice", sizeof (vl.type)); + if (tinst != NULL) + sstrncpy (vl.type_instance, tinst, sizeof (vl.type_instance)); + +@@ -175,11 +175,11 @@ static int single_read (char *name, FILE *fh) + const int max_fields = STATIC_ARRAY_SIZE (fields); + int fields_num, read = 0; + +- counter_t link_rx, link_tx; +- counter_t tun_rx, tun_tx; +- counter_t pre_compress, post_compress; +- counter_t pre_decompress, post_decompress; +- counter_t overhead_rx, overhead_tx; ++ derive_t link_rx, link_tx; ++ derive_t tun_rx, tun_tx; ++ derive_t pre_compress, post_compress; ++ derive_t pre_decompress, post_decompress; ++ derive_t overhead_rx, overhead_tx; + + link_rx = 0; + link_tx = 0; +diff --git a/src/types.db b/src/types.db +index ad54240..03ec75b 100644 +--- a/src/types.db ++++ b/src/types.db +@@ -18,6 +18,7 @@ cache_result value:COUNTER:0:4294967295 + cache_size value:GAUGE:0:4294967295 + charge value:GAUGE:0:U + compression uncompressed:COUNTER:0:U, compressed:COUNTER:0:U ++compression_derive uncompressed:DERIVE:0:U, compressed:DERIVE:0:U + compression_ratio value:GAUGE:0:2 + connections value:COUNTER:0:U + conntrack entropy:GAUGE:0:4294967295 +@@ -74,6 +75,7 @@ if_dropped rx:COUNTER:0:4294967295, tx:COUNTER:0:4294967295 + if_errors rx:COUNTER:0:4294967295, tx:COUNTER:0:4294967295 + if_multicast value:COUNTER:0:4294967295 + if_octets rx:COUNTER:0:4294967295, tx:COUNTER:0:4294967295 ++if_octets_derive rx:DERIVE:0:U, tx:DERIVE:0:U + if_packets rx:COUNTER:0:4294967295, tx:COUNTER:0:4294967295 + if_rx_errors value:COUNTER:0:4294967295 + if_tx_errors value:COUNTER:0:4294967295 +-- +1.9.3 + diff --git a/src/patches/crda-3.13-crypto_use_optional.patch b/src/patches/crda-3.13-crypto_use_optional.patch new file mode 100644 index 0000000000..56ad6b7684 --- /dev/null +++ b/src/patches/crda-3.13-crypto_use_optional.patch @@ -0,0 +1,22 @@ +Submitted By: hauke from OpenWRT +Date: 2009-04-17 +Initial Package Version: 1.0.2 +Origin: https://dev.openwrt.org/changeset/15405/trunk/package/crda/patches/101-make_crypto_use_optional.patch +Description: The patch was modified for version crda-3.13 by Erik Kapfer .. +This patch provides the following improvements: + * Crypto usage is optional. + +diff -Nur crda-3.13.orig/Makefile crda-3.13/Makefile +--- crda-3.13.orig/Makefile 2015-01-12 07:55:08.791183765 +0100 ++++ crda-3.13/Makefile 2015-01-12 07:56:35.437381029 +0100 +@@ -43,7 +43,9 @@ + + $(LIBREG): keys-ssl.c + +-else ++endif ++ ++ifeq ($(USE_GCRYPT),1) + CFLAGS += -DUSE_GCRYPT + LDLIBS += -lgcrypt + diff --git a/src/patches/ddns/ddns-005-Add-changeip-com.patch b/src/patches/ddns/ddns-005-Add-changeip-com.patch new file mode 100644 index 0000000000..15bcd468f6 --- /dev/null +++ b/src/patches/ddns/ddns-005-Add-changeip-com.patch @@ -0,0 +1,85 @@ +commit 78046ffe2187d91c61d6c2f910249b8a5be71b08 +Author: Stefan Schantl +Date: Wed Oct 22 21:39:09 2014 +0200 + + Add changeip.com as new provider. + + Fixes #10639. + +diff --git a/README b/README +index 5944102..6a06f4b 100644 +--- a/README ++++ b/README +@@ -49,6 +49,7 @@ INSTALLATION: + + SUPPORTED PROVIDERS: + all-inkl.com ++ changeip.com + dhs.org + dns.lightningwirelabs.com + dnspark.com +diff --git a/ddns.conf.sample b/ddns.conf.sample +index d3ac53f..0048a46 100644 +--- a/ddns.conf.sample ++++ b/ddns.conf.sample +@@ -30,6 +30,11 @@ + # secret = XYZ + # ttl = 60 + ++# [test.changeip.com] ++# provider = changeip.com ++# username = user ++# password = pass ++ + # [test.dhs.org] + # provider = dhs.org + # username = user +diff --git a/src/ddns/providers.py b/src/ddns/providers.py +index 1e88995..587d5ff 100644 +--- a/src/ddns/providers.py ++++ b/src/ddns/providers.py +@@ -539,6 +539,44 @@ class DDNSProviderBindNsupdate(DDNSProvider): + return "\n".join(scriptlet) + + ++class DDNSProviderChangeIP(DDNSProvider): ++ handle = "changeip.com" ++ name = "ChangeIP.com" ++ website = "https://changeip.com" ++ protocols = ("ipv4",) ++ ++ # Detailed information about the update api can be found here. ++ # http://www.changeip.com/accounts/knowledgebase.php?action=displayarticle&id=34 ++ ++ url = "https://nic.changeip.com/nic/update" ++ can_remove_records = False ++ ++ def update_protocol(self, proto): ++ data = { ++ "hostname" : self.hostname, ++ "myip" : self.get_address(proto), ++ } ++ ++ # Send update to the server. ++ try: ++ response = self.send_request(self.url, username=self.username, password=self.password, ++ data=data) ++ ++ # Handle error codes. ++ except urllib2.HTTPError, e: ++ if e.code == 422: ++ raise DDNSRequestError(_("Domain not found.")) ++ ++ raise ++ ++ # Handle success message. ++ if response.code == 200: ++ return ++ ++ # If we got here, some other update error happened. ++ raise DDNSUpdateError(_("Server response: %s") % output) ++ ++ + class DDNSProviderDHS(DDNSProvider): + handle = "dhs.org" + name = "DHS International" diff --git a/src/patches/ddns/ddns-005-SPDNS-fix-auth.patch b/src/patches/ddns/ddns-005-SPDNS-fix-auth.patch new file mode 100644 index 0000000000..1d91baa59c --- /dev/null +++ b/src/patches/ddns/ddns-005-SPDNS-fix-auth.patch @@ -0,0 +1,23 @@ +commit 25f39b4e437627bd1a49393280271d59ad28b86e +Author: Stefan Schantl +Date: Mon Jan 5 21:37:55 2015 +0100 + + spdns.de: Fix authentication. + + There was a simple copy and paste issue which prevents a + correct authentication with username and password against the + providers API. + +diff --git a/src/ddns/providers.py b/src/ddns/providers.py +index 587d5ff..bcfb088 100644 +--- a/src/ddns/providers.py ++++ b/src/ddns/providers.py +@@ -1271,7 +1271,7 @@ class DDNSProviderSPDNS(DDNSProtocolDynDNS2, DDNSProvider): + + @property + def password(self): +- return self.get("username") or self.token ++ return self.get("password") or self.token + + + class DDNSProviderStrato(DDNSProtocolDynDNS2, DDNSProvider): diff --git a/src/patches/dnsmasq-2.72rc2-Add-support-to-read-ISC-DHCP-lease-file.patch b/src/patches/dnsmasq-Add-support-to-read-ISC-DHCP-lease-file.patch similarity index 89% rename from src/patches/dnsmasq-2.72rc2-Add-support-to-read-ISC-DHCP-lease-file.patch rename to src/patches/dnsmasq-Add-support-to-read-ISC-DHCP-lease-file.patch index 9912c7ca93..1a89b36d36 100644 --- a/src/patches/dnsmasq-2.72rc2-Add-support-to-read-ISC-DHCP-lease-file.patch +++ b/src/patches/dnsmasq-Add-support-to-read-ISC-DHCP-lease-file.patch @@ -1,18 +1,18 @@ diff --git a/Makefile b/Makefile -index 58a7975..616c6b7 100644 +index 2910320b6452..0a76ce3c5154 100644 --- a/Makefile +++ b/Makefile -@@ -69,7 +69,7 @@ objs = cache.o rfc1035.o util.o option.o forward.o network.o \ +@@ -73,7 +73,7 @@ objs = cache.o rfc1035.o util.o option.o forward.o network.o \ dnsmasq.o dhcp.o lease.o rfc2131.o netlink.o dbus.o bpf.o \ helper.o tftp.o log.o conntrack.o dhcp6.o rfc3315.o \ dhcp-common.o outpacket.o radv.o slaac.o auth.o ipset.o \ -- domain.o dnssec.o blockdata.o tables.o loop.o -+ domain.o dnssec.o blockdata.o tables.o loop.o isc.o +- domain.o dnssec.o blockdata.o tables.o loop.o inotify.o ++ domain.o dnssec.o blockdata.o tables.o loop.o inotify.o isc.o hdrs = dnsmasq.h config.h dhcp-protocol.h dhcp6-protocol.h \ dns-protocol.h radv-protocol.h ip6addr.h diff --git a/src/cache.c b/src/cache.c -index 2c3a498..77a7046 100644 +index 117ae279fd4e..6ee7ee362e6c 100644 --- a/src/cache.c +++ b/src/cache.c @@ -17,7 +17,7 @@ @@ -34,8 +34,8 @@ index 2c3a498..77a7046 100644 #ifdef HAVE_DNSSEC cache_blockdata_free(crecp); #endif -@@ -1110,7 +1113,7 @@ void cache_reload(void) - total_size = read_hostsfile(ah->fname, ah->index, total_size, (struct crec **)daemon->packet, revhashsz); +@@ -1151,7 +1154,7 @@ void cache_reload(void) + } -#ifdef HAVE_DHCP @@ -43,7 +43,7 @@ index 2c3a498..77a7046 100644 struct in_addr a_record_from_hosts(char *name, time_t now) { struct crec *crecp = NULL; -@@ -1188,7 +1191,7 @@ void cache_add_dhcp_entry(char *host_name, int prot, +@@ -1229,7 +1232,7 @@ void cache_add_dhcp_entry(char *host_name, int prot, addrlen = sizeof(struct in6_addr); } #endif @@ -52,7 +52,7 @@ index 2c3a498..77a7046 100644 inet_ntop(prot, host_address, daemon->addrbuff, ADDRSTRLEN); while ((crec = cache_find_by_name(crec, host_name, 0, flags | F_CNAME))) -@@ -1253,7 +1256,11 @@ void cache_add_dhcp_entry(char *host_name, int prot, +@@ -1294,7 +1297,11 @@ void cache_add_dhcp_entry(char *host_name, int prot, else crec->ttd = ttd; crec->addr.addr = *host_address; @@ -65,10 +65,10 @@ index 2c3a498..77a7046 100644 cache_hash(crec); diff --git a/src/dnsmasq.c b/src/dnsmasq.c -index f4a89fc..a448ec4 100644 +index e903a24c8105..eefc7f939933 100644 --- a/src/dnsmasq.c +++ b/src/dnsmasq.c -@@ -940,6 +940,11 @@ int main (int argc, char **argv) +@@ -970,6 +970,11 @@ int main (int argc, char **argv) poll_resolv(0, daemon->last_resolv != 0, now); daemon->last_resolv = now; @@ -78,30 +78,24 @@ index f4a89fc..a448ec4 100644 + load_dhcp(now); +#endif } - - if (FD_ISSET(piperead, &rset)) + #endif + diff --git a/src/dnsmasq.h b/src/dnsmasq.h -index e74b15a..4a35168 100644 +index 89e758b56a0a..c5edd6fdf7f5 100644 --- a/src/dnsmasq.h +++ b/src/dnsmasq.h -@@ -1463,9 +1463,13 @@ time_t periodic_slaac(time_t now, struct dhcp_lease *leases); - void slaac_ping_reply(struct in6_addr *sender, unsigned char *packet, char *interface, struct dhcp_lease *leases); +@@ -1502,3 +1502,8 @@ void inotify_dnsmasq_init(); + int inotify_check(time_t now); + void set_dynamic_inotify(int flag, int total_size, struct crec **rhash, int revhashsz); #endif - ++ +/* isc.c */ +#ifdef HAVE_ISC_READER +void load_dhcp(time_t now); +#endif -+ - /* loop.c */ - #ifdef HAVE_LOOP - void loop_send_probes(); - int detect_loop(char *query, int type); - #endif -- diff --git a/src/isc.c b/src/isc.c new file mode 100644 -index 0000000..5106442 +index 000000000000..51064426f17f --- /dev/null +++ b/src/isc.c @@ -0,0 +1,251 @@ @@ -357,10 +351,10 @@ index 0000000..5106442 + +#endif diff --git a/src/option.c b/src/option.c -index 45d8875..29c9ee5 100644 +index cb4e76ba0aa2..f6420fcbb7ab 100644 --- a/src/option.c +++ b/src/option.c -@@ -1669,7 +1669,7 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma +@@ -1693,7 +1693,7 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma ret_err(_("bad MX target")); break; diff --git a/src/patches/dnsmasq/0001-Add-newline-at-the-end-of-example-config-file.patch b/src/patches/dnsmasq/0001-Add-newline-at-the-end-of-example-config-file.patch new file mode 100644 index 0000000000..adcb44fff7 --- /dev/null +++ b/src/patches/dnsmasq/0001-Add-newline-at-the-end-of-example-config-file.patch @@ -0,0 +1,23 @@ +From f2658275b25ebfe691cdcb9fede85a3088cca168 Mon Sep 17 00:00:00 2001 +From: Simon Kelley +Date: Thu, 25 Sep 2014 21:51:25 +0100 +Subject: [PATCH 01/55] Add newline at the end of example config file. + +--- + dnsmasq.conf.example | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dnsmasq.conf.example b/dnsmasq.conf.example +index 83924fc4a9b4..6b00bd34fbb5 100644 +--- a/dnsmasq.conf.example ++++ b/dnsmasq.conf.example +@@ -645,4 +645,4 @@ + #conf-dir=/etc/dnsmasq.d,.bak + + # Include all files in a directory which end in .conf +-#conf-dir=/etc/dnsmasq.d/*.conf +\ No newline at end of file ++#conf-dir=/etc/dnsmasq.d/*.conf +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0002-crash-at-startup-when-an-empty-suffix-is-supplied-to.patch b/src/patches/dnsmasq/0002-crash-at-startup-when-an-empty-suffix-is-supplied-to.patch new file mode 100644 index 0000000000..b84440baf1 --- /dev/null +++ b/src/patches/dnsmasq/0002-crash-at-startup-when-an-empty-suffix-is-supplied-to.patch @@ -0,0 +1,86 @@ +From 00cd9d551998307225312fd21f761cfa8868bd2c Mon Sep 17 00:00:00 2001 +From: Simon Kelley +Date: Thu, 2 Oct 2014 21:44:21 +0100 +Subject: [PATCH 02/55] crash at startup when an empty suffix is supplied to + --conf-dir + +--- + CHANGELOG | 6 ++++++ + src/option.c | 38 +++++++++++++++++++++++--------------- + 2 files changed, 29 insertions(+), 15 deletions(-) + +diff --git a/CHANGELOG b/CHANGELOG +index 768e2aaca42a..13ab41c05fc3 100644 +--- a/CHANGELOG ++++ b/CHANGELOG +@@ -1,3 +1,9 @@ ++version 2.73 ++ Fix crash at startup when an empty suffix is supplied to ++ --conf-dir, also trivial memory leak. Thanks to ++ Tomas Hozza for spotting this. ++ ++ + version 2.72 + Add ra-advrouter mode, for RFC-3775 mobile IPv6 support. + +diff --git a/src/option.c b/src/option.c +index 45d8875fb7f9..b08e98e16f84 100644 +--- a/src/option.c ++++ b/src/option.c +@@ -1474,22 +1474,25 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma + for (arg = comma; arg; arg = comma) + { + comma = split(arg); +- li = opt_malloc(sizeof(struct list)); +- if (*arg == '*') ++ if (strlen(arg) != 0) + { +- li->next = match_suffix; +- match_suffix = li; +- /* Have to copy: buffer is overwritten */ +- li->suffix = opt_string_alloc(arg+1); +- } +- else +- { +- li->next = ignore_suffix; +- ignore_suffix = li; +- /* Have to copy: buffer is overwritten */ +- li->suffix = opt_string_alloc(arg); ++ li = opt_malloc(sizeof(struct list)); ++ if (*arg == '*') ++ { ++ li->next = match_suffix; ++ match_suffix = li; ++ /* Have to copy: buffer is overwritten */ ++ li->suffix = opt_string_alloc(arg+1); ++ } ++ else ++ { ++ li->next = ignore_suffix; ++ ignore_suffix = li; ++ /* Have to copy: buffer is overwritten */ ++ li->suffix = opt_string_alloc(arg); ++ } + } +- }; ++ } + + if (!(dir_stream = opendir(directory))) + die(_("cannot access directory %s: %s"), directory, EC_FILE); +@@ -1555,7 +1558,12 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma + free(ignore_suffix->suffix); + free(ignore_suffix); + } +- ++ for(; match_suffix; match_suffix = li) ++ { ++ li = match_suffix->next; ++ free(match_suffix->suffix); ++ free(match_suffix); ++ } + break; + } + +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0003-Debian-build-fixes-for-kFreeBSD.patch b/src/patches/dnsmasq/0003-Debian-build-fixes-for-kFreeBSD.patch new file mode 100644 index 0000000000..fe73acd641 --- /dev/null +++ b/src/patches/dnsmasq/0003-Debian-build-fixes-for-kFreeBSD.patch @@ -0,0 +1,36 @@ +From 6ac3bc0452a74e16e3d620a0757b0f8caab182ec Mon Sep 17 00:00:00 2001 +From: Simon Kelley +Date: Fri, 3 Oct 2014 08:48:11 +0100 +Subject: [PATCH 03/55] Debian build fixes for kFreeBSD + +--- + src/tables.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/src/tables.c b/src/tables.c +index 834f11944cd0..dcdef794c4d2 100644 +--- a/src/tables.c ++++ b/src/tables.c +@@ -20,6 +20,10 @@ + + #if defined(HAVE_IPSET) && defined(HAVE_BSD_NETWORK) + ++#ifndef __FreeBSD__ ++#include ++#endif ++ + #include + #include + +@@ -136,7 +140,7 @@ int add_to_ipset(const char *setname, const struct all_addr *ipaddr, + return -1; + } + +- if (rc = pfr_add_tables(&table, 1, &n, 0)) ++ if ((rc = pfr_add_tables(&table, 1, &n, 0))) + { + my_syslog(LOG_WARNING, _("warning: pfr_add_tables: %s(%d)"), + pfr_strerror(errno),rc); +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0004-Set-conntrack-mark-before-connect-call.patch b/src/patches/dnsmasq/0004-Set-conntrack-mark-before-connect-call.patch new file mode 100644 index 0000000000..5d7c3c4e88 --- /dev/null +++ b/src/patches/dnsmasq/0004-Set-conntrack-mark-before-connect-call.patch @@ -0,0 +1,68 @@ +From e9828b6f66b22ce8873f8d30a773137d1aef1b92 Mon Sep 17 00:00:00 2001 +From: Karl Vogel +Date: Fri, 3 Oct 2014 21:45:15 +0100 +Subject: [PATCH 04/55] Set conntrack mark before connect() call. + +SO_MARK has to be done before issuing the connect() call on the +TCP socket. +--- + src/forward.c | 36 ++++++++++++++++++------------------ + 1 file changed, 18 insertions(+), 18 deletions(-) + +diff --git a/src/forward.c b/src/forward.c +index 4895efeba89a..2cf29eba6e26 100644 +--- a/src/forward.c ++++ b/src/forward.c +@@ -1796,6 +1796,24 @@ unsigned char *tcp_request(int confd, time_t now, + if ((last_server->tcpfd = socket(last_server->addr.sa.sa_family, SOCK_STREAM, 0)) == -1) + continue; + ++#ifdef HAVE_CONNTRACK ++ /* Copy connection mark of incoming query to outgoing connection. */ ++ if (option_bool(OPT_CONNTRACK)) ++ { ++ unsigned int mark; ++ struct all_addr local; ++#ifdef HAVE_IPV6 ++ if (local_addr->sa.sa_family == AF_INET6) ++ local.addr.addr6 = local_addr->in6.sin6_addr; ++ else ++#endif ++ local.addr.addr4 = local_addr->in.sin_addr; ++ ++ if (get_incoming_mark(&peer_addr, &local, 1, &mark)) ++ setsockopt(last_server->tcpfd, SOL_SOCKET, SO_MARK, &mark, sizeof(unsigned int)); ++ } ++#endif ++ + if ((!local_bind(last_server->tcpfd, &last_server->source_addr, last_server->interface, 1) || + connect(last_server->tcpfd, &last_server->addr.sa, sa_len(&last_server->addr)) == -1)) + { +@@ -1820,24 +1838,6 @@ unsigned char *tcp_request(int confd, time_t now, + size = new_size; + } + #endif +- +-#ifdef HAVE_CONNTRACK +- /* Copy connection mark of incoming query to outgoing connection. */ +- if (option_bool(OPT_CONNTRACK)) +- { +- unsigned int mark; +- struct all_addr local; +-#ifdef HAVE_IPV6 +- if (local_addr->sa.sa_family == AF_INET6) +- local.addr.addr6 = local_addr->in6.sin6_addr; +- else +-#endif +- local.addr.addr4 = local_addr->in.sin_addr; +- +- if (get_incoming_mark(&peer_addr, &local, 1, &mark)) +- setsockopt(last_server->tcpfd, SOL_SOCKET, SO_MARK, &mark, sizeof(unsigned int)); +- } +-#endif + } + + *length = htons(size); +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0005-Fix-typo-in-new-Dbus-code.patch b/src/patches/dnsmasq/0005-Fix-typo-in-new-Dbus-code.patch new file mode 100644 index 0000000000..80c55f6849 --- /dev/null +++ b/src/patches/dnsmasq/0005-Fix-typo-in-new-Dbus-code.patch @@ -0,0 +1,26 @@ +From 17b475912f6a4e72797a543dad59d4d5dde6bb1b Mon Sep 17 00:00:00 2001 +From: Daniel Collins +Date: Fri, 3 Oct 2014 21:58:43 +0100 +Subject: [PATCH 05/55] Fix typo in new Dbus code. + +Simon's fault. +--- + src/dbus.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/dbus.c b/src/dbus.c +index 15fed906bd90..a2a94dc85dac 100644 +--- a/src/dbus.c ++++ b/src/dbus.c +@@ -426,7 +426,7 @@ static DBusMessage *dbus_set_bool(DBusMessage *message, int flag, char *name) + } + else + { +- my_syslog(LOG_INFO, "Disabling --$s option from D-Bus", name); ++ my_syslog(LOG_INFO, "Disabling --%s option from D-Bus", name); + reset_option_bool(flag); + } + +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0006-Fit-example-conf-file-typo.patch b/src/patches/dnsmasq/0006-Fit-example-conf-file-typo.patch new file mode 100644 index 0000000000..5f9f572765 --- /dev/null +++ b/src/patches/dnsmasq/0006-Fit-example-conf-file-typo.patch @@ -0,0 +1,22 @@ +From 3d9d2dd0018603a2ae4b9cd65ac6ff959f4fd8c7 Mon Sep 17 00:00:00 2001 +From: Tomas Hozza +Date: Mon, 6 Oct 2014 10:46:48 +0100 +Subject: [PATCH 06/55] Fit example conf file typo. + +--- + dnsmasq.conf.example | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dnsmasq.conf.example b/dnsmasq.conf.example +index 6b00bd34fbb5..1bd305dbdbad 100644 +--- a/dnsmasq.conf.example ++++ b/dnsmasq.conf.example +@@ -645,4 +645,4 @@ + #conf-dir=/etc/dnsmasq.d,.bak + + # Include all files in a directory which end in .conf +-#conf-dir=/etc/dnsmasq.d/*.conf ++#conf-dir=/etc/dnsmasq.d/,*.conf +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0007-Improve-RFC-compliance-when-unable-to-supply-address.patch b/src/patches/dnsmasq/0007-Improve-RFC-compliance-when-unable-to-supply-address.patch new file mode 100644 index 0000000000..370d1065c0 --- /dev/null +++ b/src/patches/dnsmasq/0007-Improve-RFC-compliance-when-unable-to-supply-address.patch @@ -0,0 +1,107 @@ +From b9ff5c8f435173cfa616e3c398bdc089ef690a07 Mon Sep 17 00:00:00 2001 +From: Vladislav Grishenko +Date: Mon, 6 Oct 2014 14:34:24 +0100 +Subject: [PATCH 07/55] Improve RFC-compliance when unable to supply addresses + in DHCPv6 + +While testing https://github.com/sbyx/odhcp6c client I have noticed it +permanently crashes after startup. + +The reason was it (odhcp6c) doesn't expect empty IA options in ADVERTISE +message without any suboptions. + +Despite this validation bug of odhcp6c, dnsmasq should not generate +ADVERTISE messages with IA if there's nothing to advert per RFC 3315 +17.2.2: + + If the server will not assign any addresses to any IAs in a + + subsequent Request from the client, the server MUST send an Advertise + + message to the client that includes only a Status Code option with + + code NoAddrsAvail and a status message for the user, a Server + + Identifier option with the server's DUID, and a Client Identifier + + option with the client's DUID. + +Meanwhile it's need to add status code for every IA in REPLY message per +RFC3315 18.2.1: + + If the server cannot assign any addresses to an IA in the message + from the client, the server MUST include the IA in the Reply message + with no addresses in the IA and a Status Code option in the IA + containing status code NoAddrsAvail. + +So, I've changed the logic to skip IA completely from ADVERTISE messages and +to add NoAddrsAvail subcode into IA of REPLY messages. + +As for overhead, yes, I believe it's ok to return NoAddrsAvail twice in IA +and in global section for compatibility with all old and new clients. +--- + src/rfc3315.c | 27 +++++++++++++++++++++++++-- + 1 file changed, 25 insertions(+), 2 deletions(-) + +diff --git a/src/rfc3315.c b/src/rfc3315.c +index 5ebf09d50ac1..ddb390bf1136 100644 +--- a/src/rfc3315.c ++++ b/src/rfc3315.c +@@ -691,6 +691,8 @@ static int dhcp6_no_relay(struct state *state, int msg_type, void *inbuff, size_ + #endif + + o = build_ia(state, &t1cntr); ++ if (address_assigned) ++ address_assigned = 2; + + for (ia_counter = 0; ia_option; ia_counter++, ia_option = opt6_find(opt6_next(ia_option, ia_end), ia_end, OPTION6_IAADDR, 24)) + { +@@ -781,6 +783,27 @@ static int dhcp6_no_relay(struct state *state, int msg_type, void *inbuff, size_ + address_assigned = 1; + } + ++ if (address_assigned != 1) ++ { ++ /* If the server will not assign any addresses to any IAs in a ++ subsequent Request from the client, the server MUST send an Advertise ++ message to the client that doesn't include any IA options. */ ++ if (!state->lease_allocate) ++ { ++ save_counter(o); ++ continue; ++ } ++ ++ /* If the server cannot assign any addresses to an IA in the message ++ from the client, the server MUST include the IA in the Reply message ++ with no addresses in the IA and a Status Code option in the IA ++ containing status code NoAddrsAvail. */ ++ o1 = new_opt6(OPTION6_STATUS_CODE); ++ put_opt6_short(DHCP6NOADDRS); ++ put_opt6_string(_("address unavailable")); ++ end_opt6(o1); ++ } ++ + end_ia(t1cntr, min_time, 0); + end_opt6(o); + } +@@ -806,7 +829,7 @@ static int dhcp6_no_relay(struct state *state, int msg_type, void *inbuff, size_ + put_opt6_short(DHCP6NOADDRS); + put_opt6_string(_("no addresses available")); + end_opt6(o1); +- log6_packet(state, "DHCPADVERTISE", NULL, _("no addresses available")); ++ log6_packet(state, state->lease_allocate ? "DHCPREPLY" : "DHCPADVERTISE", NULL, _("no addresses available")); + } + + break; +@@ -862,7 +885,7 @@ static int dhcp6_no_relay(struct state *state, int msg_type, void *inbuff, size_ + { + /* Static range, not configured. */ + o1 = new_opt6(OPTION6_STATUS_CODE); +- put_opt6_short(DHCP6UNSPEC); ++ put_opt6_short(DHCP6NOADDRS); + put_opt6_string(_("address unavailable")); + end_opt6(o1); + } +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0008-Fix-conntrack-with-bind-interfaces.patch b/src/patches/dnsmasq/0008-Fix-conntrack-with-bind-interfaces.patch new file mode 100644 index 0000000000..3f8bad331b --- /dev/null +++ b/src/patches/dnsmasq/0008-Fix-conntrack-with-bind-interfaces.patch @@ -0,0 +1,39 @@ +From 98906275a02ae260fe3f82133bd79054f8315f06 Mon Sep 17 00:00:00 2001 +From: Hans Dedecker +Date: Tue, 9 Dec 2014 22:22:53 +0000 +Subject: [PATCH 08/55] Fix conntrack with --bind-interfaces + +Make sure dst_addr is assigned the correct address in receive_query when OPTNOWILD is +enabled so the assigned mark can be correctly retrieved and set in forward_query when +conntrack is enabled. + +Signed-off-by: Hans Dedecker +--- + src/forward.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/forward.c b/src/forward.c +index 2cf29eba6e26..408a179a20f4 100644 +--- a/src/forward.c ++++ b/src/forward.c +@@ -1048,7 +1048,7 @@ void receive_query(struct listener *listen, time_t now) + /* packet buffer overwritten */ + daemon->srv_save = NULL; + +- dst_addr_4.s_addr = 0; ++ dst_addr_4.s_addr = dst_addr.addr.addr4.s_addr = 0; + netmask.s_addr = 0; + + if (option_bool(OPT_NOWILD) && listen->iface) +@@ -1057,7 +1057,7 @@ void receive_query(struct listener *listen, time_t now) + + if (listen->family == AF_INET) + { +- dst_addr_4 = listen->iface->addr.in.sin_addr; ++ dst_addr_4 = dst_addr.addr.addr4 = listen->iface->addr.in.sin_addr; + netmask = listen->iface->netmask; + } + } +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0009-Use-inotify-instead-of-polling-on-Linux.patch b/src/patches/dnsmasq/0009-Use-inotify-instead-of-polling-on-Linux.patch new file mode 100644 index 0000000000..81939202b9 --- /dev/null +++ b/src/patches/dnsmasq/0009-Use-inotify-instead-of-polling-on-Linux.patch @@ -0,0 +1,257 @@ +From 193de4abf59e49c6b70d54cfe9720fcb95ca2f71 Mon Sep 17 00:00:00 2001 +From: Simon Kelley +Date: Wed, 10 Dec 2014 17:32:16 +0000 +Subject: [PATCH 09/55] Use inotify instead of polling on Linux. + +This should solve problems people are seeing when a file changes +twice within a second and thus is missed for polling. +--- + Makefile | 2 +- + bld/Android.mk | 2 +- + src/dnsmasq.c | 25 ++++++++++++-- + src/dnsmasq.h | 11 ++++++- + src/inotify.c | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 5 files changed, 137 insertions(+), 5 deletions(-) + create mode 100644 src/inotify.c + +diff --git a/Makefile b/Makefile +index 58a7975f60b5..c340f1c7b59a 100644 +--- a/Makefile ++++ b/Makefile +@@ -69,7 +69,7 @@ objs = cache.o rfc1035.o util.o option.o forward.o network.o \ + dnsmasq.o dhcp.o lease.o rfc2131.o netlink.o dbus.o bpf.o \ + helper.o tftp.o log.o conntrack.o dhcp6.o rfc3315.o \ + dhcp-common.o outpacket.o radv.o slaac.o auth.o ipset.o \ +- domain.o dnssec.o blockdata.o tables.o loop.o ++ domain.o dnssec.o blockdata.o tables.o loop.o inotify.o + + hdrs = dnsmasq.h config.h dhcp-protocol.h dhcp6-protocol.h \ + dns-protocol.h radv-protocol.h ip6addr.h +diff --git a/bld/Android.mk b/bld/Android.mk +index d855094eb264..d627796e8edc 100644 +--- a/bld/Android.mk ++++ b/bld/Android.mk +@@ -10,7 +10,7 @@ LOCAL_SRC_FILES := bpf.c cache.c dbus.c dhcp.c dnsmasq.c \ + dhcp6.c rfc3315.c dhcp-common.c outpacket.c \ + radv.c slaac.c auth.c ipset.c domain.c \ + dnssec.c dnssec-openssl.c blockdata.c tables.c \ +- loop.c ++ loop.c inotify.c + + LOCAL_MODULE := dnsmasq + +diff --git a/src/dnsmasq.c b/src/dnsmasq.c +index f4a89fc38183..bf2e25a55780 100644 +--- a/src/dnsmasq.c ++++ b/src/dnsmasq.c +@@ -315,9 +315,15 @@ int main (int argc, char **argv) + if (daemon->port != 0) + { + cache_init(); ++ + #ifdef HAVE_DNSSEC + blockdata_init(); + #endif ++ ++#ifdef HAVE_LINUX_NETWORK ++ if (!option_bool(OPT_NO_POLL)) ++ inotify_dnsmasq_init(); ++#endif + } + + if (option_bool(OPT_DBUS)) +@@ -793,6 +799,11 @@ int main (int argc, char **argv) + + pid = getpid(); + ++#ifdef HAVE_LINUX_NETWORK ++ /* Using inotify, have to select a resolv file at startup */ ++ poll_resolv(1, 0, now); ++#endif ++ + while (1) + { + int maxfd = -1; +@@ -862,11 +873,16 @@ int main (int argc, char **argv) + #if defined(HAVE_LINUX_NETWORK) + FD_SET(daemon->netlinkfd, &rset); + bump_maxfd(daemon->netlinkfd, &maxfd); ++ if (daemon->port != 0 && !option_bool(OPT_NO_POLL)) ++ { ++ FD_SET(daemon->inotifyfd, &rset); ++ bump_maxfd(daemon->inotifyfd, &maxfd); ++ } + #elif defined(HAVE_BSD_NETWORK) + FD_SET(daemon->routefd, &rset); + bump_maxfd(daemon->routefd, &maxfd); + #endif +- ++ + FD_SET(piperead, &rset); + bump_maxfd(piperead, &maxfd); + +@@ -929,6 +945,10 @@ int main (int argc, char **argv) + route_sock(); + #endif + ++#ifdef HAVE_LINUX_NETWORK ++ if (daemon->port != 0 && !option_bool(OPT_NO_POLL) && FD_ISSET(daemon->inotifyfd, &rset) && inotify_check()) ++ poll_resolv(1, 1, now); ++#else + /* Check for changes to resolv files once per second max. */ + /* Don't go silent for long periods if the clock goes backwards. */ + if (daemon->last_resolv == 0 || +@@ -941,7 +961,8 @@ int main (int argc, char **argv) + poll_resolv(0, daemon->last_resolv != 0, now); + daemon->last_resolv = now; + } +- ++#endif ++ + if (FD_ISSET(piperead, &rset)) + async_event(piperead, now); + +diff --git a/src/dnsmasq.h b/src/dnsmasq.h +index e74b15a5459a..ebb6b957812f 100644 +--- a/src/dnsmasq.h ++++ b/src/dnsmasq.h +@@ -541,6 +541,10 @@ struct resolvc { + int is_default, logged; + time_t mtime; + char *name; ++#ifdef HAVE_LINUX_NETWORK ++ int wd; /* inotify watch descriptor */ ++ char *file; /* pointer to file part if path */ ++#endif + }; + + /* adn-hosts parms from command-line (also dhcp-hostsfile and dhcp-optsfile */ +@@ -998,7 +1002,7 @@ extern struct daemon { + /* DHCP state */ + int dhcpfd, helperfd, pxefd; + #if defined(HAVE_LINUX_NETWORK) +- int netlinkfd; ++ int netlinkfd, inotifyfd; + #elif defined(HAVE_BSD_NETWORK) + int dhcp_raw_fd, dhcp_icmp_fd, routefd; + #endif +@@ -1469,3 +1473,8 @@ void loop_send_probes(); + int detect_loop(char *query, int type); + #endif + ++/* inotify.c */ ++#ifdef HAVE_LINUX_NETWORK ++void inotify_dnsmasq_init(); ++int inotify_check(void); ++#endif +diff --git a/src/inotify.c b/src/inotify.c +new file mode 100644 +index 000000000000..a0223443d6b6 +--- /dev/null ++++ b/src/inotify.c +@@ -0,0 +1,102 @@ ++/* dnsmasq is Copyright (c) 2000-2014 Simon Kelley ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; version 2 dated June, 1991, or ++ (at your option) version 3 dated 29 June, 2007. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . ++*/ ++ ++#include "dnsmasq.h" ++#include ++ ++#ifdef HAVE_LINUX_NETWORK ++ ++/* the strategy is to set a inotify on the directories containing ++ resolv files, for any files in the directory which are close-write ++ or moved into the directory. ++ ++ When either of those happen, we look to see if the file involved ++ is actually a resolv-file, and if so, call poll-resolv with ++ the "force" argument, to ensure it's read. ++ ++ This adds one new error condition: the directories containing ++ all specified resolv-files must exist at start-up, even if the actual ++ files don't. ++*/ ++ ++static char *inotify_buffer; ++#define INOTIFY_SZ (sizeof(struct inotify_event) + NAME_MAX + 1) ++ ++void inotify_dnsmasq_init() ++{ ++ struct resolvc *res; ++ ++ inotify_buffer = safe_malloc(INOTIFY_SZ); ++ ++ daemon->inotifyfd = inotify_init1(IN_NONBLOCK | IN_CLOEXEC); ++ ++ if (daemon->inotifyfd == -1) ++ die(_("failed to create inotify: %s"), NULL, EC_MISC); ++ ++ for (res = daemon->resolv_files; res; res = res->next) ++ { ++ char *d = strrchr(res->name, '/'); ++ ++ if (!d) ++ die(_("resolv-file %s not an absolute path"), res->name, EC_MISC); ++ ++ *d = 0; /* make ->name just directory */ ++ res->wd = inotify_add_watch(daemon->inotifyfd, res->name, IN_CLOSE_WRITE | IN_MOVED_TO); ++ res->file = d+1; /* pointer to filename */ ++ ++ if (res->wd == -1 && errno == ENOENT) ++ die(_("directory %s for resolv-file is missing, cannot poll"), res->name, EC_MISC); ++ ++ *d = '/'; /* restore name */ ++ ++ if (res->wd == -1) ++ die(_("failed to create inotify for %s: %s"), res->name, EC_MISC); ++ } ++} ++ ++int inotify_check(void) ++{ ++ int hit = 0; ++ ++ while (1) ++ { ++ int rc; ++ char *p; ++ struct resolvc *res; ++ struct inotify_event *in; ++ ++ while ((rc = read(daemon->inotifyfd, inotify_buffer, INOTIFY_SZ)) == -1 && errno == EINTR); ++ ++ if (rc <= 0) ++ break; ++ ++ for (p = inotify_buffer; rc - (p - inotify_buffer) >= (int)sizeof(struct inotify_event); p += sizeof(struct inotify_event) + in->len) ++ { ++ in = (struct inotify_event*)p; ++ ++ for (res = daemon->resolv_files; res; res = res->next) ++ if (res->wd == in->wd && in->len != 0 && strcmp(res->file, in->name) == 0) ++ hit = 1; ++ } ++ } ++ ++ return hit; ++} ++ ++#endif ++ ++ ++ +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0010-Teach-the-new-inotify-code-about-symlinks.patch b/src/patches/dnsmasq/0010-Teach-the-new-inotify-code-about-symlinks.patch new file mode 100644 index 0000000000..70fc5c3f85 --- /dev/null +++ b/src/patches/dnsmasq/0010-Teach-the-new-inotify-code-about-symlinks.patch @@ -0,0 +1,73 @@ +From 857973e6f7e0a3d03535a9df7f9373fd7a0b65cc Mon Sep 17 00:00:00 2001 +From: Simon Kelley +Date: Mon, 15 Dec 2014 15:58:13 +0000 +Subject: [PATCH 10/55] Teach the new inotify code about symlinks. + +--- + src/inotify.c | 43 +++++++++++++++++++++++++++---------------- + 1 file changed, 27 insertions(+), 16 deletions(-) + +diff --git a/src/inotify.c b/src/inotify.c +index a0223443d6b6..960bf5efb41f 100644 +--- a/src/inotify.c ++++ b/src/inotify.c +@@ -41,29 +41,40 @@ void inotify_dnsmasq_init() + + inotify_buffer = safe_malloc(INOTIFY_SZ); + +- daemon->inotifyfd = inotify_init1(IN_NONBLOCK | IN_CLOEXEC); + ++ daemon->inotifyfd = inotify_init1(IN_NONBLOCK | IN_CLOEXEC); ++ + if (daemon->inotifyfd == -1) + die(_("failed to create inotify: %s"), NULL, EC_MISC); +- ++ + for (res = daemon->resolv_files; res; res = res->next) + { +- char *d = strrchr(res->name, '/'); +- +- if (!d) +- die(_("resolv-file %s not an absolute path"), res->name, EC_MISC); +- +- *d = 0; /* make ->name just directory */ +- res->wd = inotify_add_watch(daemon->inotifyfd, res->name, IN_CLOSE_WRITE | IN_MOVED_TO); +- res->file = d+1; /* pointer to filename */ +- +- if (res->wd == -1 && errno == ENOENT) +- die(_("directory %s for resolv-file is missing, cannot poll"), res->name, EC_MISC); ++ char *d = NULL, *path; + +- *d = '/'; /* restore name */ ++ if (!(path = realpath(res->name, NULL))) ++ { ++ /* realpath will fail if the file doesn't exist, but ++ dnsmasq copes with missing files, so fall back ++ and assume that symlinks are not in use in that case. */ ++ if (errno == ENOENT) ++ path = res->name; ++ else ++ die(_("cannot cannonicalise resolv-file %s: %s"), res->name, EC_MISC); ++ } + +- if (res->wd == -1) +- die(_("failed to create inotify for %s: %s"), res->name, EC_MISC); ++ if ((d = strrchr(path, '/'))) ++ { ++ *d = 0; /* make path just directory */ ++ res->wd = inotify_add_watch(daemon->inotifyfd, path, IN_CLOSE_WRITE | IN_MOVED_TO); ++ res->file = d+1; /* pointer to filename */ ++ *d = '/'; ++ ++ if (res->wd == -1 && errno == ENOENT) ++ die(_("directory %s for resolv-file is missing, cannot poll"), res->name, EC_MISC); ++ ++ if (res->wd == -1) ++ die(_("failed to create inotify for %s: %s"), res->name, EC_MISC); ++ } + } + } + +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0011-Remove-floor-on-EDNS0-packet-size-with-DNSSEC.patch b/src/patches/dnsmasq/0011-Remove-floor-on-EDNS0-packet-size-with-DNSSEC.patch new file mode 100644 index 0000000000..095253b184 --- /dev/null +++ b/src/patches/dnsmasq/0011-Remove-floor-on-EDNS0-packet-size-with-DNSSEC.patch @@ -0,0 +1,46 @@ +From 800c5cc1e7438818fd80f08c2d472df249a6942d Mon Sep 17 00:00:00 2001 +From: Simon Kelley +Date: Mon, 15 Dec 2014 17:50:15 +0000 +Subject: [PATCH 11/55] Remove floor on EDNS0 packet size with DNSSEC. + +--- + CHANGELOG | 6 +++++- + src/dnsmasq.c | 5 ----- + 2 files changed, 5 insertions(+), 6 deletions(-) + +diff --git a/CHANGELOG b/CHANGELOG +index 13ab41c05fc3..68252924e743 100644 +--- a/CHANGELOG ++++ b/CHANGELOG +@@ -2,7 +2,11 @@ version 2.73 + Fix crash at startup when an empty suffix is supplied to + --conf-dir, also trivial memory leak. Thanks to + Tomas Hozza for spotting this. +- ++ ++ Remove floor of 4096 on advertised EDNS0 packet size when ++ DNSSEC in use, the original rationale for this has long gone. ++ Thanks to Anders Kaseorg for spotting this. ++ + + version 2.72 + Add ra-advrouter mode, for RFC-3775 mobile IPv6 support. +diff --git a/src/dnsmasq.c b/src/dnsmasq.c +index bf2e25a55780..5c7750d365fa 100644 +--- a/src/dnsmasq.c ++++ b/src/dnsmasq.c +@@ -87,11 +87,6 @@ int main (int argc, char **argv) + + if (daemon->edns_pktsz < PACKETSZ) + daemon->edns_pktsz = PACKETSZ; +-#ifdef HAVE_DNSSEC +- /* Enforce min packet big enough for DNSSEC */ +- if (option_bool(OPT_DNSSEC_VALID) && daemon->edns_pktsz < EDNS_PKTSZ) +- daemon->edns_pktsz = EDNS_PKTSZ; +-#endif + + daemon->packet_buff_sz = daemon->edns_pktsz > DNSMASQ_PACKETSZ ? + daemon->edns_pktsz : DNSMASQ_PACKETSZ; +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0012-CHANGELOG-re.-inotify.patch b/src/patches/dnsmasq/0012-CHANGELOG-re.-inotify.patch new file mode 100644 index 0000000000..b71e58b75b --- /dev/null +++ b/src/patches/dnsmasq/0012-CHANGELOG-re.-inotify.patch @@ -0,0 +1,27 @@ +From ad946d555dce44eb690c7699933b6ff40ab85bb6 Mon Sep 17 00:00:00 2001 +From: Simon Kelley +Date: Mon, 15 Dec 2014 17:52:22 +0000 +Subject: [PATCH 12/55] CHANGELOG re. inotify. + +--- + CHANGELOG | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/CHANGELOG b/CHANGELOG +index 68252924e743..9174b0bd75dc 100644 +--- a/CHANGELOG ++++ b/CHANGELOG +@@ -7,6 +7,10 @@ version 2.73 + DNSSEC in use, the original rationale for this has long gone. + Thanks to Anders Kaseorg for spotting this. + ++ Use inotify for checking on updates to /etc/resolv.conf and ++ friends under Linux. This fixes race conditions when the files are ++ updated rapidly and saves CPU by noy polling. ++ + + version 2.72 + Add ra-advrouter mode, for RFC-3775 mobile IPv6 support. +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0013-Fix-breakage-of-domain-domain-subnet-local.patch b/src/patches/dnsmasq/0013-Fix-breakage-of-domain-domain-subnet-local.patch new file mode 100644 index 0000000000..2ff5acd14a --- /dev/null +++ b/src/patches/dnsmasq/0013-Fix-breakage-of-domain-domain-subnet-local.patch @@ -0,0 +1,70 @@ +From 3ad3f3bbd4ee716a7d2fb1e115cf89bd1b1a5de9 Mon Sep 17 00:00:00 2001 +From: Simon Kelley +Date: Tue, 16 Dec 2014 18:25:17 +0000 +Subject: [PATCH 13/55] Fix breakage of --domain=,,local + +--- + CHANGELOG | 4 ++++ + src/option.c | 18 ++++++++++++++++-- + 2 files changed, 20 insertions(+), 2 deletions(-) + +diff --git a/CHANGELOG b/CHANGELOG +index 9174b0bd75dc..9e6c7aa4fd68 100644 +--- a/CHANGELOG ++++ b/CHANGELOG +@@ -10,6 +10,10 @@ version 2.73 + Use inotify for checking on updates to /etc/resolv.conf and + friends under Linux. This fixes race conditions when the files are + updated rapidly and saves CPU by noy polling. ++ ++ Fix breakage of --domain=,,local - only reverse ++ queries were intercepted. THis appears to have been broken ++ since 2.69. Thanks to Josh Stone for finding the bug. + + + version 2.72 +diff --git a/src/option.c b/src/option.c +index b08e98e16f84..209fa6976609 100644 +--- a/src/option.c ++++ b/src/option.c +@@ -1941,10 +1941,17 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma + else + { + /* generate the equivalent of +- local=// + local=/xxx.yyy.zzz.in-addr.arpa/ */ + struct server *serv = add_rev4(new->start, msize); + serv->flags |= SERV_NO_ADDR; ++ ++ /* local=// */ ++ serv = opt_malloc(sizeof(struct server)); ++ memset(serv, 0, sizeof(struct server)); ++ serv->domain = d; ++ serv->flags = SERV_HAS_DOMAIN | SERV_NO_ADDR; ++ serv->next = daemon->servers; ++ daemon->servers = serv; + } + } + } +@@ -1978,10 +1985,17 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma + else + { + /* generate the equivalent of +- local=// + local=/xxx.yyy.zzz.ip6.arpa/ */ + struct server *serv = add_rev6(&new->start6, msize); + serv->flags |= SERV_NO_ADDR; ++ ++ /* local=// */ ++ serv = opt_malloc(sizeof(struct server)); ++ memset(serv, 0, sizeof(struct server)); ++ serv->domain = d; ++ serv->flags = SERV_HAS_DOMAIN | SERV_NO_ADDR; ++ serv->next = daemon->servers; ++ daemon->servers = serv; + } + } + } +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0014-Remove-redundant-IN6_IS_ADDR_ULA-a-macro-defn.patch b/src/patches/dnsmasq/0014-Remove-redundant-IN6_IS_ADDR_ULA-a-macro-defn.patch new file mode 100644 index 0000000000..a0e647f8af --- /dev/null +++ b/src/patches/dnsmasq/0014-Remove-redundant-IN6_IS_ADDR_ULA-a-macro-defn.patch @@ -0,0 +1,27 @@ +From bd9520b7ade7098ee423acc38965376aa57feb07 Mon Sep 17 00:00:00 2001 +From: Simon Kelley +Date: Tue, 16 Dec 2014 20:41:29 +0000 +Subject: [PATCH 14/55] Remove redundant IN6_IS_ADDR_ULA(a) macro defn. + +--- + src/network.c | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/src/network.c b/src/network.c +index 5067007c5cbc..99419f57951e 100644 +--- a/src/network.c ++++ b/src/network.c +@@ -16,10 +16,6 @@ + + #include "dnsmasq.h" + +-#ifndef IN6_IS_ADDR_ULA +-#define IN6_IS_ADDR_ULA(a) ((((__const uint32_t *) (a))[0] & htonl (0xfe00000)) == htonl (0xfc000000)) +-#endif +- + #ifdef HAVE_LINUX_NETWORK + + int indextoname(int fd, int index, char *name) +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0015-Eliminate-IPv6-privacy-addresses-from-interface-name.patch b/src/patches/dnsmasq/0015-Eliminate-IPv6-privacy-addresses-from-interface-name.patch new file mode 100644 index 0000000000..114a4f371c --- /dev/null +++ b/src/patches/dnsmasq/0015-Eliminate-IPv6-privacy-addresses-from-interface-name.patch @@ -0,0 +1,148 @@ +From 476693678e778886b64d0b56e27eb7695cbcca99 Mon Sep 17 00:00:00 2001 +From: Simon Kelley +Date: Wed, 17 Dec 2014 12:41:56 +0000 +Subject: [PATCH 15/55] Eliminate IPv6 privacy addresses from --interface-name + answers. + +--- + CHANGELOG | 5 +++++ + src/auth.c | 4 ++++ + src/dnsmasq.h | 1 + + src/network.c | 12 ++++++++---- + src/rfc1035.c | 17 ++++++++++------- + 5 files changed, 28 insertions(+), 11 deletions(-) + +diff --git a/CHANGELOG b/CHANGELOG +index 9e6c7aa4fd68..01f5208ec006 100644 +--- a/CHANGELOG ++++ b/CHANGELOG +@@ -14,6 +14,11 @@ version 2.73 + Fix breakage of --domain=,,local - only reverse + queries were intercepted. THis appears to have been broken + since 2.69. Thanks to Josh Stone for finding the bug. ++ ++ Eliminate IPv6 privacy addresses and deprecated addresses from ++ the answers given by --interface-name. Note that reverse queries ++ (ie looking for names, given addresses) are not affected. ++ Thanks to Michael Gorbach for the suggestion. + + + version 2.72 +diff --git a/src/auth.c b/src/auth.c +index dd46566ec2cc..a327f16d8c0b 100644 +--- a/src/auth.c ++++ b/src/auth.c +@@ -363,6 +363,10 @@ size_t answer_auth(struct dns_header *header, char *limit, size_t qlen, time_t n + if (((addrlist->flags & ADDRLIST_IPV6) ? T_AAAA : T_A) == qtype && + (local_query || filter_zone(zone, flag, &addrlist->addr))) + { ++#ifdef HAVE_IPV6 ++ if (addrlist->flags & ADDRLIST_REVONLY) ++ continue; ++#endif + found = 1; + log_query(F_FORWARD | F_CONFIG | flag, name, &addrlist->addr, NULL); + if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, +diff --git a/src/dnsmasq.h b/src/dnsmasq.h +index ebb6b957812f..1dd61c5edba3 100644 +--- a/src/dnsmasq.h ++++ b/src/dnsmasq.h +@@ -318,6 +318,7 @@ struct ds_config { + + #define ADDRLIST_LITERAL 1 + #define ADDRLIST_IPV6 2 ++#define ADDRLIST_REVONLY 4 + + struct addrlist { + struct all_addr addr; +diff --git a/src/network.c b/src/network.c +index 99419f57951e..14d2af2ce313 100644 +--- a/src/network.c ++++ b/src/network.c +@@ -236,7 +236,7 @@ struct iface_param { + }; + + static int iface_allowed(struct iface_param *param, int if_index, char *label, +- union mysockaddr *addr, struct in_addr netmask, int prefixlen, int dad) ++ union mysockaddr *addr, struct in_addr netmask, int prefixlen, int iface_flags) + { + struct irec *iface; + int mtu = 0, loopback; +@@ -388,6 +388,10 @@ static int iface_allowed(struct iface_param *param, int if_index, char *label, + { + al->addr.addr.addr6 = addr->in6.sin6_addr; + al->flags = ADDRLIST_IPV6; ++ /* Privacy addresses and addresses still undergoing DAD and deprecated addresses ++ don't appear in forward queries, but will in reverse ones. */ ++ if (!(iface_flags & IFACE_PERMANENT) || (iface_flags & (IFACE_DEPRECATED | IFACE_TENTATIVE))) ++ al->flags |= ADDRLIST_REVONLY; + } + #endif + } +@@ -399,7 +403,7 @@ static int iface_allowed(struct iface_param *param, int if_index, char *label, + for (iface = daemon->interfaces; iface; iface = iface->next) + if (sockaddr_isequal(&iface->addr, addr)) + { +- iface->dad = dad; ++ iface->dad = !!(iface_flags & IFACE_TENTATIVE); + iface->found = 1; /* for garbage collection */ + return 1; + } +@@ -474,7 +478,7 @@ static int iface_allowed(struct iface_param *param, int if_index, char *label, + iface->dhcp_ok = dhcp_ok; + iface->dns_auth = auth_dns; + iface->mtu = mtu; +- iface->dad = dad; ++ iface->dad = !!(iface_flags & IFACE_TENTATIVE); + iface->found = 1; + iface->done = iface->multicast_done = iface->warned = 0; + iface->index = if_index; +@@ -519,7 +523,7 @@ static int iface_allowed_v6(struct in6_addr *local, int prefix, + else + addr.in6.sin6_scope_id = 0; + +- return iface_allowed((struct iface_param *)vparam, if_index, NULL, &addr, netmask, prefix, !!(flags & IFACE_TENTATIVE)); ++ return iface_allowed((struct iface_param *)vparam, if_index, NULL, &addr, netmask, prefix, flags); + } + #endif + +diff --git a/src/rfc1035.c b/src/rfc1035.c +index 8a7d2608dac5..bdeb3fb10e68 100644 +--- a/src/rfc1035.c ++++ b/src/rfc1035.c +@@ -1923,14 +1923,17 @@ size_t answer_request(struct dns_header *header, char *limit, size_t qlen, + for (intr = daemon->int_names; intr; intr = intr->next) + if (hostname_isequal(name, intr->name)) + { +- ans = 1; +- if (!dryrun) +- { +- +- for (addrlist = intr->addr; addrlist; addrlist = addrlist->next) ++ for (addrlist = intr->addr; addrlist; addrlist = addrlist->next) + #ifdef HAVE_IPV6 +- if (((addrlist->flags & ADDRLIST_IPV6) ? T_AAAA : T_A) == type) ++ if (((addrlist->flags & ADDRLIST_IPV6) ? T_AAAA : T_A) == type) + #endif ++ { ++#ifdef HAVE_IPV6 ++ if (addrlist->flags & ADDRLIST_REVONLY) ++ continue; ++#endif ++ ans = 1; ++ if (!dryrun) + { + gotit = 1; + log_query(F_FORWARD | F_CONFIG | flag, name, &addrlist->addr, NULL); +@@ -1939,7 +1942,7 @@ size_t answer_request(struct dns_header *header, char *limit, size_t qlen, + type == T_A ? "4" : "6", &addrlist->addr)) + anscount++; + } +- } ++ } + } + + if (!dryrun && !gotit) +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0016-Tweak-field-width-in-cache-dump-to-avoid-truncating-.patch b/src/patches/dnsmasq/0016-Tweak-field-width-in-cache-dump-to-avoid-truncating-.patch new file mode 100644 index 0000000000..d072c0379d --- /dev/null +++ b/src/patches/dnsmasq/0016-Tweak-field-width-in-cache-dump-to-avoid-truncating-.patch @@ -0,0 +1,35 @@ +From 3267804598047bd1781cab91508d1bc516e5ddbb Mon Sep 17 00:00:00 2001 +From: Simon Kelley +Date: Wed, 17 Dec 2014 20:38:20 +0000 +Subject: [PATCH 16/55] Tweak field width in cache dump to avoid truncating + IPv6 addresses. + +--- + src/cache.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/cache.c b/src/cache.c +index 2c3a49887053..f9e1d31e8c99 100644 +--- a/src/cache.c ++++ b/src/cache.c +@@ -1411,7 +1411,7 @@ void dump_cache(time_t now) + *a = 0; + if (strlen(n) == 0 && !(cache->flags & F_REVERSE)) + n = ""; +- p += sprintf(p, "%-40.40s ", n); ++ p += sprintf(p, "%-30.30s ", n); + if ((cache->flags & F_CNAME) && !is_outdated_cname_pointer(cache)) + a = cache_get_cname_target(cache); + #ifdef HAVE_DNSSEC +@@ -1454,7 +1454,7 @@ void dump_cache(time_t now) + else if (cache->flags & F_DNSKEY) + t = "K"; + #endif +- p += sprintf(p, "%-30.30s %s%s%s%s%s%s%s%s%s ", a, t, ++ p += sprintf(p, "%-40.40s %s%s%s%s%s%s%s%s%s ", a, t, + cache->flags & F_FORWARD ? "F" : " ", + cache->flags & F_REVERSE ? "R" : " ", + cache->flags & F_IMMORTAL ? "I" : " ", +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0017-Fix-crash-in-DNSSEC-code-when-attempting-to-verify-l.patch b/src/patches/dnsmasq/0017-Fix-crash-in-DNSSEC-code-when-attempting-to-verify-l.patch new file mode 100644 index 0000000000..944afaf15d --- /dev/null +++ b/src/patches/dnsmasq/0017-Fix-crash-in-DNSSEC-code-when-attempting-to-verify-l.patch @@ -0,0 +1,100 @@ +From 094b5c3d904bae9aeb3206d9f3b8348926b84975 Mon Sep 17 00:00:00 2001 +From: Simon Kelley +Date: Sun, 21 Dec 2014 16:11:52 +0000 +Subject: [PATCH 17/55] Fix crash in DNSSEC code when attempting to verify + large RRs. + +--- + CHANGELOG | 3 +++ + src/dnssec.c | 27 +++++++++++++++++++-------- + 2 files changed, 22 insertions(+), 8 deletions(-) + +diff --git a/CHANGELOG b/CHANGELOG +index 01f5208ec006..956b71a151db 100644 +--- a/CHANGELOG ++++ b/CHANGELOG +@@ -19,6 +19,9 @@ version 2.73 + the answers given by --interface-name. Note that reverse queries + (ie looking for names, given addresses) are not affected. + Thanks to Michael Gorbach for the suggestion. ++ ++ Fix crash in DNSSEC code with long RRs. Thanks to Marco Davids ++ for the bug report. + + + version 2.72 +diff --git a/src/dnssec.c b/src/dnssec.c +index 69bfc29e355f..3208ac701149 100644 +--- a/src/dnssec.c ++++ b/src/dnssec.c +@@ -456,16 +456,27 @@ static u16 *get_desc(int type) + + /* Return bytes of canonicalised rdata, when the return value is zero, the remaining + data, pointed to by *p, should be used raw. */ +-static int get_rdata(struct dns_header *header, size_t plen, unsigned char *end, char *buff, ++static int get_rdata(struct dns_header *header, size_t plen, unsigned char *end, char *buff, int bufflen, + unsigned char **p, u16 **desc) + { + int d = **desc; + +- (*desc)++; +- + /* No more data needs mangling */ + if (d == (u16)-1) +- return 0; ++ { ++ /* If there's more data than we have space for, just return what fits, ++ we'll get called again for more chunks */ ++ if (end - *p > bufflen) ++ { ++ memcpy(buff, *p, bufflen); ++ *p += bufflen; ++ return bufflen; ++ } ++ ++ return 0; ++ } ++ ++ (*desc)++; + + if (d == 0 && extract_name(header, plen, p, buff, 1, 0)) + /* domain-name, canonicalise */ +@@ -560,7 +571,7 @@ static void sort_rrset(struct dns_header *header, size_t plen, u16 *rr_desc, int + if (left1 != 0) + memmove(buff1, buff1 + len1 - left1, left1); + +- if ((len1 = get_rdata(header, plen, end1, buff1 + left1, &p1, &dp1)) == 0) ++ if ((len1 = get_rdata(header, plen, end1, buff1 + left1, MAXDNAME - left1, &p1, &dp1)) == 0) + { + quit = 1; + len1 = end1 - p1; +@@ -571,7 +582,7 @@ static void sort_rrset(struct dns_header *header, size_t plen, u16 *rr_desc, int + if (left2 != 0) + memmove(buff2, buff2 + len2 - left2, left2); + +- if ((len2 = get_rdata(header, plen, end2, buff2 + left2, &p2, &dp2)) == 0) ++ if ((len2 = get_rdata(header, plen, end2, buff2 + left2, MAXDNAME - left2, &p2, &dp2)) == 0) + { + quit = 1; + len2 = end2 - p2; +@@ -808,7 +819,7 @@ static int validate_rrset(time_t now, struct dns_header *header, size_t plen, in + /* canonicalise rdata and calculate length of same, use name buffer as workspace */ + cp = p; + dp = rr_desc; +- for (len = 0; (seg = get_rdata(header, plen, end, name, &cp, &dp)) != 0; len += seg); ++ for (len = 0; (seg = get_rdata(header, plen, end, name, MAXDNAME, &cp, &dp)) != 0; len += seg); + len += end - cp; + len = htons(len); + hash->update(ctx, 2, (unsigned char *)&len); +@@ -816,7 +827,7 @@ static int validate_rrset(time_t now, struct dns_header *header, size_t plen, in + /* Now canonicalise again and digest. */ + cp = p; + dp = rr_desc; +- while ((seg = get_rdata(header, plen, end, name, &cp, &dp))) ++ while ((seg = get_rdata(header, plen, end, name, MAXDNAME, &cp, &dp))) + hash->update(ctx, seg, (unsigned char *)name); + if (cp != end) + hash->update(ctx, end - cp, cp); +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0018-Make-caching-work-for-CNAMEs-pointing-to-A-AAAA-reco.patch b/src/patches/dnsmasq/0018-Make-caching-work-for-CNAMEs-pointing-to-A-AAAA-reco.patch new file mode 100644 index 0000000000..de66adb9bc --- /dev/null +++ b/src/patches/dnsmasq/0018-Make-caching-work-for-CNAMEs-pointing-to-A-AAAA-reco.patch @@ -0,0 +1,99 @@ +From cbc652423403e3cef00e00240f6beef713142246 Mon Sep 17 00:00:00 2001 +From: Simon Kelley +Date: Sun, 21 Dec 2014 21:21:53 +0000 +Subject: [PATCH 18/55] Make caching work for CNAMEs pointing to A/AAAA records + shadowed in /etc/hosts + +If the answer to an upstream query is a CNAME which points to an +A/AAAA record which also exists in /etc/hosts and friends, then +caching is suppressed, to avoid inconsistent answers. This is +now modified to allow caching when the upstream and local A/AAAA +records have the same value. +--- + src/cache.c | 34 +++++++++++++++++++++++++--------- + 1 file changed, 25 insertions(+), 9 deletions(-) + +diff --git a/src/cache.c b/src/cache.c +index f9e1d31e8c99..ff1ca6f1c352 100644 +--- a/src/cache.c ++++ b/src/cache.c +@@ -322,7 +322,7 @@ static int is_expired(time_t now, struct crec *crecp) + return 1; + } + +-static int cache_scan_free(char *name, struct all_addr *addr, time_t now, unsigned short flags) ++static struct crec *cache_scan_free(char *name, struct all_addr *addr, time_t now, unsigned short flags) + { + /* Scan and remove old entries. + If (flags & F_FORWARD) then remove any forward entries for name and any expired +@@ -331,8 +331,8 @@ static int cache_scan_free(char *name, struct all_addr *addr, time_t now, unsign + entries in the whole cache. + If (flags == 0) remove any expired entries in the whole cache. + +- In the flags & F_FORWARD case, the return code is valid, and returns zero if the +- name exists in the cache as a HOSTS or DHCP entry (these are never deleted) ++ In the flags & F_FORWARD case, the return code is valid, and returns a non-NULL pointer ++ to a cache entry if the name exists in the cache as a HOSTS or DHCP entry (these are never deleted) + + We take advantage of the fact that hash chains have stuff in the order ,, + so that when we hit an entry which isn't reverse and is immortal, we're done. */ +@@ -361,7 +361,7 @@ static int cache_scan_free(char *name, struct all_addr *addr, time_t now, unsign + (((crecp->flags | flags) & F_CNAME) && !(crecp->flags & (F_DNSKEY | F_DS)))) + { + if (crecp->flags & (F_HOSTS | F_DHCP | F_CONFIG)) +- return 0; ++ return crecp; + *up = crecp->hash_next; + cache_unlink(crecp); + cache_free(crecp); +@@ -378,7 +378,7 @@ static int cache_scan_free(char *name, struct all_addr *addr, time_t now, unsign + crecp->addr.sig.type_covered == addr->addr.dnssec.type)) + { + if (crecp->flags & F_CONFIG) +- return 0; ++ return crecp; + *up = crecp->hash_next; + cache_unlink(crecp); + cache_free(crecp); +@@ -423,7 +423,7 @@ static int cache_scan_free(char *name, struct all_addr *addr, time_t now, unsign + up = &crecp->hash_next; + } + +- return 1; ++ return NULL; + } + + /* Note: The normal calling sequence is +@@ -471,10 +471,26 @@ struct crec *cache_insert(char *name, struct all_addr *addr, + return NULL; + + /* First remove any expired entries and entries for the name/address we +- are currently inserting. Fail if we attempt to delete a name from +- /etc/hosts or DHCP. */ +- if (!cache_scan_free(name, addr, now, flags)) ++ are currently inserting. */ ++ if ((new = cache_scan_free(name, addr, now, flags))) + { ++ /* We're trying to insert a record over one from ++ /etc/hosts or DHCP, or other config. If the ++ existing record is for an A or AAAA and ++ the record we're trying to insert is the same, ++ just drop the insert, but don't error the whole process. */ ++ if ((flags & (F_IPV4 | F_IPV6)) && (flags & F_FORWARD)) ++ { ++ if ((flags & F_IPV4) && (new->flags & F_IPV4) && ++ new->addr.addr.addr.addr4.s_addr == addr->addr.addr4.s_addr) ++ return new; ++#ifdef HAVE_IPV6 ++ else if ((flags & F_IPV6) && (new->flags & F_IPV6) && ++ IN6_ARE_ADDR_EQUAL(&new->addr.addr.addr.addr6, &addr->addr.addr6)) ++ return new; ++#endif ++ } ++ + insert_error = 1; + return NULL; + } +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0019-Fix-problems-validating-NSEC3-and-wildcards.patch b/src/patches/dnsmasq/0019-Fix-problems-validating-NSEC3-and-wildcards.patch new file mode 100644 index 0000000000..0ee2e657b7 --- /dev/null +++ b/src/patches/dnsmasq/0019-Fix-problems-validating-NSEC3-and-wildcards.patch @@ -0,0 +1,365 @@ +From fbc5205702c7f6f431d9f1043c553d7fb62ddfdb Mon Sep 17 00:00:00 2001 +From: Simon Kelley +Date: Tue, 23 Dec 2014 15:46:08 +0000 +Subject: [PATCH 19/55] Fix problems validating NSEC3 and wildcards. + +--- + src/dnssec.c | 253 ++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 128 insertions(+), 125 deletions(-) + +diff --git a/src/dnssec.c b/src/dnssec.c +index 3208ac701149..9350d3e8c963 100644 +--- a/src/dnssec.c ++++ b/src/dnssec.c +@@ -615,6 +615,7 @@ static void sort_rrset(struct dns_header *header, size_t plen, u16 *rr_desc, int + Return code: + STAT_SECURE if it validates. + STAT_SECURE_WILDCARD if it validates and is the result of wildcard expansion. ++ (In this case *wildcard_out points to the "body" of the wildcard within name.) + STAT_NO_SIG no RRsigs found. + STAT_INSECURE RRset empty. + STAT_BOGUS signature is wrong, bad packet. +@@ -625,8 +626,8 @@ static void sort_rrset(struct dns_header *header, size_t plen, u16 *rr_desc, int + + name is unchanged on exit. keyname is used as workspace and trashed. + */ +-static int validate_rrset(time_t now, struct dns_header *header, size_t plen, int class, +- int type, char *name, char *keyname, struct blockdata *key, int keylen, int algo_in, int keytag_in) ++static int validate_rrset(time_t now, struct dns_header *header, size_t plen, int class, int type, ++ char *name, char *keyname, char **wildcard_out, struct blockdata *key, int keylen, int algo_in, int keytag_in) + { + static unsigned char **rrset = NULL, **sigs = NULL; + static int rrset_sz = 0, sig_sz = 0; +@@ -798,8 +799,16 @@ static int validate_rrset(time_t now, struct dns_header *header, size_t plen, in + { + int k; + for (k = name_labels - labels; k != 0; k--) +- while (*name_start != '.' && *name_start != 0) +- name_start++; ++ { ++ while (*name_start != '.' && *name_start != 0) ++ name_start++; ++ if (k != 1) ++ name_start++; ++ } ++ ++ if (wildcard_out) ++ *wildcard_out = name_start+1; ++ + name_start--; + *name_start = '*'; + } +@@ -974,7 +983,7 @@ int dnssec_validate_by_ds(time_t now, struct dns_header *header, size_t plen, ch + if (recp1->addr.ds.keylen == (int)hash->digest_size && + (ds_digest = blockdata_retrieve(recp1->addr.key.keydata, recp1->addr.ds.keylen, NULL)) && + memcmp(ds_digest, digest, recp1->addr.ds.keylen) == 0 && +- validate_rrset(now, header, plen, class, T_DNSKEY, name, keyname, key, rdlen - 4, algo, keytag) == STAT_SECURE) ++ validate_rrset(now, header, plen, class, T_DNSKEY, name, keyname, NULL, key, rdlen - 4, algo, keytag) == STAT_SECURE) + { + valid = 1; + break; +@@ -1443,11 +1452,88 @@ static int base32_decode(char *in, unsigned char *out) + return p - out; + } + ++static int check_nsec3_coverage(struct dns_header *header, size_t plen, int digest_len, unsigned char *digest, int type, ++ char *workspace1, char *workspace2, unsigned char **nsecs, int nsec_count) ++{ ++ int i, hash_len, salt_len, base32_len, rdlen; ++ unsigned char *p, *psave; ++ ++ for (i = 0; i < nsec_count; i++) ++ if ((p = nsecs[i])) ++ { ++ if (!extract_name(header, plen, &p, workspace1, 1, 0) || ++ !(base32_len = base32_decode(workspace1, (unsigned char *)workspace2))) ++ return 0; ++ ++ p += 8; /* class, type, TTL */ ++ GETSHORT(rdlen, p); ++ psave = p; ++ p += 4; /* algo, flags, iterations */ ++ salt_len = *p++; /* salt_len */ ++ p += salt_len; /* salt */ ++ hash_len = *p++; /* p now points to next hashed name */ ++ ++ if (!CHECK_LEN(header, p, plen, hash_len)) ++ return 0; ++ ++ if (digest_len == base32_len && hash_len == base32_len) ++ { ++ int rc = memcmp(workspace2, digest, digest_len); ++ ++ if (rc == 0) ++ { ++ /* We found an NSEC3 whose hashed name exactly matches the query, so ++ we just need to check the type map. p points to the RR data for the record. */ ++ ++ int offset = (type & 0xff) >> 3; ++ int mask = 0x80 >> (type & 0x07); ++ ++ p += hash_len; /* skip next-domain hash */ ++ rdlen -= p - psave; ++ ++ if (!CHECK_LEN(header, p, plen, rdlen)) ++ return 0; ++ ++ while (rdlen >= 2) ++ { ++ if (p[0] == type >> 8) ++ { ++ /* Does the NSEC3 say our type exists? */ ++ if (offset < p[1] && (p[offset+2] & mask) != 0) ++ return STAT_BOGUS; ++ ++ break; /* finshed checking */ ++ } ++ ++ rdlen -= p[1]; ++ p += p[1]; ++ } ++ ++ return 1; ++ } ++ else if (rc <= 0) ++ { ++ /* Normal case, hash falls between NSEC3 name-hash and next domain name-hash, ++ wrap around case, name-hash falls between NSEC3 name-hash and end */ ++ if (memcmp(p, digest, digest_len) > 0 || memcmp(workspace2, p, digest_len) > 0) ++ return 1; ++ } ++ else ++ { ++ /* wrap around case, name falls between start and next domain name */ ++ if (memcmp(workspace2, p, digest_len) > 0 && memcmp(p, digest, digest_len) > 0) ++ return 1; ++ } ++ } ++ } ++ return 0; ++} ++ + static int prove_non_existence_nsec3(struct dns_header *header, size_t plen, unsigned char **nsecs, int nsec_count, +- char *workspace1, char *workspace2, char *name, int type) ++ char *workspace1, char *workspace2, char *name, int type, char *wildname) + { + unsigned char *salt, *p, *digest; +- int digest_len, i, iterations, salt_len, hash_len, base32_len, algo = 0; ++ int digest_len, i, iterations, salt_len, base32_len, algo = 0; + struct nettle_hash const *hash; + char *closest_encloser, *next_closest, *wildcard; + +@@ -1520,7 +1606,14 @@ static int prove_non_existence_nsec3(struct dns_header *header, size_t plen, uns + if (!(hash = hash_find("sha1"))) + return STAT_BOGUS; + +- /* Now, we need the "closest encloser NSEC3" */ ++ if ((digest_len = hash_name(name, &digest, hash, salt, salt_len, iterations)) == 0) ++ return STAT_BOGUS; ++ ++ if (check_nsec3_coverage(header, plen, digest_len, digest, type, workspace1, workspace2, nsecs, nsec_count)) ++ return STAT_SECURE; ++ ++ /* Can't find an NSEC3 which covers the name directly, we need the "closest encloser NSEC3" ++ or an answer inferred from a wildcard record. */ + closest_encloser = name; + next_closest = NULL; + +@@ -1529,6 +1622,9 @@ static int prove_non_existence_nsec3(struct dns_header *header, size_t plen, uns + if (*closest_encloser == '.') + closest_encloser++; + ++ if (wildname && hostname_isequal(closest_encloser, wildname)) ++ break; ++ + if ((digest_len = hash_name(closest_encloser, &digest, hash, salt, salt_len, iterations)) == 0) + return STAT_BOGUS; + +@@ -1551,127 +1647,33 @@ static int prove_non_existence_nsec3(struct dns_header *header, size_t plen, uns + } + while ((closest_encloser = strchr(closest_encloser, '.'))); + +- /* No usable NSEC3s */ +- if (i == nsec_count) ++ if (!closest_encloser) + return STAT_BOGUS; + +- if (!next_closest) +- { +- /* We found an NSEC3 whose hashed name exactly matches the query, so +- Now we just need to check the type map. p points to the RR data for the record. */ +- int rdlen; +- unsigned char *psave; +- int offset = (type & 0xff) >> 3; +- int mask = 0x80 >> (type & 0x07); +- +- p += 8; /* class, type, TTL */ +- GETSHORT(rdlen, p); +- psave = p; +- p += 5 + salt_len; /* algo, flags, iterations, salt_len, salt */ +- hash_len = *p++; +- if (!CHECK_LEN(header, p, plen, hash_len)) +- return STAT_BOGUS; /* bad packet */ +- p += hash_len; +- rdlen -= p - psave; +- +- while (rdlen >= 2) +- { +- if (!CHECK_LEN(header, p, plen, rdlen)) +- return STAT_BOGUS; +- +- if (p[0] == type >> 8) +- { +- /* Does the NSEC3 say our type exists? */ +- if (offset < p[1] && (p[offset+2] & mask) != 0) +- return STAT_BOGUS; +- +- break; /* finshed checking */ +- } +- +- rdlen -= p[1]; +- p += p[1]; +- } +- +- return STAT_SECURE; +- } +- + /* Look for NSEC3 that proves the non-existence of the next-closest encloser */ + if ((digest_len = hash_name(next_closest, &digest, hash, salt, salt_len, iterations)) == 0) + return STAT_BOGUS; + +- for (i = 0; i < nsec_count; i++) +- if ((p = nsecs[i])) +- { +- if (!extract_name(header, plen, &p, workspace1, 1, 0) || +- !(base32_len = base32_decode(workspace1, (unsigned char *)workspace2))) +- return STAT_BOGUS; +- +- p += 15 + salt_len; /* class, type, TTL, rdlen, algo, flags, iterations, salt_len, salt */ +- hash_len = *p++; /* p now points to next hashed name */ +- +- if (!CHECK_LEN(header, p, plen, hash_len)) +- return STAT_BOGUS; +- +- if (digest_len == base32_len && hash_len == base32_len) +- { +- if (memcmp(workspace2, digest, digest_len) <= 0) +- { +- /* Normal case, hash falls between NSEC3 name-hash and next domain name-hash, +- wrap around case, name-hash falls between NSEC3 name-hash and end */ +- if (memcmp(p, digest, digest_len) > 0 || memcmp(workspace2, p, digest_len) > 0) +- return STAT_SECURE; +- } +- else +- { +- /* wrap around case, name falls between start and next domain name */ +- if (memcmp(workspace2, p, digest_len) > 0 && memcmp(p, digest, digest_len) > 0) +- return STAT_SECURE; +- } +- } +- } +- +- /* Finally, check that there's no seat of wildcard synthesis */ +- if (!(wildcard = strchr(next_closest, '.')) || wildcard == next_closest) +- return STAT_BOGUS; +- +- wildcard--; +- *wildcard = '*'; +- +- if ((digest_len = hash_name(wildcard, &digest, hash, salt, salt_len, iterations)) == 0) ++ if (!check_nsec3_coverage(header, plen, digest_len, digest, type, workspace1, workspace2, nsecs, nsec_count)) + return STAT_BOGUS; + +- for (i = 0; i < nsec_count; i++) +- if ((p = nsecs[i])) +- { +- if (!extract_name(header, plen, &p, workspace1, 1, 0) || +- !(base32_len = base32_decode(workspace1, (unsigned char *)workspace2))) +- return STAT_BOGUS; +- +- p += 15 + salt_len; /* class, type, TTL, rdlen, algo, flags, iterations, salt_len, salt */ +- hash_len = *p++; /* p now points to next hashed name */ +- +- if (!CHECK_LEN(header, p, plen, hash_len)) +- return STAT_BOGUS; +- +- if (digest_len == base32_len && hash_len == base32_len) +- { +- if (memcmp(workspace2, digest, digest_len) <= 0) +- { +- /* Normal case, hash falls between NSEC3 name-hash and next domain name-hash, +- wrap around case, name-hash falls between NSEC3 name-hash and end */ +- if (memcmp(p, digest, digest_len) > 0 || memcmp(workspace2, p, digest_len) > 0) +- return STAT_SECURE; +- } +- else +- { +- /* wrap around case, name falls between start and next domain name */ +- if (memcmp(workspace2, p, digest_len) > 0 && memcmp(p, digest, digest_len) > 0) +- return STAT_SECURE; +- } +- } +- } ++ /* Finally, check that there's no seat of wildcard synthesis */ ++ if (!wildname) ++ { ++ if (!(wildcard = strchr(next_closest, '.')) || wildcard == next_closest) ++ return STAT_BOGUS; ++ ++ wildcard--; ++ *wildcard = '*'; ++ ++ if ((digest_len = hash_name(wildcard, &digest, hash, salt, salt_len, iterations)) == 0) ++ return STAT_BOGUS; ++ ++ if (!check_nsec3_coverage(header, plen, digest_len, digest, type, workspace1, workspace2, nsecs, nsec_count)) ++ return STAT_BOGUS; ++ } + +- return STAT_BOGUS; ++ return STAT_SECURE; + } + + /* Validate all the RRsets in the answer and authority sections of the reply (4035:3.2.3) */ +@@ -1792,8 +1794,9 @@ int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, ch + struct all_addr a; + struct blockdata *key; + struct crec *crecp; +- +- rc = validate_rrset(now, header, plen, class1, type1, name, keyname, NULL, 0, 0, 0); ++ char *wildname; ++ ++ rc = validate_rrset(now, header, plen, class1, type1, name, keyname, &wildname, NULL, 0, 0, 0); + + if (rc == STAT_SECURE_WILDCARD) + { +@@ -1807,7 +1810,7 @@ int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, ch + if (nsec_type == T_NSEC) + rc = prove_non_existence_nsec(header, plen, nsecs, nsec_count, daemon->workspacename, keyname, name, type1); + else +- rc = prove_non_existence_nsec3(header, plen, nsecs, nsec_count, daemon->workspacename, keyname, name, type1); ++ rc = prove_non_existence_nsec3(header, plen, nsecs, nsec_count, daemon->workspacename, keyname, name, type1, wildname); + + if (rc != STAT_SECURE) + return rc; +@@ -1933,7 +1936,7 @@ int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, ch + if (nsec_type == T_NSEC) + return prove_non_existence_nsec(header, plen, nsecs, nsec_count, daemon->workspacename, keyname, name, qtype); + else +- return prove_non_existence_nsec3(header, plen, nsecs, nsec_count, daemon->workspacename, keyname, name, qtype); ++ return prove_non_existence_nsec3(header, plen, nsecs, nsec_count, daemon->workspacename, keyname, name, qtype, NULL); + } + + /* Chase the CNAME chain in the packet until the first record which _doesn't validate. +@@ -1980,7 +1983,7 @@ int dnssec_chase_cname(time_t now, struct dns_header *header, size_t plen, char + return STAT_INSECURE; + + /* validate CNAME chain, return if insecure or need more data */ +- rc = validate_rrset(now, header, plen, class, type, name, keyname, NULL, 0, 0, 0); ++ rc = validate_rrset(now, header, plen, class, type, name, keyname, NULL, NULL, 0, 0, 0); + if (rc != STAT_SECURE) + { + if (rc == STAT_NO_SIG) +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0020-Initialise-return-value.patch b/src/patches/dnsmasq/0020-Initialise-return-value.patch new file mode 100644 index 0000000000..2f70ee5873 --- /dev/null +++ b/src/patches/dnsmasq/0020-Initialise-return-value.patch @@ -0,0 +1,32 @@ +From 83d2ed09fc0216b567d7fb2197e4ff3eae150b0d Mon Sep 17 00:00:00 2001 +From: Simon Kelley +Date: Tue, 23 Dec 2014 18:42:38 +0000 +Subject: [PATCH 20/55] Initialise return value. + +--- + src/dnssec.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/dnssec.c b/src/dnssec.c +index 9350d3e8c963..ed8cf893bad2 100644 +--- a/src/dnssec.c ++++ b/src/dnssec.c +@@ -637,10 +637,13 @@ static int validate_rrset(time_t now, struct dns_header *header, size_t plen, in + struct crec *crecp = NULL; + int type_covered, algo, labels, orig_ttl, sig_expiration, sig_inception, key_tag; + u16 *rr_desc = get_desc(type); +- ++ ++ if (wildcard_out) ++ *wildcard_out = NULL; ++ + if (!(p = skip_questions(header, plen))) + return STAT_BOGUS; +- ++ + name_labels = count_labels(name); /* For 4035 5.3.2 check */ + + /* look for RRSIGs for this RRset and get pointers to each RR in the set. */ +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0021-Add-ignore-address-option.patch b/src/patches/dnsmasq/0021-Add-ignore-address-option.patch new file mode 100644 index 0000000000..6c88f2d188 --- /dev/null +++ b/src/patches/dnsmasq/0021-Add-ignore-address-option.patch @@ -0,0 +1,192 @@ +From 32fc6dbe03569d70dd394420ceb73532cf303c33 Mon Sep 17 00:00:00 2001 +From: Glen Huang +Date: Sat, 27 Dec 2014 15:28:12 +0000 +Subject: [PATCH 21/55] Add --ignore-address option. + +--- + CHANGELOG | 8 ++++++++ + man/dnsmasq.8 | 6 ++++++ + src/dnsmasq.h | 3 ++- + src/forward.c | 4 ++++ + src/option.c | 18 +++++++++++++++--- + src/rfc1035.c | 37 +++++++++++++++++++++++++++++++++++++ + 6 files changed, 72 insertions(+), 4 deletions(-) + +diff --git a/CHANGELOG b/CHANGELOG +index 956b71a151db..2b6356bcfb02 100644 +--- a/CHANGELOG ++++ b/CHANGELOG +@@ -22,6 +22,14 @@ version 2.73 + + Fix crash in DNSSEC code with long RRs. Thanks to Marco Davids + for the bug report. ++ ++ Add --ignore-address option. Ignore replies to A-record ++ queries which include the specified address. No error is ++ generated, dnsmasq simply continues to listen for another ++ reply. This is useful to defeat blocking strategies which ++ rely on quickly supplying a forged answer to a DNS ++ request for certain domains, before the correct answer can ++ arrive. Thanks to Glen Huang for the patch. + + + version 2.72 +diff --git a/man/dnsmasq.8 b/man/dnsmasq.8 +index 0b8e04f0a897..4236ba307df3 100644 +--- a/man/dnsmasq.8 ++++ b/man/dnsmasq.8 +@@ -293,6 +293,12 @@ an advertising web page in response to queries for unregistered names, + instead of the correct NXDOMAIN response. This option tells dnsmasq to + fake the correct response when it sees this behaviour. As at Sept 2003 + the IP address being returned by Verisign is 64.94.110.11 ++.TP ++.B \-B, --ignore-address= ++Ignore replies to A-record queries which include the specified address. ++No error is generated, dnsmasq simply continues to listen for another reply. ++This is useful to defeat blocking strategies which rely on quickly supplying a ++forged answer to a DNS request for certain domain, before the correct answer can arrive. + .TP + .B \-f, --filterwin2k + Later versions of windows make periodic DNS requests which don't get sensible answers from +diff --git a/src/dnsmasq.h b/src/dnsmasq.h +index 1dd61c5edba3..7bc982ddf73c 100644 +--- a/src/dnsmasq.h ++++ b/src/dnsmasq.h +@@ -930,7 +930,7 @@ extern struct daemon { + char *runfile; + char *lease_change_command; + struct iname *if_names, *if_addrs, *if_except, *dhcp_except, *auth_peers, *tftp_interfaces; +- struct bogus_addr *bogus_addr; ++ struct bogus_addr *bogus_addr, *ignore_addr; + struct server *servers; + struct ipsets *ipsets; + int log_fac; /* log facility */ +@@ -1093,6 +1093,7 @@ size_t answer_request(struct dns_header *header, char *limit, size_t qlen, + time_t now, int *ad_reqd, int *do_bit); + int check_for_bogus_wildcard(struct dns_header *header, size_t qlen, char *name, + struct bogus_addr *addr, time_t now); ++int check_for_ignored_address(struct dns_header *header, size_t qlen, struct bogus_addr *baddr); + unsigned char *find_pseudoheader(struct dns_header *header, size_t plen, + size_t *len, unsigned char **p, int *is_sign); + int check_for_local_domain(char *name, time_t now); +diff --git a/src/forward.c b/src/forward.c +index 408a179a20f4..f28c7d51f708 100644 +--- a/src/forward.c ++++ b/src/forward.c +@@ -724,6 +724,10 @@ void reply_query(int fd, int family, time_t now) + if (!(forward = lookup_frec(ntohs(header->id), hash))) + return; + ++ if (daemon->ignore_addr && RCODE(header) == NOERROR && ++ check_for_ignored_address(header, n, daemon->ignore_addr)) ++ return; ++ + if ((RCODE(header) == SERVFAIL || RCODE(header) == REFUSED) && + !option_bool(OPT_ORDER) && + forward->forwardall == 0) +diff --git a/src/option.c b/src/option.c +index 209fa6976609..907d0cf88de9 100644 +--- a/src/option.c ++++ b/src/option.c +@@ -147,6 +147,7 @@ struct myoption { + #define LOPT_LOCAL_SERVICE 335 + #define LOPT_DNSSEC_TIME 336 + #define LOPT_LOOP_DETECT 337 ++#define LOPT_IGNORE_ADDR 338 + + #ifdef HAVE_GETOPT_LONG + static const struct option opts[] = +@@ -181,6 +182,7 @@ static const struct myoption opts[] = + { "local-service", 0, 0, LOPT_LOCAL_SERVICE }, + { "bogus-priv", 0, 0, 'b' }, + { "bogus-nxdomain", 1, 0, 'B' }, ++ { "ignore-address", 1, 0, LOPT_IGNORE_ADDR }, + { "selfmx", 0, 0, 'e' }, + { "filterwin2k", 0, 0, 'f' }, + { "pid-file", 2, 0, 'x' }, +@@ -457,6 +459,7 @@ static struct { + { LOPT_QUIET_RA, OPT_QUIET_RA, NULL, gettext_noop("Do not log RA."), NULL }, + { LOPT_LOCAL_SERVICE, OPT_LOCAL_SERVICE, NULL, gettext_noop("Accept queries only from directly-connected networks"), NULL }, + { LOPT_LOOP_DETECT, OPT_LOOP_DETECT, NULL, gettext_noop("Detect and remove DNS forwarding loops"), NULL }, ++ { LOPT_IGNORE_ADDR, ARG_DUP, "", gettext_noop("Ignore DNS responses containing ipaddr."), NULL }, + { 0, 0, NULL, NULL, NULL } + }; + +@@ -2119,14 +2122,23 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma + break; + + case 'B': /* --bogus-nxdomain */ +- { ++ case LOPT_IGNORE_ADDR: /* --ignore-address */ ++ { + struct in_addr addr; + unhide_metas(arg); + if (arg && (inet_pton(AF_INET, arg, &addr) > 0)) + { + struct bogus_addr *baddr = opt_malloc(sizeof(struct bogus_addr)); +- baddr->next = daemon->bogus_addr; +- daemon->bogus_addr = baddr; ++ if (option == 'B') ++ { ++ baddr->next = daemon->bogus_addr; ++ daemon->bogus_addr = baddr; ++ } ++ else ++ { ++ baddr->next = daemon->ignore_addr; ++ daemon->ignore_addr = baddr; ++ } + baddr->addr = addr; + } + else +diff --git a/src/rfc1035.c b/src/rfc1035.c +index bdeb3fb10e68..75c4266b47dd 100644 +--- a/src/rfc1035.c ++++ b/src/rfc1035.c +@@ -1328,6 +1328,43 @@ int check_for_bogus_wildcard(struct dns_header *header, size_t qlen, char *name, + return 0; + } + ++int check_for_ignored_address(struct dns_header *header, size_t qlen, struct bogus_addr *baddr) ++{ ++ unsigned char *p; ++ int i, qtype, qclass, rdlen; ++ struct bogus_addr *baddrp; ++ ++ /* skip over questions */ ++ if (!(p = skip_questions(header, qlen))) ++ return 0; /* bad packet */ ++ ++ for (i = ntohs(header->ancount); i != 0; i--) ++ { ++ if (!(p = skip_name(p, header, qlen, 10))) ++ return 0; /* bad packet */ ++ ++ GETSHORT(qtype, p); ++ GETSHORT(qclass, p); ++ p += 4; /* TTL */ ++ GETSHORT(rdlen, p); ++ ++ if (qclass == C_IN && qtype == T_A) ++ { ++ if (!CHECK_LEN(header, p, qlen, INADDRSZ)) ++ return 0; ++ ++ for (baddrp = baddr; baddrp; baddrp = baddrp->next) ++ if (memcmp(&baddrp->addr, p, INADDRSZ) == 0) ++ return 1; ++ } ++ ++ if (!ADD_RDLEN(header, p, qlen, rdlen)) ++ return 0; ++ } ++ ++ return 0; ++} ++ + int add_resource_record(struct dns_header *header, char *limit, int *truncp, int nameoffset, unsigned char **pp, + unsigned long ttl, int *offset, unsigned short type, unsigned short class, char *format, ...) + { +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0022-Bad-packet-protection.patch b/src/patches/dnsmasq/0022-Bad-packet-protection.patch new file mode 100644 index 0000000000..1b37202c46 --- /dev/null +++ b/src/patches/dnsmasq/0022-Bad-packet-protection.patch @@ -0,0 +1,25 @@ +From 0b1008d367d44e77352134a4c5178f896f0db3e7 Mon Sep 17 00:00:00 2001 +From: Simon Kelley +Date: Sat, 27 Dec 2014 15:33:32 +0000 +Subject: [PATCH 22/55] Bad packet protection. + +--- + src/dnssec.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/dnssec.c b/src/dnssec.c +index ed8cf893bad2..026794b077e5 100644 +--- a/src/dnssec.c ++++ b/src/dnssec.c +@@ -805,7 +805,7 @@ static int validate_rrset(time_t now, struct dns_header *header, size_t plen, in + { + while (*name_start != '.' && *name_start != 0) + name_start++; +- if (k != 1) ++ if (k != 1 && *name_start == '.') + name_start++; + } + +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0023-Fix-build-failure-in-new-inotify-code-on-BSD.patch b/src/patches/dnsmasq/0023-Fix-build-failure-in-new-inotify-code-on-BSD.patch new file mode 100644 index 0000000000..3bc3f79267 --- /dev/null +++ b/src/patches/dnsmasq/0023-Fix-build-failure-in-new-inotify-code-on-BSD.patch @@ -0,0 +1,29 @@ +From d310ab7ecbffce79d3d90debba621e0222f9bced Mon Sep 17 00:00:00 2001 +From: Matthias Andree +Date: Sat, 27 Dec 2014 15:36:38 +0000 +Subject: [PATCH 23/55] Fix build failure in new inotify code on BSD. + +--- + src/inotify.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/inotify.c b/src/inotify.c +index 960bf5efb41f..83730008c11b 100644 +--- a/src/inotify.c ++++ b/src/inotify.c +@@ -15,10 +15,10 @@ + */ + + #include "dnsmasq.h" +-#include +- + #ifdef HAVE_LINUX_NETWORK + ++#include ++ + /* the strategy is to set a inotify on the directories containing + resolv files, for any files in the directory which are close-write + or moved into the directory. +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0024-Implement-makefile-dependencies-on-COPTS-variable.patch b/src/patches/dnsmasq/0024-Implement-makefile-dependencies-on-COPTS-variable.patch new file mode 100644 index 0000000000..e3074fa3e1 --- /dev/null +++ b/src/patches/dnsmasq/0024-Implement-makefile-dependencies-on-COPTS-variable.patch @@ -0,0 +1,68 @@ +From 81c538efcebfce2ce4a1d3a420b6c885b8f08df9 Mon Sep 17 00:00:00 2001 +From: Yousong Zhou +Date: Sat, 3 Jan 2015 16:36:14 +0000 +Subject: [PATCH 24/55] Implement makefile dependencies on COPTS variable. + +--- + .gitignore | 2 +- + Makefile | 10 ++++++---- + 2 files changed, 7 insertions(+), 5 deletions(-) + +diff --git a/.gitignore b/.gitignore +index fcdbcbd135ae..23f11488ab4c 100644 +--- a/.gitignore ++++ b/.gitignore +@@ -3,7 +3,7 @@ src/*.mo + src/dnsmasq.pot + src/dnsmasq + src/dnsmasq_baseline +-src/.configured ++src/.copts_* + contrib/wrt/dhcp_lease_time + contrib/wrt/dhcp_release + debian/base/ +diff --git a/Makefile b/Makefile +index c340f1c7b59a..5675f60c2036 100644 +--- a/Makefile ++++ b/Makefile +@@ -64,6 +64,8 @@ nettle_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_DNSSEC $(PKG_CONFIG + gmp_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_DNSSEC NO_GMP --copy -lgmp` + sunos_libs = `if uname | grep SunOS >/dev/null 2>&1; then echo -lsocket -lnsl -lposix4; fi` + version = -DVERSION='\"`$(top)/bld/get-version $(top)`\"' ++copts_conf = .copts_$(shell $(CC) -DDNSMASQ_COMPILE_OPTS $(COPTS) -E $(top)/$(SRC)/dnsmasq.h | \ ++ ( md5sum 2>/dev/null || md5 ) | cut -f 1 -d ' ') + + objs = cache.o rfc1035.o util.o option.o forward.o network.o \ + dnsmasq.o dhcp.o lease.o rfc2131.o netlink.o dbus.o bpf.o \ +@@ -83,7 +85,7 @@ all : $(BUILDDIR) + + mostly_clean : + rm -f $(BUILDDIR)/*.mo $(BUILDDIR)/*.pot +- rm -f $(BUILDDIR)/.configured $(BUILDDIR)/*.o $(BUILDDIR)/dnsmasq.a $(BUILDDIR)/dnsmasq ++ rm -f $(BUILDDIR)/.copts_* $(BUILDDIR)/*.o $(BUILDDIR)/dnsmasq.a $(BUILDDIR)/dnsmasq + + clean : mostly_clean + rm -f $(BUILDDIR)/dnsmasq_baseline +@@ -139,8 +141,8 @@ bloatcheck : $(BUILDDIR)/dnsmasq_baseline mostly_clean all + + # rules below are targets in recusive makes with cwd=$(BUILDDIR) + +-.configured: $(hdrs) +- @rm -f *.o ++$(copts_conf): $(hdrs) ++ @rm -f *.o .copts_* + @touch $@ + + $(objs:.o=.c) $(hdrs): +@@ -149,7 +151,7 @@ $(objs:.o=.c) $(hdrs): + .c.o: + $(CC) $(CFLAGS) $(COPTS) $(i18n) $(build_cflags) $(RPM_OPT_FLAGS) -c $< + +-dnsmasq : .configured $(hdrs) $(objs) ++dnsmasq : $(copts_conf) $(hdrs) $(objs) + $(CC) $(LDFLAGS) -o $@ $(objs) $(build_libs) $(LIBS) + + dnsmasq.pot : $(objs:.o=.c) $(hdrs) +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0025-Fix-race-condition-issue-in-makefile.patch b/src/patches/dnsmasq/0025-Fix-race-condition-issue-in-makefile.patch new file mode 100644 index 0000000000..b1c42aef41 --- /dev/null +++ b/src/patches/dnsmasq/0025-Fix-race-condition-issue-in-makefile.patch @@ -0,0 +1,30 @@ +From d8dbd903d024f84a149dac2f8a674a68dfed47a3 Mon Sep 17 00:00:00 2001 +From: Yousong Zhou +Date: Mon, 5 Jan 2015 17:03:35 +0000 +Subject: [PATCH 25/55] Fix race condition issue in makefile. + +--- + Makefile | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 5675f60c2036..bcbd5571671d 100644 +--- a/Makefile ++++ b/Makefile +@@ -148,10 +148,12 @@ $(copts_conf): $(hdrs) + $(objs:.o=.c) $(hdrs): + ln -s $(top)/$(SRC)/$@ . + ++$(objs): $(copts_conf) $(hdrs) ++ + .c.o: + $(CC) $(CFLAGS) $(COPTS) $(i18n) $(build_cflags) $(RPM_OPT_FLAGS) -c $< + +-dnsmasq : $(copts_conf) $(hdrs) $(objs) ++dnsmasq : $(objs) + $(CC) $(LDFLAGS) -o $@ $(objs) $(build_libs) $(LIBS) + + dnsmasq.pot : $(objs:.o=.c) $(hdrs) +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0026-DNSSEC-do-top-down-search-for-limit-of-secure-delega.patch b/src/patches/dnsmasq/0026-DNSSEC-do-top-down-search-for-limit-of-secure-delega.patch new file mode 100644 index 0000000000..7f01ee73e9 --- /dev/null +++ b/src/patches/dnsmasq/0026-DNSSEC-do-top-down-search-for-limit-of-secure-delega.patch @@ -0,0 +1,792 @@ +From 97e618a0e3f29465acc689d87288596b006f197e Mon Sep 17 00:00:00 2001 +From: Simon Kelley +Date: Wed, 7 Jan 2015 21:55:43 +0000 +Subject: [PATCH 26/55] DNSSEC: do top-down search for limit of secure + delegation. + +--- + CHANGELOG | 9 ++ + src/dnsmasq.h | 11 +- + src/dnssec.c | 91 +++++++++------- + src/forward.c | 327 +++++++++++++++++++++++++++++++++------------------------- + 4 files changed, 260 insertions(+), 178 deletions(-) + +diff --git a/CHANGELOG b/CHANGELOG +index 2b6356bcfb02..e8bf80f81baa 100644 +--- a/CHANGELOG ++++ b/CHANGELOG +@@ -31,7 +31,16 @@ version 2.73 + request for certain domains, before the correct answer can + arrive. Thanks to Glen Huang for the patch. + ++ Revisit the part of DNSSEC validation which determines if an ++ unsigned answer is legit, or is in some part of the DNS ++ tree which should be signed. Dnsmasq now works from the ++ DNS root downward looking for the limit of signed ++ delegations, rather than working bottom up. This is ++ both more correct, and less likely to trip over broken ++ nameservers in the unsigned parts of the DNS tree ++ which don't respond well to DNSSEC queries. + ++ + version 2.72 + Add ra-advrouter mode, for RFC-3775 mobile IPv6 support. + +diff --git a/src/dnsmasq.h b/src/dnsmasq.h +index 7bc982ddf73c..2f4597294a56 100644 +--- a/src/dnsmasq.h ++++ b/src/dnsmasq.h +@@ -569,8 +569,9 @@ struct hostsfile { + #define STAT_SECURE_WILDCARD 7 + #define STAT_NO_SIG 8 + #define STAT_NO_DS 9 +-#define STAT_NEED_DS_NEG 10 +-#define STAT_CHASE_CNAME 11 ++#define STAT_NO_NS 10 ++#define STAT_NEED_DS_NEG 11 ++#define STAT_CHASE_CNAME 12 + + #define FREC_NOREBIND 1 + #define FREC_CHECKING_DISABLED 2 +@@ -604,7 +605,9 @@ struct frec { + #ifdef HAVE_DNSSEC + int class, work_counter; + struct blockdata *stash; /* Saved reply, whilst we validate */ +- size_t stash_len; ++ struct blockdata *orig_domain; /* domain of original query, whilst ++ we're seeing is if in unsigned domain */ ++ size_t stash_len, name_start, name_len; + struct frec *dependent; /* Query awaiting internally-generated DNSKEY or DS query */ + struct frec *blocking_query; /* Query which is blocking us. */ + #endif +@@ -1126,7 +1129,7 @@ int in_zone(struct auth_zone *zone, char *name, char **cut); + size_t dnssec_generate_query(struct dns_header *header, char *end, char *name, int class, int type, union mysockaddr *addr); + int dnssec_validate_by_ds(time_t now, struct dns_header *header, size_t n, char *name, char *keyname, int class); + int dnssec_validate_ds(time_t now, struct dns_header *header, size_t plen, char *name, char *keyname, int class); +-int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, char *name, char *keyname, int *class, int *neganswer); ++int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, char *name, char *keyname, int *class, int *neganswer, int *nons); + int dnssec_chase_cname(time_t now, struct dns_header *header, size_t plen, char *name, char *keyname); + int dnskey_keytag(int alg, int flags, unsigned char *rdata, int rdlen); + size_t filter_rrsigs(struct dns_header *header, size_t plen); +diff --git a/src/dnssec.c b/src/dnssec.c +index 026794b077e5..8f27677628b2 100644 +--- a/src/dnssec.c ++++ b/src/dnssec.c +@@ -875,8 +875,7 @@ static int validate_rrset(time_t now, struct dns_header *header, size_t plen, in + /* The DNS packet is expected to contain the answer to a DNSKEY query. + Put all DNSKEYs in the answer which are valid into the cache. + return codes: +- STAT_INSECURE No DNSKEYs in reply. +- STAT_SECURE At least one valid DNSKEY found and in cache. ++ STAT_SECURE At least one valid DNSKEY found and in cache. + STAT_BOGUS No DNSKEYs found, which can be validated with DS, + or self-sign for DNSKEY RRset is not valid, bad packet. + STAT_NEED_DS DS records to validate a key not found, name in keyname +@@ -896,11 +895,8 @@ int dnssec_validate_by_ds(time_t now, struct dns_header *header, size_t plen, ch + GETSHORT(qtype, p); + GETSHORT(qclass, p); + +- if (qtype != T_DNSKEY || qclass != class) ++ if (qtype != T_DNSKEY || qclass != class || ntohs(header->ancount) == 0) + return STAT_BOGUS; +- +- if (ntohs(header->ancount) == 0) +- return STAT_INSECURE; + + /* See if we have cached a DS record which validates this key */ + if (!(crecp = cache_find_by_name(NULL, name, now, F_DS))) +@@ -1103,17 +1099,17 @@ int dnssec_validate_by_ds(time_t now, struct dns_header *header, size_t plen, ch + /* The DNS packet is expected to contain the answer to a DS query + Put all DSs in the answer which are valid into the cache. + return codes: +- STAT_INSECURE no DS in reply or not signed. + STAT_SECURE At least one valid DS found and in cache. + STAT_NO_DS It's proved there's no DS here. +- STAT_BOGUS At least one DS found, which fails validation, bad packet. ++ STAT_NO_NS It's proved there's no DS _or_ NS here. ++ STAT_BOGUS no DS in reply or not signed, fails validation, bad packet. + STAT_NEED_DNSKEY DNSKEY records to validate a DS not found, name in keyname + */ + + int dnssec_validate_ds(time_t now, struct dns_header *header, size_t plen, char *name, char *keyname, int class) + { + unsigned char *p = (unsigned char *)(header+1); +- int qtype, qclass, val, i, neganswer; ++ int qtype, qclass, val, i, neganswer, nons; + + if (ntohs(header->qdcount) != 1 || + !(p = skip_name(p, header, plen, 4))) +@@ -1125,32 +1121,39 @@ int dnssec_validate_ds(time_t now, struct dns_header *header, size_t plen, char + if (qtype != T_DS || qclass != class) + val = STAT_BOGUS; + else +- val = dnssec_validate_reply(now, header, plen, name, keyname, NULL, &neganswer); +- +- if (val == STAT_NO_SIG) +- val = STAT_INSECURE; ++ val = dnssec_validate_reply(now, header, plen, name, keyname, NULL, &neganswer, &nons); ++ /* Note dnssec_validate_reply() will have cached positive answers */ ++ ++ if (val == STAT_NO_SIG || val == STAT_INSECURE) ++ val = STAT_BOGUS; + + p = (unsigned char *)(header+1); + extract_name(header, plen, &p, name, 1, 4); + p += 4; /* qtype, qclass */ + + if (!(p = skip_section(p, ntohs(header->ancount), header, plen))) +- return STAT_BOGUS; ++ val = STAT_BOGUS; + + if (val == STAT_BOGUS) +- log_query(F_UPSTREAM, name, NULL, "BOGUS DS"); +- +- if ((val == STAT_SECURE || val == STAT_INSECURE) && neganswer) + { +- int rdlen, flags = F_FORWARD | F_DS | F_NEG; ++ log_query(F_UPSTREAM, name, NULL, "BOGUS DS"); ++ return STAT_BOGUS; ++ } ++ ++ /* By here, the answer is proved secure, and a positive answer has been cached. */ ++ if (val == STAT_SECURE && neganswer) ++ { ++ int rdlen, flags = F_FORWARD | F_DS | F_NEG | F_DNSSECOK; + unsigned long ttl, minttl = ULONG_MAX; + struct all_addr a; + + if (RCODE(header) == NXDOMAIN) + flags |= F_NXDOMAIN; + +- if (val == STAT_SECURE) +- flags |= F_DNSSECOK; ++ /* We only cache validated DS records, DNSSECOK flag hijacked ++ to store presence/absence of NS. */ ++ if (nons) ++ flags &= ~F_DNSSECOK; + + for (i = ntohs(header->nscount); i != 0; i--) + { +@@ -1196,10 +1199,12 @@ int dnssec_validate_ds(time_t now, struct dns_header *header, size_t plen, char + a.addr.dnssec.class = class; + cache_insert(name, &a, now, ttl, flags); + +- cache_end_insert(); ++ cache_end_insert(); ++ ++ log_query(F_UPSTREAM, name, NULL, nons ? "no delegation" : "no DS"); + } + +- return (val == STAT_SECURE) ? STAT_NO_DS : STAT_INSECURE; ++ return nons ? STAT_NO_NS : STAT_NO_DS; + } + + return val; +@@ -1323,12 +1328,15 @@ static int find_nsec_records(struct dns_header *header, size_t plen, unsigned ch + } + + static int prove_non_existence_nsec(struct dns_header *header, size_t plen, unsigned char **nsecs, int nsec_count, +- char *workspace1, char *workspace2, char *name, int type) ++ char *workspace1, char *workspace2, char *name, int type, int *nons) + { + int i, rc, rdlen; + unsigned char *p, *psave; + int offset = (type & 0xff) >> 3; + int mask = 0x80 >> (type & 0x07); ++ ++ if (nons) ++ *nons = 0; + + /* Find NSEC record that proves name doesn't exist */ + for (i = 0; i < nsec_count; i++) +@@ -1355,6 +1363,10 @@ static int prove_non_existence_nsec(struct dns_header *header, size_t plen, unsi + rdlen -= p - psave; + /* rdlen is now length of type map, and p points to it */ + ++ /* If we can prove that there's no NS record, return that information. */ ++ if (nons && rdlen >= 2 && p[0] == 0 && (p[2] & (0x80 >> T_NS)) == 0) ++ *nons = 1; ++ + while (rdlen >= 2) + { + if (!CHECK_LEN(header, p, plen, rdlen)) +@@ -1456,7 +1468,7 @@ static int base32_decode(char *in, unsigned char *out) + } + + static int check_nsec3_coverage(struct dns_header *header, size_t plen, int digest_len, unsigned char *digest, int type, +- char *workspace1, char *workspace2, unsigned char **nsecs, int nsec_count) ++ char *workspace1, char *workspace2, unsigned char **nsecs, int nsec_count, int *nons) + { + int i, hash_len, salt_len, base32_len, rdlen; + unsigned char *p, *psave; +@@ -1497,6 +1509,10 @@ static int check_nsec3_coverage(struct dns_header *header, size_t plen, int dige + if (!CHECK_LEN(header, p, plen, rdlen)) + return 0; + ++ /* If we can prove that there's no NS record, return that information. */ ++ if (nons && rdlen >= 2 && p[0] == 0 && (p[2] & (0x80 >> T_NS)) == 0) ++ *nons = 1; ++ + while (rdlen >= 2) + { + if (p[0] == type >> 8) +@@ -1533,13 +1549,16 @@ static int check_nsec3_coverage(struct dns_header *header, size_t plen, int dige + } + + static int prove_non_existence_nsec3(struct dns_header *header, size_t plen, unsigned char **nsecs, int nsec_count, +- char *workspace1, char *workspace2, char *name, int type, char *wildname) ++ char *workspace1, char *workspace2, char *name, int type, char *wildname, int *nons) + { + unsigned char *salt, *p, *digest; + int digest_len, i, iterations, salt_len, base32_len, algo = 0; + struct nettle_hash const *hash; + char *closest_encloser, *next_closest, *wildcard; +- ++ ++ if (nons) ++ *nons = 0; ++ + /* Look though the NSEC3 records to find the first one with + an algorithm we support (currently only algo == 1). + +@@ -1612,7 +1631,7 @@ static int prove_non_existence_nsec3(struct dns_header *header, size_t plen, uns + if ((digest_len = hash_name(name, &digest, hash, salt, salt_len, iterations)) == 0) + return STAT_BOGUS; + +- if (check_nsec3_coverage(header, plen, digest_len, digest, type, workspace1, workspace2, nsecs, nsec_count)) ++ if (check_nsec3_coverage(header, plen, digest_len, digest, type, workspace1, workspace2, nsecs, nsec_count, nons)) + return STAT_SECURE; + + /* Can't find an NSEC3 which covers the name directly, we need the "closest encloser NSEC3" +@@ -1657,7 +1676,7 @@ static int prove_non_existence_nsec3(struct dns_header *header, size_t plen, uns + if ((digest_len = hash_name(next_closest, &digest, hash, salt, salt_len, iterations)) == 0) + return STAT_BOGUS; + +- if (!check_nsec3_coverage(header, plen, digest_len, digest, type, workspace1, workspace2, nsecs, nsec_count)) ++ if (!check_nsec3_coverage(header, plen, digest_len, digest, type, workspace1, workspace2, nsecs, nsec_count, NULL)) + return STAT_BOGUS; + + /* Finally, check that there's no seat of wildcard synthesis */ +@@ -1672,7 +1691,7 @@ static int prove_non_existence_nsec3(struct dns_header *header, size_t plen, uns + if ((digest_len = hash_name(wildcard, &digest, hash, salt, salt_len, iterations)) == 0) + return STAT_BOGUS; + +- if (!check_nsec3_coverage(header, plen, digest_len, digest, type, workspace1, workspace2, nsecs, nsec_count)) ++ if (!check_nsec3_coverage(header, plen, digest_len, digest, type, workspace1, workspace2, nsecs, nsec_count, NULL)) + return STAT_BOGUS; + } + +@@ -1681,7 +1700,8 @@ static int prove_non_existence_nsec3(struct dns_header *header, size_t plen, uns + + /* Validate all the RRsets in the answer and authority sections of the reply (4035:3.2.3) */ + /* Returns are the same as validate_rrset, plus the class if the missing key is in *class */ +-int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, char *name, char *keyname, int *class, int *neganswer) ++int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, char *name, char *keyname, ++ int *class, int *neganswer, int *nons) + { + unsigned char *ans_start, *qname, *p1, *p2, **nsecs; + int type1, class1, rdlen1, type2, class2, rdlen2, qclass, qtype; +@@ -1811,10 +1831,11 @@ int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, ch + return STAT_BOGUS; /* No NSECs or bad packet */ + + if (nsec_type == T_NSEC) +- rc = prove_non_existence_nsec(header, plen, nsecs, nsec_count, daemon->workspacename, keyname, name, type1); ++ rc = prove_non_existence_nsec(header, plen, nsecs, nsec_count, daemon->workspacename, keyname, name, type1, NULL); + else +- rc = prove_non_existence_nsec3(header, plen, nsecs, nsec_count, daemon->workspacename, keyname, name, type1, wildname); +- ++ rc = prove_non_existence_nsec3(header, plen, nsecs, nsec_count, daemon->workspacename, ++ keyname, name, type1, wildname, NULL); ++ + if (rc != STAT_SECURE) + return rc; + } +@@ -1937,9 +1958,9 @@ int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, ch + return STAT_BOGUS; + + if (nsec_type == T_NSEC) +- return prove_non_existence_nsec(header, plen, nsecs, nsec_count, daemon->workspacename, keyname, name, qtype); ++ return prove_non_existence_nsec(header, plen, nsecs, nsec_count, daemon->workspacename, keyname, name, qtype, nons); + else +- return prove_non_existence_nsec3(header, plen, nsecs, nsec_count, daemon->workspacename, keyname, name, qtype, NULL); ++ return prove_non_existence_nsec3(header, plen, nsecs, nsec_count, daemon->workspacename, keyname, name, qtype, NULL, nons); + } + + /* Chase the CNAME chain in the packet until the first record which _doesn't validate. +diff --git a/src/forward.c b/src/forward.c +index f28c7d51f708..ee8d7b52d5e5 100644 +--- a/src/forward.c ++++ b/src/forward.c +@@ -26,8 +26,9 @@ static void free_frec(struct frec *f); + #ifdef HAVE_DNSSEC + static int tcp_key_recurse(time_t now, int status, struct dns_header *header, size_t n, + int class, char *name, char *keyname, struct server *server, int *keycount); +-static int do_check_sign(time_t now, struct dns_header *header, size_t plen, char *name, char *keyname, int class); +-static int send_check_sign(time_t now, struct dns_header *header, size_t plen, char *name, char *keyname); ++static int do_check_sign(struct frec *forward, int status, time_t now, char *name, char *keyname); ++static int send_check_sign(struct frec *forward, time_t now, struct dns_header *header, size_t plen, ++ char *name, char *keyname); + #endif + + +@@ -815,18 +816,22 @@ void reply_query(int fd, int family, time_t now) + else if (forward->flags & FREC_DS_QUERY) + { + status = dnssec_validate_ds(now, header, n, daemon->namebuff, daemon->keyname, forward->class); +- if (status == STAT_NO_DS) +- status = STAT_INSECURE; ++ if (status == STAT_NO_DS || status == STAT_NO_NS) ++ status = STAT_BOGUS; + } + else if (forward->flags & FREC_CHECK_NOSIGN) +- status = do_check_sign(now, header, n, daemon->namebuff, daemon->keyname, forward->class); ++ { ++ status = dnssec_validate_ds(now, header, n, daemon->namebuff, daemon->keyname, forward->class); ++ if (status != STAT_NEED_KEY) ++ status = do_check_sign(forward, status, now, daemon->namebuff, daemon->keyname); ++ } + else + { +- status = dnssec_validate_reply(now, header, n, daemon->namebuff, daemon->keyname, &forward->class, NULL); ++ status = dnssec_validate_reply(now, header, n, daemon->namebuff, daemon->keyname, &forward->class, NULL, NULL); + if (status == STAT_NO_SIG) + { + if (option_bool(OPT_DNSSEC_NO_SIGN)) +- status = send_check_sign(now, header, n, daemon->namebuff, daemon->keyname); ++ status = send_check_sign(forward, now, header, n, daemon->namebuff, daemon->keyname); + else + status = STAT_INSECURE; + } +@@ -861,6 +866,7 @@ void reply_query(int fd, int family, time_t now) + new->blocking_query = NULL; + new->sentto = server; + new->rfd4 = NULL; ++ new->orig_domain = NULL; + #ifdef HAVE_IPV6 + new->rfd6 = NULL; + #endif +@@ -889,7 +895,9 @@ void reply_query(int fd, int family, time_t now) + new->new_id = get_id(); + header->id = htons(new->new_id); + /* Save query for retransmission */ +- new->stash = blockdata_alloc((char *)header, nn); ++ if (!(new->stash = blockdata_alloc((char *)header, nn))) ++ return; ++ + new->stash_len = nn; + + /* Don't resend this. */ +@@ -946,18 +954,22 @@ void reply_query(int fd, int family, time_t now) + else if (forward->flags & FREC_DS_QUERY) + { + status = dnssec_validate_ds(now, header, n, daemon->namebuff, daemon->keyname, forward->class); +- if (status == STAT_NO_DS) +- status = STAT_INSECURE; ++ if (status == STAT_NO_DS || status == STAT_NO_NS) ++ status = STAT_BOGUS; + } + else if (forward->flags & FREC_CHECK_NOSIGN) +- status = do_check_sign(now, header, n, daemon->namebuff, daemon->keyname, forward->class); ++ { ++ status = dnssec_validate_ds(now, header, n, daemon->namebuff, daemon->keyname, forward->class); ++ if (status != STAT_NEED_KEY) ++ status = do_check_sign(forward, status, now, daemon->namebuff, daemon->keyname); ++ } + else + { +- status = dnssec_validate_reply(now, header, n, daemon->namebuff, daemon->keyname, &forward->class, NULL); ++ status = dnssec_validate_reply(now, header, n, daemon->namebuff, daemon->keyname, &forward->class, NULL, NULL); + if (status == STAT_NO_SIG) + { + if (option_bool(OPT_DNSSEC_NO_SIGN)) +- status = send_check_sign(now, header, n, daemon->namebuff, daemon->keyname); ++ status = send_check_sign(forward, now, header, n, daemon->namebuff, daemon->keyname); + else + status = STAT_INSECURE; + } +@@ -1319,70 +1331,80 @@ void receive_query(struct listener *listen, time_t now) + /* UDP: we've got an unsigned answer, return STAT_INSECURE if we can prove there's no DS + and therefore the answer shouldn't be signed, or STAT_BOGUS if it should be, or + STAT_NEED_DS_NEG and keyname if we need to do the query. */ +-static int send_check_sign(time_t now, struct dns_header *header, size_t plen, char *name, char *keyname) ++static int send_check_sign(struct frec *forward, time_t now, struct dns_header *header, size_t plen, ++ char *name, char *keyname) + { +- struct crec *crecp; +- char *name_start = name; + int status = dnssec_chase_cname(now, header, plen, name, keyname); + + if (status != STAT_INSECURE) + return status; + ++ /* Store the domain we're trying to check. */ ++ forward->name_start = strlen(name); ++ forward->name_len = forward->name_start + 1; ++ if (!(forward->orig_domain = blockdata_alloc(name, forward->name_len))) ++ return STAT_BOGUS; ++ ++ return do_check_sign(forward, 0, now, name, keyname); ++} ++ ++/* We either have a a reply (header non-NULL, or we need to start by looking in the cache */ ++static int do_check_sign(struct frec *forward, int status, time_t now, char *name, char *keyname) ++{ ++ /* get domain we're checking back from blockdata store, it's stored on the original query. */ ++ while (forward->dependent) ++ forward = forward->dependent; ++ ++ blockdata_retrieve(forward->orig_domain, forward->name_len, name); ++ + while (1) + { +- crecp = cache_find_by_name(NULL, name_start, now, F_DS); +- +- if (crecp && (crecp->flags & F_DNSSECOK)) +- return (crecp->flags & F_NEG) ? STAT_INSECURE : STAT_BOGUS; +- +- if (crecp && (crecp->flags & F_NEG) && (name_start = strchr(name_start, '.'))) ++ char *p; ++ ++ if (status == 0) + { +- name_start++; /* chop a label off and try again */ +- continue; ++ struct crec *crecp; ++ ++ /* Haven't received answer, see if in cache */ ++ if (!(crecp = cache_find_by_name(NULL, &name[forward->name_start], now, F_DS))) ++ { ++ /* put name of DS record we're missing into keyname */ ++ strcpy(keyname, &name[forward->name_start]); ++ /* and wait for reply to arrive */ ++ return STAT_NEED_DS_NEG; ++ } ++ ++ /* F_DNSSECOK misused in DS cache records to non-existance of NS record */ ++ if (!(crecp->flags & F_NEG)) ++ status = STAT_SECURE; ++ else if (crecp->flags & F_DNSSECOK) ++ status = STAT_NO_DS; ++ else ++ status = STAT_NO_NS; + } ++ ++ /* Have entered non-signed part of DNS tree. */ ++ if (status == STAT_NO_DS) ++ return STAT_INSECURE; + +- /* Reached the root */ +- if (!name_start) ++ if (status == STAT_BOGUS) + return STAT_BOGUS; + +- strcpy(keyname, name_start); +- return STAT_NEED_DS_NEG; +- } +-} +- +-/* Got answer to DS query from send_check_sign, check for proven non-existence, or make the next DS query to try. */ +-static int do_check_sign(time_t now, struct dns_header *header, size_t plen, char *name, char *keyname, int class) +- +-{ +- char *name_start; +- unsigned char *p; +- int status; ++ /* There's a proven DS record, or we're within a zone, where there doesn't need ++ to be a DS record. Add a name and try again. ++ If we've already tried the whole name, then fail */ + +- /* In this case only, a SERVFAIL reply allows us to continue up the tree, looking for a +- suitable NSEC reply to DS queries. */ +- if (RCODE(header) != SERVFAIL) +- { +- status = dnssec_validate_ds(now, header, plen, name, keyname, class); ++ if (forward->name_start == 0) ++ return STAT_BOGUS; + +- if (status != STAT_INSECURE) +- { +- if (status == STAT_NO_DS) +- status = STAT_INSECURE; +- return status; +- } +- } +- +- p = (unsigned char *)(header+1); +- +- if (extract_name(header, plen, &p, name, 1, 4) && +- (name_start = strchr(name, '.'))) +- { +- name_start++; /* chop a label off and try again */ +- strcpy(keyname, name_start); +- return STAT_NEED_DS_NEG; ++ for (p = &name[forward->name_start-2]; (*p != '.') && (p != name); p--); ++ ++ if (p != name) ++ p++; ++ ++ forward->name_start = p - name; ++ status = 0; /* force to cache when we iterate. */ + } +- +- return STAT_BOGUS; + } + + /* Move toward the root, until we find a signed non-existance of a DS, in which case +@@ -1395,8 +1417,10 @@ static int tcp_check_for_unsigned_zone(time_t now, struct dns_header *header, s + unsigned char *packet, *payload; + u16 *length; + unsigned char *p = (unsigned char *)(header+1); +- int status; +- char *name_start = name; ++ int status, name_len; ++ struct blockdata *block; ++ ++ char *name_start; + + /* Get first insecure entry in CNAME chain */ + status = tcp_key_recurse(now, STAT_CHASE_CNAME, header, plen, class, name, keyname, server, keycount); +@@ -1409,95 +1433,113 @@ static int tcp_check_for_unsigned_zone(time_t now, struct dns_header *header, s + payload = &packet[2]; + header = (struct dns_header *)payload; + length = (u16 *)packet; ++ ++ /* Stash the name away, since the buffer will be trashed when we recurse */ ++ name_len = strlen(name) + 1; ++ name_start = name + name_len - 1; + ++ if (!(block = blockdata_alloc(name, name_len))) ++ { ++ free(packet); ++ return STAT_BOGUS; ++ } ++ + while (1) + { +- unsigned char *newhash, hash[HASH_SIZE]; + unsigned char c1, c2; +- struct crec *crecp = cache_find_by_name(NULL, name_start, now, F_DS); +- ++ struct crec *crecp; ++ + if (--(*keycount) == 0) + { + free(packet); ++ blockdata_free(block); + return STAT_BOGUS; + } +- +- if (crecp && (crecp->flags & F_DNSSECOK)) +- { +- free(packet); +- return (crecp->flags & F_NEG) ? STAT_INSECURE : STAT_BOGUS; +- } + +- /* If we have cached insecurely that a DS doesn't exist, +- ise that is a hit for where to start looking for the secure one */ +- if (crecp && (crecp->flags & F_NEG) && (name_start = strchr(name_start, '.'))) +- { +- name_start++; /* chop a label off and try again */ +- continue; +- } +- +- /* reached the root */ +- if (!name_start) +- { +- free(packet); +- return STAT_BOGUS; ++ while (crecp = cache_find_by_name(NULL, name_start, now, F_DS)) ++ { ++ if ((crecp->flags & F_NEG) && (crecp->flags & F_DNSSECOK)) ++ { ++ /* Found a secure denial of DS - delegation is indeed insecure */ ++ free(packet); ++ blockdata_free(block); ++ return STAT_INSECURE; ++ } ++ ++ /* Here, either there's a secure DS, or no NS and no DS, and therefore no delegation. ++ Add another label and continue. */ ++ ++ if (name_start == name) ++ { ++ free(packet); ++ blockdata_free(block); ++ return STAT_BOGUS; /* run out of labels */ ++ } ++ ++ name_start -= 2; ++ while (*name_start != '.' && name_start != name) ++ name_start--; ++ if (name_start != name) ++ name_start++; + } ++ ++ /* Can't find it in the cache, have to send a query */ + + m = dnssec_generate_query(header, ((char *) header) + 65536, name_start, class, T_DS, &server->addr); + +- /* We rely on the question section coming back unchanged, ensure it is with the hash. */ +- if ((newhash = hash_questions(header, (unsigned int)m, name))) +- { +- memcpy(hash, newhash, HASH_SIZE); ++ *length = htons(m); + +- *length = htons(m); ++ if (read_write(server->tcpfd, packet, m + sizeof(u16), 0) && ++ read_write(server->tcpfd, &c1, 1, 1) && ++ read_write(server->tcpfd, &c2, 1, 1) && ++ read_write(server->tcpfd, payload, (c1 << 8) | c2, 1)) ++ { ++ m = (c1 << 8) | c2; ++ ++ /* Note this trashes all three name workspaces */ ++ status = tcp_key_recurse(now, STAT_NEED_DS_NEG, header, m, class, name, keyname, server, keycount); + +- if (read_write(server->tcpfd, packet, m + sizeof(u16), 0) && +- read_write(server->tcpfd, &c1, 1, 1) && +- read_write(server->tcpfd, &c2, 1, 1) && +- read_write(server->tcpfd, payload, (c1 << 8) | c2, 1)) ++ if (status == STAT_NO_DS) + { +- m = (c1 << 8) | c2; +- +- newhash = hash_questions(header, (unsigned int)m, name); +- if (newhash && memcmp(hash, newhash, HASH_SIZE) == 0) +- { +- /* In this case only, a SERVFAIL reply allows us to continue up the tree, looking for a +- suitable NSEC reply to DS queries. */ +- if (RCODE(header) == SERVFAIL) +- status = STAT_INSECURE; +- else +- /* Note this trashes all three name workspaces */ +- status = tcp_key_recurse(now, STAT_NEED_DS_NEG, header, m, class, name, keyname, server, keycount); +- +- /* We've found a DS which proves the bit of the DNS where the +- original query is, is unsigned, so the answer is OK, +- if unvalidated. */ +- if (status == STAT_NO_DS) +- { +- free(packet); +- return STAT_INSECURE; +- } +- +- /* No DS, not got to DNSSEC-land yet, go up. */ +- if (status == STAT_INSECURE) +- { +- p = (unsigned char *)(header+1); +- +- if (extract_name(header, plen, &p, name, 1, 4) && +- (name_start = strchr(name, '.'))) +- { +- name_start++; /* chop a label off and try again */ +- continue; +- } +- } +- } ++ /* Found a secure denial of DS - delegation is indeed insecure */ ++ free(packet); ++ blockdata_free(block); ++ return STAT_INSECURE; ++ } ++ ++ if (status == STAT_BOGUS) ++ { ++ free(packet); ++ blockdata_free(block); ++ return STAT_BOGUS; ++ } ++ ++ /* Here, either there's a secure DS, or no NS and no DS, and therefore no delegation. ++ Add another label and continue. */ ++ ++ /* Get name we're checking back. */ ++ blockdata_retrieve(block, name_len, name); ++ ++ if (name_start == name) ++ { ++ free(packet); ++ blockdata_free(block); ++ return STAT_BOGUS; /* run out of labels */ + } ++ ++ name_start -= 2; ++ while (*name_start != '.' && name_start != name) ++ name_start--; ++ if (name_start != name) ++ name_start++; ++ } ++ else ++ { ++ /* IO failure */ ++ free(packet); ++ blockdata_free(block); ++ return STAT_BOGUS; /* run out of labels */ + } +- +- free(packet); +- +- return STAT_BOGUS; + } + } + +@@ -1516,14 +1558,14 @@ static int tcp_key_recurse(time_t now, int status, struct dns_header *header, si + else if (status == STAT_NEED_DS || status == STAT_NEED_DS_NEG) + { + new_status = dnssec_validate_ds(now, header, n, name, keyname, class); +- if (status == STAT_NEED_DS && new_status == STAT_NO_DS) +- new_status = STAT_INSECURE; ++ if (status == STAT_NEED_DS && (new_status == STAT_NO_DS || new_status == STAT_NO_NS)) ++ new_status = STAT_BOGUS; + } + else if (status == STAT_CHASE_CNAME) + new_status = dnssec_chase_cname(now, header, n, name, keyname); + else + { +- new_status = dnssec_validate_reply(now, header, n, name, keyname, &class, NULL); ++ new_status = dnssec_validate_reply(now, header, n, name, keyname, &class, NULL, NULL); + + if (new_status == STAT_NO_SIG) + { +@@ -1576,14 +1618,14 @@ static int tcp_key_recurse(time_t now, int status, struct dns_header *header, si + else if (status == STAT_NEED_DS || status == STAT_NEED_DS_NEG) + { + new_status = dnssec_validate_ds(now, header, n, name, keyname, class); +- if (status == STAT_NEED_DS && new_status == STAT_NO_DS) +- new_status = STAT_INSECURE; /* Validated no DS */ ++ if (status == STAT_NEED_DS && (new_status == STAT_NO_DS || new_status == STAT_NO_NS)) ++ new_status = STAT_BOGUS; /* Validated no DS */ + } + else if (status == STAT_CHASE_CNAME) + new_status = dnssec_chase_cname(now, header, n, name, keyname); + else + { +- new_status = dnssec_validate_reply(now, header, n, name, keyname, &class, NULL); ++ new_status = dnssec_validate_reply(now, header, n, name, keyname, &class, NULL, NULL); + + if (new_status == STAT_NO_SIG) + { +@@ -1961,6 +2003,7 @@ static struct frec *allocate_frec(time_t now) + f->dependent = NULL; + f->blocking_query = NULL; + f->stash = NULL; ++ f->orig_domain = NULL; + #endif + daemon->frec_list = f; + } +@@ -2029,6 +2072,12 @@ static void free_frec(struct frec *f) + f->stash = NULL; + } + ++ if (f->orig_domain) ++ { ++ blockdata_free(f->orig_domain); ++ f->orig_domain = NULL; ++ } ++ + /* Anything we're waiting on is pointless now, too */ + if (f->blocking_query) + free_frec(f->blocking_query); +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0027-Add-log-queries-extra-option-for-more-complete-loggi.patch b/src/patches/dnsmasq/0027-Add-log-queries-extra-option-for-more-complete-loggi.patch new file mode 100644 index 0000000000..e258d56da0 --- /dev/null +++ b/src/patches/dnsmasq/0027-Add-log-queries-extra-option-for-more-complete-loggi.patch @@ -0,0 +1,346 @@ +From 25cf5e373eb41c088d4ee5e625209c4cf6a5659e Mon Sep 17 00:00:00 2001 +From: Simon Kelley +Date: Fri, 9 Jan 2015 15:53:03 +0000 +Subject: [PATCH 27/55] Add --log-queries=extra option for more complete + logging. + +--- + CHANGELOG | 3 +++ + man/dnsmasq.8 | 5 ++++- + src/cache.c | 11 ++++++++++- + src/config.h | 1 + + src/dnsmasq.c | 5 +++++ + src/dnsmasq.h | 9 +++++++-- + src/dnssec.c | 14 +++++++------- + src/forward.c | 30 ++++++++++++++++++++++++++---- + src/option.c | 11 +++++++++-- + 9 files changed, 72 insertions(+), 17 deletions(-) + +diff --git a/CHANGELOG b/CHANGELOG +index e8bf80f81baa..0bbb7835df4f 100644 +--- a/CHANGELOG ++++ b/CHANGELOG +@@ -40,6 +40,9 @@ version 2.73 + nameservers in the unsigned parts of the DNS tree + which don't respond well to DNSSEC queries. + ++ Add --log-queries=extra option, which makes logs easier ++ to search automatically. ++ + + version 2.72 + Add ra-advrouter mode, for RFC-3775 mobile IPv6 support. +diff --git a/man/dnsmasq.8 b/man/dnsmasq.8 +index 4236ba307df3..227d74bd80e7 100644 +--- a/man/dnsmasq.8 ++++ b/man/dnsmasq.8 +@@ -98,7 +98,10 @@ only, to stop dnsmasq daemonising in production, use + .B -k. + .TP + .B \-q, --log-queries +-Log the results of DNS queries handled by dnsmasq. Enable a full cache dump on receipt of SIGUSR1. ++Log the results of DNS queries handled by dnsmasq. Enable a full cache dump on receipt of SIGUSR1. If the argument "extra" is supplied, ie ++.B --log-queries=extra ++then the log has extra information at the start of each line. ++This consists of a serial number which ties together the log lines associated with an individual query, and the IP address of the requestor. + .TP + .B \-8, --log-facility= + Set the facility to which dnsmasq will send syslog entries, this +diff --git a/src/cache.c b/src/cache.c +index ff1ca6f1c352..960bb7938778 100644 +--- a/src/cache.c ++++ b/src/cache.c +@@ -1638,7 +1638,16 @@ void log_query(unsigned int flags, char *name, struct all_addr *addr, char *arg) + if (strlen(name) == 0) + name = "."; + +- my_syslog(LOG_INFO, "%s %s %s %s", source, name, verb, dest); ++ if (option_bool(OPT_EXTRALOG)) ++ { ++ prettyprint_addr(daemon->log_source_addr, daemon->addrbuff2); ++ if (flags & F_NOEXTRA) ++ my_syslog(LOG_INFO, "* %s %s %s %s %s", daemon->addrbuff2, source, name, verb, dest); ++ else ++ my_syslog(LOG_INFO, "%u %s %s %s %s %s", daemon->log_display_id, daemon->addrbuff2, source, name, verb, dest); ++ } ++ else ++ my_syslog(LOG_INFO, "%s %s %s %s", source, name, verb, dest); + } + + +diff --git a/src/config.h b/src/config.h +index 145820ad2510..3b88d8193dca 100644 +--- a/src/config.h ++++ b/src/config.h +@@ -17,6 +17,7 @@ + #define FTABSIZ 150 /* max number of outstanding requests (default) */ + #define MAX_PROCS 20 /* max no children for TCP requests */ + #define CHILD_LIFETIME 150 /* secs 'till terminated (RFC1035 suggests > 120s) */ ++#define TCP_MAX_QUERIES 100 /* Maximum number of queries per incoming TCP connection */ + #define EDNS_PKTSZ 4096 /* default max EDNS.0 UDP packet from RFC5625 */ + #define KEYBLOCK_LEN 40 /* choose to mininise fragmentation when storing DNSSEC keys */ + #define DNSSEC_WORK 50 /* Max number of queries to validate one question */ +diff --git a/src/dnsmasq.c b/src/dnsmasq.c +index 5c7750d365fa..c0c0589d4ce1 100644 +--- a/src/dnsmasq.c ++++ b/src/dnsmasq.c +@@ -93,6 +93,8 @@ int main (int argc, char **argv) + daemon->packet = safe_malloc(daemon->packet_buff_sz); + + daemon->addrbuff = safe_malloc(ADDRSTRLEN); ++ if (option_bool(OPT_EXTRALOG)) ++ daemon->addrbuff2 = safe_malloc(ADDRSTRLEN); + + #ifdef HAVE_DNSSEC + if (option_bool(OPT_DNSSEC_VALID)) +@@ -1587,6 +1589,9 @@ static void check_dns_listeners(fd_set *set, time_t now) + } + } + close(confd); ++ ++ /* The child can use up to TCP_MAX_QUERIES ids, so skip that many. */ ++ daemon->log_id += TCP_MAX_QUERIES; + } + #endif + else +diff --git a/src/dnsmasq.h b/src/dnsmasq.h +index 2f4597294a56..4e9aea401b75 100644 +--- a/src/dnsmasq.h ++++ b/src/dnsmasq.h +@@ -238,7 +238,8 @@ struct event_desc { + #define OPT_DNSSEC_NO_SIGN 48 + #define OPT_LOCAL_SERVICE 49 + #define OPT_LOOP_DETECT 50 +-#define OPT_LAST 51 ++#define OPT_EXTRALOG 51 ++#define OPT_LAST 52 + + /* extra flags for my_syslog, we use a couple of facilities since they are known + not to occupy the same bits as priorities, no matter how syslog.h is set up. */ +@@ -442,6 +443,7 @@ struct crec { + #define F_NO_RR (1u<<25) + #define F_IPSET (1u<<26) + #define F_NSIGMATCH (1u<<27) ++#define F_NOEXTRA (1u<<28) + + /* Values of uid in crecs with F_CONFIG bit set. */ + #define SRC_INTERFACE 0 +@@ -599,7 +601,7 @@ struct frec { + #endif + unsigned int iface; + unsigned short orig_id, new_id; +- int fd, forwardall, flags; ++ int log_id, fd, forwardall, flags; + time_t time; + unsigned char *hash[HASH_SIZE]; + #ifdef HAVE_DNSSEC +@@ -1002,6 +1004,8 @@ extern struct daemon { + struct randfd randomsocks[RANDOM_SOCKS]; + int v6pktinfo; + struct addrlist *interface_addrs; /* list of all addresses/prefix lengths associated with all local interfaces */ ++ int log_id, log_display_id; /* ids of transactions for logging */ ++ union mysockaddr *log_source_addr; + + /* DHCP state */ + int dhcpfd, helperfd, pxefd; +@@ -1033,6 +1037,7 @@ extern struct daemon { + + /* utility string buffer, hold max sized IP address as string */ + char *addrbuff; ++ char *addrbuff2; /* only allocated when OPT_EXTRALOG */ + + } *daemon; + +diff --git a/src/dnssec.c b/src/dnssec.c +index 8f27677628b2..afb3dca38cb1 100644 +--- a/src/dnssec.c ++++ b/src/dnssec.c +@@ -1038,7 +1038,7 @@ int dnssec_validate_by_ds(time_t now, struct dns_header *header, size_t plen, ch + else + { + a.addr.keytag = keytag; +- log_query(F_KEYTAG | F_UPSTREAM, name, &a, "DNSKEY keytag %u"); ++ log_query(F_NOEXTRA | F_KEYTAG | F_UPSTREAM, name, &a, "DNSKEY keytag %u"); + + recp1->addr.key.keylen = rdlen - 4; + recp1->addr.key.keydata = key; +@@ -1092,7 +1092,7 @@ int dnssec_validate_by_ds(time_t now, struct dns_header *header, size_t plen, ch + return STAT_SECURE; + } + +- log_query(F_UPSTREAM, name, NULL, "BOGUS DNSKEY"); ++ log_query(F_NOEXTRA | F_UPSTREAM, name, NULL, "BOGUS DNSKEY"); + return STAT_BOGUS; + } + +@@ -1136,7 +1136,7 @@ int dnssec_validate_ds(time_t now, struct dns_header *header, size_t plen, char + + if (val == STAT_BOGUS) + { +- log_query(F_UPSTREAM, name, NULL, "BOGUS DS"); ++ log_query(F_NOEXTRA | F_UPSTREAM, name, NULL, "BOGUS DS"); + return STAT_BOGUS; + } + +@@ -1201,7 +1201,7 @@ int dnssec_validate_ds(time_t now, struct dns_header *header, size_t plen, char + + cache_end_insert(); + +- log_query(F_UPSTREAM, name, NULL, nons ? "no delegation" : "no DS"); ++ log_query(F_NOEXTRA | F_UPSTREAM, name, NULL, nons ? "no delegation" : "no DS"); + } + + return nons ? STAT_NO_NS : STAT_NO_DS; +@@ -1885,7 +1885,7 @@ int dnssec_validate_reply(time_t now, struct dns_header *header, size_t plen, ch + else + { + a.addr.keytag = keytag; +- log_query(F_KEYTAG | F_UPSTREAM, name, &a, "DS keytag %u"); ++ log_query(F_NOEXTRA | F_KEYTAG | F_UPSTREAM, name, &a, "DS keytag %u"); + crecp->addr.ds.digest = digest; + crecp->addr.ds.keydata = key; + crecp->addr.ds.algo = algo; +@@ -2058,10 +2058,10 @@ size_t dnssec_generate_query(struct dns_header *header, char *end, char *name, i + char *types = querystr("dnssec-query", type); + + if (addr->sa.sa_family == AF_INET) +- log_query(F_DNSSEC | F_IPV4, name, (struct all_addr *)&addr->in.sin_addr, types); ++ log_query(F_NOEXTRA | F_DNSSEC | F_IPV4, name, (struct all_addr *)&addr->in.sin_addr, types); + #ifdef HAVE_IPV6 + else +- log_query(F_DNSSEC | F_IPV6, name, (struct all_addr *)&addr->in6.sin6_addr, types); ++ log_query(F_NOEXTRA | F_DNSSEC | F_IPV6, name, (struct all_addr *)&addr->in6.sin6_addr, types); + #endif + + header->qdcount = htons(1); +diff --git a/src/forward.c b/src/forward.c +index 55f583383bc6..713a64c0fa58 100644 +--- a/src/forward.c ++++ b/src/forward.c +@@ -279,10 +279,10 @@ static int forward_query(int udpfd, union mysockaddr *udpaddr, + plen = forward->stash_len; + + if (forward->sentto->addr.sa.sa_family == AF_INET) +- log_query(F_DNSSEC | F_IPV4, "retry", (struct all_addr *)&forward->sentto->addr.in.sin_addr, "dnssec"); ++ log_query(F_NOEXTRA | F_DNSSEC | F_IPV4, "retry", (struct all_addr *)&forward->sentto->addr.in.sin_addr, "dnssec"); + #ifdef HAVE_IPV6 + else +- log_query(F_DNSSEC | F_IPV6, "retry", (struct all_addr *)&forward->sentto->addr.in6.sin6_addr, "dnssec"); ++ log_query(F_NOEXTRA | F_DNSSEC | F_IPV6, "retry", (struct all_addr *)&forward->sentto->addr.in6.sin6_addr, "dnssec"); + #endif + + if (forward->sentto->sfd) +@@ -389,6 +389,9 @@ static int forward_query(int udpfd, union mysockaddr *udpaddr, + struct server *firstsentto = start; + int forwarded = 0; + ++ /* If a query is retried, use the log_id for the retry when logging the answer. */ ++ forward->log_id = daemon->log_id; ++ + if (option_bool(OPT_ADD_MAC)) + plen = add_mac(header, plen, ((char *) header) + daemon->packet_buff_sz, &forward->source); + +@@ -725,6 +728,11 @@ void reply_query(int fd, int family, time_t now) + if (!(forward = lookup_frec(ntohs(header->id), hash))) + return; + ++ /* log_query gets called indirectly all over the place, so ++ pass these in global variables - sorry. */ ++ daemon->log_display_id = forward->log_id; ++ daemon->log_source_addr = &forward->source; ++ + if (daemon->ignore_addr && RCODE(header) == NOERROR && + check_for_ignored_address(header, n, daemon->ignore_addr)) + return; +@@ -1258,6 +1266,11 @@ void receive_query(struct listener *listen, time_t now) + dst_addr_4.s_addr = 0; + } + } ++ ++ /* log_query gets called indirectly all over the place, so ++ pass these in global variables - sorry. */ ++ daemon->log_display_id = ++daemon->log_id; ++ daemon->log_source_addr = &source_addr; + + if (extract_request(header, (size_t)n, daemon->namebuff, &type)) + { +@@ -1675,7 +1688,8 @@ unsigned char *tcp_request(int confd, time_t now, + struct in_addr dst_addr_4; + union mysockaddr peer_addr; + socklen_t peer_len = sizeof(union mysockaddr); +- ++ int query_count = 0; ++ + if (getpeername(confd, (struct sockaddr *)&peer_addr, &peer_len) == -1) + return packet; + +@@ -1712,7 +1726,8 @@ unsigned char *tcp_request(int confd, time_t now, + + while (1) + { +- if (!packet || ++ if (query_count == TCP_MAX_QUERIES || ++ !packet || + !read_write(confd, &c1, 1, 1) || !read_write(confd, &c2, 1, 1) || + !(size = c1 << 8 | c2) || + !read_write(confd, payload, size, 1)) +@@ -1721,6 +1736,13 @@ unsigned char *tcp_request(int confd, time_t now, + if (size < (int)sizeof(struct dns_header)) + continue; + ++ query_count++; ++ ++ /* log_query gets called indirectly all over the place, so ++ pass these in global variables - sorry. */ ++ daemon->log_display_id = ++daemon->log_id; ++ daemon->log_source_addr = &peer_addr; ++ + check_subnet = 0; + + /* save state of "cd" flag in query */ +diff --git a/src/option.c b/src/option.c +index 907d0cf88de9..b7372be0a090 100644 +--- a/src/option.c ++++ b/src/option.c +@@ -149,6 +149,7 @@ struct myoption { + #define LOPT_LOOP_DETECT 337 + #define LOPT_IGNORE_ADDR 338 + ++ + #ifdef HAVE_GETOPT_LONG + static const struct option opts[] = + #else +@@ -160,7 +161,7 @@ static const struct myoption opts[] = + { "no-poll", 0, 0, 'n' }, + { "help", 0, 0, 'w' }, + { "no-daemon", 0, 0, 'd' }, +- { "log-queries", 0, 0, 'q' }, ++ { "log-queries", 2, 0, 'q' }, + { "user", 2, 0, 'u' }, + { "group", 2, 0, 'g' }, + { "resolv-file", 2, 0, 'r' }, +@@ -357,7 +358,7 @@ static struct { + { LOPT_FORCE, ARG_DUP, "", gettext_noop("DHCP option sent even if the client does not request it."), NULL}, + { 'p', ARG_ONE, "", gettext_noop("Specify port to listen for DNS requests on (defaults to 53)."), NULL }, + { 'P', ARG_ONE, "", gettext_noop("Maximum supported UDP packet size for EDNS.0 (defaults to %s)."), "*" }, +- { 'q', OPT_LOG, NULL, gettext_noop("Log DNS queries."), NULL }, ++ { 'q', ARG_DUP, NULL, gettext_noop("Log DNS queries."), NULL }, + { 'Q', ARG_ONE, "", gettext_noop("Force the originating port for upstream DNS queries."), NULL }, + { 'R', OPT_NO_RESOLV, NULL, gettext_noop("Do NOT read resolv.conf."), NULL }, + { 'r', ARG_DUP, "", gettext_noop("Specify path to resolv.conf (defaults to %s)."), RESOLVFILE }, +@@ -2421,6 +2422,12 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma + ret_err(gen_err); + break; + ++ case 'q': /* --log-queries */ ++ set_option_bool(OPT_LOG); ++ if (arg && strcmp(arg, "extra") == 0) ++ set_option_bool(OPT_EXTRALOG); ++ break; ++ + case LOPT_MAX_LOGS: /* --log-async */ + daemon->max_logs = LOG_MAX; /* default */ + if (arg && !atoi_check(arg, &daemon->max_logs)) +-- +2.1.0 + diff --git a/src/patches/dnsmasq/0028-Add-min-cache-ttl-option.patch b/src/patches/dnsmasq/0028-Add-min-cache-ttl-option.patch new file mode 100644 index 0000000000..e8a61b7c15 --- /dev/null +++ b/src/patches/dnsmasq/0028-Add-min-cache-ttl-option.patch @@ -0,0 +1,144 @@ +From 28de38768e2c7d763b9aa5b7a4d251d5e56bab0b Mon Sep 17 00:00:00 2001 +From: RinSatsuki +Date: Sat, 10 Jan 2015 15:22:21 +0000 +Subject: [PATCH 28/55] Add --min-cache-ttl option. + +--- + CHANGELOG | 7 +++++++ + man/dnsmasq.8 | 6 ++++++ + src/cache.c | 4 +++- + src/config.h | 1 + + src/dnsmasq.h | 2 +- + src/option.c | 11 +++++++++++ + 6 files changed, 29 insertions(+), 2 deletions(-) + +diff --git a/CHANGELOG b/CHANGELOG +index 0bbb7835df4f..23fc6d0530cf 100644 +--- a/CHANGELOG ++++ b/CHANGELOG +@@ -43,6 +43,13 @@ version 2.73 + Add --log-queries=extra option, which makes logs easier + to search automatically. + ++ Add --min-cache-ttl option. I've resisted this for a long ++ time, on the grounds that disbelieving TTLs is never a ++ good idea, but I've been persuaded that there are ++ sometimes reasons to do it. (Step forward, GFW). ++ To avoid misuse, there's a hard limit on the TTL ++ floor of one hour. Thansk to RinSatsuki for the patch. ++ + + version 2.72 + Add ra-advrouter mode, for RFC-3775 mobile IPv6 support. +diff --git a/man/dnsmasq.8 b/man/dnsmasq.8 +index 227d74bd80e7..5cfa355dea4a 100644 +--- a/man/dnsmasq.8 ++++ b/man/dnsmasq.8 +@@ -81,6 +81,12 @@ the upstream DNS servers. + .B --max-cache-ttl=